mirakurun 3.9.0-beta.21 → 3.9.0-beta.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":";;;;;;;;;;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACnFY;;AAEZ,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,UAAU;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,eAAe,mBAAO,CAAC,oDAAW;AAClC,gBAAgB,mBAAO,CAAC,gDAAS;AACjC;AACA;AACA;AACA;;AAEA,cAAc;AACd,kBAAkB;AAClB,yBAAyB;;AAEzB;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;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;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;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;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,QAAQ;AACjC;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,qBAAqB,WAAW,GAAG,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,gBAAgB,WAAW,GAAG,IAAI,KAAK,aAAa;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;;AAEA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,KAAK,mDAAmD,cAAc;AACzF,GAAG;AACH;AACA;AACA,+BAA+B,IAAI;AACnC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAM,aAAa,SAAS;AACtD;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB,cAAc,oBAAoB,EAAE,IAAI;AACxC;AACA,YAAY,gBAAgB,EAAE,IAAI;AAClC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG,SAAS,GAAG,KAAK,qBAAqB,EAAE,EAAE;AACpE,QAAQ;AACR,yBAAyB,GAAG,KAAK,yBAAyB,EAAE,EAAE;AAC9D,mBAAmB,yBAAyB,EAAE,EAAE;AAChD;AACA,MAAM;AACN,oBAAoB,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,cAAc,SAAS,OAAO;AACxE;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAC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AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE,gBAAgB,qBAAM;AACxB,OAAO,qBAAM,cAAc,qBAAM;AACjC,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;;;;;;;;;;;AChBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;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;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;AC1Ca;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,0DAAU;AACnC,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA,iCAAiC,MAAM;AACvC;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;ACxIa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB;AACtB,kBAAkB,mBAAO,CAAC,8DAAe;AACzC,gBAAgB,mBAAO,CAAC,8CAAQ;AAChC,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C,iBAAiB,mBAAO,CAAC,0DAAU;AACnC,yBAAyB,mBAAO,CAAC,0EAAkB;AACnD,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA,aAAa;AACb,8CAA8C,MAAM;AACpD;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,iBAAiB,IAAI,YAAY;AACjC,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;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,oEAAoE,YAAY;AAChF;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;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;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,wCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;ACrRa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,oBAAoB,GAAG,yBAAyB,GAAG,kBAAkB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;;;;;;;;;;AC/Ca;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,cAAc;AAC/B,eAAe,mBAAO,CAAC,0DAAU;AACjC,0CAAyC,EAAE,qCAAqC,4BAA4B,EAAC;AAC7G,eAAe,mBAAO,CAAC,0DAAU;AACjC,0CAAyC,EAAE,qCAAqC,4BAA4B,EAAC;AAC7G;;;;;;;;;;;ACPa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C,aAAa,mBAAO,CAAC,wCAAI;AACzB,eAAe,mBAAO,CAAC,2DAAM;AAC7B,yBAAyB,mBAAO,CAAC,0EAAkB;AACnD,kBAAkB,mBAAO,CAAC,4DAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;;;;;;;;;;;;;;;;;AC1R+F;AAC/F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,uFAAO;;;;AAIxB,iEAAe,8FAAc,MAAM;;;;;;;;;;;;;;;;;;ACZ4D;AAC/F,YAA4F;;AAE5F;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAA0F;;AAE1F;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,mFAAO;;;;AAIxB,iEAAe,0FAAc,MAAM;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AA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,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,oGACK,eAAe,KAAK,IAAI,IAAI,CACzB,iDAAC,uDAAU,IACP,cAAc,EAAE,mEAAsB,EACtC,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,cAAM,yBAAkB,CAAC,KAAK,CAAC,EAAzB,CAAyB,EAC1C,sBAAsB,EAAC,OAAO,EAC9B,OAAO,EACH;YACI,iDAAC,6DAAgB,IACb,IAAI,EAAC,oEAAoE,EACzE,MAAM,EAAC,QAAQ,oBAGA,CACjB;;QAGD,OAAO,CAAC,MAAM;;QACvB,iDAAC,iDAAI,IAAC,IAAI,EAAC,gEAAgE,EAAC,MAAM,EAAC,QAAQ,gBAEpF,CACE,CAChB,CACF,CACN,CAAC;AACN,CAAC,CAAC;AAEF,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvEa;AACA;AACA;AACA;AACE;AACQ;AACE;AACE;;;;;;;;;;;;;;;;ACPtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;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;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,GAAG;;;;;;;;;;;;;;;ACtNlB,iEAAe,sCAAsC;;;;;;;;;;;;;;;;ACAhB;;AAErC;AACA,OAAO,qDAAQ;AACf;AACA;;AAEA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;;;;;AClCpB,iEAAe,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,GAAG,yCAAyC;;;;;;;;;;;;;;;ACApI;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,QAAQ;AAC3B;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;AACA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","sources":["webpack://mirakurun/./node_modules/backo2/index.js","webpack://mirakurun/./node_modules/base64-js/index.js","webpack://mirakurun/./node_modules/buffer/index.js","webpack://mirakurun/./src/ui/components/HeartView.css","webpack://mirakurun/./src/ui/components/Logs.css","webpack://mirakurun/./src/ui/index.css","webpack://mirakurun/./node_modules/css-loader/dist/runtime/api.js","webpack://mirakurun/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://mirakurun/./node_modules/ieee754/index.js","webpack://mirakurun/./node_modules/isomorphic-ws/browser.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/MapLike.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/MessageHandler.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/client.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/common.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/index.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/server.js","webpack://mirakurun/./src/ui/components/HeartView.css?9ac2","webpack://mirakurun/./src/ui/components/Logs.css?1510","webpack://mirakurun/./src/ui/index.css?3ef0","webpack://mirakurun/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://mirakurun/./src/ui/components/ChannelsConfigurator.tsx","webpack://mirakurun/./src/ui/components/ConfigView.tsx","webpack://mirakurun/./src/ui/components/ConnectionGuide.tsx","webpack://mirakurun/./src/ui/components/EventsView.tsx","webpack://mirakurun/./src/ui/components/HeartView.tsx","webpack://mirakurun/./src/ui/components/LogsView.tsx","webpack://mirakurun/./src/ui/components/Restart.tsx","webpack://mirakurun/./src/ui/components/ServerConfigurator.tsx","webpack://mirakurun/./src/ui/components/StatusView.tsx","webpack://mirakurun/./src/ui/components/TunersConfigurator.tsx","webpack://mirakurun/./src/ui/components/TunersManager.tsx","webpack://mirakurun/./src/ui/components/UpdateAlert.tsx","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/index.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/md5.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/nil.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/parse.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/regex.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/rng.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v1.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v3.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v35.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v4.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v5.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/validate.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/version.js","webpack://mirakurun/./node_modules/ws/browser.js","webpack://mirakurun/external \"EventEmitter3\"","webpack://mirakurun/external \"FluentUIReact\"","webpack://mirakurun/external \"React\"","webpack://mirakurun/external \"ReactDOM\"","webpack://mirakurun/webpack/bootstrap","webpack://mirakurun/webpack/runtime/compat get default export","webpack://mirakurun/webpack/runtime/define property getters","webpack://mirakurun/webpack/runtime/global","webpack://mirakurun/webpack/runtime/hasOwnProperty shorthand","webpack://mirakurun/webpack/runtime/make namespace object","webpack://mirakurun/./src/ui/index.tsx"],"sourcesContent":["\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2021 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\n.heart-view > div.consent {\\r\\n margin: 16px 32px;\\r\\n max-width: 450px;\\r\\n}\\r\\n\\r\\n.heart-view > .ms-Stack > span,\\r\\n.heart-view > .ms-Stack img {\\r\\n margin: 8px 16px;\\r\\n}\\r\\n\\r\\n.heart-view img {\\r\\n display: inline-block;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/components/HeartView.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,iBAAiB;IACjB,gBAAgB;AACpB;;AAEA;;IAEI,gBAAgB;AACpB;;AAEA;IACI,qBAAqB;AACzB\",\"sourcesContent\":[\"/*\\r\\n Copyright 2021 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\n.heart-view > div.consent {\\r\\n margin: 16px 32px;\\r\\n max-width: 450px;\\r\\n}\\r\\n\\r\\n.heart-view > .ms-Stack > span,\\r\\n.heart-view > .ms-Stack img {\\r\\n margin: 8px 16px;\\r\\n}\\r\\n\\r\\n.heart-view img {\\r\\n display: inline-block;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\ndiv.logs {\\r\\n overflow: scroll;\\r\\n height: calc(100vh - 300px);\\r\\n box-sizing: border-box;\\r\\n padding: 8px 0;\\r\\n font-family: 'Courier New', Courier, monospace;\\r\\n font-size: 12px;\\r\\n border: 2px solid #605e5c;\\r\\n background: #292827;\\r\\n color: #bbb;\\r\\n}\\r\\n\\r\\ndiv.logs > div {\\r\\n padding: 2px 16px;\\r\\n word-break: break-all;\\r\\n white-space: break-spaces;\\r\\n}\\r\\n\\r\\ndiv.logs > div.latest {\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\ndiv.logs > div:hover {\\r\\n background: #1b1a19;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-debug {\\r\\n color: #a098e5;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-info {\\r\\n color: #eee;\\r\\n}\\r\\n\\r\\ndiv.logs > div.type-create {\\r\\n color: #c3d825;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-warn,\\r\\ndiv.logs > div.type-update {\\r\\n color: #f6ad49;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-error,\\r\\ndiv.logs > div.type-remove {\\r\\n color: #e95464;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-fatal {\\r\\n color: #fff;\\r\\n background: #c9171e;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/components/Logs.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,gBAAgB;IAChB,2BAA2B;IAC3B,sBAAsB;IACtB,cAAc;IACd,8CAA8C;IAC9C,eAAe;IACf,yBAAyB;IACzB,mBAAmB;IACnB,WAAW;AACf;;AAEA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,yBAAyB;AAC7B;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,mBAAmB;AACvB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;IACI,WAAW;IACX,mBAAmB;AACvB\",\"sourcesContent\":[\"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\ndiv.logs {\\r\\n overflow: scroll;\\r\\n height: calc(100vh - 300px);\\r\\n box-sizing: border-box;\\r\\n padding: 8px 0;\\r\\n font-family: 'Courier New', Courier, monospace;\\r\\n font-size: 12px;\\r\\n border: 2px solid #605e5c;\\r\\n background: #292827;\\r\\n color: #bbb;\\r\\n}\\r\\n\\r\\ndiv.logs > div {\\r\\n padding: 2px 16px;\\r\\n word-break: break-all;\\r\\n white-space: break-spaces;\\r\\n}\\r\\n\\r\\ndiv.logs > div.latest {\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\ndiv.logs > div:hover {\\r\\n background: #1b1a19;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-debug {\\r\\n color: #a098e5;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-info {\\r\\n color: #eee;\\r\\n}\\r\\n\\r\\ndiv.logs > div.type-create {\\r\\n color: #c3d825;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-warn,\\r\\ndiv.logs > div.type-update {\\r\\n color: #f6ad49;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-error,\\r\\ndiv.logs > div.type-remove {\\r\\n color: #e95464;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-fatal {\\r\\n color: #fff;\\r\\n background: #c9171e;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\nbody {\\r\\n background: #25272e;\\r\\n}\\r\\n\\r\\n.ms-Fabric {\\r\\n color: #ebebeb;\\r\\n}\\r\\n\\r\\n.ms-layer {\\r\\n display: none;\\r\\n}\\r\\n\\r\\ninput::placeholder {\\r\\n color: #686b77 !important;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/index.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,mBAAmB;AACvB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,yBAAyB;AAC7B\",\"sourcesContent\":[\"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\nbody {\\r\\n background: #25272e;\\r\\n}\\r\\n\\r\\n.ms-Fabric {\\r\\n color: #ebebeb;\\r\\n}\\r\\n\\r\\n.ms-layer {\\r\\n display: none;\\r\\n}\\r\\n\\r\\ninput::placeholder {\\r\\n color: #686b77 !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass MapLike {\n constructor() {\n this._map = {};\n }\n get size() {\n return this.keys().length;\n }\n clear() {\n for (const key in this._map) {\n delete this._map[key];\n }\n }\n delete(key) {\n if (this.has(key)) {\n return delete this._map[key];\n }\n return false;\n }\n get(key) {\n return this._map[key];\n }\n has(key) {\n return this._map[key] !== undefined;\n }\n keys() {\n return Object.keys(this._map);\n }\n set(key, value) {\n this._map[key] = value;\n return this;\n }\n values() {\n const values = [];\n for (const key in this._map) {\n values.push(this._map[key]);\n }\n return values;\n }\n}\nexports.default = MapLike;\n//# sourceMappingURL=MapLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common_1 = require(\"./common\");\nconst EventEmitter = require(\"eventemitter3\");\nclass MessageHandler extends EventEmitter {\n constructor(options) {\n super();\n this.options = options;\n this.methods = new Map();\n }\n async handleMessage(socket, data) {\n const calls = [];\n const responses = [];\n let isBinary = false;\n let isArray = false;\n if (data instanceof ArrayBuffer) {\n isBinary = true;\n data = Buffer.from(data).toString();\n }\n else if (data instanceof Buffer) {\n isBinary = true;\n data = data.toString();\n }\n else if (Array.isArray(data)) {\n isBinary = true;\n data = \"[\" + data.map(buf => buf.toString()).join(\",\") + \"]\";\n }\n try {\n const obj = JSON.parse(data);\n if (Array.isArray(obj)) {\n isArray = true;\n if (obj.length === 0) {\n const res = {\n jsonrpc: \"2.0\",\n error: common_1.createError(-32600 /* InvalidRequest */, null, \"Empty Array\"),\n id: null\n };\n socket.send(JSON.stringify(res), isBinary);\n return;\n }\n calls.push(...obj);\n }\n else {\n calls.push(obj);\n }\n }\n catch (e) {\n const res = {\n jsonrpc: \"2.0\",\n error: common_1.createError(-32700 /* ParseError */, null, \"Invalid JSON\"),\n id: null\n };\n socket.send(JSON.stringify(res), isBinary);\n return;\n }\n for (const call of calls) {\n const res = await this._processCall(socket, call);\n if (res) {\n responses.push(res);\n }\n }\n if (responses.length === 0) {\n return;\n }\n socket.send(JSON.stringify(isArray ? responses : responses[0]), isBinary);\n }\n async _processCall(socket, call) {\n const reqId = call.id;\n const res = {\n jsonrpc: \"2.0\",\n id: reqId === undefined ? null : reqId\n };\n if (typeof call !== \"object\") {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n if (call.jsonrpc !== \"2.0\" && (this.options.jsonrpcVersionCheck === 0 /* STRICT */ ||\n (this.options.jsonrpcVersionCheck === 1 /* LOOSE */ && call.jsonrpc !== undefined))) {\n res.error = common_1.createError(-32600 /* InvalidRequest */, null, \"Invalid JSON-RPC Version\");\n return res;\n }\n if (common_1.isResponse(call)) {\n this.emit(\"response\", socket, call);\n if (call.id !== null) {\n this.emit(\"method_response\", socket, call);\n return;\n }\n if (!call.error) {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n this.emit(\"error_response\", socket, call);\n if (call.error.code === -32700 /* ParseError */ || call.error.code === -32600 /* InvalidRequest */) {\n return;\n }\n this.emit(\"notification_error\", socket, call.error);\n return;\n }\n if (!call.method) {\n res.error = common_1.createError(-32601 /* MethodNotFound */, null, \"Method not specified\");\n return res;\n }\n if (typeof call.method !== \"string\") {\n res.error = common_1.createError(-32600 /* InvalidRequest */, null, \"Invalid type of method name\");\n return res;\n }\n if (\"params\" in call && (typeof call.params !== \"object\" || call.params === null)) {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n if (this.methods.has(call.method) === false) {\n res.error = common_1.createError(-32601 /* MethodNotFound */);\n return res;\n }\n try {\n res.result = await this.methods.get(call.method)(socket, call.params) || null;\n if (reqId === undefined) {\n return;\n }\n return res;\n }\n catch (e) {\n if (reqId === undefined) {\n return;\n }\n if (e instanceof Error) {\n res.error = common_1.createError(-32000 /* ServerError */, e.name, e.message);\n }\n else {\n res.error = e;\n }\n return res;\n }\n }\n}\nexports.default = MessageHandler;\n//# sourceMappingURL=MessageHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigDefaults = void 0;\nconst WebSocket = require(\"isomorphic-ws\");\nconst Backoff = require(\"backo2\");\nconst EventEmitter = require(\"eventemitter3\");\nconst common_1 = require(\"./common\");\nconst MessageHandler_1 = require(\"./MessageHandler\");\nexports.ConfigDefaults = Object.freeze({\n reconnection: true,\n reconnectionAttempts: Infinity,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 5000,\n reconnectionJitter: 0.5,\n methodCallTimeout: 20000,\n autoConnect: true,\n bufferSendingMessages: true,\n query: {},\n protocols: \"\"\n});\n/**\n * JSON-RPC 2.0 Client\n */\nclass Client extends EventEmitter {\n /**\n * Create an instance\n * @param uri The URI to connect.\n * @param options Options\n */\n constructor(uri, options = {}) {\n super();\n this.uri = uri;\n this.sendingMessageBuffer = [];\n this._reconnecting = false;\n this._responseHandlers = new Map();\n this._skipReconnection = false;\n this._currentRequestId = 0;\n this.config = {\n ...exports.ConfigDefaults,\n ...options\n };\n this._backoff = new Backoff({\n min: this.config.reconnectionDelay,\n max: this.config.reconnectionDelayMax,\n jitter: this.config.reconnectionJitter\n });\n this._messageHandler = new MessageHandler_1.default(this.config);\n this._messageHandler.on(\"method_response\", (socket, response) => this._handleMethodResponse(response));\n this._messageHandler.on(\"error_response\", (socket, response) => this.emit(\"error_response\", response));\n this._messageHandler.on(\"notification_error\", (socket, error) => this.emit(\"notification_error\", error));\n if (this.config.autoConnect) {\n this.connect().catch(() => void 0);\n }\n }\n get methods() { return this._messageHandler.methods; }\n /**\n * Connect to the server\n */\n async connect() {\n if (this._ws) {\n return;\n }\n this.emit(\"connecting\");\n const ws = this._ws = new WebSocket(this.uri, this.config.protocols, this.config);\n if (ws.addEventListener) {\n ws.addEventListener(\"error\", error => this.emit(\"error\", error));\n ws.addEventListener(\"close\", ({ code, reason }) => {\n this.emit(\"close\");\n this.emit(\"disconnect\", code, reason);\n this._ws = null;\n });\n ws.addEventListener(\"message\", ({ data }) => this._messageHandler.handleMessage(this, data).catch(e => this.emit(\"error\", e)));\n }\n else {\n ws.on(\"error\", error => this.emit(\"error\", error));\n ws.on(\"close\", (code, reason) => {\n this.emit(\"close\");\n this.emit(\"disconnect\", code, reason);\n this._ws = null;\n });\n ws.on(\"message\", data => this._messageHandler.handleMessage(this, data).catch(e => this.emit(\"error\", e)));\n }\n if (this.config.reconnection) {\n this._skipReconnection = false;\n if (ws.addEventListener) {\n ws.addEventListener(\"close\", () => this.reconnect());\n }\n else {\n ws.on(\"close\", () => this.reconnect());\n }\n }\n await new Promise((resolve, reject) => {\n if (ws.addEventListener) {\n ws.addEventListener(\"open\", () => {\n ws.removeEventListener(\"error\", reject);\n resolve();\n }, { once: true });\n ws.addEventListener(\"error\", reject, { once: true });\n }\n else {\n ws.once(\"open\", () => {\n ws.off(\"error\", reject);\n resolve();\n });\n ws.once(\"error\", reject);\n }\n });\n await this._sendBufferedMessages();\n this.emit(\"connected\");\n }\n /**\n * Disconnect the connection if it exists\n */\n async disconnect() {\n this._skipReconnection = true;\n this._reconnecting = false;\n this._backoff.reset();\n // clear method call timeout.\n for (const [timer] of this._responseHandlers) {\n clearTimeout(timer);\n }\n this._responseHandlers.clear();\n // clear reconnection timer.\n if (this._reconnectionSleepTimer) {\n clearTimeout(this._reconnectionSleepTimer);\n this._reconnectionSleepTimer = null;\n }\n const ws = this._ws;\n if (!ws) {\n return Promise.resolve();\n }\n let promise;\n if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) {\n promise = new Promise(resolve => {\n if (ws.addEventListener) {\n ws.addEventListener(\"close\", () => resolve(), { once: true });\n }\n else {\n ws.once(\"close\", () => resolve());\n }\n });\n ws.close();\n }\n else {\n promise = Promise.resolve();\n }\n this._ws = null;\n await promise;\n if (ws.removeAllListeners) {\n // for node\n ws.removeAllListeners();\n }\n else {\n // for browser\n // not necessary at this time.\n }\n }\n send(data, binary = false) {\n if (binary && typeof data === \"string\") {\n data = Buffer.from(data).buffer;\n }\n if (!this.isConnected()) {\n this._bufferSendingMessage(data);\n return;\n }\n this._ws.send(data, e => e ? this._bufferSendingMessage(data) : null);\n }\n clearSendingMessageBuffer() {\n this.sendingMessageBuffer.length = 0;\n }\n notify(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method,\n params\n };\n this.send(JSON.stringify(data));\n }\n call(method, params = {}) {\n const id = this._currentRequestId++;\n const data = {\n jsonrpc: \"2.0\",\n method,\n params,\n id\n };\n this.send(JSON.stringify(data));\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this._responseHandlers.delete(id);\n reject(new Error(\"JSON-RPC: method call timeout\"));\n }, this.config.methodCallTimeout);\n this._responseHandlers.set(id, [timeout, resolve, reject]);\n });\n }\n isConnected() {\n return this._ws !== null && this._ws.readyState === WebSocket.OPEN;\n }\n async reconnect() {\n if (this._reconnecting || this._skipReconnection) {\n return;\n }\n const backoff = this._backoff;\n if (backoff.attempts > this.config.reconnectionAttempts) {\n this.emit(\"reconnect_failed\");\n this.disconnect();\n return;\n }\n const delay = backoff.duration();\n this._reconnecting = true;\n await new Promise(resolve => this._reconnectionSleepTimer = setTimeout(resolve, delay));\n this._reconnectionSleepTimer = null;\n if (this._skipReconnection) {\n return;\n }\n this.emit(\"reconnecting\", backoff.attempts);\n if (this._skipReconnection) {\n return;\n }\n try {\n await this.connect();\n }\n catch (err) {\n this._reconnecting = false;\n this.reconnect();\n this.emit(\"reconnect_error\", err);\n return;\n }\n const attempts = backoff.attempts;\n backoff.reset();\n this._reconnecting = false;\n this.emit(\"reconnected\", attempts);\n }\n _handleMethodResponse(response) {\n if (typeof response.id === \"string\") {\n this.emit(\"unkown_response\", response);\n return;\n }\n const handler = this._responseHandlers.get(response.id);\n if (!handler) {\n this.emit(\"unkown_response\", response);\n return;\n }\n this._responseHandlers.delete(response.id);\n const [timer, resolve, reject] = handler;\n clearTimeout(timer);\n if (common_1.isSuccessResponse(response)) {\n resolve(response.result);\n }\n else {\n reject(response.error);\n }\n }\n _bufferSendingMessage(data) {\n if (this.config.bufferSendingMessages) {\n this.sendingMessageBuffer.push(data);\n }\n else {\n throw new Error(\"Message is rejected: The socket is close without message buffering.\");\n }\n }\n async _sendBufferedMessages() {\n const buffer = this.sendingMessageBuffer;\n const ws = this._ws;\n for (let data = buffer.shift(); data; data = buffer.shift()) {\n try {\n await new Promise((resolve, reject) => ws.send(data, e => e ? reject(e) : resolve()));\n }\n catch (e) {\n buffer.unshift(data);\n this.emit(\"buffer_sending_error\", e);\n break;\n }\n }\n }\n}\nexports.default = Client;\n//# sourceMappingURL=client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createError = exports.errorCodeMap = exports.isSuccessResponse = exports.isResponse = void 0;\n/**\n * Check type of call is an Reponse or not\n * @param call an Call object which will be checked.\n */\nfunction isResponse(call) {\n return \"id\" in call && (\"result\" in call || \"error\" in call);\n}\nexports.isResponse = isResponse;\n/**\n * Check type of response is SuccessResponse or not\n *\n * @param response an Response object which will be checked.\n */\nfunction isSuccessResponse(response) {\n return \"result\" in response && response.id !== null;\n}\nexports.isSuccessResponse = isSuccessResponse;\n/**\n * JSON-RPC 2.0 Error Codes\n */\nexports.errorCodeMap = new Map([\n [-32700, \"Parse error\"],\n [-32600, \"Invalid Request\"],\n [-32601, \"Method not found\"],\n [-32602, \"Invalid params\"],\n [-32603, \"Internal error\"],\n [-32000, \"Server error\"]\n]);\n/**\n * Creates a JSON-RPC 2.0 compliant Error Object\n * @param code A Number that indicates the error type that occurred. (Integer)\n * @param data A Primitive or Structured value that contains additional information about the error.\n */\nfunction createError(code, message, data) {\n const error = {\n code: code,\n message: message || exports.errorCodeMap.get(code) || \"Server error\"\n };\n if (data !== undefined) {\n error.data = data;\n }\n return error;\n}\nexports.createError = createError;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = exports.Server = void 0;\nvar server_1 = require(\"./server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_1.default; } });\nvar client_1 = require(\"./client\");\nObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst EventEmitter = require(\"eventemitter3\");\nconst ws_1 = require(\"ws\");\nconst uuid_1 = require(\"uuid\");\nconst MessageHandler_1 = require(\"./MessageHandler\");\nconst MapLike_1 = require(\"./MapLike\");\n/**\n * JSON-RPC 2.0 WebSocket Server\n */\nclass Server extends EventEmitter {\n /**\n * Create a instance.\n * @param options\n * @param callback callback A listener for the `listening` event (ws).\n */\n constructor(options, callback) {\n super();\n this.sockets = new Map();\n this._lastPingAt = 0;\n this.options = Object.assign({\n pingTimeout: 5000,\n pingInterval: 25000,\n open: true,\n jsonrpcVersionCheck: 0 /* STRICT */,\n uws: false\n }, options);\n this._messageHandler = new MessageHandler_1.default(this.options);\n this._messageHandler.on(\"error_response\", (socket, response) => {\n this.emit(\"error_response\", socket, response);\n socket.emit(\"error_response\", response);\n });\n this._messageHandler.on(\"notification_error\", (socket, error) => {\n this.emit(\"notification_error\", socket, error);\n socket.emit(\"notification_error\", error);\n });\n if (this.options.open) {\n this.open(callback);\n }\n }\n get methods() { return this._messageHandler.methods; }\n /**\n * Create\n * @param callback callback A listener for the `listening` event (ws).\n */\n open(callback) {\n const self = this;\n if (this.wss) {\n throw new Error(\"`ws` has already been created\");\n }\n if (this.options.wsEngine) {\n this.wss = new this.options.wsEngine(this.options.wss, callback);\n }\n else {\n this.wss = new ws_1.Server(this.options.wss, callback);\n }\n this.wss.once(\"listening\", function _onListeningWSS() {\n self.emit(\"listening\");\n });\n this.wss.on(\"connection\", function _onConnectionWSS(ws, req) {\n let socket = new Socket(ws);\n self.sockets.set(socket.id, socket);\n ws.once(\"close\", function _onCloseWS() {\n self.sockets.delete(socket.id);\n socket.emit(\"close\");\n socket.removeAllListeners();\n socket.ws = null;\n socket.rooms.clear();\n socket.data.clear();\n socket = null;\n ws.removeAllListeners();\n ws = null;\n });\n ws.on(\"message\", function _onMessageWS(data) {\n self._messageHandler.handleMessage(socket, data)\n .catch(function _onErrorHandleMessage(e) {\n self.emit(\"error\", e);\n });\n });\n ws.on(\"pong\", function _onPongWS() {\n socket._pongAt = Date.now();\n });\n self.emit(\"connection\", socket, req);\n });\n this.wss.on(\"error\", function _onErrorWSS(e) {\n self.emit(\"error\", e);\n });\n this._pingTimer = setInterval(this._ping.bind(this), this.options.pingInterval);\n return this;\n }\n /**\n * Closes the server and terminates all sockets.\n */\n async close() {\n clearInterval(this._pingTimer);\n for (const socket of this.sockets.values()) {\n socket.terminate();\n }\n await new Promise((resolve, reject) => {\n this.wss.close(err => {\n if (err) {\n reject(err);\n }\n else {\n resolve();\n }\n });\n });\n this.wss.removeAllListeners();\n delete this.wss;\n this.sockets.clear();\n }\n /**\n * Broadcasts a notification.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n broadcast(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n const json = JSON.stringify(data);\n for (const socket of this.sockets.values()) {\n socket.send(json);\n }\n }\n /**\n * Broadcasts a notification to the room.\n * @param room The name of the room.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n notifyTo(room, method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n const json = JSON.stringify(data);\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n socket.send(json);\n }\n }\n }\n /**\n * Broadcasts a (raw) message to the room.\n * @param room The name of the room.\n * @param data (raw) message.\n */\n sendTo(room, data) {\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n socket.send(data);\n }\n }\n }\n /**\n * Get all sockets in the room.\n * @param room The name of the room.\n */\n in(room) {\n const sockets = new Map();\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n sockets.set(socket.id, socket);\n }\n }\n return sockets;\n }\n /**\n * Server is open or not\n */\n isOpen() {\n return this.wss !== undefined;\n }\n /**\n * Ping to all sockets.\n */\n _ping() {\n const deadline = this._lastPingAt + this.options.pingTimeout;\n for (const socket of this.sockets.values()) {\n if (socket._pongAt === -1 || socket._pongAt > deadline) {\n socket.terminate();\n continue;\n }\n socket._pongAt = -1;\n if (socket.isOpen()) {\n socket.ws.ping();\n }\n }\n this._lastPingAt = Date.now();\n }\n}\nexports.default = Server;\nclass Socket extends EventEmitter {\n constructor(ws) {\n super();\n this.ws = ws;\n this.id = uuid_1.v4();\n this.rooms = new Set();\n /** custom data store */\n this.data = new MapLike_1.default();\n /** (internal using for heartbeat) */\n this._pongAt = 0;\n }\n /**\n * Sends a notification to the socket.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n notify(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n this.send(JSON.stringify(data));\n }\n /**\n * Sends a (raw) message to the socket.\n * @param data (raw) message.\n * @param binary binary flag.\n */\n send(data, binary = false) {\n if (this.isOpen()) {\n this.ws.send(data, { binary });\n }\n }\n /**\n * Joins a room. You can join multiple rooms.\n * @param room The name of the room that we want to join.\n */\n joinTo(room) {\n if (this.rooms.has(room) === false) {\n this.rooms.add(room);\n return true;\n }\n return false;\n }\n /**\n * Leaves a room.\n * @param room The name of the room to leave.\n */\n leaveFrom(room) {\n if (this.rooms.has(room) === true) {\n this.rooms.delete(room);\n return true;\n }\n return false;\n }\n /**\n * Leaves all the rooms that we've joined.\n */\n leaveFromAll() {\n this.rooms.clear();\n }\n /**\n * Initiate a closing handshake.\n * @param code A numeric value indicating the status code explaining why the connection is being closed.\n * @param reason A human-readable string explaining why the connection is closing.\n */\n close(code, reason) {\n this.ws.close(code, reason);\n }\n /**\n * Forcibly close the connection.\n */\n terminate() {\n this.ws.terminate();\n }\n /**\n * Get the connection is open or not\n */\n isOpen() {\n return this.ws !== undefined && this.ws.readyState === ws_1.OPEN;\n }\n}\nexports.Socket = Socket;\n//# sourceMappingURL=server.js.map","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./HeartView.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./Logs.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!./index.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Spinner,\r\n SpinnerSize,\r\n DetailsList,\r\n Selection,\r\n SelectionMode,\r\n IColumn,\r\n Dropdown,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n TextField,\r\n IconButton,\r\n ActionButton\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigChannels, ChannelType } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/channels\";\r\n\r\ninterface Item {\r\n key: string;\r\n enable: JSX.Element;\r\n name: JSX.Element;\r\n type: JSX.Element;\r\n channel: JSX.Element;\r\n options: JSX.Element;\r\n controls: JSX.Element;\r\n}\r\n\r\nconst columns: IColumn[] = [\r\n {\r\n key: \"col-enable\",\r\n name: \"Enable\",\r\n fieldName: \"enable\",\r\n minWidth: 44,\r\n maxWidth: 44\r\n },\r\n {\r\n key: \"col-name\",\r\n name: \"Name\",\r\n fieldName: \"name\",\r\n minWidth: 100,\r\n maxWidth: 100\r\n },\r\n {\r\n key: \"col-type\",\r\n name: \"Type\",\r\n fieldName: \"type\",\r\n minWidth: 65,\r\n maxWidth: 65\r\n },\r\n {\r\n key: \"col-channel\",\r\n name: \"Channel\",\r\n fieldName: \"channel\",\r\n minWidth: 70,\r\n maxWidth: 70\r\n },\r\n {\r\n key: \"col-options\",\r\n name: \"Options\",\r\n fieldName: \"options\",\r\n minWidth: 200,\r\n // maxWidth: 400\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 120,\r\n maxWidth: 120\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst typesIndex = [\"GR\", \"BS\", \"CS\", \"SKY\"];\r\nfunction sortTypes(types: ChannelType[]): ChannelType[] {\r\n return types.sort((a, b) => typesIndex.indexOf(a) - typesIndex.indexOf(b));\r\n}\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigChannels>(null);\r\n const [editing, setEditing] = useState<ConfigChannels>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n const listContainerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"ChannelsConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing(JSON.parse(JSON.stringify(res)));\r\n setCurrent(JSON.parse(JSON.stringify(res)));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const items = [];\r\n editing?.forEach((ch, i) => {\r\n const item: Item = {\r\n key: `item${i}`,\r\n enable: (\r\n <Toggle\r\n checked={!ch.isDisabled}\r\n onChange={(ev, checked) => {\r\n ch.isDisabled = !checked;\r\n setEditing([...editing]);\r\n }}\r\n style={{ marginTop: 6 }}\r\n />\r\n ),\r\n name: (\r\n <TextField\r\n value={ch.name}\r\n onChange={(ev, newValue) => {\r\n ch.name = newValue;\r\n setEditing([...editing]);\r\n }}\r\n onBlur={() => {\r\n if (ch.name === \"\") {\r\n ch.name = `ch${i}`;\r\n setEditing([...editing]);\r\n }\r\n }}\r\n />\r\n ),\r\n type: (\r\n <Dropdown\r\n options={[\r\n { key: \"GR\", text: \"GR\" },\r\n { key: \"BS\", text: \"BS\" },\r\n { key: \"CS\", text: \"CS\" },\r\n { key: \"SKY\", text: \"SKY\" }\r\n ]}\r\n selectedKey={ch.type}\r\n onChange={(ev, option) => {\r\n ch.type = option.key as any;\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n channel: (\r\n <TextField\r\n value={ch.channel}\r\n onChange={(ev, newValue) => {\r\n ch.channel = newValue;\r\n setEditing([...editing]);\r\n }}\r\n onBlur={() => {\r\n if (ch.channel === \"\") {\r\n ch.channel = \"0\";\r\n setEditing([...editing]);\r\n }\r\n }}\r\n />\r\n ),\r\n options: (\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }}>\r\n <TextField\r\n style={{ width: 55 }}\r\n label=\"Service ID:\"\r\n value={`${ch.serviceId || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.serviceId;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const sid = parseInt(newValue, 10);\r\n if (sid <= 65535 && sid > 0) {\r\n ch.serviceId = sid;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 80 }}\r\n label=\"Satellite:\"\r\n value={ch.satellite || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.satellite;\r\n } else {\r\n ch.satellite = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 40 }}\r\n label=\"Space:\"\r\n placeholder=\"0\"\r\n value={`${ch.space || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.space;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const space = parseInt(newValue, 10);\r\n if (space <= 65535 && space >= 0) {\r\n ch.space = space;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 60 }}\r\n label=\"Freq:\"\r\n value={`${ch.freq || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.freq;\r\n } else if (/^[0-9\\.]+$/.test(newValue)) {\r\n const freq = parseFloat(newValue);\r\n ch.freq = freq;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <Dropdown\r\n label=\"Polarity:\"\r\n options={[\r\n { key: \"-\", text: \"-\" },\r\n { key: \"H\", text: \"H\" },\r\n { key: \"V\", text: \"V\" }\r\n ]}\r\n selectedKey={ch.polarity || \"-\"}\r\n onChange={(ev, option) => {\r\n if (option.key === \"-\") {\r\n delete ch.polarity;\r\n } else {\r\n ch.polarity = option.key as any;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 40 }}\r\n label=\"TsmfRelTs:\"\r\n value={`${ch.tsmfRelTs || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.tsmfRelTs;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const tsmfRelTs = parseInt(newValue, 10);\r\n ch.tsmfRelTs = tsmfRelTs;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </Stack>\r\n </Stack>\r\n ),\r\n controls: (\r\n <Stack horizontal horizontalAlign=\"end\">\r\n <IconButton\r\n disabled={i === 0}\r\n style={{ opacity: i === 0 ? 0 : 1 }}\r\n title=\"Up\"\r\n iconProps={{ iconName: \"Up\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i - 1, 0, ch);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n disabled={i === editing.length - 1}\r\n style={{ opacity: i === editing.length - 1 ? 0 : 1 }}\r\n title=\"Down\"\r\n iconProps={{ iconName: \"Down\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i + 1, 0, ch);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"remove\",\r\n text: \"Remove Channel\",\r\n iconProps: { iconName: \"Delete\" },\r\n onClick: () => {\r\n editing.splice(i, 1);\r\n setEditing([...editing]);\r\n }\r\n }] }}\r\n />\r\n </Stack>\r\n )\r\n };\r\n //\r\n items.push(item);\r\n });\r\n\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n if (listContainerRef.current) {\r\n listContainerRef.current.style.maxHeight = \"calc(100vh - 410px)\";\r\n }\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack.Item>\r\n <ActionButton\r\n text=\"Add Channel\"\r\n iconProps={{ iconName: \"Add\" }}\r\n onClick={() => {\r\n const i = editing.length;\r\n editing.push({\r\n name: `ch${i}`,\r\n type: \"GR\",\r\n channel: \"0\",\r\n isDisabled: true\r\n });\r\n setEditing([...editing]);\r\n setTimeout(() => {\r\n listContainerRef.current.scrollTop = listContainerRef.current.scrollHeight;\r\n }, 0);\r\n }}\r\n />\r\n </Stack.Item>\r\n\r\n <div ref={listContainerRef} style={{ overflowY: \"scroll\" }}>\r\n <DetailsList\r\n setKey=\"items\"\r\n items={items}\r\n columns={columns}\r\n selection={dummySelection}\r\n selectionMode={SelectionMode.none}\r\n />\r\n </div>\r\n\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing(JSON.parse(JSON.stringify(current)))} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n console.log(\"ChannelsConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Stack,\r\n Nav\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport ServerConfigurator from \"./ServerConfigurator\";\r\nimport TunersConfigurator from \"./TunersConfigurator\";\r\nimport ChannelsConfigurator from \"./ChannelsConfigurator\";\r\n\r\nconst ConfigView: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [key, setKey] = useState<string>(\"server\");\r\n\r\n return (\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ margin: \"8px 0\" }}>\r\n <Nav\r\n groups={[\r\n {\r\n links: [\r\n {\r\n key: \"server\",\r\n name: \"Server\",\r\n url: null,\r\n onClick: () => setKey(\"server\")\r\n },\r\n {\r\n key: \"tuners\",\r\n name: \"Tuners\",\r\n url: null,\r\n onClick: () => setKey(\"tuners\")\r\n },\r\n {\r\n key: \"channels\",\r\n name: \"Channels\",\r\n url: null,\r\n onClick: () => setKey(\"channels\")\r\n }\r\n ]\r\n }\r\n ]}\r\n selectedKey={key}\r\n styles={{ root: { width: 150 } }}\r\n />\r\n <Stack.Item grow>\r\n <div style={{ margin: \"8px 0 8px 24px\" }}>\r\n {key === \"server\" && <ServerConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n {key === \"tuners\" && <TunersConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n {key === \"channels\" && <ChannelsConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n </div>\r\n </Stack.Item>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default ConfigView;\r\n","/*\r\n Copyright 2021 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState } from \"react\";\r\nimport {\r\n getTheme,\r\n FontWeights,\r\n mergeStyleSets,\r\n IButtonStyles,\r\n IconButton,\r\n IStackProps,\r\n ActionButton,\r\n Modal,\r\n Stack,\r\n Separator,\r\n Label,\r\n TextField,\r\n TooltipHost,\r\n Icon\r\n} from \"@fluentui/react\";\r\n\r\nfunction selectHandler(e: React.MouseEvent<HTMLInputElement>) {\r\n e.currentTarget.select();\r\n}\r\n\r\nconst ConnectionGuide: React.FC = () => {\r\n\r\n const [isModalOpen, setModalOpen] = useState<boolean>(false);\r\n\r\n const theme = getTheme();\r\n const contentStyles = mergeStyleSets({\r\n container: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n alignItems: \"stretch\",\r\n },\r\n header: [\r\n theme.fonts.xLarge,\r\n {\r\n flex: \"1 1 auto\",\r\n borderTop: `4px solid ${theme.palette.themePrimary}`,\r\n color: theme.palette.themePrimary,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontWeight: FontWeights.semibold,\r\n padding: \"12px 12px 14px 24px\",\r\n },\r\n ],\r\n body: {\r\n flex: \"4 4 auto\",\r\n padding: \"0 24px 24px 24px\",\r\n overflowY: \"hidden\",\r\n width: \"75vw\",\r\n minWidth: \"400px\",\r\n maxWidth: \"500px\",\r\n selectors: {\r\n p: { margin: \"14px 0\" },\r\n \"p:first-child\": { marginTop: 0 },\r\n \"p:last-child\": { marginBottom: 0 },\r\n },\r\n },\r\n });\r\n const stackProps: Partial<IStackProps> = {\r\n tokens: { childrenGap: 8 },\r\n styles: { root: { marginBottom: 20 } },\r\n };\r\n const iconButtonStyles: Partial<IButtonStyles> = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: \"auto\",\r\n marginTop: \"4px\",\r\n marginRight: \"2px\",\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n <Modal\r\n titleAriaId=\"connection-guide-title\"\r\n isOpen={isModalOpen}\r\n onDismiss={() => setModalOpen(false)}\r\n isBlocking={false}\r\n containerClassName={contentStyles.container}\r\n >\r\n <div className={contentStyles.header}>\r\n <span id=\"connection-guide-title\">Connection Guide</span>\r\n <IconButton\r\n styles={iconButtonStyles}\r\n iconProps={{ iconName: \"Cancel\" }}\r\n ariaLabel=\"Close\"\r\n onClick={() => setModalOpen(false)}\r\n />\r\n </div>\r\n <div className={contentStyles.body}>\r\n <Stack {...stackProps}>\r\n <TextField readOnly\r\n label=\"Mirakurun Path\"\r\n value={`${location.protocol}//${location.host}/`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"Open API 2.0 / Swagger 2.0 Compliant Definition\"\r\n value={`${location.protocol}//${location.host}/api/docs`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <Separator>IPTV</Separator>\r\n <TextField readOnly\r\n label=\"M3U Playlist\"\r\n value={`${location.protocol}//${location.host}/api/iptv/playlist`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"XMLTV\"\r\n value={`${location.protocol}//${location.host}/api/iptv/xmltv`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"HDHomeRun Device Address\"\r\n value={`${location.protocol}//${location.host}/api/iptv`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n onRenderLabel={(props) => (\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>{props.label}</Label>\r\n <TooltipHost content=\"Tested on Plex Media Server\">\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n )}\r\n />\r\n <Separator>Misc</Separator>\r\n <TextField readOnly\r\n label=\"BonDriver_Mirakurun.ini\"\r\n multiline rows={3}\r\n value={`[GLOBAL]\\nSERVER_HOST=\"${location.hostname}\"\\nSERVER_PORT=\"${location.port}\"`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n </Stack>\r\n </div>\r\n </Modal>\r\n <ActionButton\r\n iconProps={{ iconName: \"Info\" }}\r\n text=\"Connection Guide\"\r\n onClick={() => setModalOpen(true)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ConnectionGuide;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams } from \"../../../lib/Mirakurun/rpc.d\";\r\nimport { Event } from \"../../../api\";\r\nimport \"./Logs.css\";\r\n\r\nlet _itemId = 0;\r\n\r\nlet eventsCache: JSX.Element[] = [];\r\n\r\nconst EventsView: React.FC<{ uiStateEvents: EventEmitter, rpc: RPCClient }> = ({ uiStateEvents, rpc }) => {\r\n\r\n const [eventList, setEventList] = useState<JSX.Element[]>([]);\r\n const latestRef = useRef<HTMLDivElement>(null);\r\n\r\n const onEvents = (events: Event[], unshift: boolean) => {\r\n const newList: JSX.Element[] = [];\r\n for (const event of events) {\r\n newList.push(\r\n <div key={`events-list-item${_itemId}`} className={`type-${event.type}`}>\r\n {`${event.resource} (${event.type}) ${JSON.stringify(event.data)}`}\r\n </div>\r\n );\r\n ++_itemId;\r\n }\r\n if (unshift === true) {\r\n eventsCache = [...newList, ...eventsCache].slice(-200);\r\n } else {\r\n eventsCache = [...eventsCache, ...newList].slice(-200);\r\n }\r\n setEventList(eventsCache);\r\n };\r\n\r\n useEffect(() => {\r\n\r\n const join = () => {\r\n rpc.call(\"join\", { rooms: [\"events:program\"] } as JoinParams);\r\n };\r\n rpc.on(\"connected\", join);\r\n join();\r\n\r\n (async () => {\r\n const events: Event[] = await (await fetch(\"/api/events\")).json();\r\n onEvents(events, true);\r\n })();\r\n\r\n uiStateEvents.on(\"data:events\", onEvents);\r\n\r\n return () => {\r\n rpc.off(\"connected\", join);\r\n rpc.call(\"leave\", { rooms: [\"events:program\"] } as JoinParams);\r\n uiStateEvents.off(\"data:events\", onEvents);\r\n eventsCache = [];\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n latestRef.current.scrollIntoView();\r\n });\r\n\r\n return (\r\n <div className=\"logs\" style={{ margin: \"8px 0\" }}>\r\n {eventList}\r\n <div className=\"latest\" ref={latestRef}></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EventsView;\r\n","/*\r\n Copyright 2021 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Text,\r\n Link,\r\n PrimaryButton\r\n} from \"@fluentui/react\";\r\nimport \"./HeartView.css\";\r\n\r\nconst HeartView: React.FC = () => {\r\n\r\n const [consented, setConsented] = useState<boolean>(false);\r\n\r\n return (\r\n <Stack tokens={{ childrenGap: \"16 0\" }} style={{ margin: \"16px 0 8px\" }} className=\"heart-view\">\r\n {consented === false && <>\r\n <Separator alignContent=\"start\">Confirmation</Separator>\r\n\r\n <div className=\"consent\">\r\n <b>We sincerely thank you for your continued support.</b><br />\r\n <br />\r\n This page is attempting to retrieve images from your browser\r\n by going directly to\r\n &nbsp;<Link href=\"https://opencollective.com/\" target=\"_blank\">opencollective.com</Link>&nbsp;\r\n in order to display a list of contributors.<br />\r\n <br />\r\n To view this page, click the \"Continue\" button.\r\n </div>\r\n\r\n <div className=\"consent\">\r\n <PrimaryButton\r\n text=\"Continue\"\r\n onClick={() => {\r\n setConsented(true);\r\n }}\r\n />\r\n </div>\r\n </>}\r\n\r\n {consented === true && <>\r\n <Stack>\r\n <Separator alignContent=\"start\">Contributors</Separator>\r\n <Text>\r\n This project exists thanks to all the people who contribute.\r\n </Text>\r\n <Text>\r\n <Link href=\"https://github.com/Chinachu/Mirakurun/graphs/contributors\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/contributors.svg?width=890&button=false\" /></Link>\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Separator alignContent=\"start\">Backers</Separator>\r\n <Text>\r\n Thank you to all our backers! 🙏\r\n [<Link href=\"https://opencollective.com/Mirakurun#backer\" target=\"_blank\">Become a backer</Link>]\r\n </Text>\r\n <Text>\r\n <Link href=\"https://opencollective.com/Mirakurun#backers\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/backers.svg?width=890\" /></Link>\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Separator alignContent=\"start\">Sponsors</Separator>\r\n <Text>\r\n Support this project by becoming a sponsor. Your logo will show up here with a link to your website.\r\n [<Link href=\"https://opencollective.com/Mirakurun#sponsor\" target=\"_blank\">Become a sponsor</Link>]\r\n </Text>\r\n <Text>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/0/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/1/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/2/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/3/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/4/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/5/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/6/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/7/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/8/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/9/avatar.svg\" /></Link>\r\n </Text>\r\n </Stack>\r\n </>}\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default HeartView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams } from \"../../../lib/Mirakurun/rpc.d\";\r\nimport \"./Logs.css\";\r\n\r\nlet _itemId = 0;\r\n\r\nlet logListCache: JSX.Element[] = [];\r\n\r\nconst LogsView: React.FC<{ uiStateEvents: EventEmitter, rpc: RPCClient }> = ({ uiStateEvents, rpc }) => {\r\n\r\n const [logList, setLogList] = useState<JSX.Element[]>([]);\r\n const latestRef = useRef<HTMLDivElement>(null);\r\n\r\n const onLogs = (lines: string[], unshift: boolean) => {\r\n const newList: JSX.Element[] = [];\r\n for (const line of lines) {\r\n const parsed = line.match(/^[0-9.T:+-]+ ([a-z]+): /);\r\n const level = parsed ? parsed[1] : \"other\";\r\n newList.push(\r\n <div key={`logs-list-item${_itemId}`} className={`level-${level}`}>\r\n {line}\r\n </div>\r\n );\r\n ++_itemId;\r\n }\r\n if (unshift === true) {\r\n logListCache = [...newList, ...logListCache].slice(-500);\r\n } else {\r\n logListCache = [...logListCache, ...newList].slice(-500);\r\n }\r\n setLogList(logListCache);\r\n };\r\n\r\n useEffect(() => {\r\n\r\n const join = () => {\r\n rpc.call(\"join\", { rooms: [\"logs\"] } as JoinParams);\r\n };\r\n rpc.on(\"connected\", join);\r\n join();\r\n\r\n (async () => {\r\n const lines: string = await (await fetch(\"/api/log\")).text();\r\n onLogs(lines.trim().split(\"\\n\"), true);\r\n })();\r\n\r\n uiStateEvents.on(\"data:logs\", onLogs);\r\n\r\n return () => {\r\n rpc.off(\"connected\", join);\r\n rpc.call(\"leave\", { rooms: [\"logs\"] } as JoinParams);\r\n uiStateEvents.off(\"data:logs\", onLogs);\r\n logListCache = [];\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n latestRef.current.scrollIntoView();\r\n });\r\n\r\n return (\r\n <div className=\"logs\" style={{ margin: \"8px 0\" }}>\r\n {logList}\r\n <div className=\"latest\" ref={latestRef}></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LogsView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogFooter,\r\n DialogType,\r\n PrimaryButton,\r\n DefaultButton,\r\n ActionButton,\r\n Coachmark,\r\n TeachingBubbleContent,\r\n DirectionalHint\r\n} from \"@fluentui/react\";\r\n\r\nconst Restart: React.FC<{ uiStateEvents: EventEmitter }> = ({ uiStateEvents }) => {\r\n\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [restartRequired, setRestartRequired] = useState<boolean>(false);\r\n const targetButton = useRef<HTMLDivElement>();\r\n\r\n useEffect(() => {\r\n const onRestartRequired = () => {\r\n setRestartRequired(true);\r\n };\r\n uiStateEvents.on(\"notify:restart-required\", onRestartRequired);\r\n return () => {\r\n uiStateEvents.off(\"notify:restart-required\", onRestartRequired);\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n <Dialog\r\n hidden={hideDialog}\r\n onDismiss={() => setHideDialog(true)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Restart Mirakurun\",\r\n subText: \"Do you want to restart Mirakurun?\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Restart\"\r\n onClick={() => {\r\n (async () => {\r\n await fetch(`/api/restart`, { method: \"PUT\" });\r\n })();\r\n setHideDialog(true);\r\n setRestartRequired(false);\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setHideDialog(true)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n {restartRequired && (\r\n <Coachmark\r\n target={targetButton.current}\r\n onDismiss={() => setRestartRequired(false)}\r\n positioningContainerProps={{\r\n directionalHint: DirectionalHint.leftCenter,\r\n doNotLayer: false,\r\n }}\r\n >\r\n <TeachingBubbleContent\r\n hasCloseButton\r\n onDismiss={() => setRestartRequired(false)}\r\n >\r\n Restart is required to apply configuration.\r\n </TeachingBubbleContent>\r\n </Coachmark>\r\n )}\r\n <div ref={targetButton}>\r\n <ActionButton\r\n iconProps={{ iconName: \"Sync\" }}\r\n text=\"Restart\"\r\n onClick={() => setHideDialog(false)}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Restart;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Spinner,\r\n SpinnerSize,\r\n Dropdown,\r\n TooltipHost,\r\n Icon,\r\n Label,\r\n TextField,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigServer } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/server\";\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigServer>(null);\r\n const [editing, setEditing] = useState<ConfigServer>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"ServerConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing({ ...res });\r\n setCurrent({ ...res });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const docker = uiState.status.process.env.DOCKER === \"YES\";\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Dropdown\r\n label=\"LogLevel\"\r\n styles={{ dropdown: { display: \"inline-block\" } }}\r\n disabled={docker && typeof uiState.status.process.env.LOG_LEVEL === \"string\"}\r\n onRenderLabel={(props) => (\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>{props.label}</Label>\r\n <TooltipHost content=\"If running in Docker, Env var `LOG_LEVEL` is preferred.\">\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n )}\r\n options={[\r\n { key: -1, text: \"FATAL (-1)\" },\r\n { key: 0, text: \"ERROR (0)\" },\r\n { key: 1, text: \"WARN (1)\" },\r\n { key: 2, text: \"INFO (2)\" }, // default\r\n { key: 3, text: \"DEBUG (3)\" },\r\n ]}\r\n selectedKey={editing?.logLevel === undefined ? 2 : editing?.logLevel}\r\n onChange={(ev, option: any) => {\r\n setEditing({ ...editing, logLevel: option.key });\r\n }}\r\n />\r\n <TextField\r\n styles={{ fieldGroup: { \"max-width\": 200 } }}\r\n label=\"Hostname\"\r\n value={editing.hostname}\r\n onChange={(ev, newValue) => {\r\n setEditing({ ...editing, hostname: newValue });\r\n }}\r\n />\r\n <Toggle\r\n label=\"IPv6\"\r\n disabled={docker}\r\n checked={(docker === false && (editing.disableIPv6 === undefined || editing.disableIPv6 === false))}\r\n onText=\"Enable\"\r\n offText=\"Disable\"\r\n onChange={(ev, checked) => {\r\n setEditing({ ...editing, disableIPv6: checked === false });\r\n }}\r\n />\r\n <Separator alignContent=\"start\">Advanced</Separator>\r\n <TextField\r\n styles={{ fieldGroup: { \"max-width\": 200 } }}\r\n label=\"EPG Gathering Interval\"\r\n suffix=\"ms\"\r\n placeholder=\"3600000\"\r\n value={`${editing.epgGatheringInterval || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete editing.epgGatheringInterval;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const int = parseInt(newValue, 10);\r\n if (int <= 1000 * 60 * 60 * 24 * 3 && int > 0) {\r\n editing.epgGatheringInterval = int;\r\n }\r\n }\r\n setEditing({ ...editing });\r\n }}\r\n />\r\n <Toggle\r\n label={\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>EIT Parsing</Label>\r\n <TooltipHost content={\r\n `If running in Docker, Env var \\`DISABLE_EIT_PARSING\\` is preferred.\r\n ⚠️ If disabled, won't work some clients!`\r\n }>\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n }\r\n checked={(editing.disableEITParsing === undefined || editing.disableEITParsing === false)}\r\n onText=\"Enable\"\r\n offText=\"Disable ⚠️\"\r\n onChange={(ev, checked) => {\r\n setEditing({ ...editing, disableEITParsing: checked === false ? true : undefined })\r\n }}\r\n />\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing({ ...current })} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n for (const key of Object.keys(editing)) {\r\n if (editing[key] === null) {\r\n delete editing[key];\r\n }\r\n }\r\n console.log(\"ServerConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Icon,\r\n TooltipHost,\r\n ITooltipHostStyles,\r\n ITooltipProps\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport TunersManager from \"./TunersManager\";\r\n\r\ninterface StatusItem {\r\n label: string;\r\n text: string;\r\n}\r\n\r\nconst calloutProps = { gapSpace: 0 };\r\nconst tooltipHostStyles: Partial<ITooltipHostStyles> = {\r\n root: {\r\n display: \"inline-block\",\r\n }\r\n};\r\nconst tooltipProps: Partial<ITooltipProps> = {\r\n styles: {\r\n content: {\r\n whiteSpace: \"pre\"\r\n }\r\n }\r\n};\r\n\r\nconst StatusView: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [status, setStatus] = useState<UIState[\"status\"]>(uiState.status);\r\n const [services, setServices] = useState<UIState[\"services\"]>(uiState.services);\r\n const [tuners, setTuners] = useState<UIState[\"tuners\"]>(uiState.tuners);\r\n\r\n useEffect(() => {\r\n\r\n const onStatusUpdate = () => {\r\n setStatus({ ...uiState.status });\r\n };\r\n uiStateEvents.on(\"update:status\", onStatusUpdate);\r\n\r\n const onServicesUpdate = () => {\r\n setServices([ ...uiState.services ]);\r\n };\r\n uiStateEvents.on(\"update:services\", onServicesUpdate);\r\n\r\n const onTunersUpdate = () => {\r\n setTuners([ ...uiState.tuners ]);\r\n };\r\n uiStateEvents.on(\"update:tuners\", onTunersUpdate);\r\n\r\n return () => {\r\n uiStateEvents.off(\"update:status\", onStatusUpdate);\r\n uiStateEvents.off(\"update:services\", onServicesUpdate);\r\n uiStateEvents.off(\"update:tuners\", onTunersUpdate);\r\n };\r\n }, []);\r\n\r\n const statusItem: StatusItem[] = [];\r\n\r\n if (status) {\r\n const dockerStat = status.process?.env?.DOCKER === \"YES\" ? \"🐋\" : \"\";\r\n statusItem.push({ label: \"Platform\", text: `${status.process?.platform} (${status.process?.arch}) ${dockerStat}` });\r\n statusItem.push({ label: \"Node.js Version\", text: status.process?.versions?.node });\r\n statusItem.push({ label: \"Memory (RSS)\", text: `${Math.round(status.process?.memoryUsage?.rss / 1024 / 1024)} MB` });\r\n statusItem.push({ label: \"EPG Gathering Network IDs\", text: status.epg.gatheringNetworks.map(id => `0x${id.toString(16).toUpperCase()}`).join(\", \") });\r\n statusItem.push({ label: \"EPG Stored Events\", text: `${status.epg.storedEvents} Events` });\r\n statusItem.push({ label: \"TunerDevice Streams\", text: `${status.streamCount.tunerDevice}` });\r\n statusItem.push({ label: \"TSFilter Streams\", text: `${status.streamCount.tsFilter}` });\r\n statusItem.push({ label: \"Decoder Streams\", text: `${status.streamCount.decoder}` });\r\n statusItem.push({ label: \"RPC Connections\", text: `${status.rpcCount}` });\r\n }\r\n\r\n const statusList: JSX.Element[] = [];\r\n for (let i = 0; i < statusItem.length; i++) {\r\n const item = statusItem[i];\r\n statusList.push(\r\n <div key={`status-list-item${i}`} className=\"ms-Grid-col ms-sm12 ms-xl6 ms-xxl4 ms-xxxl3\">\r\n <div className=\"ms-Grid\" style={{ margin: 4 }}>\r\n <div className=\"ms-Grid-row\">\r\n <div className=\"ms-Grid-col ms-sm6\"><span className=\"ms-fontWeight-semibold\">{item.label}</span></div>\r\n <div className=\"ms-Grid-col ms-sm6\"><span>{item.text}</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const serviceList: JSX.Element[] = [];\r\n for (let i = 0; i < services.length; i++) {\r\n const service = services[i];\r\n if (service.type !== 1) {\r\n continue;\r\n }\r\n const tooltipId = `service-list-item#${i}-tooltip`;\r\n serviceList.push(\r\n <div key={`service-list-item${i}`} className=\"ms-Grid-col ms-sm6 ms-xl3 ms-xxl2\">\r\n <TooltipHost\r\n id={tooltipId}\r\n calloutProps={calloutProps}\r\n styles={tooltipHostStyles}\r\n tooltipProps={tooltipProps}\r\n content={(\r\n `#${service.id}\\n` +\r\n `SID: 0x${service.serviceId.toString(16).toUpperCase()} (${service.serviceId})\\n` +\r\n `NID: 0x${service.networkId.toString(16).toUpperCase()} (${service.networkId})\\n` +\r\n `Channel: ${service.channel.type} / ${service.channel.channel}`\r\n )}\r\n >\r\n <div className=\"ms-Grid\" area-describeby={tooltipId} style={{ margin: 4 }}>\r\n <div className=\"ms-Grid-row\" style={{\r\n padding: 1,\r\n height: 24,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundImage: service.hasLogoData && `url(/api/services/${service.id}/logo)`\r\n }}>\r\n <div className=\"ms-Grid-col ms-sm12\" style={{ paddingLeft: 50 }}>\r\n <span className=\"ms-fontWeight-semibold ms-fontSize-12\">\r\n {service.name}\r\n </span>\r\n <span style={{ marginLeft: 4, fontSize: 13, verticalAlign: \"middle\" }}>\r\n {\r\n status.epg.gatheringNetworks.includes(service.networkId) && <Icon iconName=\"Sync\" style={{ color: \"#f6ad49\" }} /> ||\r\n service.epgReady && <Icon iconName=\"CheckMark\" style={{ color: \"#c3d825\" }} /> ||\r\n <Icon iconName=\"Clock\" style={{ color: \"#777\" }} />\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </TooltipHost>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <Stack tokens={{ childrenGap: \"16 0\" }} style={{ margin: \"16px 0 8px\" }}>\r\n <Stack>\r\n <Separator alignContent=\"start\">Status</Separator>\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\">\r\n {statusList}\r\n </div>\r\n </div>\r\n </Stack>\r\n <Stack>\r\n <Separator alignContent=\"start\">Services</Separator>\r\n <div className=\"ms-Grid\" dir=\"ltr\" style={{ marginLeft: 8 }}>\r\n <div className=\"ms-Grid-row\">\r\n {serviceList}\r\n </div>\r\n </div>\r\n </Stack>\r\n <Stack>\r\n <Separator alignContent=\"start\">Tuners</Separator>\r\n <TunersManager tuners={tuners} />\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default StatusView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Spinner,\r\n SpinnerSize,\r\n DetailsList,\r\n Selection,\r\n SelectionMode,\r\n IColumn,\r\n Dropdown,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n TextField,\r\n Checkbox,\r\n IconButton,\r\n ActionButton\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigTuners, ChannelType } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/tuners\";\r\n\r\ninterface Item {\r\n key: string;\r\n enable: JSX.Element;\r\n name: JSX.Element;\r\n types: JSX.Element;\r\n options: JSX.Element;\r\n controls: JSX.Element;\r\n}\r\n\r\nconst columns: IColumn[] = [\r\n {\r\n key: \"col-enable\",\r\n name: \"Enable\",\r\n fieldName: \"enable\",\r\n minWidth: 44,\r\n maxWidth: 44\r\n },\r\n {\r\n key: \"col-name\",\r\n name: \"Name\",\r\n fieldName: \"name\",\r\n minWidth: 0,\r\n maxWidth: 70\r\n },\r\n {\r\n key: \"col-types\",\r\n name: \"Types\",\r\n fieldName: \"types\",\r\n minWidth: 60,\r\n maxWidth: 105\r\n },\r\n {\r\n key: \"col-options\",\r\n name: \"Options\",\r\n fieldName: \"options\",\r\n minWidth: 340,\r\n // maxWidth: 400\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 120,\r\n maxWidth: 120\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst typesIndex = [\"GR\", \"BS\", \"CS\", \"SKY\"];\r\nfunction sortTypes(types: ChannelType[]): ChannelType[] {\r\n return types.sort((a, b) => typesIndex.indexOf(a) - typesIndex.indexOf(b));\r\n}\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigTuners>(null);\r\n const [editing, setEditing] = useState<ConfigTuners>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n const listContainerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"TunersConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing(JSON.parse(JSON.stringify(res)));\r\n setCurrent(JSON.parse(JSON.stringify(res)));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const items = [];\r\n editing?.forEach((tuner, i) => {\r\n const item: Item = {\r\n key: `item${i}`,\r\n enable: (\r\n <Toggle\r\n checked={!tuner.isDisabled}\r\n onChange={(ev, checked) => {\r\n tuner.isDisabled = !checked;\r\n setEditing([...editing]);\r\n }}\r\n style={{ marginTop: 6 }}\r\n />\r\n ),\r\n name: (\r\n <TextField\r\n value={tuner.name}\r\n onChange={(ev, newValue) => {\r\n tuner.name = newValue;\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n types: (\r\n <Dropdown\r\n styles={{ root: { display: \"inline-block\", minWidth: 70 } }}\r\n multiSelect\r\n options={[\r\n { key: \"GR\", text: \"GR\" },\r\n { key: \"BS\", text: \"BS\" },\r\n { key: \"CS\", text: \"CS\" },\r\n { key: \"SKY\", text: \"SKY\" }\r\n ]}\r\n selectedKeys={tuner.types}\r\n onChange={(ev, option) => {\r\n if (option.selected === true) {\r\n tuner.types.push(option.key as any);\r\n tuner.types = sortTypes(tuner.types);\r\n } else {\r\n tuner.types = tuner.types.filter(type => type !== option.key);\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n options: (\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n {!tuner.remoteMirakurunHost && (\r\n <>\r\n <TextField\r\n label=\"Command:\"\r\n value={tuner.command || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.command;\r\n } else {\r\n tuner.command = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n label=\"DVB Device Path:\"\r\n value={tuner.dvbDevicePath || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.dvbDevicePath;\r\n } else {\r\n tuner.dvbDevicePath = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </>\r\n )}\r\n {!tuner.command && (\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }}>\r\n <TextField\r\n label=\"Remote Mirakurun Host:\"\r\n value={tuner.remoteMirakurunHost || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.remoteMirakurunHost;\r\n } else if (/^[0-9a-z\\.]+$/.test(newValue)) {\r\n tuner.remoteMirakurunHost = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 55 }}\r\n label=\"Port:\"\r\n placeholder=\"40772\"\r\n value={`${tuner.remoteMirakurunPort || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.remoteMirakurunPort;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const port = parseInt(newValue, 10);\r\n if (port <= 65535 && port > 0) {\r\n tuner.remoteMirakurunPort = port;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <Checkbox\r\n styles={{ root: { marginTop: 34 } }}\r\n label=\"Decode\"\r\n checked={tuner.remoteMirakurunDecoder || false}\r\n onChange={(ev, checked) => {\r\n if (checked) {\r\n tuner.remoteMirakurunDecoder = true;\r\n } else {\r\n delete tuner.remoteMirakurunDecoder;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </Stack>\r\n )}\r\n {(!tuner.remoteMirakurunHost || !tuner.remoteMirakurunDecoder) && (\r\n <TextField\r\n label=\"Decoder:\"\r\n value={tuner.decoder || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.decoder;\r\n } else {\r\n tuner.decoder = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n )}\r\n </Stack>\r\n ),\r\n controls: (\r\n <Stack horizontal horizontalAlign=\"end\">\r\n <IconButton\r\n disabled={i === 0}\r\n style={{ opacity: i === 0 ? 0 : 1 }}\r\n title=\"Up\"\r\n iconProps={{ iconName: \"Up\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i - 1, 0, tuner);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n disabled={i === editing.length - 1}\r\n style={{ opacity: i === editing.length - 1 ? 0 : 1 }}\r\n title=\"Down\"\r\n iconProps={{ iconName: \"Down\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i + 1, 0, tuner);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"remove\",\r\n text: \"Remove Tuner\",\r\n iconProps: { iconName: \"Delete\" },\r\n onClick: () => {\r\n editing.splice(i, 1);\r\n setEditing([...editing]);\r\n }\r\n }] }}\r\n />\r\n </Stack>\r\n )\r\n };\r\n //\r\n items.push(item);\r\n });\r\n\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n if (listContainerRef.current) {\r\n listContainerRef.current.style.maxHeight = \"calc(100vh - 410px)\";\r\n }\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack.Item>\r\n <ActionButton\r\n text=\"Add Tuner\"\r\n iconProps={{ iconName: \"Add\" }}\r\n onClick={() => {\r\n const i = editing.length;\r\n editing.push({\r\n name: `adapter${i}`,\r\n types: [],\r\n command: `dvbv5-zap -a ${i} -c ./config/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -r -P <channel>`,\r\n dvbDevicePath: `/dev/dvb/adapter${i}/dvr0`,\r\n decoder: \"arib-b25-stream-test\",\r\n isDisabled: true\r\n });\r\n setEditing([...editing]);\r\n setTimeout(() => {\r\n listContainerRef.current.scrollTop = listContainerRef.current.scrollHeight;\r\n }, 0);\r\n }}\r\n />\r\n </Stack.Item>\r\n\r\n <div ref={listContainerRef} style={{ overflowY: \"scroll\" }}>\r\n <DetailsList\r\n setKey=\"items\"\r\n items={items}\r\n columns={columns}\r\n selection={dummySelection}\r\n selectionMode={SelectionMode.none}\r\n />\r\n </div>\r\n\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing(JSON.parse(JSON.stringify(current)))} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n console.log(\"TunersConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Text,\r\n Icon,\r\n GroupedList,\r\n DetailsRow,\r\n Selection,\r\n IColumn,\r\n IGroup,\r\n Dialog,\r\n DialogFooter,\r\n DialogType,\r\n PrimaryButton,\r\n DefaultButton,\r\n IconButton,\r\n ColorClassNames\r\n} from \"@fluentui/react\";\r\nimport { TunerDevice } from \"../../../api\";\r\n\r\ninterface Item {\r\n _group: string;\r\n _kind: \"device\" | \"user\";\r\n key: string;\r\n name: string;\r\n command?: JSX.Element;\r\n controls?: JSX.Element;\r\n user?: JSX.Element;\r\n priority?: JSX.Element;\r\n}\r\n\r\nconst deviceColumns: IColumn[] = [\r\n {\r\n key: \"col-command\",\r\n name: \"\",\r\n fieldName: \"command\",\r\n minWidth: 0,\r\n isResizable: true,\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 0\r\n }\r\n];\r\n\r\nconst userColumns: IColumn[] = [\r\n {\r\n key: \"col-user\",\r\n name: \"\",\r\n fieldName: \"user\",\r\n minWidth: 0\r\n },\r\n {\r\n key: \"col-priority\",\r\n name: \"\",\r\n fieldName: \"priority\",\r\n minWidth: 0\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst onRenderCell = (nestingDepth: number, item: Item, itemIndex: number) => {\r\n return <DetailsRow\r\n columns={item._kind === \"device\" ? deviceColumns : userColumns}\r\n groupNestingDepth={nestingDepth + (item._kind === \"device\" ? 0 : 1)}\r\n item={item}\r\n itemIndex={itemIndex}\r\n selection={dummySelection}\r\n selectionMode={0}\r\n compact\r\n />\r\n};\r\n\r\nconst TunersManager: React.FC<{ tuners: TunerDevice[] }> = ({ tuners }) => {\r\n\r\n const [killTarget, setKillTarget] = useState<number>(null);\r\n\r\n const items: Item[] = [];\r\n for (const tuner of tuners) {\r\n const item: Item = {\r\n _group: `#${tuner.index}: ${tuner.name} (${tuner.types.join(\", \")})`,\r\n _kind: \"device\",\r\n key: `row-device-${tuner.index}`,\r\n name: tuner.name,\r\n command: (\r\n <>\r\n <Icon title=\"Command\" iconName=\"ServerProcesses\" />\r\n <Text style={{ lineHeight: \"30px\", marginLeft: 8 }}>{tuner.command || \"-\"}</Text>\r\n <Text\r\n style={{ lineHeight: \"30px\", marginLeft: 8 }}\r\n className={ColorClassNames.neutralTertiaryAlt}\r\n >\r\n {tuner.pid ? `(pid=${tuner.pid})` : \"\"}\r\n </Text>\r\n </>\r\n )\r\n };\r\n if (tuner.command) {\r\n item.controls = (\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"kill\",\r\n text: \"Kill Tuner Process...\",\r\n iconProps: { iconName: \"Cancel\" },\r\n onClick: () => setKillTarget(tuner.index)\r\n }] }}\r\n />\r\n );\r\n }\r\n items.push(item);\r\n\r\n for (const user of tuner.users) {\r\n items.push({\r\n _group: item._group,\r\n _kind: \"user\",\r\n key: `${item.key}-user-${user.id}`,\r\n name: user.id,\r\n user: (\r\n <>\r\n <Icon title=\"User\" iconName={/Mirakurun/.test(user.id) ? \"Processing\" : \"PlugConnected\"} />\r\n <Text style={{ marginLeft: 8 }}>{user.id}</Text>\r\n </>\r\n ),\r\n priority: (\r\n <>\r\n <Icon title=\"Priority\" iconName=\"SortLines\" />\r\n <Text style={{ marginLeft: 8 }}>{user.priority}</Text>\r\n </>\r\n )\r\n });\r\n }\r\n }\r\n\r\n const groups: IGroup[] = [];\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i];\r\n let group = groups.find(group => group.key === item._group);\r\n if (!group) {\r\n group = {\r\n key: item._group,\r\n name: item._group,\r\n startIndex: i,\r\n count: 0\r\n };\r\n groups.push(group);\r\n }\r\n group.count++;\r\n }\r\n\r\n return (\r\n <>\r\n <GroupedList\r\n items={items}\r\n groups={groups}\r\n groupProps={{ headerProps: { styles: { headerCount: { display: \"none\" } } } }} // hide count\r\n onRenderCell={onRenderCell}\r\n selectionMode={0}\r\n compact\r\n />\r\n <Dialog\r\n hidden={killTarget === null}\r\n onDismiss={() => setKillTarget(null)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Kill Tuner Process\",\r\n subText: \"Do you want to kill this running tuner process?\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Kill\"\r\n onClick={() => {\r\n (async () => {\r\n await fetch(`/api/tuners/${killTarget}/process`, { method: \"DELETE\" });\r\n })();\r\n setKillTarget(null);\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setKillTarget(null)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default TunersManager;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n MessageBar,\r\n MessageBarType,\r\n MessageBarButton,\r\n Link\r\n} from \"@fluentui/react\";\r\nimport { Version } from \"../../../api\";\r\n\r\nconst UpdateAlert: React.FC = () => {\r\n\r\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\r\n const [version, setVersion] = useState<Version>(null);\r\n\r\n useEffect(() => {\r\n setTimeout(async () => {\r\n console.log(\"UpdateAlert\", \"checking update\", \"...\");\r\n const version: Version = await (await fetch(\"/api/version\")).json();\r\n setVersion(version);\r\n if (version.current !== version.latest) {\r\n setUpdateAvailable(true);\r\n }\r\n console.log(\"UpdateAlert\", \"checking update\", \"done.\");\r\n }, 1000 * 5);\r\n }, []);\r\n\r\n return (\r\n <>\r\n {updateAvailable === true && (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={false}\r\n onDismiss={() => setUpdateAvailable(false)}\r\n dismissButtonAriaLabel=\"Close\"\r\n actions={\r\n <div>\r\n <MessageBarButton\r\n href=\"https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md\"\r\n target=\"_blank\"\r\n >\r\n How to Update\r\n </MessageBarButton>\r\n </div>\r\n }\r\n >\r\n Update ({version.latest}) Available!\r\n <Link href=\"https://github.com/Chinachu/Mirakurun/blob/master/CHANGELOG.md\" target=\"_blank\">\r\n CHANGELOG\r\n </Link>\r\n </MessageBar>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default UpdateAlert;\r\n","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","module.exports = EventEmitter3;","module.exports = FluentUIReact;","module.exports = React;","module.exports = ReactDOM;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport {\r\n createTheme,\r\n loadTheme,\r\n Fabric,\r\n Stack,\r\n ActionButton,\r\n Pivot,\r\n PivotItem,\r\n Separator,\r\n Text,\r\n Link,\r\n Icon,\r\n ColorClassNames\r\n} from \"@fluentui/react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams, NotifyParams } from \"../../lib/Mirakurun/rpc.d\";\r\nimport { EventMessage } from \"../../lib/Mirakurun/Event.d\";\r\nimport { TunerDevice, Service, Status, Program } from \"../../api.d\";\r\nimport ConnectionGuide from \"./components/ConnectionGuide\";\r\nimport UpdateAlert from \"./components/UpdateAlert\";\r\nimport Restart from \"./components/Restart\";\r\nimport StatusView from \"./components/StatusView\";\r\nimport EventsView from \"./components/EventsView\";\r\nimport LogsView from \"./components/LogsView\";\r\nimport ConfigView from \"./components/ConfigView\";\r\nimport HeartView from \"./components/HeartView\";\r\nimport \"./index.css\";\r\n\r\nexport interface UIState {\r\n version: string;\r\n statusName: string;\r\n statusIconName: string;\r\n tuners: TunerDevice[];\r\n services: Service[];\r\n status: Status;\r\n}\r\n\r\nconst uiState: UIState = {\r\n version: \"..\",\r\n statusName: \"Loading\",\r\n statusIconName: \"offline\",\r\n tuners: [],\r\n services: [],\r\n status: null\r\n};\r\n\r\nconst uiStateEvents = new EventEmitter();\r\n\r\nconst iconSrcMap = {\r\n normal: \"icon.svg\",\r\n offline: \"icon-gray.svg\",\r\n active: \"icon-active.svg\"\r\n};\r\n\r\nlet statusRefreshInterval: any;\r\nlet servicesRefreshInterval: any;\r\n\r\nfunction idleStatusChecker(): boolean {\r\n\r\n let statusName = \"Standby\";\r\n let statusIconName = \"normal\";\r\n\r\n const isActive = uiState.tuners.some(tuner => tuner.isUsing === true && tuner.users.some(user => user.priority !== -1));\r\n if (isActive) {\r\n statusName = \"Active\";\r\n statusIconName = \"active\";\r\n }\r\n\r\n if (uiState.statusName === statusName) {\r\n return false;\r\n }\r\n\r\n uiState.statusName = statusName;\r\n uiState.statusIconName = statusIconName;\r\n uiStateEvents.emit(\"update\");\r\n\r\n return true;\r\n}\r\nuiStateEvents.on(\"update:tuners\", idleStatusChecker);\r\n\r\nconst rpc = new RPCClient(`ws://${location.host}/rpc`, {\r\n protocols: null\r\n});\r\n\r\nrpc.on(\"connecting\", () => {\r\n\r\n console.log(\"rpc:connecting\");\r\n\r\n uiState.statusName = \"Connecting\";\r\n uiStateEvents.emit(\"update\");\r\n});\r\n\r\nrpc.on(\"connected\", async () => {\r\n\r\n console.log(\"rpc:connected\");\r\n\r\n status: {\r\n uiState.status = await rpc.call(\"getStatus\");\r\n\r\n statusRefreshInterval = setInterval(async () => {\r\n if (document.hidden) {\r\n return;\r\n }\r\n uiState.status = await rpc.call(\"getStatus\");\r\n uiStateEvents.emit(\"update:status\");\r\n }, 1000 * 3);\r\n\r\n if (uiState.version !== \"..\" && uiState.version !== uiState.status.version) {\r\n location.reload();\r\n return;\r\n }\r\n uiState.version = uiState.status.version;\r\n }\r\n services: {\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n\r\n servicesRefreshInterval = setInterval(async () => {\r\n if (document.hidden) {\r\n return;\r\n }\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n uiStateEvents.emit(\"update:services\");\r\n }, 1000 * 60);\r\n }\r\n uiState.tuners = await (await fetch(\"/api/tuners\")).json();\r\n\r\n await rpc.call(\"join\", {\r\n rooms: [\"events:tuner\", \"events:service\"]\r\n } as JoinParams);\r\n\r\n uiStateEvents.emit(\"update\");\r\n uiStateEvents.emit(\"update:status\");\r\n uiStateEvents.emit(\"update:services\");\r\n uiStateEvents.emit(\"update:tuners\");\r\n});\r\n\r\nrpc.on(\"disconnect\", () => {\r\n\r\n console.log(\"rpc:disconnected\");\r\n\r\n clearInterval(statusRefreshInterval);\r\n clearInterval(servicesRefreshInterval);\r\n\r\n uiState.statusName = \"Disconnected\";\r\n uiState.statusIconName = \"offline\";\r\n uiStateEvents.emit(\"update\");\r\n});\r\n\r\nrpc.methods.set(\"events\", async (socket, { array }: NotifyParams<EventMessage>) => {\r\n\r\n let reloadServiceRequired = false;\r\n\r\n for (const event of array) {\r\n if (event.resource === \"service\") {\r\n const service: Service = event.data;\r\n reloadServiceRequired = true;\r\n\r\n for (const _service of uiState.services) {\r\n if (_service.id === service.id) {\r\n Object.assign(_service, service);\r\n uiStateEvents.emit(\"update:services\");\r\n reloadServiceRequired = false;\r\n break;\r\n }\r\n }\r\n } else if (event.resource === \"tuner\") {\r\n const tuner: TunerDevice = event.data;\r\n\r\n uiState.tuners[uiState.tuners.findIndex(value => value.index === tuner.index)] = tuner;\r\n uiStateEvents.emit(\"update:tuners\");\r\n }\r\n }\r\n\r\n if (reloadServiceRequired) {\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n uiStateEvents.emit(\"update:services\");\r\n }\r\n\r\n uiStateEvents.emit(\"data:events\", array);\r\n});\r\n\r\nrpc.methods.set(\"logs\", (socket, { array }: NotifyParams<string> ) => {\r\n uiStateEvents.emit(\"data:logs\", array);\r\n});\r\n\r\nconst Content = () => {\r\n\r\n const [state, setState] = useState<UIState>(uiState);\r\n\r\n useEffect(() => {\r\n\r\n const title = `${state.statusName} - Mirakurun ${state.version}`;\r\n if (document.title !== title) {\r\n document.title = title;\r\n }\r\n\r\n const icon = document.getElementById(\"icon\");\r\n if (icon.getAttribute(\"href\") !== iconSrcMap[state.statusIconName]) {\r\n icon.setAttribute(\"href\", iconSrcMap[state.statusIconName]);\r\n }\r\n\r\n const onStateUpdate = () => {\r\n setState({ ...uiState });\r\n };\r\n uiStateEvents.on(\"update\", onStateUpdate);\r\n\r\n return () => {\r\n uiStateEvents.removeListener(\"update\", onStateUpdate);\r\n };\r\n });\r\n\r\n return (\r\n <Fabric style={{ margin: \"16px\" }}>\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <UpdateAlert />\r\n\r\n <Stack horizontal verticalAlign=\"center\" tokens={{ childrenGap: \"0 8\" }}>\r\n <img style={{ height: \"96px\" }} src={iconSrcMap[state.statusIconName]} />\r\n <div className=\"ms-fontSize-42\">Mirakurun</div>\r\n <Text variant=\"mediumPlus\" nowrap block className={ColorClassNames.themePrimary}>{state.status?.version}</Text>\r\n <Text variant=\"medium\" nowrap block className={ColorClassNames.neutralTertiaryAlt}>({state.statusName})</Text>\r\n <Stack.Item grow disableShrink>&nbsp;</Stack.Item>\r\n <ConnectionGuide />\r\n <ActionButton\r\n iconProps={{ iconName: \"KnowledgeArticle\" }}\r\n text=\"API Docs\"\r\n target=\"_blank\"\r\n href=\"/api/debug\"\r\n />\r\n <Restart uiStateEvents={uiStateEvents} />\r\n </Stack>\r\n\r\n <Pivot>\r\n <PivotItem itemIcon=\"GroupedList\" headerText=\"Status\">\r\n <StatusView uiState={uiState} uiStateEvents={uiStateEvents} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"EntitlementRedemption\" headerText=\"Events\">\r\n <EventsView uiStateEvents={uiStateEvents} rpc={rpc} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"ComplianceAudit\" headerText=\"Logs\">\r\n <LogsView uiStateEvents={uiStateEvents} rpc={rpc} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"Settings\" headerText=\"Config\">\r\n <ConfigView uiState={uiState} uiStateEvents={uiStateEvents} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"Heart\" headerText=\"Special Thanks\">\r\n <HeartView />\r\n </PivotItem>\r\n </Pivot>\r\n\r\n <Stack>\r\n <Separator />\r\n <Text>\r\n <Link href=\"https://github.com/Chinachu/Mirakurun\" target=\"_blank\">Mirakurun</Link> {state.version}\r\n &nbsp;&copy; 2016- <Link href=\"https://github.com/kanreisa\" target=\"_blank\">kanreisa</Link>.\r\n </Text>\r\n <Text>\r\n <Icon iconName=\"Heart\" /> <Link href=\"https://chinachu.moe/\" target=\"_blank\">Chinachu Project</Link>\r\n &nbsp;(<Link href=\"https://github.com/Chinachu\" target=\"_blank\">GitHub</Link>)\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Text variant=\"xSmall\" className={ColorClassNames.neutralTertiaryAlt}>\r\n Mirakurun comes with ABSOLUTELY NO WARRANTY. USE AT YOUR OWN RISK.\r\n </Text>\r\n </Stack>\r\n </Stack>\r\n </Fabric>\r\n );\r\n};\r\n\r\nReactDOM.render(\r\n <Content />,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// dark theme\r\nconst myTheme = createTheme({\r\n palette: {\r\n themePrimary: '#ffd56c',\r\n themeLighterAlt: '#0a0904',\r\n themeLighter: '#292211',\r\n themeLight: '#4d4020',\r\n themeTertiary: '#998040',\r\n themeSecondary: '#e0bc5e',\r\n themeDarkAlt: '#ffd97a',\r\n themeDark: '#ffdf8f',\r\n themeDarker: '#ffe8ac',\r\n neutralLighterAlt: '#2d2f37',\r\n neutralLighter: '#34363f',\r\n neutralLight: '#40424c',\r\n neutralQuaternaryAlt: '#474a54',\r\n neutralQuaternary: '#4e505b',\r\n neutralTertiaryAlt: '#686b77',\r\n neutralTertiary: '#f1f1f1',\r\n neutralSecondary: '#f4f4f4',\r\n neutralPrimaryAlt: '#f6f6f6',\r\n neutralPrimary: '#ebebeb',\r\n neutralDark: '#fafafa',\r\n black: '#fdfdfd',\r\n white: '#25272e',\r\n }\r\n});\r\nloadTheme(myTheme);\r\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":";;;;;;;;;;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACnFY;;AAEZ,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,UAAU;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,eAAe,mBAAO,CAAC,oDAAW;AAClC,gBAAgB,mBAAO,CAAC,gDAAS;AACjC;AACA;AACA;AACA;;AAEA,cAAc;AACd,kBAAkB;AAClB,yBAAyB;;AAEzB;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;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;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;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;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,QAAQ;AACjC;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,qBAAqB,WAAW,GAAG,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,gBAAgB,WAAW,GAAG,IAAI,KAAK,aAAa;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;;AAEA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,KAAK,mDAAmD,cAAc;AACzF,GAAG;AACH;AACA;AACA,+BAA+B,IAAI;AACnC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAM,aAAa,SAAS;AACtD;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB,cAAc,oBAAoB,EAAE,IAAI;AACxC;AACA,YAAY,gBAAgB,EAAE,IAAI;AAClC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG,SAAS,GAAG,KAAK,qBAAqB,EAAE,EAAE;AACpE,QAAQ;AACR,yBAAyB,GAAG,KAAK,yBAAyB,EAAE,EAAE;AAC9D,mBAAmB,yBAAyB,EAAE,EAAE;AAChD;AACA,MAAM;AACN,oBAAoB,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,cAAc,SAAS,OAAO;AACxE;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAC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AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE,gBAAgB,qBAAM;AACxB,OAAO,qBAAM,cAAc,qBAAM;AACjC,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;;;;;;;;;;;AChBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;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;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;AC1Ca;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,0DAAU;AACnC,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA,iCAAiC,MAAM;AACvC;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;ACxIa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB;AACtB,kBAAkB,mBAAO,CAAC,8DAAe;AACzC,gBAAgB,mBAAO,CAAC,8CAAQ;AAChC,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C,iBAAiB,mBAAO,CAAC,0DAAU;AACnC,yBAAyB,mBAAO,CAAC,0EAAkB;AACnD,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA,aAAa;AACb,8CAA8C,MAAM;AACpD;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,iBAAiB,IAAI,YAAY;AACjC,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;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,oEAAoE,YAAY;AAChF;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;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;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,wCAAwC,MAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;ACrRa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,oBAAoB,GAAG,yBAAyB,GAAG,kBAAkB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;;;;;;;;;;AC/Ca;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc,GAAG,cAAc;AAC/B,eAAe,mBAAO,CAAC,0DAAU;AACjC,0CAAyC,EAAE,qCAAqC,4BAA4B,EAAC;AAC7G,eAAe,mBAAO,CAAC,0DAAU;AACjC,0CAAyC,EAAE,qCAAqC,4BAA4B,EAAC;AAC7G;;;;;;;;;;;ACPa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd,qBAAqB,mBAAO,CAAC,oCAAe;AAC5C,aAAa,mBAAO,CAAC,wCAAI;AACzB,eAAe,mBAAO,CAAC,2DAAM;AAC7B,yBAAyB,mBAAO,CAAC,0EAAkB;AACnD,kBAAkB,mBAAO,CAAC,4DAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;;;;;;;;;;;;;;;;;AC1R+F;AAC/F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,uFAAO;;;;AAIxB,iEAAe,8FAAc,MAAM;;;;;;;;;;;;;;;;;;ACZ4D;AAC/F,YAA4F;;AAE5F;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAA0F;;AAE1F;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,mFAAO;;;;AAIxB,iEAAe,0FAAc,MAAM;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AA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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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,GAAG;;;;;;;;;;;;;;;ACtNlB,iEAAe,sCAAsC;;;;;;;;;;;;;;;;ACAhB;;AAErC;AACA,OAAO,qDAAQ;AACf;AACA;;AAEA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;;;;;AClCpB,iEAAe,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,GAAG,yCAAyC;;;;;;;;;;;;;;;ACApI;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,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","sources":["webpack://mirakurun/./node_modules/backo2/index.js","webpack://mirakurun/./node_modules/base64-js/index.js","webpack://mirakurun/./node_modules/buffer/index.js","webpack://mirakurun/./src/ui/components/HeartView.css","webpack://mirakurun/./src/ui/components/Logs.css","webpack://mirakurun/./src/ui/index.css","webpack://mirakurun/./node_modules/css-loader/dist/runtime/api.js","webpack://mirakurun/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://mirakurun/./node_modules/ieee754/index.js","webpack://mirakurun/./node_modules/isomorphic-ws/browser.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/MapLike.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/MessageHandler.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/client.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/common.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/index.js","webpack://mirakurun/./node_modules/jsonrpc2-ws/lib/server.js","webpack://mirakurun/./src/ui/components/HeartView.css?9ac2","webpack://mirakurun/./src/ui/components/Logs.css?1510","webpack://mirakurun/./src/ui/index.css?3ef0","webpack://mirakurun/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://mirakurun/./src/ui/components/ChannelsConfigurator.tsx","webpack://mirakurun/./src/ui/components/ConfigView.tsx","webpack://mirakurun/./src/ui/components/ConnectionGuide.tsx","webpack://mirakurun/./src/ui/components/EventsView.tsx","webpack://mirakurun/./src/ui/components/HeartView.tsx","webpack://mirakurun/./src/ui/components/LogsView.tsx","webpack://mirakurun/./src/ui/components/Restart.tsx","webpack://mirakurun/./src/ui/components/ServerConfigurator.tsx","webpack://mirakurun/./src/ui/components/StatusView.tsx","webpack://mirakurun/./src/ui/components/TunersConfigurator.tsx","webpack://mirakurun/./src/ui/components/TunersManager.tsx","webpack://mirakurun/./src/ui/components/UpdateAlert.tsx","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/index.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/md5.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/nil.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/parse.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/regex.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/rng.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v1.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v3.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v35.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v4.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/v5.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/validate.js","webpack://mirakurun/./node_modules/uuid/dist/esm-browser/version.js","webpack://mirakurun/./node_modules/ws/browser.js","webpack://mirakurun/external \"EventEmitter3\"","webpack://mirakurun/external \"FluentUIReact\"","webpack://mirakurun/external \"React\"","webpack://mirakurun/external \"ReactDOM\"","webpack://mirakurun/webpack/bootstrap","webpack://mirakurun/webpack/runtime/compat get default export","webpack://mirakurun/webpack/runtime/define property getters","webpack://mirakurun/webpack/runtime/global","webpack://mirakurun/webpack/runtime/hasOwnProperty shorthand","webpack://mirakurun/webpack/runtime/make namespace object","webpack://mirakurun/./src/ui/index.tsx"],"sourcesContent":["\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2021 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\n.heart-view > div.consent {\\r\\n margin: 16px 32px;\\r\\n max-width: 450px;\\r\\n}\\r\\n\\r\\n.heart-view > .ms-Stack > span,\\r\\n.heart-view > .ms-Stack img {\\r\\n margin: 8px 16px;\\r\\n}\\r\\n\\r\\n.heart-view img {\\r\\n display: inline-block;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/components/HeartView.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,iBAAiB;IACjB,gBAAgB;AACpB;;AAEA;;IAEI,gBAAgB;AACpB;;AAEA;IACI,qBAAqB;AACzB\",\"sourcesContent\":[\"/*\\r\\n Copyright 2021 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\n.heart-view > div.consent {\\r\\n margin: 16px 32px;\\r\\n max-width: 450px;\\r\\n}\\r\\n\\r\\n.heart-view > .ms-Stack > span,\\r\\n.heart-view > .ms-Stack img {\\r\\n margin: 8px 16px;\\r\\n}\\r\\n\\r\\n.heart-view img {\\r\\n display: inline-block;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\ndiv.logs {\\r\\n overflow: scroll;\\r\\n height: calc(100vh - 300px);\\r\\n box-sizing: border-box;\\r\\n padding: 8px 0;\\r\\n font-family: 'Courier New', Courier, monospace;\\r\\n font-size: 12px;\\r\\n border: 2px solid #605e5c;\\r\\n background: #292827;\\r\\n color: #bbb;\\r\\n}\\r\\n\\r\\ndiv.logs > div {\\r\\n padding: 2px 16px;\\r\\n word-break: break-all;\\r\\n white-space: break-spaces;\\r\\n}\\r\\n\\r\\ndiv.logs > div.latest {\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\ndiv.logs > div:hover {\\r\\n background: #1b1a19;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-debug {\\r\\n color: #a098e5;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-info {\\r\\n color: #eee;\\r\\n}\\r\\n\\r\\ndiv.logs > div.type-create {\\r\\n color: #c3d825;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-warn,\\r\\ndiv.logs > div.type-update {\\r\\n color: #f6ad49;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-error,\\r\\ndiv.logs > div.type-remove {\\r\\n color: #e95464;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-fatal {\\r\\n color: #fff;\\r\\n background: #c9171e;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/components/Logs.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,gBAAgB;IAChB,2BAA2B;IAC3B,sBAAsB;IACtB,cAAc;IACd,8CAA8C;IAC9C,eAAe;IACf,yBAAyB;IACzB,mBAAmB;IACnB,WAAW;AACf;;AAEA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,yBAAyB;AAC7B;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,mBAAmB;AACvB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;IACI,WAAW;IACX,mBAAmB;AACvB\",\"sourcesContent\":[\"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\ndiv.logs {\\r\\n overflow: scroll;\\r\\n height: calc(100vh - 300px);\\r\\n box-sizing: border-box;\\r\\n padding: 8px 0;\\r\\n font-family: 'Courier New', Courier, monospace;\\r\\n font-size: 12px;\\r\\n border: 2px solid #605e5c;\\r\\n background: #292827;\\r\\n color: #bbb;\\r\\n}\\r\\n\\r\\ndiv.logs > div {\\r\\n padding: 2px 16px;\\r\\n word-break: break-all;\\r\\n white-space: break-spaces;\\r\\n}\\r\\n\\r\\ndiv.logs > div.latest {\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\ndiv.logs > div:hover {\\r\\n background: #1b1a19;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-debug {\\r\\n color: #a098e5;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-info {\\r\\n color: #eee;\\r\\n}\\r\\n\\r\\ndiv.logs > div.type-create {\\r\\n color: #c3d825;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-warn,\\r\\ndiv.logs > div.type-update {\\r\\n color: #f6ad49;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-error,\\r\\ndiv.logs > div.type-remove {\\r\\n color: #e95464;\\r\\n}\\r\\n\\r\\ndiv.logs > div.level-fatal {\\r\\n color: #fff;\\r\\n background: #c9171e;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\nbody {\\r\\n background: #25272e;\\r\\n}\\r\\n\\r\\n.ms-Fabric {\\r\\n color: #ebebeb;\\r\\n}\\r\\n\\r\\n.ms-layer {\\r\\n display: none;\\r\\n}\\r\\n\\r\\ninput::placeholder {\\r\\n color: #686b77 !important;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/index.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;;CAcC;AACD;IACI,mBAAmB;AACvB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,yBAAyB;AAC7B\",\"sourcesContent\":[\"/*\\r\\n Copyright 2020 kanreisa\\r\\n\\r\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\r\\n\\r\\n http://www.apache.org/licenses/LICENSE-2.0\\r\\n\\r\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n*/\\r\\nbody {\\r\\n background: #25272e;\\r\\n}\\r\\n\\r\\n.ms-Fabric {\\r\\n color: #ebebeb;\\r\\n}\\r\\n\\r\\n.ms-layer {\\r\\n display: none;\\r\\n}\\r\\n\\r\\ninput::placeholder {\\r\\n color: #686b77 !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass MapLike {\n constructor() {\n this._map = {};\n }\n get size() {\n return this.keys().length;\n }\n clear() {\n for (const key in this._map) {\n delete this._map[key];\n }\n }\n delete(key) {\n if (this.has(key)) {\n return delete this._map[key];\n }\n return false;\n }\n get(key) {\n return this._map[key];\n }\n has(key) {\n return this._map[key] !== undefined;\n }\n keys() {\n return Object.keys(this._map);\n }\n set(key, value) {\n this._map[key] = value;\n return this;\n }\n values() {\n const values = [];\n for (const key in this._map) {\n values.push(this._map[key]);\n }\n return values;\n }\n}\nexports.default = MapLike;\n//# sourceMappingURL=MapLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common_1 = require(\"./common\");\nconst EventEmitter = require(\"eventemitter3\");\nclass MessageHandler extends EventEmitter {\n constructor(options) {\n super();\n this.options = options;\n this.methods = new Map();\n }\n async handleMessage(socket, data) {\n const calls = [];\n const responses = [];\n let isBinary = false;\n let isArray = false;\n if (data instanceof ArrayBuffer) {\n isBinary = true;\n data = Buffer.from(data).toString();\n }\n else if (data instanceof Buffer) {\n isBinary = true;\n data = data.toString();\n }\n else if (Array.isArray(data)) {\n isBinary = true;\n data = \"[\" + data.map(buf => buf.toString()).join(\",\") + \"]\";\n }\n try {\n const obj = JSON.parse(data);\n if (Array.isArray(obj)) {\n isArray = true;\n if (obj.length === 0) {\n const res = {\n jsonrpc: \"2.0\",\n error: common_1.createError(-32600 /* InvalidRequest */, null, \"Empty Array\"),\n id: null\n };\n socket.send(JSON.stringify(res), isBinary);\n return;\n }\n calls.push(...obj);\n }\n else {\n calls.push(obj);\n }\n }\n catch (e) {\n const res = {\n jsonrpc: \"2.0\",\n error: common_1.createError(-32700 /* ParseError */, null, \"Invalid JSON\"),\n id: null\n };\n socket.send(JSON.stringify(res), isBinary);\n return;\n }\n for (const call of calls) {\n const res = await this._processCall(socket, call);\n if (res) {\n responses.push(res);\n }\n }\n if (responses.length === 0) {\n return;\n }\n socket.send(JSON.stringify(isArray ? responses : responses[0]), isBinary);\n }\n async _processCall(socket, call) {\n const reqId = call.id;\n const res = {\n jsonrpc: \"2.0\",\n id: reqId === undefined ? null : reqId\n };\n if (typeof call !== \"object\") {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n if (call.jsonrpc !== \"2.0\" && (this.options.jsonrpcVersionCheck === 0 /* STRICT */ ||\n (this.options.jsonrpcVersionCheck === 1 /* LOOSE */ && call.jsonrpc !== undefined))) {\n res.error = common_1.createError(-32600 /* InvalidRequest */, null, \"Invalid JSON-RPC Version\");\n return res;\n }\n if (common_1.isResponse(call)) {\n this.emit(\"response\", socket, call);\n if (call.id !== null) {\n this.emit(\"method_response\", socket, call);\n return;\n }\n if (!call.error) {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n this.emit(\"error_response\", socket, call);\n if (call.error.code === -32700 /* ParseError */ || call.error.code === -32600 /* InvalidRequest */) {\n return;\n }\n this.emit(\"notification_error\", socket, call.error);\n return;\n }\n if (!call.method) {\n res.error = common_1.createError(-32601 /* MethodNotFound */, null, \"Method not specified\");\n return res;\n }\n if (typeof call.method !== \"string\") {\n res.error = common_1.createError(-32600 /* InvalidRequest */, null, \"Invalid type of method name\");\n return res;\n }\n if (\"params\" in call && (typeof call.params !== \"object\" || call.params === null)) {\n res.error = common_1.createError(-32600 /* InvalidRequest */);\n return res;\n }\n if (this.methods.has(call.method) === false) {\n res.error = common_1.createError(-32601 /* MethodNotFound */);\n return res;\n }\n try {\n res.result = await this.methods.get(call.method)(socket, call.params) || null;\n if (reqId === undefined) {\n return;\n }\n return res;\n }\n catch (e) {\n if (reqId === undefined) {\n return;\n }\n if (e instanceof Error) {\n res.error = common_1.createError(-32000 /* ServerError */, e.name, e.message);\n }\n else {\n res.error = e;\n }\n return res;\n }\n }\n}\nexports.default = MessageHandler;\n//# sourceMappingURL=MessageHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigDefaults = void 0;\nconst WebSocket = require(\"isomorphic-ws\");\nconst Backoff = require(\"backo2\");\nconst EventEmitter = require(\"eventemitter3\");\nconst common_1 = require(\"./common\");\nconst MessageHandler_1 = require(\"./MessageHandler\");\nexports.ConfigDefaults = Object.freeze({\n reconnection: true,\n reconnectionAttempts: Infinity,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 5000,\n reconnectionJitter: 0.5,\n methodCallTimeout: 20000,\n autoConnect: true,\n bufferSendingMessages: true,\n query: {},\n protocols: \"\"\n});\n/**\n * JSON-RPC 2.0 Client\n */\nclass Client extends EventEmitter {\n /**\n * Create an instance\n * @param uri The URI to connect.\n * @param options Options\n */\n constructor(uri, options = {}) {\n super();\n this.uri = uri;\n this.sendingMessageBuffer = [];\n this._reconnecting = false;\n this._responseHandlers = new Map();\n this._skipReconnection = false;\n this._currentRequestId = 0;\n this.config = {\n ...exports.ConfigDefaults,\n ...options\n };\n this._backoff = new Backoff({\n min: this.config.reconnectionDelay,\n max: this.config.reconnectionDelayMax,\n jitter: this.config.reconnectionJitter\n });\n this._messageHandler = new MessageHandler_1.default(this.config);\n this._messageHandler.on(\"method_response\", (socket, response) => this._handleMethodResponse(response));\n this._messageHandler.on(\"error_response\", (socket, response) => this.emit(\"error_response\", response));\n this._messageHandler.on(\"notification_error\", (socket, error) => this.emit(\"notification_error\", error));\n if (this.config.autoConnect) {\n this.connect().catch(() => void 0);\n }\n }\n get methods() { return this._messageHandler.methods; }\n /**\n * Connect to the server\n */\n async connect() {\n if (this._ws) {\n return;\n }\n this.emit(\"connecting\");\n const ws = this._ws = new WebSocket(this.uri, this.config.protocols, this.config);\n if (ws.addEventListener) {\n ws.addEventListener(\"error\", error => this.emit(\"error\", error));\n ws.addEventListener(\"close\", ({ code, reason }) => {\n this.emit(\"close\");\n this.emit(\"disconnect\", code, reason);\n this._ws = null;\n });\n ws.addEventListener(\"message\", ({ data }) => this._messageHandler.handleMessage(this, data).catch(e => this.emit(\"error\", e)));\n }\n else {\n ws.on(\"error\", error => this.emit(\"error\", error));\n ws.on(\"close\", (code, reason) => {\n this.emit(\"close\");\n this.emit(\"disconnect\", code, reason);\n this._ws = null;\n });\n ws.on(\"message\", data => this._messageHandler.handleMessage(this, data).catch(e => this.emit(\"error\", e)));\n }\n if (this.config.reconnection) {\n this._skipReconnection = false;\n if (ws.addEventListener) {\n ws.addEventListener(\"close\", () => this.reconnect());\n }\n else {\n ws.on(\"close\", () => this.reconnect());\n }\n }\n await new Promise((resolve, reject) => {\n if (ws.addEventListener) {\n ws.addEventListener(\"open\", () => {\n ws.removeEventListener(\"error\", reject);\n resolve();\n }, { once: true });\n ws.addEventListener(\"error\", reject, { once: true });\n }\n else {\n ws.once(\"open\", () => {\n ws.off(\"error\", reject);\n resolve();\n });\n ws.once(\"error\", reject);\n }\n });\n await this._sendBufferedMessages();\n this.emit(\"connected\");\n }\n /**\n * Disconnect the connection if it exists\n */\n async disconnect() {\n this._skipReconnection = true;\n this._reconnecting = false;\n this._backoff.reset();\n // clear method call timeout.\n for (const [timer] of this._responseHandlers) {\n clearTimeout(timer);\n }\n this._responseHandlers.clear();\n // clear reconnection timer.\n if (this._reconnectionSleepTimer) {\n clearTimeout(this._reconnectionSleepTimer);\n this._reconnectionSleepTimer = null;\n }\n const ws = this._ws;\n if (!ws) {\n return Promise.resolve();\n }\n let promise;\n if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) {\n promise = new Promise(resolve => {\n if (ws.addEventListener) {\n ws.addEventListener(\"close\", () => resolve(), { once: true });\n }\n else {\n ws.once(\"close\", () => resolve());\n }\n });\n ws.close();\n }\n else {\n promise = Promise.resolve();\n }\n this._ws = null;\n await promise;\n if (ws.removeAllListeners) {\n // for node\n ws.removeAllListeners();\n }\n else {\n // for browser\n // not necessary at this time.\n }\n }\n send(data, binary = false) {\n if (binary && typeof data === \"string\") {\n data = Buffer.from(data).buffer;\n }\n if (!this.isConnected()) {\n this._bufferSendingMessage(data);\n return;\n }\n this._ws.send(data, e => e ? this._bufferSendingMessage(data) : null);\n }\n clearSendingMessageBuffer() {\n this.sendingMessageBuffer.length = 0;\n }\n notify(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method,\n params\n };\n this.send(JSON.stringify(data));\n }\n call(method, params = {}) {\n const id = this._currentRequestId++;\n const data = {\n jsonrpc: \"2.0\",\n method,\n params,\n id\n };\n this.send(JSON.stringify(data));\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this._responseHandlers.delete(id);\n reject(new Error(\"JSON-RPC: method call timeout\"));\n }, this.config.methodCallTimeout);\n this._responseHandlers.set(id, [timeout, resolve, reject]);\n });\n }\n isConnected() {\n return this._ws !== null && this._ws.readyState === WebSocket.OPEN;\n }\n async reconnect() {\n if (this._reconnecting || this._skipReconnection) {\n return;\n }\n const backoff = this._backoff;\n if (backoff.attempts > this.config.reconnectionAttempts) {\n this.emit(\"reconnect_failed\");\n this.disconnect();\n return;\n }\n const delay = backoff.duration();\n this._reconnecting = true;\n await new Promise(resolve => this._reconnectionSleepTimer = setTimeout(resolve, delay));\n this._reconnectionSleepTimer = null;\n if (this._skipReconnection) {\n return;\n }\n this.emit(\"reconnecting\", backoff.attempts);\n if (this._skipReconnection) {\n return;\n }\n try {\n await this.connect();\n }\n catch (err) {\n this._reconnecting = false;\n this.reconnect();\n this.emit(\"reconnect_error\", err);\n return;\n }\n const attempts = backoff.attempts;\n backoff.reset();\n this._reconnecting = false;\n this.emit(\"reconnected\", attempts);\n }\n _handleMethodResponse(response) {\n if (typeof response.id === \"string\") {\n this.emit(\"unkown_response\", response);\n return;\n }\n const handler = this._responseHandlers.get(response.id);\n if (!handler) {\n this.emit(\"unkown_response\", response);\n return;\n }\n this._responseHandlers.delete(response.id);\n const [timer, resolve, reject] = handler;\n clearTimeout(timer);\n if (common_1.isSuccessResponse(response)) {\n resolve(response.result);\n }\n else {\n reject(response.error);\n }\n }\n _bufferSendingMessage(data) {\n if (this.config.bufferSendingMessages) {\n this.sendingMessageBuffer.push(data);\n }\n else {\n throw new Error(\"Message is rejected: The socket is close without message buffering.\");\n }\n }\n async _sendBufferedMessages() {\n const buffer = this.sendingMessageBuffer;\n const ws = this._ws;\n for (let data = buffer.shift(); data; data = buffer.shift()) {\n try {\n await new Promise((resolve, reject) => ws.send(data, e => e ? reject(e) : resolve()));\n }\n catch (e) {\n buffer.unshift(data);\n this.emit(\"buffer_sending_error\", e);\n break;\n }\n }\n }\n}\nexports.default = Client;\n//# sourceMappingURL=client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createError = exports.errorCodeMap = exports.isSuccessResponse = exports.isResponse = void 0;\n/**\n * Check type of call is an Reponse or not\n * @param call an Call object which will be checked.\n */\nfunction isResponse(call) {\n return \"id\" in call && (\"result\" in call || \"error\" in call);\n}\nexports.isResponse = isResponse;\n/**\n * Check type of response is SuccessResponse or not\n *\n * @param response an Response object which will be checked.\n */\nfunction isSuccessResponse(response) {\n return \"result\" in response && response.id !== null;\n}\nexports.isSuccessResponse = isSuccessResponse;\n/**\n * JSON-RPC 2.0 Error Codes\n */\nexports.errorCodeMap = new Map([\n [-32700, \"Parse error\"],\n [-32600, \"Invalid Request\"],\n [-32601, \"Method not found\"],\n [-32602, \"Invalid params\"],\n [-32603, \"Internal error\"],\n [-32000, \"Server error\"]\n]);\n/**\n * Creates a JSON-RPC 2.0 compliant Error Object\n * @param code A Number that indicates the error type that occurred. (Integer)\n * @param data A Primitive or Structured value that contains additional information about the error.\n */\nfunction createError(code, message, data) {\n const error = {\n code: code,\n message: message || exports.errorCodeMap.get(code) || \"Server error\"\n };\n if (data !== undefined) {\n error.data = data;\n }\n return error;\n}\nexports.createError = createError;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = exports.Server = void 0;\nvar server_1 = require(\"./server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_1.default; } });\nvar client_1 = require(\"./client\");\nObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst EventEmitter = require(\"eventemitter3\");\nconst ws_1 = require(\"ws\");\nconst uuid_1 = require(\"uuid\");\nconst MessageHandler_1 = require(\"./MessageHandler\");\nconst MapLike_1 = require(\"./MapLike\");\n/**\n * JSON-RPC 2.0 WebSocket Server\n */\nclass Server extends EventEmitter {\n /**\n * Create a instance.\n * @param options\n * @param callback callback A listener for the `listening` event (ws).\n */\n constructor(options, callback) {\n super();\n this.sockets = new Map();\n this._lastPingAt = 0;\n this.options = Object.assign({\n pingTimeout: 5000,\n pingInterval: 25000,\n open: true,\n jsonrpcVersionCheck: 0 /* STRICT */,\n uws: false\n }, options);\n this._messageHandler = new MessageHandler_1.default(this.options);\n this._messageHandler.on(\"error_response\", (socket, response) => {\n this.emit(\"error_response\", socket, response);\n socket.emit(\"error_response\", response);\n });\n this._messageHandler.on(\"notification_error\", (socket, error) => {\n this.emit(\"notification_error\", socket, error);\n socket.emit(\"notification_error\", error);\n });\n if (this.options.open) {\n this.open(callback);\n }\n }\n get methods() { return this._messageHandler.methods; }\n /**\n * Create\n * @param callback callback A listener for the `listening` event (ws).\n */\n open(callback) {\n const self = this;\n if (this.wss) {\n throw new Error(\"`ws` has already been created\");\n }\n if (this.options.wsEngine) {\n this.wss = new this.options.wsEngine(this.options.wss, callback);\n }\n else {\n this.wss = new ws_1.Server(this.options.wss, callback);\n }\n this.wss.once(\"listening\", function _onListeningWSS() {\n self.emit(\"listening\");\n });\n this.wss.on(\"connection\", function _onConnectionWSS(ws, req) {\n let socket = new Socket(ws);\n self.sockets.set(socket.id, socket);\n ws.once(\"close\", function _onCloseWS() {\n self.sockets.delete(socket.id);\n socket.emit(\"close\");\n socket.removeAllListeners();\n socket.ws = null;\n socket.rooms.clear();\n socket.data.clear();\n socket = null;\n ws.removeAllListeners();\n ws = null;\n });\n ws.on(\"message\", function _onMessageWS(data) {\n self._messageHandler.handleMessage(socket, data)\n .catch(function _onErrorHandleMessage(e) {\n self.emit(\"error\", e);\n });\n });\n ws.on(\"pong\", function _onPongWS() {\n socket._pongAt = Date.now();\n });\n self.emit(\"connection\", socket, req);\n });\n this.wss.on(\"error\", function _onErrorWSS(e) {\n self.emit(\"error\", e);\n });\n this._pingTimer = setInterval(this._ping.bind(this), this.options.pingInterval);\n return this;\n }\n /**\n * Closes the server and terminates all sockets.\n */\n async close() {\n clearInterval(this._pingTimer);\n for (const socket of this.sockets.values()) {\n socket.terminate();\n }\n await new Promise((resolve, reject) => {\n this.wss.close(err => {\n if (err) {\n reject(err);\n }\n else {\n resolve();\n }\n });\n });\n this.wss.removeAllListeners();\n delete this.wss;\n this.sockets.clear();\n }\n /**\n * Broadcasts a notification.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n broadcast(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n const json = JSON.stringify(data);\n for (const socket of this.sockets.values()) {\n socket.send(json);\n }\n }\n /**\n * Broadcasts a notification to the room.\n * @param room The name of the room.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n notifyTo(room, method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n const json = JSON.stringify(data);\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n socket.send(json);\n }\n }\n }\n /**\n * Broadcasts a (raw) message to the room.\n * @param room The name of the room.\n * @param data (raw) message.\n */\n sendTo(room, data) {\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n socket.send(data);\n }\n }\n }\n /**\n * Get all sockets in the room.\n * @param room The name of the room.\n */\n in(room) {\n const sockets = new Map();\n for (const socket of this.sockets.values()) {\n if (socket.rooms.has(room) === true) {\n sockets.set(socket.id, socket);\n }\n }\n return sockets;\n }\n /**\n * Server is open or not\n */\n isOpen() {\n return this.wss !== undefined;\n }\n /**\n * Ping to all sockets.\n */\n _ping() {\n const deadline = this._lastPingAt + this.options.pingTimeout;\n for (const socket of this.sockets.values()) {\n if (socket._pongAt === -1 || socket._pongAt > deadline) {\n socket.terminate();\n continue;\n }\n socket._pongAt = -1;\n if (socket.isOpen()) {\n socket.ws.ping();\n }\n }\n this._lastPingAt = Date.now();\n }\n}\nexports.default = Server;\nclass Socket extends EventEmitter {\n constructor(ws) {\n super();\n this.ws = ws;\n this.id = uuid_1.v4();\n this.rooms = new Set();\n /** custom data store */\n this.data = new MapLike_1.default();\n /** (internal using for heartbeat) */\n this._pongAt = 0;\n }\n /**\n * Sends a notification to the socket.\n * @param method The name of the method to be invoked.\n * @param params The parameters of the method.\n */\n notify(method, params) {\n const data = {\n jsonrpc: \"2.0\",\n method: method,\n params: params\n };\n this.send(JSON.stringify(data));\n }\n /**\n * Sends a (raw) message to the socket.\n * @param data (raw) message.\n * @param binary binary flag.\n */\n send(data, binary = false) {\n if (this.isOpen()) {\n this.ws.send(data, { binary });\n }\n }\n /**\n * Joins a room. You can join multiple rooms.\n * @param room The name of the room that we want to join.\n */\n joinTo(room) {\n if (this.rooms.has(room) === false) {\n this.rooms.add(room);\n return true;\n }\n return false;\n }\n /**\n * Leaves a room.\n * @param room The name of the room to leave.\n */\n leaveFrom(room) {\n if (this.rooms.has(room) === true) {\n this.rooms.delete(room);\n return true;\n }\n return false;\n }\n /**\n * Leaves all the rooms that we've joined.\n */\n leaveFromAll() {\n this.rooms.clear();\n }\n /**\n * Initiate a closing handshake.\n * @param code A numeric value indicating the status code explaining why the connection is being closed.\n * @param reason A human-readable string explaining why the connection is closing.\n */\n close(code, reason) {\n this.ws.close(code, reason);\n }\n /**\n * Forcibly close the connection.\n */\n terminate() {\n this.ws.terminate();\n }\n /**\n * Get the connection is open or not\n */\n isOpen() {\n return this.ws !== undefined && this.ws.readyState === ws_1.OPEN;\n }\n}\nexports.Socket = Socket;\n//# sourceMappingURL=server.js.map","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./HeartView.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./Logs.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!./index.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Spinner,\r\n SpinnerSize,\r\n DetailsList,\r\n Selection,\r\n SelectionMode,\r\n IColumn,\r\n Dropdown,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n TextField,\r\n IconButton,\r\n ActionButton\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigChannels, ChannelType } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/channels\";\r\n\r\ninterface Item {\r\n key: string;\r\n enable: JSX.Element;\r\n name: JSX.Element;\r\n type: JSX.Element;\r\n channel: JSX.Element;\r\n options: JSX.Element;\r\n controls: JSX.Element;\r\n}\r\n\r\nconst columns: IColumn[] = [\r\n {\r\n key: \"col-enable\",\r\n name: \"Enable\",\r\n fieldName: \"enable\",\r\n minWidth: 44,\r\n maxWidth: 44\r\n },\r\n {\r\n key: \"col-name\",\r\n name: \"Name\",\r\n fieldName: \"name\",\r\n minWidth: 100,\r\n maxWidth: 100\r\n },\r\n {\r\n key: \"col-type\",\r\n name: \"Type\",\r\n fieldName: \"type\",\r\n minWidth: 65,\r\n maxWidth: 65\r\n },\r\n {\r\n key: \"col-channel\",\r\n name: \"Channel\",\r\n fieldName: \"channel\",\r\n minWidth: 70,\r\n maxWidth: 70\r\n },\r\n {\r\n key: \"col-options\",\r\n name: \"Options\",\r\n fieldName: \"options\",\r\n minWidth: 200,\r\n // maxWidth: 400\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 120,\r\n maxWidth: 120\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst typesIndex = [\"GR\", \"BS\", \"CS\", \"SKY\"];\r\nfunction sortTypes(types: ChannelType[]): ChannelType[] {\r\n return types.sort((a, b) => typesIndex.indexOf(a) - typesIndex.indexOf(b));\r\n}\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigChannels>(null);\r\n const [editing, setEditing] = useState<ConfigChannels>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n const listContainerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"ChannelsConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing(JSON.parse(JSON.stringify(res)));\r\n setCurrent(JSON.parse(JSON.stringify(res)));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const items = [];\r\n editing?.forEach((ch, i) => {\r\n const item: Item = {\r\n key: `item${i}`,\r\n enable: (\r\n <Toggle\r\n checked={!ch.isDisabled}\r\n onChange={(ev, checked) => {\r\n ch.isDisabled = !checked;\r\n setEditing([...editing]);\r\n }}\r\n style={{ marginTop: 6 }}\r\n />\r\n ),\r\n name: (\r\n <TextField\r\n value={ch.name}\r\n onChange={(ev, newValue) => {\r\n ch.name = newValue;\r\n setEditing([...editing]);\r\n }}\r\n onBlur={() => {\r\n if (ch.name === \"\") {\r\n ch.name = `ch${i}`;\r\n setEditing([...editing]);\r\n }\r\n }}\r\n />\r\n ),\r\n type: (\r\n <Dropdown\r\n options={[\r\n { key: \"GR\", text: \"GR\" },\r\n { key: \"BS\", text: \"BS\" },\r\n { key: \"CS\", text: \"CS\" },\r\n { key: \"SKY\", text: \"SKY\" }\r\n ]}\r\n selectedKey={ch.type}\r\n onChange={(ev, option) => {\r\n ch.type = option.key as any;\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n channel: (\r\n <TextField\r\n value={ch.channel}\r\n onChange={(ev, newValue) => {\r\n ch.channel = newValue;\r\n setEditing([...editing]);\r\n }}\r\n onBlur={() => {\r\n if (ch.channel === \"\") {\r\n ch.channel = \"0\";\r\n setEditing([...editing]);\r\n }\r\n }}\r\n />\r\n ),\r\n options: (\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }}>\r\n <TextField\r\n style={{ width: 55 }}\r\n label=\"Service ID:\"\r\n value={`${ch.serviceId || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.serviceId;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const sid = parseInt(newValue, 10);\r\n if (sid <= 65535 && sid > 0) {\r\n ch.serviceId = sid;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 80 }}\r\n label=\"Satellite:\"\r\n value={ch.satellite || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.satellite;\r\n } else {\r\n ch.satellite = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 40 }}\r\n label=\"Space:\"\r\n placeholder=\"0\"\r\n value={`${ch.space || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.space;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const space = parseInt(newValue, 10);\r\n if (space <= 65535 && space >= 0) {\r\n ch.space = space;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 60 }}\r\n label=\"Freq:\"\r\n value={`${ch.freq || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.freq;\r\n } else if (/^[0-9\\.]+$/.test(newValue)) {\r\n const freq = parseFloat(newValue);\r\n ch.freq = freq;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <Dropdown\r\n label=\"Polarity:\"\r\n options={[\r\n { key: \"-\", text: \"-\" },\r\n { key: \"H\", text: \"H\" },\r\n { key: \"V\", text: \"V\" }\r\n ]}\r\n selectedKey={ch.polarity || \"-\"}\r\n onChange={(ev, option) => {\r\n if (option.key === \"-\") {\r\n delete ch.polarity;\r\n } else {\r\n ch.polarity = option.key as any;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 40 }}\r\n label=\"TsmfRelTs:\"\r\n value={`${ch.tsmfRelTs || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete ch.tsmfRelTs;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const tsmfRelTs = parseInt(newValue, 10);\r\n ch.tsmfRelTs = tsmfRelTs;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </Stack>\r\n </Stack>\r\n ),\r\n controls: (\r\n <Stack horizontal horizontalAlign=\"end\">\r\n <IconButton\r\n disabled={i === 0}\r\n style={{ opacity: i === 0 ? 0 : 1 }}\r\n title=\"Up\"\r\n iconProps={{ iconName: \"Up\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i - 1, 0, ch);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n disabled={i === editing.length - 1}\r\n style={{ opacity: i === editing.length - 1 ? 0 : 1 }}\r\n title=\"Down\"\r\n iconProps={{ iconName: \"Down\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i + 1, 0, ch);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"remove\",\r\n text: \"Remove Channel\",\r\n iconProps: { iconName: \"Delete\" },\r\n onClick: () => {\r\n editing.splice(i, 1);\r\n setEditing([...editing]);\r\n }\r\n }] }}\r\n />\r\n </Stack>\r\n )\r\n };\r\n //\r\n items.push(item);\r\n });\r\n\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n if (listContainerRef.current) {\r\n listContainerRef.current.style.maxHeight = \"calc(100vh - 410px)\";\r\n }\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack.Item>\r\n <ActionButton\r\n text=\"Add Channel\"\r\n iconProps={{ iconName: \"Add\" }}\r\n onClick={() => {\r\n const i = editing.length;\r\n editing.push({\r\n name: `ch${i}`,\r\n type: \"GR\",\r\n channel: \"0\",\r\n isDisabled: true\r\n });\r\n setEditing([...editing]);\r\n setTimeout(() => {\r\n listContainerRef.current.scrollTop = listContainerRef.current.scrollHeight;\r\n }, 0);\r\n }}\r\n />\r\n </Stack.Item>\r\n\r\n <div ref={listContainerRef} style={{ overflowY: \"scroll\" }}>\r\n <DetailsList\r\n setKey=\"items\"\r\n items={items}\r\n columns={columns}\r\n selection={dummySelection}\r\n selectionMode={SelectionMode.none}\r\n />\r\n </div>\r\n\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing(JSON.parse(JSON.stringify(current)))} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n console.log(\"ChannelsConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Stack,\r\n Nav\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport ServerConfigurator from \"./ServerConfigurator\";\r\nimport TunersConfigurator from \"./TunersConfigurator\";\r\nimport ChannelsConfigurator from \"./ChannelsConfigurator\";\r\n\r\nconst ConfigView: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [key, setKey] = useState<string>(\"server\");\r\n\r\n return (\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ margin: \"8px 0\" }}>\r\n <Nav\r\n groups={[\r\n {\r\n links: [\r\n {\r\n key: \"server\",\r\n name: \"Server\",\r\n url: null,\r\n onClick: () => setKey(\"server\")\r\n },\r\n {\r\n key: \"tuners\",\r\n name: \"Tuners\",\r\n url: null,\r\n onClick: () => setKey(\"tuners\")\r\n },\r\n {\r\n key: \"channels\",\r\n name: \"Channels\",\r\n url: null,\r\n onClick: () => setKey(\"channels\")\r\n }\r\n ]\r\n }\r\n ]}\r\n selectedKey={key}\r\n styles={{ root: { width: 150 } }}\r\n />\r\n <Stack.Item grow>\r\n <div style={{ margin: \"8px 0 8px 24px\" }}>\r\n {key === \"server\" && <ServerConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n {key === \"tuners\" && <TunersConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n {key === \"channels\" && <ChannelsConfigurator uiState={uiState} uiStateEvents={uiStateEvents} />}\r\n </div>\r\n </Stack.Item>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default ConfigView;\r\n","/*\r\n Copyright 2021 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState } from \"react\";\r\nimport {\r\n getTheme,\r\n FontWeights,\r\n mergeStyleSets,\r\n IButtonStyles,\r\n IconButton,\r\n IStackProps,\r\n ActionButton,\r\n Modal,\r\n Stack,\r\n Separator,\r\n Label,\r\n TextField,\r\n TooltipHost,\r\n Icon\r\n} from \"@fluentui/react\";\r\n\r\nfunction selectHandler(e: React.MouseEvent<HTMLInputElement>) {\r\n e.currentTarget.select();\r\n}\r\n\r\nconst ConnectionGuide: React.FC = () => {\r\n\r\n const [isModalOpen, setModalOpen] = useState<boolean>(false);\r\n\r\n const theme = getTheme();\r\n const contentStyles = mergeStyleSets({\r\n container: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n alignItems: \"stretch\",\r\n },\r\n header: [\r\n theme.fonts.xLarge,\r\n {\r\n flex: \"1 1 auto\",\r\n borderTop: `4px solid ${theme.palette.themePrimary}`,\r\n color: theme.palette.themePrimary,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontWeight: FontWeights.semibold,\r\n padding: \"12px 12px 14px 24px\",\r\n },\r\n ],\r\n body: {\r\n flex: \"4 4 auto\",\r\n padding: \"0 24px 24px 24px\",\r\n overflowY: \"hidden\",\r\n width: \"75vw\",\r\n minWidth: \"400px\",\r\n maxWidth: \"500px\",\r\n selectors: {\r\n p: { margin: \"14px 0\" },\r\n \"p:first-child\": { marginTop: 0 },\r\n \"p:last-child\": { marginBottom: 0 },\r\n },\r\n },\r\n });\r\n const stackProps: Partial<IStackProps> = {\r\n tokens: { childrenGap: 8 },\r\n styles: { root: { marginBottom: 20 } },\r\n };\r\n const iconButtonStyles: Partial<IButtonStyles> = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: \"auto\",\r\n marginTop: \"4px\",\r\n marginRight: \"2px\",\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n <Modal\r\n titleAriaId=\"connection-guide-title\"\r\n isOpen={isModalOpen}\r\n onDismiss={() => setModalOpen(false)}\r\n isBlocking={false}\r\n containerClassName={contentStyles.container}\r\n >\r\n <div className={contentStyles.header}>\r\n <span id=\"connection-guide-title\">Connection Guide</span>\r\n <IconButton\r\n styles={iconButtonStyles}\r\n iconProps={{ iconName: \"Cancel\" }}\r\n ariaLabel=\"Close\"\r\n onClick={() => setModalOpen(false)}\r\n />\r\n </div>\r\n <div className={contentStyles.body}>\r\n <Stack {...stackProps}>\r\n <TextField readOnly\r\n label=\"Mirakurun Path\"\r\n value={`${location.protocol}//${location.host}/`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"Open API 2.0 / Swagger 2.0 Compliant Definition\"\r\n value={`${location.protocol}//${location.host}/api/docs`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <Separator>IPTV</Separator>\r\n <TextField readOnly\r\n label=\"M3U Playlist\"\r\n value={`${location.protocol}//${location.host}/api/iptv/playlist`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"XMLTV\"\r\n value={`${location.protocol}//${location.host}/api/iptv/xmltv`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n <TextField readOnly\r\n label=\"HDHomeRun Device Address\"\r\n value={`${location.protocol}//${location.host}/api/iptv`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n onRenderLabel={(props) => (\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>{props.label}</Label>\r\n <TooltipHost content=\"Tested on Plex Media Server\">\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n )}\r\n />\r\n <Separator>Misc</Separator>\r\n <TextField readOnly\r\n label=\"BonDriver_Mirakurun.ini\"\r\n multiline rows={3}\r\n value={`[GLOBAL]\\nSERVER_HOST=\"${location.hostname}\"\\nSERVER_PORT=\"${location.port}\"`}\r\n onMouseOver={selectHandler} onClick={selectHandler}\r\n />\r\n </Stack>\r\n </div>\r\n </Modal>\r\n <ActionButton\r\n iconProps={{ iconName: \"Info\" }}\r\n text=\"Connection Guide\"\r\n onClick={() => setModalOpen(true)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ConnectionGuide;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams } from \"../../../lib/Mirakurun/rpc.d\";\r\nimport { Event } from \"../../../api\";\r\nimport \"./Logs.css\";\r\n\r\nlet _itemId = 0;\r\n\r\nlet eventsCache: JSX.Element[] = [];\r\n\r\nconst EventsView: React.FC<{ uiStateEvents: EventEmitter, rpc: RPCClient }> = ({ uiStateEvents, rpc }) => {\r\n\r\n const [eventList, setEventList] = useState<JSX.Element[]>([]);\r\n const latestRef = useRef<HTMLDivElement>(null);\r\n\r\n const onEvents = (events: Event[], unshift: boolean) => {\r\n const newList: JSX.Element[] = [];\r\n for (const event of events) {\r\n newList.push(\r\n <div key={`events-list-item${_itemId}`} className={`type-${event.type}`}>\r\n {`${event.resource} (${event.type}) ${JSON.stringify(event.data)}`}\r\n </div>\r\n );\r\n ++_itemId;\r\n }\r\n if (unshift === true) {\r\n eventsCache = [...newList, ...eventsCache].slice(-200);\r\n } else {\r\n eventsCache = [...eventsCache, ...newList].slice(-200);\r\n }\r\n setEventList(eventsCache);\r\n };\r\n\r\n useEffect(() => {\r\n\r\n const join = () => {\r\n rpc.call(\"join\", { rooms: [\"events:program\"] } as JoinParams);\r\n };\r\n rpc.on(\"connected\", join);\r\n join();\r\n\r\n (async () => {\r\n const events: Event[] = await (await fetch(\"/api/events\")).json();\r\n onEvents(events, true);\r\n })();\r\n\r\n uiStateEvents.on(\"data:events\", onEvents);\r\n\r\n return () => {\r\n rpc.off(\"connected\", join);\r\n rpc.call(\"leave\", { rooms: [\"events:program\"] } as JoinParams);\r\n uiStateEvents.off(\"data:events\", onEvents);\r\n eventsCache = [];\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n latestRef.current.scrollIntoView();\r\n });\r\n\r\n return (\r\n <div className=\"logs\" style={{ margin: \"8px 0\" }}>\r\n {eventList}\r\n <div className=\"latest\" ref={latestRef}></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EventsView;\r\n","/*\r\n Copyright 2021 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Text,\r\n Link,\r\n PrimaryButton\r\n} from \"@fluentui/react\";\r\nimport \"./HeartView.css\";\r\n\r\nconst HeartView: React.FC = () => {\r\n\r\n const [consented, setConsented] = useState<boolean>(false);\r\n\r\n return (\r\n <Stack tokens={{ childrenGap: \"16 0\" }} style={{ margin: \"16px 0 8px\" }} className=\"heart-view\">\r\n {consented === false && <>\r\n <Separator alignContent=\"start\">Confirmation</Separator>\r\n\r\n <div className=\"consent\">\r\n <b>We sincerely thank you for your continued support.</b><br />\r\n <br />\r\n This page is attempting to retrieve images from your browser\r\n by going directly to\r\n &nbsp;<Link href=\"https://opencollective.com/\" target=\"_blank\">opencollective.com</Link>&nbsp;\r\n in order to display a list of contributors.<br />\r\n <br />\r\n To view this page, click the \"Continue\" button.\r\n </div>\r\n\r\n <div className=\"consent\">\r\n <PrimaryButton\r\n text=\"Continue\"\r\n onClick={() => {\r\n setConsented(true);\r\n }}\r\n />\r\n </div>\r\n </>}\r\n\r\n {consented === true && <>\r\n <Stack>\r\n <Separator alignContent=\"start\">Contributors</Separator>\r\n <Text>\r\n This project exists thanks to all the people who contribute.\r\n </Text>\r\n <Text>\r\n <Link href=\"https://github.com/Chinachu/Mirakurun/graphs/contributors\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/contributors.svg?width=890&button=false\" /></Link>\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Separator alignContent=\"start\">Backers</Separator>\r\n <Text>\r\n Thank you to all our backers! 🙏\r\n [<Link href=\"https://opencollective.com/Mirakurun#backer\" target=\"_blank\">Become a backer</Link>]\r\n </Text>\r\n <Text>\r\n <Link href=\"https://opencollective.com/Mirakurun#backers\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/backers.svg?width=890\" /></Link>\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Separator alignContent=\"start\">Sponsors</Separator>\r\n <Text>\r\n Support this project by becoming a sponsor. Your logo will show up here with a link to your website.\r\n [<Link href=\"https://opencollective.com/Mirakurun#sponsor\" target=\"_blank\">Become a sponsor</Link>]\r\n </Text>\r\n <Text>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/0/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/1/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/2/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/3/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/4/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/5/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/6/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/7/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/8/avatar.svg\" /></Link>\r\n <Link href=\"https://opencollective.com/Mirakurun/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/Mirakurun/sponsor/9/avatar.svg\" /></Link>\r\n </Text>\r\n </Stack>\r\n </>}\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default HeartView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams } from \"../../../lib/Mirakurun/rpc.d\";\r\nimport \"./Logs.css\";\r\n\r\nlet _itemId = 0;\r\n\r\nlet logListCache: JSX.Element[] = [];\r\n\r\nconst LogsView: React.FC<{ uiStateEvents: EventEmitter, rpc: RPCClient }> = ({ uiStateEvents, rpc }) => {\r\n\r\n const [logList, setLogList] = useState<JSX.Element[]>([]);\r\n const latestRef = useRef<HTMLDivElement>(null);\r\n\r\n const onLogs = (lines: string[], unshift: boolean) => {\r\n const newList: JSX.Element[] = [];\r\n for (const line of lines) {\r\n const parsed = line.match(/^[0-9.T:+-]+ ([a-z]+): /);\r\n const level = parsed ? parsed[1] : \"other\";\r\n newList.push(\r\n <div key={`logs-list-item${_itemId}`} className={`level-${level}`}>\r\n {line}\r\n </div>\r\n );\r\n ++_itemId;\r\n }\r\n if (unshift === true) {\r\n logListCache = [...newList, ...logListCache].slice(-500);\r\n } else {\r\n logListCache = [...logListCache, ...newList].slice(-500);\r\n }\r\n setLogList(logListCache);\r\n };\r\n\r\n useEffect(() => {\r\n\r\n const join = () => {\r\n rpc.call(\"join\", { rooms: [\"logs\"] } as JoinParams);\r\n };\r\n rpc.on(\"connected\", join);\r\n join();\r\n\r\n (async () => {\r\n const lines: string = await (await fetch(\"/api/log\")).text();\r\n onLogs(lines.trim().split(\"\\n\"), true);\r\n })();\r\n\r\n uiStateEvents.on(\"data:logs\", onLogs);\r\n\r\n return () => {\r\n rpc.off(\"connected\", join);\r\n rpc.call(\"leave\", { rooms: [\"logs\"] } as JoinParams);\r\n uiStateEvents.off(\"data:logs\", onLogs);\r\n logListCache = [];\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n latestRef.current.scrollIntoView();\r\n });\r\n\r\n return (\r\n <div className=\"logs\" style={{ margin: \"8px 0\" }}>\r\n {logList}\r\n <div className=\"latest\" ref={latestRef}></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LogsView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogFooter,\r\n DialogType,\r\n PrimaryButton,\r\n DefaultButton,\r\n ActionButton,\r\n Coachmark,\r\n TeachingBubbleContent,\r\n DirectionalHint\r\n} from \"@fluentui/react\";\r\n\r\nconst Restart: React.FC<{ uiStateEvents: EventEmitter }> = ({ uiStateEvents }) => {\r\n\r\n const [hideDialog, setHideDialog] = useState<boolean>(true);\r\n const [restartRequired, setRestartRequired] = useState<boolean>(false);\r\n const targetButton = useRef<HTMLDivElement>();\r\n\r\n useEffect(() => {\r\n const onRestartRequired = () => {\r\n setRestartRequired(true);\r\n };\r\n uiStateEvents.on(\"notify:restart-required\", onRestartRequired);\r\n return () => {\r\n uiStateEvents.off(\"notify:restart-required\", onRestartRequired);\r\n };\r\n }, []);\r\n\r\n return (\r\n <>\r\n <Dialog\r\n hidden={hideDialog}\r\n onDismiss={() => setHideDialog(true)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Restart Mirakurun\",\r\n subText: \"Do you want to restart Mirakurun?\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Restart\"\r\n onClick={() => {\r\n (async () => {\r\n await fetch(`/api/restart`, { method: \"PUT\" });\r\n })();\r\n setHideDialog(true);\r\n setRestartRequired(false);\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setHideDialog(true)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n {restartRequired && (\r\n <Coachmark\r\n target={targetButton.current}\r\n onDismiss={() => setRestartRequired(false)}\r\n positioningContainerProps={{\r\n directionalHint: DirectionalHint.leftCenter,\r\n doNotLayer: false,\r\n }}\r\n >\r\n <TeachingBubbleContent\r\n hasCloseButton\r\n onDismiss={() => setRestartRequired(false)}\r\n >\r\n Restart is required to apply configuration.\r\n </TeachingBubbleContent>\r\n </Coachmark>\r\n )}\r\n <div ref={targetButton}>\r\n <ActionButton\r\n iconProps={{ iconName: \"Sync\" }}\r\n text=\"Restart\"\r\n onClick={() => setHideDialog(false)}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Restart;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Spinner,\r\n SpinnerSize,\r\n Dropdown,\r\n TooltipHost,\r\n Icon,\r\n Label,\r\n TextField,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigServer } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/server\";\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigServer>(null);\r\n const [editing, setEditing] = useState<ConfigServer>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"ServerConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing({ ...res });\r\n setCurrent({ ...res });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const docker = uiState.status.process.env.DOCKER === \"YES\";\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Dropdown\r\n label=\"LogLevel\"\r\n styles={{ dropdown: { display: \"inline-block\" } }}\r\n disabled={docker && typeof uiState.status.process.env.LOG_LEVEL === \"string\"}\r\n onRenderLabel={(props) => (\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>{props.label}</Label>\r\n <TooltipHost content=\"If running in Docker, Env var `LOG_LEVEL` is preferred.\">\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n )}\r\n options={[\r\n { key: -1, text: \"FATAL (-1)\" },\r\n { key: 0, text: \"ERROR (0)\" },\r\n { key: 1, text: \"WARN (1)\" },\r\n { key: 2, text: \"INFO (2)\" }, // default\r\n { key: 3, text: \"DEBUG (3)\" },\r\n ]}\r\n selectedKey={editing?.logLevel === undefined ? 2 : editing?.logLevel}\r\n onChange={(ev, option: any) => {\r\n setEditing({ ...editing, logLevel: option.key });\r\n }}\r\n />\r\n <TextField\r\n styles={{ fieldGroup: { \"max-width\": 200 } }}\r\n label=\"Hostname\"\r\n value={editing.hostname}\r\n onChange={(ev, newValue) => {\r\n setEditing({ ...editing, hostname: newValue });\r\n }}\r\n />\r\n <Toggle\r\n label=\"IPv6\"\r\n disabled={docker}\r\n checked={(docker === false && (editing.disableIPv6 === undefined || editing.disableIPv6 === false))}\r\n onText=\"Enable\"\r\n offText=\"Disable\"\r\n onChange={(ev, checked) => {\r\n setEditing({ ...editing, disableIPv6: checked === false });\r\n }}\r\n />\r\n <Separator alignContent=\"start\">Advanced</Separator>\r\n <TextField\r\n styles={{ fieldGroup: { \"max-width\": 200 } }}\r\n label=\"EPG Gathering Interval\"\r\n suffix=\"ms\"\r\n placeholder=\"3600000\"\r\n value={`${editing.epgGatheringInterval || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete editing.epgGatheringInterval;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const int = parseInt(newValue, 10);\r\n if (int <= 1000 * 60 * 60 * 24 * 3 && int > 0) {\r\n editing.epgGatheringInterval = int;\r\n }\r\n }\r\n setEditing({ ...editing });\r\n }}\r\n />\r\n <Toggle\r\n label={\r\n <Stack horizontal verticalAlign=\"end\">\r\n <Label>EIT Parsing</Label>\r\n <TooltipHost content={\r\n `If running in Docker, Env var \\`DISABLE_EIT_PARSING\\` is preferred.\r\n ⚠️ If disabled, won't work some clients!`\r\n }>\r\n <Icon\r\n iconName=\"Info\"\r\n style={{ marginLeft: 4, marginBottom: 6 }}\r\n />\r\n </TooltipHost>\r\n </Stack>\r\n }\r\n checked={(editing.disableEITParsing === undefined || editing.disableEITParsing === false)}\r\n onText=\"Enable\"\r\n offText=\"Disable ⚠️\"\r\n onChange={(ev, checked) => {\r\n setEditing({ ...editing, disableEITParsing: checked === false ? true : undefined })\r\n }}\r\n />\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing({ ...current })} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n for (const key of Object.keys(editing)) {\r\n if (editing[key] === null) {\r\n delete editing[key];\r\n }\r\n }\r\n console.log(\"ServerConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Stack,\r\n Separator,\r\n Icon,\r\n TooltipHost,\r\n ITooltipHostStyles,\r\n ITooltipProps\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport TunersManager from \"./TunersManager\";\r\n\r\ninterface StatusItem {\r\n label: string;\r\n text: string;\r\n}\r\n\r\nconst calloutProps = { gapSpace: 0 };\r\nconst tooltipHostStyles: Partial<ITooltipHostStyles> = {\r\n root: {\r\n display: \"inline-block\",\r\n }\r\n};\r\nconst tooltipProps: Partial<ITooltipProps> = {\r\n styles: {\r\n content: {\r\n whiteSpace: \"pre\"\r\n }\r\n }\r\n};\r\n\r\nconst StatusView: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [status, setStatus] = useState<UIState[\"status\"]>(uiState.status);\r\n const [services, setServices] = useState<UIState[\"services\"]>(uiState.services);\r\n const [tuners, setTuners] = useState<UIState[\"tuners\"]>(uiState.tuners);\r\n\r\n useEffect(() => {\r\n\r\n const onStatusUpdate = () => {\r\n setStatus({ ...uiState.status });\r\n };\r\n uiStateEvents.on(\"update:status\", onStatusUpdate);\r\n\r\n const onServicesUpdate = () => {\r\n setServices([ ...uiState.services ]);\r\n };\r\n uiStateEvents.on(\"update:services\", onServicesUpdate);\r\n\r\n const onTunersUpdate = () => {\r\n setTuners([ ...uiState.tuners ]);\r\n };\r\n uiStateEvents.on(\"update:tuners\", onTunersUpdate);\r\n\r\n return () => {\r\n uiStateEvents.off(\"update:status\", onStatusUpdate);\r\n uiStateEvents.off(\"update:services\", onServicesUpdate);\r\n uiStateEvents.off(\"update:tuners\", onTunersUpdate);\r\n };\r\n }, []);\r\n\r\n const statusItem: StatusItem[] = [];\r\n\r\n if (status) {\r\n const dockerStat = status.process?.env?.DOCKER === \"YES\" ? \"🐋\" : \"\";\r\n statusItem.push({ label: \"Platform\", text: `${status.process?.platform} (${status.process?.arch}) ${dockerStat}` });\r\n statusItem.push({ label: \"Node.js Version\", text: status.process?.versions?.node });\r\n statusItem.push({ label: \"Memory (RSS)\", text: `${Math.round(status.process?.memoryUsage?.rss / 1024 / 1024)} MB` });\r\n statusItem.push({ label: \"EPG Gathering Network IDs\", text: status.epg.gatheringNetworks.map(id => `0x${id.toString(16).toUpperCase()}`).join(\", \") });\r\n statusItem.push({ label: \"EPG Stored Events\", text: `${status.epg.storedEvents} Events` });\r\n statusItem.push({ label: \"TunerDevice Streams\", text: `${status.streamCount.tunerDevice}` });\r\n statusItem.push({ label: \"TSFilter Streams\", text: `${status.streamCount.tsFilter}` });\r\n statusItem.push({ label: \"Decoder Streams\", text: `${status.streamCount.decoder}` });\r\n statusItem.push({ label: \"RPC Connections\", text: `${status.rpcCount}` });\r\n }\r\n\r\n const statusList: JSX.Element[] = [];\r\n for (let i = 0; i < statusItem.length; i++) {\r\n const item = statusItem[i];\r\n statusList.push(\r\n <div key={`status-list-item${i}`} className=\"ms-Grid-col ms-sm12 ms-xl6 ms-xxl4 ms-xxxl3\">\r\n <div className=\"ms-Grid\" style={{ margin: 4 }}>\r\n <div className=\"ms-Grid-row\">\r\n <div className=\"ms-Grid-col ms-sm6\"><span className=\"ms-fontWeight-semibold\">{item.label}</span></div>\r\n <div className=\"ms-Grid-col ms-sm6\"><span>{item.text}</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const serviceList: JSX.Element[] = [];\r\n for (let i = 0; i < services.length; i++) {\r\n const service = services[i];\r\n if (service.type !== 1) {\r\n continue;\r\n }\r\n const tooltipId = `service-list-item#${i}-tooltip`;\r\n serviceList.push(\r\n <div key={`service-list-item${i}`} className=\"ms-Grid-col ms-sm6 ms-xl3 ms-xxl2\">\r\n <TooltipHost\r\n id={tooltipId}\r\n calloutProps={calloutProps}\r\n styles={tooltipHostStyles}\r\n tooltipProps={tooltipProps}\r\n content={(\r\n `#${service.id}\\n` +\r\n `SID: 0x${service.serviceId.toString(16).toUpperCase()} (${service.serviceId})\\n` +\r\n `NID: 0x${service.networkId.toString(16).toUpperCase()} (${service.networkId})\\n` +\r\n `Channel: ${service.channel.type} / ${service.channel.channel}`\r\n )}\r\n >\r\n <div className=\"ms-Grid\" area-describeby={tooltipId} style={{ margin: 4 }}>\r\n <div className=\"ms-Grid-row\" style={{\r\n padding: 1,\r\n height: 24,\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundImage: service.hasLogoData && `url(/api/services/${service.id}/logo)`\r\n }}>\r\n <div className=\"ms-Grid-col ms-sm12\" style={{ paddingLeft: 50 }}>\r\n <span className=\"ms-fontWeight-semibold ms-fontSize-12\">\r\n {service.name}\r\n </span>\r\n <span style={{ marginLeft: 4, fontSize: 13, verticalAlign: \"middle\" }}>\r\n {\r\n status.epg.gatheringNetworks.includes(service.networkId) && <Icon iconName=\"Sync\" style={{ color: \"#f6ad49\" }} /> ||\r\n service.epgReady && <Icon iconName=\"CheckMark\" style={{ color: \"#c3d825\" }} /> ||\r\n <Icon iconName=\"Clock\" style={{ color: \"#777\" }} />\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </TooltipHost>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <Stack tokens={{ childrenGap: \"16 0\" }} style={{ margin: \"16px 0 8px\" }}>\r\n <Stack>\r\n <Separator alignContent=\"start\">Status</Separator>\r\n <div className=\"ms-Grid\" dir=\"ltr\">\r\n <div className=\"ms-Grid-row\">\r\n {statusList}\r\n </div>\r\n </div>\r\n </Stack>\r\n <Stack>\r\n <Separator alignContent=\"start\">Services</Separator>\r\n <div className=\"ms-Grid\" dir=\"ltr\" style={{ marginLeft: 8 }}>\r\n <div className=\"ms-Grid-row\">\r\n {serviceList}\r\n </div>\r\n </div>\r\n </Stack>\r\n <Stack>\r\n <Separator alignContent=\"start\">Tuners</Separator>\r\n <TunersManager tuners={tuners} />\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default StatusView;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n Stack,\r\n Spinner,\r\n SpinnerSize,\r\n DetailsList,\r\n Selection,\r\n SelectionMode,\r\n IColumn,\r\n Dropdown,\r\n PrimaryButton,\r\n DefaultButton,\r\n Toggle,\r\n Dialog,\r\n DialogType,\r\n DialogFooter,\r\n TextField,\r\n Checkbox,\r\n IconButton,\r\n ActionButton\r\n} from \"@fluentui/react\";\r\nimport { UIState } from \"../index\";\r\nimport { ConfigTuners, ChannelType } from \"../../../api\";\r\n\r\nconst configAPI = \"/api/config/tuners\";\r\n\r\ninterface Item {\r\n key: string;\r\n enable: JSX.Element;\r\n name: JSX.Element;\r\n types: JSX.Element;\r\n options: JSX.Element;\r\n controls: JSX.Element;\r\n}\r\n\r\nconst columns: IColumn[] = [\r\n {\r\n key: \"col-enable\",\r\n name: \"Enable\",\r\n fieldName: \"enable\",\r\n minWidth: 44,\r\n maxWidth: 44\r\n },\r\n {\r\n key: \"col-name\",\r\n name: \"Name\",\r\n fieldName: \"name\",\r\n minWidth: 0,\r\n maxWidth: 70\r\n },\r\n {\r\n key: \"col-types\",\r\n name: \"Types\",\r\n fieldName: \"types\",\r\n minWidth: 60,\r\n maxWidth: 105\r\n },\r\n {\r\n key: \"col-options\",\r\n name: \"Options\",\r\n fieldName: \"options\",\r\n minWidth: 340,\r\n // maxWidth: 400\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 120,\r\n maxWidth: 120\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst typesIndex = [\"GR\", \"BS\", \"CS\", \"SKY\"];\r\nfunction sortTypes(types: ChannelType[]): ChannelType[] {\r\n return types.sort((a, b) => typesIndex.indexOf(a) - typesIndex.indexOf(b));\r\n}\r\n\r\nconst Configurator: React.FC<{ uiState: UIState, uiStateEvents: EventEmitter }> = ({ uiState, uiStateEvents }) => {\r\n\r\n const [current, setCurrent] = useState<ConfigTuners>(null);\r\n const [editing, setEditing] = useState<ConfigTuners>(null);\r\n const [showSaveDialog, setShowSaveDialog] = useState<boolean>(false);\r\n const [saved, setSaved] = useState<boolean>(false);\r\n const listContainerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (saved === true) {\r\n setTimeout(() => {\r\n uiStateEvents.emit(\"notify:restart-required\");\r\n }, 500);\r\n setSaved(false);\r\n return;\r\n }\r\n (async () => {\r\n try {\r\n const res = await (await fetch(configAPI)).json();\r\n console.log(\"TunersConfigurator\", \"GET\", configAPI, \"->\", res);\r\n setEditing(JSON.parse(JSON.stringify(res)));\r\n setCurrent(JSON.parse(JSON.stringify(res)));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n }, [saved]);\r\n\r\n const items = [];\r\n editing?.forEach((tuner, i) => {\r\n const item: Item = {\r\n key: `item${i}`,\r\n enable: (\r\n <Toggle\r\n checked={!tuner.isDisabled}\r\n onChange={(ev, checked) => {\r\n tuner.isDisabled = !checked;\r\n setEditing([...editing]);\r\n }}\r\n style={{ marginTop: 6 }}\r\n />\r\n ),\r\n name: (\r\n <TextField\r\n value={tuner.name}\r\n onChange={(ev, newValue) => {\r\n tuner.name = newValue;\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n types: (\r\n <Dropdown\r\n styles={{ root: { display: \"inline-block\", minWidth: 70 } }}\r\n multiSelect\r\n options={[\r\n { key: \"GR\", text: \"GR\" },\r\n { key: \"BS\", text: \"BS\" },\r\n { key: \"CS\", text: \"CS\" },\r\n { key: \"SKY\", text: \"SKY\" }\r\n ]}\r\n selectedKeys={tuner.types}\r\n onChange={(ev, option) => {\r\n if (option.selected === true) {\r\n tuner.types.push(option.key as any);\r\n tuner.types = sortTypes(tuner.types);\r\n } else {\r\n tuner.types = tuner.types.filter(type => type !== option.key);\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n ),\r\n options: (\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n {!tuner.remoteMirakurunHost && (\r\n <>\r\n <TextField\r\n label=\"Command:\"\r\n value={tuner.command || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.command;\r\n } else {\r\n tuner.command = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n label=\"DVB Device Path:\"\r\n value={tuner.dvbDevicePath || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.dvbDevicePath;\r\n } else {\r\n tuner.dvbDevicePath = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </>\r\n )}\r\n {!tuner.command && (\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }}>\r\n <TextField\r\n label=\"Remote Mirakurun Host:\"\r\n value={tuner.remoteMirakurunHost || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.remoteMirakurunHost;\r\n } else if (/^[0-9a-z\\.]+$/.test(newValue)) {\r\n tuner.remoteMirakurunHost = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <TextField\r\n style={{ width: 55 }}\r\n label=\"Port:\"\r\n placeholder=\"40772\"\r\n value={`${tuner.remoteMirakurunPort || \"\"}`}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.remoteMirakurunPort;\r\n } else if (/^[0-9]+$/.test(newValue)) {\r\n const port = parseInt(newValue, 10);\r\n if (port <= 65535 && port > 0) {\r\n tuner.remoteMirakurunPort = port;\r\n }\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <Checkbox\r\n styles={{ root: { marginTop: 34 } }}\r\n label=\"Decode\"\r\n checked={tuner.remoteMirakurunDecoder || false}\r\n onChange={(ev, checked) => {\r\n if (checked) {\r\n tuner.remoteMirakurunDecoder = true;\r\n } else {\r\n delete tuner.remoteMirakurunDecoder;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n </Stack>\r\n )}\r\n {(!tuner.remoteMirakurunHost || !tuner.remoteMirakurunDecoder) && (\r\n <TextField\r\n label=\"Decoder:\"\r\n value={tuner.decoder || \"\"}\r\n onChange={(ev, newValue) => {\r\n if (newValue === \"\") {\r\n delete tuner.decoder;\r\n } else {\r\n tuner.decoder = newValue;\r\n }\r\n setEditing([...editing]);\r\n }}\r\n />\r\n )}\r\n </Stack>\r\n ),\r\n controls: (\r\n <Stack horizontal horizontalAlign=\"end\">\r\n <IconButton\r\n disabled={i === 0}\r\n style={{ opacity: i === 0 ? 0 : 1 }}\r\n title=\"Up\"\r\n iconProps={{ iconName: \"Up\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i - 1, 0, tuner);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n disabled={i === editing.length - 1}\r\n style={{ opacity: i === editing.length - 1 ? 0 : 1 }}\r\n title=\"Down\"\r\n iconProps={{ iconName: \"Down\" }}\r\n onClick={() => {\r\n editing.splice(i, 1);\r\n editing.splice(i + 1, 0, tuner);\r\n setEditing([...editing]);\r\n }}\r\n />\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"remove\",\r\n text: \"Remove Tuner\",\r\n iconProps: { iconName: \"Delete\" },\r\n onClick: () => {\r\n editing.splice(i, 1);\r\n setEditing([...editing]);\r\n }\r\n }] }}\r\n />\r\n </Stack>\r\n )\r\n };\r\n //\r\n items.push(item);\r\n });\r\n\r\n const changed = JSON.stringify(current) !== JSON.stringify(editing);\r\n\r\n if (listContainerRef.current) {\r\n listContainerRef.current.style.maxHeight = \"calc(100vh - 410px)\";\r\n }\r\n\r\n return (\r\n <>\r\n {!current && <Spinner size={SpinnerSize.large} />}\r\n {editing &&\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <Stack.Item>\r\n <ActionButton\r\n text=\"Add Tuner\"\r\n iconProps={{ iconName: \"Add\" }}\r\n onClick={() => {\r\n const i = editing.length;\r\n editing.push({\r\n name: `adapter${i}`,\r\n types: [],\r\n command: `dvbv5-zap -a ${i} -c ./config/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -r -P <channel>`,\r\n dvbDevicePath: `/dev/dvb/adapter${i}/dvr0`,\r\n decoder: \"arib-b25-stream-test\",\r\n isDisabled: true\r\n });\r\n setEditing([...editing]);\r\n setTimeout(() => {\r\n listContainerRef.current.scrollTop = listContainerRef.current.scrollHeight;\r\n }, 0);\r\n }}\r\n />\r\n </Stack.Item>\r\n\r\n <div ref={listContainerRef} style={{ overflowY: \"scroll\" }}>\r\n <DetailsList\r\n setKey=\"items\"\r\n items={items}\r\n columns={columns}\r\n selection={dummySelection}\r\n selectionMode={SelectionMode.none}\r\n />\r\n </div>\r\n\r\n <Stack horizontal tokens={{ childrenGap: \"0 8\" }} style={{ marginTop: 16 }}>\r\n <PrimaryButton text=\"Save\" disabled={!changed} onClick={() => setShowSaveDialog(true)} />\r\n <DefaultButton text=\"Cancel\" disabled={!changed} onClick={() => setEditing(JSON.parse(JSON.stringify(current)))} />\r\n </Stack>\r\n </Stack>\r\n }\r\n <Dialog\r\n hidden={!showSaveDialog}\r\n onDismiss={() => setShowSaveDialog(false)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Save\",\r\n subText: \"Restart is required to apply configuration.\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Save\"\r\n onClick={() => {\r\n setShowSaveDialog(false);\r\n (async () => {\r\n console.log(\"TunersConfigurator\", \"PUT\", configAPI, \"<-\", editing);\r\n await fetch(configAPI, {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(editing)\r\n });\r\n setSaved(true);\r\n })();\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setShowSaveDialog(false)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Configurator;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n Text,\r\n Icon,\r\n GroupedList,\r\n DetailsRow,\r\n Selection,\r\n IColumn,\r\n IGroup,\r\n Dialog,\r\n DialogFooter,\r\n DialogType,\r\n PrimaryButton,\r\n DefaultButton,\r\n IconButton,\r\n ColorClassNames\r\n} from \"@fluentui/react\";\r\nimport { TunerDevice } from \"../../../api\";\r\n\r\ninterface Item {\r\n _group: string;\r\n _kind: \"device\" | \"user\";\r\n key: string;\r\n name: string;\r\n command?: JSX.Element;\r\n controls?: JSX.Element;\r\n user?: JSX.Element;\r\n priority?: JSX.Element;\r\n}\r\n\r\nconst deviceColumns: IColumn[] = [\r\n {\r\n key: \"col-command\",\r\n name: \"\",\r\n fieldName: \"command\",\r\n minWidth: 0,\r\n isResizable: true,\r\n },\r\n {\r\n key: \"col-controls\",\r\n name: \"\",\r\n fieldName: \"controls\",\r\n minWidth: 0\r\n }\r\n];\r\n\r\nconst userColumns: IColumn[] = [\r\n {\r\n key: \"col-user\",\r\n name: \"\",\r\n fieldName: \"user\",\r\n minWidth: 0\r\n },\r\n {\r\n key: \"col-priority\",\r\n name: \"\",\r\n fieldName: \"priority\",\r\n minWidth: 0\r\n }\r\n];\r\n\r\nconst dummySelection = new Selection(); // dummy\r\n\r\nconst onRenderCell = (nestingDepth: number, item: Item, itemIndex: number) => {\r\n return <DetailsRow\r\n columns={item._kind === \"device\" ? deviceColumns : userColumns}\r\n groupNestingDepth={nestingDepth + (item._kind === \"device\" ? 0 : 1)}\r\n item={item}\r\n itemIndex={itemIndex}\r\n selection={dummySelection}\r\n selectionMode={0}\r\n compact\r\n />\r\n};\r\n\r\nconst TunersManager: React.FC<{ tuners: TunerDevice[] }> = ({ tuners }) => {\r\n\r\n const [killTarget, setKillTarget] = useState<number>(null);\r\n\r\n const items: Item[] = [];\r\n for (const tuner of tuners) {\r\n const item: Item = {\r\n _group: `#${tuner.index}: ${tuner.name} (${tuner.types.join(\", \")})`,\r\n _kind: \"device\",\r\n key: `row-device-${tuner.index}`,\r\n name: tuner.name,\r\n command: (\r\n <>\r\n <Icon title=\"Command\" iconName=\"ServerProcesses\" />\r\n <Text style={{ lineHeight: \"30px\", marginLeft: 8 }}>{tuner.command || \"-\"}</Text>\r\n <Text\r\n style={{ lineHeight: \"30px\", marginLeft: 8 }}\r\n className={ColorClassNames.neutralTertiaryAlt}\r\n >\r\n {tuner.pid ? `(pid=${tuner.pid})` : \"\"}\r\n </Text>\r\n </>\r\n )\r\n };\r\n if (tuner.command) {\r\n item.controls = (\r\n <IconButton\r\n title=\"Controls\"\r\n iconProps={{ iconName: \"More\" }}\r\n menuProps={{ items: [{\r\n key: \"kill\",\r\n text: \"Kill Tuner Process...\",\r\n iconProps: { iconName: \"Cancel\" },\r\n onClick: () => setKillTarget(tuner.index)\r\n }] }}\r\n />\r\n );\r\n }\r\n items.push(item);\r\n\r\n for (const user of tuner.users) {\r\n items.push({\r\n _group: item._group,\r\n _kind: \"user\",\r\n key: `${item.key}-user-${user.id}`,\r\n name: user.id,\r\n user: (\r\n <>\r\n <Icon title=\"User\" iconName={/Mirakurun/.test(user.id) ? \"Processing\" : \"PlugConnected\"} />\r\n <Text style={{ marginLeft: 8 }}>{user.id}</Text>\r\n </>\r\n ),\r\n priority: (\r\n <>\r\n <Icon title=\"Priority\" iconName=\"SortLines\" />\r\n <Text style={{ marginLeft: 8 }}>{user.priority}</Text>\r\n </>\r\n )\r\n });\r\n }\r\n }\r\n\r\n const groups: IGroup[] = [];\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i];\r\n let group = groups.find(group => group.key === item._group);\r\n if (!group) {\r\n group = {\r\n key: item._group,\r\n name: item._group,\r\n startIndex: i,\r\n count: 0\r\n };\r\n groups.push(group);\r\n }\r\n group.count++;\r\n }\r\n\r\n return (\r\n <>\r\n <GroupedList\r\n items={items}\r\n groups={groups}\r\n groupProps={{ headerProps: { styles: { headerCount: { display: \"none\" } } } }} // hide count\r\n onRenderCell={onRenderCell}\r\n selectionMode={0}\r\n compact\r\n />\r\n <Dialog\r\n hidden={killTarget === null}\r\n onDismiss={() => setKillTarget(null)}\r\n dialogContentProps={{\r\n type: DialogType.largeHeader,\r\n title: \"Kill Tuner Process\",\r\n subText: \"Do you want to kill this running tuner process?\"\r\n }}\r\n >\r\n <DialogFooter>\r\n <PrimaryButton\r\n text=\"Kill\"\r\n onClick={() => {\r\n (async () => {\r\n await fetch(`/api/tuners/${killTarget}/process`, { method: \"DELETE\" });\r\n })();\r\n setKillTarget(null);\r\n }}\r\n />\r\n <DefaultButton\r\n text=\"Cancel\"\r\n onClick={() => setKillTarget(null)}\r\n />\r\n </DialogFooter>\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default TunersManager;\r\n","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n MessageBar,\r\n MessageBarType,\r\n MessageBarButton,\r\n Link\r\n} from \"@fluentui/react\";\r\nimport { Version } from \"../../../api\";\r\n\r\nconst UpdateAlert: React.FC = () => {\r\n\r\n const [updateAvailable, setUpdateAvailable] = useState<boolean>(false);\r\n const [version, setVersion] = useState<Version>(null);\r\n\r\n useEffect(() => {\r\n setTimeout(async () => {\r\n console.log(\"UpdateAlert\", \"checking update\", \"...\");\r\n const version: Version = await (await fetch(\"/api/version\")).json();\r\n setVersion(version);\r\n if (version.current !== version.latest) {\r\n setUpdateAvailable(true);\r\n }\r\n console.log(\"UpdateAlert\", \"checking update\", \"done.\");\r\n }, 1000 * 5);\r\n }, []);\r\n\r\n return (\r\n <>\r\n {updateAvailable === true && (\r\n <MessageBar\r\n messageBarType={MessageBarType.warning}\r\n isMultiline={false}\r\n onDismiss={() => setUpdateAvailable(false)}\r\n dismissButtonAriaLabel=\"Close\"\r\n actions={\r\n <div>\r\n <MessageBarButton\r\n href=\"https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md\"\r\n target=\"_blank\"\r\n >\r\n How to Update\r\n </MessageBarButton>\r\n </div>\r\n }\r\n >\r\n Update ({version.latest}) Available!\r\n <Link href=\"https://github.com/Chinachu/Mirakurun/blob/master/CHANGELOG.md\" target=\"_blank\">\r\n CHANGELOG\r\n </Link>\r\n </MessageBar>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default UpdateAlert;\r\n","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","module.exports = EventEmitter3;","module.exports = FluentUIReact;","module.exports = React;","module.exports = ReactDOM;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\r\n Copyright 2020 kanreisa\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\nimport EventEmitter from \"eventemitter3\";\r\nimport * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport {\r\n createTheme,\r\n loadTheme,\r\n Fabric,\r\n Stack,\r\n ActionButton,\r\n Pivot,\r\n PivotItem,\r\n Separator,\r\n Text,\r\n Link,\r\n Icon,\r\n ColorClassNames\r\n} from \"@fluentui/react\";\r\nimport { Client as RPCClient } from \"jsonrpc2-ws\";\r\nimport { JoinParams, NotifyParams } from \"../../lib/Mirakurun/rpc.d\";\r\nimport { EventMessage } from \"../../lib/Mirakurun/Event.d\";\r\nimport { TunerDevice, Service, Status, Program } from \"../../api.d\";\r\nimport ConnectionGuide from \"./components/ConnectionGuide\";\r\nimport UpdateAlert from \"./components/UpdateAlert\";\r\nimport Restart from \"./components/Restart\";\r\nimport StatusView from \"./components/StatusView\";\r\nimport EventsView from \"./components/EventsView\";\r\nimport LogsView from \"./components/LogsView\";\r\nimport ConfigView from \"./components/ConfigView\";\r\nimport HeartView from \"./components/HeartView\";\r\nimport \"./index.css\";\r\n\r\nexport interface UIState {\r\n version: string;\r\n statusName: string;\r\n statusIconName: string;\r\n tuners: TunerDevice[];\r\n services: Service[];\r\n status: Status;\r\n}\r\n\r\nconst uiState: UIState = {\r\n version: \"..\",\r\n statusName: \"Loading\",\r\n statusIconName: \"offline\",\r\n tuners: [],\r\n services: [],\r\n status: null\r\n};\r\n\r\nconst uiStateEvents = new EventEmitter();\r\n\r\nconst iconSrcMap = {\r\n normal: \"icon.svg\",\r\n offline: \"icon-gray.svg\",\r\n active: \"icon-active.svg\"\r\n};\r\n\r\nlet statusRefreshInterval: any;\r\nlet servicesRefreshInterval: any;\r\n\r\nfunction idleStatusChecker(): boolean {\r\n\r\n let statusName = \"Standby\";\r\n let statusIconName = \"normal\";\r\n\r\n const isActive = uiState.tuners.some(tuner => tuner.isUsing === true && tuner.users.some(user => user.priority !== -1));\r\n if (isActive) {\r\n statusName = \"Active\";\r\n statusIconName = \"active\";\r\n }\r\n\r\n if (uiState.statusName === statusName) {\r\n return false;\r\n }\r\n\r\n uiState.statusName = statusName;\r\n uiState.statusIconName = statusIconName;\r\n uiStateEvents.emit(\"update\");\r\n\r\n return true;\r\n}\r\nuiStateEvents.on(\"update:tuners\", idleStatusChecker);\r\n\r\nconst rpc = new RPCClient(`ws://${location.host}/rpc`, {\r\n protocols: null\r\n});\r\n\r\nrpc.on(\"connecting\", () => {\r\n\r\n console.log(\"rpc:connecting\");\r\n\r\n uiState.statusName = \"Connecting\";\r\n uiStateEvents.emit(\"update\");\r\n});\r\n\r\nrpc.on(\"connected\", async () => {\r\n\r\n console.log(\"rpc:connected\");\r\n\r\n status: {\r\n uiState.status = await rpc.call(\"getStatus\");\r\n\r\n statusRefreshInterval = setInterval(async () => {\r\n if (document.hidden) {\r\n return;\r\n }\r\n uiState.status = await rpc.call(\"getStatus\");\r\n uiStateEvents.emit(\"update:status\");\r\n }, 1000 * 3);\r\n\r\n if (uiState.version !== \"..\" && uiState.version !== uiState.status.version) {\r\n location.reload();\r\n return;\r\n }\r\n uiState.version = uiState.status.version;\r\n }\r\n services: {\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n\r\n servicesRefreshInterval = setInterval(async () => {\r\n if (document.hidden) {\r\n return;\r\n }\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n uiStateEvents.emit(\"update:services\");\r\n }, 1000 * 60);\r\n }\r\n uiState.tuners = await (await fetch(\"/api/tuners\")).json();\r\n\r\n await rpc.call(\"join\", {\r\n rooms: [\"events:tuner\", \"events:service\"]\r\n } as JoinParams);\r\n\r\n uiStateEvents.emit(\"update\");\r\n uiStateEvents.emit(\"update:status\");\r\n uiStateEvents.emit(\"update:services\");\r\n uiStateEvents.emit(\"update:tuners\");\r\n});\r\n\r\nrpc.on(\"disconnect\", () => {\r\n\r\n console.log(\"rpc:disconnected\");\r\n\r\n clearInterval(statusRefreshInterval);\r\n clearInterval(servicesRefreshInterval);\r\n\r\n uiState.statusName = \"Disconnected\";\r\n uiState.statusIconName = \"offline\";\r\n uiStateEvents.emit(\"update\");\r\n});\r\n\r\nrpc.methods.set(\"events\", async (socket, { array }: NotifyParams<EventMessage>) => {\r\n\r\n let reloadServiceRequired = false;\r\n\r\n for (const event of array) {\r\n if (event.resource === \"service\") {\r\n const service: Service = event.data;\r\n reloadServiceRequired = true;\r\n\r\n for (const _service of uiState.services) {\r\n if (_service.id === service.id) {\r\n Object.assign(_service, service);\r\n uiStateEvents.emit(\"update:services\");\r\n reloadServiceRequired = false;\r\n break;\r\n }\r\n }\r\n } else if (event.resource === \"tuner\") {\r\n const tuner: TunerDevice = event.data;\r\n\r\n uiState.tuners[uiState.tuners.findIndex(value => value.index === tuner.index)] = tuner;\r\n uiStateEvents.emit(\"update:tuners\");\r\n }\r\n }\r\n\r\n if (reloadServiceRequired) {\r\n uiState.services = await (await fetch(\"/api/services\")).json();\r\n uiStateEvents.emit(\"update:services\");\r\n }\r\n\r\n uiStateEvents.emit(\"data:events\", array);\r\n});\r\n\r\nrpc.methods.set(\"logs\", (socket, { array }: NotifyParams<string> ) => {\r\n uiStateEvents.emit(\"data:logs\", array);\r\n});\r\n\r\nconst Content = () => {\r\n\r\n const [state, setState] = useState<UIState>(uiState);\r\n\r\n useEffect(() => {\r\n\r\n const title = `${state.statusName} - Mirakurun ${state.version}`;\r\n if (document.title !== title) {\r\n document.title = title;\r\n }\r\n\r\n const icon = document.getElementById(\"icon\");\r\n if (icon.getAttribute(\"href\") !== iconSrcMap[state.statusIconName]) {\r\n icon.setAttribute(\"href\", iconSrcMap[state.statusIconName]);\r\n }\r\n\r\n const onStateUpdate = () => {\r\n setState({ ...uiState });\r\n };\r\n uiStateEvents.on(\"update\", onStateUpdate);\r\n\r\n return () => {\r\n uiStateEvents.removeListener(\"update\", onStateUpdate);\r\n };\r\n });\r\n\r\n return (\r\n <Fabric style={{ margin: \"16px\" }}>\r\n <Stack tokens={{ childrenGap: \"8 0\" }}>\r\n <UpdateAlert />\r\n\r\n <Stack horizontal verticalAlign=\"center\" tokens={{ childrenGap: \"0 8\" }}>\r\n <img style={{ height: \"96px\" }} src={iconSrcMap[state.statusIconName]} />\r\n <div className=\"ms-fontSize-42\">Mirakurun</div>\r\n <Text variant=\"mediumPlus\" nowrap block className={ColorClassNames.themePrimary}>{state.status?.version}</Text>\r\n <Text variant=\"medium\" nowrap block className={ColorClassNames.neutralTertiaryAlt}>({state.statusName})</Text>\r\n <Stack.Item grow disableShrink>&nbsp;</Stack.Item>\r\n <ConnectionGuide />\r\n <ActionButton\r\n iconProps={{ iconName: \"KnowledgeArticle\" }}\r\n text=\"API Docs\"\r\n target=\"_blank\"\r\n href=\"/api/debug\"\r\n />\r\n <Restart uiStateEvents={uiStateEvents} />\r\n </Stack>\r\n\r\n <Pivot>\r\n <PivotItem itemIcon=\"GroupedList\" headerText=\"Status\">\r\n <StatusView uiState={uiState} uiStateEvents={uiStateEvents} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"EntitlementRedemption\" headerText=\"Events\">\r\n <EventsView uiStateEvents={uiStateEvents} rpc={rpc} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"ComplianceAudit\" headerText=\"Logs\">\r\n <LogsView uiStateEvents={uiStateEvents} rpc={rpc} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"Settings\" headerText=\"Config\">\r\n <ConfigView uiState={uiState} uiStateEvents={uiStateEvents} />\r\n </PivotItem>\r\n <PivotItem itemIcon=\"Heart\" headerText=\"Special Thanks\">\r\n <HeartView />\r\n </PivotItem>\r\n </Pivot>\r\n\r\n <Stack>\r\n <Separator />\r\n <Text>\r\n <Link href=\"https://github.com/Chinachu/Mirakurun\" target=\"_blank\">Mirakurun</Link> {state.version}\r\n &nbsp;&copy; 2016- <Link href=\"https://github.com/kanreisa\" target=\"_blank\">kanreisa</Link>.\r\n </Text>\r\n <Text>\r\n <Icon iconName=\"Heart\" /> <Link href=\"https://chinachu.moe/\" target=\"_blank\">Chinachu Project</Link>\r\n &nbsp;(<Link href=\"https://github.com/Chinachu\" target=\"_blank\">GitHub</Link>)\r\n </Text>\r\n </Stack>\r\n\r\n <Stack>\r\n <Text variant=\"xSmall\" className={ColorClassNames.neutralTertiaryAlt}>\r\n Mirakurun comes with ABSOLUTELY NO WARRANTY. USE AT YOUR OWN RISK.\r\n </Text>\r\n </Stack>\r\n </Stack>\r\n </Fabric>\r\n );\r\n};\r\n\r\nReactDOM.render(\r\n <Content />,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// dark theme\r\nconst myTheme = createTheme({\r\n palette: {\r\n themePrimary: '#ffd56c',\r\n themeLighterAlt: '#0a0904',\r\n themeLighter: '#292211',\r\n themeLight: '#4d4020',\r\n themeTertiary: '#998040',\r\n themeSecondary: '#e0bc5e',\r\n themeDarkAlt: '#ffd97a',\r\n themeDark: '#ffdf8f',\r\n themeDarker: '#ffe8ac',\r\n neutralLighterAlt: '#2d2f37',\r\n neutralLighter: '#34363f',\r\n neutralLight: '#40424c',\r\n neutralQuaternaryAlt: '#474a54',\r\n neutralQuaternary: '#4e505b',\r\n neutralTertiaryAlt: '#686b77',\r\n neutralTertiary: '#f1f1f1',\r\n neutralSecondary: '#f4f4f4',\r\n neutralPrimaryAlt: '#f6f6f6',\r\n neutralPrimary: '#ebebeb',\r\n neutralDark: '#fafafa',\r\n black: '#fdfdfd',\r\n white: '#25272e',\r\n }\r\n});\r\nloadTheme(myTheme);\r\n"],"names":[],"sourceRoot":""}