@xterm/addon-unicode11 0.9.0-beta.5 → 0.9.0-beta.51

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":"addon-unicode11.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAwB,eAAID,IAE5BD,EAAqB,eAAIC,GAC1B,CATD,CASGK,MAAM,I,6GCFT,eAEMC,EAAgB,CACpB,CAAC,IAAQ,KAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,QAELC,EAAiB,CACrB,CAAC,MAAS,OAAU,CAAC,MAAS,OAC9B,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,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AAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,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","sources":["webpack://Unicode11Addon/webpack/universalModuleDefinition","webpack://Unicode11Addon/./src/UnicodeV11.ts","webpack://Unicode11Addon/../../src/common/EventEmitter.ts","webpack://Unicode11Addon/../../src/common/input/UnicodeV6.ts","webpack://Unicode11Addon/../../src/common/services/UnicodeService.ts","webpack://Unicode11Addon/webpack/bootstrap","webpack://Unicode11Addon/./src/Unicode11Addon.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Unicode11Addon\"] = factory();\n\telse\n\t\troot[\"Unicode11Addon\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IUnicodeVersionProvider } from '@xterm/xterm';\nimport { UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\nimport { UnicodeService } from 'common/services/UnicodeService';\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0489], [0x0591, 0x05BD],\n [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5],\n [0x05C7, 0x05C7], [0x0600, 0x0605], [0x0610, 0x061A],\n [0x061C, 0x061C], [0x064B, 0x065F], [0x0670, 0x0670],\n [0x06D6, 0x06DD], [0x06DF, 0x06E4], [0x06E7, 0x06E8],\n [0x06EA, 0x06ED], [0x070F, 0x070F], [0x0711, 0x0711],\n [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3],\n [0x07FD, 0x07FD], [0x0816, 0x0819], [0x081B, 0x0823],\n [0x0825, 0x0827], [0x0829, 0x082D], [0x0859, 0x085B],\n [0x08D3, 0x0902], [0x093A, 0x093A], [0x093C, 0x093C],\n [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0957],\n [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC],\n [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3],\n [0x09FE, 0x09FE], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75],\n [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5],\n [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3],\n [0x0AFA, 0x0AFF], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82],\n [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C00, 0x0C00],\n [0x0C04, 0x0C04], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63],\n [0x0C81, 0x0C81], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF],\n [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3],\n [0x0D00, 0x0D01], [0x0D3B, 0x0D3C], [0x0D41, 0x0D44],\n [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA],\n [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31],\n [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1],\n [0x0EB4, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19],\n [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39],\n [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87],\n [0x0F8D, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6],\n [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A],\n [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060],\n [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086],\n [0x108D, 0x108D], [0x109D, 0x109D], [0x1160, 0x11FF],\n [0x135D, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734],\n [0x1752, 0x1753], [0x1772, 0x1773], [0x17B4, 0x17B5],\n [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3],\n [0x17DD, 0x17DD], [0x180B, 0x180E], [0x1885, 0x1886],\n [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928],\n [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18],\n [0x1A1B, 0x1A1B], [0x1A56, 0x1A56], [0x1A58, 0x1A5E],\n [0x1A60, 0x1A60], [0x1A62, 0x1A62], [0x1A65, 0x1A6C],\n [0x1A73, 0x1A7C], [0x1A7F, 0x1A7F], [0x1AB0, 0x1ABE],\n [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A],\n [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73],\n [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9],\n [0x1BAB, 0x1BAD], [0x1BE6, 0x1BE6], [0x1BE8, 0x1BE9],\n [0x1BED, 0x1BED], [0x1BEF, 0x1BF1], [0x1C2C, 0x1C33],\n [0x1C36, 0x1C37], [0x1CD0, 0x1CD2], [0x1CD4, 0x1CE0],\n [0x1CE2, 0x1CE8], [0x1CED, 0x1CED], [0x1CF4, 0x1CF4],\n [0x1CF8, 0x1CF9], [0x1DC0, 0x1DF9], [0x1DFB, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064],\n [0x2066, 0x206F], [0x20D0, 0x20F0], [0x2CEF, 0x2CF1],\n [0x2D7F, 0x2D7F], [0x2DE0, 0x2DFF], [0x302A, 0x302D],\n [0x3099, 0x309A], [0xA66F, 0xA672], [0xA674, 0xA67D],\n [0xA69E, 0xA69F], [0xA6F0, 0xA6F1], [0xA802, 0xA802],\n [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826],\n [0xA8C4, 0xA8C5], [0xA8E0, 0xA8F1], [0xA8FF, 0xA8FF],\n [0xA926, 0xA92D], [0xA947, 0xA951], [0xA980, 0xA982],\n [0xA9B3, 0xA9B3], [0xA9B6, 0xA9B9], [0xA9BC, 0xA9BD],\n [0xA9E5, 0xA9E5], [0xAA29, 0xAA2E], [0xAA31, 0xAA32],\n [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C],\n [0xAA7C, 0xAA7C], [0xAAB0, 0xAAB0], [0xAAB2, 0xAAB4],\n [0xAAB7, 0xAAB8], [0xAABE, 0xAABF], [0xAAC1, 0xAAC1],\n [0xAAEC, 0xAAED], [0xAAF6, 0xAAF6], [0xABE5, 0xABE5],\n [0xABE8, 0xABE8], [0xABED, 0xABED], [0xFB1E, 0xFB1E],\n [0xFE00, 0xFE0F], [0xFE20, 0xFE2F], [0xFEFF, 0xFEFF],\n [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x101FD, 0x101FD], [0x102E0, 0x102E0],\n [0x10376, 0x1037A], [0x10A01, 0x10A03], [0x10A05, 0x10A06],\n [0x10A0C, 0x10A0F], [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F],\n [0x10AE5, 0x10AE6], [0x10D24, 0x10D27], [0x10F46, 0x10F50],\n [0x11001, 0x11001], [0x11038, 0x11046], [0x1107F, 0x11081],\n [0x110B3, 0x110B6], [0x110B9, 0x110BA], [0x110BD, 0x110BD],\n [0x110CD, 0x110CD], [0x11100, 0x11102], [0x11127, 0x1112B],\n [0x1112D, 0x11134], [0x11173, 0x11173], [0x11180, 0x11181],\n [0x111B6, 0x111BE], [0x111C9, 0x111CC], [0x1122F, 0x11231],\n [0x11234, 0x11234], [0x11236, 0x11237], [0x1123E, 0x1123E],\n [0x112DF, 0x112DF], [0x112E3, 0x112EA], [0x11300, 0x11301],\n [0x1133B, 0x1133C], [0x11340, 0x11340], [0x11366, 0x1136C],\n [0x11370, 0x11374], [0x11438, 0x1143F], [0x11442, 0x11444],\n [0x11446, 0x11446], [0x1145E, 0x1145E], [0x114B3, 0x114B8],\n [0x114BA, 0x114BA], [0x114BF, 0x114C0], [0x114C2, 0x114C3],\n [0x115B2, 0x115B5], [0x115BC, 0x115BD], [0x115BF, 0x115C0],\n [0x115DC, 0x115DD], [0x11633, 0x1163A], [0x1163D, 0x1163D],\n [0x1163F, 0x11640], [0x116AB, 0x116AB], [0x116AD, 0x116AD],\n [0x116B0, 0x116B5], [0x116B7, 0x116B7], [0x1171D, 0x1171F],\n [0x11722, 0x11725], [0x11727, 0x1172B], [0x1182F, 0x11837],\n [0x11839, 0x1183A], [0x119D4, 0x119D7], [0x119DA, 0x119DB],\n [0x119E0, 0x119E0], [0x11A01, 0x11A0A], [0x11A33, 0x11A38],\n [0x11A3B, 0x11A3E], [0x11A47, 0x11A47], [0x11A51, 0x11A56],\n [0x11A59, 0x11A5B], [0x11A8A, 0x11A96], [0x11A98, 0x11A99],\n [0x11C30, 0x11C36], [0x11C38, 0x11C3D], [0x11C3F, 0x11C3F],\n [0x11C92, 0x11CA7], [0x11CAA, 0x11CB0], [0x11CB2, 0x11CB3],\n [0x11CB5, 0x11CB6], [0x11D31, 0x11D36], [0x11D3A, 0x11D3A],\n [0x11D3C, 0x11D3D], [0x11D3F, 0x11D45], [0x11D47, 0x11D47],\n [0x11D90, 0x11D91], [0x11D95, 0x11D95], [0x11D97, 0x11D97],\n [0x11EF3, 0x11EF4], [0x13430, 0x13438], [0x16AF0, 0x16AF4],\n [0x16B30, 0x16B36], [0x16F4F, 0x16F4F], [0x16F8F, 0x16F92],\n [0x1BC9D, 0x1BC9E], [0x1BCA0, 0x1BCA3], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0x1DA00, 0x1DA36], [0x1DA3B, 0x1DA6C],\n [0x1DA75, 0x1DA75], [0x1DA84, 0x1DA84], [0x1DA9B, 0x1DA9F],\n [0x1DAA1, 0x1DAAF], [0x1E000, 0x1E006], [0x1E008, 0x1E018],\n [0x1E01B, 0x1E021], [0x1E023, 0x1E024], [0x1E026, 0x1E02A],\n [0x1E130, 0x1E136], [0x1E2EC, 0x1E2EF], [0x1E8D0, 0x1E8D6],\n [0x1E944, 0x1E94A], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\nconst BMP_WIDE = [\n [0x1100, 0x115F], [0x231A, 0x231B], [0x2329, 0x232A],\n [0x23E9, 0x23EC], [0x23F0, 0x23F0], [0x23F3, 0x23F3],\n [0x25FD, 0x25FE], [0x2614, 0x2615], [0x2648, 0x2653],\n [0x267F, 0x267F], [0x2693, 0x2693], [0x26A1, 0x26A1],\n [0x26AA, 0x26AB], [0x26BD, 0x26BE], [0x26C4, 0x26C5],\n [0x26CE, 0x26CE], [0x26D4, 0x26D4], [0x26EA, 0x26EA],\n [0x26F2, 0x26F3], [0x26F5, 0x26F5], [0x26FA, 0x26FA],\n [0x26FD, 0x26FD], [0x2705, 0x2705], [0x270A, 0x270B],\n [0x2728, 0x2728], [0x274C, 0x274C], [0x274E, 0x274E],\n [0x2753, 0x2755], [0x2757, 0x2757], [0x2795, 0x2797],\n [0x27B0, 0x27B0], [0x27BF, 0x27BF], [0x2B1B, 0x2B1C],\n [0x2B50, 0x2B50], [0x2B55, 0x2B55], [0x2E80, 0x2E99],\n [0x2E9B, 0x2EF3], [0x2F00, 0x2FD5], [0x2FF0, 0x2FFB],\n [0x3000, 0x3029], [0x302E, 0x303E], [0x3041, 0x3096],\n [0x309B, 0x30FF], [0x3105, 0x312F], [0x3131, 0x318E],\n [0x3190, 0x31BA], [0x31C0, 0x31E3], [0x31F0, 0x321E],\n [0x3220, 0x3247], [0x3250, 0x4DBF], [0x4E00, 0xA48C],\n [0xA490, 0xA4C6], [0xA960, 0xA97C], [0xAC00, 0xD7A3],\n [0xF900, 0xFAFF], [0xFE10, 0xFE19], [0xFE30, 0xFE52],\n [0xFE54, 0xFE66], [0xFE68, 0xFE6B], [0xFF01, 0xFF60],\n [0xFFE0, 0xFFE6]\n];\nconst HIGH_WIDE = [\n [0x16FE0, 0x16FE3], [0x17000, 0x187F7],\n [0x18800, 0x18AF2], [0x1B000, 0x1B11E], [0x1B150, 0x1B152],\n [0x1B164, 0x1B167], [0x1B170, 0x1B2FB], [0x1F004, 0x1F004],\n [0x1F0CF, 0x1F0CF], [0x1F18E, 0x1F18E], [0x1F191, 0x1F19A],\n [0x1F200, 0x1F202], [0x1F210, 0x1F23B], [0x1F240, 0x1F248],\n [0x1F250, 0x1F251], [0x1F260, 0x1F265], [0x1F300, 0x1F320],\n [0x1F32D, 0x1F335], [0x1F337, 0x1F37C], [0x1F37E, 0x1F393],\n [0x1F3A0, 0x1F3CA], [0x1F3CF, 0x1F3D3], [0x1F3E0, 0x1F3F0],\n [0x1F3F4, 0x1F3F4], [0x1F3F8, 0x1F43E], [0x1F440, 0x1F440],\n [0x1F442, 0x1F4FC], [0x1F4FF, 0x1F53D], [0x1F54B, 0x1F54E],\n [0x1F550, 0x1F567], [0x1F57A, 0x1F57A], [0x1F595, 0x1F596],\n [0x1F5A4, 0x1F5A4], [0x1F5FB, 0x1F64F], [0x1F680, 0x1F6C5],\n [0x1F6CC, 0x1F6CC], [0x1F6D0, 0x1F6D2], [0x1F6D5, 0x1F6D5],\n [0x1F6EB, 0x1F6EC], [0x1F6F4, 0x1F6FA], [0x1F7E0, 0x1F7EB],\n [0x1F90D, 0x1F971], [0x1F973, 0x1F976], [0x1F97A, 0x1F9A2],\n [0x1F9A5, 0x1F9AA], [0x1F9AE, 0x1F9CA], [0x1F9CD, 0x1F9FF],\n [0x1FA70, 0x1FA73], [0x1FA78, 0x1FA7A], [0x1FA80, 0x1FA82],\n [0x1FA90, 0x1FA95], [0x20000, 0x2FFFD], [0x30000, 0x3FFFD]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\n\nexport class UnicodeV11 implements IUnicodeVersionProvider {\n public readonly version = '11';\n\n constructor() {\n if (!table) {\n table = new Uint8Array(65536);\n table.fill(1);\n table[0] = 0;\n table.fill(0, 1, 32);\n table.fill(0, 0x7f, 0xa0);\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n for (let r = 0; r < BMP_WIDE.length; ++r) {\n table.fill(2, BMP_WIDE[r][0], BMP_WIDE[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): UnicodeCharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as UnicodeCharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if (bisearch(num, HIGH_WIDE)) return 2;\n return 1;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n let width = this.wcwidth(codepoint);\n let shouldJoin = width === 0 && preceding !== 0;\n if (shouldJoin) {\n const oldWidth = UnicodeService.extractWidth(preceding);\n if (oldWidth === 0) {\n shouldJoin = false;\n } else if (oldWidth > width) {\n width = oldWidth;\n }\n }\n return UnicodeService.createPropertyValue(0, width, shouldJoin);\n }\n}\n","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\ninterface IListener<T, U = void> {\n (arg1: T, arg2: U): void;\n}\n\nexport interface IEvent<T, U = void> {\n (listener: (arg1: T, arg2: U) => any): IDisposable;\n}\n\nexport interface IEventEmitter<T, U = void> {\n event: IEvent<T, U>;\n fire(arg1: T, arg2: U): void;\n dispose(): void;\n}\n\nexport class EventEmitter<T, U = void> implements IEventEmitter<T, U> {\n private _listeners: IListener<T, U>[] = [];\n private _event?: IEvent<T, U>;\n private _disposed: boolean = false;\n\n public get event(): IEvent<T, U> {\n if (!this._event) {\n this._event = (listener: (arg1: T, arg2: U) => any) => {\n this._listeners.push(listener);\n const disposable = {\n dispose: () => {\n if (!this._disposed) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n }\n }\n };\n return disposable;\n };\n }\n return this._event;\n }\n\n public fire(arg1: T, arg2: U): void {\n const queue: IListener<T, U>[] = [];\n for (let i = 0; i < this._listeners.length; i++) {\n queue.push(this._listeners[i]);\n }\n for (let i = 0; i < queue.length; i++) {\n queue[i].call(undefined, arg1, arg2);\n }\n }\n\n public dispose(): void {\n this.clearListeners();\n this._disposed = true;\n }\n\n public clearListeners(): void {\n if (this._listeners) {\n this._listeners.length = 0;\n }\n }\n}\n\nexport function forwardEvent<T>(from: IEvent<T>, to: IEventEmitter<T>): IDisposable {\n return from(e => to.fire(e));\n}\n\nexport function runAndSubscribe<T>(event: IEvent<T>, handler: (e: T | undefined) => any): IDisposable {\n handler(undefined);\n return event(e => handler(e));\n}\n","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\nimport { UnicodeService } from 'common/services/UnicodeService';\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],\n [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],\n [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],\n [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],\n [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],\n [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],\n [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],\n [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],\n [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],\n [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],\n [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],\n [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],\n [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],\n [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],\n [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],\n [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],\n [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],\n [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],\n [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],\n [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],\n [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],\n [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],\n [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],\n [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],\n [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],\n [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],\n [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],\n [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],\n [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],\n [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],\n [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],\n [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],\n [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],\n [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],\n [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],\n [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],\n [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],\n [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport class UnicodeV6 implements IUnicodeVersionProvider {\n public readonly version = '6';\n\n constructor() {\n // init lookup table once\n if (!table) {\n table = new Uint8Array(65536);\n table.fill(1);\n table[0] = 0;\n // control chars\n table.fill(0, 1, 32);\n table.fill(0, 0x7f, 0xa0);\n\n // apply wide char rules first\n // wide chars\n table.fill(2, 0x1100, 0x1160);\n table[0x2329] = 2;\n table[0x232a] = 2;\n table.fill(2, 0x2e80, 0xa4d0);\n table[0x303f] = 1; // wrongly in last line\n\n table.fill(2, 0xac00, 0xd7a4);\n table.fill(2, 0xf900, 0xfb00);\n table.fill(2, 0xfe10, 0xfe1a);\n table.fill(2, 0xfe30, 0xfe70);\n table.fill(2, 0xff00, 0xff61);\n table.fill(2, 0xffe0, 0xffe7);\n\n // apply combining last to ensure we overwrite\n // wrongly wide set chars:\n // the original algo evals combining first and falls\n // through to wide check so we simply do here the opposite\n // combining 0\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): UnicodeCharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as UnicodeCharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) return 2;\n return 1;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n let width = this.wcwidth(codepoint);\n let shouldJoin = width === 0 && preceding !== 0;\n if (shouldJoin) {\n const oldWidth = UnicodeService.extractWidth(preceding);\n if (oldWidth === 0) {\n shouldJoin = false;\n } else if (oldWidth > width) {\n width = oldWidth;\n }\n }\n return UnicodeService.createPropertyValue(0, width, shouldJoin);\n }\n}\n","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { EventEmitter } from 'common/EventEmitter';\nimport { UnicodeV6 } from 'common/input/UnicodeV6';\nimport { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\n\nexport class UnicodeService implements IUnicodeService {\n public serviceBrand: any;\n\n private _providers: {[key: string]: IUnicodeVersionProvider} = Object.create(null);\n private _active: string = '';\n private _activeProvider: IUnicodeVersionProvider;\n\n private readonly _onChange = new EventEmitter<string>();\n public readonly onChange = this._onChange.event;\n\n public static extractShouldJoin(value: UnicodeCharProperties): boolean {\n return (value & 1) !== 0;\n }\n public static extractWidth(value: UnicodeCharProperties): UnicodeCharWidth {\n return ((value >> 1) & 0x3) as UnicodeCharWidth;\n }\n public static extractCharKind(value: UnicodeCharProperties): number {\n return value >> 3;\n }\n public static createPropertyValue(state: number, width: number, shouldJoin: boolean = false): UnicodeCharProperties {\n return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin?1:0);\n }\n\n constructor() {\n const defaultProvider = new UnicodeV6();\n this.register(defaultProvider);\n this._active = defaultProvider.version;\n this._activeProvider = defaultProvider;\n }\n\n public dispose(): void {\n this._onChange.dispose();\n }\n\n public get versions(): string[] {\n return Object.keys(this._providers);\n }\n\n public get activeVersion(): string {\n return this._active;\n }\n\n public set activeVersion(version: string) {\n if (!this._providers[version]) {\n throw new Error(`unknown Unicode version \"${version}\"`);\n }\n this._active = version;\n this._activeProvider = this._providers[version];\n this._onChange.fire(version);\n }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._providers[provider.version] = provider;\n }\n\n /**\n * Unicode version dependent interface.\n */\n public wcwidth(num: number): UnicodeCharWidth {\n return this._activeProvider.wcwidth(num);\n }\n\n public getStringCellWidth(s: string): number {\n let result = 0;\n let precedingInfo = 0;\n const length = s.length;\n for (let i = 0; i < length; ++i) {\n let code = s.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n // this should not happen with strings retrieved from\n // Buffer.translateToString as it converts from UTF-32\n // and therefore always should contain the second part\n // for any other string we still have to handle it somehow:\n // simply treat the lonely surrogate first as a single char (UCS-2 behavior)\n return result + this.wcwidth(code);\n }\n const second = s.charCodeAt(i);\n // convert surrogate pair to high codepoint only for valid second part (UTF-16)\n // otherwise treat them independently (UCS-2 behavior)\n if (0xDC00 <= second && second <= 0xDFFF) {\n code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n result += this.wcwidth(second);\n }\n }\n const currentInfo = this.charProperties(code, precedingInfo);\n let chWidth = UnicodeService.extractWidth(currentInfo);\n if (UnicodeService.extractShouldJoin(currentInfo)) {\n chWidth -= UnicodeService.extractWidth(precedingInfo);\n }\n result += chWidth;\n precedingInfo = currentInfo;\n }\n return result;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n return this._activeProvider.charProperties(codepoint, preceding);\n }\n}\n","// 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\t// no module.id needed\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","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * UnicodeVersionProvider for V11.\n */\n\nimport type { Terminal, ITerminalAddon } from '@xterm/xterm';\nimport type { Unicode11Addon as IUnicode11Api } from '@xterm/addon-unicode11';\nimport { UnicodeV11 } from './UnicodeV11';\n\nexport class Unicode11Addon implements ITerminalAddon , IUnicode11Api {\n public activate(terminal: Terminal): void {\n terminal.unicode.register(new UnicodeV11());\n }\n public dispose(): void { }\n}\n"],"names":["root","factory","exports","module","define","amd","this","BMP_COMBINING","HIGH_COMBINING","BMP_WIDE","HIGH_WIDE","table","bisearch","ucs","data","mid","min","max","length","constructor","version","Uint8Array","fill","r","wcwidth","num","charProperties","codepoint","preceding","width","shouldJoin","oldWidth","UnicodeService","extractWidth","createPropertyValue","_listeners","_disposed","event","_event","listener","push","dispose","i","splice","fire","arg1","arg2","queue","call","undefined","clearListeners","from","to","e","handler","extractShouldJoin","value","extractCharKind","state","_providers","Object","create","_active","_onChange","EventEmitter","onChange","defaultProvider","UnicodeV6","register","_activeProvider","versions","keys","activeVersion","Error","provider","getStringCellWidth","s","result","precedingInfo","code","charCodeAt","second","currentInfo","chWidth","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","activate","terminal","unicode","UnicodeV11"],"sourceRoot":""}
1
+ {"version":3,"file":"addon-unicode11.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAwB,eAAID,IAE5BD,EAAqB,eAAIC,GAC1B,CATD,CASGK,YAAY,I,6GCFf,eAEMC,EAAgB,CACpB,CAAC,IAAQ,KAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,QAELC,EAAiB,CACrB,CAAC,MAAS,OAAU,CAAC,MAAS,OAC9B,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAClD,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,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KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ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","sources":["webpack://Unicode11Addon/webpack/universalModuleDefinition","webpack://Unicode11Addon/./src/UnicodeV11.ts","webpack://Unicode11Addon/../../src/common/input/UnicodeV6.ts","webpack://Unicode11Addon/../../src/common/services/UnicodeService.ts","webpack://Unicode11Addon/../../out/vs/base/common/arrays.js","webpack://Unicode11Addon/../../out/vs/base/common/arraysFind.js","webpack://Unicode11Addon/../../out/vs/base/common/collections.js","webpack://Unicode11Addon/../../out/vs/base/common/errors.js","webpack://Unicode11Addon/../../out/vs/base/common/event.js","webpack://Unicode11Addon/../../out/vs/base/common/functional.js","webpack://Unicode11Addon/../../out/vs/base/common/iterator.js","webpack://Unicode11Addon/../../out/vs/base/common/lifecycle.js","webpack://Unicode11Addon/../../out/vs/base/common/linkedList.js","webpack://Unicode11Addon/../../out/vs/base/common/map.js","webpack://Unicode11Addon/../../out/vs/base/common/stopwatch.js","webpack://Unicode11Addon/webpack/bootstrap","webpack://Unicode11Addon/./src/Unicode11Addon.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Unicode11Addon\"] = factory();\n\telse\n\t\troot[\"Unicode11Addon\"] = factory();\n})(globalThis, () => {\nreturn ","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IUnicodeVersionProvider } from '@xterm/xterm';\nimport { UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\nimport { UnicodeService } from 'common/services/UnicodeService';\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0489], [0x0591, 0x05BD],\n [0x05BF, 0x05BF], [0x05C1, 0x05C2], [0x05C4, 0x05C5],\n [0x05C7, 0x05C7], [0x0600, 0x0605], [0x0610, 0x061A],\n [0x061C, 0x061C], [0x064B, 0x065F], [0x0670, 0x0670],\n [0x06D6, 0x06DD], [0x06DF, 0x06E4], [0x06E7, 0x06E8],\n [0x06EA, 0x06ED], [0x070F, 0x070F], [0x0711, 0x0711],\n [0x0730, 0x074A], [0x07A6, 0x07B0], [0x07EB, 0x07F3],\n [0x07FD, 0x07FD], [0x0816, 0x0819], [0x081B, 0x0823],\n [0x0825, 0x0827], [0x0829, 0x082D], [0x0859, 0x085B],\n [0x08D3, 0x0902], [0x093A, 0x093A], [0x093C, 0x093C],\n [0x0941, 0x0948], [0x094D, 0x094D], [0x0951, 0x0957],\n [0x0962, 0x0963], [0x0981, 0x0981], [0x09BC, 0x09BC],\n [0x09C1, 0x09C4], [0x09CD, 0x09CD], [0x09E2, 0x09E3],\n [0x09FE, 0x09FE], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A51, 0x0A51], [0x0A70, 0x0A71], [0x0A75, 0x0A75],\n [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], [0x0AC1, 0x0AC5],\n [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], [0x0AE2, 0x0AE3],\n [0x0AFA, 0x0AFF], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B44], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B62, 0x0B63], [0x0B82, 0x0B82],\n [0x0BC0, 0x0BC0], [0x0BCD, 0x0BCD], [0x0C00, 0x0C00],\n [0x0C04, 0x0C04], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0C62, 0x0C63],\n [0x0C81, 0x0C81], [0x0CBC, 0x0CBC], [0x0CBF, 0x0CBF],\n [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], [0x0CE2, 0x0CE3],\n [0x0D00, 0x0D01], [0x0D3B, 0x0D3C], [0x0D41, 0x0D44],\n [0x0D4D, 0x0D4D], [0x0D62, 0x0D63], [0x0DCA, 0x0DCA],\n [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], [0x0E31, 0x0E31],\n [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], [0x0EB1, 0x0EB1],\n [0x0EB4, 0x0EBC], [0x0EC8, 0x0ECD], [0x0F18, 0x0F19],\n [0x0F35, 0x0F35], [0x0F37, 0x0F37], [0x0F39, 0x0F39],\n [0x0F71, 0x0F7E], [0x0F80, 0x0F84], [0x0F86, 0x0F87],\n [0x0F8D, 0x0F97], [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6],\n [0x102D, 0x1030], [0x1032, 0x1037], [0x1039, 0x103A],\n [0x103D, 0x103E], [0x1058, 0x1059], [0x105E, 0x1060],\n [0x1071, 0x1074], [0x1082, 0x1082], [0x1085, 0x1086],\n [0x108D, 0x108D], [0x109D, 0x109D], [0x1160, 0x11FF],\n [0x135D, 0x135F], [0x1712, 0x1714], [0x1732, 0x1734],\n [0x1752, 0x1753], [0x1772, 0x1773], [0x17B4, 0x17B5],\n [0x17B7, 0x17BD], [0x17C6, 0x17C6], [0x17C9, 0x17D3],\n [0x17DD, 0x17DD], [0x180B, 0x180E], [0x1885, 0x1886],\n [0x18A9, 0x18A9], [0x1920, 0x1922], [0x1927, 0x1928],\n [0x1932, 0x1932], [0x1939, 0x193B], [0x1A17, 0x1A18],\n [0x1A1B, 0x1A1B], [0x1A56, 0x1A56], [0x1A58, 0x1A5E],\n [0x1A60, 0x1A60], [0x1A62, 0x1A62], [0x1A65, 0x1A6C],\n [0x1A73, 0x1A7C], [0x1A7F, 0x1A7F], [0x1AB0, 0x1ABE],\n [0x1B00, 0x1B03], [0x1B34, 0x1B34], [0x1B36, 0x1B3A],\n [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], [0x1B6B, 0x1B73],\n [0x1B80, 0x1B81], [0x1BA2, 0x1BA5], [0x1BA8, 0x1BA9],\n [0x1BAB, 0x1BAD], [0x1BE6, 0x1BE6], [0x1BE8, 0x1BE9],\n [0x1BED, 0x1BED], [0x1BEF, 0x1BF1], [0x1C2C, 0x1C33],\n [0x1C36, 0x1C37], [0x1CD0, 0x1CD2], [0x1CD4, 0x1CE0],\n [0x1CE2, 0x1CE8], [0x1CED, 0x1CED], [0x1CF4, 0x1CF4],\n [0x1CF8, 0x1CF9], [0x1DC0, 0x1DF9], [0x1DFB, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2064],\n [0x2066, 0x206F], [0x20D0, 0x20F0], [0x2CEF, 0x2CF1],\n [0x2D7F, 0x2D7F], [0x2DE0, 0x2DFF], [0x302A, 0x302D],\n [0x3099, 0x309A], [0xA66F, 0xA672], [0xA674, 0xA67D],\n [0xA69E, 0xA69F], [0xA6F0, 0xA6F1], [0xA802, 0xA802],\n [0xA806, 0xA806], [0xA80B, 0xA80B], [0xA825, 0xA826],\n [0xA8C4, 0xA8C5], [0xA8E0, 0xA8F1], [0xA8FF, 0xA8FF],\n [0xA926, 0xA92D], [0xA947, 0xA951], [0xA980, 0xA982],\n [0xA9B3, 0xA9B3], [0xA9B6, 0xA9B9], [0xA9BC, 0xA9BD],\n [0xA9E5, 0xA9E5], [0xAA29, 0xAA2E], [0xAA31, 0xAA32],\n [0xAA35, 0xAA36], [0xAA43, 0xAA43], [0xAA4C, 0xAA4C],\n [0xAA7C, 0xAA7C], [0xAAB0, 0xAAB0], [0xAAB2, 0xAAB4],\n [0xAAB7, 0xAAB8], [0xAABE, 0xAABF], [0xAAC1, 0xAAC1],\n [0xAAEC, 0xAAED], [0xAAF6, 0xAAF6], [0xABE5, 0xABE5],\n [0xABE8, 0xABE8], [0xABED, 0xABED], [0xFB1E, 0xFB1E],\n [0xFE00, 0xFE0F], [0xFE20, 0xFE2F], [0xFEFF, 0xFEFF],\n [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x101FD, 0x101FD], [0x102E0, 0x102E0],\n [0x10376, 0x1037A], [0x10A01, 0x10A03], [0x10A05, 0x10A06],\n [0x10A0C, 0x10A0F], [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F],\n [0x10AE5, 0x10AE6], [0x10D24, 0x10D27], [0x10F46, 0x10F50],\n [0x11001, 0x11001], [0x11038, 0x11046], [0x1107F, 0x11081],\n [0x110B3, 0x110B6], [0x110B9, 0x110BA], [0x110BD, 0x110BD],\n [0x110CD, 0x110CD], [0x11100, 0x11102], [0x11127, 0x1112B],\n [0x1112D, 0x11134], [0x11173, 0x11173], [0x11180, 0x11181],\n [0x111B6, 0x111BE], [0x111C9, 0x111CC], [0x1122F, 0x11231],\n [0x11234, 0x11234], [0x11236, 0x11237], [0x1123E, 0x1123E],\n [0x112DF, 0x112DF], [0x112E3, 0x112EA], [0x11300, 0x11301],\n [0x1133B, 0x1133C], [0x11340, 0x11340], [0x11366, 0x1136C],\n [0x11370, 0x11374], [0x11438, 0x1143F], [0x11442, 0x11444],\n [0x11446, 0x11446], [0x1145E, 0x1145E], [0x114B3, 0x114B8],\n [0x114BA, 0x114BA], [0x114BF, 0x114C0], [0x114C2, 0x114C3],\n [0x115B2, 0x115B5], [0x115BC, 0x115BD], [0x115BF, 0x115C0],\n [0x115DC, 0x115DD], [0x11633, 0x1163A], [0x1163D, 0x1163D],\n [0x1163F, 0x11640], [0x116AB, 0x116AB], [0x116AD, 0x116AD],\n [0x116B0, 0x116B5], [0x116B7, 0x116B7], [0x1171D, 0x1171F],\n [0x11722, 0x11725], [0x11727, 0x1172B], [0x1182F, 0x11837],\n [0x11839, 0x1183A], [0x119D4, 0x119D7], [0x119DA, 0x119DB],\n [0x119E0, 0x119E0], [0x11A01, 0x11A0A], [0x11A33, 0x11A38],\n [0x11A3B, 0x11A3E], [0x11A47, 0x11A47], [0x11A51, 0x11A56],\n [0x11A59, 0x11A5B], [0x11A8A, 0x11A96], [0x11A98, 0x11A99],\n [0x11C30, 0x11C36], [0x11C38, 0x11C3D], [0x11C3F, 0x11C3F],\n [0x11C92, 0x11CA7], [0x11CAA, 0x11CB0], [0x11CB2, 0x11CB3],\n [0x11CB5, 0x11CB6], [0x11D31, 0x11D36], [0x11D3A, 0x11D3A],\n [0x11D3C, 0x11D3D], [0x11D3F, 0x11D45], [0x11D47, 0x11D47],\n [0x11D90, 0x11D91], [0x11D95, 0x11D95], [0x11D97, 0x11D97],\n [0x11EF3, 0x11EF4], [0x13430, 0x13438], [0x16AF0, 0x16AF4],\n [0x16B30, 0x16B36], [0x16F4F, 0x16F4F], [0x16F8F, 0x16F92],\n [0x1BC9D, 0x1BC9E], [0x1BCA0, 0x1BCA3], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0x1DA00, 0x1DA36], [0x1DA3B, 0x1DA6C],\n [0x1DA75, 0x1DA75], [0x1DA84, 0x1DA84], [0x1DA9B, 0x1DA9F],\n [0x1DAA1, 0x1DAAF], [0x1E000, 0x1E006], [0x1E008, 0x1E018],\n [0x1E01B, 0x1E021], [0x1E023, 0x1E024], [0x1E026, 0x1E02A],\n [0x1E130, 0x1E136], [0x1E2EC, 0x1E2EF], [0x1E8D0, 0x1E8D6],\n [0x1E944, 0x1E94A], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\nconst BMP_WIDE = [\n [0x1100, 0x115F], [0x231A, 0x231B], [0x2329, 0x232A],\n [0x23E9, 0x23EC], [0x23F0, 0x23F0], [0x23F3, 0x23F3],\n [0x25FD, 0x25FE], [0x2614, 0x2615], [0x2648, 0x2653],\n [0x267F, 0x267F], [0x2693, 0x2693], [0x26A1, 0x26A1],\n [0x26AA, 0x26AB], [0x26BD, 0x26BE], [0x26C4, 0x26C5],\n [0x26CE, 0x26CE], [0x26D4, 0x26D4], [0x26EA, 0x26EA],\n [0x26F2, 0x26F3], [0x26F5, 0x26F5], [0x26FA, 0x26FA],\n [0x26FD, 0x26FD], [0x2705, 0x2705], [0x270A, 0x270B],\n [0x2728, 0x2728], [0x274C, 0x274C], [0x274E, 0x274E],\n [0x2753, 0x2755], [0x2757, 0x2757], [0x2795, 0x2797],\n [0x27B0, 0x27B0], [0x27BF, 0x27BF], [0x2B1B, 0x2B1C],\n [0x2B50, 0x2B50], [0x2B55, 0x2B55], [0x2E80, 0x2E99],\n [0x2E9B, 0x2EF3], [0x2F00, 0x2FD5], [0x2FF0, 0x2FFB],\n [0x3000, 0x3029], [0x302E, 0x303E], [0x3041, 0x3096],\n [0x309B, 0x30FF], [0x3105, 0x312F], [0x3131, 0x318E],\n [0x3190, 0x31BA], [0x31C0, 0x31E3], [0x31F0, 0x321E],\n [0x3220, 0x3247], [0x3250, 0x4DBF], [0x4E00, 0xA48C],\n [0xA490, 0xA4C6], [0xA960, 0xA97C], [0xAC00, 0xD7A3],\n [0xF900, 0xFAFF], [0xFE10, 0xFE19], [0xFE30, 0xFE52],\n [0xFE54, 0xFE66], [0xFE68, 0xFE6B], [0xFF01, 0xFF60],\n [0xFFE0, 0xFFE6]\n];\nconst HIGH_WIDE = [\n [0x16FE0, 0x16FE3], [0x17000, 0x187F7],\n [0x18800, 0x18AF2], [0x1B000, 0x1B11E], [0x1B150, 0x1B152],\n [0x1B164, 0x1B167], [0x1B170, 0x1B2FB], [0x1F004, 0x1F004],\n [0x1F0CF, 0x1F0CF], [0x1F18E, 0x1F18E], [0x1F191, 0x1F19A],\n [0x1F200, 0x1F202], [0x1F210, 0x1F23B], [0x1F240, 0x1F248],\n [0x1F250, 0x1F251], [0x1F260, 0x1F265], [0x1F300, 0x1F320],\n [0x1F32D, 0x1F335], [0x1F337, 0x1F37C], [0x1F37E, 0x1F393],\n [0x1F3A0, 0x1F3CA], [0x1F3CF, 0x1F3D3], [0x1F3E0, 0x1F3F0],\n [0x1F3F4, 0x1F3F4], [0x1F3F8, 0x1F43E], [0x1F440, 0x1F440],\n [0x1F442, 0x1F4FC], [0x1F4FF, 0x1F53D], [0x1F54B, 0x1F54E],\n [0x1F550, 0x1F567], [0x1F57A, 0x1F57A], [0x1F595, 0x1F596],\n [0x1F5A4, 0x1F5A4], [0x1F5FB, 0x1F64F], [0x1F680, 0x1F6C5],\n [0x1F6CC, 0x1F6CC], [0x1F6D0, 0x1F6D2], [0x1F6D5, 0x1F6D5],\n [0x1F6EB, 0x1F6EC], [0x1F6F4, 0x1F6FA], [0x1F7E0, 0x1F7EB],\n [0x1F90D, 0x1F971], [0x1F973, 0x1F976], [0x1F97A, 0x1F9A2],\n [0x1F9A5, 0x1F9AA], [0x1F9AE, 0x1F9CA], [0x1F9CD, 0x1F9FF],\n [0x1FA70, 0x1FA73], [0x1FA78, 0x1FA7A], [0x1FA80, 0x1FA82],\n [0x1FA90, 0x1FA95], [0x20000, 0x2FFFD], [0x30000, 0x3FFFD]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\n\nexport class UnicodeV11 implements IUnicodeVersionProvider {\n public readonly version = '11';\n\n constructor() {\n if (!table) {\n table = new Uint8Array(65536);\n table.fill(1);\n table[0] = 0;\n table.fill(0, 1, 32);\n table.fill(0, 0x7f, 0xa0);\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n for (let r = 0; r < BMP_WIDE.length; ++r) {\n table.fill(2, BMP_WIDE[r][0], BMP_WIDE[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): UnicodeCharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as UnicodeCharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if (bisearch(num, HIGH_WIDE)) return 2;\n return 1;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n let width = this.wcwidth(codepoint);\n let shouldJoin = width === 0 && preceding !== 0;\n if (shouldJoin) {\n const oldWidth = UnicodeService.extractWidth(preceding);\n if (oldWidth === 0) {\n shouldJoin = false;\n } else if (oldWidth > width) {\n width = oldWidth;\n }\n }\n return UnicodeService.createPropertyValue(0, width, shouldJoin);\n }\n}\n","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\nimport { UnicodeService } from 'common/services/UnicodeService';\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],\n [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],\n [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],\n [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],\n [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],\n [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],\n [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],\n [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],\n [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],\n [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],\n [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],\n [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],\n [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],\n [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],\n [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],\n [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],\n [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],\n [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],\n [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],\n [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],\n [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],\n [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],\n [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],\n [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],\n [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],\n [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],\n [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],\n [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],\n [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],\n [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],\n [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],\n [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],\n [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],\n [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],\n [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],\n [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],\n [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],\n [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport class UnicodeV6 implements IUnicodeVersionProvider {\n public readonly version = '6';\n\n constructor() {\n // init lookup table once\n if (!table) {\n table = new Uint8Array(65536);\n table.fill(1);\n table[0] = 0;\n // control chars\n table.fill(0, 1, 32);\n table.fill(0, 0x7f, 0xa0);\n\n // apply wide char rules first\n // wide chars\n table.fill(2, 0x1100, 0x1160);\n table[0x2329] = 2;\n table[0x232a] = 2;\n table.fill(2, 0x2e80, 0xa4d0);\n table[0x303f] = 1; // wrongly in last line\n\n table.fill(2, 0xac00, 0xd7a4);\n table.fill(2, 0xf900, 0xfb00);\n table.fill(2, 0xfe10, 0xfe1a);\n table.fill(2, 0xfe30, 0xfe70);\n table.fill(2, 0xff00, 0xff61);\n table.fill(2, 0xffe0, 0xffe7);\n\n // apply combining last to ensure we overwrite\n // wrongly wide set chars:\n // the original algo evals combining first and falls\n // through to wide check so we simply do here the opposite\n // combining 0\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): UnicodeCharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as UnicodeCharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) return 2;\n return 1;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n let width = this.wcwidth(codepoint);\n let shouldJoin = width === 0 && preceding !== 0;\n if (shouldJoin) {\n const oldWidth = UnicodeService.extractWidth(preceding);\n if (oldWidth === 0) {\n shouldJoin = false;\n } else if (oldWidth > width) {\n width = oldWidth;\n }\n }\n return UnicodeService.createPropertyValue(0, width, shouldJoin);\n }\n}\n","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { UnicodeV6 } from 'common/input/UnicodeV6';\nimport { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';\nimport { Emitter } from 'vs/base/common/event';\n\nexport class UnicodeService implements IUnicodeService {\n public serviceBrand: any;\n\n private _providers: {[key: string]: IUnicodeVersionProvider} = Object.create(null);\n private _active: string = '';\n private _activeProvider: IUnicodeVersionProvider;\n\n private readonly _onChange = new Emitter<string>();\n public readonly onChange = this._onChange.event;\n\n public static extractShouldJoin(value: UnicodeCharProperties): boolean {\n return (value & 1) !== 0;\n }\n public static extractWidth(value: UnicodeCharProperties): UnicodeCharWidth {\n return ((value >> 1) & 0x3) as UnicodeCharWidth;\n }\n public static extractCharKind(value: UnicodeCharProperties): number {\n return value >> 3;\n }\n public static createPropertyValue(state: number, width: number, shouldJoin: boolean = false): UnicodeCharProperties {\n return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin?1:0);\n }\n\n constructor() {\n const defaultProvider = new UnicodeV6();\n this.register(defaultProvider);\n this._active = defaultProvider.version;\n this._activeProvider = defaultProvider;\n }\n\n public dispose(): void {\n this._onChange.dispose();\n }\n\n public get versions(): string[] {\n return Object.keys(this._providers);\n }\n\n public get activeVersion(): string {\n return this._active;\n }\n\n public set activeVersion(version: string) {\n if (!this._providers[version]) {\n throw new Error(`unknown Unicode version \"${version}\"`);\n }\n this._active = version;\n this._activeProvider = this._providers[version];\n this._onChange.fire(version);\n }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._providers[provider.version] = provider;\n }\n\n /**\n * Unicode version dependent interface.\n */\n public wcwidth(num: number): UnicodeCharWidth {\n return this._activeProvider.wcwidth(num);\n }\n\n public getStringCellWidth(s: string): number {\n let result = 0;\n let precedingInfo = 0;\n const length = s.length;\n for (let i = 0; i < length; ++i) {\n let code = s.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n // this should not happen with strings retrieved from\n // Buffer.translateToString as it converts from UTF-32\n // and therefore always should contain the second part\n // for any other string we still have to handle it somehow:\n // simply treat the lonely surrogate first as a single char (UCS-2 behavior)\n return result + this.wcwidth(code);\n }\n const second = s.charCodeAt(i);\n // convert surrogate pair to high codepoint only for valid second part (UTF-16)\n // otherwise treat them independently (UCS-2 behavior)\n if (0xDC00 <= second && second <= 0xDFFF) {\n code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n result += this.wcwidth(second);\n }\n }\n const currentInfo = this.charProperties(code, precedingInfo);\n let chWidth = UnicodeService.extractWidth(currentInfo);\n if (UnicodeService.extractShouldJoin(currentInfo)) {\n chWidth -= UnicodeService.extractWidth(precedingInfo);\n }\n result += chWidth;\n precedingInfo = currentInfo;\n }\n return result;\n }\n\n public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {\n return this._activeProvider.charProperties(codepoint, preceding);\n }\n}\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Permutation = exports.CallbackIterable = exports.ArrayQueue = exports.booleanComparator = exports.numberComparator = exports.CompareResult = void 0;\nexports.tail = tail;\nexports.tail2 = tail2;\nexports.equals = equals;\nexports.removeFastWithoutKeepingOrder = removeFastWithoutKeepingOrder;\nexports.binarySearch = binarySearch;\nexports.binarySearch2 = binarySearch2;\nexports.quickSelect = quickSelect;\nexports.groupBy = groupBy;\nexports.groupAdjacentBy = groupAdjacentBy;\nexports.forEachAdjacent = forEachAdjacent;\nexports.forEachWithNeighbors = forEachWithNeighbors;\nexports.sortedDiff = sortedDiff;\nexports.delta = delta;\nexports.top = top;\nexports.topAsync = topAsync;\nexports.coalesce = coalesce;\nexports.coalesceInPlace = coalesceInPlace;\nexports.move = move;\nexports.isFalsyOrEmpty = isFalsyOrEmpty;\nexports.isNonEmptyArray = isNonEmptyArray;\nexports.distinct = distinct;\nexports.uniqueFilter = uniqueFilter;\nexports.firstOrDefault = firstOrDefault;\nexports.lastOrDefault = lastOrDefault;\nexports.commonPrefixLength = commonPrefixLength;\nexports.range = range;\nexports.index = index;\nexports.insert = insert;\nexports.remove = remove;\nexports.arrayInsert = arrayInsert;\nexports.shuffle = shuffle;\nexports.pushToStart = pushToStart;\nexports.pushToEnd = pushToEnd;\nexports.pushMany = pushMany;\nexports.mapArrayOrNot = mapArrayOrNot;\nexports.asArray = asArray;\nexports.getRandomElement = getRandomElement;\nexports.insertInto = insertInto;\nexports.splice = splice;\nexports.compareBy = compareBy;\nexports.tieBreakComparators = tieBreakComparators;\nexports.reverseOrder = reverseOrder;\nconst errors_1 = require(\"vs/base/common/errors\");\nconst arraysFind_1 = require(\"./arraysFind\");\n/**\n * Returns the last element of an array.\n * @param array The array.\n * @param n Which element from the end (default is zero).\n */\nfunction tail(array, n = 0) {\n return array[array.length - (1 + n)];\n}\nfunction tail2(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nfunction equals(one, other, itemEquals = (a, b) => a === b) {\n if (one === other) {\n return true;\n }\n if (!one || !other) {\n return false;\n }\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0, len = one.length; i < len; i++) {\n if (!itemEquals(one[i], other[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Remove the element at `index` by replacing it with the last element. This is faster than `splice`\n * but changes the order of the array\n */\nfunction removeFastWithoutKeepingOrder(array, index) {\n const last = array.length - 1;\n if (index < last) {\n array[index] = array[last];\n }\n array.pop();\n}\n/**\n * Performs a binary search algorithm over a sorted array.\n *\n * @param array The array being searched.\n * @param key The value we search for.\n * @param comparator A function that takes two array elements and returns zero\n * if they are equal, a negative number if the first element precedes the\n * second one in the sorting order, or a positive number if the second element\n * precedes the first one.\n * @return See {@link binarySearch2}\n */\nfunction binarySearch(array, key, comparator) {\n return binarySearch2(array.length, i => comparator(array[i], key));\n}\n/**\n * Performs a binary search algorithm over a sorted collection. Useful for cases\n * when we need to perform a binary search over something that isn't actually an\n * array, and converting data to an array would defeat the use of binary search\n * in the first place.\n *\n * @param length The collection length.\n * @param compareToKey A function that takes an index of an element in the\n * collection and returns zero if the value at this index is equal to the\n * search key, a negative number if the value precedes the search key in the\n * sorting order, or a positive number if the search key precedes the value.\n * @return A non-negative index of an element, if found. If not found, the\n * result is -(n+1) (or ~n, using bitwise notation), where n is the index\n * where the key should be inserted to maintain the sorting order.\n */\nfunction binarySearch2(length, compareToKey) {\n let low = 0, high = length - 1;\n while (low <= high) {\n const mid = ((low + high) / 2) | 0;\n const comp = compareToKey(mid);\n if (comp < 0) {\n low = mid + 1;\n }\n else if (comp > 0) {\n high = mid - 1;\n }\n else {\n return mid;\n }\n }\n return -(low + 1);\n}\nfunction quickSelect(nth, data, compare) {\n nth = nth | 0;\n if (nth >= data.length) {\n throw new TypeError('invalid index');\n }\n const pivotValue = data[Math.floor(data.length * Math.random())];\n const lower = [];\n const higher = [];\n const pivots = [];\n for (const value of data) {\n const val = compare(value, pivotValue);\n if (val < 0) {\n lower.push(value);\n }\n else if (val > 0) {\n higher.push(value);\n }\n else {\n pivots.push(value);\n }\n }\n if (nth < lower.length) {\n return quickSelect(nth, lower, compare);\n }\n else if (nth < lower.length + pivots.length) {\n return pivots[0];\n }\n else {\n return quickSelect(nth - (lower.length + pivots.length), higher, compare);\n }\n}\nfunction groupBy(data, compare) {\n const result = [];\n let currentGroup = undefined;\n for (const element of data.slice(0).sort(compare)) {\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\n currentGroup = [element];\n result.push(currentGroup);\n }\n else {\n currentGroup.push(element);\n }\n }\n return result;\n}\n/**\n * Splits the given items into a list of (non-empty) groups.\n * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group.\n * The order of the items is preserved.\n */\nfunction* groupAdjacentBy(items, shouldBeGrouped) {\n let currentGroup;\n let last;\n for (const item of items) {\n if (last !== undefined && shouldBeGrouped(last, item)) {\n currentGroup.push(item);\n }\n else {\n if (currentGroup) {\n yield currentGroup;\n }\n currentGroup = [item];\n }\n last = item;\n }\n if (currentGroup) {\n yield currentGroup;\n }\n}\nfunction forEachAdjacent(arr, f) {\n for (let i = 0; i <= arr.length; i++) {\n f(i === 0 ? undefined : arr[i - 1], i === arr.length ? undefined : arr[i]);\n }\n}\nfunction forEachWithNeighbors(arr, f) {\n for (let i = 0; i < arr.length; i++) {\n f(i === 0 ? undefined : arr[i - 1], arr[i], i + 1 === arr.length ? undefined : arr[i + 1]);\n }\n}\n/**\n * Diffs two *sorted* arrays and computes the splices which apply the diff.\n */\nfunction sortedDiff(before, after, compare) {\n const result = [];\n function pushSplice(start, deleteCount, toInsert) {\n if (deleteCount === 0 && toInsert.length === 0) {\n return;\n }\n const latest = result[result.length - 1];\n if (latest && latest.start + latest.deleteCount === start) {\n latest.deleteCount += deleteCount;\n latest.toInsert.push(...toInsert);\n }\n else {\n result.push({ start, deleteCount, toInsert });\n }\n }\n let beforeIdx = 0;\n let afterIdx = 0;\n while (true) {\n if (beforeIdx === before.length) {\n pushSplice(beforeIdx, 0, after.slice(afterIdx));\n break;\n }\n if (afterIdx === after.length) {\n pushSplice(beforeIdx, before.length - beforeIdx, []);\n break;\n }\n const beforeElement = before[beforeIdx];\n const afterElement = after[afterIdx];\n const n = compare(beforeElement, afterElement);\n if (n === 0) {\n // equal\n beforeIdx += 1;\n afterIdx += 1;\n }\n else if (n < 0) {\n // beforeElement is smaller -> before element removed\n pushSplice(beforeIdx, 1, []);\n beforeIdx += 1;\n }\n else if (n > 0) {\n // beforeElement is greater -> after element added\n pushSplice(beforeIdx, 0, [afterElement]);\n afterIdx += 1;\n }\n }\n return result;\n}\n/**\n * Takes two *sorted* arrays and computes their delta (removed, added elements).\n * Finishes in `Math.min(before.length, after.length)` steps.\n */\nfunction delta(before, after, compare) {\n const splices = sortedDiff(before, after, compare);\n const removed = [];\n const added = [];\n for (const splice of splices) {\n removed.push(...before.slice(splice.start, splice.start + splice.deleteCount));\n added.push(...splice.toInsert);\n }\n return { removed, added };\n}\n/**\n * Returns the top N elements from the array.\n *\n * Faster than sorting the entire array when the array is a lot larger than N.\n *\n * @param array The unsorted array.\n * @param compare A sort function for the elements.\n * @param n The number of elements to return.\n * @return The first n elements from array when sorted with compare.\n */\nfunction top(array, compare, n) {\n if (n === 0) {\n return [];\n }\n const result = array.slice(0, n).sort(compare);\n topStep(array, compare, result, n, array.length);\n return result;\n}\n/**\n * Asynchronous variant of `top()` allowing for splitting up work in batches between which the event loop can run.\n *\n * Returns the top N elements from the array.\n *\n * Faster than sorting the entire array when the array is a lot larger than N.\n *\n * @param array The unsorted array.\n * @param compare A sort function for the elements.\n * @param n The number of elements to return.\n * @param batch The number of elements to examine before yielding to the event loop.\n * @return The first n elements from array when sorted with compare.\n */\nfunction topAsync(array, compare, n, batch, token) {\n if (n === 0) {\n return Promise.resolve([]);\n }\n return new Promise((resolve, reject) => {\n (async () => {\n const o = array.length;\n const result = array.slice(0, n).sort(compare);\n for (let i = n, m = Math.min(n + batch, o); i < o; i = m, m = Math.min(m + batch, o)) {\n if (i > n) {\n await new Promise(resolve => setTimeout(resolve)); // any other delay function would starve I/O\n }\n if (token && token.isCancellationRequested) {\n throw new errors_1.CancellationError();\n }\n topStep(array, compare, result, i, m);\n }\n return result;\n })()\n .then(resolve, reject);\n });\n}\nfunction topStep(array, compare, result, i, m) {\n for (const n = result.length; i < m; i++) {\n const element = array[i];\n if (compare(element, result[n - 1]) < 0) {\n result.pop();\n const j = (0, arraysFind_1.findFirstIdxMonotonousOrArrLen)(result, e => compare(element, e) < 0);\n result.splice(j, 0, element);\n }\n }\n}\n/**\n * @returns New array with all falsy values removed. The original array IS NOT modified.\n */\nfunction coalesce(array) {\n return array.filter((e) => !!e);\n}\n/**\n * Remove all falsy values from `array`. The original array IS modified.\n */\nfunction coalesceInPlace(array) {\n let to = 0;\n for (let i = 0; i < array.length; i++) {\n if (!!array[i]) {\n array[to] = array[i];\n to += 1;\n }\n }\n array.length = to;\n}\n/**\n * @deprecated Use `Array.copyWithin` instead\n */\nfunction move(array, from, to) {\n array.splice(to, 0, array.splice(from, 1)[0]);\n}\n/**\n * @returns false if the provided object is an array and not empty.\n */\nfunction isFalsyOrEmpty(obj) {\n return !Array.isArray(obj) || obj.length === 0;\n}\nfunction isNonEmptyArray(obj) {\n return Array.isArray(obj) && obj.length > 0;\n}\n/**\n * Removes duplicates from the given array. The optional keyFn allows to specify\n * how elements are checked for equality by returning an alternate value for each.\n */\nfunction distinct(array, keyFn = value => value) {\n const seen = new Set();\n return array.filter(element => {\n const key = keyFn(element);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n}\nfunction uniqueFilter(keyFn) {\n const seen = new Set();\n return element => {\n const key = keyFn(element);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n };\n}\nfunction firstOrDefault(array, notFoundValue) {\n return array.length > 0 ? array[0] : notFoundValue;\n}\nfunction lastOrDefault(array, notFoundValue) {\n return array.length > 0 ? array[array.length - 1] : notFoundValue;\n}\nfunction commonPrefixLength(one, other, equals = (a, b) => a === b) {\n let result = 0;\n for (let i = 0, len = Math.min(one.length, other.length); i < len && equals(one[i], other[i]); i++) {\n result++;\n }\n return result;\n}\nfunction range(arg, to) {\n let from = typeof to === 'number' ? arg : 0;\n if (typeof to === 'number') {\n from = arg;\n }\n else {\n from = 0;\n to = arg;\n }\n const result = [];\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n}\nfunction index(array, indexer, mapper) {\n return array.reduce((r, t) => {\n r[indexer(t)] = mapper ? mapper(t) : t;\n return r;\n }, Object.create(null));\n}\n/**\n * Inserts an element into an array. Returns a function which, when\n * called, will remove that element from the array.\n *\n * @deprecated In almost all cases, use a `Set<T>` instead.\n */\nfunction insert(array, element) {\n array.push(element);\n return () => remove(array, element);\n}\n/**\n * Removes an element from an array if it can be found.\n *\n * @deprecated In almost all cases, use a `Set<T>` instead.\n */\nfunction remove(array, element) {\n const index = array.indexOf(element);\n if (index > -1) {\n array.splice(index, 1);\n return element;\n }\n return undefined;\n}\n/**\n * Insert `insertArr` inside `target` at `insertIndex`.\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\n */\nfunction arrayInsert(target, insertIndex, insertArr) {\n const before = target.slice(0, insertIndex);\n const after = target.slice(insertIndex);\n return before.concat(insertArr, after);\n}\n/**\n * Uses Fisher-Yates shuffle to shuffle the given array\n */\nfunction shuffle(array, _seed) {\n let rand;\n if (typeof _seed === 'number') {\n let seed = _seed;\n // Seeded random number generator in JS. Modified from:\n // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript\n rand = () => {\n const x = Math.sin(seed++) * 179426549; // throw away most significant digits and reduce any potential bias\n return x - Math.floor(x);\n };\n }\n else {\n rand = Math.random;\n }\n for (let i = array.length - 1; i > 0; i -= 1) {\n const j = Math.floor(rand() * (i + 1));\n const temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nfunction pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nfunction pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nfunction pushMany(arr, items) {\n for (const item of items) {\n arr.push(item);\n }\n}\nfunction mapArrayOrNot(items, fn) {\n return Array.isArray(items) ?\n items.map(fn) :\n fn(items);\n}\nfunction asArray(x) {\n return Array.isArray(x) ? x : [x];\n}\nfunction getRandomElement(arr) {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n/**\n * Insert the new items in the array.\n * @param array The original array.\n * @param start The zero-based location in the array from which to start inserting elements.\n * @param newItems The items to be inserted\n */\nfunction insertInto(array, start, newItems) {\n const startIdx = getActualStartIndex(array, start);\n const originalLength = array.length;\n const newItemsLength = newItems.length;\n array.length = originalLength + newItemsLength;\n // Move the items after the start index, start from the end so that we don't overwrite any value.\n for (let i = originalLength - 1; i >= startIdx; i--) {\n array[i + newItemsLength] = array[i];\n }\n for (let i = 0; i < newItemsLength; i++) {\n array[i + startIdx] = newItems[i];\n }\n}\n/**\n * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it\n * can only support limited number of items due to the maximum call stack size limit.\n * @param array The original array.\n * @param start The zero-based location in the array from which to start removing elements.\n * @param deleteCount The number of elements to remove.\n * @returns An array containing the elements that were deleted.\n */\nfunction splice(array, start, deleteCount, newItems) {\n const index = getActualStartIndex(array, start);\n let result = array.splice(index, deleteCount);\n if (result === undefined) {\n // see https://bugs.webkit.org/show_bug.cgi?id=261140\n result = [];\n }\n insertInto(array, index, newItems);\n return result;\n}\n/**\n * Determine the actual start index (same logic as the native splice() or slice())\n * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided.\n * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0.\n * @param array The target array.\n * @param start The operation index.\n */\nfunction getActualStartIndex(array, start) {\n return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length);\n}\nvar CompareResult;\n(function (CompareResult) {\n function isLessThan(result) {\n return result < 0;\n }\n CompareResult.isLessThan = isLessThan;\n function isLessThanOrEqual(result) {\n return result <= 0;\n }\n CompareResult.isLessThanOrEqual = isLessThanOrEqual;\n function isGreaterThan(result) {\n return result > 0;\n }\n CompareResult.isGreaterThan = isGreaterThan;\n function isNeitherLessOrGreaterThan(result) {\n return result === 0;\n }\n CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan;\n CompareResult.greaterThan = 1;\n CompareResult.lessThan = -1;\n CompareResult.neitherLessOrGreaterThan = 0;\n})(CompareResult || (exports.CompareResult = CompareResult = {}));\nfunction compareBy(selector, comparator) {\n return (a, b) => comparator(selector(a), selector(b));\n}\nfunction tieBreakComparators(...comparators) {\n return (item1, item2) => {\n for (const comparator of comparators) {\n const result = comparator(item1, item2);\n if (!CompareResult.isNeitherLessOrGreaterThan(result)) {\n return result;\n }\n }\n return CompareResult.neitherLessOrGreaterThan;\n };\n}\n/**\n * The natural order on numbers.\n*/\nconst numberComparator = (a, b) => a - b;\nexports.numberComparator = numberComparator;\nconst booleanComparator = (a, b) => (0, exports.numberComparator)(a ? 1 : 0, b ? 1 : 0);\nexports.booleanComparator = booleanComparator;\nfunction reverseOrder(comparator) {\n return (a, b) => -comparator(a, b);\n}\nclass ArrayQueue {\n /**\n * Constructs a queue that is backed by the given array. Runtime is O(1).\n */\n constructor(items) {\n this.items = items;\n this.firstIdx = 0;\n this.lastIdx = this.items.length - 1;\n }\n get length() {\n return this.lastIdx - this.firstIdx + 1;\n }\n /**\n * Consumes elements from the beginning of the queue as long as the predicate returns true.\n * If no elements were consumed, `null` is returned. Has a runtime of O(result.length).\n */\n takeWhile(predicate) {\n // P(k) := k <= this.lastIdx && predicate(this.items[k])\n // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s)\n let startIdx = this.firstIdx;\n while (startIdx < this.items.length && predicate(this.items[startIdx])) {\n startIdx++;\n }\n const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx);\n this.firstIdx = startIdx;\n return result;\n }\n /**\n * Consumes elements from the end of the queue as long as the predicate returns true.\n * If no elements were consumed, `null` is returned.\n * The result has the same order as the underlying array!\n */\n takeFromEndWhile(predicate) {\n // P(k) := this.firstIdx >= k && predicate(this.items[k])\n // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx]\n let endIdx = this.lastIdx;\n while (endIdx >= 0 && predicate(this.items[endIdx])) {\n endIdx--;\n }\n const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1);\n this.lastIdx = endIdx;\n return result;\n }\n peek() {\n if (this.length === 0) {\n return undefined;\n }\n return this.items[this.firstIdx];\n }\n peekLast() {\n if (this.length === 0) {\n return undefined;\n }\n return this.items[this.lastIdx];\n }\n dequeue() {\n const result = this.items[this.firstIdx];\n this.firstIdx++;\n return result;\n }\n removeLast() {\n const result = this.items[this.lastIdx];\n this.lastIdx--;\n return result;\n }\n takeCount(count) {\n const result = this.items.slice(this.firstIdx, this.firstIdx + count);\n this.firstIdx += count;\n return result;\n }\n}\nexports.ArrayQueue = ArrayQueue;\n/**\n * This class is faster than an iterator and array for lazy computed data.\n*/\nclass CallbackIterable {\n static { this.empty = new CallbackIterable(_callback => { }); }\n constructor(\n /**\n * Calls the callback for every item.\n * Stops when the callback returns false.\n */\n iterate) {\n this.iterate = iterate;\n }\n forEach(handler) {\n this.iterate(item => { handler(item); return true; });\n }\n toArray() {\n const result = [];\n this.iterate(item => { result.push(item); return true; });\n return result;\n }\n filter(predicate) {\n return new CallbackIterable(cb => this.iterate(item => predicate(item) ? cb(item) : true));\n }\n map(mapFn) {\n return new CallbackIterable(cb => this.iterate(item => cb(mapFn(item))));\n }\n some(predicate) {\n let result = false;\n this.iterate(item => { result = predicate(item); return !result; });\n return result;\n }\n findFirst(predicate) {\n let result;\n this.iterate(item => {\n if (predicate(item)) {\n result = item;\n return false;\n }\n return true;\n });\n return result;\n }\n findLast(predicate) {\n let result;\n this.iterate(item => {\n if (predicate(item)) {\n result = item;\n }\n return true;\n });\n return result;\n }\n findLastMaxBy(comparator) {\n let result;\n let first = true;\n this.iterate(item => {\n if (first || CompareResult.isGreaterThan(comparator(item, result))) {\n first = false;\n result = item;\n }\n return true;\n });\n return result;\n }\n}\nexports.CallbackIterable = CallbackIterable;\n/**\n * Represents a re-arrangement of items in an array.\n */\nclass Permutation {\n constructor(_indexMap) {\n this._indexMap = _indexMap;\n }\n /**\n * Returns a permutation that sorts the given array according to the given compare function.\n */\n static createSortPermutation(arr, compareFn) {\n const sortIndices = Array.from(arr.keys()).sort((index1, index2) => compareFn(arr[index1], arr[index2]));\n return new Permutation(sortIndices);\n }\n /**\n * Returns a new array with the elements of the given array re-arranged according to this permutation.\n */\n apply(arr) {\n return arr.map((_, index) => arr[this._indexMap[index]]);\n }\n /**\n * Returns a new permutation that undoes the re-arrangement of this permutation.\n */\n inverse() {\n const inverseIndexMap = this._indexMap.slice();\n for (let i = 0; i < this._indexMap.length; i++) {\n inverseIndexMap[this._indexMap[i]] = i;\n }\n return new Permutation(inverseIndexMap);\n }\n}\nexports.Permutation = Permutation;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MonotonousArray = void 0;\nexports.findLast = findLast;\nexports.findLastIdx = findLastIdx;\nexports.findLastMonotonous = findLastMonotonous;\nexports.findLastIdxMonotonous = findLastIdxMonotonous;\nexports.findFirstMonotonous = findFirstMonotonous;\nexports.findFirstIdxMonotonousOrArrLen = findFirstIdxMonotonousOrArrLen;\nexports.findFirstIdxMonotonous = findFirstIdxMonotonous;\nexports.findFirstMax = findFirstMax;\nexports.findLastMax = findLastMax;\nexports.findFirstMin = findFirstMin;\nexports.findMaxIdx = findMaxIdx;\nexports.mapFindFirst = mapFindFirst;\nfunction findLast(array, predicate) {\n const idx = findLastIdx(array, predicate);\n if (idx === -1) {\n return undefined;\n }\n return array[idx];\n}\nfunction findLastIdx(array, predicate, fromIndex = array.length - 1) {\n for (let i = fromIndex; i >= 0; i--) {\n const element = array[i];\n if (predicate(element)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `undefined` if no item matches, otherwise the last item that matches the predicate.\n */\nfunction findLastMonotonous(array, predicate) {\n const idx = findLastIdxMonotonous(array, predicate);\n return idx === -1 ? undefined : array[idx];\n}\n/**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate.\n */\nfunction findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) {\n i = k + 1;\n }\n else {\n j = k;\n }\n }\n return i - 1;\n}\n/**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `undefined` if no item matches, otherwise the first item that matches the predicate.\n */\nfunction findFirstMonotonous(array, predicate) {\n const idx = findFirstIdxMonotonousOrArrLen(array, predicate);\n return idx === array.length ? undefined : array[idx];\n}\n/**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate.\n */\nfunction findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) {\n j = k;\n }\n else {\n i = k + 1;\n }\n }\n return i;\n}\nfunction findFirstIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) {\n const idx = findFirstIdxMonotonousOrArrLen(array, predicate, startIdx, endIdxEx);\n return idx === array.length ? -1 : idx;\n}\n/**\n * Use this when\n * * You have a sorted array\n * * You query this array with a monotonous predicate to find the last item that has a certain property.\n * * You query this array multiple times with monotonous predicates that get weaker and weaker.\n */\nclass MonotonousArray {\n static { this.assertInvariants = false; }\n constructor(_array) {\n this._array = _array;\n this._findLastMonotonousLastIdx = 0;\n }\n /**\n * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`.\n */\n findLastMonotonous(predicate) {\n if (MonotonousArray.assertInvariants) {\n if (this._prevFindLastPredicate) {\n for (const item of this._array) {\n if (this._prevFindLastPredicate(item) && !predicate(item)) {\n throw new Error('MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.');\n }\n }\n }\n this._prevFindLastPredicate = predicate;\n }\n const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx);\n this._findLastMonotonousLastIdx = idx + 1;\n return idx === -1 ? undefined : this._array[idx];\n }\n}\nexports.MonotonousArray = MonotonousArray;\n/**\n * Returns the first item that is equal to or greater than every other item.\n*/\nfunction findFirstMax(array, comparator) {\n if (array.length === 0) {\n return undefined;\n }\n let max = array[0];\n for (let i = 1; i < array.length; i++) {\n const item = array[i];\n if (comparator(item, max) > 0) {\n max = item;\n }\n }\n return max;\n}\n/**\n * Returns the last item that is equal to or greater than every other item.\n*/\nfunction findLastMax(array, comparator) {\n if (array.length === 0) {\n return undefined;\n }\n let max = array[0];\n for (let i = 1; i < array.length; i++) {\n const item = array[i];\n if (comparator(item, max) >= 0) {\n max = item;\n }\n }\n return max;\n}\n/**\n * Returns the first item that is equal to or less than every other item.\n*/\nfunction findFirstMin(array, comparator) {\n return findFirstMax(array, (a, b) => -comparator(a, b));\n}\nfunction findMaxIdx(array, comparator) {\n if (array.length === 0) {\n return -1;\n }\n let maxIdx = 0;\n for (let i = 1; i < array.length; i++) {\n const item = array[i];\n if (comparator(item, array[maxIdx]) > 0) {\n maxIdx = i;\n }\n }\n return maxIdx;\n}\n/**\n * Returns the first mapped value of the array which is not undefined.\n */\nfunction mapFindFirst(items, mapFn) {\n for (const value of items) {\n const mapped = mapFn(value);\n if (mapped !== undefined) {\n return mapped;\n }\n }\n return undefined;\n}\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetWithKey = void 0;\nexports.groupBy = groupBy;\nexports.diffSets = diffSets;\nexports.diffMaps = diffMaps;\nexports.intersection = intersection;\n/**\n * Groups the collection into a dictionary based on the provided\n * group function.\n */\nfunction groupBy(data, groupFn) {\n const result = Object.create(null);\n for (const element of data) {\n const key = groupFn(element);\n let target = result[key];\n if (!target) {\n target = result[key] = [];\n }\n target.push(element);\n }\n return result;\n}\nfunction diffSets(before, after) {\n const removed = [];\n const added = [];\n for (const element of before) {\n if (!after.has(element)) {\n removed.push(element);\n }\n }\n for (const element of after) {\n if (!before.has(element)) {\n added.push(element);\n }\n }\n return { removed, added };\n}\nfunction diffMaps(before, after) {\n const removed = [];\n const added = [];\n for (const [index, value] of before) {\n if (!after.has(index)) {\n removed.push(value);\n }\n }\n for (const [index, value] of after) {\n if (!before.has(index)) {\n added.push(value);\n }\n }\n return { removed, added };\n}\n/**\n * Computes the intersection of two sets.\n *\n * @param setA - The first set.\n * @param setB - The second iterable.\n * @returns A new set containing the elements that are in both `setA` and `setB`.\n */\nfunction intersection(setA, setB) {\n const result = new Set();\n for (const elem of setB) {\n if (setA.has(elem)) {\n result.add(elem);\n }\n }\n return result;\n}\nclass SetWithKey {\n static { _a = Symbol.toStringTag; }\n constructor(values, toKey) {\n this.toKey = toKey;\n this._map = new Map();\n this[_a] = 'SetWithKey';\n for (const value of values) {\n this.add(value);\n }\n }\n get size() {\n return this._map.size;\n }\n add(value) {\n const key = this.toKey(value);\n this._map.set(key, value);\n return this;\n }\n delete(value) {\n return this._map.delete(this.toKey(value));\n }\n has(value) {\n return this._map.has(this.toKey(value));\n }\n *entries() {\n for (const entry of this._map.values()) {\n yield [entry, entry];\n }\n }\n keys() {\n return this.values();\n }\n *values() {\n for (const entry of this._map.values()) {\n yield entry;\n }\n }\n clear() {\n this._map.clear();\n }\n forEach(callbackfn, thisArg) {\n this._map.forEach(entry => callbackfn.call(thisArg, entry, entry, this));\n }\n [Symbol.iterator]() {\n return this.values();\n }\n}\nexports.SetWithKey = SetWithKey;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BugIndicatingError = exports.ErrorNoTelemetry = exports.ExpectedError = exports.NotSupportedError = exports.NotImplementedError = exports.ReadonlyError = exports.CancellationError = exports.errorHandler = exports.ErrorHandler = void 0;\nexports.setUnexpectedErrorHandler = setUnexpectedErrorHandler;\nexports.isSigPipeError = isSigPipeError;\nexports.onUnexpectedError = onUnexpectedError;\nexports.onUnexpectedExternalError = onUnexpectedExternalError;\nexports.transformErrorForSerialization = transformErrorForSerialization;\nexports.transformErrorFromSerialization = transformErrorFromSerialization;\nexports.isCancellationError = isCancellationError;\nexports.canceled = canceled;\nexports.illegalArgument = illegalArgument;\nexports.illegalState = illegalState;\nexports.getErrorMessage = getErrorMessage;\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\nclass ErrorHandler {\n constructor() {\n this.listeners = [];\n this.unexpectedErrorHandler = function (e) {\n setTimeout(() => {\n if (e.stack) {\n if (ErrorNoTelemetry.isErrorNoTelemetry(e)) {\n throw new ErrorNoTelemetry(e.message + '\\n\\n' + e.stack);\n }\n throw new Error(e.message + '\\n\\n' + e.stack);\n }\n throw e;\n }, 0);\n };\n }\n addListener(listener) {\n this.listeners.push(listener);\n return () => {\n this._removeListener(listener);\n };\n }\n emit(e) {\n this.listeners.forEach((listener) => {\n listener(e);\n });\n }\n _removeListener(listener) {\n this.listeners.splice(this.listeners.indexOf(listener), 1);\n }\n setUnexpectedErrorHandler(newUnexpectedErrorHandler) {\n this.unexpectedErrorHandler = newUnexpectedErrorHandler;\n }\n getUnexpectedErrorHandler() {\n return this.unexpectedErrorHandler;\n }\n onUnexpectedError(e) {\n this.unexpectedErrorHandler(e);\n this.emit(e);\n }\n // For external errors, we don't want the listeners to be called\n onUnexpectedExternalError(e) {\n this.unexpectedErrorHandler(e);\n }\n}\nexports.ErrorHandler = ErrorHandler;\nexports.errorHandler = new ErrorHandler();\n/** @skipMangle */\nfunction setUnexpectedErrorHandler(newUnexpectedErrorHandler) {\n exports.errorHandler.setUnexpectedErrorHandler(newUnexpectedErrorHandler);\n}\n/**\n * Returns if the error is a SIGPIPE error. SIGPIPE errors should generally be\n * logged at most once, to avoid a loop.\n *\n * @see https://github.com/microsoft/vscode-remote-release/issues/6481\n */\nfunction isSigPipeError(e) {\n if (!e || typeof e !== 'object') {\n return false;\n }\n const cast = e;\n return cast.code === 'EPIPE' && cast.syscall?.toUpperCase() === 'WRITE';\n}\nfunction onUnexpectedError(e) {\n // ignore errors from cancelled promises\n if (!isCancellationError(e)) {\n exports.errorHandler.onUnexpectedError(e);\n }\n return undefined;\n}\nfunction onUnexpectedExternalError(e) {\n // ignore errors from cancelled promises\n if (!isCancellationError(e)) {\n exports.errorHandler.onUnexpectedExternalError(e);\n }\n return undefined;\n}\nfunction transformErrorForSerialization(error) {\n if (error instanceof Error) {\n const { name, message } = error;\n const stack = error.stacktrace || error.stack;\n return {\n $isError: true,\n name,\n message,\n stack,\n noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error)\n };\n }\n // return as is\n return error;\n}\nfunction transformErrorFromSerialization(data) {\n let error;\n if (data.noTelemetry) {\n error = new ErrorNoTelemetry();\n }\n else {\n error = new Error();\n error.name = data.name;\n }\n error.message = data.message;\n error.stack = data.stack;\n return error;\n}\nconst canceledName = 'Canceled';\n/**\n * Checks if the given error is a promise in canceled state\n */\nfunction isCancellationError(error) {\n if (error instanceof CancellationError) {\n return true;\n }\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\n}\n// !!!IMPORTANT!!!\n// Do NOT change this class because it is also used as an API-type.\nclass CancellationError extends Error {\n constructor() {\n super(canceledName);\n this.name = this.message;\n }\n}\nexports.CancellationError = CancellationError;\n/**\n * @deprecated use {@link CancellationError `new CancellationError()`} instead\n */\nfunction canceled() {\n const error = new Error(canceledName);\n error.name = error.message;\n return error;\n}\nfunction illegalArgument(name) {\n if (name) {\n return new Error(`Illegal argument: ${name}`);\n }\n else {\n return new Error('Illegal argument');\n }\n}\nfunction illegalState(name) {\n if (name) {\n return new Error(`Illegal state: ${name}`);\n }\n else {\n return new Error('Illegal state');\n }\n}\nclass ReadonlyError extends TypeError {\n constructor(name) {\n super(name ? `${name} is read-only and cannot be changed` : 'Cannot change read-only property');\n }\n}\nexports.ReadonlyError = ReadonlyError;\nfunction getErrorMessage(err) {\n if (!err) {\n return 'Error';\n }\n if (err.message) {\n return err.message;\n }\n if (err.stack) {\n return err.stack.split('\\n')[0];\n }\n return String(err);\n}\nclass NotImplementedError extends Error {\n constructor(message) {\n super('NotImplemented');\n if (message) {\n this.message = message;\n }\n }\n}\nexports.NotImplementedError = NotImplementedError;\nclass NotSupportedError extends Error {\n constructor(message) {\n super('NotSupported');\n if (message) {\n this.message = message;\n }\n }\n}\nexports.NotSupportedError = NotSupportedError;\nclass ExpectedError extends Error {\n constructor() {\n super(...arguments);\n this.isExpected = true;\n }\n}\nexports.ExpectedError = ExpectedError;\n/**\n * Error that when thrown won't be logged in telemetry as an unhandled error.\n */\nclass ErrorNoTelemetry extends Error {\n constructor(msg) {\n super(msg);\n this.name = 'CodeExpectedError';\n }\n static fromError(err) {\n if (err instanceof ErrorNoTelemetry) {\n return err;\n }\n const result = new ErrorNoTelemetry();\n result.message = err.message;\n result.stack = err.stack;\n return result;\n }\n static isErrorNoTelemetry(err) {\n return err.name === 'CodeExpectedError';\n }\n}\nexports.ErrorNoTelemetry = ErrorNoTelemetry;\n/**\n * This error indicates a bug.\n * Do not throw this for invalid user input.\n * Only catch this error to recover gracefully from bugs.\n */\nclass BugIndicatingError extends Error {\n constructor(message) {\n super(message || 'An unexpected bug occurred.');\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n // Because we know for sure only buggy code throws this,\n // we definitely want to break here and fix the bug.\n // eslint-disable-next-line no-debugger\n // debugger;\n }\n}\nexports.BugIndicatingError = BugIndicatingError;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueWithChangeEvent = exports.Relay = exports.EventBufferer = exports.DynamicListEventMultiplexer = exports.EventMultiplexer = exports.MicrotaskEmitter = exports.DebounceEmitter = exports.PauseableEmitter = exports.AsyncEmitter = exports.createEventDeliveryQueue = exports.Emitter = exports.ListenerRefusalError = exports.ListenerLeakError = exports.EventProfiling = exports.Event = void 0;\nexports.setGlobalLeakWarningThreshold = setGlobalLeakWarningThreshold;\nconst errors_1 = require(\"vs/base/common/errors\");\nconst functional_1 = require(\"vs/base/common/functional\");\nconst lifecycle_1 = require(\"vs/base/common/lifecycle\");\nconst linkedList_1 = require(\"vs/base/common/linkedList\");\nconst stopwatch_1 = require(\"vs/base/common/stopwatch\");\n// -----------------------------------------------------------------------------------------------------------------------\n// Uncomment the next line to print warnings whenever a listener is GC'ed without having been disposed. This is a LEAK.\n// -----------------------------------------------------------------------------------------------------------------------\nconst _enableListenerGCedWarning = false;\n// -----------------------------------------------------------------------------------------------------------------------\n// Uncomment the next line to print warnings whenever an emitter with listeners is disposed. That is a sign of code smell.\n// -----------------------------------------------------------------------------------------------------------------------\nconst _enableDisposeWithListenerWarning = false;\n// -----------------------------------------------------------------------------------------------------------------------\n// Uncomment the next line to print warnings whenever a snapshotted event is used repeatedly without cleanup.\n// See https://github.com/microsoft/vscode/issues/142851\n// -----------------------------------------------------------------------------------------------------------------------\nconst _enableSnapshotPotentialLeakWarning = false;\nvar Event;\n(function (Event) {\n Event.None = () => lifecycle_1.Disposable.None;\n function _addLeakageTraceLogic(options) {\n if (_enableSnapshotPotentialLeakWarning) {\n const { onDidAddListener: origListenerDidAdd } = options;\n const stack = Stacktrace.create();\n let count = 0;\n options.onDidAddListener = () => {\n if (++count === 2) {\n console.warn('snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here');\n stack.print();\n }\n origListenerDidAdd?.();\n };\n }\n }\n /**\n * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared\n * `setTimeout`. The event is converted into a signal (`Event<void>`) to avoid additional object creation as a\n * result of merging events and to try prevent race conditions that could arise when using related deferred and\n * non-deferred events.\n *\n * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work\n * (eg. latency of keypress to text rendered).\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function defer(event, disposable) {\n return debounce(event, () => void 0, 0, undefined, true, undefined, disposable);\n }\n Event.defer = defer;\n /**\n * Given an event, returns another event which only fires once.\n *\n * @param event The event source for the new event.\n */\n function once(event) {\n return (listener, thisArgs = null, disposables) => {\n // we need this, in case the event fires during the listener call\n let didFire = false;\n let result = undefined;\n result = event(e => {\n if (didFire) {\n return;\n }\n else if (result) {\n result.dispose();\n }\n else {\n didFire = true;\n }\n return listener.call(thisArgs, e);\n }, null, disposables);\n if (didFire) {\n result.dispose();\n }\n return result;\n };\n }\n Event.once = once;\n /**\n * Maps an event of one type into an event of another type using a mapping function, similar to how\n * `Array.prototype.map` works.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param map The mapping function.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function map(event, map, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable);\n }\n Event.map = map;\n /**\n * Wraps an event in another event that performs some function on the event object before firing.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param each The function to perform on the event object.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function forEach(event, each, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable);\n }\n Event.forEach = forEach;\n function filter(event, filter, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable);\n }\n Event.filter = filter;\n /**\n * Given an event, returns the same event but typed as `Event<void>`.\n */\n function signal(event) {\n return event;\n }\n Event.signal = signal;\n function any(...events) {\n return (listener, thisArgs = null, disposables) => {\n const disposable = (0, lifecycle_1.combinedDisposable)(...events.map(event => event(e => listener.call(thisArgs, e))));\n return addAndReturnDisposable(disposable, disposables);\n };\n }\n Event.any = any;\n /**\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function reduce(event, merge, initial, disposable) {\n let output = initial;\n return map(event, e => {\n output = merge(output, e);\n return output;\n }, disposable);\n }\n Event.reduce = reduce;\n function snapshot(event, disposable) {\n let listener;\n const options = {\n onWillAddFirstListener() {\n listener = event(emitter.fire, emitter);\n },\n onDidRemoveLastListener() {\n listener?.dispose();\n }\n };\n if (!disposable) {\n _addLeakageTraceLogic(options);\n }\n const emitter = new Emitter(options);\n disposable?.add(emitter);\n return emitter.event;\n }\n /**\n * Adds the IDisposable to the store if it's set, and returns it. Useful to\n * Event function implementation.\n */\n function addAndReturnDisposable(d, store) {\n if (store instanceof Array) {\n store.push(d);\n }\n else if (store) {\n store.add(d);\n }\n return d;\n }\n function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) {\n let subscription;\n let output = undefined;\n let handle = undefined;\n let numDebouncedCalls = 0;\n let doFire;\n const options = {\n leakWarningThreshold,\n onWillAddFirstListener() {\n subscription = event(cur => {\n numDebouncedCalls++;\n output = merge(output, cur);\n if (leading && !handle) {\n emitter.fire(output);\n output = undefined;\n }\n doFire = () => {\n const _output = output;\n output = undefined;\n handle = undefined;\n if (!leading || numDebouncedCalls > 1) {\n emitter.fire(_output);\n }\n numDebouncedCalls = 0;\n };\n if (typeof delay === 'number') {\n clearTimeout(handle);\n handle = setTimeout(doFire, delay);\n }\n else {\n if (handle === undefined) {\n handle = 0;\n queueMicrotask(doFire);\n }\n }\n });\n },\n onWillRemoveListener() {\n if (flushOnListenerRemove && numDebouncedCalls > 0) {\n doFire?.();\n }\n },\n onDidRemoveLastListener() {\n doFire = undefined;\n subscription.dispose();\n }\n };\n if (!disposable) {\n _addLeakageTraceLogic(options);\n }\n const emitter = new Emitter(options);\n disposable?.add(emitter);\n return emitter.event;\n }\n Event.debounce = debounce;\n /**\n * Debounces an event, firing after some delay (default=0) with an array of all event original objects.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function accumulate(event, delay = 0, disposable) {\n return Event.debounce(event, (last, e) => {\n if (!last) {\n return [e];\n }\n last.push(e);\n return last;\n }, delay, undefined, true, undefined, disposable);\n }\n Event.accumulate = accumulate;\n /**\n * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate\n * event objects from different sources do not fire the same event object.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param equals The equality condition.\n * @param disposable A disposable store to add the new EventEmitter to.\n *\n * @example\n * ```\n * // Fire only one time when a single window is opened or focused\n * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow))\n * ```\n */\n function latch(event, equals = (a, b) => a === b, disposable) {\n let firstCall = true;\n let cache;\n return filter(event, value => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit;\n }, disposable);\n }\n Event.latch = latch;\n /**\n * Splits an event whose parameter is a union type into 2 separate events for each type in the union.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @example\n * ```\n * const event = new EventEmitter<number | undefined>().event;\n * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined);\n * ```\n *\n * @param event The event source for the new event.\n * @param isT A function that determines what event is of the first type.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function split(event, isT, disposable) {\n return [\n Event.filter(event, isT, disposable),\n Event.filter(event, e => !isT(e), disposable),\n ];\n }\n Event.split = split;\n /**\n * Buffers an event until it has a listener attached.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a\n * `setTimeout` when the first event listener is added.\n * @param _buffer Internal: A source event array used for tests.\n *\n * @example\n * ```\n * // Start accumulating events, when the first listener is attached, flush\n * // the event after a timeout such that multiple listeners attached before\n * // the timeout would receive the event\n * this.onInstallExtension = Event.buffer(service.onInstallExtension, true);\n * ```\n */\n function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) {\n let buffer = _buffer.slice();\n let listener = event(e => {\n if (buffer) {\n buffer.push(e);\n }\n else {\n emitter.fire(e);\n }\n });\n if (disposable) {\n disposable.add(listener);\n }\n const flush = () => {\n buffer?.forEach(e => emitter.fire(e));\n buffer = null;\n };\n const emitter = new Emitter({\n onWillAddFirstListener() {\n if (!listener) {\n listener = event(e => emitter.fire(e));\n if (disposable) {\n disposable.add(listener);\n }\n }\n },\n onDidAddFirstListener() {\n if (buffer) {\n if (flushAfterTimeout) {\n setTimeout(flush);\n }\n else {\n flush();\n }\n }\n },\n onDidRemoveLastListener() {\n if (listener) {\n listener.dispose();\n }\n listener = null;\n }\n });\n if (disposable) {\n disposable.add(emitter);\n }\n return emitter.event;\n }\n Event.buffer = buffer;\n /**\n * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style.\n *\n * @example\n * ```\n * // Normal\n * const onEnterPressNormal = Event.filter(\n * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)),\n * e.keyCode === KeyCode.Enter\n * ).event;\n *\n * // Using chain\n * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $\n * .map(e => new StandardKeyboardEvent(e))\n * .filter(e => e.keyCode === KeyCode.Enter)\n * );\n * ```\n */\n function chain(event, sythensize) {\n const fn = (listener, thisArgs, disposables) => {\n const cs = sythensize(new ChainableSynthesis());\n return event(function (value) {\n const result = cs.evaluate(value);\n if (result !== HaltChainable) {\n listener.call(thisArgs, result);\n }\n }, undefined, disposables);\n };\n return fn;\n }\n Event.chain = chain;\n const HaltChainable = Symbol('HaltChainable');\n class ChainableSynthesis {\n constructor() {\n this.steps = [];\n }\n map(fn) {\n this.steps.push(fn);\n return this;\n }\n forEach(fn) {\n this.steps.push(v => {\n fn(v);\n return v;\n });\n return this;\n }\n filter(fn) {\n this.steps.push(v => fn(v) ? v : HaltChainable);\n return this;\n }\n reduce(merge, initial) {\n let last = initial;\n this.steps.push(v => {\n last = merge(last, v);\n return last;\n });\n return this;\n }\n latch(equals = (a, b) => a === b) {\n let firstCall = true;\n let cache;\n this.steps.push(value => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit ? value : HaltChainable;\n });\n return this;\n }\n evaluate(value) {\n for (const step of this.steps) {\n value = step(value);\n if (value === HaltChainable) {\n break;\n }\n }\n return value;\n }\n }\n /**\n * Creates an {@link Event} from a node event emitter.\n */\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\n const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove });\n return result.event;\n }\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\n /**\n * Creates an {@link Event} from a DOM event emitter.\n */\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\n const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove });\n return result.event;\n }\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\n /**\n * Creates a promise out of an event, using the {@link Event.once} helper.\n */\n function toPromise(event) {\n return new Promise(resolve => once(event)(resolve));\n }\n Event.toPromise = toPromise;\n /**\n * Creates an event out of a promise that fires once when the promise is\n * resolved with the result of the promise or `undefined`.\n */\n function fromPromise(promise) {\n const result = new Emitter();\n promise.then(res => {\n result.fire(res);\n }, () => {\n result.fire(undefined);\n }).finally(() => {\n result.dispose();\n });\n return result.event;\n }\n Event.fromPromise = fromPromise;\n /**\n * A convenience function for forwarding an event to another emitter which\n * improves readability.allows Event.forward(event, emitter) instead of `event(e => emitter.fire(e))`.\n * @param from The event to forward.\n * @param to The emitter to forward the event to.\n * @example\n * Event.forward(event, emitter);\n * // equivalent to\n * event(e => emitter.fire(e));\n * // equivalent to\n * event(emitter.fire, emitter);\n */\n function forward(from, to) {\n return from(e => to.fire(e));\n }\n Event.forward = forward;\n function runAndSubscribe(event, handler, initial) {\n handler(initial);\n return event(e => handler(e));\n }\n Event.runAndSubscribe = runAndSubscribe;\n class EmitterObserver {\n constructor(_observable, store) {\n this._observable = _observable;\n this._counter = 0;\n this._hasChanged = false;\n const options = {\n onWillAddFirstListener: () => {\n _observable.addObserver(this);\n },\n onDidRemoveLastListener: () => {\n _observable.removeObserver(this);\n }\n };\n if (!store) {\n _addLeakageTraceLogic(options);\n }\n this.emitter = new Emitter(options);\n if (store) {\n store.add(this.emitter);\n }\n }\n beginUpdate(_observable) {\n // assert(_observable === this.obs);\n this._counter++;\n }\n handlePossibleChange(_observable) {\n // assert(_observable === this.obs);\n }\n handleChange(_observable, _change) {\n // assert(_observable === this.obs);\n this._hasChanged = true;\n }\n endUpdate(_observable) {\n // assert(_observable === this.obs);\n this._counter--;\n if (this._counter === 0) {\n this._observable.reportChanges();\n if (this._hasChanged) {\n this._hasChanged = false;\n this.emitter.fire(this._observable.get());\n }\n }\n }\n }\n /**\n * Creates an event emitter that is fired when the observable changes.\n * Each listeners subscribes to the emitter.\n */\n function fromObservable(obs, store) {\n const observer = new EmitterObserver(obs, store);\n return observer.emitter.event;\n }\n Event.fromObservable = fromObservable;\n /**\n * Each listener is attached to the observable directly.\n */\n function fromObservableLight(observable) {\n return (listener, thisArgs, disposables) => {\n let count = 0;\n let didChange = false;\n const observer = {\n beginUpdate() {\n count++;\n },\n endUpdate() {\n count--;\n if (count === 0) {\n observable.reportChanges();\n if (didChange) {\n didChange = false;\n listener.call(thisArgs);\n }\n }\n },\n handlePossibleChange() {\n // noop\n },\n handleChange() {\n didChange = true;\n }\n };\n observable.addObserver(observer);\n observable.reportChanges();\n const disposable = {\n dispose() {\n observable.removeObserver(observer);\n }\n };\n if (disposables instanceof lifecycle_1.DisposableStore) {\n disposables.add(disposable);\n }\n else if (Array.isArray(disposables)) {\n disposables.push(disposable);\n }\n return disposable;\n };\n }\n Event.fromObservableLight = fromObservableLight;\n})(Event || (exports.Event = Event = {}));\nclass EventProfiling {\n static { this.all = new Set(); }\n static { this._idPool = 0; }\n constructor(name) {\n this.listenerCount = 0;\n this.invocationCount = 0;\n this.elapsedOverall = 0;\n this.durations = [];\n this.name = `${name}_${EventProfiling._idPool++}`;\n EventProfiling.all.add(this);\n }\n start(listenerCount) {\n this._stopWatch = new stopwatch_1.StopWatch();\n this.listenerCount = listenerCount;\n }\n stop() {\n if (this._stopWatch) {\n const elapsed = this._stopWatch.elapsed();\n this.durations.push(elapsed);\n this.elapsedOverall += elapsed;\n this.invocationCount += 1;\n this._stopWatch = undefined;\n }\n }\n}\nexports.EventProfiling = EventProfiling;\nlet _globalLeakWarningThreshold = -1;\nfunction setGlobalLeakWarningThreshold(n) {\n const oldValue = _globalLeakWarningThreshold;\n _globalLeakWarningThreshold = n;\n return {\n dispose() {\n _globalLeakWarningThreshold = oldValue;\n }\n };\n}\nclass LeakageMonitor {\n static { this._idPool = 1; }\n constructor(_errorHandler, threshold, name = (LeakageMonitor._idPool++).toString(16).padStart(3, '0')) {\n this._errorHandler = _errorHandler;\n this.threshold = threshold;\n this.name = name;\n this._warnCountdown = 0;\n }\n dispose() {\n this._stacks?.clear();\n }\n check(stack, listenerCount) {\n const threshold = this.threshold;\n if (threshold <= 0 || listenerCount < threshold) {\n return undefined;\n }\n if (!this._stacks) {\n this._stacks = new Map();\n }\n const count = (this._stacks.get(stack.value) || 0);\n this._stacks.set(stack.value, count + 1);\n this._warnCountdown -= 1;\n if (this._warnCountdown <= 0) {\n // only warn on first exceed and then every time the limit\n // is exceeded by 50% again\n this._warnCountdown = threshold * 0.5;\n const [topStack, topCount] = this.getMostFrequentStack();\n const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`;\n console.warn(message);\n console.warn(topStack);\n const error = new ListenerLeakError(message, topStack);\n this._errorHandler(error);\n }\n return () => {\n const count = (this._stacks.get(stack.value) || 0);\n this._stacks.set(stack.value, count - 1);\n };\n }\n getMostFrequentStack() {\n if (!this._stacks) {\n return undefined;\n }\n let topStack;\n let topCount = 0;\n for (const [stack, count] of this._stacks) {\n if (!topStack || topCount < count) {\n topStack = [stack, count];\n topCount = count;\n }\n }\n return topStack;\n }\n}\nclass Stacktrace {\n static create() {\n const err = new Error();\n return new Stacktrace(err.stack ?? '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value.split('\\n').slice(2).join('\\n'));\n }\n}\n// error that is logged when going over the configured listener threshold\nclass ListenerLeakError extends Error {\n constructor(message, stack) {\n super(message);\n this.name = 'ListenerLeakError';\n this.stack = stack;\n }\n}\nexports.ListenerLeakError = ListenerLeakError;\n// SEVERE error that is logged when having gone way over the configured listener\n// threshold so that the emitter refuses to accept more listeners\nclass ListenerRefusalError extends Error {\n constructor(message, stack) {\n super(message);\n this.name = 'ListenerRefusalError';\n this.stack = stack;\n }\n}\nexports.ListenerRefusalError = ListenerRefusalError;\nlet id = 0;\nclass UniqueContainer {\n constructor(value) {\n this.value = value;\n this.id = id++;\n }\n}\nconst compactionThreshold = 2;\nconst forEachListener = (listeners, fn) => {\n if (listeners instanceof UniqueContainer) {\n fn(listeners);\n }\n else {\n for (let i = 0; i < listeners.length; i++) {\n const l = listeners[i];\n if (l) {\n fn(l);\n }\n }\n }\n};\nlet _listenerFinalizers;\nif (_enableListenerGCedWarning) {\n const leaks = [];\n setInterval(() => {\n if (leaks.length === 0) {\n return;\n }\n console.warn('[LEAKING LISTENERS] GC\\'ed these listeners that were NOT yet disposed:');\n console.warn(leaks.join('\\n'));\n leaks.length = 0;\n }, 3000);\n _listenerFinalizers = new FinalizationRegistry(heldValue => {\n if (typeof heldValue === 'string') {\n leaks.push(heldValue);\n }\n });\n}\n/**\n * The Emitter can be used to expose an Event to the public\n * to fire it from the insides.\n * Sample:\n class Document {\n\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\n\n public onDidChange = this._onDidChange.event;\n\n // getter-style\n // get onDidChange(): Event<(value:string)=>any> {\n // \treturn this._onDidChange.event;\n // }\n\n private _doIt() {\n //...\n this._onDidChange.fire(value);\n }\n }\n */\nclass Emitter {\n constructor(options) {\n this._size = 0;\n this._options = options;\n this._leakageMon = (_globalLeakWarningThreshold > 0 || this._options?.leakWarningThreshold)\n ? new LeakageMonitor(options?.onListenerError ?? errors_1.onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) :\n undefined;\n this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : undefined;\n this._deliveryQueue = this._options?.deliveryQueue;\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter\n // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and\n // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the\n // the following programming pattern is very popular:\n //\n // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model\n // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener\n // ...later...\n // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the \"overall dispose\" is done\n if (this._deliveryQueue?.current === this) {\n this._deliveryQueue.reset();\n }\n if (this._listeners) {\n if (_enableDisposeWithListenerWarning) {\n const listeners = this._listeners;\n queueMicrotask(() => {\n forEachListener(listeners, l => l.stack?.print());\n });\n }\n this._listeners = undefined;\n this._size = 0;\n }\n this._options?.onDidRemoveLastListener?.();\n this._leakageMon?.dispose();\n }\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n this._event ??= (callback, thisArgs, disposables) => {\n if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) {\n const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;\n console.warn(message);\n const tuple = this._leakageMon.getMostFrequentStack() ?? ['UNKNOWN stack', -1];\n const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]);\n const errorHandler = this._options?.onListenerError || errors_1.onUnexpectedError;\n errorHandler(error);\n return lifecycle_1.Disposable.None;\n }\n if (this._disposed) {\n // todo: should we warn if a listener is added to a disposed emitter? This happens often\n return lifecycle_1.Disposable.None;\n }\n if (thisArgs) {\n callback = callback.bind(thisArgs);\n }\n const contained = new UniqueContainer(callback);\n let removeMonitor;\n let stack;\n if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) {\n // check and record this emitter for potential leakage\n contained.stack = Stacktrace.create();\n removeMonitor = this._leakageMon.check(contained.stack, this._size + 1);\n }\n if (_enableDisposeWithListenerWarning) {\n contained.stack = stack ?? Stacktrace.create();\n }\n if (!this._listeners) {\n this._options?.onWillAddFirstListener?.(this);\n this._listeners = contained;\n this._options?.onDidAddFirstListener?.(this);\n }\n else if (this._listeners instanceof UniqueContainer) {\n this._deliveryQueue ??= new EventDeliveryQueuePrivate();\n this._listeners = [this._listeners, contained];\n }\n else {\n this._listeners.push(contained);\n }\n this._size++;\n const result = (0, lifecycle_1.toDisposable)(() => {\n _listenerFinalizers?.unregister(result);\n removeMonitor?.();\n this._removeListener(contained);\n });\n if (disposables instanceof lifecycle_1.DisposableStore) {\n disposables.add(result);\n }\n else if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n if (_listenerFinalizers) {\n const stack = new Error().stack.split('\\n').slice(2, 3).join('\\n').trim();\n const match = /(file:|vscode-file:\\/\\/vscode-app)?(\\/[^:]*:\\d+:\\d+)/.exec(stack);\n _listenerFinalizers.register(result, match?.[2] ?? stack, result);\n }\n return result;\n };\n return this._event;\n }\n _removeListener(listener) {\n this._options?.onWillRemoveListener?.(this);\n if (!this._listeners) {\n return; // expected if a listener gets disposed\n }\n if (this._size === 1) {\n this._listeners = undefined;\n this._options?.onDidRemoveLastListener?.(this);\n this._size = 0;\n return;\n }\n // size > 1 which requires that listeners be a list:\n const listeners = this._listeners;\n const index = listeners.indexOf(listener);\n if (index === -1) {\n console.log('disposed?', this._disposed);\n console.log('size?', this._size);\n console.log('arr?', JSON.stringify(this._listeners));\n throw new Error('Attempted to dispose unknown listener');\n }\n this._size--;\n listeners[index] = undefined;\n const adjustDeliveryQueue = this._deliveryQueue.current === this;\n if (this._size * compactionThreshold <= listeners.length) {\n let n = 0;\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]) {\n listeners[n++] = listeners[i];\n }\n else if (adjustDeliveryQueue) {\n this._deliveryQueue.end--;\n if (n < this._deliveryQueue.i) {\n this._deliveryQueue.i--;\n }\n }\n }\n listeners.length = n;\n }\n }\n _deliver(listener, value) {\n if (!listener) {\n return;\n }\n const errorHandler = this._options?.onListenerError || errors_1.onUnexpectedError;\n if (!errorHandler) {\n listener.value(value);\n return;\n }\n try {\n listener.value(value);\n }\n catch (e) {\n errorHandler(e);\n }\n }\n /** Delivers items in the queue. Assumes the queue is ready to go. */\n _deliverQueue(dq) {\n const listeners = dq.current._listeners;\n while (dq.i < dq.end) {\n // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue()\n this._deliver(listeners[dq.i++], dq.value);\n }\n dq.reset();\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._deliveryQueue?.current) {\n this._deliverQueue(this._deliveryQueue);\n this._perfMon?.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch\n }\n this._perfMon?.start(this._size);\n if (!this._listeners) {\n // no-op\n }\n else if (this._listeners instanceof UniqueContainer) {\n this._deliver(this._listeners, event);\n }\n else {\n const dq = this._deliveryQueue;\n dq.enqueue(this, event, this._listeners.length);\n this._deliverQueue(dq);\n }\n this._perfMon?.stop();\n }\n hasListeners() {\n return this._size > 0;\n }\n}\nexports.Emitter = Emitter;\nconst createEventDeliveryQueue = () => new EventDeliveryQueuePrivate();\nexports.createEventDeliveryQueue = createEventDeliveryQueue;\nclass EventDeliveryQueuePrivate {\n constructor() {\n /**\n * Index in current's listener list.\n */\n this.i = -1;\n /**\n * The last index in the listener's list to deliver.\n */\n this.end = 0;\n }\n enqueue(emitter, value, end) {\n this.i = 0;\n this.end = end;\n this.current = emitter;\n this.value = value;\n }\n reset() {\n this.i = this.end; // force any current emission loop to stop, mainly for during dispose\n this.current = undefined;\n this.value = undefined;\n }\n}\nclass AsyncEmitter extends Emitter {\n async fireAsync(data, token, promiseJoin) {\n if (!this._listeners) {\n return;\n }\n if (!this._asyncDeliveryQueue) {\n this._asyncDeliveryQueue = new linkedList_1.LinkedList();\n }\n forEachListener(this._listeners, listener => this._asyncDeliveryQueue.push([listener.value, data]));\n while (this._asyncDeliveryQueue.size > 0 && !token.isCancellationRequested) {\n const [listener, data] = this._asyncDeliveryQueue.shift();\n const thenables = [];\n const event = {\n ...data,\n token,\n waitUntil: (p) => {\n if (Object.isFrozen(thenables)) {\n throw new Error('waitUntil can NOT be called asynchronous');\n }\n if (promiseJoin) {\n p = promiseJoin(p, listener);\n }\n thenables.push(p);\n }\n };\n try {\n listener(event);\n }\n catch (e) {\n (0, errors_1.onUnexpectedError)(e);\n continue;\n }\n // freeze thenables-collection to enforce sync-calls to\n // wait until and then wait for all thenables to resolve\n Object.freeze(thenables);\n await Promise.allSettled(thenables).then(values => {\n for (const value of values) {\n if (value.status === 'rejected') {\n (0, errors_1.onUnexpectedError)(value.reason);\n }\n }\n });\n }\n }\n}\nexports.AsyncEmitter = AsyncEmitter;\nclass PauseableEmitter extends Emitter {\n get isPaused() {\n return this._isPaused !== 0;\n }\n constructor(options) {\n super(options);\n this._isPaused = 0;\n this._eventQueue = new linkedList_1.LinkedList();\n this._mergeFn = options?.merge;\n }\n pause() {\n this._isPaused++;\n }\n resume() {\n if (this._isPaused !== 0 && --this._isPaused === 0) {\n if (this._mergeFn) {\n // use the merge function to create a single composite\n // event. make a copy in case firing pauses this emitter\n if (this._eventQueue.size > 0) {\n const events = Array.from(this._eventQueue);\n this._eventQueue.clear();\n super.fire(this._mergeFn(events));\n }\n }\n else {\n // no merging, fire each event individually and test\n // that this emitter isn't paused halfway through\n while (!this._isPaused && this._eventQueue.size !== 0) {\n super.fire(this._eventQueue.shift());\n }\n }\n }\n }\n fire(event) {\n if (this._size) {\n if (this._isPaused !== 0) {\n this._eventQueue.push(event);\n }\n else {\n super.fire(event);\n }\n }\n }\n}\nexports.PauseableEmitter = PauseableEmitter;\nclass DebounceEmitter extends PauseableEmitter {\n constructor(options) {\n super(options);\n this._delay = options.delay ?? 100;\n }\n fire(event) {\n if (!this._handle) {\n this.pause();\n this._handle = setTimeout(() => {\n this._handle = undefined;\n this.resume();\n }, this._delay);\n }\n super.fire(event);\n }\n}\nexports.DebounceEmitter = DebounceEmitter;\n/**\n * An emitter which queue all events and then process them at the\n * end of the event loop.\n */\nclass MicrotaskEmitter extends Emitter {\n constructor(options) {\n super(options);\n this._queuedEvents = [];\n this._mergeFn = options?.merge;\n }\n fire(event) {\n if (!this.hasListeners()) {\n return;\n }\n this._queuedEvents.push(event);\n if (this._queuedEvents.length === 1) {\n queueMicrotask(() => {\n if (this._mergeFn) {\n super.fire(this._mergeFn(this._queuedEvents));\n }\n else {\n this._queuedEvents.forEach(e => super.fire(e));\n }\n this._queuedEvents = [];\n });\n }\n }\n}\nexports.MicrotaskEmitter = MicrotaskEmitter;\n/**\n * An event emitter that multiplexes many events into a single event.\n *\n * @example Listen to the `onData` event of all `Thing`s, dynamically adding and removing `Thing`s\n * to the multiplexer as needed.\n *\n * ```typescript\n * const anythingDataMultiplexer = new EventMultiplexer<{ data: string }>();\n *\n * const thingListeners = DisposableMap<Thing, IDisposable>();\n *\n * thingService.onDidAddThing(thing => {\n * thingListeners.set(thing, anythingDataMultiplexer.add(thing.onData);\n * });\n * thingService.onDidRemoveThing(thing => {\n * thingListeners.deleteAndDispose(thing);\n * });\n *\n * anythingDataMultiplexer.event(e => {\n * console.log('Something fired data ' + e.data)\n * });\n * ```\n */\nclass EventMultiplexer {\n constructor() {\n this.hasListeners = false;\n this.events = [];\n this.emitter = new Emitter({\n onWillAddFirstListener: () => this.onFirstListenerAdd(),\n onDidRemoveLastListener: () => this.onLastListenerRemove()\n });\n }\n get event() {\n return this.emitter.event;\n }\n add(event) {\n const e = { event: event, listener: null };\n this.events.push(e);\n if (this.hasListeners) {\n this.hook(e);\n }\n const dispose = () => {\n if (this.hasListeners) {\n this.unhook(e);\n }\n const idx = this.events.indexOf(e);\n this.events.splice(idx, 1);\n };\n return (0, lifecycle_1.toDisposable)((0, functional_1.createSingleCallFunction)(dispose));\n }\n onFirstListenerAdd() {\n this.hasListeners = true;\n this.events.forEach(e => this.hook(e));\n }\n onLastListenerRemove() {\n this.hasListeners = false;\n this.events.forEach(e => this.unhook(e));\n }\n hook(e) {\n e.listener = e.event(r => this.emitter.fire(r));\n }\n unhook(e) {\n e.listener?.dispose();\n e.listener = null;\n }\n dispose() {\n this.emitter.dispose();\n for (const e of this.events) {\n e.listener?.dispose();\n }\n this.events = [];\n }\n}\nexports.EventMultiplexer = EventMultiplexer;\nclass DynamicListEventMultiplexer {\n constructor(items, onAddItem, onRemoveItem, getEvent) {\n this._store = new lifecycle_1.DisposableStore();\n const multiplexer = this._store.add(new EventMultiplexer());\n const itemListeners = this._store.add(new lifecycle_1.DisposableMap());\n function addItem(instance) {\n itemListeners.set(instance, multiplexer.add(getEvent(instance)));\n }\n // Existing items\n for (const instance of items) {\n addItem(instance);\n }\n // Added items\n this._store.add(onAddItem(instance => {\n addItem(instance);\n }));\n // Removed items\n this._store.add(onRemoveItem(instance => {\n itemListeners.deleteAndDispose(instance);\n }));\n this.event = multiplexer.event;\n }\n dispose() {\n this._store.dispose();\n }\n}\nexports.DynamicListEventMultiplexer = DynamicListEventMultiplexer;\n/**\n * The EventBufferer is useful in situations in which you want\n * to delay firing your events during some code.\n * You can wrap that code and be sure that the event will not\n * be fired during that wrap.\n *\n * ```\n * const emitter: Emitter;\n * const delayer = new EventDelayer();\n * const delayedEvent = delayer.wrapEvent(emitter.event);\n *\n * delayedEvent(console.log);\n *\n * delayer.bufferEvents(() => {\n * emitter.fire(); // event will not be fired yet\n * });\n *\n * // event will only be fired at this point\n * ```\n */\nclass EventBufferer {\n constructor() {\n this.data = [];\n }\n wrapEvent(event, reduce, initial) {\n return (listener, thisArgs, disposables) => {\n return event(i => {\n const data = this.data[this.data.length - 1];\n // Non-reduce scenario\n if (!reduce) {\n // Buffering case\n if (data) {\n data.buffers.push(() => listener.call(thisArgs, i));\n }\n else {\n // Not buffering case\n listener.call(thisArgs, i);\n }\n return;\n }\n // Reduce scenario\n const reduceData = data;\n // Not buffering case\n if (!reduceData) {\n // TODO: Is there a way to cache this reduce call for all listeners?\n listener.call(thisArgs, reduce(initial, i));\n return;\n }\n // Buffering case\n reduceData.items ??= [];\n reduceData.items.push(i);\n if (reduceData.buffers.length === 0) {\n // Include a single buffered function that will reduce all events when we're done buffering events\n data.buffers.push(() => {\n // cache the reduced result so that the value can be shared across all listeners\n reduceData.reducedResult ??= initial\n ? reduceData.items.reduce(reduce, initial)\n : reduceData.items.reduce(reduce);\n listener.call(thisArgs, reduceData.reducedResult);\n });\n }\n }, undefined, disposables);\n };\n }\n bufferEvents(fn) {\n const data = { buffers: new Array() };\n this.data.push(data);\n const r = fn();\n this.data.pop();\n data.buffers.forEach(flush => flush());\n return r;\n }\n}\nexports.EventBufferer = EventBufferer;\n/**\n * A Relay is an event forwarder which functions as a replugabble event pipe.\n * Once created, you can connect an input event to it and it will simply forward\n * events from that input event through its own `event` property. The `input`\n * can be changed at any point in time.\n */\nclass Relay {\n constructor() {\n this.listening = false;\n this.inputEvent = Event.None;\n this.inputEventListener = lifecycle_1.Disposable.None;\n this.emitter = new Emitter({\n onDidAddFirstListener: () => {\n this.listening = true;\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\n },\n onDidRemoveLastListener: () => {\n this.listening = false;\n this.inputEventListener.dispose();\n }\n });\n this.event = this.emitter.event;\n }\n set input(event) {\n this.inputEvent = event;\n if (this.listening) {\n this.inputEventListener.dispose();\n this.inputEventListener = event(this.emitter.fire, this.emitter);\n }\n }\n dispose() {\n this.inputEventListener.dispose();\n this.emitter.dispose();\n }\n}\nexports.Relay = Relay;\nclass ValueWithChangeEvent {\n static const(value) {\n return new ConstValueWithChangeEvent(value);\n }\n constructor(_value) {\n this._value = _value;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n this._onDidChange.fire(undefined);\n }\n }\n}\nexports.ValueWithChangeEvent = ValueWithChangeEvent;\nclass ConstValueWithChangeEvent {\n constructor(value) {\n this.value = value;\n this.onDidChange = Event.None;\n }\n}\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSingleCallFunction = createSingleCallFunction;\n/**\n * Given a function, returns a function that is only calling that function once.\n */\nfunction createSingleCallFunction(fn, fnDidRunCallback) {\n const _this = this;\n let didCall = false;\n let result;\n return function () {\n if (didCall) {\n return result;\n }\n didCall = true;\n if (fnDidRunCallback) {\n try {\n result = fn.apply(_this, arguments);\n }\n finally {\n fnDidRunCallback();\n }\n }\n else {\n result = fn.apply(_this, arguments);\n }\n return result;\n };\n}\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Iterable = void 0;\nvar Iterable;\n(function (Iterable) {\n function is(thing) {\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\n }\n Iterable.is = is;\n const _empty = Object.freeze([]);\n function empty() {\n return _empty;\n }\n Iterable.empty = empty;\n function* single(element) {\n yield element;\n }\n Iterable.single = single;\n function wrap(iterableOrElement) {\n if (is(iterableOrElement)) {\n return iterableOrElement;\n }\n else {\n return single(iterableOrElement);\n }\n }\n Iterable.wrap = wrap;\n function from(iterable) {\n return iterable || _empty;\n }\n Iterable.from = from;\n function* reverse(array) {\n for (let i = array.length - 1; i >= 0; i--) {\n yield array[i];\n }\n }\n Iterable.reverse = reverse;\n function isEmpty(iterable) {\n return !iterable || iterable[Symbol.iterator]().next().done === true;\n }\n Iterable.isEmpty = isEmpty;\n function first(iterable) {\n return iterable[Symbol.iterator]().next().value;\n }\n Iterable.first = first;\n function some(iterable, predicate) {\n let i = 0;\n for (const element of iterable) {\n if (predicate(element, i++)) {\n return true;\n }\n }\n return false;\n }\n Iterable.some = some;\n function find(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n return element;\n }\n }\n return undefined;\n }\n Iterable.find = find;\n function* filter(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n yield element;\n }\n }\n }\n Iterable.filter = filter;\n function* map(iterable, fn) {\n let index = 0;\n for (const element of iterable) {\n yield fn(element, index++);\n }\n }\n Iterable.map = map;\n function* flatMap(iterable, fn) {\n let index = 0;\n for (const element of iterable) {\n yield* fn(element, index++);\n }\n }\n Iterable.flatMap = flatMap;\n function* concat(...iterables) {\n for (const iterable of iterables) {\n yield* iterable;\n }\n }\n Iterable.concat = concat;\n function reduce(iterable, reducer, initialValue) {\n let value = initialValue;\n for (const element of iterable) {\n value = reducer(value, element);\n }\n return value;\n }\n Iterable.reduce = reduce;\n /**\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\n */\n function* slice(arr, from, to = arr.length) {\n if (from < 0) {\n from += arr.length;\n }\n if (to < 0) {\n to += arr.length;\n }\n else if (to > arr.length) {\n to = arr.length;\n }\n for (; from < to; from++) {\n yield arr[from];\n }\n }\n Iterable.slice = slice;\n /**\n * Consumes `atMost` elements from iterable and returns the consumed elements,\n * and an iterable for the rest of the elements.\n */\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\n const consumed = [];\n if (atMost === 0) {\n return [consumed, iterable];\n }\n const iterator = iterable[Symbol.iterator]();\n for (let i = 0; i < atMost; i++) {\n const next = iterator.next();\n if (next.done) {\n return [consumed, Iterable.empty()];\n }\n consumed.push(next.value);\n }\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\n }\n Iterable.consume = consume;\n async function asyncToArray(iterable) {\n const result = [];\n for await (const item of iterable) {\n result.push(item);\n }\n return Promise.resolve(result);\n }\n Iterable.asyncToArray = asyncToArray;\n})(Iterable || (exports.Iterable = Iterable = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DisposableMap = exports.ImmortalReference = exports.AsyncReferenceCollection = exports.ReferenceCollection = exports.SafeDisposable = exports.RefCountedDisposable = exports.MandatoryMutableDisposable = exports.MutableDisposable = exports.Disposable = exports.DisposableStore = exports.DisposableTracker = void 0;\nexports.setDisposableTracker = setDisposableTracker;\nexports.trackDisposable = trackDisposable;\nexports.markAsDisposed = markAsDisposed;\nexports.markAsSingleton = markAsSingleton;\nexports.isDisposable = isDisposable;\nexports.dispose = dispose;\nexports.disposeIfDisposable = disposeIfDisposable;\nexports.combinedDisposable = combinedDisposable;\nexports.toDisposable = toDisposable;\nexports.disposeOnReturn = disposeOnReturn;\nconst arrays_1 = require(\"vs/base/common/arrays\");\nconst collections_1 = require(\"vs/base/common/collections\");\nconst map_1 = require(\"./map\");\nconst functional_1 = require(\"vs/base/common/functional\");\nconst iterator_1 = require(\"vs/base/common/iterator\");\n// #region Disposable Tracking\n/**\n * Enables logging of potentially leaked disposables.\n *\n * A disposable is considered leaked if it is not disposed or not registered as the child of\n * another disposable. This tracking is very simple an only works for classes that either\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\n */\nconst TRACK_DISPOSABLES = false;\nlet disposableTracker = null;\nclass DisposableTracker {\n constructor() {\n this.livingDisposables = new Map();\n }\n static { this.idx = 0; }\n getDisposableData(d) {\n let val = this.livingDisposables.get(d);\n if (!val) {\n val = { parent: null, source: null, isSingleton: false, value: d, idx: DisposableTracker.idx++ };\n this.livingDisposables.set(d, val);\n }\n return val;\n }\n trackDisposable(d) {\n const data = this.getDisposableData(d);\n if (!data.source) {\n data.source =\n new Error().stack;\n }\n }\n setParent(child, parent) {\n const data = this.getDisposableData(child);\n data.parent = parent;\n }\n markAsDisposed(x) {\n this.livingDisposables.delete(x);\n }\n markAsSingleton(disposable) {\n this.getDisposableData(disposable).isSingleton = true;\n }\n getRootParent(data, cache) {\n const cacheValue = cache.get(data);\n if (cacheValue) {\n return cacheValue;\n }\n const result = data.parent ? this.getRootParent(this.getDisposableData(data.parent), cache) : data;\n cache.set(data, result);\n return result;\n }\n getTrackedDisposables() {\n const rootParentCache = new Map();\n const leaking = [...this.livingDisposables.entries()]\n .filter(([, v]) => v.source !== null && !this.getRootParent(v, rootParentCache).isSingleton)\n .flatMap(([k]) => k);\n return leaking;\n }\n computeLeakingDisposables(maxReported = 10, preComputedLeaks) {\n let uncoveredLeakingObjs;\n if (preComputedLeaks) {\n uncoveredLeakingObjs = preComputedLeaks;\n }\n else {\n const rootParentCache = new Map();\n const leakingObjects = [...this.livingDisposables.values()]\n .filter((info) => info.source !== null && !this.getRootParent(info, rootParentCache).isSingleton);\n if (leakingObjects.length === 0) {\n return;\n }\n const leakingObjsSet = new Set(leakingObjects.map(o => o.value));\n // Remove all objects that are a child of other leaking objects. Assumes there are no cycles.\n uncoveredLeakingObjs = leakingObjects.filter(l => {\n return !(l.parent && leakingObjsSet.has(l.parent));\n });\n if (uncoveredLeakingObjs.length === 0) {\n throw new Error('There are cyclic diposable chains!');\n }\n }\n if (!uncoveredLeakingObjs) {\n return undefined;\n }\n function getStackTracePath(leaking) {\n function removePrefix(array, linesToRemove) {\n while (array.length > 0 && linesToRemove.some(regexp => typeof regexp === 'string' ? regexp === array[0] : array[0].match(regexp))) {\n array.shift();\n }\n }\n const lines = leaking.source.split('\\n').map(p => p.trim().replace('at ', '')).filter(l => l !== '');\n removePrefix(lines, ['Error', /^trackDisposable \\(.*\\)$/, /^DisposableTracker.trackDisposable \\(.*\\)$/]);\n return lines.reverse();\n }\n const stackTraceStarts = new map_1.SetMap();\n for (const leaking of uncoveredLeakingObjs) {\n const stackTracePath = getStackTracePath(leaking);\n for (let i = 0; i <= stackTracePath.length; i++) {\n stackTraceStarts.add(stackTracePath.slice(0, i).join('\\n'), leaking);\n }\n }\n // Put earlier leaks first\n uncoveredLeakingObjs.sort((0, arrays_1.compareBy)(l => l.idx, arrays_1.numberComparator));\n let message = '';\n let i = 0;\n for (const leaking of uncoveredLeakingObjs.slice(0, maxReported)) {\n i++;\n const stackTracePath = getStackTracePath(leaking);\n const stackTraceFormattedLines = [];\n for (let i = 0; i < stackTracePath.length; i++) {\n let line = stackTracePath[i];\n const starts = stackTraceStarts.get(stackTracePath.slice(0, i + 1).join('\\n'));\n line = `(shared with ${starts.size}/${uncoveredLeakingObjs.length} leaks) at ${line}`;\n const prevStarts = stackTraceStarts.get(stackTracePath.slice(0, i).join('\\n'));\n const continuations = (0, collections_1.groupBy)([...prevStarts].map(d => getStackTracePath(d)[i]), v => v);\n delete continuations[stackTracePath[i]];\n for (const [cont, set] of Object.entries(continuations)) {\n stackTraceFormattedLines.unshift(` - stacktraces of ${set.length} other leaks continue with ${cont}`);\n }\n stackTraceFormattedLines.unshift(line);\n }\n message += `\\n\\n\\n==================== Leaking disposable ${i}/${uncoveredLeakingObjs.length}: ${leaking.value.constructor.name} ====================\\n${stackTraceFormattedLines.join('\\n')}\\n============================================================\\n\\n`;\n }\n if (uncoveredLeakingObjs.length > maxReported) {\n message += `\\n\\n\\n... and ${uncoveredLeakingObjs.length - maxReported} more leaking disposables\\n\\n`;\n }\n return { leaks: uncoveredLeakingObjs, details: message };\n }\n}\nexports.DisposableTracker = DisposableTracker;\nfunction setDisposableTracker(tracker) {\n disposableTracker = tracker;\n}\nif (TRACK_DISPOSABLES) {\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\n setDisposableTracker(new class {\n trackDisposable(x) {\n const stack = new Error('Potentially leaked disposable').stack;\n setTimeout(() => {\n if (!x[__is_disposable_tracked__]) {\n console.log(stack);\n }\n }, 3000);\n }\n setParent(child, parent) {\n if (child && child !== Disposable.None) {\n try {\n child[__is_disposable_tracked__] = true;\n }\n catch {\n // noop\n }\n }\n }\n markAsDisposed(disposable) {\n if (disposable && disposable !== Disposable.None) {\n try {\n disposable[__is_disposable_tracked__] = true;\n }\n catch {\n // noop\n }\n }\n }\n markAsSingleton(disposable) { }\n });\n}\nfunction trackDisposable(x) {\n disposableTracker?.trackDisposable(x);\n return x;\n}\nfunction markAsDisposed(disposable) {\n disposableTracker?.markAsDisposed(disposable);\n}\nfunction setParentOfDisposable(child, parent) {\n disposableTracker?.setParent(child, parent);\n}\nfunction setParentOfDisposables(children, parent) {\n if (!disposableTracker) {\n return;\n }\n for (const child of children) {\n disposableTracker.setParent(child, parent);\n }\n}\n/**\n * Indicates that the given object is a singleton which does not need to be disposed.\n*/\nfunction markAsSingleton(singleton) {\n disposableTracker?.markAsSingleton(singleton);\n return singleton;\n}\n/**\n * Check if `thing` is {@link IDisposable disposable}.\n */\nfunction isDisposable(thing) {\n return typeof thing === 'object' && thing !== null && typeof thing.dispose === 'function' && thing.dispose.length === 0;\n}\nfunction dispose(arg) {\n if (iterator_1.Iterable.is(arg)) {\n const errors = [];\n for (const d of arg) {\n if (d) {\n try {\n d.dispose();\n }\n catch (e) {\n errors.push(e);\n }\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n else if (errors.length > 1) {\n throw new AggregateError(errors, 'Encountered errors while disposing of store');\n }\n return Array.isArray(arg) ? [] : arg;\n }\n else if (arg) {\n arg.dispose();\n return arg;\n }\n}\nfunction disposeIfDisposable(disposables) {\n for (const d of disposables) {\n if (isDisposable(d)) {\n d.dispose();\n }\n }\n return [];\n}\n/**\n * Combine multiple disposable values into a single {@link IDisposable}.\n */\nfunction combinedDisposable(...disposables) {\n const parent = toDisposable(() => dispose(disposables));\n setParentOfDisposables(disposables, parent);\n return parent;\n}\n/**\n * Turn a function that implements dispose into an {@link IDisposable}.\n *\n * @param fn Clean up function, guaranteed to be called only **once**.\n */\nfunction toDisposable(fn) {\n const self = trackDisposable({\n dispose: (0, functional_1.createSingleCallFunction)(() => {\n markAsDisposed(self);\n fn();\n })\n });\n return self;\n}\n/**\n * Manages a collection of disposable values.\n *\n * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an\n * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a\n * store that has already been disposed of.\n */\nclass DisposableStore {\n static { this.DISABLE_DISPOSED_WARNING = false; }\n constructor() {\n this._toDispose = new Set();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Dispose of all registered disposables and mark this object as disposed.\n *\n * Any future disposables added to this object will be disposed of on `add`.\n */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n markAsDisposed(this);\n this._isDisposed = true;\n this.clear();\n }\n /**\n * @return `true` if this object has been disposed of.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of all registered disposables but do not mark this object as disposed.\n */\n clear() {\n if (this._toDispose.size === 0) {\n return;\n }\n try {\n dispose(this._toDispose);\n }\n finally {\n this._toDispose.clear();\n }\n }\n /**\n * Add a new {@link IDisposable disposable} to the collection.\n */\n add(o) {\n if (!o) {\n return o;\n }\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n setParentOfDisposable(o, this);\n if (this._isDisposed) {\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\n }\n }\n else {\n this._toDispose.add(o);\n }\n return o;\n }\n /**\n * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the\n * disposable even when the disposable is not part in the store.\n */\n delete(o) {\n if (!o) {\n return;\n }\n if (o === this) {\n throw new Error('Cannot dispose a disposable on itself!');\n }\n this._toDispose.delete(o);\n o.dispose();\n }\n /**\n * Deletes the value from the store, but does not dispose it.\n */\n deleteAndLeak(o) {\n if (!o) {\n return;\n }\n if (this._toDispose.has(o)) {\n this._toDispose.delete(o);\n setParentOfDisposable(o, null);\n }\n }\n}\nexports.DisposableStore = DisposableStore;\n/**\n * Abstract base class for a {@link IDisposable disposable} object.\n *\n * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of.\n */\nclass Disposable {\n /**\n * A disposable that does nothing when it is disposed of.\n *\n * TODO: This should not be a static property.\n */\n static { this.None = Object.freeze({ dispose() { } }); }\n constructor() {\n this._store = new DisposableStore();\n trackDisposable(this);\n setParentOfDisposable(this._store, this);\n }\n dispose() {\n markAsDisposed(this);\n this._store.dispose();\n }\n /**\n * Adds `o` to the collection of disposables managed by this object.\n */\n _register(o) {\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n return this._store.add(o);\n }\n}\nexports.Disposable = Disposable;\n/**\n * Manages the lifecycle of a disposable value that may be changed.\n *\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\n */\nclass MutableDisposable {\n constructor() {\n this._isDisposed = false;\n trackDisposable(this);\n }\n get value() {\n return this._isDisposed ? undefined : this._value;\n }\n set value(value) {\n if (this._isDisposed || value === this._value) {\n return;\n }\n this._value?.dispose();\n if (value) {\n setParentOfDisposable(value, this);\n }\n this._value = value;\n }\n /**\n * Resets the stored value and disposed of the previously stored value.\n */\n clear() {\n this.value = undefined;\n }\n dispose() {\n this._isDisposed = true;\n markAsDisposed(this);\n this._value?.dispose();\n this._value = undefined;\n }\n /**\n * Clears the value, but does not dispose it.\n * The old value is returned.\n */\n clearAndLeak() {\n const oldValue = this._value;\n this._value = undefined;\n if (oldValue) {\n setParentOfDisposable(oldValue, null);\n }\n return oldValue;\n }\n}\nexports.MutableDisposable = MutableDisposable;\n/**\n * Manages the lifecycle of a disposable value that may be changed like {@link MutableDisposable}, but the value must\n * exist and cannot be undefined.\n */\nclass MandatoryMutableDisposable {\n constructor(initialValue) {\n this._disposable = new MutableDisposable();\n this._isDisposed = false;\n this._disposable.value = initialValue;\n }\n get value() {\n return this._disposable.value;\n }\n set value(value) {\n if (this._isDisposed || value === this._disposable.value) {\n return;\n }\n this._disposable.value = value;\n }\n dispose() {\n this._isDisposed = true;\n this._disposable.dispose();\n }\n}\nexports.MandatoryMutableDisposable = MandatoryMutableDisposable;\nclass RefCountedDisposable {\n constructor(_disposable) {\n this._disposable = _disposable;\n this._counter = 1;\n }\n acquire() {\n this._counter++;\n return this;\n }\n release() {\n if (--this._counter === 0) {\n this._disposable.dispose();\n }\n return this;\n }\n}\nexports.RefCountedDisposable = RefCountedDisposable;\n/**\n * A safe disposable can be `unset` so that a leaked reference (listener)\n * can be cut-off.\n */\nclass SafeDisposable {\n constructor() {\n this.dispose = () => { };\n this.unset = () => { };\n this.isset = () => false;\n trackDisposable(this);\n }\n set(fn) {\n let callback = fn;\n this.unset = () => callback = undefined;\n this.isset = () => callback !== undefined;\n this.dispose = () => {\n if (callback) {\n callback();\n callback = undefined;\n markAsDisposed(this);\n }\n };\n return this;\n }\n}\nexports.SafeDisposable = SafeDisposable;\nclass ReferenceCollection {\n constructor() {\n this.references = new Map();\n }\n acquire(key, ...args) {\n let reference = this.references.get(key);\n if (!reference) {\n reference = { counter: 0, object: this.createReferencedObject(key, ...args) };\n this.references.set(key, reference);\n }\n const { object } = reference;\n const dispose = (0, functional_1.createSingleCallFunction)(() => {\n if (--reference.counter === 0) {\n this.destroyReferencedObject(key, reference.object);\n this.references.delete(key);\n }\n });\n reference.counter++;\n return { object, dispose };\n }\n}\nexports.ReferenceCollection = ReferenceCollection;\n/**\n * Unwraps a reference collection of promised values. Makes sure\n * references are disposed whenever promises get rejected.\n */\nclass AsyncReferenceCollection {\n constructor(referenceCollection) {\n this.referenceCollection = referenceCollection;\n }\n async acquire(key, ...args) {\n const ref = this.referenceCollection.acquire(key, ...args);\n try {\n const object = await ref.object;\n return {\n object,\n dispose: () => ref.dispose()\n };\n }\n catch (error) {\n ref.dispose();\n throw error;\n }\n }\n}\nexports.AsyncReferenceCollection = AsyncReferenceCollection;\nclass ImmortalReference {\n constructor(object) {\n this.object = object;\n }\n dispose() { }\n}\nexports.ImmortalReference = ImmortalReference;\nfunction disposeOnReturn(fn) {\n const store = new DisposableStore();\n try {\n fn(store);\n }\n finally {\n store.dispose();\n }\n}\n/**\n * A map the manages the lifecycle of the values that it stores.\n */\nclass DisposableMap {\n constructor() {\n this._store = new Map();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Disposes of all stored values and mark this object as disposed.\n *\n * Trying to use this object after it has been disposed of is an error.\n */\n dispose() {\n markAsDisposed(this);\n this._isDisposed = true;\n this.clearAndDisposeAll();\n }\n /**\n * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed.\n */\n clearAndDisposeAll() {\n if (!this._store.size) {\n return;\n }\n try {\n dispose(this._store.values());\n }\n finally {\n this._store.clear();\n }\n }\n has(key) {\n return this._store.has(key);\n }\n get size() {\n return this._store.size;\n }\n get(key) {\n return this._store.get(key);\n }\n set(key, value, skipDisposeOnOverwrite = false) {\n if (this._isDisposed) {\n console.warn(new Error('Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!').stack);\n }\n if (!skipDisposeOnOverwrite) {\n this._store.get(key)?.dispose();\n }\n this._store.set(key, value);\n }\n /**\n * Delete the value stored for `key` from this map and also dispose of it.\n */\n deleteAndDispose(key) {\n this._store.get(key)?.dispose();\n this._store.delete(key);\n }\n /**\n * Delete the value stored for `key` from this map but return it. The caller is\n * responsible for disposing of the value.\n */\n deleteAndLeak(key) {\n const value = this._store.get(key);\n this._store.delete(key);\n return value;\n }\n keys() {\n return this._store.keys();\n }\n values() {\n return this._store.values();\n }\n [Symbol.iterator]() {\n return this._store[Symbol.iterator]();\n }\n}\nexports.DisposableMap = DisposableMap;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedList = void 0;\nclass Node {\n static { this.Undefined = new Node(undefined); }\n constructor(element) {\n this.element = element;\n this.next = Node.Undefined;\n this.prev = Node.Undefined;\n }\n}\nclass LinkedList {\n constructor() {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n get size() {\n return this._size;\n }\n isEmpty() {\n return this._first === Node.Undefined;\n }\n clear() {\n let node = this._first;\n while (node !== Node.Undefined) {\n const next = node.next;\n node.prev = Node.Undefined;\n node.next = Node.Undefined;\n node = next;\n }\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n unshift(element) {\n return this._insert(element, false);\n }\n push(element) {\n return this._insert(element, true);\n }\n _insert(element, atTheEnd) {\n const newNode = new Node(element);\n if (this._first === Node.Undefined) {\n this._first = newNode;\n this._last = newNode;\n }\n else if (atTheEnd) {\n // push\n const oldLast = this._last;\n this._last = newNode;\n newNode.prev = oldLast;\n oldLast.next = newNode;\n }\n else {\n // unshift\n const oldFirst = this._first;\n this._first = newNode;\n newNode.next = oldFirst;\n oldFirst.prev = newNode;\n }\n this._size += 1;\n let didRemove = false;\n return () => {\n if (!didRemove) {\n didRemove = true;\n this._remove(newNode);\n }\n };\n }\n shift() {\n if (this._first === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._first.element;\n this._remove(this._first);\n return res;\n }\n }\n pop() {\n if (this._last === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._last.element;\n this._remove(this._last);\n return res;\n }\n }\n _remove(node) {\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\n // middle\n const anchor = node.prev;\n anchor.next = node.next;\n node.next.prev = anchor;\n }\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\n // only node\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n }\n else if (node.next === Node.Undefined) {\n // last\n this._last = this._last.prev;\n this._last.next = Node.Undefined;\n }\n else if (node.prev === Node.Undefined) {\n // first\n this._first = this._first.next;\n this._first.prev = Node.Undefined;\n }\n // done\n this._size -= 1;\n }\n *[Symbol.iterator]() {\n let node = this._first;\n while (node !== Node.Undefined) {\n yield node.element;\n node = node.next;\n }\n }\n}\nexports.LinkedList = LinkedList;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetMap = exports.BidirectionalMap = exports.CounterSet = exports.Touch = void 0;\nexports.getOrSet = getOrSet;\nexports.mapToString = mapToString;\nexports.setToString = setToString;\nexports.mapsStrictEqualIgnoreOrder = mapsStrictEqualIgnoreOrder;\nfunction getOrSet(map, key, value) {\n let result = map.get(key);\n if (result === undefined) {\n result = value;\n map.set(key, result);\n }\n return result;\n}\nfunction mapToString(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push(`${key} => ${value}`);\n });\n return `Map(${map.size}) {${entries.join(', ')}}`;\n}\nfunction setToString(set) {\n const entries = [];\n set.forEach(value => {\n entries.push(value);\n });\n return `Set(${set.size}) {${entries.join(', ')}}`;\n}\nvar Touch;\n(function (Touch) {\n Touch[Touch[\"None\"] = 0] = \"None\";\n Touch[Touch[\"AsOld\"] = 1] = \"AsOld\";\n Touch[Touch[\"AsNew\"] = 2] = \"AsNew\";\n})(Touch || (exports.Touch = Touch = {}));\nclass CounterSet {\n constructor() {\n this.map = new Map();\n }\n add(value) {\n this.map.set(value, (this.map.get(value) || 0) + 1);\n return this;\n }\n delete(value) {\n let counter = this.map.get(value) || 0;\n if (counter === 0) {\n return false;\n }\n counter--;\n if (counter === 0) {\n this.map.delete(value);\n }\n else {\n this.map.set(value, counter);\n }\n return true;\n }\n has(value) {\n return this.map.has(value);\n }\n}\nexports.CounterSet = CounterSet;\n/**\n * A map that allows access both by keys and values.\n * **NOTE**: values need to be unique.\n */\nclass BidirectionalMap {\n constructor(entries) {\n this._m1 = new Map();\n this._m2 = new Map();\n if (entries) {\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n }\n clear() {\n this._m1.clear();\n this._m2.clear();\n }\n set(key, value) {\n this._m1.set(key, value);\n this._m2.set(value, key);\n }\n get(key) {\n return this._m1.get(key);\n }\n getKey(value) {\n return this._m2.get(value);\n }\n delete(key) {\n const value = this._m1.get(key);\n if (value === undefined) {\n return false;\n }\n this._m1.delete(key);\n this._m2.delete(value);\n return true;\n }\n forEach(callbackfn, thisArg) {\n this._m1.forEach((value, key) => {\n callbackfn.call(thisArg, value, key, this);\n });\n }\n keys() {\n return this._m1.keys();\n }\n values() {\n return this._m1.values();\n }\n}\nexports.BidirectionalMap = BidirectionalMap;\nclass SetMap {\n constructor() {\n this.map = new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.delete(value);\n if (values.size === 0) {\n this.map.delete(key);\n }\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.forEach(fn);\n }\n get(key) {\n const values = this.map.get(key);\n if (!values) {\n return new Set();\n }\n return values;\n }\n}\nexports.SetMap = SetMap;\nfunction mapsStrictEqualIgnoreOrder(a, b) {\n if (a === b) {\n return true;\n }\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (!b.has(key) || b.get(key) !== value) {\n return false;\n }\n }\n for (const [key] of b) {\n if (!a.has(key)) {\n return false;\n }\n }\n return true;\n}\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StopWatch = void 0;\nconst hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function');\nclass StopWatch {\n static create(highResolution) {\n return new StopWatch(highResolution);\n }\n constructor(highResolution) {\n this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance);\n this._startTime = this._now();\n this._stopTime = -1;\n }\n stop() {\n this._stopTime = this._now();\n }\n reset() {\n this._startTime = this._now();\n this._stopTime = -1;\n }\n elapsed() {\n if (this._stopTime !== -1) {\n return this._stopTime - this._startTime;\n }\n return this._now() - this._startTime;\n }\n}\nexports.StopWatch = StopWatch;\n","// 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\t// no module.id needed\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","/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * UnicodeVersionProvider for V11.\n */\n\nimport type { Terminal, ITerminalAddon } from '@xterm/xterm';\nimport type { Unicode11Addon as IUnicode11Api } from '@xterm/addon-unicode11';\nimport { UnicodeV11 } from './UnicodeV11';\n\nexport class Unicode11Addon implements ITerminalAddon , IUnicode11Api {\n public activate(terminal: Terminal): void {\n terminal.unicode.register(new UnicodeV11());\n }\n public dispose(): void { }\n}\n"],"names":["root","factory","exports","module","define","amd","globalThis","BMP_COMBINING","HIGH_COMBINING","BMP_WIDE","HIGH_WIDE","table","bisearch","ucs","data","mid","min","max","length","constructor","version","Uint8Array","fill","r","wcwidth","num","charProperties","codepoint","preceding","width","this","shouldJoin","oldWidth","UnicodeService","extractWidth","createPropertyValue","extractShouldJoin","value","extractCharKind","state","_providers","Object","create","_active","_onChange","Emitter","onChange","event","defaultProvider","UnicodeV6","register","_activeProvider","dispose","versions","keys","activeVersion","Error","fire","provider","getStringCellWidth","s","result","precedingInfo","i","code","charCodeAt","second","currentInfo","chWidth","defineProperty","Permutation","CallbackIterable","ArrayQueue","booleanComparator","numberComparator","CompareResult","tail","array","n","tail2","arr","slice","equals","one","other","itemEquals","a","b","len","removeFastWithoutKeepingOrder","index","last","pop","binarySearch","key","comparator","binarySearch2","quickSelect","nth","compare","TypeError","pivotValue","Math","floor","random","lower","higher","pivots","val","push","groupBy","currentGroup","element","sort","groupAdjacentBy","items","shouldBeGrouped","item","undefined","forEachAdjacent","f","forEachWithNeighbors","sortedDiff","delta","before","after","splices","removed","added","splice","start","deleteCount","toInsert","top","topStep","topAsync","batch","token","Promise","resolve","reject","o","m","setTimeout","isCancellationRequested","errors_1","CancellationError","then","coalesce","filter","e","coalesceInPlace","to","move","from","isFalsyOrEmpty","obj","Array","isArray","isNonEmptyArray","distinct","keyFn","seen","Set","has","add","uniqueFilter","firstOrDefault","notFoundValue","lastOrDefault","commonPrefixLength","range","arg","indexer","mapper","reduce","t","insert","remove","arrayInsert","target","insertIndex","insertArr","concat","shuffle","_seed","rand","seed","x","sin","j","temp","pushToStart","indexOf","unshift","pushToEnd","pushMany","mapArrayOrNot","fn","map","asArray","getRandomElement","insertInto","newItems","getActualStartIndex","compareBy","selector","tieBreakComparators","comparators","item1","item2","isNeitherLessOrGreaterThan","neitherLessOrGreaterThan","reverseOrder","arraysFind_1","compareToKey","low","high","comp","pushSplice","latest","beforeIdx","afterIdx","beforeElement","afterElement","findFirstIdxMonotonousOrArrLen","startIdx","originalLength","newItemsLength","isLessThan","isLessThanOrEqual","isGreaterThan","greaterThan","lessThan","firstIdx","lastIdx","takeWhile","predicate","takeFromEndWhile","endIdx","peek","peekLast","dequeue","removeLast","takeCount","count","empty","_callback","iterate","forEach","handler","toArray","cb","mapFn","some","findFirst","findLast","findLastMaxBy","first","_indexMap","createSortPermutation","compareFn","sortIndices","index1","index2","apply","_","inverse","inverseIndexMap","findLastIdx","fromIndex","findLastIdxMonotonous","endIdxEx","k","MonotonousArray","idx","findLastMonotonous","findFirstMonotonous","findFirstIdxMonotonous","findFirstMax","findLastMax","findFirstMin","findMaxIdx","maxIdx","mapFindFirst","mapped","assertInvariants","_array","_findLastMonotonousLastIdx","_prevFindLastPredicate","_a","SetWithKey","groupFn","diffSets","diffMaps","intersection","setA","setB","elem","Symbol","toStringTag","values","toKey","_map","Map","size","set","delete","entries","entry","clear","callbackfn","thisArg","call","iterator","BugIndicatingError","ErrorNoTelemetry","ExpectedError","NotSupportedError","NotImplementedError","ReadonlyError","errorHandler","ErrorHandler","setUnexpectedErrorHandler","newUnexpectedErrorHandler","isSigPipeError","cast","syscall","toUpperCase","onUnexpectedError","isCancellationError","onUnexpectedExternalError","transformErrorForSerialization","error","name","message","$isError","stack","stacktrace","noTelemetry","isErrorNoTelemetry","transformErrorFromSerialization","canceled","canceledName","illegalArgument","illegalState","getErrorMessage","err","split","String","listeners","unexpectedErrorHandler","addListener","listener","_removeListener","emit","getUnexpectedErrorHandler","super","arguments","isExpected","msg","fromError","setPrototypeOf","prototype","ValueWithChangeEvent","Relay","EventBufferer","DynamicListEventMultiplexer","EventMultiplexer","MicrotaskEmitter","DebounceEmitter","PauseableEmitter","AsyncEmitter","createEventDeliveryQueue","ListenerRefusalError","ListenerLeakError","EventProfiling","Event","setGlobalLeakWarningThreshold","oldValue","_globalLeakWarningThreshold","functional_1","lifecycle_1","linkedList_1","stopwatch_1","once","thisArgs","disposables","didFire","disposable","snapshot","emitter","onWillAddFirstListener","onDidRemoveLastListener","debounce","merge","delay","leading","flushOnListenerRemove","leakWarningThreshold","subscription","output","handle","doFire","numDebouncedCalls","cur","_output","clearTimeout","queueMicrotask","onWillRemoveListener","None","Disposable","defer","each","signal","any","events","d","combinedDisposable","store","initial","accumulate","latch","cache","firstCall","shouldEmit","isT","buffer","flushAfterTimeout","_buffer","flush","onDidAddFirstListener","chain","sythensize","cs","ChainableSynthesis","evaluate","HaltChainable","steps","v","step","fromNodeEventEmitter","eventName","id","args","on","removeListener","fromDOMEventEmitter","addEventListener","removeEventListener","toPromise","fromPromise","promise","res","finally","forward","runAndSubscribe","EmitterObserver","_observable","_counter","_hasChanged","options","addObserver","removeObserver","beginUpdate","handlePossibleChange","handleChange","_change","endUpdate","reportChanges","get","fromObservable","obs","fromObservableLight","observable","didChange","observer","DisposableStore","all","_idPool","listenerCount","invocationCount","elapsedOverall","durations","_stopWatch","StopWatch","stop","elapsed","LeakageMonitor","_errorHandler","threshold","toString","padStart","_warnCountdown","_stacks","check","topStack","topCount","getMostFrequentStack","console","warn","Stacktrace","print","join","UniqueContainer","_size","_options","_leakageMon","onListenerError","_perfMon","_profName","_deliveryQueue","deliveryQueue","_disposed","current","reset","_listeners","_event","callback","tuple","bind","contained","removeMonitor","ceil","EventDeliveryQueuePrivate","toDisposable","log","JSON","stringify","adjustDeliveryQueue","end","_deliver","_deliverQueue","dq","enqueue","hasListeners","fireAsync","promiseJoin","_asyncDeliveryQueue","LinkedList","l","forEachListener","shift","thenables","waitUntil","p","isFrozen","freeze","allSettled","status","reason","isPaused","_isPaused","_eventQueue","_mergeFn","pause","resume","_delay","_handle","_queuedEvents","onFirstListenerAdd","onLastListenerRemove","hook","createSingleCallFunction","unhook","onAddItem","onRemoveItem","getEvent","_store","multiplexer","itemListeners","DisposableMap","addItem","instance","deleteAndDispose","wrapEvent","buffers","reduceData","reducedResult","bufferEvents","listening","inputEvent","inputEventListener","input","ConstValueWithChangeEvent","_value","_onDidChange","onDidChange","fnDidRunCallback","_this","didCall","Iterable","is","thing","_empty","single","wrap","iterableOrElement","iterable","reverse","isEmpty","next","done","find","flatMap","iterables","reducer","initialValue","consume","atMost","Number","POSITIVE_INFINITY","consumed","asyncToArray","async","ImmortalReference","AsyncReferenceCollection","ReferenceCollection","SafeDisposable","RefCountedDisposable","MandatoryMutableDisposable","MutableDisposable","DisposableTracker","setDisposableTracker","tracker","disposableTracker","trackDisposable","markAsDisposed","markAsSingleton","singleton","isDisposable","disposeIfDisposable","parent","children","child","setParent","setParentOfDisposables","disposeOnReturn","arrays_1","collections_1","map_1","iterator_1","livingDisposables","getDisposableData","source","isSingleton","getRootParent","cacheValue","getTrackedDisposables","rootParentCache","computeLeakingDisposables","maxReported","preComputedLeaks","uncoveredLeakingObjs","leakingObjects","info","leakingObjsSet","getStackTracePath","leaking","lines","trim","replace","linesToRemove","regexp","match","removePrefix","stackTraceStarts","SetMap","stackTracePath","stackTraceFormattedLines","line","prevStarts","continuations","cont","leaks","details","setParentOfDisposable","errors","AggregateError","self","DISABLE_DISPOSED_WARNING","_toDispose","_isDisposed","isDisposed","deleteAndLeak","_register","clearAndLeak","_disposable","acquire","release","unset","isset","references","reference","counter","object","createReferencedObject","destroyReferencedObject","referenceCollection","ref","clearAndDisposeAll","skipDisposeOnOverwrite","Node","Undefined","prev","_first","_last","node","_insert","atTheEnd","newNode","oldLast","oldFirst","didRemove","_remove","anchor","Touch","BidirectionalMap","CounterSet","getOrSet","mapToString","setToString","mapsStrictEqualIgnoreOrder","_m1","_m2","getKey","hasPerformanceNow","performance","now","highResolution","_now","Date","_startTime","_stopTime","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","activate","terminal","unicode","UnicodeV11"],"sourceRoot":""}