IndexedDBWorker-D6PiCwZY.js (749643B)
1 var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=e=>a.call(e,`module.exports`)?e[`module.exports`]:l(t({},`__esModule`,{value:!0}),e);function f(e){"@babel/helpers - typeof";return f=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},f(e)}function p(e,t){if(f(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(f(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function m(e){var t=p(e,`string`);return f(t)==`symbol`?t:t+``}function h(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){if(Array.isArray(e))return e}function _(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function v(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function y(e,t){if(e){if(typeof e==`string`)return v(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function b(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 2 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function x(e,t){return g(e)||_(e,t)||y(e,t)||b()}function S(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function C(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){S(a,r,i,o,s,`next`,e)}function s(e){S(a,r,i,o,s,`throw`,e)}o(void 0)})}}var ee=u(s(((e,t)=>{(function(e,n){typeof define==`function`&&define.amd?define(n):typeof t==`object`&&t.exports?t.exports=n():e.log=n()})(e,function(){var e=function(){},t=`undefined`,n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=[`trace`,`debug`,`info`,`warn`,`error`],i={},a=null;function o(e,t){var n=e[t];if(typeof n.bind==`function`)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch{return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(r){return r===`debug`&&(r=`log`),typeof console===t?!1:r===`trace`&&n?s:console[r]===void 0?console.log===void 0?e:o(console,`log`):o(console,r)}function l(){for(var n=this.getLevel(),i=0;i<r.length;i++){var a=r[i];this[a]=i<n?e:this.methodFactory(a,n,this.name)}if(this.log=this.debug,typeof console===t&&n<this.levels.SILENT)return`No console available for logging`}function u(e){return function(){typeof console!==t&&(l.call(this),this[e].apply(this,arguments))}}function d(e,t,n){return c(e)||u.apply(this,arguments)}function f(e,n){var o=this,s,c,u,f=`loglevel`;typeof e==`string`?f+=`:`+e:typeof e==`symbol`&&(f=void 0);function p(e){var n=(r[e]||`silent`).toUpperCase();if(!(typeof window===t||!f)){try{window.localStorage[f]=n;return}catch{}try{window.document.cookie=encodeURIComponent(f)+`=`+n+`;`}catch{}}}function m(){var e;if(!(typeof window===t||!f)){try{e=window.localStorage[f]}catch{}if(typeof e===t)try{var n=window.document.cookie,r=encodeURIComponent(f),i=n.indexOf(r+`=`);i!==-1&&(e=/^([^;]+)/.exec(n.slice(i+r.length+1))[1])}catch{}return o.levels[e]===void 0&&(e=void 0),e}}function h(){if(!(typeof window===t||!f)){try{window.localStorage.removeItem(f)}catch{}try{window.document.cookie=encodeURIComponent(f)+`=; expires=Thu, 01 Jan 1970 00:00:00 UTC`}catch{}}}function g(e){var t=e;if(typeof t==`string`&&o.levels[t.toUpperCase()]!==void 0&&(t=o.levels[t.toUpperCase()]),typeof t==`number`&&t>=0&&t<=o.levels.SILENT)return t;throw TypeError(`log.setLevel() called with invalid level: `+e)}o.name=e,o.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},o.methodFactory=n||d,o.getLevel=function(){return u??c??s},o.setLevel=function(e,t){return u=g(e),t!==!1&&p(u),l.call(o)},o.setDefaultLevel=function(e){c=g(e),m()||o.setLevel(e,!1)},o.resetLevel=function(){u=null,h(),l.call(o)},o.enableAll=function(e){o.setLevel(o.levels.TRACE,e)},o.disableAll=function(e){o.setLevel(o.levels.SILENT,e)},o.rebuild=function(){if(a!==o&&(s=g(a.getLevel())),l.call(o),a===o)for(var e in i)i[e].rebuild()},s=g(a?a.getLevel():`WARN`);var _=m();_!=null&&(u=g(_)),l.call(o)}a=new f,a.getLogger=function(e){if(typeof e!=`symbol`&&typeof e!=`string`||e===``)throw TypeError(`You must supply a name when creating a logger.`);var t=i[e];return t||=i[e]=new f(e,a.methodFactory),t};var p=typeof window===t?void 0:window.log;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=p),a},a.getLoggers=function(){return i},a.default=a,a})}))(),1),te=`matrix`;ee.default.methodFactory=function(e,t,n){return function(){var t=[...arguments];return this.prefix&&t.unshift(this.prefix),e===`error`||e===`warn`||e===`trace`||e===`info`||e===`debug`?console[e](...t):console.log(...t)}};function ne(e){var t=te+(e===void 0?``:`-${e}`),n=ee.default.getLogger(t);return n.getChild===void 0&&(n.prefix=e,n.getChild=t=>{var r=ne((e??``)+t);return r.methodFactory=n.methodFactory,r.rebuild(),r},n.setLevel(ee.default.levels.DEBUG,!1)),n}var w=ne(),re=class{constructor(e,t){this.parent=e,h(this,`name`,void 0),this.name=t+`:`}trace(){var e=[...arguments];this.parent.trace(this.name,...e)}debug(){var e=[...arguments];this.parent.debug(this.name,...e)}info(){var e=[...arguments];this.parent.info(this.name,...e)}warn(){var e=[...arguments];this.parent.warn(this.name,...e)}error(){var e=[...arguments];this.parent.error(this.name,...e)}},ie=c({I:()=>`l`,default:()=>eE,m:()=>`rn`,µ:()=>`μ`,Æ:()=>`AE`,Ç:()=>`C̦`,Ð:()=>`D̵`,Ø:()=>`O̸`,æ:()=>`ae`,ç:()=>`c̦`,ð:()=>Ut,ö:()=>`ة`,ø:()=>`o̸`,Đ:()=>`D̵`,đ:()=>`d̵`,Ě:()=>`Ĕ`,ě:()=>`ĕ`,Ħ:()=>`H̵`,ħ:()=>`h̵`,ı:()=>`i`,IJ:()=>`lJ`,ij:()=>`ij`,Ŀ:()=>`l·`,ŀ:()=>`l·`,Ł:()=>`L̸`,ł:()=>`l̸`,ņ:()=>`ɲ`,ʼn:()=>`'n`,Ő:()=>`Ö`,Œ:()=>`OE`,œ:()=>`oe`,ţ:()=>`ƫ`,Ŧ:()=>`T̵`,ŧ:()=>`t̵`,ſ:()=>`f`,ƀ:()=>`b̵`,Ɓ:()=>`'B`,Ƃ:()=>`b̄`,ƃ:()=>`b̄`,Ƅ:()=>`b`,Ƈ:()=>`C'`,Ɖ:()=>`D̵`,Ɗ:()=>`'D`,ƌ:()=>`d̄`,ƍ:()=>`g`,Ƒ:()=>`F̦`,ƒ:()=>`f̦`,Ɠ:()=>`G'`,Ɩ:()=>`l`,Ɨ:()=>`l̵`,Ƙ:()=>`K'`,ƙ:()=>`k̔`,ƚ:()=>`l̵`,Ɲ:()=>`N̦`,ƞ:()=>`n̩`,Ɵ:()=>`O̵`,Ơ:()=>`O'`,ơ:()=>`o'`,Ƥ:()=>`'P`,ƥ:()=>`p̔`,Ʀ:()=>`R`,Ƨ:()=>`2`,Ƭ:()=>`'T`,ƭ:()=>`t̔`,Ʈ:()=>`T̨`,Ƴ:()=>`'Y`,ƴ:()=>`y̔`,Ƶ:()=>`Z̵`,ƶ:()=>`z̵`,Ʒ:()=>`3`,ƻ:()=>`2̵`,Ƽ:()=>`5`,ƽ:()=>`s`,ƿ:()=>`þ`,ǀ:()=>`l`,ǁ:()=>`ll`,ǃ:()=>`!`,DŽ:()=>`DŽ`,Dž:()=>`Dž`,dž:()=>`dž`,LJ:()=>`LJ`,Lj:()=>`Lj`,lj:()=>`lj`,NJ:()=>`NJ`,Nj:()=>`Nj`,nj:()=>`nj`,Ǎ:()=>`Ă`,ǎ:()=>`ă`,Ǐ:()=>`Ĭ`,ǐ:()=>`ĭ`,Ǒ:()=>`Ŏ`,ǒ:()=>`ŏ`,Ǔ:()=>`Ŭ`,ǔ:()=>`ŭ`,Ǥ:()=>`G̵`,ǥ:()=>`g̵`,Ǧ:()=>`Ğ`,ǧ:()=>`ğ`,DZ:()=>`DZ`,Dz:()=>`Dz`,dz:()=>`dz`,ǵ:()=>`ģ`,Ǿ:()=>un,Ț:()=>`Ţ`,ț:()=>`ƫ`,Ȝ:()=>`3`,Ȣ:()=>`8`,ȣ:()=>`8`,Ȥ:()=>`Z̦`,ȥ:()=>`z̦`,Ȧ:()=>`Å`,ȧ:()=>`å`,ȼ:()=>`c̸`,Ⱦ:()=>`T̸`,Ɂ:()=>`?`,Ʉ:()=>`U̵`,Ɇ:()=>`E̸`,ɇ:()=>`e̸`,Ɉ:()=>`J̵`,ɉ:()=>`j̵`,ɍ:()=>`r̵`,Ɏ:()=>`Y̵`,ɏ:()=>`y̵`,ɑ:()=>`a`,ɓ:()=>`b̔`,ɖ:()=>`d̨`,ɗ:()=>`d̔`,ə:()=>`ǝ`,ɚ:()=>en,ɛ:()=>`ꞓ`,ɠ:()=>`g̔`,ɡ:()=>`g`,ɣ:()=>`y`,ɦ:()=>`h̔`,ɨ:()=>`i̵`,ɩ:()=>`i`,ɪ:()=>`i`,ɫ:()=>`l̴`,ɭ:()=>`l̨`,ɮ:()=>`lȝ`,ɯ:()=>`w`,ɱ:()=>yn,ɳ:()=>`n̨`,ɵ:()=>`o̵`,ɶ:()=>dn,ɼ:()=>`r̩`,ɽ:()=>`r̨`,ʂ:()=>`s̨`,ʋ:()=>`u`,ʏ:()=>`y`,ʐ:()=>`z̨`,ʒ:()=>`ȝ`,ʔ:()=>`?`,ʠ:()=>`q̔`,ʣ:()=>`dz`,ʤ:()=>`dȝ`,ʥ:()=>`dʑ`,ʦ:()=>`ts`,ʧ:()=>`tʃ`,ʨ:()=>`tɕ`,ʩ:()=>`fŋ`,ʪ:()=>`ls`,ʫ:()=>`lz`,ʳ:()=>`ᣴ`,ʹ:()=>`'`,ʺ:()=>`''`,ʻ:()=>`'`,ʼ:()=>`'`,ʽ:()=>`'`,ʾ:()=>`'`,ʿ:()=>`ՙ`,ˆ:()=>`^`,ˈ:()=>`'`,ˊ:()=>`'`,ˋ:()=>`'`,ː:()=>`:`,ˡ:()=>`ᣳ`,ˢ:()=>`ᣵ`,ˤ:()=>`ˁ`,ˮ:()=>`''`,Ͱ:()=>`Ⱶ`,ʹ:()=>`'`,Ͷ:()=>`И`,ͷ:()=>`ᴎ`,ͺ:()=>`i`,ͻ:()=>`ɔ`,ͽ:()=>`ꜿ`,Ϳ:()=>`J`,Α:()=>`A`,Β:()=>`B`,Ε:()=>`E`,Ζ:()=>`Z`,Η:()=>`H`,Θ:()=>`O̵`,Ι:()=>`l`,Κ:()=>`K`,Λ:()=>`Ʌ`,Μ:()=>`M`,Ν:()=>`N`,Ο:()=>`O`,Ρ:()=>`P`,Σ:()=>`Ʃ`,Τ:()=>`T`,Υ:()=>`Y`,Χ:()=>`X`,α:()=>`a`,β:()=>`ß`,γ:()=>`y`,δ:()=>`ẟ`,ε:()=>`ꞓ`,η:()=>`n̩`,θ:()=>`O̵`,ι:()=>`i`,κ:()=>`ĸ`,ν:()=>`v`,ο:()=>`o`,ρ:()=>`p`,σ:()=>`o`,τ:()=>`ᴛ`,υ:()=>`u`,φ:()=>`ɸ`,ϐ:()=>`ß`,ϑ:()=>`O̵`,ϒ:()=>`Y`,ϕ:()=>`ɸ`,ϖ:()=>`π`,ϛ:()=>`ς`,Ϝ:()=>`F`,Ϩ:()=>`2`,ϩ:()=>`ƨ`,ϰ:()=>`ĸ`,ϱ:()=>`p`,ϲ:()=>`c`,ϳ:()=>`j`,ϴ:()=>`O̵`,ϵ:()=>`ꞓ`,Ϸ:()=>`Þ`,ϸ:()=>`þ`,Ϲ:()=>`C`,Ϻ:()=>`M`,Ͻ:()=>`Ɔ`,Ͽ:()=>`Ꜿ`,Є:()=>`Ꞓ`,Ѕ:()=>`S`,І:()=>`l`,Ј:()=>`J`,А:()=>`A`,Б:()=>`b̄`,В:()=>`B`,Г:()=>`Γ`,Е:()=>`E`,З:()=>`3`,Й:()=>`Ѝ`,К:()=>`K`,Л:()=>`Ʌ`,М:()=>`M`,Н:()=>`H`,О:()=>`O`,П:()=>`Π`,Р:()=>`P`,С:()=>`C`,Т:()=>`T`,У:()=>`Y`,Ф:()=>`Φ`,Х:()=>`X`,Ы:()=>`bl`,Ь:()=>`b`,Ю:()=>`lO`,а:()=>`a`,б:()=>`6`,в:()=>`ʙ`,г:()=>`r`,е:()=>`e`,з:()=>`ɜ`,и:()=>`ᴎ`,к:()=>`ĸ`,м:()=>`ʍ`,н:()=>`ʜ`,о:()=>`o`,п:()=>`π`,р:()=>`p`,с:()=>`c`,т:()=>`ᴛ`,у:()=>`y`,ф:()=>`ɸ`,х:()=>`x`,ъ:()=>`ˉb`,ы:()=>`ƅi`,ь:()=>`ƅ`,я:()=>`ᴙ`,є:()=>`ꞓ`,ѕ:()=>`s`,і:()=>`i`,ј:()=>`j`,ћ:()=>`h̵`,ѝ:()=>`й`,ѡ:()=>`w`,Ѣ:()=>`b̵`,ѣ:()=>`b̵`,Ѱ:()=>`Ψ`,ѱ:()=>`ψ`,Ѳ:()=>`O̵`,ѳ:()=>`o̵`,Ѵ:()=>`V`,ѵ:()=>`v`,Ѽ:()=>zn,ѽ:()=>On,Ҋ:()=>In,ҋ:()=>Ln,Ҍ:()=>`b̵`,ҍ:()=>`b̵`,Ґ:()=>`Γ'`,ґ:()=>`r'`,Ғ:()=>An,ғ:()=>`r̵`,Җ:()=>Fn,җ:()=>Pn,Ҙ:()=>`3̦`,ҙ:()=>rn,Қ:()=>`K̩`,қ:()=>_n,Ҟ:()=>`K̵`,ҟ:()=>vn,Ң:()=>`H̩`,ң:()=>an,Ҫ:()=>`C̦`,ҫ:()=>`c̦`,Ҭ:()=>`T̩`,ҭ:()=>Sn,Ү:()=>`Y`,ү:()=>`y`,Ұ:()=>`Y̵`,ұ:()=>`y̵`,Ҳ:()=>`X̩`,һ:()=>`h`,ҽ:()=>`e`,Ҿ:()=>Vn,ҿ:()=>`ę`,Ӏ:()=>`l`,Ӆ:()=>En,ӆ:()=>Rn,Ӈ:()=>`H̦`,ӈ:()=>sn,Ӊ:()=>`H̦`,ӊ:()=>on,Ӌ:()=>`Ҷ`,ӌ:()=>`ҷ`,Ӎ:()=>`M̦`,ӎ:()=>kn,ӏ:()=>`i`,Ӕ:()=>`AE`,ӕ:()=>`ae`,Ә:()=>`Ə`,ә:()=>`ǝ`,Ӡ:()=>`3`,ӡ:()=>`ȝ`,Ө:()=>`O̵`,ө:()=>`o̵`,ԁ:()=>`d`,Ԋ:()=>`Ƕ`,Ԍ:()=>`G`,ԍ:()=>`ɢ`,Ԑ:()=>`Ɛ`,ԑ:()=>`ꞓ`,ԛ:()=>`q`,Ԝ:()=>`W`,ԝ:()=>`w`,Ի:()=>`ኮ`,Մ:()=>`ሆ`,Պ:()=>`ጣ`,Ռ:()=>`ቡ`,Ս:()=>`U`,Տ:()=>`S`,Փ:()=>`Φ`,Օ:()=>`O`,ա:()=>`w`,գ:()=>`q`,զ:()=>`q`,ծ:()=>`ẟ`,հ:()=>`h`,յ:()=>`ȷ`,ո:()=>`n`,պ:()=>`ɰ`,ռ:()=>`n`,ս:()=>`u`,ց:()=>`g`,ք:()=>`f`,օ:()=>`o`,և:()=>Hn,ו:()=>`l`,ט:()=>`v`,י:()=>`'`,ן:()=>`l`,ס:()=>`o`,װ:()=>`ll`,ױ:()=>`l'`,ײ:()=>`''`,أ:()=>`lٴ`,ؤ:()=>rd,إ:()=>`lٕ`,ئ:()=>qd,ا:()=>`l`,ث:()=>Td,ش:()=>aa,ؽ:()=>Hd,ؿ:()=>Ld,ه:()=>`o`,ي:()=>`ى`,ٮ:()=>`ى`,ٯ:()=>`ڡ`,ٲ:()=>`lٴ`,ٳ:()=>`lٕ`,ٵ:()=>`lٴ`,ٶ:()=>od,ٷ:()=>sd,ٸ:()=>Qd,ٹ:()=>ud,پ:()=>bd,ځ:()=>pi,څ:()=>fi,ڈ:()=>Fi,ڋ:()=>Wi,ڎ:()=>Ri,ڑ:()=>Gi,ڒ:()=>Zi,ژ:()=>Ji,ڞ:()=>wo,ڟ:()=>us,ڤ:()=>mc,ڧ:()=>`ف`,ڨ:()=>yc,ک:()=>`ك`,ڪ:()=>`ك`,ڭ:()=>Pc,ڴ:()=>sl,ڵ:()=>ll,ڷ:()=>cl,ں:()=>`ى`,ڻ:()=>hd,ڽ:()=>Fd,ھ:()=>`o`,ہ:()=>`o`,ۂ:()=>`ۀ`,ۃ:()=>`ة`,ۆ:()=>Ju,ۇ:()=>Gu,ۈ:()=>ed,ۉ:()=>Zu,ۋ:()=>Hu,ی:()=>`ى`,ێ:()=>Bd,ې:()=>`ٻ`,ۑ:()=>Id,ے:()=>`ى`,ە:()=>`o`,ۮ:()=>Vi,ۯ:()=>$i,ۿ:()=>`ô`,ݑ:()=>Xn,ݖ:()=>zd,ݢ:()=>`ڬ`,ݣ:()=>zc,ݧ:()=>`ݔ`,ݨ:()=>mu,ݩ:()=>hu,ݬ:()=>ea,ݱ:()=>ia,ݲ:()=>mi,ݾ:()=>ga,ߊ:()=>`l`,ߴ:()=>`'`,ߵ:()=>`'`,ߺ:()=>`_`,ࢡ:()=>Qn,ࢤ:()=>bc,ࢧ:()=>Wl,ࢨ:()=>Ud,ࢩ:()=>`ݔ`,ࢮ:()=>Hi,ࢯ:()=>To,ࢰ:()=>`گ`,ࢱ:()=>`و`,ࢲ:()=>ra,ࢶ:()=>Zn,ࢷ:()=>Rd,ࢹ:()=>Qi,ࢺ:()=>Vd,ࢻ:()=>`ڡ`,ࢼ:()=>`ڡ`,ࢽ:()=>`ى`,ऄ:()=>bp,आ:()=>gp,ई:()=>Tp,ऍ:()=>Sp,ऎ:()=>Cp,ऐ:()=>wp,ऑ:()=>xp,ऒ:()=>_p,ओ:()=>vp,औ:()=>yp,ॽ:()=>`?`,আ:()=>Ep,ৠ:()=>Dp,ৡ:()=>Op,ਆ:()=>jp,ਇ:()=>Pp,ਈ:()=>Fp,ਉ:()=>kp,ਊ:()=>Ap,ਏ:()=>Ip,ਐ:()=>Mp,ਔ:()=>Np,આ:()=>Lp,ઍ:()=>Vp,એ:()=>Hp,ઐ:()=>Up,ઑ:()=>Rp,ઓ:()=>zp,ઔ:()=>Bp,ઽ:()=>`ऽ`,ଆ:()=>Wp,ଠ:()=>`O`,ஊ:()=>Gp,ஜ:()=>`ஐ`,ர:()=>`ஈ`,ఓ:()=>Qp,ఔ:()=>Xp,ఠ:()=>rm,ఢ:()=>em,థ:()=>tm,భ:()=>nm,మ:()=>om,ష:()=>im,హ:()=>am,ౠ:()=>Jp,ౡ:()=>Yp,ಅ:()=>`అ`,ಆ:()=>`ఆ`,ಇ:()=>`ఇ`,ಒ:()=>`ఒ`,ಓ:()=>$p,ಔ:()=>Zp,ಜ:()=>`జ`,ಞ:()=>`ఞ`,ಣ:()=>`ణ`,ಯ:()=>`య`,ಱ:()=>`ఱ`,ಲ:()=>`ల`,ೡ:()=>sm,ഈ:()=>cm,ഉ:()=>`உ`,ഊ:()=>Kp,ഌ:()=>fm,ഐ:()=>lm,ഓ:()=>um,ഔ:()=>dm,ങ:()=>pm,ജ:()=>`ஐ`,ഠ:()=>`o`,ണ:()=>`ண`,റ:()=>`ര`,ഴ:()=>`ழ`,ശ:()=>`ஶ`,ഺ:()=>qp,ൎ:()=>`ॱ`,ൟ:()=>mn,ൡ:()=>`ഞ`,ൻ:()=>mm,ർ:()=>hm,ฃ:()=>`ข`,ซ:()=>`ช`,ฏ:()=>`ฎ`,ด:()=>`ค`,ต:()=>`ค`,ท:()=>`ฑ`,ม:()=>`ฆ`,ฦ:()=>`ภ`,ำ:()=>Em,แ:()=>Dm,ๅ:()=>`า`,ຈ:()=>`จ`,ຍ:()=>`ย`,ບ:()=>`บ`,ປ:()=>`ป`,ຝ:()=>`ฝ`,ພ:()=>`พ`,ຟ:()=>`ฟ`,ຳ:()=>Am,ໜ:()=>Om,ໝ:()=>km,ༀ:()=>jm,ཪ:()=>`ར`,က:()=>Nm,တ:()=>hn,ဝ:()=>`o`,ဟ:()=>Im,ဩ:()=>zm,ဪ:()=>Bm,ၥ:()=>`၁`,ၦ:()=>Fm,ၯ:()=>Lm,ၰ:()=>Pm,ၾ:()=>Rm,ႁ:()=>Mm,Ⴀ:()=>`Ꞇ`,ყ:()=>`y`,ჳ:()=>`ȝ`,ჿ:()=>`o`,ᄁ:()=>Jg,ᄄ:()=>M_,ᄈ:()=>jy,ᄊ:()=>Eb,ᄍ:()=>hx,ᄓ:()=>s_,ᄔ:()=>l_,ᄕ:()=>f_,ᄖ:()=>g_,ᄗ:()=>A_,ᄘ:()=>nv,ᄙ:()=>lv,ᄚ:()=>Hv,ᄛ:()=>Nv,ᄜ:()=>oy,ᄝ:()=>my,ᄞ:()=>Sy,ᄟ:()=>wy,ᄠ:()=>Ty,ᄡ:()=>Iy,ᄢ:()=>zy,ᄣ:()=>Vy,ᄤ:()=>Wy,ᄥ:()=>Gy,ᄦ:()=>Ky,ᄧ:()=>Zy,ᄨ:()=>eb,ᄩ:()=>rb,ᄪ:()=>ab,ᄫ:()=>Jy,ᄬ:()=>Py,ᄭ:()=>lb,ᄮ:()=>fb,ᄯ:()=>mb,ᄰ:()=>_b,ᄱ:()=>yb,ᄲ:()=>xb,ᄳ:()=>wb,ᄴ:()=>Mb,ᄵ:()=>Nb,ᄶ:()=>Pb,ᄷ:()=>Lb,ᄸ:()=>zb,ᄹ:()=>Bb,ᄺ:()=>Hb,ᄻ:()=>Wv,ᄽ:()=>Lx,ᄿ:()=>Rx,ᅁ:()=>Wb,ᅂ:()=>qb,ᅃ:()=>Yb,ᅄ:()=>Xb,ᅅ:()=>Zb,ᅆ:()=>lx,ᅇ:()=>ex,ᅈ:()=>rx,ᅉ:()=>ix,ᅊ:()=>ox,ᅋ:()=>sx,ᅍ:()=>mx,ᅏ:()=>Ux,ᅑ:()=>Wx,ᅒ:()=>yx,ᅓ:()=>bx,ᅖ:()=>Sx,ᅗ:()=>Tx,ᅘ:()=>Fx,ᅚ:()=>Qg,ᅛ:()=>__,ᅜ:()=>b_,ᅝ:()=>T_,ᅞ:()=>I_,ᅢ:()=>Yx,ᅤ:()=>eS,ᅦ:()=>aS,ᅨ:()=>uS,ᅪ:()=>fS,ᅫ:()=>mS,ᅬ:()=>TS,ᅯ:()=>BS,ᅰ:()=>US,ᅱ:()=>JS,ᅳ:()=>`ー`,ᅴ:()=>Xt,ᅵ:()=>`丨`,ᅶ:()=>qx,ᅷ:()=>Jx,ᅸ:()=>Zx,ᅹ:()=>Qx,ᅺ:()=>rS,ᅻ:()=>iS,ᅼ:()=>nS,ᅽ:()=>cS,ᅾ:()=>lS,ᅿ:()=>vS,ᆀ:()=>yS,ᆁ:()=>xS,ᆂ:()=>SS,ᆃ:()=>wS,ᆄ:()=>kS,ᆅ:()=>MS,ᆆ:()=>jS,ᆇ:()=>FS,ᆈ:()=>IS,ᆉ:()=>RS,ᆊ:()=>zS,ᆋ:()=>HS,ᆌ:()=>KS,ᆍ:()=>qS,ᆎ:()=>ZS,ᆏ:()=>$S,ᆐ:()=>eC,ᆑ:()=>tC,ᆒ:()=>rC,ᆓ:()=>oC,ᆔ:()=>sC,ᆕ:()=>Yt,ᆖ:()=>Wt,ᆗ:()=>Qt,ᆘ:()=>LC,ᆙ:()=>RC,ᆚ:()=>UC,ᆛ:()=>KC,ᆜ:()=>IC,ᆝ:()=>JC,ᆟ:()=>uC,ᆠ:()=>fC,ᆡ:()=>mC,ᆢ:()=>pC,ᆣ:()=>Kx,ᆤ:()=>$x,ᆥ:()=>sS,ᆦ:()=>gS,ᆧ:()=>_S,ᆨ:()=>`ᄀ`,ᆩ:()=>Xg,ᆪ:()=>t_,ᆫ:()=>`ᄂ`,ᆬ:()=>x_,ᆭ:()=>E_,ᆮ:()=>`ᄃ`,ᆯ:()=>`ᄅ`,ᆰ:()=>Y_,ᆱ:()=>pv,ᆲ:()=>yv,ᆳ:()=>Av,ᆴ:()=>Rv,ᆵ:()=>Bv,ᆶ:()=>Gv,ᆷ:()=>`ᄆ`,ᆸ:()=>`ᄇ`,ᆹ:()=>Ry,ᆺ:()=>`ᄉ`,ᆻ:()=>Ob,ᆼ:()=>`ᄋ`,ᆽ:()=>`ᄌ`,ᆾ:()=>`ᄎ`,ᆿ:()=>`ᄏ`,ᇀ:()=>`ᄐ`,ᇁ:()=>`ᄑ`,ᇂ:()=>`ᄒ`,ᇃ:()=>$g,ᇄ:()=>r_,ᇅ:()=>c_,ᇆ:()=>m_,ᇇ:()=>v_,ᇈ:()=>O_,ᇉ:()=>w_,ᇊ:()=>j_,ᇋ:()=>L_,ᇌ:()=>$_,ᇍ:()=>rv,ᇎ:()=>av,ᇏ:()=>cv,ᇐ:()=>uv,ᇑ:()=>hv,ᇒ:()=>gv,ᇓ:()=>Cv,ᇔ:()=>Ov,ᇕ:()=>Ev,ᇖ:()=>Mv,ᇗ:()=>qv,ᇘ:()=>Lv,ᇙ:()=>Xv,ᇚ:()=>ey,ᇛ:()=>iy,ᇜ:()=>cy,ᇝ:()=>dy,ᇞ:()=>py,ᇟ:()=>by,ᇠ:()=>vy,ᇡ:()=>yy,ᇢ:()=>gy,ᇣ:()=>Oy,ᇤ:()=>ob,ᇥ:()=>cb,ᇦ:()=>Xy,ᇧ:()=>db,ᇨ:()=>gb,ᇩ:()=>vb,ᇪ:()=>Cb,ᇫ:()=>`ᅀ`,ᇬ:()=>Gb,ᇭ:()=>Kb,ᇮ:()=>nx,ᇯ:()=>ax,ᇰ:()=>`ᅌ`,ᇱ:()=>Qb,ᇲ:()=>ux,ᇳ:()=>Cx,ᇴ:()=>Dx,ᇵ:()=>Ax,ᇶ:()=>jx,ᇷ:()=>Mx,ᇸ:()=>Nx,ᇹ:()=>`ᅙ`,ᇺ:()=>Zg,ᇻ:()=>e_,ᇼ:()=>i_,ᇽ:()=>a_,ᇾ:()=>o_,ᇿ:()=>d_,ሀ:()=>`U`,ሣ:()=>`ɰ`,ቀ:()=>`Φ`,በ:()=>`Ո`,ኔ:()=>`ձ`,ዐ:()=>`O`,Ꭰ:()=>`D`,Ꭱ:()=>`R`,Ꭲ:()=>`T`,Ꭴ:()=>`O'`,Ꭵ:()=>`i`,Ꭸ:()=>`Ⱶ`,Ꭹ:()=>`Y`,Ꭺ:()=>`A`,Ꭻ:()=>`J`,Ꭼ:()=>`E`,Ꭾ:()=>`?`,Ꮀ:()=>`Ⱶ`,Ꮁ:()=>`Γ`,Ꮃ:()=>`W`,Ꮇ:()=>`M`,Ꮋ:()=>`H`,Ꮍ:()=>`Y`,Ꮎ:()=>`O̵`,Ꮏ:()=>`ƫ`,Ꮐ:()=>`G`,Ꮒ:()=>`h`,Ꮓ:()=>`Z`,Ꮗ:()=>`Ѡ`,Ꮛ:()=>`Ɛ`,Ꮜ:()=>`U̵`,Ꮞ:()=>`4`,Ꮟ:()=>`b`,Ꮢ:()=>`R`,Ꮤ:()=>`W`,Ꮥ:()=>`S`,Ꮩ:()=>`V`,Ꮪ:()=>`S`,Ꮮ:()=>`L`,Ꮯ:()=>`C`,Ꮲ:()=>`P`,Ꮶ:()=>`K`,Ꮷ:()=>`d`,Ꮻ:()=>`O̵`,Ꮾ:()=>`6`,Ᏸ:()=>`ß`,Ᏺ:()=>`h̔`,Ᏻ:()=>`G`,Ᏼ:()=>`B`,ᏻ:()=>`ɢ`,ᏼ:()=>`ʙ`,ᐃ:()=>`Δ`,ᐌ:()=>be,ᐍ:()=>Vm,ᐎ:()=>ve,ᐏ:()=>Mn,ᐐ:()=>xe,ᐑ:()=>Um,ᐒ:()=>Se,ᐓ:()=>Wm,ᐔ:()=>Ce,ᐕ:()=>Km,ᐗ:()=>we,ᐘ:()=>qm,ᐙ:()=>Te,ᐚ:()=>Ym,ᐧ:()=>`·`,ᐫ:()=>Hm,ᐬ:()=>Nn,ᐭ:()=>Gm,ᐮ:()=>Jm,ᐯ:()=>`V`,ᐱ:()=>`Ʌ`,ᐳ:()=>`>`,ᐷ:()=>`·>`,ᐸ:()=>`<`,ᐺ:()=>`·V`,ᐻ:()=>`V·`,ᐼ:()=>ge,ᐽ:()=>Dn,ᐾ:()=>Ee,ᐿ:()=>Zm,ᑀ:()=>`·>`,ᑁ:()=>`>·`,ᑂ:()=>De,ᑃ:()=>Qm,ᑄ:()=>`·<`,ᑅ:()=>`<·`,ᑆ:()=>Oe,ᑇ:()=>$m,ᑊ:()=>`'`,ᑌ:()=>`U`,ᑎ:()=>`Ո`,ᑔ:()=>Ae,ᑗ:()=>`·U`,ᑘ:()=>`U·`,ᑙ:()=>ye,ᑚ:()=>qn,ᑛ:()=>ke,ᑜ:()=>eh,ᑝ:()=>je,ᑞ:()=>th,ᑟ:()=>Me,ᑠ:()=>rh,ᑡ:()=>Ne,ᑢ:()=>ih,ᑣ:()=>Pe,ᑤ:()=>oh,ᑧ:()=>`U'`,ᑨ:()=>`Ո'`,ᑩ:()=>nh,ᑪ:()=>ah,ᑭ:()=>`P`,ᑯ:()=>`d`,ᑲ:()=>`b`,ᑳ:()=>`ḃ`,ᑴ:()=>Fe,ᑵ:()=>sh,ᑶ:()=>`·P`,ᑷ:()=>`p·`,ᑸ:()=>Ie,ᑹ:()=>lh,ᑺ:()=>`·d`,ᑻ:()=>`d·`,ᑼ:()=>Le,ᑽ:()=>uh,ᑾ:()=>`·b`,ᑿ:()=>`b·`,ᒀ:()=>he,ᒁ:()=>$t,ᒅ:()=>ch,ᒆ:()=>`P'`,ᒇ:()=>`d'`,ᒈ:()=>`b'`,ᒍ:()=>`J`,ᒒ:()=>Re,ᒓ:()=>dh,ᒔ:()=>ze,ᒕ:()=>fh,ᒖ:()=>Be,ᒗ:()=>ph,ᒘ:()=>`·J`,ᒙ:()=>`J·`,ᒚ:()=>Ve,ᒛ:()=>mh,ᒜ:()=>He,ᒝ:()=>hh,ᒞ:()=>Ue,ᒟ:()=>gh,ᒥ:()=>`Γ`,ᒪ:()=>`L`,ᒬ:()=>We,ᒭ:()=>_h,ᒮ:()=>_e,ᒯ:()=>jn,ᒰ:()=>Ge,ᒱ:()=>vh,ᒲ:()=>Ke,ᒳ:()=>yh,ᒴ:()=>qe,ᒵ:()=>bh,ᒶ:()=>`·L`,ᒷ:()=>`l·`,ᒸ:()=>Je,ᒹ:()=>xh,ᒿ:()=>`2`,ᓉ:()=>Ye,ᓊ:()=>Sh,ᓋ:()=>et,ᓌ:()=>Dh,ᓍ:()=>tt,ᓎ:()=>Oh,ᓑ:()=>`ᐡ`,ᓜ:()=>nt,ᓝ:()=>kh,ᓞ:()=>rt,ᓟ:()=>Ah,ᓠ:()=>it,ᓡ:()=>jh,ᓢ:()=>at,ᓣ:()=>Mh,ᓤ:()=>ot,ᓥ:()=>Nh,ᓦ:()=>st,ᓧ:()=>Ph,ᓨ:()=>ct,ᓩ:()=>Fh,ᓶ:()=>lt,ᓷ:()=>Ih,ᓸ:()=>ut,ᓹ:()=>Lh,ᓺ:()=>dt,ᓻ:()=>Rh,ᓼ:()=>ft,ᓽ:()=>zh,ᓾ:()=>pt,ᓿ:()=>Bh,ᔀ:()=>mt,ᔁ:()=>Vh,ᔂ:()=>ht,ᔃ:()=>Hh,ᔌ:()=>Uh,ᔍ:()=>Gh,ᔎ:()=>Wh,ᔏ:()=>Kh,ᔗ:()=>gt,ᔘ:()=>qh,ᔙ:()=>_t,ᔚ:()=>Jh,ᔛ:()=>vt,ᔜ:()=>Yh,ᔝ:()=>yt,ᔞ:()=>Xh,ᔟ:()=>bt,ᔠ:()=>Zh,ᔡ:()=>xt,ᔢ:()=>Qh,ᔣ:()=>St,ᔤ:()=>$h,ᔯ:()=>`·4`,ᔰ:()=>`4·`,ᔱ:()=>Ct,ᔲ:()=>eg,ᔳ:()=>wt,ᔴ:()=>tg,ᔵ:()=>Tt,ᔶ:()=>ng,ᔷ:()=>Et,ᔸ:()=>rg,ᔹ:()=>Dt,ᔺ:()=>ig,ᔻ:()=>Ot,ᔼ:()=>ag,ᕀ:()=>`ᐩ`,ᕁ:()=>`x`,ᕎ:()=>Ft,ᕏ:()=>sg,ᕛ:()=>It,ᕜ:()=>_g,ᕨ:()=>Lt,ᕩ:()=>bg,ᕷ:()=>`ẟ`,ᕼ:()=>`H`,ᕽ:()=>`x`,ᕾ:()=>pg,ᕿ:()=>dg,ᖀ:()=>mg,ᖁ:()=>ug,ᖂ:()=>hg,ᖃ:()=>cg,ᖄ:()=>lg,ᖅ:()=>gg,ᖇ:()=>`R`,ᖎ:()=>Tg,ᖏ:()=>Eg,ᖐ:()=>Dg,ᖑ:()=>Cg,ᖒ:()=>Og,ᖓ:()=>kg,ᖔ:()=>Ag,ᖯ:()=>`b`,ᖴ:()=>`F`,ᖵ:()=>`Ⅎ`,ᖷ:()=>`ꟻ`,ᗄ:()=>`Ɐ`,ᗅ:()=>`A`,ᗞ:()=>`D`,ᗪ:()=>`D`,ᗯ:()=>`Ѡ`,ᗰ:()=>`M`,ᗷ:()=>`B`,ᘂ:()=>`ᒐ`,ᘃ:()=>`ᒉ`,ᘄ:()=>`ᓓ`,ᘇ:()=>`ᓚ`,ᘢ:()=>`ᕃ`,ᘣ:()=>`ᕆ`,ᘤ:()=>`ᕊ`,ᘮ:()=>`Ʊ`,ᘯ:()=>`Ω`,ᘴ:()=>`Ʊ`,ᘵ:()=>`Ω`,ᙯ:()=>fg,ᙰ:()=>wg,ᙱ:()=>Mg,ᙲ:()=>Ng,ᙳ:()=>jg,ᙴ:()=>Pg,ᙵ:()=>Fg,ᙶ:()=>Ig,ᙷ:()=>Rg,ᙸ:()=>zg,ᙹ:()=>Bg,ᙺ:()=>Vg,ᙻ:()=>Hg,ᙼ:()=>Ug,ᙽ:()=>Wg,ᚲ:()=>`<`,ᚷ:()=>`X`,ᛁ:()=>`l`,ᛂ:()=>`ᚽ`,ᛌ:()=>`'`,ᛕ:()=>`K`,ᛖ:()=>`M`,ᛘ:()=>`Ψ`,ᛡ:()=>`ᚼ`,ᛰ:()=>`Φ`,ឣ:()=>`អ`,ᡕ:()=>`ᠵ`,ᢖ:()=>`ᡜ`,ᢳ:()=>Rt,ᢶ:()=>zt,ᢹ:()=>Bt,ᣂ:()=>Vt,ᣆ:()=>Xe,ᣇ:()=>Ch,ᣈ:()=>Ze,ᣉ:()=>wh,ᣊ:()=>Qe,ᣋ:()=>Th,ᣌ:()=>$e,ᣍ:()=>Eh,ᣎ:()=>kt,ᣏ:()=>At,ᣐ:()=>jt,ᣑ:()=>Mt,ᣒ:()=>Nt,ᣓ:()=>Pt,ᣛ:()=>`ᣵ`,ᣜ:()=>qg,ᣝ:()=>Xm,ᣠ:()=>og,ᣣ:()=>vg,ᣤ:()=>yg,ᣥ:()=>xg,ᣨ:()=>Sg,ᣪ:()=>Lg,ᣭ:()=>Bn,ᣰ:()=>Gg,ᣲ:()=>Kg,ᴄ:()=>`c`,ᴈ:()=>`ɜ`,ᴋ:()=>`ĸ`,ᴍ:()=>`ʍ`,ᴏ:()=>`o`,ᴐ:()=>`ɔ`,ᴑ:()=>`o`,ᴔ:()=>`ǝo`,ᴜ:()=>`u`,ᴠ:()=>`v`,ᴡ:()=>`w`,ᴢ:()=>`z`,ᴤ:()=>`ƨ`,ᴦ:()=>`r`,ᴧ:()=>`ʌ`,ᴨ:()=>`π`,ᴩ:()=>`ᴘ`,ᴫ:()=>`л`,ᴾ:()=>`ᣖ`,ᵒ:()=>`º`,ᵫ:()=>`ue`,ᵮ:()=>`f̴`,ᵯ:()=>bn,ᵰ:()=>`n̴`,ᵲ:()=>`r̴`,ᵳ:()=>xn,ᵴ:()=>`s̴`,ᵵ:()=>`t̴`,ᵶ:()=>`z̴`,ᵸ:()=>`ᴴ`,ᵻ:()=>`i̵`,ᵼ:()=>`i̵`,ᵽ:()=>`p̵`,ᵾ:()=>`u̵`,ᵿ:()=>Cn,ᶃ:()=>`g`,ᶌ:()=>`y`,ᶐ:()=>`ɋ`,ᶟ:()=>`ᵋ`,ᶢ:()=>`ᵍ`,ᶺ:()=>`ᣔ`,ᶻ:()=>`ᙆ`,ṃ:()=>`ꭑ`,ẚ:()=>`ả`,ẝ:()=>`f`,ỿ:()=>`y`,ώ:()=>`ῴ`,ι:()=>`i`,ῶ:()=>`Ꮿ`,ℂ:()=>`C`,ℇ:()=>`Ɛ`,ℊ:()=>`g`,ℋ:()=>`H`,ℌ:()=>`H`,ℍ:()=>`H`,ℎ:()=>`h`,ℏ:()=>`h̵`,ℐ:()=>`l`,ℑ:()=>`l`,ℒ:()=>`L`,ℓ:()=>`l`,ℕ:()=>`N`,ℙ:()=>`P`,ℚ:()=>`Q`,ℛ:()=>`R`,ℜ:()=>`R`,ℝ:()=>`R`,ℤ:()=>`Z`,Ω:()=>`Ω`,ℨ:()=>`Z`,K:()=>`K`,ℬ:()=>`B`,ℭ:()=>`C`,℮:()=>`e`,ℯ:()=>`e`,ℰ:()=>`E`,ℱ:()=>`F`,ℳ:()=>`M`,ℴ:()=>`o`,ℵ:()=>`א`,ℶ:()=>`ב`,ℷ:()=>`ג`,ℸ:()=>`ד`,ℹ:()=>`i`,ℼ:()=>`π`,ℽ:()=>`y`,ℾ:()=>`Γ`,ℿ:()=>`Π`,ⅅ:()=>`D`,ⅆ:()=>`d`,ⅇ:()=>`e`,ⅈ:()=>`i`,ⅉ:()=>`j`,Ⅰ:()=>`l`,Ⅱ:()=>`ll`,Ⅲ:()=>`lll`,Ⅳ:()=>`lV`,Ⅴ:()=>`V`,Ⅵ:()=>`Vl`,Ⅶ:()=>`Vll`,Ⅷ:()=>Tn,Ⅸ:()=>`lX`,Ⅹ:()=>`X`,Ⅺ:()=>`Xl`,Ⅻ:()=>`Xll`,Ⅼ:()=>`L`,Ⅽ:()=>`C`,Ⅾ:()=>`D`,Ⅿ:()=>`M`,ⅰ:()=>`i`,ⅱ:()=>`ii`,ⅲ:()=>`iii`,ⅳ:()=>`iv`,ⅴ:()=>`v`,ⅵ:()=>`vi`,ⅶ:()=>`vii`,ⅷ:()=>wn,ⅸ:()=>`ix`,ⅹ:()=>`x`,ⅺ:()=>`xi`,ⅻ:()=>`xii`,ⅼ:()=>`l`,ⅽ:()=>`c`,ⅾ:()=>`d`,ⅿ:()=>`rn`,Ↄ:()=>`Ɔ`,ↄ:()=>`ɔ`,Ⱨ:()=>`H̩`,Ⱪ:()=>`K̩`,Ⲅ:()=>`Γ`,ⲅ:()=>`r`,Ⲇ:()=>`Δ`,Ⲉ:()=>`Ꞓ`,ⲉ:()=>`ꞓ`,Ⲏ:()=>`H`,Ⲓ:()=>`l`,Ⲕ:()=>`K`,ⲕ:()=>`ĸ`,Ⲗ:()=>`λ`,Ⲙ:()=>`M`,Ⲛ:()=>`N`,Ⲟ:()=>`O`,ⲟ:()=>`o`,Ⲡ:()=>`Π`,Ⲣ:()=>`P`,ⲣ:()=>`p`,Ⲥ:()=>`C`,ⲥ:()=>`c`,Ⲧ:()=>`T`,Ⲩ:()=>`Y`,Ⲫ:()=>`Φ`,ⲫ:()=>`ɸ`,Ⲭ:()=>`X`,ⲭ:()=>`χ`,Ⲯ:()=>`Ψ`,ⲱ:()=>`ω`,Ⲵ:()=>`<·`,Ⲻ:()=>`-`,Ⲽ:()=>`Ш`,ⲽ:()=>`ш`,Ⳇ:()=>`/`,Ⳋ:()=>`9`,Ⳍ:()=>`3`,ⳍ:()=>`ȝ`,Ⳑ:()=>`L`,ⳑ:()=>`ʟ`,Ⳓ:()=>`6`,Ⳝ:()=>`Ϭ`,ⳤ:()=>`ϗ`,ⴱ:()=>`O̵`,ⴷ:()=>`Ʌ`,ⴸ:()=>`V`,ⴹ:()=>`E`,ⴺ:()=>`Ǝ`,ⵁ:()=>`O̸`,ⵈ:()=>me,ⵉ:()=>`Ʃ`,ⵏ:()=>`l`,ⵑ:()=>`!`,ⵔ:()=>`O`,ⵕ:()=>`Q`,ⵙ:()=>`ʘ`,ⵝ:()=>`X`,ⵠ:()=>`Δ`,ⵣ:()=>`ᛯ`,〇:()=>`O`,〳:()=>`/`,〸:()=>`十`,〹:()=>`卄`,〺:()=>`卅`,く:()=>`❬`,゛:()=>`゙`,゜:()=>`゚`,イ:()=>`亻`,エ:()=>`工`,カ:()=>`力`,タ:()=>`夕`,ト:()=>`卜`,ニ:()=>`二`,ノ:()=>`/`,ハ:()=>`八`,ヘ:()=>`へ`,ロ:()=>`口`,ㄱ:()=>`ᄀ`,ㄲ:()=>Yg,ㄳ:()=>n_,ㄴ:()=>`ᄂ`,ㄵ:()=>S_,ㄶ:()=>D_,ㄷ:()=>`ᄃ`,ㄸ:()=>N_,ㄹ:()=>`ᄅ`,ㄺ:()=>X_,ㄻ:()=>mv,ㄼ:()=>bv,ㄽ:()=>jv,ㄾ:()=>zv,ㄿ:()=>Vv,ㅀ:()=>Uv,ㅁ:()=>`ᄆ`,ㅂ:()=>`ᄇ`,ㅃ:()=>My,ㅄ:()=>Ly,ㅅ:()=>`ᄉ`,ㅆ:()=>Db,ㅇ:()=>`ᄋ`,ㅈ:()=>`ᄌ`,ㅉ:()=>gx,ㅊ:()=>`ᄎ`,ㅋ:()=>`ᄏ`,ㅌ:()=>`ᄐ`,ㅍ:()=>`ᄑ`,ㅎ:()=>`ᄒ`,ㅏ:()=>`ᅡ`,ㅐ:()=>Xx,ㅑ:()=>`ᅣ`,ㅒ:()=>tS,ㅓ:()=>`ᅥ`,ㅔ:()=>oS,ㅕ:()=>`ᅧ`,ㅖ:()=>dS,ㅗ:()=>`ᅩ`,ㅘ:()=>pS,ㅙ:()=>hS,ㅚ:()=>ES,ㅛ:()=>`ᅭ`,ㅜ:()=>`ᅮ`,ㅝ:()=>VS,ㅞ:()=>WS,ㅟ:()=>YS,ㅠ:()=>`ᅲ`,ㅡ:()=>`ー`,ㅢ:()=>Zt,ㅣ:()=>`丨`,ㅤ:()=>`ᅠ`,ㅥ:()=>u_,ㅦ:()=>p_,ㅧ:()=>y_,ㅨ:()=>k_,ㅩ:()=>ev,ㅪ:()=>ov,ㅫ:()=>wv,ㅬ:()=>Jv,ㅭ:()=>Zv,ㅮ:()=>sy,ㅯ:()=>fy,ㅰ:()=>xy,ㅱ:()=>hy,ㅲ:()=>Cy,ㅳ:()=>Ey,ㅴ:()=>By,ㅵ:()=>Hy,ㅶ:()=>Qy,ㅷ:()=>ib,ㅸ:()=>Yy,ㅹ:()=>Fy,ㅺ:()=>ub,ㅻ:()=>pb,ㅼ:()=>hb,ㅽ:()=>Sb,ㅾ:()=>Fb,ㅿ:()=>`ᅀ`,ㆀ:()=>tx,ㆁ:()=>`ᅌ`,ㆂ:()=>$b,ㆃ:()=>dx,ㆄ:()=>Ex,ㆅ:()=>Ix,ㆆ:()=>`ᅙ`,ㆇ:()=>AS,ㆈ:()=>NS,ㆉ:()=>LS,ㆊ:()=>nC,ㆋ:()=>iC,ㆌ:()=>cC,ㆍ:()=>`ᆞ`,ㆎ:()=>hC,㦳:()=>`㘽`,䎛:()=>`㖈`,䐠:()=>`㬻`,一:()=>`ー`,丶:()=>`\\`,丿:()=>`/`,倂:()=>`併`,值:()=>`値`,啟:()=>`啓`,囗:()=>`口`,填:()=>`塡`,士:()=>`土`,壿:()=>`墫`,嬀:()=>`媯`,帲:()=>`帡`,幐:()=>`㬺`,戸:()=>`戶`,搉:()=>`㩁`,晣:()=>`䀿`,晩:()=>`晚`,曶:()=>`㫚`,朦:()=>`䑃`,柿:()=>`杮`,槩:()=>`㮣`,樧:()=>`榝`,潙:()=>`溈`,硏:()=>`研`,絶:()=>`絕`,肦:()=>`朌`,胊:()=>`朐`,胐:()=>`朏`,胶:()=>`㬵`,脁:()=>`朓`,脧:()=>`朘`,腁:()=>`胼`,膧:()=>`朣`,蔿:()=>`蒍`,虁:()=>`蘷`,訞:()=>`䚶`,詽:()=>`訮`,讏:()=>`讆`,豣:()=>`豜`,趆:()=>`赿`,跺:()=>`跥`,躛:()=>`躗`,輧:()=>`軿`,郞:()=>`郎`,鎮:()=>`鎭`,隸:()=>`隷`,鹃:()=>`鹂`,黒:()=>`黑`,鿃:()=>`䀹`,ꓐ:()=>`B`,ꓑ:()=>`P`,ꓒ:()=>`d`,ꓓ:()=>`D`,ꓔ:()=>`T`,ꓖ:()=>`G`,ꓗ:()=>`K`,ꓙ:()=>`J`,ꓚ:()=>`C`,ꓛ:()=>`Ɔ`,ꓜ:()=>`Z`,ꓝ:()=>`F`,ꓞ:()=>`Ⅎ`,ꓟ:()=>`M`,ꓠ:()=>`N`,ꓡ:()=>`L`,ꓢ:()=>`S`,ꓣ:()=>`R`,ꓥ:()=>`Ʌ`,ꓦ:()=>`V`,ꓧ:()=>`H`,ꓪ:()=>`W`,ꓫ:()=>`X`,ꓬ:()=>`Y`,ꓭ:()=>`ᙠ`,ꓮ:()=>`A`,ꓯ:()=>`Ɐ`,ꓰ:()=>`E`,ꓱ:()=>`Ǝ`,ꓲ:()=>`l`,ꓳ:()=>`O`,ꓴ:()=>`U`,ꓵ:()=>`Ո`,ꓷ:()=>`ᗡ`,ꓸ:()=>`.`,ꓹ:()=>`,`,ꓺ:()=>`..`,ꓻ:()=>`.,`,ꓽ:()=>`:`,Ꙅ:()=>`2`,ꙅ:()=>`ƨ`,ꙇ:()=>`i`,ꙍ:()=>`ω`,Ꙑ:()=>`Ъl`,ꙑ:()=>Ht,Ꙩ:()=>`ʘ`,ꚕ:()=>`h̔`,Ꚙ:()=>`OO`,ꚙ:()=>`oo`,Ꚛ:()=>kC,ꚡ:()=>`И`,ꚰ:()=>`ᚹ`,ꚱ:()=>`Ⱶ`,ꛍ:()=>`ʡ`,ꛎ:()=>`Ʌ`,ꛛ:()=>`Π`,ꛟ:()=>`V`,ꛫ:()=>`?`,ꛯ:()=>`2`,Ꜩ:()=>`T3`,ꜩ:()=>`tȝ`,ꜱ:()=>`s`,Ꜳ:()=>`AA`,ꜳ:()=>`aa`,Ꜵ:()=>`AO`,ꜵ:()=>`ao`,Ꜷ:()=>`AU`,ꜷ:()=>`au`,Ꜹ:()=>`AV`,ꜹ:()=>`av`,Ꜻ:()=>`AV`,ꜻ:()=>`av`,Ꜽ:()=>`AY`,ꜽ:()=>`ay`,Ꝁ:()=>`K̵`,Ꝋ:()=>`O̵`,ꝋ:()=>`o̵`,Ꝏ:()=>`OO`,ꝏ:()=>`oo`,Ꝛ:()=>`2`,ꝡ:()=>`w̦`,Ꝫ:()=>`3`,ꝫ:()=>`ȝ`,Ꝯ:()=>`9`,ꝷ:()=>`tf`,ꝸ:()=>`&`,ꝺ:()=>`Ꝺ`,ꞌ:()=>`'`,ꞏ:()=>`·`,ꞕ:()=>`ꜧ`,Ꞙ:()=>`F`,ꞙ:()=>`f`,Ꞛ:()=>jC,ꞛ:()=>AC,ꞝ:()=>`ʚ`,Ꞟ:()=>`ꓤ`,ꞟ:()=>`u`,Ɜ:()=>`3`,Ʇ:()=>`ꓕ`,Ʝ:()=>`J`,Ꭓ:()=>`X`,Ꞵ:()=>`B`,ꞵ:()=>`ß`,Ꞷ:()=>`Ꙍ`,ꞷ:()=>`ω`,ꟷ:()=>`ー`,ꥠ:()=>R_,ꥡ:()=>z_,ꥢ:()=>V_,ꥣ:()=>W_,ꥤ:()=>J_,ꥥ:()=>Z_,ꥦ:()=>iv,ꥧ:()=>sv,ꥨ:()=>fv,ꥩ:()=>vv,ꥪ:()=>Sv,ꥫ:()=>Tv,ꥬ:()=>kv,ꥭ:()=>Fv,ꥮ:()=>Iv,ꥯ:()=>$v,ꥰ:()=>ry,ꥱ:()=>uy,ꥲ:()=>qy,ꥳ:()=>nb,ꥴ:()=>sb,ꥵ:()=>jb,ꥶ:()=>Jb,ꥷ:()=>cx,ꥸ:()=>vx,ꥹ:()=>xx,ꥺ:()=>kx,ꥻ:()=>Px,ꥼ:()=>Gx,ꦒ:()=>`ⰿ`,ꦣ:()=>`ꦝ`,ꧏ:()=>`٢`,ꬲ:()=>`e`,ꬵ:()=>`f`,ꬽ:()=>`o`,ꬾ:()=>`o̸`,ꬿ:()=>gn,ꭁ:()=>tn,ꭂ:()=>nn,ꭇ:()=>`r`,ꭈ:()=>`r`,ꭍ:()=>`ʃ`,ꭎ:()=>`u`,ꭒ:()=>`u`,ꭓ:()=>`χ`,ꭕ:()=>`χ`,ꭚ:()=>`y`,ꭠ:()=>`љ`,ꭢ:()=>`ɔe`,ꭣ:()=>`uo`,ꭰ:()=>`ᴅ`,ꭱ:()=>`ʀ`,ꭲ:()=>`ᴛ`,ꭴ:()=>`ơ`,ꭵ:()=>`i`,ꭺ:()=>`ᴀ`,ꭻ:()=>`ᴊ`,ꭼ:()=>`ᴇ`,ꭾ:()=>`ɂ`,ꮀ:()=>`ⱶ`,ꮁ:()=>`r`,ꮃ:()=>`w`,ꮇ:()=>`ʍ`,ꮋ:()=>`ʜ`,ꮎ:()=>`o̵`,ꮐ:()=>`ɢ`,ꮓ:()=>`z`,ꮛ:()=>`ꞓ`,ꮜ:()=>`u̵`,ꮟ:()=>`ƅ`,ꮢ:()=>`ʀ`,ꮩ:()=>`v`,ꮪ:()=>`s`,ꮮ:()=>`ʟ`,ꮯ:()=>`c`,ꮲ:()=>`ᴘ`,ꮶ:()=>`ĸ`,ꮻ:()=>`o̵`,ힰ:()=>bS,ힱ:()=>CS,ힲ:()=>DS,ힳ:()=>OS,ힴ:()=>PS,ힵ:()=>GS,ힶ:()=>XS,ힷ:()=>QS,ힸ:()=>aC,ힹ:()=>Gt,ힺ:()=>Kt,ힻ:()=>qt,ힼ:()=>Jt,ힽ:()=>zC,ힾ:()=>BC,ힿ:()=>VC,ퟀ:()=>HC,ퟁ:()=>WC,ퟂ:()=>GC,ퟃ:()=>qC,ퟄ:()=>YC,ퟅ:()=>lC,ퟆ:()=>dC,ퟋ:()=>h_,ퟌ:()=>C_,ퟍ:()=>P_,ퟎ:()=>F_,ퟏ:()=>B_,ퟐ:()=>H_,ퟑ:()=>U_,ퟒ:()=>G_,ퟓ:()=>K_,ퟔ:()=>q_,ퟕ:()=>Q_,ퟖ:()=>tv,ퟗ:()=>dv,ퟘ:()=>_v,ퟙ:()=>xv,ퟚ:()=>Dv,ퟛ:()=>Yv,ퟜ:()=>Qv,ퟝ:()=>Pv,ퟞ:()=>ty,ퟟ:()=>ny,ퟠ:()=>ay,ퟡ:()=>ly,ퟢ:()=>_y,ퟣ:()=>Dy,ퟤ:()=>ky,ퟥ:()=>Ay,ퟦ:()=>Ny,ퟧ:()=>Uy,ퟨ:()=>$y,ퟩ:()=>tb,ퟪ:()=>bb,ퟫ:()=>Tb,ퟬ:()=>kb,ퟭ:()=>Ab,ퟮ:()=>Ub,ퟯ:()=>Ib,ퟰ:()=>Rb,ퟱ:()=>Vb,ퟲ:()=>Kv,ퟳ:()=>zx,ퟴ:()=>Bx,ퟵ:()=>Vx,ퟶ:()=>Hx,ퟷ:()=>fx,ퟸ:()=>px,ퟹ:()=>_x,ퟺ:()=>wx,ퟻ:()=>Ox,豈:()=>`豈`,更:()=>`更`,車:()=>`車`,賈:()=>`賈`,滑:()=>`滑`,串:()=>`串`,句:()=>`句`,龜:()=>`龜`,龜:()=>`龜`,契:()=>`契`,金:()=>`金`,喇:()=>`喇`,奈:()=>`奈`,懶:()=>`懶`,癩:()=>`癩`,羅:()=>`羅`,蘿:()=>`蘿`,螺:()=>`螺`,裸:()=>`裸`,邏:()=>`邏`,樂:()=>`樂`,洛:()=>`洛`,烙:()=>`烙`,珞:()=>`珞`,落:()=>`落`,酪:()=>`酪`,駱:()=>`駱`,亂:()=>`亂`,卵:()=>`卵`,欄:()=>`欄`,爛:()=>`爛`,蘭:()=>`蘭`,鸞:()=>`鸞`,嵐:()=>`嵐`,濫:()=>`濫`,藍:()=>`藍`,襤:()=>`襤`,拉:()=>`拉`,臘:()=>`臘`,蠟:()=>`蠟`,廊:()=>`廊`,朗:()=>`朗`,浪:()=>`浪`,狼:()=>`狼`,郎:()=>`郎`,來:()=>`來`,冷:()=>`冷`,勞:()=>`勞`,擄:()=>`擄`,櫓:()=>`櫓`,爐:()=>`爐`,盧:()=>`盧`,老:()=>`老`,蘆:()=>`蘆`,虜:()=>`虜`,路:()=>`路`,露:()=>`露`,魯:()=>`魯`,鷺:()=>`鷺`,碌:()=>`碌`,祿:()=>`祿`,綠:()=>`綠`,菉:()=>`菉`,錄:()=>`錄`,鹿:()=>`鹿`,論:()=>`論`,壟:()=>`壟`,弄:()=>`弄`,籠:()=>`籠`,聾:()=>`聾`,牢:()=>`牢`,磊:()=>`磊`,賂:()=>`賂`,雷:()=>`雷`,壘:()=>`壘`,屢:()=>`屢`,樓:()=>`樓`,淚:()=>`淚`,漏:()=>`漏`,累:()=>`累`,縷:()=>`縷`,陋:()=>`陋`,勒:()=>`勒`,肋:()=>`肋`,凜:()=>`凜`,凌:()=>`凌`,稜:()=>`稜`,綾:()=>`綾`,菱:()=>`菱`,陵:()=>`陵`,讀:()=>`讀`,拏:()=>`拏`,樂:()=>`樂`,諾:()=>`諾`,丹:()=>`丹`,寧:()=>`寧`,怒:()=>`怒`,率:()=>`率`,異:()=>`異`,北:()=>`北`,磻:()=>`磻`,便:()=>`便`,復:()=>`復`,不:()=>`不`,泌:()=>`泌`,數:()=>`數`,索:()=>`索`,參:()=>`參`,塞:()=>`塞`,省:()=>`省`,葉:()=>`葉`,說:()=>`說`,殺:()=>`殺`,辰:()=>`辰`,沈:()=>`沈`,拾:()=>`拾`,若:()=>`若`,掠:()=>`掠`,略:()=>`略`,亮:()=>`亮`,兩:()=>`兩`,凉:()=>`凉`,梁:()=>`梁`,糧:()=>`糧`,良:()=>`良`,諒:()=>`諒`,量:()=>`量`,勵:()=>`勵`,呂:()=>`呂`,女:()=>`女`,廬:()=>`廬`,旅:()=>`旅`,濾:()=>`濾`,礪:()=>`礪`,閭:()=>`閭`,驪:()=>`驪`,麗:()=>`麗`,黎:()=>`黎`,力:()=>`力`,曆:()=>`曆`,歷:()=>`歷`,轢:()=>`轢`,年:()=>`年`,憐:()=>`憐`,戀:()=>`戀`,撚:()=>`撚`,漣:()=>`漣`,煉:()=>`煉`,璉:()=>`璉`,秊:()=>`秊`,練:()=>`練`,聯:()=>`聯`,輦:()=>`輦`,蓮:()=>`蓮`,連:()=>`連`,鍊:()=>`鍊`,列:()=>`列`,劣:()=>`劣`,咽:()=>`咽`,烈:()=>`烈`,裂:()=>`裂`,說:()=>`說`,廉:()=>`廉`,念:()=>`念`,捻:()=>`捻`,殮:()=>`殮`,簾:()=>`簾`,獵:()=>`獵`,令:()=>`令`,囹:()=>`囹`,寧:()=>`寧`,嶺:()=>`嶺`,怜:()=>`怜`,玲:()=>`玲`,瑩:()=>`瑩`,羚:()=>`羚`,聆:()=>`聆`,鈴:()=>`鈴`,零:()=>`零`,靈:()=>`靈`,領:()=>`領`,例:()=>`例`,禮:()=>`禮`,醴:()=>`醴`,隸:()=>`隷`,惡:()=>`惡`,了:()=>`了`,僚:()=>`僚`,寮:()=>`寮`,尿:()=>`尿`,料:()=>`料`,樂:()=>`樂`,燎:()=>`燎`,療:()=>`療`,蓼:()=>`蓼`,遼:()=>`遼`,龍:()=>`龍`,暈:()=>`暈`,阮:()=>`阮`,劉:()=>`劉`,杻:()=>`杻`,柳:()=>`柳`,流:()=>`流`,溜:()=>`溜`,琉:()=>`琉`,留:()=>`留`,硫:()=>`硫`,紐:()=>`紐`,類:()=>`類`,六:()=>`六`,戮:()=>`戮`,陸:()=>`陸`,倫:()=>`倫`,崙:()=>`崙`,淪:()=>`淪`,輪:()=>`輪`,律:()=>`律`,慄:()=>`慄`,栗:()=>`栗`,率:()=>`率`,隆:()=>`隆`,利:()=>`利`,吏:()=>`吏`,履:()=>`履`,易:()=>`易`,李:()=>`李`,梨:()=>`梨`,泥:()=>`泥`,理:()=>`理`,痢:()=>`痢`,罹:()=>`罹`,裏:()=>`裏`,裡:()=>`裡`,里:()=>`里`,離:()=>`離`,匿:()=>`匿`,溺:()=>`溺`,吝:()=>`吝`,燐:()=>`燐`,璘:()=>`璘`,藺:()=>`藺`,隣:()=>`隣`,鱗:()=>`鱗`,麟:()=>`麟`,林:()=>`林`,淋:()=>`淋`,臨:()=>`臨`,立:()=>`立`,笠:()=>`笠`,粒:()=>`粒`,狀:()=>`狀`,炙:()=>`炙`,識:()=>`識`,什:()=>`什`,茶:()=>`茶`,刺:()=>`刺`,切:()=>`切`,度:()=>`度`,拓:()=>`拓`,糖:()=>`糖`,宅:()=>`宅`,洞:()=>`洞`,暴:()=>`暴`,輻:()=>`輻`,行:()=>`行`,降:()=>`降`,見:()=>`見`,廓:()=>`廓`,兀:()=>`兀`,嗀:()=>`嗀`,塚:()=>`塚`,晴:()=>`晴`,凞:()=>`凞`,猪:()=>`猪`,益:()=>`益`,礼:()=>`礼`,神:()=>`神`,祥:()=>`祥`,福:()=>`福`,靖:()=>`靖`,精:()=>`精`,羽:()=>`羽`,蘒:()=>`蘒`,諸:()=>`諸`,逸:()=>`逸`,都:()=>`都`,飯:()=>`飯`,飼:()=>`飼`,館:()=>`館`,鶴:()=>`鶴`,郞:()=>`郎`,隷:()=>`隷`,侮:()=>`侮`,僧:()=>`僧`,免:()=>`免`,勉:()=>`勉`,勤:()=>`勤`,卑:()=>`卑`,喝:()=>`喝`,嘆:()=>`嘆`,器:()=>`器`,塀:()=>`塀`,墨:()=>`墨`,層:()=>`層`,屮:()=>`屮`,悔:()=>`悔`,慨:()=>`慨`,憎:()=>`憎`,懲:()=>`懲`,敏:()=>`敏`,既:()=>`既`,暑:()=>`暑`,梅:()=>`梅`,海:()=>`海`,渚:()=>`渚`,漢:()=>`漢`,煮:()=>`煮`,爫:()=>`爫`,琢:()=>`琢`,碑:()=>`碑`,社:()=>`社`,祉:()=>`祉`,祈:()=>`祈`,祐:()=>`祐`,祖:()=>`祖`,祝:()=>`祝`,禍:()=>`禍`,禎:()=>`禎`,穀:()=>`穀`,突:()=>`突`,節:()=>`節`,練:()=>`練`,縉:()=>`縉`,繁:()=>`繁`,署:()=>`署`,者:()=>`者`,臭:()=>`臭`,艹:()=>`艹`,艹:()=>`艹`,著:()=>`著`,褐:()=>`褐`,視:()=>`視`,謁:()=>`謁`,謹:()=>`謹`,賓:()=>`賓`,贈:()=>`贈`,辶:()=>`辶`,逸:()=>`逸`,難:()=>`難`,響:()=>`響`,頻:()=>`頻`,恵:()=>`恵`,𤋮:()=>Bw,舘:()=>`舘`,並:()=>`並`,况:()=>`况`,全:()=>`全`,侀:()=>`侀`,充:()=>`充`,冀:()=>`冀`,勇:()=>`勇`,勺:()=>`勺`,喝:()=>`喝`,啕:()=>`啕`,喙:()=>`喙`,嗢:()=>`嗢`,塚:()=>`塚`,墳:()=>`墳`,奄:()=>`奄`,奔:()=>`奔`,婢:()=>`婢`,嬨:()=>`嬨`,廒:()=>`廒`,廙:()=>`廙`,彩:()=>`彩`,徭:()=>`徭`,惘:()=>`惘`,慎:()=>`慎`,愈:()=>`愈`,憎:()=>`憎`,慠:()=>`慠`,懲:()=>`懲`,戴:()=>`戴`,揄:()=>`揄`,搜:()=>`搜`,摒:()=>`摒`,敖:()=>`敖`,晴:()=>`晴`,朗:()=>`朗`,望:()=>`望`,杖:()=>`杖`,歹:()=>`歹`,殺:()=>`殺`,流:()=>`流`,滛:()=>`滛`,滋:()=>`滋`,漢:()=>`漢`,瀞:()=>`瀞`,煮:()=>`煮`,瞧:()=>`瞧`,爵:()=>`爵`,犯:()=>`犯`,猪:()=>`猪`,瑱:()=>`瑱`,甆:()=>`甆`,画:()=>`画`,瘝:()=>`瘝`,瘟:()=>`瘟`,益:()=>`益`,盛:()=>`盛`,直:()=>`直`,睊:()=>`睊`,着:()=>`着`,磌:()=>`磌`,窱:()=>`窱`,節:()=>`節`,类:()=>`类`,絛:()=>`絛`,練:()=>`練`,缾:()=>`缾`,者:()=>`者`,荒:()=>`荒`,華:()=>`華`,蝹:()=>`蝹`,襁:()=>`襁`,覆:()=>`覆`,視:()=>`視`,調:()=>`調`,諸:()=>`諸`,請:()=>`請`,謁:()=>`謁`,諾:()=>`諾`,諭:()=>`諭`,謹:()=>`謹`,變:()=>`變`,贈:()=>`贈`,輸:()=>`輸`,遲:()=>`遲`,醙:()=>`醙`,鉶:()=>`鉶`,陼:()=>`陼`,難:()=>`難`,靖:()=>`靖`,韛:()=>`韛`,響:()=>`響`,頋:()=>`頋`,頻:()=>`頻`,鬒:()=>`鬒`,龜:()=>`龜`,𢡊:()=>yw,𢡄:()=>vw,𣏕:()=>Ow,㮝:()=>`㮝`,䀘:()=>`䀘`,䀹:()=>`䀹`,𥉉:()=>eT,𥳐:()=>uT,𧻓:()=>PT,齃:()=>`齃`,龎:()=>`龎`,ff:()=>`ff`,fi:()=>`fi`,fl:()=>`fl`,ffi:()=>`ffi`,ffl:()=>`ffl`,st:()=>`st`,ﬓ:()=>Kn,ﬔ:()=>Un,ﬕ:()=>Wn,ﬖ:()=>Jn,ﬗ:()=>Gn,ﬠ:()=>`ע`,ﬡ:()=>`א`,ﬢ:()=>`ד`,ﬣ:()=>`ה`,ﬤ:()=>`כ`,ﬥ:()=>`ל`,ﬦ:()=>`ם`,ﬧ:()=>`ר`,ﬨ:()=>`ת`,שׂ:()=>`שׁ`,שּׂ:()=>`שּׁ`,אָ:()=>`אַ`,אּ:()=>`אַ`,יּ:()=>`יִ`,שּ:()=>`שׁ`,ﭏ:()=>Yn,ﭐ:()=>`ٱ`,ﭑ:()=>`ٱ`,ﭒ:()=>`ٻ`,ﭓ:()=>`ٻ`,ﭔ:()=>`ٻ`,ﭕ:()=>`ٻ`,ﭖ:()=>wd,ﭗ:()=>Cd,ﭘ:()=>xd,ﭙ:()=>Sd,ﭚ:()=>`ڀ`,ﭛ:()=>`ڀ`,ﭜ:()=>`ڀ`,ﭝ:()=>`ڀ`,ﭞ:()=>`ٺ`,ﭟ:()=>`ٺ`,ﭠ:()=>`ٺ`,ﭡ:()=>`ٺ`,ﭢ:()=>`ٿ`,ﭣ:()=>`ٿ`,ﭤ:()=>`ٿ`,ﭥ:()=>`ٿ`,ﭦ:()=>md,ﭧ:()=>pd,ﭨ:()=>dd,ﭩ:()=>fd,ﭪ:()=>vc,ﭫ:()=>_c,ﭬ:()=>hc,ﭭ:()=>gc,ﭮ:()=>`ڦ`,ﭯ:()=>`ڦ`,ﭰ:()=>`ڦ`,ﭱ:()=>`ڦ`,ﭲ:()=>`ڄ`,ﭳ:()=>`ڄ`,ﭴ:()=>`ڄ`,ﭵ:()=>`ڄ`,ﭶ:()=>`ڃ`,ﭷ:()=>`ڃ`,ﭸ:()=>`ڃ`,ﭹ:()=>`ڃ`,ﭺ:()=>`چ`,ﭻ:()=>`چ`,ﭼ:()=>`چ`,ﭽ:()=>`چ`,ﭾ:()=>`ڇ`,ﭿ:()=>`ڇ`,ﮀ:()=>`ڇ`,ﮁ:()=>`ڇ`,ﮂ:()=>`ڍ`,ﮃ:()=>`ڍ`,ﮄ:()=>`ڌ`,ﮅ:()=>`ڌ`,ﮆ:()=>Bi,ﮇ:()=>zi,ﮈ:()=>Li,ﮉ:()=>Ii,ﮊ:()=>Xi,ﮋ:()=>Yi,ﮌ:()=>qi,ﮍ:()=>Ki,ﮎ:()=>`ك`,ﮏ:()=>`ك`,ﮐ:()=>`ك`,ﮑ:()=>`ك`,ﮒ:()=>`گ`,ﮓ:()=>`گ`,ﮔ:()=>`گ`,ﮕ:()=>`گ`,ﮖ:()=>`ڳ`,ﮗ:()=>`ڳ`,ﮘ:()=>`ڳ`,ﮙ:()=>`ڳ`,ﮚ:()=>`ڱ`,ﮛ:()=>`ڱ`,ﮜ:()=>`ڱ`,ﮝ:()=>`ڱ`,ﮞ:()=>`ى`,ﮟ:()=>`ى`,ﮠ:()=>yd,ﮡ:()=>vd,ﮢ:()=>gd,ﮣ:()=>_d,ﮤ:()=>`ۀ`,ﮥ:()=>`ۀ`,ﮦ:()=>`o`,ﮧ:()=>`o`,ﮨ:()=>`o`,ﮩ:()=>`o`,ﮪ:()=>`o`,ﮫ:()=>`o`,ﮬ:()=>`o`,ﮭ:()=>`o`,ﮮ:()=>`ى`,ﮯ:()=>`ى`,ﮰ:()=>`ۓ`,ﮱ:()=>`ۓ`,ﯓ:()=>Rc,ﯔ:()=>Lc,ﯕ:()=>Fc,ﯖ:()=>Ic,ﯗ:()=>qu,ﯘ:()=>Ku,ﯙ:()=>Xu,ﯚ:()=>Yu,ﯛ:()=>nd,ﯜ:()=>td,ﯝ:()=>cd,ﯞ:()=>Wu,ﯟ:()=>Uu,ﯠ:()=>`ۅ`,ﯡ:()=>`ۅ`,ﯢ:()=>$u,ﯣ:()=>Qu,ﯤ:()=>`ٻ`,ﯥ:()=>`ٻ`,ﯦ:()=>`ٻ`,ﯧ:()=>`ٻ`,ﯨ:()=>`ى`,ﯩ:()=>`ى`,ﯪ:()=>ef,ﯫ:()=>$d,ﯬ:()=>af,ﯭ:()=>rf,ﯮ:()=>Sf,ﯯ:()=>xf,ﯰ:()=>wf,ﯱ:()=>Cf,ﯲ:()=>Ef,ﯳ:()=>Tf,ﯴ:()=>Of,ﯵ:()=>Df,ﯶ:()=>cf,ﯷ:()=>sf,ﯸ:()=>of,ﯹ:()=>Mf,ﯺ:()=>Af,ﯻ:()=>kf,ﯼ:()=>`ى`,ﯽ:()=>`ى`,ﯾ:()=>`ى`,ﯿ:()=>`ى`,ﰀ:()=>uf,ﰁ:()=>ff,ﰂ:()=>yf,ﰃ:()=>Nf,ﰄ:()=>Ff,ﰅ:()=>er,ﰆ:()=>nr,ﰇ:()=>ar,ﰈ:()=>mr,ﰉ:()=>_r,ﰊ:()=>yr,ﰋ:()=>xr,ﰌ:()=>Er,ﰍ:()=>jr,ﰎ:()=>Br,ﰏ:()=>Jr,ﰐ:()=>Xr,ﰑ:()=>Rf,ﰒ:()=>np,ﰓ:()=>pp,ﰔ:()=>hp,ﰕ:()=>Qr,ﰖ:()=>ri,ﰗ:()=>gi,ﰘ:()=>yi,ﰙ:()=>Di,ﰚ:()=>Oi,ﰛ:()=>Ai,ﰜ:()=>xa,ﰝ:()=>ja,ﰞ:()=>Ha,ﰟ:()=>to,ﰠ:()=>Do,ﰡ:()=>zo,ﰢ:()=>qo,ﰣ:()=>Yo,ﰤ:()=>$o,ﰥ:()=>as,ﰦ:()=>fs,ﰧ:()=>hs,ﰨ:()=>Es,ﰩ:()=>Os,ﰪ:()=>Ns,ﰫ:()=>Us,ﰬ:()=>Gs,ﰭ:()=>ec,ﰮ:()=>nc,ﰯ:()=>ic,ﰰ:()=>cc,ﰱ:()=>dc,ﰲ:()=>pc,ﰳ:()=>Sc,ﰴ:()=>Tc,ﰵ:()=>jc,ﰶ:()=>Nc,ﰷ:()=>`كl`,ﰸ:()=>Vc,ﰹ:()=>Uc,ﰺ:()=>Gc,ﰻ:()=>Yc,ﰼ:()=>$c,ﰽ:()=>il,ﰾ:()=>ol,ﰿ:()=>_l,ﱀ:()=>wl,ﱁ:()=>Al,ﱂ:()=>Il,ﱃ:()=>Vl,ﱄ:()=>Ul,ﱅ:()=>Kl,ﱆ:()=>Ql,ﱇ:()=>iu,ﱈ:()=>uu,ﱉ:()=>fu,ﱊ:()=>pu,ﱋ:()=>sr,ﱌ:()=>Cu,ﱍ:()=>Ou,ﱎ:()=>Pu,ﱏ:()=>zu,ﱐ:()=>Vu,ﱑ:()=>`oج`,ﱒ:()=>`oم`,ﱓ:()=>`oى`,ﱔ:()=>`oى`,ﱕ:()=>Lf,ﱖ:()=>Vf,ﱗ:()=>Wf,ﱘ:()=>Qf,ﱙ:()=>lp,ﱚ:()=>dp,ﱛ:()=>Ui,ﱜ:()=>ta,ﱝ:()=>Gd,ﱞ:()=>ae,ﱟ:()=>oe,ﱠ:()=>ce,ﱡ:()=>ue,ﱢ:()=>fe,ﱣ:()=>pe,ﱤ:()=>mf,ﱥ:()=>hf,ﱦ:()=>vf,ﱧ:()=>bf,ﱨ:()=>jf,ﱩ:()=>Pf,ﱪ:()=>lr,ﱫ:()=>ur,ﱬ:()=>pr,ﱭ:()=>hr,ﱮ:()=>gr,ﱯ:()=>vr,ﱰ:()=>Fr,ﱱ:()=>Ir,ﱲ:()=>zr,ﱳ:()=>Kr,ﱴ:()=>qr,ﱵ:()=>Yr,ﱶ:()=>Kf,ﱷ:()=>Jf,ﱸ:()=>tp,ﱹ:()=>sp,ﱺ:()=>fp,ﱻ:()=>mp,ﱼ:()=>uc,ﱽ:()=>fc,ﱾ:()=>Ac,ﱿ:()=>Mc,ﲀ:()=>`كl`,ﲁ:()=>Jc,ﲂ:()=>Qc,ﲃ:()=>rl,ﲄ:()=>al,ﲅ:()=>Fl,ﲆ:()=>Bl,ﲇ:()=>Hl,ﲈ:()=>`مl`,ﲉ:()=>lu,ﲊ:()=>ku,ﲋ:()=>Au,ﲌ:()=>Nu,ﲍ:()=>Lu,ﲎ:()=>Ru,ﲏ:()=>Bu,ﲐ:()=>Wd,ﲑ:()=>Gf,ﲒ:()=>qf,ﲓ:()=>Zf,ﲔ:()=>op,ﲕ:()=>cp,ﲖ:()=>up,ﲗ:()=>lf,ﲘ:()=>df,ﲙ:()=>pf,ﲚ:()=>gf,ﲛ:()=>tf,ﲜ:()=>$n,ﲝ:()=>tr,ﲞ:()=>ir,ﲟ:()=>dr,ﲠ:()=>`بo`,ﲡ:()=>br,ﲢ:()=>Tr,ﲣ:()=>Ar,ﲤ:()=>Lr,ﲥ:()=>`تo`,ﲦ:()=>$f,ﲧ:()=>Zr,ﲨ:()=>ni,ﲩ:()=>hi,ﲪ:()=>vi,ﲫ:()=>Ei,ﲬ:()=>ki,ﲭ:()=>ya,ﲮ:()=>ka,ﲯ:()=>Ba,ﲰ:()=>$a,ﲱ:()=>Eo,ﲲ:()=>jo,ﲳ:()=>Ro,ﲴ:()=>Ko,ﲵ:()=>Jo,ﲶ:()=>Qo,ﲷ:()=>is,ﲸ:()=>ds,ﲹ:()=>ws,ﲺ:()=>Ds,ﲻ:()=>Ms,ﲼ:()=>Hs,ﲽ:()=>Ws,ﲾ:()=>$s,ﲿ:()=>tc,ﳀ:()=>rc,ﳁ:()=>sc,ﳂ:()=>xc,ﳃ:()=>wc,ﳄ:()=>Bc,ﳅ:()=>Hc,ﳆ:()=>Wc,ﳇ:()=>Kc,ﳈ:()=>Xc,ﳉ:()=>gl,ﳊ:()=>Cl,ﳋ:()=>kl,ﳌ:()=>Nl,ﳍ:()=>`لo`,ﳎ:()=>Gl,ﳏ:()=>Zl,ﳐ:()=>ru,ﳑ:()=>cu,ﳒ:()=>or,ﳓ:()=>Su,ﳔ:()=>Du,ﳕ:()=>ju,ﳖ:()=>`نo`,ﳗ:()=>`oج`,ﳘ:()=>`oم`,ﳙ:()=>`oٰ`,ﳚ:()=>If,ﳛ:()=>Bf,ﳜ:()=>Uf,ﳝ:()=>Yf,ﳞ:()=>`ىo`,ﳟ:()=>_f,ﳠ:()=>nf,ﳡ:()=>fr,ﳢ:()=>`بo`,ﳣ:()=>Rr,ﳤ:()=>`تo`,ﳥ:()=>ep,ﳦ:()=>Kd,ﳧ:()=>eo,ﳨ:()=>`سo`,ﳩ:()=>ro,ﳪ:()=>va,ﳫ:()=>qc,ﳬ:()=>Zc,ﳭ:()=>Pl,ﳮ:()=>Mu,ﳯ:()=>`نo`,ﳰ:()=>Xf,ﳱ:()=>`ىo`,ﳲ:()=>se,ﳳ:()=>le,ﳴ:()=>de,ﳵ:()=>xs,ﳶ:()=>Cs,ﳷ:()=>zs,ﳸ:()=>Vs,ﳹ:()=>Xs,ﳺ:()=>Qs,ﳻ:()=>_o,ﳼ:()=>yo,ﳽ:()=>xo,ﳾ:()=>Co,ﳿ:()=>Ci,ﴀ:()=>Ti,ﴁ:()=>li,ﴂ:()=>di,ﴃ:()=>Mi,ﴄ:()=>Pi,ﴅ:()=>Uo,ﴆ:()=>Go,ﴇ:()=>ss,ﴈ:()=>ls,ﴉ:()=>Ta,ﴊ:()=>Fa,ﴋ:()=>Ka,ﴌ:()=>ao,ﴍ:()=>Qa,ﴎ:()=>Xa,ﴏ:()=>No,ﴐ:()=>rs,ﴑ:()=>bs,ﴒ:()=>Ss,ﴓ:()=>Rs,ﴔ:()=>Bs,ﴕ:()=>Ys,ﴖ:()=>Zs,ﴗ:()=>go,ﴘ:()=>vo,ﴙ:()=>bo,ﴚ:()=>So,ﴛ:()=>Si,ﴜ:()=>wi,ﴝ:()=>ci,ﴞ:()=>ui,ﴟ:()=>ji,ﴠ:()=>Ni,ﴡ:()=>Ho,ﴢ:()=>Wo,ﴣ:()=>os,ﴤ:()=>cs,ﴥ:()=>wa,ﴦ:()=>Pa,ﴧ:()=>Ga,ﴨ:()=>io,ﴩ:()=>Za,ﴪ:()=>Ya,ﴫ:()=>Mo,ﴬ:()=>ns,ﴭ:()=>Sa,ﴮ:()=>Ma,ﴯ:()=>Ua,ﴰ:()=>no,ﴱ:()=>`سo`,ﴲ:()=>_a,ﴳ:()=>ps,ﴴ:()=>ba,ﴵ:()=>Aa,ﴶ:()=>Va,ﴷ:()=>Ca,ﴸ:()=>Na,ﴹ:()=>Wa,ﴺ:()=>ms,ﴻ:()=>Ts,ﴼ:()=>`l̋`,ﴽ:()=>`l̋`,ﵐ:()=>Sr,ﵑ:()=>Or,ﵒ:()=>Dr,ﵓ:()=>kr,ﵔ:()=>Mr,ﵕ:()=>Vr,ﵖ:()=>Hr,ﵗ:()=>Ur,ﵘ:()=>ai,ﵙ:()=>ii,ﵚ:()=>xi,ﵛ:()=>bi,ﵜ:()=>Ia,ﵝ:()=>Ea,ﵞ:()=>Da,ﵟ:()=>co,ﵠ:()=>so,ﵡ:()=>oo,ﵢ:()=>po,ﵣ:()=>fo,ﵤ:()=>ko,ﵥ:()=>Oo,ﵦ:()=>Vo,ﵧ:()=>Ra,ﵨ:()=>La,ﵩ:()=>Oa,ﵪ:()=>uo,ﵫ:()=>lo,ﵬ:()=>ho,ﵭ:()=>mo,ﵮ:()=>Xo,ﵯ:()=>ts,ﵰ:()=>es,ﵱ:()=>_s,ﵲ:()=>gs,ﵳ:()=>vs,ﵴ:()=>ys,ﵵ:()=>As,ﵶ:()=>Fs,ﵷ:()=>Ps,ﵸ:()=>Is,ﵹ:()=>Ks,ﵺ:()=>Js,ﵻ:()=>qs,ﵼ:()=>oc,ﵽ:()=>ac,ﵾ:()=>Dc,ﵿ:()=>Oc,ﶀ:()=>El,ﶁ:()=>Ol,ﶂ:()=>Dl,ﶃ:()=>vl,ﶄ:()=>yl,ﶅ:()=>Ml,ﶆ:()=>jl,ﶇ:()=>Rl,ﶈ:()=>Ll,ﶉ:()=>$l,ﶊ:()=>eu,ﶋ:()=>nu,ﶌ:()=>ql,ﶍ:()=>Yl,ﶎ:()=>au,ﶏ:()=>ou,ﶒ:()=>Jl,ﶓ:()=>fn,ﶔ:()=>pn,ﶕ:()=>wu,ﶖ:()=>Tu,ﶗ:()=>yu,ﶘ:()=>vu,ﶙ:()=>bu,ﶚ:()=>Iu,ﶛ:()=>Fu,ﶜ:()=>ip,ﶝ:()=>rp,ﶞ:()=>cr,ﶟ:()=>wr,ﶠ:()=>Cr,ﶡ:()=>Pr,ﶢ:()=>Nr,ﶣ:()=>Gr,ﶤ:()=>Wr,ﶥ:()=>si,ﶦ:()=>$r,ﶧ:()=>oi,ﶨ:()=>qa,ﶩ:()=>Ao,ﶪ:()=>za,ﶫ:()=>Zo,ﶬ:()=>Sl,ﶭ:()=>zl,ﶮ:()=>Hf,ﶯ:()=>zf,ﶰ:()=>ap,ﶱ:()=>du,ﶲ:()=>kc,ﶳ:()=>Eu,ﶴ:()=>Ec,ﶵ:()=>Tl,ﶶ:()=>Ls,ﶷ:()=>nl,ﶸ:()=>gu,ﶹ:()=>su,ﶺ:()=>bl,ﶻ:()=>tl,ﶼ:()=>xl,ﶽ:()=>_u,ﶾ:()=>ei,ﶿ:()=>_i,ﷀ:()=>Xl,ﷁ:()=>lc,ﷂ:()=>rr,ﷃ:()=>el,ﷄ:()=>ks,ﷅ:()=>Bo,ﷆ:()=>Ja,ﷇ:()=>xu,ﷰ:()=>Io,ﷱ:()=>Cc,ﷲ:()=>ln,ﷳ:()=>cn,ﷴ:()=>tu,ﷵ:()=>Po,ﷶ:()=>na,ﷷ:()=>js,ﷸ:()=>ld,ﷹ:()=>Fo,ﷺ:()=>Lo,ﷻ:()=>ti,ﺀ:()=>`ء`,ﺁ:()=>`آ`,ﺂ:()=>`آ`,ﺃ:()=>`lٴ`,ﺄ:()=>`lٴ`,ﺅ:()=>ad,ﺆ:()=>id,ﺇ:()=>`lٕ`,ﺈ:()=>`lٕ`,ﺉ:()=>Zd,ﺊ:()=>Xd,ﺋ:()=>Jd,ﺌ:()=>Yd,ﺍ:()=>`l`,ﺎ:()=>`l`,ﺏ:()=>`ب`,ﺐ:()=>`ب`,ﺑ:()=>`ب`,ﺒ:()=>`ب`,ﺓ:()=>`ة`,ﺔ:()=>`ة`,ﺕ:()=>`ت`,ﺖ:()=>`ت`,ﺗ:()=>`ت`,ﺘ:()=>`ت`,ﺙ:()=>Pd,ﺚ:()=>Nd,ﺛ:()=>jd,ﺜ:()=>Md,ﺝ:()=>`ج`,ﺞ:()=>`ج`,ﺟ:()=>`ج`,ﺠ:()=>`ج`,ﺡ:()=>`ح`,ﺢ:()=>`ح`,ﺣ:()=>`ح`,ﺤ:()=>`ح`,ﺥ:()=>`خ`,ﺦ:()=>`خ`,ﺧ:()=>`خ`,ﺨ:()=>`خ`,ﺩ:()=>`د`,ﺪ:()=>`د`,ﺫ:()=>`ذ`,ﺬ:()=>`ذ`,ﺭ:()=>`ر`,ﺮ:()=>`ر`,ﺯ:()=>`ز`,ﺰ:()=>`ز`,ﺱ:()=>`س`,ﺲ:()=>`س`,ﺳ:()=>`س`,ﺴ:()=>`س`,ﺵ:()=>ha,ﺶ:()=>ma,ﺷ:()=>fa,ﺸ:()=>pa,ﺹ:()=>`ص`,ﺺ:()=>`ص`,ﺻ:()=>`ص`,ﺼ:()=>`ص`,ﺽ:()=>`ض`,ﺾ:()=>`ض`,ﺿ:()=>`ض`,ﻀ:()=>`ض`,ﻁ:()=>`ط`,ﻂ:()=>`ط`,ﻃ:()=>`ط`,ﻄ:()=>`ط`,ﻅ:()=>`ظ`,ﻆ:()=>`ظ`,ﻇ:()=>`ظ`,ﻈ:()=>`ظ`,ﻉ:()=>`ع`,ﻊ:()=>`ع`,ﻋ:()=>`ع`,ﻌ:()=>`ع`,ﻍ:()=>`غ`,ﻎ:()=>`غ`,ﻏ:()=>`غ`,ﻐ:()=>`غ`,ﻑ:()=>`ف`,ﻒ:()=>`ف`,ﻓ:()=>`ف`,ﻔ:()=>`ف`,ﻕ:()=>`ق`,ﻖ:()=>`ق`,ﻗ:()=>`ق`,ﻘ:()=>`ق`,ﻙ:()=>`ك`,ﻚ:()=>`ك`,ﻛ:()=>`ك`,ﻜ:()=>`ك`,ﻝ:()=>`ل`,ﻞ:()=>`ل`,ﻟ:()=>`ل`,ﻠ:()=>`ل`,ﻡ:()=>`م`,ﻢ:()=>`م`,ﻣ:()=>`م`,ﻤ:()=>`م`,ﻥ:()=>`ن`,ﻦ:()=>`ن`,ﻧ:()=>`ن`,ﻨ:()=>`ن`,ﻩ:()=>`o`,ﻪ:()=>`o`,ﻫ:()=>`o`,ﻬ:()=>`o`,ﻭ:()=>`و`,ﻮ:()=>`و`,ﻯ:()=>`ى`,ﻰ:()=>`ى`,ﻱ:()=>`ى`,ﻲ:()=>`ى`,ﻳ:()=>`ى`,ﻴ:()=>`ى`,ﻵ:()=>hl,ﻶ:()=>ml,ﻷ:()=>pl,ﻸ:()=>fl,ﻹ:()=>dl,ﻺ:()=>ul,ﻻ:()=>`لl`,ﻼ:()=>`لl`,A:()=>`A`,B:()=>`B`,C:()=>`C`,E:()=>`E`,H:()=>`H`,I:()=>`l`,J:()=>`J`,K:()=>`K`,M:()=>`M`,N:()=>`N`,O:()=>`O`,P:()=>`P`,S:()=>`S`,T:()=>`T`,X:()=>`X`,Y:()=>`Y`,Z:()=>`Z`,a:()=>`a`,c:()=>`c`,e:()=>`e`,g:()=>`g`,h:()=>`h`,i:()=>`i`,j:()=>`j`,l:()=>`l`,o:()=>`o`,p:()=>`p`,s:()=>`s`,v:()=>`v`,x:()=>`x`,y:()=>`y`,𐊂:()=>`B`,𐊅:()=>`Δ`,𐊆:()=>`E`,𐊇:()=>`F`,𐊊:()=>`l`,𐊍:()=>`Ʌ`,𐊐:()=>`X`,𐊒:()=>`O`,𐊔:()=>`ᛜ`,𐊕:()=>`P`,𐊖:()=>`S`,𐊗:()=>`T`,𐊛:()=>`+`,𐊠:()=>`A`,𐊡:()=>`B`,𐊢:()=>`C`,𐊣:()=>`Δ`,𐊥:()=>`F`,𐊫:()=>`O`,𐊭:()=>`Ϙ`,𐊰:()=>`M`,𐊱:()=>`T`,𐊲:()=>`Y`,𐊳:()=>`Φ`,𐊴:()=>`X`,𐊵:()=>`Ψ`,𐊶:()=>`Ω`,𐊸:()=>`ⵀ`,𐋏:()=>`H`,𐌁:()=>`B`,𐌂:()=>`C`,𐌉:()=>`l`,𐌑:()=>`M`,𐌒:()=>`Ϙ`,𐌕:()=>`T`,𐌗:()=>`X`,𐌚:()=>`8`,𐌟:()=>`*`,𐏑:()=>MC,𐏓:()=>NC,𐐁:()=>`Ɛ`,𐐄:()=>`O`,𐐑:()=>`ꓶ`,𐐕:()=>`C`,𐐛:()=>`L`,𐐟:()=>`Ɒ`,𐐠:()=>`S`,𐐣:()=>`Ɔ`,𐐥:()=>`И`,𐐩:()=>`ꞓ`,𐐪:()=>`ʚ`,𐐬:()=>`o`,𐐽:()=>`c`,𐐿:()=>`ɷ`,𐑂:()=>`ɞ`,𐑃:()=>`ʟ`,𐑈:()=>`s`,𐑋:()=>`ɔ`,𐑍:()=>`ᴎ`,𐒰:()=>`Ʌ`,𐒴:()=>`R`,𐒼:()=>`Ӄ`,𐓂:()=>`O`,𐓃:()=>`ʘ`,𐓄:()=>`Þ`,𐓍:()=>`Ћ`,𐓎:()=>`U`,𐓐:()=>`ᛦ`,𐓑:()=>`Ψ`,𐓒:()=>`7`,𐓘:()=>`ʌ`,𐓛:()=>`λ`,𐓪:()=>`o`,𐓫:()=>`ꙩ`,𐓶:()=>`u`,𐓹:()=>`ψ`,𐔓:()=>`N`,𐔖:()=>`O`,𐔘:()=>`K`,𐔜:()=>`C`,𐔝:()=>`V`,𐔥:()=>`F`,𐔦:()=>`L`,𐔧:()=>`X`,𑇜:()=>`ꣻ`,𑐓:()=>gm,𑐙:()=>_m,𑐤:()=>vm,𑐪:()=>ym,𑐭:()=>bm,𑐯:()=>xm,𑒒:()=>`ঘ`,𑒔:()=>`চ`,𑒖:()=>`জ`,𑒘:()=>`ঞ`,𑒙:()=>`ট`,𑒛:()=>`ড`,𑒝:()=>`ল`,𑒞:()=>`ত`,𑒟:()=>`থ`,𑒠:()=>`দ`,𑒡:()=>`ধ`,𑒢:()=>`ন`,𑒣:()=>`প`,𑒧:()=>`ম`,𑒨:()=>`য`,𑒩:()=>`ব`,𑒪:()=>`ণ`,𑒫:()=>`র`,𑒭:()=>`ষ`,𑒮:()=>`স`,𑓄:()=>`ঽ`,𑓅:()=>`ẇ`,𑗘:()=>Sm,𑗙:()=>Cm,𑗚:()=>wm,𑗛:()=>Tm,𑜀:()=>`rn`,𑜆:()=>`v`,𑜊:()=>`w`,𑜎:()=>`w`,𑜏:()=>`w`,𑢠:()=>`V`,𑢢:()=>`F`,𑢣:()=>`L`,𑢤:()=>`Y`,𑢦:()=>`E`,𑢨:()=>`∇`,𑢩:()=>`Z`,𑢬:()=>`9`,𑢮:()=>`E`,𑢯:()=>`4`,𑢲:()=>`L`,𑢵:()=>`O`,𑢷:()=>`ᛜ`,𑢸:()=>`U`,𑢻:()=>`5`,𑢼:()=>`T`,𑣀:()=>`v`,𑣁:()=>`s`,𑣂:()=>`F`,𑣃:()=>`i`,𑣄:()=>`z`,𑣆:()=>`7`,𑣈:()=>`o`,𑣊:()=>`3`,𑣌:()=>`9`,𑣎:()=>`ꞓ`,𑣕:()=>`6`,𑣖:()=>`9`,𑣗:()=>`o`,𑣘:()=>`u`,𑣜:()=>`y`,𑫦:()=>gC,𑫧:()=>bC,𑫨:()=>_C,𑫩:()=>vC,𑫪:()=>yC,𑫬:()=>EC,𑫭:()=>DC,𑫮:()=>OC,𑫴:()=>xC,𑫵:()=>TC,𑫶:()=>SC,𑫷:()=>CC,𑫸:()=>wC,𒀸:()=>PC,𓋹:()=>FC,𖼇:()=>`Γ`,𖼈:()=>`V`,𖼊:()=>`T`,𖼖:()=>`L`,𖼚:()=>`Δ`,𖼜:()=>`Ꙙ`,𖼦:()=>`ꓶ`,𖼨:()=>`l`,𖼭:()=>`Ɛ`,𖼵:()=>`R`,𖼺:()=>`S`,𖼻:()=>`3`,𖼽:()=>`Ʌ`,𖼿:()=>`>`,𖽀:()=>`A`,𖽂:()=>`U`,𖽃:()=>`Y`,𝐀:()=>`A`,𝐁:()=>`B`,𝐂:()=>`C`,𝐃:()=>`D`,𝐄:()=>`E`,𝐅:()=>`F`,𝐆:()=>`G`,𝐇:()=>`H`,𝐈:()=>`l`,𝐉:()=>`J`,𝐊:()=>`K`,𝐋:()=>`L`,𝐌:()=>`M`,𝐍:()=>`N`,𝐎:()=>`O`,𝐏:()=>`P`,𝐐:()=>`Q`,𝐑:()=>`R`,𝐒:()=>`S`,𝐓:()=>`T`,𝐔:()=>`U`,𝐕:()=>`V`,𝐖:()=>`W`,𝐗:()=>`X`,𝐘:()=>`Y`,𝐙:()=>`Z`,𝐚:()=>`a`,𝐛:()=>`b`,𝐜:()=>`c`,𝐝:()=>`d`,𝐞:()=>`e`,𝐟:()=>`f`,𝐠:()=>`g`,𝐡:()=>`h`,𝐢:()=>`i`,𝐣:()=>`j`,𝐤:()=>`k`,𝐥:()=>`l`,𝐦:()=>`rn`,𝐧:()=>`n`,𝐨:()=>`o`,𝐩:()=>`p`,𝐪:()=>`q`,𝐫:()=>`r`,𝐬:()=>`s`,𝐭:()=>`t`,𝐮:()=>`u`,𝐯:()=>`v`,𝐰:()=>`w`,𝐱:()=>`x`,𝐲:()=>`y`,𝐳:()=>`z`,𝐴:()=>`A`,𝐵:()=>`B`,𝐶:()=>`C`,𝐷:()=>`D`,𝐸:()=>`E`,𝐹:()=>`F`,𝐺:()=>`G`,𝐻:()=>`H`,𝐼:()=>`l`,𝐽:()=>`J`,𝐾:()=>`K`,𝐿:()=>`L`,𝑀:()=>`M`,𝑁:()=>`N`,𝑂:()=>`O`,𝑃:()=>`P`,𝑄:()=>`Q`,𝑅:()=>`R`,𝑆:()=>`S`,𝑇:()=>`T`,𝑈:()=>`U`,𝑉:()=>`V`,𝑊:()=>`W`,𝑋:()=>`X`,𝑌:()=>`Y`,𝑍:()=>`Z`,𝑎:()=>`a`,𝑏:()=>`b`,𝑐:()=>`c`,𝑑:()=>`d`,𝑒:()=>`e`,𝑓:()=>`f`,𝑔:()=>`g`,𝑖:()=>`i`,𝑗:()=>`j`,𝑘:()=>`k`,𝑙:()=>`l`,𝑚:()=>`rn`,𝑛:()=>`n`,𝑜:()=>`o`,𝑝:()=>`p`,𝑞:()=>`q`,𝑟:()=>`r`,𝑠:()=>`s`,𝑡:()=>`t`,𝑢:()=>`u`,𝑣:()=>`v`,𝑤:()=>`w`,𝑥:()=>`x`,𝑦:()=>`y`,𝑧:()=>`z`,𝑨:()=>`A`,𝑩:()=>`B`,𝑪:()=>`C`,𝑫:()=>`D`,𝑬:()=>`E`,𝑭:()=>`F`,𝑮:()=>`G`,𝑯:()=>`H`,𝑰:()=>`l`,𝑱:()=>`J`,𝑲:()=>`K`,𝑳:()=>`L`,𝑴:()=>`M`,𝑵:()=>`N`,𝑶:()=>`O`,𝑷:()=>`P`,𝑸:()=>`Q`,𝑹:()=>`R`,𝑺:()=>`S`,𝑻:()=>`T`,𝑼:()=>`U`,𝑽:()=>`V`,𝑾:()=>`W`,𝑿:()=>`X`,𝒀:()=>`Y`,𝒁:()=>`Z`,𝒂:()=>`a`,𝒃:()=>`b`,𝒄:()=>`c`,𝒅:()=>`d`,𝒆:()=>`e`,𝒇:()=>`f`,𝒈:()=>`g`,𝒉:()=>`h`,𝒊:()=>`i`,𝒋:()=>`j`,𝒌:()=>`k`,𝒍:()=>`l`,𝒎:()=>`rn`,𝒏:()=>`n`,𝒐:()=>`o`,𝒑:()=>`p`,𝒒:()=>`q`,𝒓:()=>`r`,𝒔:()=>`s`,𝒕:()=>`t`,𝒖:()=>`u`,𝒗:()=>`v`,𝒘:()=>`w`,𝒙:()=>`x`,𝒚:()=>`y`,𝒛:()=>`z`,𝒜:()=>`A`,𝒞:()=>`C`,𝒟:()=>`D`,𝒢:()=>`G`,𝒥:()=>`J`,𝒦:()=>`K`,𝒩:()=>`N`,𝒪:()=>`O`,𝒫:()=>`P`,𝒬:()=>`Q`,𝒮:()=>`S`,𝒯:()=>`T`,𝒰:()=>`U`,𝒱:()=>`V`,𝒲:()=>`W`,𝒳:()=>`X`,𝒴:()=>`Y`,𝒵:()=>`Z`,𝒶:()=>`a`,𝒷:()=>`b`,𝒸:()=>`c`,𝒹:()=>`d`,𝒻:()=>`f`,𝒽:()=>`h`,𝒾:()=>`i`,𝒿:()=>`j`,𝓀:()=>`k`,𝓁:()=>`l`,𝓂:()=>`rn`,𝓃:()=>`n`,𝓅:()=>`p`,𝓆:()=>`q`,𝓇:()=>`r`,𝓈:()=>`s`,𝓉:()=>`t`,𝓊:()=>`u`,𝓋:()=>`v`,𝓌:()=>`w`,𝓍:()=>`x`,𝓎:()=>`y`,𝓏:()=>`z`,𝓐:()=>`A`,𝓑:()=>`B`,𝓒:()=>`C`,𝓓:()=>`D`,𝓔:()=>`E`,𝓕:()=>`F`,𝓖:()=>`G`,𝓗:()=>`H`,𝓘:()=>`l`,𝓙:()=>`J`,𝓚:()=>`K`,𝓛:()=>`L`,𝓜:()=>`M`,𝓝:()=>`N`,𝓞:()=>`O`,𝓟:()=>`P`,𝓠:()=>`Q`,𝓡:()=>`R`,𝓢:()=>`S`,𝓣:()=>`T`,𝓤:()=>`U`,𝓥:()=>`V`,𝓦:()=>`W`,𝓧:()=>`X`,𝓨:()=>`Y`,𝓩:()=>`Z`,𝓪:()=>`a`,𝓫:()=>`b`,𝓬:()=>`c`,𝓭:()=>`d`,𝓮:()=>`e`,𝓯:()=>`f`,𝓰:()=>`g`,𝓱:()=>`h`,𝓲:()=>`i`,𝓳:()=>`j`,𝓴:()=>`k`,𝓵:()=>`l`,𝓶:()=>`rn`,𝓷:()=>`n`,𝓸:()=>`o`,𝓹:()=>`p`,𝓺:()=>`q`,𝓻:()=>`r`,𝓼:()=>`s`,𝓽:()=>`t`,𝓾:()=>`u`,𝓿:()=>`v`,𝔀:()=>`w`,𝔁:()=>`x`,𝔂:()=>`y`,𝔃:()=>`z`,𝔄:()=>`A`,𝔅:()=>`B`,𝔇:()=>`D`,𝔈:()=>`E`,𝔉:()=>`F`,𝔊:()=>`G`,𝔍:()=>`J`,𝔎:()=>`K`,𝔏:()=>`L`,𝔐:()=>`M`,𝔑:()=>`N`,𝔒:()=>`O`,𝔓:()=>`P`,𝔔:()=>`Q`,𝔖:()=>`S`,𝔗:()=>`T`,𝔘:()=>`U`,𝔙:()=>`V`,𝔚:()=>`W`,𝔛:()=>`X`,𝔜:()=>`Y`,𝔞:()=>`a`,𝔟:()=>`b`,𝔠:()=>`c`,𝔡:()=>`d`,𝔢:()=>`e`,𝔣:()=>`f`,𝔤:()=>`g`,𝔥:()=>`h`,𝔦:()=>`i`,𝔧:()=>`j`,𝔨:()=>`k`,𝔩:()=>`l`,𝔪:()=>`rn`,𝔫:()=>`n`,𝔬:()=>`o`,𝔭:()=>`p`,𝔮:()=>`q`,𝔯:()=>`r`,𝔰:()=>`s`,𝔱:()=>`t`,𝔲:()=>`u`,𝔳:()=>`v`,𝔴:()=>`w`,𝔵:()=>`x`,𝔶:()=>`y`,𝔷:()=>`z`,𝔸:()=>`A`,𝔹:()=>`B`,𝔻:()=>`D`,𝔼:()=>`E`,𝔽:()=>`F`,𝔾:()=>`G`,𝕀:()=>`l`,𝕁:()=>`J`,𝕂:()=>`K`,𝕃:()=>`L`,𝕄:()=>`M`,𝕆:()=>`O`,𝕊:()=>`S`,𝕋:()=>`T`,𝕌:()=>`U`,𝕍:()=>`V`,𝕎:()=>`W`,𝕏:()=>`X`,𝕐:()=>`Y`,𝕒:()=>`a`,𝕓:()=>`b`,𝕔:()=>`c`,𝕕:()=>`d`,𝕖:()=>`e`,𝕗:()=>`f`,𝕘:()=>`g`,𝕙:()=>`h`,𝕚:()=>`i`,𝕛:()=>`j`,𝕜:()=>`k`,𝕝:()=>`l`,𝕞:()=>`rn`,𝕟:()=>`n`,𝕠:()=>`o`,𝕡:()=>`p`,𝕢:()=>`q`,𝕣:()=>`r`,𝕤:()=>`s`,𝕥:()=>`t`,𝕦:()=>`u`,𝕧:()=>`v`,𝕨:()=>`w`,𝕩:()=>`x`,𝕪:()=>`y`,𝕫:()=>`z`,𝕬:()=>`A`,𝕭:()=>`B`,𝕮:()=>`C`,𝕯:()=>`D`,𝕰:()=>`E`,𝕱:()=>`F`,𝕲:()=>`G`,𝕳:()=>`H`,𝕴:()=>`l`,𝕵:()=>`J`,𝕶:()=>`K`,𝕷:()=>`L`,𝕸:()=>`M`,𝕹:()=>`N`,𝕺:()=>`O`,𝕻:()=>`P`,𝕼:()=>`Q`,𝕽:()=>`R`,𝕾:()=>`S`,𝕿:()=>`T`,𝖀:()=>`U`,𝖁:()=>`V`,𝖂:()=>`W`,𝖃:()=>`X`,𝖄:()=>`Y`,𝖅:()=>`Z`,𝖆:()=>`a`,𝖇:()=>`b`,𝖈:()=>`c`,𝖉:()=>`d`,𝖊:()=>`e`,𝖋:()=>`f`,𝖌:()=>`g`,𝖍:()=>`h`,𝖎:()=>`i`,𝖏:()=>`j`,𝖐:()=>`k`,𝖑:()=>`l`,𝖒:()=>`rn`,𝖓:()=>`n`,𝖔:()=>`o`,𝖕:()=>`p`,𝖖:()=>`q`,𝖗:()=>`r`,𝖘:()=>`s`,𝖙:()=>`t`,𝖚:()=>`u`,𝖛:()=>`v`,𝖜:()=>`w`,𝖝:()=>`x`,𝖞:()=>`y`,𝖟:()=>`z`,𝖠:()=>`A`,𝖡:()=>`B`,𝖢:()=>`C`,𝖣:()=>`D`,𝖤:()=>`E`,𝖥:()=>`F`,𝖦:()=>`G`,𝖧:()=>`H`,𝖨:()=>`l`,𝖩:()=>`J`,𝖪:()=>`K`,𝖫:()=>`L`,𝖬:()=>`M`,𝖭:()=>`N`,𝖮:()=>`O`,𝖯:()=>`P`,𝖰:()=>`Q`,𝖱:()=>`R`,𝖲:()=>`S`,𝖳:()=>`T`,𝖴:()=>`U`,𝖵:()=>`V`,𝖶:()=>`W`,𝖷:()=>`X`,𝖸:()=>`Y`,𝖹:()=>`Z`,𝖺:()=>`a`,𝖻:()=>`b`,𝖼:()=>`c`,𝖽:()=>`d`,𝖾:()=>`e`,𝖿:()=>`f`,𝗀:()=>`g`,𝗁:()=>`h`,𝗂:()=>`i`,𝗃:()=>`j`,𝗄:()=>`k`,𝗅:()=>`l`,𝗆:()=>`rn`,𝗇:()=>`n`,𝗈:()=>`o`,𝗉:()=>`p`,𝗊:()=>`q`,𝗋:()=>`r`,𝗌:()=>`s`,𝗍:()=>`t`,𝗎:()=>`u`,𝗏:()=>`v`,𝗐:()=>`w`,𝗑:()=>`x`,𝗒:()=>`y`,𝗓:()=>`z`,𝗔:()=>`A`,𝗕:()=>`B`,𝗖:()=>`C`,𝗗:()=>`D`,𝗘:()=>`E`,𝗙:()=>`F`,𝗚:()=>`G`,𝗛:()=>`H`,𝗜:()=>`l`,𝗝:()=>`J`,𝗞:()=>`K`,𝗟:()=>`L`,𝗠:()=>`M`,𝗡:()=>`N`,𝗢:()=>`O`,𝗣:()=>`P`,𝗤:()=>`Q`,𝗥:()=>`R`,𝗦:()=>`S`,𝗧:()=>`T`,𝗨:()=>`U`,𝗩:()=>`V`,𝗪:()=>`W`,𝗫:()=>`X`,𝗬:()=>`Y`,𝗭:()=>`Z`,𝗮:()=>`a`,𝗯:()=>`b`,𝗰:()=>`c`,𝗱:()=>`d`,𝗲:()=>`e`,𝗳:()=>`f`,𝗴:()=>`g`,𝗵:()=>`h`,𝗶:()=>`i`,𝗷:()=>`j`,𝗸:()=>`k`,𝗹:()=>`l`,𝗺:()=>`rn`,𝗻:()=>`n`,𝗼:()=>`o`,𝗽:()=>`p`,𝗾:()=>`q`,𝗿:()=>`r`,𝘀:()=>`s`,𝘁:()=>`t`,𝘂:()=>`u`,𝘃:()=>`v`,𝘄:()=>`w`,𝘅:()=>`x`,𝘆:()=>`y`,𝘇:()=>`z`,𝘈:()=>`A`,𝘉:()=>`B`,𝘊:()=>`C`,𝘋:()=>`D`,𝘌:()=>`E`,𝘍:()=>`F`,𝘎:()=>`G`,𝘏:()=>`H`,𝘐:()=>`l`,𝘑:()=>`J`,𝘒:()=>`K`,𝘓:()=>`L`,𝘔:()=>`M`,𝘕:()=>`N`,𝘖:()=>`O`,𝘗:()=>`P`,𝘘:()=>`Q`,𝘙:()=>`R`,𝘚:()=>`S`,𝘛:()=>`T`,𝘜:()=>`U`,𝘝:()=>`V`,𝘞:()=>`W`,𝘟:()=>`X`,𝘠:()=>`Y`,𝘡:()=>`Z`,𝘢:()=>`a`,𝘣:()=>`b`,𝘤:()=>`c`,𝘥:()=>`d`,𝘦:()=>`e`,𝘧:()=>`f`,𝘨:()=>`g`,𝘩:()=>`h`,𝘪:()=>`i`,𝘫:()=>`j`,𝘬:()=>`k`,𝘭:()=>`l`,𝘮:()=>`rn`,𝘯:()=>`n`,𝘰:()=>`o`,𝘱:()=>`p`,𝘲:()=>`q`,𝘳:()=>`r`,𝘴:()=>`s`,𝘵:()=>`t`,𝘶:()=>`u`,𝘷:()=>`v`,𝘸:()=>`w`,𝘹:()=>`x`,𝘺:()=>`y`,𝘻:()=>`z`,𝘼:()=>`A`,𝘽:()=>`B`,𝘾:()=>`C`,𝘿:()=>`D`,𝙀:()=>`E`,𝙁:()=>`F`,𝙂:()=>`G`,𝙃:()=>`H`,𝙄:()=>`l`,𝙅:()=>`J`,𝙆:()=>`K`,𝙇:()=>`L`,𝙈:()=>`M`,𝙉:()=>`N`,𝙊:()=>`O`,𝙋:()=>`P`,𝙌:()=>`Q`,𝙍:()=>`R`,𝙎:()=>`S`,𝙏:()=>`T`,𝙐:()=>`U`,𝙑:()=>`V`,𝙒:()=>`W`,𝙓:()=>`X`,𝙔:()=>`Y`,𝙕:()=>`Z`,𝙖:()=>`a`,𝙗:()=>`b`,𝙘:()=>`c`,𝙙:()=>`d`,𝙚:()=>`e`,𝙛:()=>`f`,𝙜:()=>`g`,𝙝:()=>`h`,𝙞:()=>`i`,𝙟:()=>`j`,𝙠:()=>`k`,𝙡:()=>`l`,𝙢:()=>`rn`,𝙣:()=>`n`,𝙤:()=>`o`,𝙥:()=>`p`,𝙦:()=>`q`,𝙧:()=>`r`,𝙨:()=>`s`,𝙩:()=>`t`,𝙪:()=>`u`,𝙫:()=>`v`,𝙬:()=>`w`,𝙭:()=>`x`,𝙮:()=>`y`,𝙯:()=>`z`,𝙰:()=>`A`,𝙱:()=>`B`,𝙲:()=>`C`,𝙳:()=>`D`,𝙴:()=>`E`,𝙵:()=>`F`,𝙶:()=>`G`,𝙷:()=>`H`,𝙸:()=>`l`,𝙹:()=>`J`,𝙺:()=>`K`,𝙻:()=>`L`,𝙼:()=>`M`,𝙽:()=>`N`,𝙾:()=>`O`,𝙿:()=>`P`,𝚀:()=>`Q`,𝚁:()=>`R`,𝚂:()=>`S`,𝚃:()=>`T`,𝚄:()=>`U`,𝚅:()=>`V`,𝚆:()=>`W`,𝚇:()=>`X`,𝚈:()=>`Y`,𝚉:()=>`Z`,𝚊:()=>`a`,𝚋:()=>`b`,𝚌:()=>`c`,𝚍:()=>`d`,𝚎:()=>`e`,𝚏:()=>`f`,𝚐:()=>`g`,𝚑:()=>`h`,𝚒:()=>`i`,𝚓:()=>`j`,𝚔:()=>`k`,𝚕:()=>`l`,𝚖:()=>`rn`,𝚗:()=>`n`,𝚘:()=>`o`,𝚙:()=>`p`,𝚚:()=>`q`,𝚛:()=>`r`,𝚜:()=>`s`,𝚝:()=>`t`,𝚞:()=>`u`,𝚟:()=>`v`,𝚠:()=>`w`,𝚡:()=>`x`,𝚢:()=>`y`,𝚣:()=>`z`,𝚤:()=>`i`,𝚥:()=>`ȷ`,𝚨:()=>`A`,𝚩:()=>`B`,𝚪:()=>`Γ`,𝚫:()=>`Δ`,𝚬:()=>`E`,𝚭:()=>`Z`,𝚮:()=>`H`,𝚯:()=>`O̵`,𝚰:()=>`l`,𝚱:()=>`K`,𝚲:()=>`Ʌ`,𝚳:()=>`M`,𝚴:()=>`N`,𝚵:()=>`Ξ`,𝚶:()=>`O`,𝚷:()=>`Π`,𝚸:()=>`P`,𝚹:()=>`O̵`,𝚺:()=>`Ʃ`,𝚻:()=>`T`,𝚼:()=>`Y`,𝚽:()=>`Φ`,𝚾:()=>`X`,𝚿:()=>`Ψ`,𝛀:()=>`Ω`,𝛂:()=>`a`,𝛃:()=>`ß`,𝛄:()=>`y`,𝛅:()=>`ẟ`,𝛆:()=>`ꞓ`,𝛇:()=>`ζ`,𝛈:()=>`n̩`,𝛉:()=>`O̵`,𝛊:()=>`i`,𝛋:()=>`ĸ`,𝛌:()=>`λ`,𝛍:()=>`μ`,𝛎:()=>`v`,𝛏:()=>`ξ`,𝛐:()=>`o`,𝛑:()=>`π`,𝛒:()=>`p`,𝛓:()=>`ς`,𝛔:()=>`o`,𝛕:()=>`ᴛ`,𝛖:()=>`u`,𝛗:()=>`ɸ`,𝛘:()=>`χ`,𝛙:()=>`ψ`,𝛚:()=>`ω`,𝛜:()=>`ꞓ`,𝛝:()=>`O̵`,𝛞:()=>`ĸ`,𝛟:()=>`ɸ`,𝛠:()=>`p`,𝛡:()=>`π`,𝛢:()=>`A`,𝛣:()=>`B`,𝛤:()=>`Γ`,𝛥:()=>`Δ`,𝛦:()=>`E`,𝛧:()=>`Z`,𝛨:()=>`H`,𝛩:()=>`O̵`,𝛪:()=>`l`,𝛫:()=>`K`,𝛬:()=>`Ʌ`,𝛭:()=>`M`,𝛮:()=>`N`,𝛯:()=>`Ξ`,𝛰:()=>`O`,𝛱:()=>`Π`,𝛲:()=>`P`,𝛳:()=>`O̵`,𝛴:()=>`Ʃ`,𝛵:()=>`T`,𝛶:()=>`Y`,𝛷:()=>`Φ`,𝛸:()=>`X`,𝛹:()=>`Ψ`,𝛺:()=>`Ω`,𝛼:()=>`a`,𝛽:()=>`ß`,𝛾:()=>`y`,𝛿:()=>`ẟ`,𝜀:()=>`ꞓ`,𝜁:()=>`ζ`,𝜂:()=>`n̩`,𝜃:()=>`O̵`,𝜄:()=>`i`,𝜅:()=>`ĸ`,𝜆:()=>`λ`,𝜇:()=>`μ`,𝜈:()=>`v`,𝜉:()=>`ξ`,𝜊:()=>`o`,𝜋:()=>`π`,𝜌:()=>`p`,𝜍:()=>`ς`,𝜎:()=>`o`,𝜏:()=>`ᴛ`,𝜐:()=>`u`,𝜑:()=>`ɸ`,𝜒:()=>`χ`,𝜓:()=>`ψ`,𝜔:()=>`ω`,𝜖:()=>`ꞓ`,𝜗:()=>`O̵`,𝜘:()=>`ĸ`,𝜙:()=>`ɸ`,𝜚:()=>`p`,𝜛:()=>`π`,𝜜:()=>`A`,𝜝:()=>`B`,𝜞:()=>`Γ`,𝜟:()=>`Δ`,𝜠:()=>`E`,𝜡:()=>`Z`,𝜢:()=>`H`,𝜣:()=>`O̵`,𝜤:()=>`l`,𝜥:()=>`K`,𝜦:()=>`Ʌ`,𝜧:()=>`M`,𝜨:()=>`N`,𝜩:()=>`Ξ`,𝜪:()=>`O`,𝜫:()=>`Π`,𝜬:()=>`P`,𝜭:()=>`O̵`,𝜮:()=>`Ʃ`,𝜯:()=>`T`,𝜰:()=>`Y`,𝜱:()=>`Φ`,𝜲:()=>`X`,𝜳:()=>`Ψ`,𝜴:()=>`Ω`,𝜶:()=>`a`,𝜷:()=>`ß`,𝜸:()=>`y`,𝜹:()=>`ẟ`,𝜺:()=>`ꞓ`,𝜻:()=>`ζ`,𝜼:()=>`n̩`,𝜽:()=>`O̵`,𝜾:()=>`i`,𝜿:()=>`ĸ`,𝝀:()=>`λ`,𝝁:()=>`μ`,𝝂:()=>`v`,𝝃:()=>`ξ`,𝝄:()=>`o`,𝝅:()=>`π`,𝝆:()=>`p`,𝝇:()=>`ς`,𝝈:()=>`o`,𝝉:()=>`ᴛ`,𝝊:()=>`u`,𝝋:()=>`ɸ`,𝝌:()=>`χ`,𝝍:()=>`ψ`,𝝎:()=>`ω`,𝝐:()=>`ꞓ`,𝝑:()=>`O̵`,𝝒:()=>`ĸ`,𝝓:()=>`ɸ`,𝝔:()=>`p`,𝝕:()=>`π`,𝝖:()=>`A`,𝝗:()=>`B`,𝝘:()=>`Γ`,𝝙:()=>`Δ`,𝝚:()=>`E`,𝝛:()=>`Z`,𝝜:()=>`H`,𝝝:()=>`O̵`,𝝞:()=>`l`,𝝟:()=>`K`,𝝠:()=>`Ʌ`,𝝡:()=>`M`,𝝢:()=>`N`,𝝣:()=>`Ξ`,𝝤:()=>`O`,𝝥:()=>`Π`,𝝦:()=>`P`,𝝧:()=>`O̵`,𝝨:()=>`Ʃ`,𝝩:()=>`T`,𝝪:()=>`Y`,𝝫:()=>`Φ`,𝝬:()=>`X`,𝝭:()=>`Ψ`,𝝮:()=>`Ω`,𝝰:()=>`a`,𝝱:()=>`ß`,𝝲:()=>`y`,𝝳:()=>`ẟ`,𝝴:()=>`ꞓ`,𝝵:()=>`ζ`,𝝶:()=>`n̩`,𝝷:()=>`O̵`,𝝸:()=>`i`,𝝹:()=>`ĸ`,𝝺:()=>`λ`,𝝻:()=>`μ`,𝝼:()=>`v`,𝝽:()=>`ξ`,𝝾:()=>`o`,𝝿:()=>`π`,𝞀:()=>`p`,𝞁:()=>`ς`,𝞂:()=>`o`,𝞃:()=>`ᴛ`,𝞄:()=>`u`,𝞅:()=>`ɸ`,𝞆:()=>`χ`,𝞇:()=>`ψ`,𝞈:()=>`ω`,𝞊:()=>`ꞓ`,𝞋:()=>`O̵`,𝞌:()=>`ĸ`,𝞍:()=>`ɸ`,𝞎:()=>`p`,𝞏:()=>`π`,𝞐:()=>`A`,𝞑:()=>`B`,𝞒:()=>`Γ`,𝞓:()=>`Δ`,𝞔:()=>`E`,𝞕:()=>`Z`,𝞖:()=>`H`,𝞗:()=>`O̵`,𝞘:()=>`l`,𝞙:()=>`K`,𝞚:()=>`Ʌ`,𝞛:()=>`M`,𝞜:()=>`N`,𝞝:()=>`Ξ`,𝞞:()=>`O`,𝞟:()=>`Π`,𝞠:()=>`P`,𝞡:()=>`O̵`,𝞢:()=>`Ʃ`,𝞣:()=>`T`,𝞤:()=>`Y`,𝞥:()=>`Φ`,𝞦:()=>`X`,𝞧:()=>`Ψ`,𝞨:()=>`Ω`,𝞪:()=>`a`,𝞫:()=>`ß`,𝞬:()=>`y`,𝞭:()=>`ẟ`,𝞮:()=>`ꞓ`,𝞯:()=>`ζ`,𝞰:()=>`n̩`,𝞱:()=>`O̵`,𝞲:()=>`i`,𝞳:()=>`ĸ`,𝞴:()=>`λ`,𝞵:()=>`μ`,𝞶:()=>`v`,𝞷:()=>`ξ`,𝞸:()=>`o`,𝞹:()=>`π`,𝞺:()=>`p`,𝞻:()=>`ς`,𝞼:()=>`o`,𝞽:()=>`ᴛ`,𝞾:()=>`u`,𝞿:()=>`ɸ`,𝟀:()=>`χ`,𝟁:()=>`ψ`,𝟂:()=>`ω`,𝟄:()=>`ꞓ`,𝟅:()=>`O̵`,𝟆:()=>`ĸ`,𝟇:()=>`ɸ`,𝟈:()=>`p`,𝟉:()=>`π`,𝟊:()=>`F`,𝟋:()=>`ϝ`,𞸀:()=>`l`,𞸁:()=>`ب`,𞸂:()=>`ج`,𞸃:()=>`د`,𞸅:()=>`و`,𞸆:()=>`ز`,𞸇:()=>`ح`,𞸈:()=>`ط`,𞸉:()=>`ى`,𞸊:()=>`ك`,𞸋:()=>`ل`,𞸌:()=>`م`,𞸍:()=>`ن`,𞸎:()=>`س`,𞸏:()=>`ع`,𞸐:()=>`ف`,𞸑:()=>`ص`,𞸒:()=>`ق`,𞸓:()=>`ر`,𞸔:()=>oa,𞸕:()=>`ت`,𞸖:()=>Ed,𞸗:()=>`خ`,𞸘:()=>`ذ`,𞸙:()=>`ض`,𞸚:()=>`ظ`,𞸛:()=>`غ`,𞸜:()=>`ى`,𞸝:()=>`ى`,𞸞:()=>`ڡ`,𞸟:()=>`ڡ`,𞸡:()=>`ب`,𞸢:()=>`ج`,𞸤:()=>`o`,𞸧:()=>`ح`,𞸩:()=>`ى`,𞸪:()=>`ك`,𞸫:()=>`ل`,𞸬:()=>`م`,𞸭:()=>`ن`,𞸮:()=>`س`,𞸯:()=>`ع`,𞸰:()=>`ف`,𞸱:()=>`ص`,𞸲:()=>`ق`,𞸴:()=>sa,𞸵:()=>`ت`,𞸶:()=>Dd,𞸷:()=>`خ`,𞸹:()=>`ض`,𞸻:()=>`غ`,𞹂:()=>`ج`,𞹇:()=>`ح`,𞹉:()=>`ى`,𞹋:()=>`ل`,𞹍:()=>`ن`,𞹎:()=>`س`,𞹏:()=>`ع`,𞹑:()=>`ص`,𞹒:()=>`ق`,𞹔:()=>ca,𞹗:()=>`خ`,𞹙:()=>`ض`,𞹛:()=>`غ`,𞹝:()=>`ى`,𞹟:()=>`ڡ`,𞹡:()=>`ب`,𞹢:()=>`ج`,𞹤:()=>`o`,𞹧:()=>`ح`,𞹨:()=>`ط`,𞹩:()=>`ى`,𞹪:()=>`ك`,𞹬:()=>`م`,𞹭:()=>`ن`,𞹮:()=>`س`,𞹯:()=>`ع`,𞹰:()=>`ف`,𞹱:()=>`ص`,𞹲:()=>`ق`,𞹴:()=>la,𞹵:()=>`ت`,𞹶:()=>Od,𞹷:()=>`خ`,𞹹:()=>`ض`,𞹺:()=>`ظ`,𞹻:()=>`غ`,𞹼:()=>`ى`,𞹾:()=>`ڡ`,𞺀:()=>`l`,𞺁:()=>`ب`,𞺂:()=>`ج`,𞺃:()=>`د`,𞺄:()=>`o`,𞺅:()=>`و`,𞺆:()=>`ز`,𞺇:()=>`ح`,𞺈:()=>`ط`,𞺉:()=>`ى`,𞺋:()=>`ل`,𞺌:()=>`م`,𞺍:()=>`ن`,𞺎:()=>`س`,𞺏:()=>`ع`,𞺐:()=>`ف`,𞺑:()=>`ص`,𞺒:()=>`ق`,𞺓:()=>`ر`,𞺔:()=>ua,𞺕:()=>`ت`,𞺖:()=>kd,𞺗:()=>`خ`,𞺘:()=>`ذ`,𞺙:()=>`ض`,𞺚:()=>`ظ`,𞺛:()=>`غ`,𞺡:()=>`ب`,𞺢:()=>`ج`,𞺣:()=>`د`,𞺥:()=>`و`,𞺦:()=>`ز`,𞺧:()=>`ح`,𞺨:()=>`ط`,𞺩:()=>`ى`,𞺫:()=>`ل`,𞺬:()=>`م`,𞺭:()=>`ن`,𞺮:()=>`س`,𞺯:()=>`ع`,𞺰:()=>`ف`,𞺱:()=>`ص`,𞺲:()=>`ق`,𞺳:()=>`ر`,𞺴:()=>da,𞺵:()=>`ت`,𞺶:()=>Ad,𞺷:()=>`خ`,𞺸:()=>`ذ`,𞺹:()=>`ض`,𞺺:()=>`ظ`,𞺻:()=>`غ`,𡿨:()=>`❬`,丽:()=>`丽`,丸:()=>`丸`,乁:()=>`乁`,𠄢:()=>XC,你:()=>`你`,侮:()=>`侮`,侻:()=>`侻`,倂:()=>`併`,偺:()=>`偺`,備:()=>`備`,僧:()=>`僧`,像:()=>`像`,㒞:()=>`㒞`,𠘺:()=>ew,免:()=>`免`,兔:()=>`兔`,兤:()=>`兤`,具:()=>`具`,𠔜:()=>ZC,㒹:()=>`㒹`,內:()=>`內`,再:()=>`再`,𠕋:()=>$C,冗:()=>`冗`,冤:()=>`冤`,仌:()=>`仌`,冬:()=>`冬`,况:()=>`况`,𩇟:()=>HT,凵:()=>`凵`,刃:()=>`刃`,㓟:()=>`㓟`,刻:()=>`刻`,剆:()=>`剆`,割:()=>`割`,剷:()=>`剷`,㔕:()=>`㔕`,勇:()=>`勇`,勉:()=>`勉`,勤:()=>`勤`,勺:()=>`勺`,包:()=>`包`,匆:()=>`匆`,北:()=>`北`,卉:()=>`卉`,卑:()=>`卑`,博:()=>`博`,即:()=>`即`,卽:()=>`卽`,卿:()=>`卿`,卿:()=>`卿`,卿:()=>`卿`,𠨬:()=>rw,灰:()=>`灰`,及:()=>`及`,叟:()=>`叟`,𠭣:()=>iw,叫:()=>`叫`,叱:()=>`叱`,吆:()=>`吆`,咞:()=>`咞`,吸:()=>`吸`,呈:()=>`呈`,周:()=>`周`,咢:()=>`咢`,哶:()=>`哶`,唐:()=>`唐`,啓:()=>`啓`,啣:()=>`啣`,善:()=>`善`,善:()=>`善`,喙:()=>`喙`,喫:()=>`喫`,喳:()=>`喳`,嗂:()=>`嗂`,圖:()=>`圖`,嘆:()=>`嘆`,圗:()=>`圗`,噑:()=>`噑`,噴:()=>`噴`,切:()=>`切`,壮:()=>`壮`,城:()=>`城`,埴:()=>`埴`,堍:()=>`堍`,型:()=>`型`,堲:()=>`堲`,報:()=>`報`,墬:()=>`墬`,𡓤:()=>aw,売:()=>`売`,壷:()=>`壷`,夆:()=>`夆`,多:()=>`多`,夢:()=>`夢`,奢:()=>`奢`,𡚨:()=>ow,𡛪:()=>sw,姬:()=>`姬`,娛:()=>`娛`,娧:()=>`娧`,姘:()=>`姘`,婦:()=>`婦`,㛮:()=>`㛮`,㛼:()=>`㛼`,嬈:()=>`嬈`,嬾:()=>`嬾`,嬾:()=>`嬾`,𡧈:()=>cw,寃:()=>`寃`,寘:()=>`寘`,寧:()=>`寧`,寳:()=>`寳`,𡬘:()=>lw,寿:()=>`寿`,将:()=>`将`,当:()=>`当`,尢:()=>`尢`,㞁:()=>`㞁`,屠:()=>`屠`,屮:()=>`屮`,峀:()=>`峀`,岍:()=>`岍`,𡷤:()=>dw,嵃:()=>`嵃`,𡷦:()=>fw,嵮:()=>`嵮`,嵫:()=>`嵫`,嵼:()=>`嵼`,巡:()=>`巡`,巢:()=>`巢`,㠯:()=>`㠯`,巽:()=>`巽`,帨:()=>`帨`,帽:()=>`帽`,幩:()=>`幩`,㡢:()=>`㡢`,𢆃:()=>pw,㡼:()=>`㡼`,庰:()=>`庰`,庳:()=>`庳`,庶:()=>`庶`,廊:()=>`廊`,𪎒:()=>QT,廾:()=>`廾`,𢌱:()=>hw,𢌱:()=>gw,舁:()=>`舁`,弢:()=>`弢`,弢:()=>`弢`,㣇:()=>`㣇`,𣊸:()=>Cw,𦇚:()=>fT,形:()=>`形`,彫:()=>`彫`,㣣:()=>`㣣`,徚:()=>`徚`,忍:()=>`忍`,志:()=>`志`,忹:()=>`忹`,悁:()=>`悁`,㤺:()=>`㤺`,㤜:()=>`㤜`,悔:()=>`悔`,𢛔:()=>_w,惇:()=>`惇`,慈:()=>`慈`,慌:()=>`慌`,慎:()=>`慎`,慌:()=>`慌`,慺:()=>`慺`,憎:()=>`憎`,憲:()=>`憲`,憤:()=>`憤`,憯:()=>`憯`,懞:()=>`懞`,懲:()=>`懲`,懶:()=>`懶`,成:()=>`成`,戛:()=>`戛`,扝:()=>`扝`,抱:()=>`抱`,拔:()=>`拔`,捐:()=>`捐`,𢬌:()=>bw,挽:()=>`挽`,拼:()=>`拼`,捨:()=>`捨`,掃:()=>`掃`,揤:()=>`揤`,𢯱:()=>xw,搢:()=>`搢`,揅:()=>`揅`,掩:()=>`掩`,㨮:()=>`㨮`,摩:()=>`摩`,摾:()=>`摾`,撝:()=>`撝`,摷:()=>`摷`,㩬:()=>`㩬`,敏:()=>`敏`,敬:()=>`敬`,𣀊:()=>Sw,旣:()=>`旣`,書:()=>`書`,晉:()=>`晉`,㬙:()=>`㬙`,暑:()=>`暑`,㬈:()=>`㬈`,㫤:()=>`㫤`,冒:()=>`冒`,冕:()=>`冕`,最:()=>`最`,暜:()=>`暜`,肭:()=>`肭`,䏙:()=>`䏙`,朗:()=>`朗`,望:()=>`望`,朡:()=>`朡`,杞:()=>`杞`,杓:()=>`杓`,𣏃:()=>Dw,㭉:()=>`㭉`,柺:()=>`柺`,枅:()=>`枅`,桒:()=>`桒`,梅:()=>`梅`,𣑭:()=>kw,梎:()=>`梎`,栟:()=>`栟`,椔:()=>`椔`,㮝:()=>`㮝`,楂:()=>`楂`,榣:()=>`榣`,槪:()=>`槪`,檨:()=>`檨`,𣚣:()=>Aw,櫛:()=>`櫛`,㰘:()=>`㰘`,次:()=>`次`,𣢧:()=>jw,歔:()=>`歔`,㱎:()=>`㱎`,歲:()=>`歲`,殟:()=>`殟`,殺:()=>`殺`,殻:()=>`殻`,𣪍:()=>Mw,𡴋:()=>uw,𣫺:()=>Nw,汎:()=>`汎`,𣲼:()=>Pw,沿:()=>`沿`,泍:()=>`泍`,汧:()=>`汧`,洖:()=>`洖`,派:()=>`派`,海:()=>`海`,流:()=>`流`,浩:()=>`浩`,浸:()=>`浸`,涅:()=>`涅`,𣴞:()=>Fw,洴:()=>`洴`,港:()=>`港`,湮:()=>`湮`,㴳:()=>`㴳`,滋:()=>`滋`,滇:()=>`滇`,𣻑:()=>Iw,淹:()=>`淹`,潮:()=>`潮`,𣽞:()=>Lw,𣾎:()=>Rw,濆:()=>`濆`,瀹:()=>`瀹`,瀞:()=>`瀞`,瀛:()=>`瀛`,㶖:()=>`㶖`,灊:()=>`灊`,災:()=>`災`,灷:()=>`灷`,炭:()=>`炭`,𠔥:()=>QC,煅:()=>`煅`,𤉣:()=>zw,熜:()=>`熜`,𤎫:()=>Vw,爨:()=>`爨`,爵:()=>`爵`,牐:()=>`牐`,𤘈:()=>Hw,犀:()=>`犀`,犕:()=>`犕`,𤜵:()=>Uw,𤠔:()=>Ww,獺:()=>`獺`,王:()=>`王`,㺬:()=>`㺬`,玥:()=>`玥`,㺸:()=>`㺸`,㺸:()=>`㺸`,瑇:()=>`瑇`,瑜:()=>`瑜`,瑱:()=>`瑱`,璅:()=>`璅`,瓊:()=>`瓊`,㼛:()=>`㼛`,甤:()=>`甤`,𤰶:()=>Gw,甾:()=>`甾`,𤲒:()=>Kw,異:()=>`異`,𢆟:()=>mw,瘐:()=>`瘐`,𤾡:()=>qw,𤾸:()=>Jw,𥁄:()=>Yw,㿼:()=>`㿼`,䀈:()=>`䀈`,直:()=>`直`,𥃳:()=>Zw,𥃲:()=>Xw,𥄙:()=>Qw,𥄳:()=>$w,眞:()=>`眞`,真:()=>`真`,真:()=>`真`,睊:()=>`睊`,䀹:()=>`䀹`,瞋:()=>`瞋`,䁆:()=>`䁆`,䂖:()=>`䂖`,𥐝:()=>tT,硎:()=>`硎`,碌:()=>`碌`,磌:()=>`磌`,䃣:()=>`䃣`,𥘦:()=>nT,祖:()=>`祖`,𥚚:()=>rT,𥛅:()=>iT,福:()=>`福`,秫:()=>`秫`,䄯:()=>`䄯`,穀:()=>`穀`,穊:()=>`穊`,穏:()=>`穏`,𥥼:()=>aT,𥪧:()=>oT,𥪧:()=>sT,竮:()=>`竮`,䈂:()=>`䈂`,𥮫:()=>cT,篆:()=>`篆`,築:()=>`築`,䈧:()=>`䈧`,𥲀:()=>lT,糒:()=>`糒`,䊠:()=>`䊠`,糨:()=>`糨`,糣:()=>`糣`,紀:()=>`紀`,𥾆:()=>dT,絣:()=>`絣`,䌁:()=>`䌁`,緇:()=>`緇`,縂:()=>`縂`,繅:()=>`繅`,䌴:()=>`䌴`,𦈨:()=>pT,𦉇:()=>mT,䍙:()=>`䍙`,𦋙:()=>hT,罺:()=>`罺`,𦌾:()=>gT,羕:()=>`羕`,翺:()=>`翺`,者:()=>`者`,𦓚:()=>_T,𦔣:()=>vT,聠:()=>`聠`,𦖨:()=>yT,聰:()=>`聰`,𣍟:()=>ww,䏕:()=>`䏕`,育:()=>`育`,脃:()=>`脃`,䐋:()=>`䐋`,脾:()=>`脾`,媵:()=>`媵`,𦞧:()=>bT,𦞵:()=>xT,𣎓:()=>Tw,𣎜:()=>Ew,舁:()=>`舁`,舄:()=>`舄`,辞:()=>`辞`,䑫:()=>`䑫`,芑:()=>`芑`,芋:()=>`芋`,芝:()=>`芝`,劳:()=>`劳`,花:()=>`花`,芳:()=>`芳`,芽:()=>`芽`,苦:()=>`苦`,𦬼:()=>ST,若:()=>`若`,茝:()=>`茝`,荣:()=>`荣`,莭:()=>`莭`,茣:()=>`茣`,莽:()=>`莽`,菧:()=>`菧`,著:()=>`著`,荓:()=>`荓`,菊:()=>`菊`,菌:()=>`菌`,菜:()=>`菜`,𦰶:()=>CT,𦵫:()=>TT,𦳕:()=>wT,䔫:()=>`䔫`,蓱:()=>`蓱`,蓳:()=>`蓳`,蔖:()=>`蔖`,𧏊:()=>kT,蕤:()=>`蕤`,𦼬:()=>ET,䕝:()=>`䕝`,䕡:()=>`䕡`,𦾱:()=>DT,𧃒:()=>OT,䕫:()=>`䕫`,虐:()=>`虐`,虜:()=>`虜`,虧:()=>`虧`,虩:()=>`虩`,蚩:()=>`蚩`,蚈:()=>`蚈`,蜎:()=>`蜎`,蛢:()=>`蛢`,蝹:()=>`蝹`,蜨:()=>`蜨`,蝫:()=>`蝫`,螆:()=>`螆`,䗗:()=>`䗗`,蟡:()=>`蟡`,蠁:()=>`蠁`,䗹:()=>`䗹`,衠:()=>`衠`,衣:()=>`衣`,𧙧:()=>AT,裗:()=>`裗`,裞:()=>`裞`,䘵:()=>`䘵`,裺:()=>`裺`,㒻:()=>`㒻`,𧢮:()=>jT,𧥦:()=>MT,䚾:()=>`䚾`,䛇:()=>`䛇`,誠:()=>`誠`,諭:()=>`諭`,變:()=>`變`,豕:()=>`豕`,𧲨:()=>NT,貫:()=>`貫`,賁:()=>`賁`,贛:()=>`贛`,起:()=>`起`,𧼯:()=>FT,𠠄:()=>tw,跋:()=>`跋`,趼:()=>`趼`,跰:()=>`跰`,𠣞:()=>nw,軔:()=>`軔`,輸:()=>`輸`,𨗒:()=>IT,𨗭:()=>LT,邔:()=>`邔`,郱:()=>`郱`,鄑:()=>`鄑`,𨜮:()=>RT,鄛:()=>`鄛`,鈸:()=>`鈸`,鋗:()=>`鋗`,鋘:()=>`鋘`,鉼:()=>`鉼`,鏹:()=>`鏹`,鐕:()=>`鐕`,𨯺:()=>zT,開:()=>`開`,䦕:()=>`䦕`,閷:()=>`閷`,𨵷:()=>BT,䧦:()=>`䧦`,雃:()=>`雃`,嶲:()=>`嶲`,霣:()=>`霣`,𩅅:()=>VT,𩈚:()=>UT,䩮:()=>`䩮`,䩶:()=>`䩶`,韠:()=>`韠`,𩐊:()=>WT,䪲:()=>`䪲`,𩒖:()=>GT,頋:()=>`頋`,頋:()=>`頋`,頩:()=>`頩`,𩖶:()=>KT,飢:()=>`飢`,䬳:()=>`䬳`,餩:()=>`餩`,馧:()=>`馧`,駂:()=>`駂`,駾:()=>`駾`,䯎:()=>`䯎`,𩬰:()=>qT,鬒:()=>`鬒`,鱀:()=>`鱀`,鳽:()=>`鳽`,䳎:()=>`䳎`,䳭:()=>`䳭`,鵧:()=>`鵧`,𪃎:()=>JT,䳸:()=>`䳸`,𪄅:()=>YT,𪈎:()=>XT,𪊑:()=>ZT,麻:()=>`麻`,䵖:()=>`䵖`,黹:()=>`黹`,黾:()=>`黾`,鼅:()=>`鼅`,鼏:()=>`鼏`,鼖:()=>`鼖`,鼻:()=>`鼻`,𪘀:()=>$T}),ae,oe,se,ce,le,ue,de,fe,pe,me,he,ge,_e,ve,ye,be,xe,Se,Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,rt,it,at,ot,st,ct,lt,ut,dt,ft,pt,mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft,It,Lt,Rt,zt,Bt,Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on,sn,cn,ln,un,dn,fn,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn,En,Dn,On,kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr,Fr,Ir,Lr,Rr,zr,Br,Vr,Hr,Ur,Wr,Gr,Kr,qr,Jr,Yr,Xr,Zr,Qr,$r,ei,ti,ni,ri,ii,ai,oi,si,ci,li,ui,di,fi,pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii,Li,Ri,zi,Bi,Vi,Hi,Ui,Wi,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,ra,ia,aa,oa,sa,ca,la,ua,da,fa,pa,ma,ha,ga,_a,va,ya,ba,xa,Sa,Ca,wa,Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa,Ia,La,Ra,za,Ba,Va,Ha,Ua,Wa,Ga,Ka,qa,Ja,Ya,Xa,Za,Qa,$a,eo,to,no,ro,io,ao,oo,so,co,lo,uo,fo,po,mo,ho,go,_o,vo,yo,bo,xo,So,Co,wo,To,Eo,Do,Oo,ko,Ao,jo,Mo,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo,Zo,Qo,$o,es,ts,ns,rs,is,as,os,ss,cs,ls,us,ds,fs,ps,ms,hs,gs,_s,vs,ys,bs,xs,Ss,Cs,ws,Ts,Es,Ds,Os,ks,As,js,Ms,Ns,Ps,Fs,Is,Ls,Rs,zs,Bs,Vs,Hs,Us,Ws,Gs,Ks,qs,Js,Ys,Xs,Zs,Qs,$s,ec,tc,nc,rc,ic,ac,oc,sc,cc,lc,uc,dc,fc,pc,mc,hc,gc,_c,vc,yc,bc,xc,Sc,Cc,wc,Tc,Ec,Dc,Oc,kc,Ac,jc,Mc,Nc,Pc,Fc,Ic,Lc,Rc,zc,Bc,Vc,Hc,Uc,Wc,Gc,Kc,qc,Jc,Yc,Xc,Zc,Qc,$c,el,tl,nl,rl,il,al,ol,sl,cl,ll,ul,dl,fl,pl,ml,hl,gl,_l,vl,yl,bl,xl,Sl,Cl,wl,Tl,El,Dl,Ol,kl,Al,jl,Ml,Nl,Pl,Fl,Il,Ll,Rl,zl,Bl,Vl,Hl,Ul,Wl,Gl,Kl,ql,Jl,Yl,Xl,Zl,Ql,$l,eu,tu,nu,ru,iu,au,ou,su,cu,lu,uu,du,fu,pu,mu,hu,gu,_u,vu,yu,bu,xu,Su,Cu,wu,Tu,Eu,Du,Ou,ku,Au,ju,Mu,Nu,Pu,Fu,Iu,Lu,Ru,zu,Bu,Vu,Hu,Uu,Wu,Gu,Ku,qu,Ju,Yu,Xu,Zu,Qu,$u,ed,td,nd,rd,id,ad,od,sd,cd,ld,ud,dd,fd,pd,md,hd,gd,_d,vd,yd,bd,xd,Sd,Cd,wd,Td,Ed,Dd,Od,kd,Ad,jd,Md,Nd,Pd,Fd,Id,Ld,Rd,zd,Bd,Vd,Hd,Ud,Wd,Gd,Kd,qd,Jd,Yd,Xd,Zd,Qd,$d,ef,tf,nf,rf,af,of,sf,cf,lf,uf,df,ff,pf,mf,hf,gf,_f,vf,yf,bf,xf,Sf,Cf,wf,Tf,Ef,Df,Of,kf,Af,jf,Mf,Nf,Pf,Ff,If,Lf,Rf,zf,Bf,Vf,Hf,Uf,Wf,Gf,Kf,qf,Jf,Yf,Xf,Zf,Qf,$f,ep,tp,np,rp,ip,ap,op,sp,cp,lp,up,dp,fp,pp,mp,hp,gp,_p,vp,yp,bp,xp,Sp,Cp,wp,Tp,Ep,Dp,Op,kp,Ap,jp,Mp,Np,Pp,Fp,Ip,Lp,Rp,zp,Bp,Vp,Hp,Up,Wp,Gp,Kp,qp,Jp,Yp,Xp,Zp,Qp,$p,em,tm,nm,rm,im,am,om,sm,cm,lm,um,dm,fm,pm,mm,hm,gm,_m,vm,ym,bm,xm,Sm,Cm,wm,Tm,Em,Dm,Om,km,Am,jm,Mm,Nm,Pm,Fm,Im,Lm,Rm,zm,Bm,Vm,Hm,Um,Wm,Gm,Km,qm,Jm,Ym,Xm,Zm,Qm,$m,eh,th,nh,rh,ih,ah,oh,sh,ch,lh,uh,dh,fh,ph,mh,hh,gh,_h,vh,yh,bh,xh,Sh,Ch,wh,Th,Eh,Dh,Oh,kh,Ah,jh,Mh,Nh,Ph,Fh,Ih,Lh,Rh,zh,Bh,Vh,Hh,Uh,Wh,Gh,Kh,qh,Jh,Yh,Xh,Zh,Qh,$h,eg,tg,ng,rg,ig,ag,og,sg,cg,lg,ug,dg,fg,pg,mg,hg,gg,_g,vg,yg,bg,xg,Sg,Cg,wg,Tg,Eg,Dg,Og,kg,Ag,jg,Mg,Ng,Pg,Fg,Ig,Lg,Rg,zg,Bg,Vg,Hg,Ug,Wg,Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg,$g,e_,t_,n_,r_,i_,a_,o_,s_,c_,l_,u_,d_,f_,p_,m_,h_,g_,__,v_,y_,b_,x_,S_,C_,w_,T_,E_,D_,O_,k_,A_,j_,M_,N_,P_,F_,I_,L_,R_,z_,B_,V_,H_,U_,W_,G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,Nv,Pv,Fv,Iv,Lv,Rv,zv,Bv,Vv,Hv,Uv,Wv,Gv,Kv,qv,Jv,Yv,Xv,Zv,Qv,$v,ey,ty,ny,ry,iy,ay,oy,sy,cy,ly,uy,dy,fy,py,my,hy,gy,_y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py,Fy,Iy,Ly,Ry,zy,By,Vy,Hy,Uy,Wy,Gy,Ky,qy,Jy,Yy,Xy,Zy,Qy,$y,eb,tb,nb,rb,ib,ab,ob,sb,cb,lb,ub,db,fb,pb,mb,hb,gb,_b,vb,yb,bb,xb,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb,Ib,Lb,Rb,zb,Bb,Vb,Hb,Ub,Wb,Gb,Kb,qb,Jb,Yb,Xb,Zb,Qb,$b,ex,tx,nx,rx,ix,ax,ox,sx,cx,lx,ux,dx,fx,px,mx,hx,gx,_x,vx,yx,bx,xx,Sx,Cx,wx,Tx,Ex,Dx,Ox,kx,Ax,jx,Mx,Nx,Px,Fx,Ix,Lx,Rx,zx,Bx,Vx,Hx,Ux,Wx,Gx,Kx,qx,Jx,Yx,Xx,Zx,Qx,$x,eS,tS,nS,rS,iS,aS,oS,sS,cS,lS,uS,dS,fS,pS,mS,hS,gS,_S,vS,yS,bS,xS,SS,CS,wS,TS,ES,DS,OS,kS,AS,jS,MS,NS,PS,FS,IS,LS,RS,zS,BS,VS,HS,US,WS,GS,KS,qS,JS,YS,XS,ZS,QS,$S,eC,tC,nC,rC,iC,aC,oC,sC,cC,lC,uC,dC,fC,pC,mC,hC,gC,_C,vC,yC,bC,xC,SC,CC,wC,TC,EC,DC,OC,kC,AC,jC,MC,NC,PC,FC,IC,LC,RC,zC,BC,VC,HC,UC,WC,GC,KC,qC,JC,YC,XC,ZC,QC,$C,ew,tw,nw,rw,iw,aw,ow,sw,cw,lw,uw,dw,fw,pw,mw,hw,gw,_w,vw,yw,bw,xw,Sw,Cw,ww,Tw,Ew,Dw,Ow,kw,Aw,jw,Mw,Nw,Pw,Fw,Iw,Lw,Rw,zw,Bw,Vw,Hw,Uw,Ww,Gw,Kw,qw,Jw,Yw,Xw,Zw,Qw,$w,eT,tT,nT,rT,iT,aT,oT,sT,cT,lT,uT,dT,fT,pT,mT,hT,gT,_T,vT,yT,bT,xT,ST,CT,wT,TT,ET,DT,OT,kT,AT,jT,MT,NT,PT,FT,IT,LT,RT,zT,BT,VT,HT,UT,WT,GT,KT,qT,JT,YT,XT,ZT,QT,$T,eE,tE=o((()=>{ae=`ﹲّ`,oe=`ﹴّ`,se=`ﹷّ`,ce=`ﹶّ`,le=`ﹹّ`,ue=`ﹸّ`,de=`ﹻّ`,fe=`ﹺّ`,pe=`ﹼٰ`,me=`···`,he=`·ḃ`,ge=`·Ʌ`,_e=`·Γ`,ve=`·Δ`,ye=`·Ո`,be=`·ᐁ`,xe=`·ᐄ`,Se=`·ᐅ`,Ce=`·ᐆ`,we=`·ᐊ`,Te=`·ᐋ`,Ee=`·ᐲ`,De=`·ᐴ`,Oe=`·ᐹ`,ke=`·ᑏ`,Ae=`·ᑐ`,je=`·ᑐ`,Me=`·ᑑ`,Ne=`·ᑕ`,Pe=`·ᑖ`,Fe=`·ᑫ`,Ie=`·ᑮ`,Le=`·ᑰ`,Re=`·ᒉ`,ze=`·ᒋ`,Be=`·ᒌ`,Ve=`·ᒎ`,He=`·ᒐ`,Ue=`·ᒑ`,We=`·ᒣ`,Ge=`·ᒦ`,Ke=`·ᒧ`,qe=`·ᒨ`,Je=`·ᒫ`,Ye=`·ᓀ`,Xe=`·ᓂ`,Ze=`·ᓃ`,Qe=`·ᓄ`,$e=`·ᓅ`,et=`·ᓇ`,tt=`·ᓈ`,nt=`·ᓓ`,rt=`·ᓕ`,it=`·ᓖ`,at=`·ᓗ`,ot=`·ᓘ`,st=`·ᓚ`,ct=`·ᓛ`,lt=`·ᓭ`,ut=`·ᓯ`,dt=`·ᓰ`,ft=`·ᓱ`,pt=`·ᓲ`,mt=`·ᓴ`,ht=`·ᓵ`,gt=`·ᔐ`,_t=`·ᔑ`,vt=`·ᔒ`,yt=`·ᔓ`,bt=`·ᔔ`,xt=`·ᔕ`,St=`·ᔖ`,Ct=`·ᔨ`,wt=`·ᔩ`,Tt=`·ᔪ`,Et=`·ᔫ`,Dt=`·ᔭ`,Ot=`·ᔮ`,kt=`·ᕃ`,At=`·ᕆ`,jt=`·ᕇ`,Mt=`·ᕈ`,Nt=`·ᕉ`,Pt=`·ᕋ`,Ft=`·ᕌ`,It=`·ᕚ`,Lt=`·ᕧ`,Rt=`·ᢱ`,zt=`·ᢴ`,Bt=`·ᢸ`,Vt=`·ᣀ`,Ht=`ˉbi`,Ut=`∂̵`,Wt=`ーー`,Gt=`ーᅡ`,Kt=`ーᅥ`,qt=`ーᅥ丨`,Jt=`ーᅩ`,Yt=`ーᅮ`,Xt=`ー丨`,Zt=`ー丨`,Qt=`ー丨ᅮ`,$t=`ḃ·`,en=`ǝ˞`,tn=`ǝo̸`,nn=`ǝo̵`,rn=`ɜ̦`,an=`ʜ̩`,on=`ʜ̦`,sn=`ʜ̦`,cn=`lكبر`,ln=`lللّٰo`,un=`Ó̸`,dn=`oᴇ`,fn=`oمج`,pn=`oمم`,mn=`oരo`,hn=`oာ`,gn=`ɔ̸`,_n=`ĸ̩`,vn=`ĸ̵`,yn=`rn̦`,bn=`rn̴`,xn=`ɾ̴`,Sn=`ᴛ̩`,Cn=`ʊ̵`,wn=`viii`,Tn=`Vlll`,En=`Ʌ̦`,Dn=`Ʌ·`,On=`w҆҇`,kn=`ʍ̦`,An=`Γ̵`,jn=`Γ·`,Mn=`Δ·`,Nn=`Δᐠ`,Pn=`ж̩`,Fn=`Ж̩`,In=`Ѝ̦`,Ln=`й̦`,Rn=`л̦`,zn=`Ѡ҆҇`,Bn=`Ѡ·`,Vn=`Ҽ̨`,Hn=`եւ`,Un=`մե`,Wn=`մի`,Gn=`մխ`,Kn=`մն`,qn=`Ո·`,Jn=`վն`,Yn=`אל`,Xn=`بۛ`,Zn=`بۢ`,Qn=`بٔ`,$n=`بج`,er=`بج`,tr=`بح`,nr=`بح`,rr=`بحى`,ir=`بخ`,ar=`بخ`,or=`بخ`,sr=`بخ`,cr=`بخى`,lr=`بر`,ur=`بز`,dr=`بم`,fr=`بم`,pr=`بم`,mr=`بم`,hr=`بن`,gr=`بى`,_r=`بى`,vr=`بى`,yr=`بى`,br=`تج`,xr=`تج`,Sr=`تجم`,Cr=`تجى`,wr=`تجى`,Tr=`تح`,Er=`تح`,Dr=`تحج`,Or=`تحج`,kr=`تحم`,Ar=`تخ`,jr=`تخ`,Mr=`تخم`,Nr=`تخى`,Pr=`تخى`,Fr=`تر`,Ir=`تز`,Lr=`تم`,Rr=`تم`,zr=`تم`,Br=`تم`,Vr=`تمج`,Hr=`تمح`,Ur=`تمخ`,Wr=`تمى`,Gr=`تمى`,Kr=`تن`,qr=`تى`,Jr=`تى`,Yr=`تى`,Xr=`تى`,Zr=`جح`,Qr=`جح`,$r=`جحى`,ei=`جحى`,ti=`جل جلlلo`,ni=`جم`,ri=`جم`,ii=`جمح`,ai=`جمح`,oi=`جمى`,si=`جمى`,ci=`جى`,li=`جى`,ui=`جى`,di=`جى`,fi=`حۛ`,pi=`حٔ`,mi=`حٔ`,hi=`حج`,gi=`حج`,_i=`حجى`,vi=`حم`,yi=`حم`,bi=`حمى`,xi=`حمى`,Si=`حى`,Ci=`حى`,wi=`حى`,Ti=`حى`,Ei=`خج`,Di=`خج`,Oi=`خح`,ki=`خم`,Ai=`خم`,ji=`خى`,Mi=`خى`,Ni=`خى`,Pi=`خى`,Fi=`دؕ`,Ii=`دؕ`,Li=`دؕ`,Ri=`دۛ`,zi=`دۛ`,Bi=`دۛ`,Vi=`د̂`,Hi=`د̤̣`,Ui=`ذٰ`,Wi=`ڊؕ`,Gi=`رؕ`,Ki=`رؕ`,qi=`رؕ`,Ji=`رۛ`,Yi=`رۛ`,Xi=`رۛ`,Zi=`ر̆`,Qi=`ر̆̇`,$i=`ر̂`,ea=`رٔ`,ta=`رٰ`,na=`رسول`,ra=`ز̂`,ia=`ڗؕ`,aa=`سۛ`,oa=`سۛ`,sa=`سۛ`,ca=`سۛ`,la=`سۛ`,ua=`سۛ`,da=`سۛ`,fa=`سۛ`,pa=`سۛ`,ma=`سۛ`,ha=`سۛ`,ga=`س̂`,_a=`سۛo`,va=`سۛo`,ya=`سج`,ba=`سج`,xa=`سج`,Sa=`سۛج`,Ca=`سۛج`,wa=`سۛج`,Ta=`سۛج`,Ea=`سجح`,Da=`سجى`,Oa=`سۛجى`,ka=`سح`,Aa=`سح`,ja=`سح`,Ma=`سۛح`,Na=`سۛح`,Pa=`سۛح`,Fa=`سۛح`,Ia=`سحج`,La=`سۛحم`,Ra=`سۛحم`,za=`سۛحى`,Ba=`سخ`,Va=`سخ`,Ha=`سخ`,Ua=`سۛخ`,Wa=`سۛخ`,Ga=`سۛخ`,Ka=`سۛخ`,qa=`سخى`,Ja=`سخى`,Ya=`سر`,Xa=`سر`,Za=`سۛر`,Qa=`سۛر`,$a=`سم`,eo=`سم`,to=`سم`,no=`سۛم`,ro=`سۛم`,io=`سۛم`,ao=`سۛم`,oo=`سمج`,so=`سمح`,co=`سمح`,lo=`سۛمخ`,uo=`سۛمخ`,fo=`سمم`,po=`سمم`,mo=`سۛمم`,ho=`سۛمم`,go=`سى`,_o=`سى`,vo=`سى`,yo=`سى`,bo=`سۛى`,xo=`سۛى`,So=`سۛى`,Co=`سۛى`,wo=`صۛ`,To=`ص̤̣`,Eo=`صح`,Do=`صح`,Oo=`صحح`,ko=`صحح`,Ao=`صحى`,jo=`صخ`,Mo=`صر`,No=`صر`,Po=`صلعم`,Fo=`صلى`,Io=`صلى`,Lo=`صلى lللo علىo وسلم`,Ro=`صم`,zo=`صم`,Bo=`صمم`,Vo=`صمم`,Ho=`صى`,Uo=`صى`,Wo=`صى`,Go=`صى`,Ko=`ضج`,qo=`ضج`,Jo=`ضح`,Yo=`ضح`,Xo=`ضحى`,Zo=`ضحى`,Qo=`ضخ`,$o=`ضخ`,es=`ضخم`,ts=`ضخم`,ns=`ضر`,rs=`ضر`,is=`ضم`,as=`ضم`,os=`ضى`,ss=`ضى`,cs=`ضى`,ls=`ضى`,us=`طۛ`,ds=`طح`,fs=`طح`,ps=`طم`,ms=`طم`,hs=`طم`,gs=`طمح`,_s=`طمح`,vs=`طمم`,ys=`طمى`,bs=`طى`,xs=`طى`,Ss=`طى`,Cs=`طى`,ws=`ظم`,Ts=`ظم`,Es=`ظم`,Ds=`عج`,Os=`عج`,ks=`عجم`,As=`عجم`,js=`علىo`,Ms=`عم`,Ns=`عم`,Ps=`عمم`,Fs=`عمم`,Is=`عمى`,Ls=`عمى`,Rs=`عى`,zs=`عى`,Bs=`عى`,Vs=`عى`,Hs=`غج`,Us=`غج`,Ws=`غم`,Gs=`غم`,Ks=`غمم`,qs=`غمى`,Js=`غمى`,Ys=`غى`,Xs=`غى`,Zs=`غى`,Qs=`غى`,$s=`فج`,ec=`فج`,tc=`فح`,nc=`فح`,rc=`فخ`,ic=`فخ`,ac=`فخم`,oc=`فخم`,sc=`فم`,cc=`فم`,lc=`فمى`,uc=`فى`,dc=`فى`,fc=`فى`,pc=`فى`,mc=`ڡۛ`,hc=`ڡۛ`,gc=`ڡۛ`,_c=`ڡۛ`,vc=`ڡۛ`,yc=`ڡۛ`,bc=`ڢۛ`,xc=`قح`,Sc=`قح`,Cc=`قلى`,wc=`قم`,Tc=`قم`,Ec=`قمح`,Dc=`قمح`,Oc=`قمم`,kc=`قمى`,Ac=`قى`,jc=`قى`,Mc=`قى`,Nc=`قى`,Pc=`كۛ`,Fc=`كۛ`,Ic=`كۛ`,Lc=`كۛ`,Rc=`كۛ`,zc=`كۛ`,Bc=`كج`,Vc=`كج`,Hc=`كح`,Uc=`كح`,Wc=`كخ`,Gc=`كخ`,Kc=`كل`,qc=`كل`,Jc=`كل`,Yc=`كل`,Xc=`كم`,Zc=`كم`,Qc=`كم`,$c=`كم`,el=`كمم`,tl=`كمم`,nl=`كمى`,rl=`كى`,il=`كى`,al=`كى`,ol=`كى`,sl=`گۛ`,cl=`لۛ`,ll=`ل̆`,ul=`لlٕ`,dl=`لlٕ`,fl=`لlٴ`,pl=`لlٴ`,ml=`لآ`,hl=`لآ`,gl=`لج`,_l=`لج`,vl=`لجج`,yl=`لجج`,bl=`لجم`,xl=`لجم`,Sl=`لجى`,Cl=`لح`,wl=`لح`,Tl=`لحم`,El=`لحم`,Dl=`لحى`,Ol=`لحى`,kl=`لخ`,Al=`لخ`,jl=`لخم`,Ml=`لخم`,Nl=`لم`,Pl=`لم`,Fl=`لم`,Il=`لم`,Ll=`لمح`,Rl=`لمح`,zl=`لمى`,Bl=`لى`,Vl=`لى`,Hl=`لى`,Ul=`لى`,Wl=`مۛ`,Gl=`مج`,Kl=`مج`,ql=`مجح`,Jl=`مجخ`,Yl=`مجم`,Xl=`مجى`,Zl=`مح`,Ql=`مح`,$l=`محج`,eu=`محم`,tu=`محمد`,nu=`محى`,ru=`مخ`,iu=`مخ`,au=`مخج`,ou=`مخم`,su=`مخى`,cu=`مم`,lu=`مم`,uu=`مم`,du=`ممى`,fu=`مى`,pu=`مى`,mu=`نؕ`,hu=`ن̆`,gu=`نجح`,_u=`نجح`,vu=`نجم`,yu=`نجم`,bu=`نجى`,xu=`نجى`,Su=`نح`,Cu=`نح`,wu=`نحم`,Tu=`نحى`,Eu=`نحى`,Du=`نخ`,Ou=`نخ`,ku=`نر`,Au=`نز`,ju=`نم`,Mu=`نم`,Nu=`نم`,Pu=`نم`,Fu=`نمى`,Iu=`نمى`,Lu=`نن`,Ru=`نى`,zu=`نى`,Bu=`نى`,Vu=`نى`,Hu=`وۛ`,Uu=`وۛ`,Wu=`وۛ`,Gu=`و̓`,Ku=`و̓`,qu=`و̓`,Ju=`و̆`,Yu=`و̆`,Xu=`و̆`,Zu=`و̂`,Qu=`و̂`,$u=`و̂`,ed=`وٰ`,td=`وٰ`,nd=`وٰ`,rd=`وٴ`,id=`وٴ`,ad=`وٴ`,od=`وٴ`,sd=`و̓ٴ`,cd=`و̓ٴ`,ld=`وسلم`,ud=`ىؕ`,dd=`ىؕ`,fd=`ىؕ`,pd=`ىؕ`,md=`ىؕ`,hd=`ىؕ`,gd=`ىؕ`,_d=`ىؕ`,vd=`ىؕ`,yd=`ىؕ`,bd=`ىۛ`,xd=`ىۛ`,Sd=`ىۛ`,Cd=`ىۛ`,wd=`ىۛ`,Td=`ىۛ`,Ed=`ىۛ`,Dd=`ىۛ`,Od=`ىۛ`,kd=`ىۛ`,Ad=`ىۛ`,jd=`ىۛ`,Md=`ىۛ`,Nd=`ىۛ`,Pd=`ىۛ`,Fd=`ىۛ`,Id=`ىۛ`,Ld=`ىۛ`,Rd=`ىۛۢ`,zd=`ى̆`,Bd=`ى̆`,Vd=`ى̆̇`,Hd=`ى̂`,Ud=`ىٔ`,Wd=`ىٰ`,Gd=`ىٰ`,Kd=`ىۛo`,qd=`ىٴ`,Jd=`ىٴ`,Yd=`ىٴ`,Xd=`ىٴ`,Zd=`ىٴ`,Qd=`ىٴ`,$d=`ىٴl`,ef=`ىٴl`,tf=`ىٴo`,nf=`ىٴo`,rf=`ىٴo`,af=`ىٴo`,of=`ىٴٻ`,sf=`ىٴٻ`,cf=`ىٴٻ`,lf=`ىٴج`,uf=`ىٴج`,df=`ىٴح`,ff=`ىٴح`,pf=`ىٴخ`,mf=`ىٴر`,hf=`ىٴز`,gf=`ىٴم`,_f=`ىٴم`,vf=`ىٴم`,yf=`ىٴم`,bf=`ىٴن`,xf=`ىٴو`,Sf=`ىٴو`,Cf=`ىٴو̓`,wf=`ىٴو̓`,Tf=`ىٴو̆`,Ef=`ىٴو̆`,Df=`ىٴوٰ`,Of=`ىٴوٰ`,kf=`ىٴى`,Af=`ىٴى`,jf=`ىٴى`,Mf=`ىٴى`,Nf=`ىٴى`,Pf=`ىٴى`,Ff=`ىٴى`,If=`ىج`,Lf=`ىج`,Rf=`ىۛج`,zf=`ىجى`,Bf=`ىح`,Vf=`ىح`,Hf=`ىحى`,Uf=`ىخ`,Wf=`ىخ`,Gf=`ىر`,Kf=`ىۛر`,qf=`ىز`,Jf=`ىۛز`,Yf=`ىم`,Xf=`ىم`,Zf=`ىم`,Qf=`ىم`,$f=`ىۛم`,ep=`ىۛم`,tp=`ىۛم`,np=`ىۛم`,rp=`ىمم`,ip=`ىمم`,ap=`ىمى`,op=`ىن`,sp=`ىۛن`,cp=`ىى`,lp=`ىى`,up=`ىى`,dp=`ىى`,fp=`ىۛى`,pp=`ىۛى`,mp=`ىۛى`,hp=`ىۛى`,gp=`अा`,_p=`अाॆ`,vp=`अाे`,yp=`अाै`,bp=`अॆ`,xp=`अॉ`,Sp=`एॅ`,Cp=`एॆ`,wp=`एे`,Tp=`र्इ`,Ep=`অা`,Dp=`ঋৃ`,Op=`ঋৃ`,kp=`ੳੁ`,Ap=`ੳੂ`,jp=`ਅਾ`,Mp=`ਅੈ`,Np=`ਅੌ`,Pp=`ੲਿ`,Fp=`ੲੀ`,Ip=`ੲੇ`,Lp=`અા`,Rp=`અાૅ`,zp=`અાે`,Bp=`અાૈ`,Vp=`અૅ`,Hp=`અે`,Up=`અૈ`,Wp=`ଅା`,Gp=`உள`,Kp=`உൗ`,qp=`டி`,Jp=`ఋా`,Yp=`ఌా`,Xp=`ఒౌ`,Zp=`ఒౌ`,Qp=`ఒౕ`,$p=`ఒౕ`,em=`డ̣`,tm=`ధּ`,nm=`బ̣`,rm=`రּ`,im=`వ̣`,am=`వా`,om=`వు`,sm=`ಌಾ`,cm=`ഇൗ`,lm=`എെ`,um=`ഒാ`,dm=`ഒൗ`,fm=`നു`,pm=`നു`,mm=`ന്`,hm=`ര്`,gm=`𑐴𑑂𑐒`,_m=`𑐴𑑂𑐘`,vm=`𑐴𑑂𑐣`,ym=`𑐴𑑂𑐩`,bm=`𑐴𑑂𑐬`,xm=`𑐴𑑂𑐮`,Sm=`𑖂`,Cm=`𑖂`,wm=`𑖃`,Tm=`𑖄`,Em=`̊า`,Dm=`เเ`,Om=`ຫນ`,km=`ຫມ`,Am=`̊າ`,jm=`ཨོཾ`,Mm=`ဂှ`,Nm=`ဂာ`,Pm=`ဃှ`,Fm=`ပှ`,Im=`ပာ`,Lm=`ပာှ`,Rm=`ၽှ`,zm=`သြ`,Bm=`သြော်`,Vm=`ᐁ·`,Hm=`ᐁᐠ`,Um=`ᐄ·`,Wm=`ᐅ·`,Gm=`ᐅᐠ`,Km=`ᐆ·`,qm=`ᐊ·`,Jm=`ᐊᐠ`,Ym=`ᐋ·`,Xm=`ᐞᣟ`,Zm=`ᐲ·`,Qm=`ᐴ·`,$m=`ᐹ·`,eh=`ᑏ·`,th=`ᑐ·`,nh=`ᑐ'`,rh=`ᑑ·`,ih=`ᑕ·`,ah=`ᑕ'`,oh=`ᑖ·`,sh=`ᑫ·`,ch=`ᑫ'`,lh=`ᑮ·`,uh=`ᑰ·`,dh=`ᒉ·`,fh=`ᒋ·`,ph=`ᒌ·`,mh=`ᒎ·`,hh=`ᒐ·`,gh=`ᒑ·`,_h=`ᒣ·`,vh=`ᒦ·`,yh=`ᒧ·`,bh=`ᒨ·`,xh=`ᒫ·`,Sh=`ᓀ·`,Ch=`ᓂ·`,wh=`ᓃ·`,Th=`ᓄ·`,Eh=`ᓅ·`,Dh=`ᓇ·`,Oh=`ᓈ·`,kh=`ᓓ·`,Ah=`ᓕ·`,jh=`ᓖ·`,Mh=`ᓗ·`,Nh=`ᓘ·`,Ph=`ᓚ·`,Fh=`ᓛ·`,Ih=`ᓭ·`,Lh=`ᓯ·`,Rh=`ᓰ·`,zh=`ᓱ·`,Bh=`ᓲ·`,Vh=`ᓴ·`,Hh=`ᓵ·`,Uh=`ᔋ<`,Wh=`ᔋb`,Gh=`ᔋᑕ`,Kh=`ᔋᒐ`,qh=`ᔐ·`,Jh=`ᔑ·`,Yh=`ᔒ·`,Xh=`ᔓ·`,Zh=`ᔔ·`,Qh=`ᔕ·`,$h=`ᔖ·`,eg=`ᔨ·`,tg=`ᔩ·`,ng=`ᔪ·`,rg=`ᔫ·`,ig=`ᔭ·`,ag=`ᔮ·`,og=`ᕃ·`,sg=`ᕌ·`,cg=`ᕐb`,lg=`ᕐḃ`,ug=`ᕐd`,dg=`ᕐP`,fg=`ᕐᑫ`,pg=`ᕐᑬ`,mg=`ᕐᑮ`,hg=`ᕐᑰ`,gg=`ᕐᒃ`,_g=`ᕚ·`,vg=`ᕞ·`,yg=`ᕦ·`,bg=`ᕧ·`,xg=`ᕫ·`,Sg=`ᖆ·`,Cg=`ᖕJ`,wg=`ᖕᒉ`,Tg=`ᖕᒊ`,Eg=`ᖕᒋ`,Dg=`ᖕᒌ`,Og=`ᖕᒎ`,kg=`ᖕᒐ`,Ag=`ᖕᒑ`,jg=`ᖖJ`,Mg=`ᖖᒋ`,Ng=`ᖖᒌ`,Pg=`ᖖᒎ`,Fg=`ᖖᒐ`,Ig=`ᖖᒑ`,Lg=`ᖗ·`,Rg=`ᖧ·`,zg=`ᖨ·`,Bg=`ᖩ·`,Vg=`ᖪ·`,Hg=`ᖫ·`,Ug=`ᖬ·`,Wg=`ᖭ·`,Gg=`ᗴ·`,Kg=`ᘛ·`,qg=`ᣟᐞ`,Jg=`ᄀᄀ`,Yg=`ᄀᄀ`,Xg=`ᄀᄀ`,Zg=`ᄀᄂ`,Qg=`ᄀᄃ`,$g=`ᄀᄅ`,e_=`ᄀᄇ`,t_=`ᄀᄉ`,n_=`ᄀᄉ`,r_=`ᄀᄉᄀ`,i_=`ᄀᄎ`,a_=`ᄀᄏ`,o_=`ᄀᄒ`,s_=`ᄂᄀ`,c_=`ᄂᄀ`,l_=`ᄂᄂ`,u_=`ᄂᄂ`,d_=`ᄂᄂ`,f_=`ᄂᄃ`,p_=`ᄂᄃ`,m_=`ᄂᄃ`,h_=`ᄂᄅ`,g_=`ᄂᄇ`,__=`ᄂᄉ`,v_=`ᄂᄉ`,y_=`ᄂᄉ`,b_=`ᄂᄌ`,x_=`ᄂᄌ`,S_=`ᄂᄌ`,C_=`ᄂᄎ`,w_=`ᄂᄐ`,T_=`ᄂᄒ`,E_=`ᄂᄒ`,D_=`ᄂᄒ`,O_=`ᄂᅀ`,k_=`ᄂᅀ`,A_=`ᄃᄀ`,j_=`ᄃᄀ`,M_=`ᄃᄃ`,N_=`ᄃᄃ`,P_=`ᄃᄃ`,F_=`ᄃᄃᄇ`,I_=`ᄃᄅ`,L_=`ᄃᄅ`,R_=`ᄃᄆ`,z_=`ᄃᄇ`,B_=`ᄃᄇ`,V_=`ᄃᄉ`,H_=`ᄃᄉ`,U_=`ᄃᄉᄀ`,W_=`ᄃᄌ`,G_=`ᄃᄌ`,K_=`ᄃᄎ`,q_=`ᄃᄐ`,J_=`ᄅᄀ`,Y_=`ᄅᄀ`,X_=`ᄅᄀ`,Z_=`ᄅᄀᄀ`,Q_=`ᄅᄀᄀ`,$_=`ᄅᄀᄉ`,ev=`ᄅᄀᄉ`,tv=`ᄅᄀᄒ`,nv=`ᄅᄂ`,rv=`ᄅᄂ`,iv=`ᄅᄃ`,av=`ᄅᄃ`,ov=`ᄅᄃ`,sv=`ᄅᄃᄃ`,cv=`ᄅᄃᄒ`,lv=`ᄅᄅ`,uv=`ᄅᄅ`,dv=`ᄅᄅᄏ`,fv=`ᄅᄆ`,pv=`ᄅᄆ`,mv=`ᄅᄆ`,hv=`ᄅᄆᄀ`,gv=`ᄅᄆᄉ`,_v=`ᄅᄆᄒ`,vv=`ᄅᄇ`,yv=`ᄅᄇ`,bv=`ᄅᄇ`,xv=`ᄅᄇᄃ`,Sv=`ᄅᄇᄇ`,Cv=`ᄅᄇᄉ`,wv=`ᄅᄇᄉ`,Tv=`ᄅᄇᄋ`,Ev=`ᄅᄇᄋ`,Dv=`ᄅᄇᄑ`,Ov=`ᄅᄇᄒ`,kv=`ᄅᄉ`,Av=`ᄅᄉ`,jv=`ᄅᄉ`,Mv=`ᄅᄉᄉ`,Nv=`ᄅᄋ`,Pv=`ᄅᄋ`,Fv=`ᄅᄌ`,Iv=`ᄅᄏ`,Lv=`ᄅᄏ`,Rv=`ᄅᄐ`,zv=`ᄅᄐ`,Bv=`ᄅᄑ`,Vv=`ᄅᄑ`,Hv=`ᄅᄒ`,Uv=`ᄅᄒ`,Wv=`ᄅᄒ`,Gv=`ᄅᄒ`,Kv=`ᄅᄒ`,qv=`ᄅᅀ`,Jv=`ᄅᅀ`,Yv=`ᄅᅌ`,Xv=`ᄅᅙ`,Zv=`ᄅᅙ`,Qv=`ᄅᅙᄒ`,$v=`ᄆᄀ`,ey=`ᄆᄀ`,ty=`ᄆᄂ`,ny=`ᄆᄂᄂ`,ry=`ᄆᄃ`,iy=`ᄆᄅ`,ay=`ᄆᄆ`,oy=`ᄆᄇ`,sy=`ᄆᄇ`,cy=`ᄆᄇ`,ly=`ᄆᄇᄉ`,uy=`ᄆᄉ`,dy=`ᄆᄉ`,fy=`ᄆᄉ`,py=`ᄆᄉᄉ`,my=`ᄆᄋ`,hy=`ᄆᄋ`,gy=`ᄆᄋ`,_y=`ᄆᄌ`,vy=`ᄆᄎ`,yy=`ᄆᄒ`,by=`ᄆᅀ`,xy=`ᄆᅀ`,Sy=`ᄇᄀ`,Cy=`ᄇᄀ`,wy=`ᄇᄂ`,Ty=`ᄇᄃ`,Ey=`ᄇᄃ`,Dy=`ᄇᄃ`,Oy=`ᄇᄅ`,ky=`ᄇᄅᄑ`,Ay=`ᄇᄆ`,jy=`ᄇᄇ`,My=`ᄇᄇ`,Ny=`ᄇᄇ`,Py=`ᄇᄇᄋ`,Fy=`ᄇᄇᄋ`,Iy=`ᄇᄉ`,Ly=`ᄇᄉ`,Ry=`ᄇᄉ`,zy=`ᄇᄉᄀ`,By=`ᄇᄉᄀ`,Vy=`ᄇᄉᄃ`,Hy=`ᄇᄉᄃ`,Uy=`ᄇᄉᄃ`,Wy=`ᄇᄉᄇ`,Gy=`ᄇᄉᄉ`,Ky=`ᄇᄉᄌ`,qy=`ᄇᄉᄐ`,Jy=`ᄇᄋ`,Yy=`ᄇᄋ`,Xy=`ᄇᄋ`,Zy=`ᄇᄌ`,Qy=`ᄇᄌ`,$y=`ᄇᄌ`,eb=`ᄇᄎ`,tb=`ᄇᄎ`,nb=`ᄇᄏ`,rb=`ᄇᄐ`,ib=`ᄇᄐ`,ab=`ᄇᄑ`,ob=`ᄇᄑ`,sb=`ᄇᄒ`,cb=`ᄇᄒ`,lb=`ᄉᄀ`,ub=`ᄉᄀ`,db=`ᄉᄀ`,fb=`ᄉᄂ`,pb=`ᄉᄂ`,mb=`ᄉᄃ`,hb=`ᄉᄃ`,gb=`ᄉᄃ`,_b=`ᄉᄅ`,vb=`ᄉᄅ`,yb=`ᄉᄆ`,bb=`ᄉᄆ`,xb=`ᄉᄇ`,Sb=`ᄉᄇ`,Cb=`ᄉᄇ`,wb=`ᄉᄇᄀ`,Tb=`ᄉᄇᄋ`,Eb=`ᄉᄉ`,Db=`ᄉᄉ`,Ob=`ᄉᄉ`,kb=`ᄉᄉᄀ`,Ab=`ᄉᄉᄃ`,jb=`ᄉᄉᄇ`,Mb=`ᄉᄉᄉ`,Nb=`ᄉᄋ`,Pb=`ᄉᄌ`,Fb=`ᄉᄌ`,Ib=`ᄉᄌ`,Lb=`ᄉᄎ`,Rb=`ᄉᄎ`,zb=`ᄉᄏ`,Bb=`ᄉᄐ`,Vb=`ᄉᄐ`,Hb=`ᄉᄑ`,Ub=`ᄉᅀ`,Wb=`ᄋᄀ`,Gb=`ᄋᄀ`,Kb=`ᄋᄀᄀ`,qb=`ᄋᄃ`,Jb=`ᄋᄅ`,Yb=`ᄋᄆ`,Xb=`ᄋᄇ`,Zb=`ᄋᄉ`,Qb=`ᄋᄉ`,$b=`ᄋᄉ`,ex=`ᄋᄋ`,tx=`ᄋᄋ`,nx=`ᄋᄋ`,rx=`ᄋᄌ`,ix=`ᄋᄎ`,ax=`ᄋᄏ`,ox=`ᄋᄐ`,sx=`ᄋᄑ`,cx=`ᄋᄒ`,lx=`ᄋᅀ`,ux=`ᄋᅀ`,dx=`ᄋᅀ`,fx=`ᄌᄇ`,px=`ᄌᄇᄇ`,mx=`ᄌᄋ`,hx=`ᄌᄌ`,gx=`ᄌᄌ`,_x=`ᄌᄌ`,vx=`ᄌᄌᄒ`,yx=`ᄎᄏ`,bx=`ᄎᄒ`,xx=`ᄐᄐ`,Sx=`ᄑᄇ`,Cx=`ᄑᄇ`,wx=`ᄑᄉ`,Tx=`ᄑᄋ`,Ex=`ᄑᄋ`,Dx=`ᄑᄋ`,Ox=`ᄑᄐ`,kx=`ᄑᄒ`,Ax=`ᄒᄂ`,jx=`ᄒᄅ`,Mx=`ᄒᄆ`,Nx=`ᄒᄇ`,Px=`ᄒᄉ`,Fx=`ᄒᄒ`,Ix=`ᄒᄒ`,Lx=`ᄼᄼ`,Rx=`ᄾᄾ`,zx=`ᅀᄇ`,Bx=`ᅀᄇᄋ`,Vx=`ᅌᄆ`,Hx=`ᅌᄒ`,Ux=`ᅎᅎ`,Wx=`ᅐᅐ`,Gx=`ᅙᅙ`,Kx=`ᅡー`,qx=`ᅡᅩ`,Jx=`ᅡᅮ`,Yx=`ᅡ丨`,Xx=`ᅡ丨`,Zx=`ᅣᅩ`,Qx=`ᅣᅭ`,$x=`ᅣᅮ`,eS=`ᅣ丨`,tS=`ᅣ丨`,nS=`ᅥー`,rS=`ᅥᅩ`,iS=`ᅥᅮ`,aS=`ᅥ丨`,oS=`ᅥ丨`,sS=`ᅧᅣ`,cS=`ᅧᅩ`,lS=`ᅧᅮ`,uS=`ᅧ丨`,dS=`ᅧ丨`,fS=`ᅩᅡ`,pS=`ᅩᅡ`,mS=`ᅩᅡ丨`,hS=`ᅩᅡ丨`,gS=`ᅩᅣ`,_S=`ᅩᅣ丨`,vS=`ᅩᅥ`,yS=`ᅩᅥ丨`,bS=`ᅩᅧ`,xS=`ᅩᅧ丨`,SS=`ᅩᅩ`,CS=`ᅩᅩ丨`,wS=`ᅩᅮ`,TS=`ᅩ丨`,ES=`ᅩ丨`,DS=`ᅭᅡ`,OS=`ᅭᅡ丨`,kS=`ᅭᅣ`,AS=`ᅭᅣ`,jS=`ᅭᅣ`,MS=`ᅭᅣ丨`,NS=`ᅭᅣ丨`,PS=`ᅭᅥ`,FS=`ᅭᅩ`,IS=`ᅭ丨`,LS=`ᅭ丨`,RS=`ᅮᅡ`,zS=`ᅮᅡ丨`,BS=`ᅮᅥ`,VS=`ᅮᅥ`,HS=`ᅮᅥー`,US=`ᅮᅥ丨`,WS=`ᅮᅥ丨`,GS=`ᅮᅧ`,KS=`ᅮᅧ丨`,qS=`ᅮᅮ`,JS=`ᅮ丨`,YS=`ᅮ丨`,XS=`ᅮ丨丨`,ZS=`ᅲᅡ`,QS=`ᅲᅡ丨`,$S=`ᅲᅥ`,eC=`ᅲᅥ丨`,tC=`ᅲᅧ`,nC=`ᅲᅧ`,rC=`ᅲᅧ丨`,iC=`ᅲᅧ丨`,aC=`ᅲᅩ`,oC=`ᅲᅮ`,sC=`ᅲ丨`,cC=`ᅲ丨`,lC=`ᆞᅡ`,uC=`ᆞᅥ`,dC=`ᆞᅥ丨`,fC=`ᆞᅮ`,pC=`ᆞᆞ`,mC=`ᆞ丨`,hC=`ᆞ丨`,gC=`𑫥𑫯`,_C=`𑫥𑫥`,vC=`𑫥𑫥𑫯`,yC=`𑫥𑫥𑫰`,bC=`𑫥𑫰`,xC=`𑫳𑫯`,SC=`𑫳𑫳`,CC=`𑫳𑫳𑫯`,wC=`𑫳𑫳𑫰`,TC=`𑫳𑫰`,EC=`𑫫𑫯`,DC=`𑫫𑫫`,OC=`𑫫𑫫𑫯`,kC=`𐊨`,AC=`𐐺`,jC=`𐐒`,MC=`𐎂`,NC=`𐎓`,PC=`𐎚`,FC=`𐦞`,IC=`丨ー`,LC=`丨ᅡ`,RC=`丨ᅣ`,zC=`丨ᅣᅩ`,BC=`丨ᅣ丨`,VC=`丨ᅧ`,HC=`丨ᅧ丨`,UC=`丨ᅩ`,WC=`丨ᅩ丨`,GC=`丨ᅭ`,KC=`丨ᅮ`,qC=`丨ᅲ`,JC=`丨ᆞ`,YC=`丨丨`,XC=`𠄢`,ZC=`𠔜`,QC=`𠔥`,$C=`𠕋`,ew=`𠘺`,tw=`𠠄`,nw=`𠣞`,rw=`𠨬`,iw=`𠭣`,aw=`𡓤`,ow=`𡚨`,sw=`𡛪`,cw=`𡧈`,lw=`𡬘`,uw=`𡴋`,dw=`𡷤`,fw=`𡷦`,pw=`𢆃`,mw=`𢆟`,hw=`𢌱`,gw=`𢌱`,_w=`𢛔`,vw=`𢡄`,yw=`𢡊`,bw=`𢬌`,xw=`𢯱`,Sw=`𣀊`,Cw=`𣊸`,ww=`𣍟`,Tw=`𣎓`,Ew=`𣎜`,Dw=`𣏃`,Ow=`𣏕`,kw=`𣑭`,Aw=`𣚣`,jw=`𣢧`,Mw=`𣪍`,Nw=`𣫺`,Pw=`𣲼`,Fw=`𣴞`,Iw=`𣻑`,Lw=`𣽞`,Rw=`𣾎`,zw=`𤉣`,Bw=`𤋮`,Vw=`𤎫`,Hw=`𤘈`,Uw=`𤜵`,Ww=`𤠔`,Gw=`𤰶`,Kw=`𤲒`,qw=`𤾡`,Jw=`𤾸`,Yw=`𥁄`,Xw=`𥃲`,Zw=`𥃳`,Qw=`𥄙`,$w=`𥄳`,eT=`𥉉`,tT=`𥐝`,nT=`𥘦`,rT=`𥚚`,iT=`𥛅`,aT=`𥥼`,oT=`𥪧`,sT=`𥪧`,cT=`𥮫`,lT=`𥲀`,uT=`𥳐`,dT=`𥾆`,fT=`𦇚`,pT=`𦈨`,mT=`𦉇`,hT=`𦋙`,gT=`𦌾`,_T=`𦓚`,vT=`𦔣`,yT=`𦖨`,bT=`𦞧`,xT=`𦞵`,ST=`𦬼`,CT=`𦰶`,wT=`𦳕`,TT=`𦵫`,ET=`𦼬`,DT=`𦾱`,OT=`𧃒`,kT=`𧏊`,AT=`𧙧`,jT=`𧢮`,MT=`𧥦`,NT=`𧲨`,PT=`𧻓`,FT=`𧼯`,IT=`𨗒`,LT=`𨗭`,RT=`𨜮`,zT=`𨯺`,BT=`𨵷`,VT=`𩅅`,HT=`𩇟`,UT=`𩈚`,WT=`𩐊`,GT=`𩒖`,KT=`𩖶`,qT=`𩬰`,JT=`𪃎`,YT=`𪄅`,XT=`𪈎`,ZT=`𪊑`,QT=`𪎒`,$T=`𪘀`,eE={0:`O`,1:`l`,"֭":`֖`,"֮":`֘`,"֨":`֙`,"֤":`֚`,"᪴":`ۛ`,"⃛":`ۛ`,"ؙ":`̓`,"ࣳ":`̓`,"̓":`̓`,"̕":`̓`,"ُ":`̓`,"ٝ":`̔`,"֜":`́`,"֝":`́`,"ؘ":`́`,"݇":`́`,"́":`́`,"॔":`́`,"َ":`́`,"̀":`̀`,"॓":`̀`,"̌":`̆`,"꙼":`̆`,"٘":`̆`,"ٚ":`̆`,"ͮ":`̆`,"ۨ":`̆̇`,"̐":`̆̇`,"ँ":`̆̇`,"ঁ":`̆̇`,"ઁ":`̆̇`,"ଁ":`̆̇`,"ఀ":`̆̇`,"ಁ":`̆̇`,"ഁ":`̆̇`,"𑒿":`̆̇`,"᳐":`̂`,"̑":`̂`,"ٛ":`̂`,"߮":`̂`,"꛰":`̂`,"֯":`̊`,"۟":`̊`,"៓":`̊`,"゚":`̊`,"ْ":`̊`,"ஂ":`̊`,"ံ":`̊`,"ំ":`̊`,"𑌀":`̊`,"ํ":`̊`,"ໍ":`̊`,"ͦ":`̊`,"ⷪ":`̊`,"࣫":`̈`,"߳":`̈`,"ً":`̋`,"ࣰ":`̋`,"͂":`̃`,"ٓ":`̃`,"ׄ":`̇`,"۬":`̇`,"݀":`̇`,"࣪":`̇`,"݁":`̇`,"͘":`̇`,"ֹ":`̇`,"ֺ":`̇`,"ׂ":`̇`,"ׁ":`̇`,"߭":`̇`,"ं":`̇`,"ਂ":`̇`,"ં":`̇`,"்":`̇`,"̷":`̸`,"᪷":`̨`,"̢":`̨`,"ͅ":`̨`,"᳒":`̄`,"̅":`̄`,"ٙ":`̄`,"߫":`̄`,"꛱":`̄`,"᳚":`̎`,"ٗ":`̒`,"͗":`͐`,"ࣿ":`͐`,"ࣸ":`͐`,"ऀ":`͒`,"᳭":`̖`,"᳜":`̩`,"ٖ":`̩`,"᳕":`̫`,"͇":`̳`,"ࣹ":`͔`,"ࣺ":`͕`,゛:`゙`,゜:`゚`,"̶":`̵`,"〬":`̉`,"ׅ":`̣`,"࣭":`̣`,"᳝":`̣`,"ִ":`̣`,"ٜ":`̣`,"़":`̣`,"়":`̣`,"਼":`̣`,"઼":`̣`,"଼":`̣`,"𑇊":`̣`,"𑓃":`̣`,"𐨺":`̣`,"࣮":`̤`,"᳞":`̤`,"༷":`̥`,"〭":`̥`,"̧":`̦`,"̡":`̦`,"̹":`̦`,"᳙":`̭`,"᳘":`̮`,"॒":`̱`,"̠":`̱`,"ࣱ":`ٌ`,"ࣨ":`ٌ`,"ࣥ":`ٌ`,ﱞ:ae,"ࣲ":`ٍ`,ﱟ:oe,ﳲ:se,ﱠ:ce,ﳳ:le,ﱡ:ue,"ؚ":`ِ`,"̗":`ِ`,ﳴ:de,ﱢ:fe,ﱣ:pe,"ٟ":`ٕ`,"̍":`ٰ`,"݂":`ܼ`,"ਃ":`ঃ`,"ః":`ঃ`,"ಃ":`ঃ`,"ഃ":`ঃ`,"ඃ":`ঃ`,"း":`ঃ`,"𑓁":`ঃ`,"់":`่`,"່":`่`,"້":`้`,"໊":`๊`,"໋":`๋`,"꙯":`⃩`,"\u2028":` `,"\u2029":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `," ":` `,"\xA0":` `," ":` `," ":` `,ߺ:`_`,"﹍":`_`,"﹎":`_`,"﹏":`_`,"‐":`-`,"‑":`-`,"‒":`-`,"–":`-`,"﹘":`-`,"۔":`-`,"⁃":`-`,"˗":`-`,"−":`-`,"➖":`-`,Ⲻ:`-`,"⨩":`-̓`,"⸚":`-̈`,"﬩":`-̇`,"∸":`-̇`,"⨪":`-̣`,"꓾":`-.`,"~":`〜`,"؍":`,`,"٫":`,`,"‚":`,`,"¸":`,`,ꓹ:`,`,"⸲":`،`,"٬":`،`,";":`;`,"⸵":`؛`,"ः":`:`,"ઃ":`:`,":":`:`,"։":`:`,"܃":`:`,"܄":`:`,"᛬":`:`,"︰":`:`,"᠃":`:`,"᠉":`:`,"⁚":`:`,"׃":`:`,"˸":`:`,"꞉":`:`,"∶":`:`,ː:`:`,ꓽ:`:`,"⩴":`::=`,"⧴":`:→`,"!":`!`,ǃ:`!`,ⵑ:`!`,"‼":`!!`,"⁉":`!?`,ʔ:`?`,Ɂ:`?`,ॽ:`?`,Ꭾ:`?`,ꛫ:`?`,"⁈":`?!`,"⁇":`??`,"⸮":`؟`,"𝅭":`.`,"․":`.`,"܁":`.`,"܂":`.`,"꘎":`.`,"𐩐":`.`,"٠":`.`,"۰":`.`,ꓸ:`.`,ꓻ:`.,`,"‥":`..`,ꓺ:`..`,"…":`...`,"꛴":`꛳꛳`,"・":`·`,"・":`·`,"᛫":`·`,"·":`·`,"⸱":`·`,"𐄁":`·`,"•":`·`,"‧":`·`,"∙":`·`,"⋅":`·`,ꞏ:`·`,ᐧ:`·`,"⋯":`···`,ⵈ:me,ᑄ:`·<`,"⋗":`·>`,ᐷ:`·>`,ᑀ:`·>`,ᔯ:`·4`,ᑾ:`·b`,ᒀ:he,ᑺ:`·d`,ᒘ:`·J`,ᒶ:`·L`,ᑶ:`·P`,ᑗ:`·U`,ᐺ:`·V`,ᐼ:ge,ᒮ:_e,ᐎ:ve,ᑙ:ye,ᐌ:be,ᐐ:xe,ᐒ:Se,ᐔ:Ce,ᐗ:we,ᐙ:Te,ᐾ:Ee,ᑂ:De,ᑆ:Oe,ᑛ:ke,ᑔ:Ae,ᑝ:je,ᑟ:Me,ᑡ:Ne,ᑣ:Pe,ᑴ:Fe,ᑸ:Ie,ᑼ:Le,ᒒ:Re,ᒔ:ze,ᒖ:Be,ᒚ:Ve,ᒜ:He,ᒞ:Ue,ᒬ:We,ᒰ:Ge,ᒲ:Ke,ᒴ:qe,ᒸ:Je,ᓉ:Ye,ᣆ:Xe,ᣈ:Ze,ᣊ:Qe,ᣌ:$e,ᓋ:et,ᓍ:tt,ᓜ:nt,ᓞ:rt,ᓠ:it,ᓢ:at,ᓤ:ot,ᓦ:st,ᓨ:ct,ᓶ:lt,ᓸ:ut,ᓺ:dt,ᓼ:ft,ᓾ:pt,ᔀ:mt,ᔂ:ht,ᔗ:gt,ᔙ:_t,ᔛ:vt,ᔝ:yt,ᔟ:bt,ᔡ:xt,ᔣ:St,ᔱ:Ct,ᔳ:wt,ᔵ:Tt,ᔷ:Et,ᔹ:Dt,ᔻ:Ot,ᣎ:kt,ᣏ:At,ᣐ:jt,ᣑ:Mt,ᣒ:Nt,ᣓ:Pt,ᕎ:Ft,ᕛ:It,ᕨ:Lt,ᢳ:Rt,ᢶ:zt,ᢹ:Bt,ᣂ:Vt,"꠰":`।`,"॥":`।।`,"᰼":`᰻᰻`,"။":`၊၊`,"᪩":`᪨᪨`,"᪫":`᪪᪨`,"᭟":`᭞᭞`,"𐩗":`𐩖𐩖`,"𑑌":`𑑋𑑋`,"𑙂":`𑙁𑙁`,"𑱂":`𑱁𑱁`,"᱿":`᱾᱾`,"՝":`'`,"'":`'`,"‘":`'`,"’":`'`,"‛":`'`,"′":`'`,"‵":`'`,"՚":`'`,"׳":`'`,"`":`'`,"`":`'`,"`":`'`,"´":`'`,"΄":`'`,"´":`'`,"᾽":`'`,"᾿":`'`,"῾":`'`,ʹ:`'`,ʹ:`'`,ˈ:`'`,ˊ:`'`,ˋ:`'`,"˴":`'`,ʻ:`'`,ʽ:`'`,ʼ:`'`,ʾ:`'`,ꞌ:`'`,י:`'`,ߴ:`'`,ߵ:`'`,ᑊ:`'`,ᛌ:`'`,"𖽑":`'`,"𖽒":`'`,"᳓":`''`,'"':`''`,""":`''`,"“":`''`,"”":`''`,"‟":`''`,"″":`''`,"‶":`''`,"〃":`''`,"״":`''`,"˝":`''`,ʺ:`''`,"˶":`''`,ˮ:`''`,ײ:`''`,"‴":`'''`,"‷":`'''`,"⁗":`''''`,Ɓ:`'B`,Ɗ:`'D`,ʼn:`'n`,Ƥ:`'P`,Ƭ:`'T`,Ƴ:`'Y`,"[":`(`,"❨":`(`,"❲":`(`,"〔":`(`,"﴾":`(`,"⸨":`((`,"㈠":`(ー)`,"⑵":`(2)`,"⒇":`(2O)`,"⑶":`(3)`,"⑷":`(4)`,"⑸":`(5)`,"⑹":`(6)`,"⑺":`(7)`,"⑻":`(8)`,"⑼":`(9)`,"⒜":`(a)`,"🄐":`(A)`,"⒝":`(b)`,"🄑":`(B)`,"⒞":`(c)`,"🄒":`(C)`,"⒟":`(d)`,"🄓":`(D)`,"⒠":`(e)`,"🄔":`(E)`,"⒡":`(f)`,"🄕":`(F)`,"⒢":`(g)`,"🄖":`(G)`,"⒣":`(h)`,"🄗":`(H)`,"⒤":`(i)`,"⒥":`(j)`,"🄙":`(J)`,"⒦":`(k)`,"🄚":`(K)`,"⑴":`(l)`,"🄘":`(l)`,"⒧":`(l)`,"🄛":`(L)`,"⑿":`(l2)`,"⒀":`(l3)`,"⒁":`(l4)`,"⒂":`(l5)`,"⒃":`(l6)`,"⒄":`(l7)`,"⒅":`(l8)`,"⒆":`(l9)`,"⑾":`(ll)`,"⑽":`(lO)`,"🄜":`(M)`,"⒩":`(n)`,"🄝":`(N)`,"⒪":`(o)`,"🄞":`(O)`,"⒫":`(p)`,"🄟":`(P)`,"⒬":`(q)`,"🄠":`(Q)`,"⒭":`(r)`,"🄡":`(R)`,"⒨":`(rn)`,"⒮":`(s)`,"🄢":`(S)`,"🄪":`(S)`,"⒯":`(t)`,"🄣":`(T)`,"⒰":`(u)`,"🄤":`(U)`,"⒱":`(v)`,"🄥":`(V)`,"⒲":`(w)`,"🄦":`(W)`,"⒳":`(x)`,"🄧":`(X)`,"⒴":`(y)`,"🄨":`(Y)`,"⒵":`(z)`,"🄩":`(Z)`,"㈀":`(ᄀ)`,"㈎":`(가)`,"㈁":`(ᄂ)`,"㈏":`(나)`,"㈂":`(ᄃ)`,"㈐":`(다)`,"㈃":`(ᄅ)`,"㈑":`(라)`,"㈄":`(ᄆ)`,"㈒":`(마)`,"㈅":`(ᄇ)`,"㈓":`(바)`,"㈆":`(ᄉ)`,"㈔":`(사)`,"㈇":`(ᄋ)`,"㈕":`(아)`,"㈝":`(오전)`,"㈞":`(오후)`,"㈈":`(ᄌ)`,"㈖":`(자)`,"㈜":`(주)`,"㈉":`(ᄎ)`,"㈗":`(차)`,"㈊":`(ᄏ)`,"㈘":`(카)`,"㈋":`(ᄐ)`,"㈙":`(타)`,"㈌":`(ᄑ)`,"㈚":`(파)`,"㈍":`(ᄒ)`,"㈛":`(하)`,"㈦":`(七)`,"㈢":`(三)`,"🉁":`(三)`,"㈨":`(九)`,"㈡":`(二)`,"🉂":`(二)`,"㈤":`(五)`,"㈹":`(代)`,"㈽":`(企)`,"㉁":`(休)`,"㈧":`(八)`,"㈥":`(六)`,"㈸":`(労)`,"🉇":`(勝)`,"㈩":`(十)`,"㈿":`(協)`,"㈴":`(名)`,"㈺":`(呼)`,"㈣":`(四)`,"㈯":`(土)`,"㈻":`(学)`,"🉃":`(安)`,"🉅":`(打)`,"🉈":`(敗)`,"㈰":`(日)`,"㈪":`(月)`,"㈲":`(有)`,"㈭":`(木)`,"🉀":`(本)`,"㈱":`(株)`,"㈬":`(水)`,"㈫":`(火)`,"🉄":`(点)`,"㈵":`(特)`,"🉆":`(盗)`,"㈼":`(監)`,"㈳":`(社)`,"㈷":`(祝)`,"㉀":`(祭)`,"㉂":`(自)`,"㉃":`(至)`,"㈶":`(財)`,"㈾":`(資)`,"㈮":`(金)`,"]":`)`,"❩":`)`,"❳":`)`,"〕":`)`,"﴿":`)`,"⸩":`))`,"❴":`{`,"𝄔":`{`,"❵":`}`,"〚":`⟦`,"〛":`⟧`,"⟨":`❬`,"〈":`❬`,"〈":`❬`,"㇛":`❬`,く:`❬`,𡿨:`❬`,"⟩":`❭`,"〉":`❭`,"〉":`❭`,"^":`︿`,"⸿":`¶`,"⁎":`*`,"٭":`*`,"∗":`*`,𐌟:`*`,"᜵":`/`,"⁁":`/`,"∕":`/`,"⁄":`/`,"╱":`/`,"⟋":`/`,"⧸":`/`,"𝈺":`/`,"㇓":`/`,〳:`/`,Ⳇ:`/`,ノ:`/`,丿:`/`,"⼃":`/`,"⧶":`/̄`,"⫽":`//`,"⫻":`///`,"\":`\\`,"﹨":`\\`,"∖":`\\`,"⟍":`\\`,"⧵":`\\`,"⧹":`\\`,"𝈏":`\\`,"𝈻":`\\`,"㇔":`\\`,丶:`\\`,"⼂":`\\`,"⳹":`\\\\`,"⑊":`\\\\`,"⟈":`\\ᑕ`,ꝸ:`&`,"૰":`॰`,"𑂻":`॰`,"𑇇":`॰`,"⚬":`॰`,"𑇛":`꣼`,"៙":`๏`,"៕":`๚`,"៚":`๛`,"༌":`་`,"༎":`།།`,"˄":`^`,ˆ:`^`,"꙾":`ˇ`,"˘":`ˇ`,"‾":`ˉ`,"﹉":`ˉ`,"﹊":`ˉ`,"﹋":`ˉ`,"﹌":`ˉ`,"¯":`ˉ`," ̄":`ˉ`,"▔":`ˉ`,ъ:`ˉb`,ꙑ:Ht,"͵":`ˏ`,"˻":`˪`,"꜖":`˪`,"꜔":`˫`,"。":`˳`,"⸰":`°`,"˚":`°`,"∘":`°`,"○":`°`,"◦":`°`,"⍜":`°̲`,"⍤":`°̈`,"℃":`°C`,"℉":`°F`,"௵":`௳`,"༛":`༚༚`,"༟":`༚༝`,"࿎":`༝༚`,"༞":`༝༝`,"Ⓒ":`©`,"Ⓡ":`®`,"Ⓟ":`℗`,"𝈛":`⅄`,"⯬":`↞`,"⯭":`↟`,"⯮":`↠`,"⯯":`↡`,"↵":`↲`,"⥥":`⇃⇂`,"⥯":`⇃ᛚ`,"𝛛":`∂`,"𝜕":`∂`,"𝝏":`∂`,"𝞉":`∂`,"𝟃":`∂`,"𞣌":`∂`,"𞣍":`∂̵`,ð:Ut,"⌀":`∅`,"𝛁":`∇`,"𝛻":`∇`,"𝜵":`∇`,"𝝯":`∇`,"𝞩":`∇`,𑢨:`∇`,"⍢":`∇̈`,"⍫":`∇̴`,"█":`∎`,"■":`∎`,"⨿":`∐`,"᛭":`+`,"➕":`+`,𐊛:`+`,"⨣":`+̂`,"⨢":`+̊`,"⨤":`+̃`,"∔":`+̇`,"⨥":`+̣`,"⨦":`+̰`,"⨧":`+₂`,"➗":`÷`,"‹":`<`,"❮":`<`,"˂":`<`,"𝈶":`<`,ᐸ:`<`,ᚲ:`<`,"⋖":`<·`,Ⲵ:`<·`,ᑅ:`<·`,"≪":`<<`,"⋘":`<<<`,"᐀":`=`,"⹀":`=`,"゠":`=`,"꓿":`=`,"≚":`=̆`,"≙":`=̂`,"≗":`=̊`,"≐":`=̇`,"≑":`=̣̇`,"⩮":`=⃰`,"⩵":`==`,"⩶":`===`,"≞":`=ͫ`,"›":`>`,"❯":`>`,"˃":`>`,"𝈷":`>`,ᐳ:`>`,𖼿:`>`,ᑁ:`>·`,"⪥":`><`,"≫":`>>`,"⨠":`>>`,"⋙":`>>>`,"⁓":`~`,"˜":`~`,"῀":`~`,"∼":`~`,"⍨":`~̈`,"⸞":`~̇`,"⩪":`~̇`,"⸟":`~̣`,"𞣈":`∠`,"⋀":`∧`,"∯":`∮∮`,"∰":`∮∮∮`,"⸫":`∴`,"⸪":`∵`,"⸬":`∷`,"𑇞":`≈`,"♎":`≏`,"🝞":`≏`,"≣":`≡`,"⨃":`⊍`,"⨄":`⊎`,"𝈸":`⊏`,"𝈹":`⊐`,"⨅":`⊓`,"⨆":`⊔`,"⨂":`⊗`,"⍟":`⊛`,"🝱":`⊠`,"🝕":`⊡`,"◁":`⊲`,"▷":`⊳`,"⍣":`⋆̈`,"︴":`⌇`,"◠":`⌒`,"⨽":`⌙`,"⌥":`⌤`,"⧇":`⌻`,"◎":`⌾`,"⦾":`⌾`,"⧅":`⍂`,"⦰":`⍉`,"⏃":`⍋`,"⏂":`⍎`,"⏁":`⍕`,"⏆":`⍭`,"☸":`⎈`,"︵":`⏜`,"︶":`⏝`,"︷":`⏞`,"︸":`⏟`,"︹":`⏠`,"︺":`⏡`,"▱":`⏥`,"⏼":`⏻`,"︱":`│`,"|":`│`,"┃":`│`,"┏":`┌`,"┣":`├`,"▐":`▌`,"▗":`▖`,"▝":`▘`,"☐":`□`,"■":`▪`,"▸":`▶`,"►":`▶`,"⳩":`☧`,"🜊":`☩`,"🌒":`☽`,"🌙":`☽`,"⏾":`☾`,"🌘":`☾`,"⧙":`⦚`,"🜺":`⧟`,"⨾":`⨟`,"𐆠":`⳨`,"♩":`𝅘𝅥`,"♪":`𝅘𝅥𝅮`,"⓪":`🄍`,"↺":`🄎`,"˙":`ॱ`,ൎ:`ॱ`,"-":`ー`,"—":`ー`,"―":`ー`,"─":`ー`,"━":`ー`,"㇐":`ー`,ꟷ:`ー`,ᅳ:`ー`,ㅡ:`ー`,一:`ー`,"⼀":`ー`,ᆖ:Wt,ힹ:Gt,ힺ:Kt,ힻ:qt,ힼ:Jt,ᆕ:Yt,ᅴ:Xt,ㅢ:Zt,ᆗ:Qt,"🄏":`$⃠`,"₤":`£`,"〒":`₸`,"〶":`₸`,"᭜":`᭐`,"꧆":`꧐`,"𑓑":`১`,"೧":`౧`,ၥ:`၁`,"①":`➀`,"⑩":`➉`,"⏨":`₁₀`,"𝟐":`2`,"𝟚":`2`,"𝟤":`2`,"𝟮":`2`,"𝟸":`2`,"🯲":`2`,Ꝛ:`2`,Ƨ:`2`,Ϩ:`2`,Ꙅ:`2`,ᒿ:`2`,ꛯ:`2`,ꧏ:`٢`,"۲":`٢`,"૨":`२`,"𑓒":`২`,"೨":`౨`,"②":`➁`,ƻ:`2̵`,"🄃":`2,`,"⒉":`2.`,"㏵":`22日`,"㍮":`22点`,"㏶":`23日`,"㍯":`23点`,"㏷":`24日`,"㍰":`24点`,"㏸":`25日`,"㏹":`26日`,"㏺":`27日`,"㏻":`28日`,"㏼":`29日`,"㏴":`2l日`,"㍭":`2l点`,"⒛":`2O.`,"㏳":`2O日`,"㍬":`2O点`,"෩":`෨ා`,"෯":`෨ී`,"㏡":`2日`,"㋁":`2月`,"㍚":`2点`,"𝈆":`3`,"𝟑":`3`,"𝟛":`3`,"𝟥":`3`,"𝟯":`3`,"𝟹":`3`,"🯳":`3`,Ɜ:`3`,Ȝ:`3`,Ʒ:`3`,Ꝫ:`3`,Ⳍ:`3`,З:`3`,Ӡ:`3`,𖼻:`3`,𑣊:`3`,"۳":`٣`,"𞣉":`٣`,"૩":`३`,"③":`➂`,Ҙ:`3̦`,"🄄":`3,`,"⒊":`3.`,"㏾":`3l日`,"㏽":`3O日`,"㏢":`3日`,"㋂":`3月`,"㍛":`3点`,"𝟒":`4`,"𝟜":`4`,"𝟦":`4`,"𝟰":`4`,"𝟺":`4`,"🯴":`4`,Ꮞ:`4`,𑢯:`4`,"۴":`٤`,"૪":`४`,"④":`➃`,"🄅":`4,`,"⒋":`4.`,ᔰ:`4·`,"㏣":`4日`,"㋃":`4月`,"㍜":`4点`,"𝟓":`5`,"𝟝":`5`,"𝟧":`5`,"𝟱":`5`,"𝟻":`5`,"🯵":`5`,Ƽ:`5`,𑢻:`5`,"⑤":`➄`,"🄆":`5,`,"⒌":`5.`,"㏤":`5日`,"㋄":`5月`,"㍝":`5点`,"𝟔":`6`,"𝟞":`6`,"𝟨":`6`,"𝟲":`6`,"𝟼":`6`,"🯶":`6`,Ⳓ:`6`,б:`6`,Ꮾ:`6`,𑣕:`6`,"۶":`٦`,"𑓖":`৬`,"⑥":`➅`,"🄇":`6,`,"⒍":`6.`,"㏥":`6日`,"㋅":`6月`,"㍞":`6点`,"𝈒":`7`,"𝟕":`7`,"𝟟":`7`,"𝟩":`7`,"𝟳":`7`,"𝟽":`7`,"🯷":`7`,𐓒:`7`,𑣆:`7`,"⑦":`➆`,"🄈":`7,`,"⒎":`7.`,"㏦":`7日`,"㋆":`7月`,"㍟":`7点`,"ଃ":`8`,"৪":`8`,"੪":`8`,"𞣋":`8`,"𝟖":`8`,"𝟠":`8`,"𝟪":`8`,"𝟴":`8`,"𝟾":`8`,"🯸":`8`,ȣ:`8`,Ȣ:`8`,𐌚:`8`,"૮":`८`,"⑧":`➇`,"🄉":`8,`,"⒏":`8.`,"㏧":`8日`,"㋇":`8月`,"㍠":`8点`,"੧":`9`,"୨":`9`,"৭":`9`,"൭":`9`,"𝟗":`9`,"𝟡":`9`,"𝟫":`9`,"𝟵":`9`,"𝟿":`9`,"🯹":`9`,Ꝯ:`9`,Ⳋ:`9`,𑣌:`9`,𑢬:`9`,𑣖:`9`,"१":`٩`,"𑣤":`٩`,"۹":`٩`,"೯":`౯`,"⑨":`➈`,"🄊":`9,`,"⒐":`9.`,"㏨":`9日`,"㋈":`9月`,"㍡":`9点`,"⍺":`a`,a:`a`,𝐚:`a`,𝑎:`a`,𝒂:`a`,𝒶:`a`,𝓪:`a`,𝔞:`a`,𝕒:`a`,𝖆:`a`,𝖺:`a`,𝗮:`a`,𝘢:`a`,𝙖:`a`,𝚊:`a`,ɑ:`a`,α:`a`,𝛂:`a`,𝛼:`a`,𝜶:`a`,𝝰:`a`,𝞪:`a`,а:`a`,"ⷶ":`ͣ`,A:`A`,𝐀:`A`,𝐴:`A`,𝑨:`A`,𝒜:`A`,𝓐:`A`,𝔄:`A`,𝔸:`A`,𝕬:`A`,𝖠:`A`,𝗔:`A`,𝘈:`A`,𝘼:`A`,𝙰:`A`,Α:`A`,𝚨:`A`,𝛢:`A`,𝜜:`A`,𝝖:`A`,𝞐:`A`,А:`A`,Ꭺ:`A`,ᗅ:`A`,ꓮ:`A`,𖽀:`A`,𐊠:`A`,"⍶":`a̲`,ǎ:`ă`,Ǎ:`Ă`,ȧ:`å`,Ȧ:`Å`,ẚ:`ả`,"℀":`a/c`,"℁":`a/s`,ꜳ:`aa`,Ꜳ:`AA`,æ:`ae`,ӕ:`ae`,Æ:`AE`,Ӕ:`AE`,ꜵ:`ao`,Ꜵ:`AO`,"🜇":`AR`,ꜷ:`au`,Ꜷ:`AU`,ꜹ:`av`,ꜻ:`av`,Ꜹ:`AV`,Ꜻ:`AV`,ꜽ:`ay`,Ꜽ:`AY`,ꭺ:`ᴀ`,"∀":`Ɐ`,"𝈗":`Ɐ`,ᗄ:`Ɐ`,ꓯ:`Ɐ`,𐐟:`Ɒ`,𝐛:`b`,𝑏:`b`,𝒃:`b`,𝒷:`b`,𝓫:`b`,𝔟:`b`,𝕓:`b`,𝖇:`b`,𝖻:`b`,𝗯:`b`,𝘣:`b`,𝙗:`b`,𝚋:`b`,Ƅ:`b`,Ь:`b`,Ꮟ:`b`,ᑲ:`b`,ᖯ:`b`,B:`B`,ℬ:`B`,𝐁:`B`,𝐵:`B`,𝑩:`B`,𝓑:`B`,𝔅:`B`,𝔹:`B`,𝕭:`B`,𝖡:`B`,𝗕:`B`,𝘉:`B`,𝘽:`B`,𝙱:`B`,Ꞵ:`B`,Β:`B`,𝚩:`B`,𝛣:`B`,𝜝:`B`,𝝗:`B`,𝞑:`B`,В:`B`,Ᏼ:`B`,ᗷ:`B`,ꓐ:`B`,𐊂:`B`,𐊡:`B`,𐌁:`B`,ɓ:`b̔`,ᑳ:`ḃ`,ƃ:`b̄`,Ƃ:`b̄`,Б:`b̄`,ƀ:`b̵`,ҍ:`b̵`,Ҍ:`b̵`,ѣ:`b̵`,Ѣ:`b̵`,ᑿ:`b·`,ᒁ:$t,ᒈ:`b'`,Ы:`bl`,в:`ʙ`,ᏼ:`ʙ`,c:`c`,ⅽ:`c`,𝐜:`c`,𝑐:`c`,𝒄:`c`,𝒸:`c`,𝓬:`c`,𝔠:`c`,𝕔:`c`,𝖈:`c`,𝖼:`c`,𝗰:`c`,𝘤:`c`,𝙘:`c`,𝚌:`c`,ᴄ:`c`,ϲ:`c`,ⲥ:`c`,с:`c`,ꮯ:`c`,𐐽:`c`,"ⷭ":`ͨ`,"🝌":`C`,"𑣲":`C`,"𑣩":`C`,C:`C`,Ⅽ:`C`,ℂ:`C`,ℭ:`C`,𝐂:`C`,𝐶:`C`,𝑪:`C`,𝒞:`C`,𝓒:`C`,𝕮:`C`,𝖢:`C`,𝗖:`C`,𝘊:`C`,𝘾:`C`,𝙲:`C`,Ϲ:`C`,Ⲥ:`C`,С:`C`,Ꮯ:`C`,ꓚ:`C`,𐊢:`C`,𐌂:`C`,𐐕:`C`,𐔜:`C`,"¢":`c̸`,ȼ:`c̸`,"₡":`C⃫`,"🅮":`C⃠`,ç:`c̦`,ҫ:`c̦`,Ç:`C̦`,Ҫ:`C̦`,Ƈ:`C'`,"℅":`c/o`,"℆":`c/u`,"🅭":`㏄ ⃝`,"⋴":`ꞓ`,ɛ:`ꞓ`,ε:`ꞓ`,ϵ:`ꞓ`,𝛆:`ꞓ`,𝛜:`ꞓ`,𝜀:`ꞓ`,𝜖:`ꞓ`,𝜺:`ꞓ`,𝝐:`ꞓ`,𝝴:`ꞓ`,𝞊:`ꞓ`,𝞮:`ꞓ`,𝟄:`ꞓ`,ⲉ:`ꞓ`,є:`ꞓ`,ԑ:`ꞓ`,ꮛ:`ꞓ`,𑣎:`ꞓ`,𐐩:`ꞓ`,"€":`Ꞓ`,Ⲉ:`Ꞓ`,Є:`Ꞓ`,"⍷":`ꞓ̲`,ͽ:`ꜿ`,Ͽ:`Ꜿ`,ⅾ:`d`,ⅆ:`d`,𝐝:`d`,𝑑:`d`,𝒅:`d`,𝒹:`d`,𝓭:`d`,𝔡:`d`,𝕕:`d`,𝖉:`d`,𝖽:`d`,𝗱:`d`,𝘥:`d`,𝙙:`d`,𝚍:`d`,ԁ:`d`,Ꮷ:`d`,ᑯ:`d`,ꓒ:`d`,Ⅾ:`D`,ⅅ:`D`,𝐃:`D`,𝐷:`D`,𝑫:`D`,𝒟:`D`,𝓓:`D`,𝔇:`D`,𝔻:`D`,𝕯:`D`,𝖣:`D`,𝗗:`D`,𝘋:`D`,𝘿:`D`,𝙳:`D`,Ꭰ:`D`,ᗞ:`D`,ᗪ:`D`,ꓓ:`D`,ɗ:`d̔`,ɖ:`d̨`,ƌ:`d̄`,đ:`d̵`,Đ:`D̵`,Ð:`D̵`,Ɖ:`D̵`,"₫":`ḏ̵`,ꝺ:`Ꝺ`,ᑻ:`d·`,ᒇ:`d'`,ʤ:`dȝ`,dz:`dz`,ʣ:`dz`,Dz:`Dz`,DZ:`DZ`,dž:`dž`,Dž:`Dž`,DŽ:`DŽ`,ʥ:`dʑ`,ꭰ:`ᴅ`,"⸹":`ẟ`,δ:`ẟ`,𝛅:`ẟ`,𝛿:`ẟ`,𝜹:`ẟ`,𝝳:`ẟ`,𝞭:`ẟ`,ծ:`ẟ`,ᕷ:`ẟ`,℮:`e`,e:`e`,ℯ:`e`,ⅇ:`e`,𝐞:`e`,𝑒:`e`,𝒆:`e`,𝓮:`e`,𝔢:`e`,𝕖:`e`,𝖊:`e`,𝖾:`e`,𝗲:`e`,𝘦:`e`,𝙚:`e`,𝚎:`e`,ꬲ:`e`,е:`e`,ҽ:`e`,"ⷷ":`ͤ`,"⋿":`E`,E:`E`,ℰ:`E`,𝐄:`E`,𝐸:`E`,𝑬:`E`,𝓔:`E`,𝔈:`E`,𝔼:`E`,𝕰:`E`,𝖤:`E`,𝗘:`E`,𝘌:`E`,𝙀:`E`,𝙴:`E`,Ε:`E`,𝚬:`E`,𝛦:`E`,𝜠:`E`,𝝚:`E`,𝞔:`E`,Е:`E`,ⴹ:`E`,Ꭼ:`E`,ꓰ:`E`,𑢦:`E`,𑢮:`E`,𐊆:`E`,ě:`ĕ`,Ě:`Ĕ`,ɇ:`e̸`,Ɇ:`E̸`,ҿ:`ę`,ꭼ:`ᴇ`,ə:`ǝ`,ә:`ǝ`,"∃":`Ǝ`,ⴺ:`Ǝ`,ꓱ:`Ǝ`,ɚ:en,ᴔ:`ǝo`,ꭁ:tn,ꭂ:nn,Ә:`Ə`,"𝈡":`Ɛ`,ℇ:`Ɛ`,Ԑ:`Ɛ`,Ꮛ:`Ɛ`,𖼭:`Ɛ`,𐐁:`Ɛ`,ᶟ:`ᵋ`,ᴈ:`ɜ`,з:`ɜ`,ҙ:rn,𐑂:`ɞ`,ꞝ:`ʚ`,𐐪:`ʚ`,𝐟:`f`,𝑓:`f`,𝒇:`f`,𝒻:`f`,𝓯:`f`,𝔣:`f`,𝕗:`f`,𝖋:`f`,𝖿:`f`,𝗳:`f`,𝘧:`f`,𝙛:`f`,𝚏:`f`,ꬵ:`f`,ꞙ:`f`,ſ:`f`,ẝ:`f`,ք:`f`,"𝈓":`F`,ℱ:`F`,𝐅:`F`,𝐹:`F`,𝑭:`F`,𝓕:`F`,𝔉:`F`,𝔽:`F`,𝕱:`F`,𝖥:`F`,𝗙:`F`,𝘍:`F`,𝙁:`F`,𝙵:`F`,Ꞙ:`F`,Ϝ:`F`,𝟊:`F`,ᖴ:`F`,ꓝ:`F`,𑣂:`F`,𑢢:`F`,𐊇:`F`,𐊥:`F`,𐔥:`F`,ƒ:`f̦`,Ƒ:`F̦`,ᵮ:`f̴`,"℻":`FAX`,ff:`ff`,ffi:`ffi`,ffl:`ffl`,fi:`fi`,fl:`fl`,ʩ:`fŋ`,ᖵ:`Ⅎ`,ꓞ:`Ⅎ`,"𝈰":`ꟻ`,ᖷ:`ꟻ`,g:`g`,ℊ:`g`,𝐠:`g`,𝑔:`g`,𝒈:`g`,𝓰:`g`,𝔤:`g`,𝕘:`g`,𝖌:`g`,𝗀:`g`,𝗴:`g`,𝘨:`g`,𝙜:`g`,𝚐:`g`,ɡ:`g`,ᶃ:`g`,ƍ:`g`,ց:`g`,𝐆:`G`,𝐺:`G`,𝑮:`G`,𝒢:`G`,𝓖:`G`,𝔊:`G`,𝔾:`G`,𝕲:`G`,𝖦:`G`,𝗚:`G`,𝘎:`G`,𝙂:`G`,𝙶:`G`,Ԍ:`G`,Ꮐ:`G`,Ᏻ:`G`,ꓖ:`G`,ᶢ:`ᵍ`,ɠ:`g̔`,ǧ:`ğ`,Ǧ:`Ğ`,ǵ:`ģ`,ǥ:`g̵`,Ǥ:`G̵`,Ɠ:`G'`,ԍ:`ɢ`,ꮐ:`ɢ`,ᏻ:`ɢ`,h:`h`,ℎ:`h`,𝐡:`h`,𝒉:`h`,𝒽:`h`,𝓱:`h`,𝔥:`h`,𝕙:`h`,𝖍:`h`,𝗁:`h`,𝗵:`h`,𝘩:`h`,𝙝:`h`,𝚑:`h`,һ:`h`,հ:`h`,Ꮒ:`h`,H:`H`,ℋ:`H`,ℌ:`H`,ℍ:`H`,𝐇:`H`,𝐻:`H`,𝑯:`H`,𝓗:`H`,𝕳:`H`,𝖧:`H`,𝗛:`H`,𝘏:`H`,𝙃:`H`,𝙷:`H`,Η:`H`,𝚮:`H`,𝛨:`H`,𝜢:`H`,𝝜:`H`,𝞖:`H`,Ⲏ:`H`,Н:`H`,Ꮋ:`H`,ᕼ:`H`,ꓧ:`H`,𐋏:`H`,ᵸ:`ᴴ`,ɦ:`h̔`,ꚕ:`h̔`,Ᏺ:`h̔`,Ⱨ:`H̩`,Ң:`H̩`,ħ:`h̵`,ℏ:`h̵`,ћ:`h̵`,Ħ:`H̵`,Ӊ:`H̦`,Ӈ:`H̦`,н:`ʜ`,ꮋ:`ʜ`,ң:an,ӊ:on,ӈ:sn,Ԋ:`Ƕ`,ꮀ:`ⱶ`,Ͱ:`Ⱶ`,Ꭸ:`Ⱶ`,Ꮀ:`Ⱶ`,ꚱ:`Ⱶ`,ꞕ:`ꜧ`,"˛":`i`,"⍳":`i`,i:`i`,ⅰ:`i`,ℹ:`i`,ⅈ:`i`,𝐢:`i`,𝑖:`i`,𝒊:`i`,𝒾:`i`,𝓲:`i`,𝔦:`i`,𝕚:`i`,𝖎:`i`,𝗂:`i`,𝗶:`i`,𝘪:`i`,𝙞:`i`,𝚒:`i`,ı:`i`,𝚤:`i`,ɪ:`i`,ɩ:`i`,ι:`i`,ι:`i`,ͺ:`i`,𝛊:`i`,𝜄:`i`,𝜾:`i`,𝝸:`i`,𝞲:`i`,і:`i`,ꙇ:`i`,ӏ:`i`,ꭵ:`i`,Ꭵ:`i`,𑣃:`i`,"ⓛ":`Ⓘ`,"⍸":`i̲`,ǐ:`ĭ`,Ǐ:`Ĭ`,ɨ:`i̵`,ᵻ:`i̵`,ᵼ:`i̵`,ⅱ:`ii`,ⅲ:`iii`,ij:`ij`,ⅳ:`iv`,ⅸ:`ix`,j:`j`,ⅉ:`j`,𝐣:`j`,𝑗:`j`,𝒋:`j`,𝒿:`j`,𝓳:`j`,𝔧:`j`,𝕛:`j`,𝖏:`j`,𝗃:`j`,𝗷:`j`,𝘫:`j`,𝙟:`j`,𝚓:`j`,ϳ:`j`,ј:`j`,J:`J`,𝐉:`J`,𝐽:`J`,𝑱:`J`,𝒥:`J`,𝓙:`J`,𝔍:`J`,𝕁:`J`,𝕵:`J`,𝖩:`J`,𝗝:`J`,𝘑:`J`,𝙅:`J`,𝙹:`J`,Ʝ:`J`,Ϳ:`J`,Ј:`J`,Ꭻ:`J`,ᒍ:`J`,ꓙ:`J`,ɉ:`j̵`,Ɉ:`J̵`,ᒙ:`J·`,𝚥:`ȷ`,յ:`ȷ`,ꭻ:`ᴊ`,𝐤:`k`,𝑘:`k`,𝒌:`k`,𝓀:`k`,𝓴:`k`,𝔨:`k`,𝕜:`k`,𝖐:`k`,𝗄:`k`,𝗸:`k`,𝘬:`k`,𝙠:`k`,𝚔:`k`,K:`K`,K:`K`,𝐊:`K`,𝐾:`K`,𝑲:`K`,𝒦:`K`,𝓚:`K`,𝔎:`K`,𝕂:`K`,𝕶:`K`,𝖪:`K`,𝗞:`K`,𝘒:`K`,𝙆:`K`,𝙺:`K`,Κ:`K`,𝚱:`K`,𝛫:`K`,𝜥:`K`,𝝟:`K`,𝞙:`K`,Ⲕ:`K`,К:`K`,Ꮶ:`K`,ᛕ:`K`,ꓗ:`K`,𐔘:`K`,ƙ:`k̔`,Ⱪ:`K̩`,Қ:`K̩`,"₭":`K̵`,Ꝁ:`K̵`,Ҟ:`K̵`,Ƙ:`K'`,"׀":`l`,"|":`l`,"∣":`l`,"⏽":`l`,"│":`l`,"١":`l`,"۱":`l`,"𐌠":`l`,"𞣇":`l`,"𝟏":`l`,"𝟙":`l`,"𝟣":`l`,"𝟭":`l`,"𝟷":`l`,"🯱":`l`,I:`l`,I:`l`,Ⅰ:`l`,ℐ:`l`,ℑ:`l`,𝐈:`l`,𝐼:`l`,𝑰:`l`,𝓘:`l`,𝕀:`l`,𝕴:`l`,𝖨:`l`,𝗜:`l`,𝘐:`l`,𝙄:`l`,𝙸:`l`,Ɩ:`l`,l:`l`,ⅼ:`l`,ℓ:`l`,𝐥:`l`,𝑙:`l`,𝒍:`l`,𝓁:`l`,𝓵:`l`,𝔩:`l`,𝕝:`l`,𝖑:`l`,𝗅:`l`,𝗹:`l`,𝘭:`l`,𝙡:`l`,𝚕:`l`,ǀ:`l`,Ι:`l`,𝚰:`l`,𝛪:`l`,𝜤:`l`,𝝞:`l`,𝞘:`l`,Ⲓ:`l`,І:`l`,Ӏ:`l`,ו:`l`,ן:`l`,ا:`l`,𞸀:`l`,𞺀:`l`,ﺎ:`l`,ﺍ:`l`,ߊ:`l`,ⵏ:`l`,ᛁ:`l`,ꓲ:`l`,𖼨:`l`,𐊊:`l`,𐌉:`l`,"𝈪":`L`,Ⅼ:`L`,ℒ:`L`,𝐋:`L`,𝐿:`L`,𝑳:`L`,𝓛:`L`,𝔏:`L`,𝕃:`L`,𝕷:`L`,𝖫:`L`,𝗟:`L`,𝘓:`L`,𝙇:`L`,𝙻:`L`,Ⳑ:`L`,Ꮮ:`L`,ᒪ:`L`,ꓡ:`L`,𖼖:`L`,𑢣:`L`,𑢲:`L`,𐐛:`L`,𐔦:`L`,ﴼ:`l̋`,ﴽ:`l̋`,ł:`l̸`,Ł:`L̸`,ɭ:`l̨`,Ɨ:`l̵`,ƚ:`l̵`,ɫ:`l̴`,إ:`lٕ`,ﺈ:`lٕ`,ﺇ:`lٕ`,ٳ:`lٕ`,ŀ:`l·`,Ŀ:`l·`,ᒷ:`l·`,"🄂":`l,`,"⒈":`l.`,ױ:`l'`,"⒓":`l2.`,"㏫":`l2日`,"㋋":`l2月`,"㍤":`l2点`,"⒔":`l3.`,"㏬":`l3日`,"㍥":`l3点`,"⒕":`l4.`,"㏭":`l4日`,"㍦":`l4点`,"⒖":`l5.`,"㏮":`l5日`,"㍧":`l5点`,"⒗":`l6.`,"㏯":`l6日`,"㍨":`l6点`,"⒘":`l7.`,"㏰":`l7日`,"㍩":`l7点`,"⒙":`l8.`,"㏱":`l8日`,"㍪":`l8点`,"⒚":`l9.`,"㏲":`l9日`,"㍫":`l9点`,lj:`lj`,IJ:`lJ`,Lj:`Lj`,LJ:`LJ`,"‖":`ll`,"∥":`ll`,Ⅱ:`ll`,ǁ:`ll`,װ:`ll`,"𐆙":`l̵l̵`,"⒒":`ll.`,Ⅲ:`lll`,"𐆘":`l̵l̵S̵`,"㏪":`ll日`,"㋊":`ll月`,"㍣":`ll点`,Ю:`lO`,"⒑":`lO.`,"㏩":`lO日`,"㋉":`lO月`,"㍢":`lO点`,ʪ:`ls`,"₶":`lt`,Ⅳ:`lV`,Ⅸ:`lX`,ɮ:`lȝ`,ʫ:`lz`,أ:`lٴ`,ﺄ:`lٴ`,ﺃ:`lٴ`,ٲ:`lٴ`,ٵ:`lٴ`,ﷳ:cn,ﷲ:ln,"㏠":`l日`,"㋀":`l月`,"㍙":`l点`,ⳑ:`ʟ`,ꮮ:`ʟ`,𐑃:`ʟ`,M:`M`,Ⅿ:`M`,ℳ:`M`,𝐌:`M`,𝑀:`M`,𝑴:`M`,𝓜:`M`,𝔐:`M`,𝕄:`M`,𝕸:`M`,𝖬:`M`,𝗠:`M`,𝘔:`M`,𝙈:`M`,𝙼:`M`,Μ:`M`,𝚳:`M`,𝛭:`M`,𝜧:`M`,𝝡:`M`,𝞛:`M`,Ϻ:`M`,Ⲙ:`M`,М:`M`,Ꮇ:`M`,ᗰ:`M`,ᛖ:`M`,ꓟ:`M`,𐊰:`M`,𐌑:`M`,Ӎ:`M̦`,"🝫":`MB`,"ⷨ":`ᷟ`,𝐧:`n`,𝑛:`n`,𝒏:`n`,𝓃:`n`,𝓷:`n`,𝔫:`n`,𝕟:`n`,𝖓:`n`,𝗇:`n`,𝗻:`n`,𝘯:`n`,𝙣:`n`,𝚗:`n`,ո:`n`,ռ:`n`,N:`N`,ℕ:`N`,𝐍:`N`,𝑁:`N`,𝑵:`N`,𝒩:`N`,𝓝:`N`,𝔑:`N`,𝕹:`N`,𝖭:`N`,𝗡:`N`,𝘕:`N`,𝙉:`N`,𝙽:`N`,Ν:`N`,𝚴:`N`,𝛮:`N`,𝜨:`N`,𝝢:`N`,𝞜:`N`,Ⲛ:`N`,ꓠ:`N`,𐔓:`N`,"𐆎":`N̊`,ɳ:`n̨`,ƞ:`n̩`,η:`n̩`,𝛈:`n̩`,𝜂:`n̩`,𝜼:`n̩`,𝝶:`n̩`,𝞰:`n̩`,Ɲ:`N̦`,ᵰ:`n̴`,nj:`nj`,Nj:`Nj`,NJ:`NJ`,"№":`No`,ͷ:`ᴎ`,и:`ᴎ`,𐑍:`ᴎ`,ņ:`ɲ`,"ం":`o`,"ಂ":`o`,"ം":`o`,"ං":`o`,"०":`o`,"੦":`o`,"૦":`o`,"௦":`o`,"౦":`o`,"೦":`o`,"൦":`o`,"๐":`o`,"໐":`o`,"၀":`o`,"٥":`o`,"۵":`o`,o:`o`,ℴ:`o`,𝐨:`o`,𝑜:`o`,𝒐:`o`,𝓸:`o`,𝔬:`o`,𝕠:`o`,𝖔:`o`,𝗈:`o`,𝗼:`o`,𝘰:`o`,𝙤:`o`,𝚘:`o`,ᴏ:`o`,ᴑ:`o`,ꬽ:`o`,ο:`o`,𝛐:`o`,𝜊:`o`,𝝄:`o`,𝝾:`o`,𝞸:`o`,σ:`o`,𝛔:`o`,𝜎:`o`,𝝈:`o`,𝞂:`o`,𝞼:`o`,ⲟ:`o`,о:`o`,ჿ:`o`,օ:`o`,ס:`o`,ه:`o`,𞸤:`o`,𞹤:`o`,𞺄:`o`,ﻫ:`o`,ﻬ:`o`,ﻪ:`o`,ﻩ:`o`,ھ:`o`,ﮬ:`o`,ﮭ:`o`,ﮫ:`o`,ﮪ:`o`,ہ:`o`,ﮨ:`o`,ﮩ:`o`,ﮧ:`o`,ﮦ:`o`,ە:`o`,ഠ:`o`,ဝ:`o`,𐓪:`o`,𑣈:`o`,𑣗:`o`,𐐬:`o`,"߀":`O`,"০":`O`,"୦":`O`,〇:`O`,"𑓐":`O`,"𑣠":`O`,"𝟎":`O`,"𝟘":`O`,"𝟢":`O`,"𝟬":`O`,"𝟶":`O`,"🯰":`O`,O:`O`,𝐎:`O`,𝑂:`O`,𝑶:`O`,𝒪:`O`,𝓞:`O`,𝔒:`O`,𝕆:`O`,𝕺:`O`,𝖮:`O`,𝗢:`O`,𝘖:`O`,𝙊:`O`,𝙾:`O`,Ο:`O`,𝚶:`O`,𝛰:`O`,𝜪:`O`,𝝤:`O`,𝞞:`O`,Ⲟ:`O`,О:`O`,Օ:`O`,ⵔ:`O`,ዐ:`O`,ଠ:`O`,𐓂:`O`,ꓳ:`O`,𑢵:`O`,𐊒:`O`,𐊫:`O`,𐐄:`O`,𐔖:`O`,"⁰":`º`,ᵒ:`º`,ǒ:`ŏ`,Ǒ:`Ŏ`,ۿ:`ô`,Ő:`Ö`,ø:`o̸`,ꬾ:`o̸`,Ø:`O̸`,ⵁ:`O̸`,Ǿ:un,ɵ:`o̵`,ꝋ:`o̵`,ө:`o̵`,ѳ:`o̵`,ꮎ:`o̵`,ꮻ:`o̵`,"⊖":`O̵`,"⊝":`O̵`,"⍬":`O̵`,"𝈚":`O̵`,"🜔":`O̵`,Ɵ:`O̵`,Ꝋ:`O̵`,θ:`O̵`,ϑ:`O̵`,𝛉:`O̵`,𝛝:`O̵`,𝜃:`O̵`,𝜗:`O̵`,𝜽:`O̵`,𝝑:`O̵`,𝝷:`O̵`,𝞋:`O̵`,𝞱:`O̵`,𝟅:`O̵`,Θ:`O̵`,ϴ:`O̵`,𝚯:`O̵`,𝚹:`O̵`,𝛩:`O̵`,𝛳:`O̵`,𝜣:`O̵`,𝜭:`O̵`,𝝝:`O̵`,𝝧:`O̵`,𝞗:`O̵`,𝞡:`O̵`,Ө:`O̵`,Ѳ:`O̵`,ⴱ:`O̵`,Ꮎ:`O̵`,Ꮻ:`O̵`,ꭴ:`ơ`,ﳙ:`oٰ`,"🄁":`O,`,"🄀":`O.`,ơ:`o'`,Ơ:`O'`,Ꭴ:`O'`,"%":`º/₀`,"٪":`º/₀`,"⁒":`º/₀`,"‰":`º/₀₀`,"؉":`º/₀₀`,"‱":`º/₀₀₀`,"؊":`º/₀₀₀`,œ:`oe`,Œ:`OE`,ɶ:dn,"∞":`oo`,ꝏ:`oo`,ꚙ:`oo`,Ꝏ:`OO`,Ꚙ:`OO`,ﳗ:`oج`,ﱑ:`oج`,ﳘ:`oم`,ﱒ:`oم`,ﶓ:fn,ﶔ:pn,ﱓ:`oى`,ﱔ:`oى`,ൟ:mn,တ:hn,"㍘":`O点`,ↄ:`ɔ`,ᴐ:`ɔ`,ͻ:`ɔ`,𐑋:`ɔ`,Ↄ:`Ɔ`,Ͻ:`Ɔ`,ꓛ:`Ɔ`,𐐣:`Ɔ`,ꬿ:gn,ꭢ:`ɔe`,𐐿:`ɷ`,"⍴":`p`,p:`p`,𝐩:`p`,𝑝:`p`,𝒑:`p`,𝓅:`p`,𝓹:`p`,𝔭:`p`,𝕡:`p`,𝖕:`p`,𝗉:`p`,𝗽:`p`,𝘱:`p`,𝙥:`p`,𝚙:`p`,ρ:`p`,ϱ:`p`,𝛒:`p`,𝛠:`p`,𝜌:`p`,𝜚:`p`,𝝆:`p`,𝝔:`p`,𝞀:`p`,𝞎:`p`,𝞺:`p`,𝟈:`p`,ⲣ:`p`,р:`p`,P:`P`,ℙ:`P`,𝐏:`P`,𝑃:`P`,𝑷:`P`,𝒫:`P`,𝓟:`P`,𝔓:`P`,𝕻:`P`,𝖯:`P`,𝗣:`P`,𝘗:`P`,𝙋:`P`,𝙿:`P`,Ρ:`P`,𝚸:`P`,𝛲:`P`,𝜬:`P`,𝝦:`P`,𝞠:`P`,Ⲣ:`P`,Р:`P`,Ꮲ:`P`,ᑭ:`P`,ꓑ:`P`,𐊕:`P`,ƥ:`p̔`,ᵽ:`p̵`,ᑷ:`p·`,ᒆ:`P'`,ᴩ:`ᴘ`,ꮲ:`ᴘ`,φ:`ɸ`,ϕ:`ɸ`,𝛗:`ɸ`,𝛟:`ɸ`,𝜑:`ɸ`,𝜙:`ɸ`,𝝋:`ɸ`,𝝓:`ɸ`,𝞅:`ɸ`,𝞍:`ɸ`,𝞿:`ɸ`,𝟇:`ɸ`,ⲫ:`ɸ`,ф:`ɸ`,𝐪:`q`,𝑞:`q`,𝒒:`q`,𝓆:`q`,𝓺:`q`,𝔮:`q`,𝕢:`q`,𝖖:`q`,𝗊:`q`,𝗾:`q`,𝘲:`q`,𝙦:`q`,𝚚:`q`,ԛ:`q`,գ:`q`,զ:`q`,ℚ:`Q`,𝐐:`Q`,𝑄:`Q`,𝑸:`Q`,𝒬:`Q`,𝓠:`Q`,𝔔:`Q`,𝕼:`Q`,𝖰:`Q`,𝗤:`Q`,𝘘:`Q`,𝙌:`Q`,𝚀:`Q`,ⵕ:`Q`,ʠ:`q̔`,"🜀":`QE`,ᶐ:`ɋ`,ᴋ:`ĸ`,κ:`ĸ`,ϰ:`ĸ`,𝛋:`ĸ`,𝛞:`ĸ`,𝜅:`ĸ`,𝜘:`ĸ`,𝜿:`ĸ`,𝝒:`ĸ`,𝝹:`ĸ`,𝞌:`ĸ`,𝞳:`ĸ`,𝟆:`ĸ`,ⲕ:`ĸ`,к:`ĸ`,ꮶ:`ĸ`,қ:_n,ҟ:vn,𝐫:`r`,𝑟:`r`,𝒓:`r`,𝓇:`r`,𝓻:`r`,𝔯:`r`,𝕣:`r`,𝖗:`r`,𝗋:`r`,𝗿:`r`,𝘳:`r`,𝙧:`r`,𝚛:`r`,ꭇ:`r`,ꭈ:`r`,ᴦ:`r`,ⲅ:`r`,г:`r`,ꮁ:`r`,"𝈖":`R`,ℛ:`R`,ℜ:`R`,ℝ:`R`,𝐑:`R`,𝑅:`R`,𝑹:`R`,𝓡:`R`,𝕽:`R`,𝖱:`R`,𝗥:`R`,𝘙:`R`,𝙍:`R`,𝚁:`R`,Ʀ:`R`,Ꭱ:`R`,Ꮢ:`R`,𐒴:`R`,ᖇ:`R`,ꓣ:`R`,𖼵:`R`,ɽ:`r̨`,ɼ:`r̩`,ɍ:`r̵`,ғ:`r̵`,ᵲ:`r̴`,ґ:`r'`,"𑣣":`rn`,m:`rn`,ⅿ:`rn`,𝐦:`rn`,𝑚:`rn`,𝒎:`rn`,𝓂:`rn`,𝓶:`rn`,𝔪:`rn`,𝕞:`rn`,𝖒:`rn`,𝗆:`rn`,𝗺:`rn`,𝘮:`rn`,𝙢:`rn`,𝚖:`rn`,𑜀:`rn`,"₥":`rn̸`,ɱ:yn,ᵯ:bn,"₨":`Rs`,ꭱ:`ʀ`,ꮢ:`ʀ`,я:`ᴙ`,ᵳ:xn,"℩":`ɿ`,s:`s`,𝐬:`s`,𝑠:`s`,𝒔:`s`,𝓈:`s`,𝓼:`s`,𝔰:`s`,𝕤:`s`,𝖘:`s`,𝗌:`s`,𝘀:`s`,𝘴:`s`,𝙨:`s`,𝚜:`s`,ꜱ:`s`,ƽ:`s`,ѕ:`s`,ꮪ:`s`,𑣁:`s`,𐑈:`s`,S:`S`,𝐒:`S`,𝑆:`S`,𝑺:`S`,𝒮:`S`,𝓢:`S`,𝔖:`S`,𝕊:`S`,𝕾:`S`,𝖲:`S`,𝗦:`S`,𝘚:`S`,𝙎:`S`,𝚂:`S`,Ѕ:`S`,Տ:`S`,Ꮥ:`S`,Ꮪ:`S`,ꓢ:`S`,𖼺:`S`,𐊖:`S`,𐐠:`S`,ʂ:`s̨`,ᵴ:`s̴`,ꞵ:`ß`,β:`ß`,ϐ:`ß`,𝛃:`ß`,𝛽:`ß`,𝜷:`ß`,𝝱:`ß`,𝞫:`ß`,Ᏸ:`ß`,"🝜":`sss`,st:`st`,"∫":`ʃ`,ꭍ:`ʃ`,"∑":`Ʃ`,"⅀":`Ʃ`,Σ:`Ʃ`,𝚺:`Ʃ`,𝛴:`Ʃ`,𝜮:`Ʃ`,𝝨:`Ʃ`,𝞢:`Ʃ`,ⵉ:`Ʃ`,"∬":`ʃʃ`,"∭":`ʃʃʃ`,"⨌":`ʃʃʃʃ`,𝐭:`t`,𝑡:`t`,𝒕:`t`,𝓉:`t`,𝓽:`t`,𝔱:`t`,𝕥:`t`,𝖙:`t`,𝗍:`t`,𝘁:`t`,𝘵:`t`,𝙩:`t`,𝚝:`t`,"⊤":`T`,"⟙":`T`,"🝨":`T`,T:`T`,𝐓:`T`,𝑇:`T`,𝑻:`T`,𝒯:`T`,𝓣:`T`,𝔗:`T`,𝕋:`T`,𝕿:`T`,𝖳:`T`,𝗧:`T`,𝘛:`T`,𝙏:`T`,𝚃:`T`,Τ:`T`,𝚻:`T`,𝛵:`T`,𝜯:`T`,𝝩:`T`,𝞣:`T`,Ⲧ:`T`,Т:`T`,Ꭲ:`T`,ꓔ:`T`,𖼊:`T`,𑢼:`T`,𐊗:`T`,𐊱:`T`,𐌕:`T`,ƭ:`t̔`,"⍡":`T̈`,Ⱦ:`T̸`,Ț:`Ţ`,Ʈ:`T̨`,Ҭ:`T̩`,"₮":`T⃫`,ŧ:`t̵`,Ŧ:`T̵`,ᵵ:`t̴`,Ⴀ:`Ꞇ`,Ꜩ:`T3`,ʨ:`tɕ`,"℡":`TEL`,ꝷ:`tf`,ʦ:`ts`,ʧ:`tʃ`,ꜩ:`tȝ`,τ:`ᴛ`,𝛕:`ᴛ`,𝜏:`ᴛ`,𝝉:`ᴛ`,𝞃:`ᴛ`,𝞽:`ᴛ`,т:`ᴛ`,ꭲ:`ᴛ`,ҭ:Sn,ţ:`ƫ`,ț:`ƫ`,Ꮏ:`ƫ`,𝐮:`u`,𝑢:`u`,𝒖:`u`,𝓊:`u`,𝓾:`u`,𝔲:`u`,𝕦:`u`,𝖚:`u`,𝗎:`u`,𝘂:`u`,𝘶:`u`,𝙪:`u`,𝚞:`u`,ꞟ:`u`,ᴜ:`u`,ꭎ:`u`,ꭒ:`u`,ʋ:`u`,υ:`u`,𝛖:`u`,𝜐:`u`,𝝊:`u`,𝞄:`u`,𝞾:`u`,ս:`u`,𐓶:`u`,𑣘:`u`,"∪":`U`,"⋃":`U`,𝐔:`U`,𝑈:`U`,𝑼:`U`,𝒰:`U`,𝓤:`U`,𝔘:`U`,𝕌:`U`,𝖀:`U`,𝖴:`U`,𝗨:`U`,𝘜:`U`,𝙐:`U`,𝚄:`U`,Ս:`U`,ሀ:`U`,𐓎:`U`,ᑌ:`U`,ꓴ:`U`,𖽂:`U`,𑢸:`U`,ǔ:`ŭ`,Ǔ:`Ŭ`,ᵾ:`u̵`,ꮜ:`u̵`,Ʉ:`U̵`,Ꮜ:`U̵`,ᑘ:`U·`,ᑧ:`U'`,ᵫ:`ue`,ꭣ:`uo`,ṃ:`ꭑ`,պ:`ɰ`,ሣ:`ɰ`,"℧":`Ʊ`,ᘮ:`Ʊ`,ᘴ:`Ʊ`,ᵿ:Cn,"∨":`v`,"⋁":`v`,v:`v`,ⅴ:`v`,𝐯:`v`,𝑣:`v`,𝒗:`v`,𝓋:`v`,𝓿:`v`,𝔳:`v`,𝕧:`v`,𝖛:`v`,𝗏:`v`,𝘃:`v`,𝘷:`v`,𝙫:`v`,𝚟:`v`,ᴠ:`v`,ν:`v`,𝛎:`v`,𝜈:`v`,𝝂:`v`,𝝼:`v`,𝞶:`v`,ѵ:`v`,ט:`v`,𑜆:`v`,ꮩ:`v`,𑣀:`v`,"𝈍":`V`,"٧":`V`,"۷":`V`,Ⅴ:`V`,𝐕:`V`,𝑉:`V`,𝑽:`V`,𝒱:`V`,𝓥:`V`,𝔙:`V`,𝕍:`V`,𝖁:`V`,𝖵:`V`,𝗩:`V`,𝘝:`V`,𝙑:`V`,𝚅:`V`,Ѵ:`V`,ⴸ:`V`,Ꮩ:`V`,ᐯ:`V`,ꛟ:`V`,ꓦ:`V`,𖼈:`V`,𑢠:`V`,𐔝:`V`,"𐆗":`V̵`,ᐻ:`V·`,"🝬":`VB`,ⅵ:`vi`,ⅶ:`vii`,ⅷ:wn,Ⅵ:`Vl`,Ⅶ:`Vll`,Ⅷ:Tn,"🜈":`Vᷤ`,ᴧ:`ʌ`,𐓘:`ʌ`,"٨":`Ʌ`,"۸":`Ʌ`,Λ:`Ʌ`,𝚲:`Ʌ`,𝛬:`Ʌ`,𝜦:`Ʌ`,𝝠:`Ʌ`,𝞚:`Ʌ`,Л:`Ʌ`,ⴷ:`Ʌ`,𐒰:`Ʌ`,ᐱ:`Ʌ`,ꛎ:`Ʌ`,ꓥ:`Ʌ`,𖼽:`Ʌ`,𐊍:`Ʌ`,Ӆ:En,ᐽ:Dn,ɯ:`w`,𝐰:`w`,𝑤:`w`,𝒘:`w`,𝓌:`w`,𝔀:`w`,𝔴:`w`,𝕨:`w`,𝖜:`w`,𝗐:`w`,𝘄:`w`,𝘸:`w`,𝙬:`w`,𝚠:`w`,ᴡ:`w`,ѡ:`w`,ԝ:`w`,ա:`w`,𑜊:`w`,𑜎:`w`,𑜏:`w`,ꮃ:`w`,"𑣯":`W`,"𑣦":`W`,𝐖:`W`,𝑊:`W`,𝑾:`W`,𝒲:`W`,𝓦:`W`,𝔚:`W`,𝕎:`W`,𝖂:`W`,𝖶:`W`,𝗪:`W`,𝘞:`W`,𝙒:`W`,𝚆:`W`,Ԝ:`W`,Ꮃ:`W`,Ꮤ:`W`,ꓪ:`W`,ѽ:On,𑓅:`ẇ`,"₩":`W̵`,ꝡ:`w̦`,ᴍ:`ʍ`,м:`ʍ`,ꮇ:`ʍ`,ӎ:kn,"᙮":`x`,"×":`x`,"⤫":`x`,"⤬":`x`,"⨯":`x`,x:`x`,ⅹ:`x`,𝐱:`x`,𝑥:`x`,𝒙:`x`,𝓍:`x`,𝔁:`x`,𝔵:`x`,𝕩:`x`,𝖝:`x`,𝗑:`x`,𝘅:`x`,𝘹:`x`,𝙭:`x`,𝚡:`x`,х:`x`,ᕁ:`x`,ᕽ:`x`,"ⷯ":`ͯ`,"᙭":`X`,"╳":`X`,"𐌢":`X`,"𑣬":`X`,X:`X`,Ⅹ:`X`,𝐗:`X`,𝑋:`X`,𝑿:`X`,𝒳:`X`,𝓧:`X`,𝔛:`X`,𝕏:`X`,𝖃:`X`,𝖷:`X`,𝗫:`X`,𝘟:`X`,𝙓:`X`,𝚇:`X`,Ꭓ:`X`,Χ:`X`,𝚾:`X`,𝛸:`X`,𝜲:`X`,𝝬:`X`,𝞦:`X`,Ⲭ:`X`,Х:`X`,ⵝ:`X`,ᚷ:`X`,ꓫ:`X`,𐊐:`X`,𐊴:`X`,𐌗:`X`,𐔧:`X`,"⨰":`ẋ`,Ҳ:`X̩`,"𐆖":`X̵`,ⅺ:`xi`,ⅻ:`xii`,Ⅺ:`Xl`,Ⅻ:`Xll`,ɣ:`y`,ᶌ:`y`,y:`y`,𝐲:`y`,𝑦:`y`,𝒚:`y`,𝓎:`y`,𝔂:`y`,𝔶:`y`,𝕪:`y`,𝖞:`y`,𝗒:`y`,𝘆:`y`,𝘺:`y`,𝙮:`y`,𝚢:`y`,ʏ:`y`,ỿ:`y`,ꭚ:`y`,γ:`y`,ℽ:`y`,𝛄:`y`,𝛾:`y`,𝜸:`y`,𝝲:`y`,𝞬:`y`,у:`y`,ү:`y`,ყ:`y`,𑣜:`y`,Y:`Y`,𝐘:`Y`,𝑌:`Y`,𝒀:`Y`,𝒴:`Y`,𝓨:`Y`,𝔜:`Y`,𝕐:`Y`,𝖄:`Y`,𝖸:`Y`,𝗬:`Y`,𝘠:`Y`,𝙔:`Y`,𝚈:`Y`,Υ:`Y`,ϒ:`Y`,𝚼:`Y`,𝛶:`Y`,𝜰:`Y`,𝝪:`Y`,𝞤:`Y`,Ⲩ:`Y`,У:`Y`,Ү:`Y`,Ꭹ:`Y`,Ꮍ:`Y`,ꓬ:`Y`,𖽃:`Y`,𑢤:`Y`,𐊲:`Y`,ƴ:`y̔`,ɏ:`y̵`,ұ:`y̵`,"¥":`Y̵`,Ɏ:`Y̵`,Ұ:`Y̵`,ʒ:`ȝ`,ꝫ:`ȝ`,ⳍ:`ȝ`,ӡ:`ȝ`,ჳ:`ȝ`,𝐳:`z`,𝑧:`z`,𝒛:`z`,𝓏:`z`,𝔃:`z`,𝔷:`z`,𝕫:`z`,𝖟:`z`,𝗓:`z`,𝘇:`z`,𝘻:`z`,𝙯:`z`,𝚣:`z`,ᴢ:`z`,ꮓ:`z`,𑣄:`z`,"𐋵":`Z`,"𑣥":`Z`,Z:`Z`,ℤ:`Z`,ℨ:`Z`,𝐙:`Z`,𝑍:`Z`,𝒁:`Z`,𝒵:`Z`,𝓩:`Z`,𝖅:`Z`,𝖹:`Z`,𝗭:`Z`,𝘡:`Z`,𝙕:`Z`,𝚉:`Z`,Ζ:`Z`,𝚭:`Z`,𝛧:`Z`,𝜡:`Z`,𝝛:`Z`,𝞕:`Z`,Ꮓ:`Z`,ꓜ:`Z`,𑢩:`Z`,ʐ:`z̨`,ƶ:`z̵`,Ƶ:`Z̵`,ȥ:`z̦`,Ȥ:`Z̦`,ᵶ:`z̴`,ƿ:`þ`,ϸ:`þ`,Ϸ:`Þ`,𐓄:`Þ`,"⁹":`ꝰ`,ᴤ:`ƨ`,ϩ:`ƨ`,ꙅ:`ƨ`,ь:`ƅ`,ꮟ:`ƅ`,ы:`ƅi`,ꭾ:`ɂ`,ˤ:`ˁ`,ꛍ:`ʡ`,"⊙":`ʘ`,"☉":`ʘ`,"⨀":`ʘ`,Ꙩ:`ʘ`,ⵙ:`ʘ`,𐓃:`ʘ`,ℾ:`Γ`,𝚪:`Γ`,𝛤:`Γ`,𝜞:`Γ`,𝝘:`Γ`,𝞒:`Γ`,Ⲅ:`Γ`,Г:`Γ`,Ꮁ:`Γ`,ᒥ:`Γ`,𖼇:`Γ`,Ғ:An,ᒯ:jn,Ґ:`Γ'`,"∆":`Δ`,"△":`Δ`,"🜂":`Δ`,𝚫:`Δ`,𝛥:`Δ`,𝜟:`Δ`,𝝙:`Δ`,𝞓:`Δ`,Ⲇ:`Δ`,ⵠ:`Δ`,ᐃ:`Δ`,𖼚:`Δ`,𐊅:`Δ`,𐊣:`Δ`,"⍙":`Δ̲`,ᐏ:Mn,ᐬ:Nn,𝟋:`ϝ`,𝛇:`ζ`,𝜁:`ζ`,𝜻:`ζ`,𝝵:`ζ`,𝞯:`ζ`,ⳤ:`ϗ`,𝛌:`λ`,𝜆:`λ`,𝝀:`λ`,𝝺:`λ`,𝞴:`λ`,Ⲗ:`λ`,𐓛:`λ`,µ:`μ`,𝛍:`μ`,𝜇:`μ`,𝝁:`μ`,𝝻:`μ`,𝞵:`μ`,𝛏:`ξ`,𝜉:`ξ`,𝝃:`ξ`,𝝽:`ξ`,𝞷:`ξ`,𝚵:`Ξ`,𝛯:`Ξ`,𝜩:`Ξ`,𝝣:`Ξ`,𝞝:`Ξ`,ϖ:`π`,ℼ:`π`,𝛑:`π`,𝛡:`π`,𝜋:`π`,𝜛:`π`,𝝅:`π`,𝝕:`π`,𝝿:`π`,𝞏:`π`,𝞹:`π`,𝟉:`π`,ᴨ:`π`,п:`π`,"∏":`Π`,ℿ:`Π`,𝚷:`Π`,𝛱:`Π`,𝜫:`Π`,𝝥:`Π`,𝞟:`Π`,Ⲡ:`Π`,П:`Π`,ꛛ:`Π`,𐊭:`Ϙ`,𐌒:`Ϙ`,ϛ:`ς`,𝛓:`ς`,𝜍:`ς`,𝝇:`ς`,𝞁:`ς`,𝞻:`ς`,𝚽:`Φ`,𝛷:`Φ`,𝜱:`Φ`,𝝫:`Φ`,𝞥:`Φ`,Ⲫ:`Φ`,Ф:`Φ`,Փ:`Φ`,ቀ:`Φ`,ᛰ:`Φ`,𐊳:`Φ`,ꭓ:`χ`,ꭕ:`χ`,𝛘:`χ`,𝜒:`χ`,𝝌:`χ`,𝞆:`χ`,𝟀:`χ`,ⲭ:`χ`,𝛙:`ψ`,𝜓:`ψ`,𝝍:`ψ`,𝞇:`ψ`,𝟁:`ψ`,ѱ:`ψ`,𐓹:`ψ`,𝚿:`Ψ`,𝛹:`Ψ`,𝜳:`Ψ`,𝝭:`Ψ`,𝞧:`Ψ`,Ⲯ:`Ψ`,Ѱ:`Ψ`,𐓑:`Ψ`,ᛘ:`Ψ`,𐊵:`Ψ`,"⍵":`ω`,ꞷ:`ω`,𝛚:`ω`,𝜔:`ω`,𝝎:`ω`,𝞈:`ω`,𝟂:`ω`,ⲱ:`ω`,ꙍ:`ω`,Ω:`Ω`,𝛀:`Ω`,𝛺:`Ω`,𝜴:`Ω`,𝝮:`Ω`,𝞨:`Ω`,ᘯ:`Ω`,ᘵ:`Ω`,𐊶:`Ω`,"⍹":`ω̲`,ώ:`ῴ`,"☰":`Ⲷ`,Ⳝ:`Ϭ`,җ:Pn,Җ:Fn,"𝈋":`И`,Ͷ:`И`,ꚡ:`И`,𐐥:`И`,Й:`Ѝ`,Ҋ:In,ѝ:`й`,ҋ:Ln,𐒼:`Ӄ`,ᴫ:`л`,ӆ:Rn,ꭠ:`љ`,𐓫:`ꙩ`,"ᷮ":`ⷬ`,𐓍:`Ћ`,"𝈂":`Ӿ`,"𝈢":`Ѡ`,Ꮗ:`Ѡ`,ᗯ:`Ѡ`,Ѽ:zn,ᣭ:Bn,Ꞷ:`Ꙍ`,ӌ:`ҷ`,Ӌ:`Ҷ`,Ҿ:Vn,ⲽ:`ш`,Ⲽ:`Ш`,Ꙑ:`Ъl`,"℈":`Э`,"🜁":`Ꙙ`,𖼜:`Ꙙ`,ꦒ:`ⰿ`,և:Hn,ኔ:`ձ`,ﬔ:Un,ﬕ:Wn,ﬗ:Gn,ﬓ:Kn,"∩":`Ո`,"⋂":`Ո`,"𝉅":`Ո`,በ:`Ո`,ᑎ:`Ո`,ꓵ:`Ո`,ᑚ:qn,ᑨ:`Ո'`,ﬖ:Jn,"₽":`Ք`,"˓":`ՙ`,ʿ:`ՙ`,ℵ:`א`,ﬡ:`א`,אָ:`אַ`,אּ:`אַ`,ﭏ:Yn,ℶ:`ב`,ℷ:`ג`,ℸ:`ד`,ﬢ:`ד`,ﬣ:`ה`,יּ:`יִ`,ﬤ:`כ`,ﬥ:`ל`,ﬦ:`ם`,ﬠ:`ע`,ﬧ:`ר`,שׂ:`שׁ`,שּ:`שׁ`,שּׂ:`שּׁ`,ﬨ:`ת`,ﺀ:`ء`,"۽":`ء͈`,ﺂ:`آ`,ﺁ:`آ`,ﭑ:`ٱ`,ﭐ:`ٱ`,𞸁:`ب`,𞸡:`ب`,𞹡:`ب`,𞺁:`ب`,𞺡:`ب`,ﺑ:`ب`,ﺒ:`ب`,ﺐ:`ب`,ﺏ:`ب`,ݑ:Xn,ࢶ:Zn,ࢡ:Qn,ﲠ:`بo`,ﳢ:`بo`,ﲜ:$n,ﰅ:er,ﲝ:tr,ﰆ:nr,ﷂ:rr,ﲞ:ir,ﰇ:ar,ﳒ:or,ﱋ:sr,ﶞ:cr,ﱪ:lr,ﱫ:ur,ﲟ:dr,ﳡ:fr,ﱬ:pr,ﰈ:mr,ﱭ:hr,ﱮ:gr,ﰉ:_r,ﱯ:vr,ﰊ:yr,ﭔ:`ٻ`,ﭕ:`ٻ`,ﭓ:`ٻ`,ﭒ:`ٻ`,ې:`ٻ`,ﯦ:`ٻ`,ﯧ:`ٻ`,ﯥ:`ٻ`,ﯤ:`ٻ`,ﭜ:`ڀ`,ﭝ:`ڀ`,ﭛ:`ڀ`,ﭚ:`ڀ`,ࢩ:`ݔ`,ݧ:`ݔ`,"⍥":`ة`,ö:`ة`,ﺔ:`ة`,ﺓ:`ة`,ۃ:`ة`,𞸕:`ت`,𞸵:`ت`,𞹵:`ت`,𞺕:`ت`,𞺵:`ت`,ﺗ:`ت`,ﺘ:`ت`,ﺖ:`ت`,ﺕ:`ت`,ﲥ:`تo`,ﳤ:`تo`,ﲡ:br,ﰋ:xr,ﵐ:Sr,ﶠ:Cr,ﶟ:wr,ﲢ:Tr,ﰌ:Er,ﵒ:Dr,ﵑ:Or,ﵓ:kr,ﲣ:Ar,ﰍ:jr,ﵔ:Mr,ﶢ:Nr,ﶡ:Pr,ﱰ:Fr,ﱱ:Ir,ﲤ:Lr,ﳣ:Rr,ﱲ:zr,ﰎ:Br,ﵕ:Vr,ﵖ:Hr,ﵗ:Ur,ﶤ:Wr,ﶣ:Gr,ﱳ:Kr,ﱴ:qr,ﰏ:Jr,ﱵ:Yr,ﰐ:Xr,ﭠ:`ٺ`,ﭡ:`ٺ`,ﭟ:`ٺ`,ﭞ:`ٺ`,ﭤ:`ٿ`,ﭥ:`ٿ`,ﭣ:`ٿ`,ﭢ:`ٿ`,𞸂:`ج`,𞸢:`ج`,𞹂:`ج`,𞹢:`ج`,𞺂:`ج`,𞺢:`ج`,ﺟ:`ج`,ﺠ:`ج`,ﺞ:`ج`,ﺝ:`ج`,ﲧ:Zr,ﰕ:Qr,ﶦ:$r,ﶾ:ei,ﷻ:ti,ﲨ:ni,ﰖ:ri,ﵙ:ii,ﵘ:ai,ﶧ:oi,ﶥ:si,ﴝ:ci,ﴁ:li,ﴞ:ui,ﴂ:di,ﭸ:`ڃ`,ﭹ:`ڃ`,ﭷ:`ڃ`,ﭶ:`ڃ`,ﭴ:`ڄ`,ﭵ:`ڄ`,ﭳ:`ڄ`,ﭲ:`ڄ`,ﭼ:`چ`,ﭽ:`چ`,ﭻ:`چ`,ﭺ:`چ`,ﮀ:`ڇ`,ﮁ:`ڇ`,ﭿ:`ڇ`,ﭾ:`ڇ`,𞸇:`ح`,𞸧:`ح`,𞹇:`ح`,𞹧:`ح`,𞺇:`ح`,𞺧:`ح`,ﺣ:`ح`,ﺤ:`ح`,ﺢ:`ح`,ﺡ:`ح`,څ:fi,ځ:pi,ݲ:mi,ﲩ:hi,ﰗ:gi,ﶿ:_i,ﲪ:vi,ﰘ:yi,ﵛ:bi,ﵚ:xi,ﴛ:Si,ﳿ:Ci,ﴜ:wi,ﴀ:Ti,𞸗:`خ`,𞸷:`خ`,𞹗:`خ`,𞹷:`خ`,𞺗:`خ`,𞺷:`خ`,ﺧ:`خ`,ﺨ:`خ`,ﺦ:`خ`,ﺥ:`خ`,ﲫ:Ei,ﰙ:Di,ﰚ:Oi,ﲬ:ki,ﰛ:Ai,ﴟ:ji,ﴃ:Mi,ﴠ:Ni,ﴄ:Pi,"𐋡":`د`,𞸃:`د`,𞺃:`د`,𞺣:`د`,ﺪ:`د`,ﺩ:`د`,ڈ:Fi,ﮉ:Ii,ﮈ:Li,ڎ:Ri,ﮇ:zi,ﮆ:Bi,ۮ:Vi,ࢮ:Hi,𞸘:`ذ`,𞺘:`ذ`,𞺸:`ذ`,ﺬ:`ذ`,ﺫ:`ذ`,ﱛ:Ui,ڋ:Wi,ﮅ:`ڌ`,ﮄ:`ڌ`,ﮃ:`ڍ`,ﮂ:`ڍ`,𞸓:`ر`,𞺓:`ر`,𞺳:`ر`,ﺮ:`ر`,ﺭ:`ر`,ڑ:Gi,ﮍ:Ki,ﮌ:qi,ژ:Ji,ﮋ:Yi,ﮊ:Xi,ڒ:Zi,ࢹ:Qi,ۯ:$i,ݬ:ea,ﱜ:ta,ﷶ:na,"﷼":`رىlل`,𞸆:`ز`,𞺆:`ز`,𞺦:`ز`,ﺰ:`ز`,ﺯ:`ز`,ࢲ:ra,ݱ:ia,𞸎:`س`,𞸮:`س`,𞹎:`س`,𞹮:`س`,𞺎:`س`,𞺮:`س`,ﺳ:`س`,ﺴ:`س`,ﺲ:`س`,ﺱ:`س`,ش:aa,𞸔:oa,𞸴:sa,𞹔:ca,𞹴:la,𞺔:ua,𞺴:da,ﺷ:fa,ﺸ:pa,ﺶ:ma,ﺵ:ha,ݾ:ga,ﴱ:`سo`,ﳨ:`سo`,ﴲ:_a,ﳪ:va,ﲭ:ya,ﴴ:ba,ﰜ:xa,ﴭ:Sa,ﴷ:Ca,ﴥ:wa,ﴉ:Ta,ﵝ:Ea,ﵞ:Da,ﵩ:Oa,ﲮ:ka,ﴵ:Aa,ﰝ:ja,ﴮ:Ma,ﴸ:Na,ﴦ:Pa,ﴊ:Fa,ﵜ:Ia,ﵨ:La,ﵧ:Ra,ﶪ:za,ﲯ:Ba,ﴶ:Va,ﰞ:Ha,ﴯ:Ua,ﴹ:Wa,ﴧ:Ga,ﴋ:Ka,ﶨ:qa,ﷆ:Ja,ﴪ:Ya,ﴎ:Xa,ﴩ:Za,ﴍ:Qa,ﲰ:$a,ﳧ:eo,ﰟ:to,ﴰ:no,ﳩ:ro,ﴨ:io,ﴌ:ao,ﵡ:oo,ﵠ:so,ﵟ:co,ﵫ:lo,ﵪ:uo,ﵣ:fo,ﵢ:po,ﵭ:mo,ﵬ:ho,ﴗ:go,ﳻ:_o,ﴘ:vo,ﳼ:yo,ﴙ:bo,ﳽ:xo,ﴚ:So,ﳾ:Co,"𐋲":`ص`,𞸑:`ص`,𞸱:`ص`,𞹑:`ص`,𞹱:`ص`,𞺑:`ص`,𞺱:`ص`,ﺻ:`ص`,ﺼ:`ص`,ﺺ:`ص`,ﺹ:`ص`,ڞ:wo,ࢯ:To,ﲱ:Eo,ﰠ:Do,ﵥ:Oo,ﵤ:ko,ﶩ:Ao,ﲲ:jo,ﴫ:Mo,ﴏ:No,ﷵ:Po,ﷹ:Fo,ﷰ:Io,ﷺ:Lo,ﲳ:Ro,ﰡ:zo,ﷅ:Bo,ﵦ:Vo,ﴡ:Ho,ﴅ:Uo,ﴢ:Wo,ﴆ:Go,𞸙:`ض`,𞸹:`ض`,𞹙:`ض`,𞹹:`ض`,𞺙:`ض`,𞺹:`ض`,ﺿ:`ض`,ﻀ:`ض`,ﺾ:`ض`,ﺽ:`ض`,ﲴ:Ko,ﰢ:qo,ﲵ:Jo,ﰣ:Yo,ﵮ:Xo,ﶫ:Zo,ﲶ:Qo,ﰤ:$o,ﵰ:es,ﵯ:ts,ﴬ:ns,ﴐ:rs,ﲷ:is,ﰥ:as,ﴣ:os,ﴇ:ss,ﴤ:cs,ﴈ:ls,"𐋨":`ط`,𞸈:`ط`,𞹨:`ط`,𞺈:`ط`,𞺨:`ط`,ﻃ:`ط`,ﻄ:`ط`,ﻂ:`ط`,ﻁ:`ط`,ڟ:us,ﲸ:ds,ﰦ:fs,ﴳ:ps,ﴺ:ms,ﰧ:hs,ﵲ:gs,ﵱ:_s,ﵳ:vs,ﵴ:ys,ﴑ:bs,ﳵ:xs,ﴒ:Ss,ﳶ:Cs,𞸚:`ظ`,𞹺:`ظ`,𞺚:`ظ`,𞺺:`ظ`,ﻇ:`ظ`,ﻈ:`ظ`,ﻆ:`ظ`,ﻅ:`ظ`,ﲹ:ws,ﴻ:Ts,ﰨ:Es,"؏":`ع`,𞸏:`ع`,𞸯:`ع`,𞹏:`ع`,𞹯:`ع`,𞺏:`ع`,𞺯:`ع`,ﻋ:`ع`,ﻌ:`ع`,ﻊ:`ع`,ﻉ:`ع`,ﲺ:Ds,ﰩ:Os,ﷄ:ks,ﵵ:As,ﷷ:js,ﲻ:Ms,ﰪ:Ns,ﵷ:Ps,ﵶ:Fs,ﵸ:Is,ﶶ:Ls,ﴓ:Rs,ﳷ:zs,ﴔ:Bs,ﳸ:Vs,𞸛:`غ`,𞸻:`غ`,𞹛:`غ`,𞹻:`غ`,𞺛:`غ`,𞺻:`غ`,ﻏ:`غ`,ﻐ:`غ`,ﻎ:`غ`,ﻍ:`غ`,ﲼ:Hs,ﰫ:Us,ﲽ:Ws,ﰬ:Gs,ﵹ:Ks,ﵻ:qs,ﵺ:Js,ﴕ:Ys,ﳹ:Xs,ﴖ:Zs,ﳺ:Qs,𞸐:`ف`,𞸰:`ف`,𞹰:`ف`,𞺐:`ف`,𞺰:`ف`,ﻓ:`ف`,ﻔ:`ف`,ﻒ:`ف`,ﻑ:`ف`,ڧ:`ف`,ﲾ:$s,ﰭ:ec,ﲿ:tc,ﰮ:nc,ﳀ:rc,ﰯ:ic,ﵽ:ac,ﵼ:oc,ﳁ:sc,ﰰ:cc,ﷁ:lc,ﱼ:uc,ﰱ:dc,ﱽ:fc,ﰲ:pc,𞸞:`ڡ`,𞹾:`ڡ`,ࢻ:`ڡ`,ٯ:`ڡ`,𞸟:`ڡ`,𞹟:`ڡ`,ࢼ:`ڡ`,ڤ:mc,ﭬ:hc,ﭭ:gc,ﭫ:_c,ﭪ:vc,ڨ:yc,ࢤ:bc,ﭰ:`ڦ`,ﭱ:`ڦ`,ﭯ:`ڦ`,ﭮ:`ڦ`,𞸒:`ق`,𞸲:`ق`,𞹒:`ق`,𞹲:`ق`,𞺒:`ق`,𞺲:`ق`,ﻗ:`ق`,ﻘ:`ق`,ﻖ:`ق`,ﻕ:`ق`,ﳂ:xc,ﰳ:Sc,ﷱ:Cc,ﳃ:wc,ﰴ:Tc,ﶴ:Ec,ﵾ:Dc,ﵿ:Oc,ﶲ:kc,ﱾ:Ac,ﰵ:jc,ﱿ:Mc,ﰶ:Nc,𞸊:`ك`,𞸪:`ك`,𞹪:`ك`,ﻛ:`ك`,ﻜ:`ك`,ﻚ:`ك`,ﻙ:`ك`,ک:`ك`,ﮐ:`ك`,ﮑ:`ك`,ﮏ:`ك`,ﮎ:`ك`,ڪ:`ك`,ڭ:Pc,ﯕ:Fc,ﯖ:Ic,ﯔ:Lc,ﯓ:Rc,ݣ:zc,ﲀ:`كl`,ﰷ:`كl`,ﳄ:Bc,ﰸ:Vc,ﳅ:Hc,ﰹ:Uc,ﳆ:Wc,ﰺ:Gc,ﳇ:Kc,ﳫ:qc,ﲁ:Jc,ﰻ:Yc,ﳈ:Xc,ﳬ:Zc,ﲂ:Qc,ﰼ:$c,ﷃ:el,ﶻ:tl,ﶷ:nl,ﲃ:rl,ﰽ:il,ﲄ:al,ﰾ:ol,ݢ:`ڬ`,ﮔ:`گ`,ﮕ:`گ`,ﮓ:`گ`,ﮒ:`گ`,ࢰ:`گ`,ڴ:sl,ﮜ:`ڱ`,ﮝ:`ڱ`,ﮛ:`ڱ`,ﮚ:`ڱ`,ﮘ:`ڳ`,ﮙ:`ڳ`,ﮗ:`ڳ`,ﮖ:`ڳ`,𞸋:`ل`,𞸫:`ل`,𞹋:`ل`,𞺋:`ل`,𞺫:`ل`,ﻟ:`ل`,ﻠ:`ل`,ﻞ:`ل`,ﻝ:`ل`,ڷ:cl,ڵ:ll,ﻼ:`لl`,ﻻ:`لl`,ﻺ:ul,ﻹ:dl,ﻸ:fl,ﻷ:pl,ﳍ:`لo`,ﻶ:ml,ﻵ:hl,ﳉ:gl,ﰿ:_l,ﶃ:vl,ﶄ:yl,ﶺ:bl,ﶼ:xl,ﶬ:Sl,ﳊ:Cl,ﱀ:wl,ﶵ:Tl,ﶀ:El,ﶂ:Dl,ﶁ:Ol,ﳋ:kl,ﱁ:Al,ﶆ:jl,ﶅ:Ml,ﳌ:Nl,ﳭ:Pl,ﲅ:Fl,ﱂ:Il,ﶈ:Ll,ﶇ:Rl,ﶭ:zl,ﲆ:Bl,ﱃ:Vl,ﲇ:Hl,ﱄ:Ul,𞸌:`م`,𞸬:`م`,𞹬:`م`,𞺌:`م`,𞺬:`م`,ﻣ:`م`,ﻤ:`م`,ﻢ:`م`,ﻡ:`م`,ࢧ:Wl,"۾":`م͈`,ﲈ:`مl`,ﳎ:Gl,ﱅ:Kl,ﶌ:ql,ﶒ:Jl,ﶍ:Yl,ﷀ:Xl,ﳏ:Zl,ﱆ:Ql,ﶉ:$l,ﶊ:eu,ﷴ:tu,ﶋ:nu,ﳐ:ru,ﱇ:iu,ﶎ:au,ﶏ:ou,ﶹ:su,ﳑ:cu,ﲉ:lu,ﱈ:uu,ﶱ:du,ﱉ:fu,ﱊ:pu,𞸍:`ن`,𞸭:`ن`,𞹍:`ن`,𞹭:`ن`,𞺍:`ن`,𞺭:`ن`,ﻧ:`ن`,ﻨ:`ن`,ﻦ:`ن`,ﻥ:`ن`,ݨ:mu,ݩ:hu,ﳖ:`نo`,ﳯ:`نo`,ﶸ:gu,ﶽ:_u,ﶘ:vu,ﶗ:yu,ﶙ:bu,ﷇ:xu,ﳓ:Su,ﱌ:Cu,ﶕ:wu,ﶖ:Tu,ﶳ:Eu,ﳔ:Du,ﱍ:Ou,ﲊ:ku,ﲋ:Au,ﳕ:ju,ﳮ:Mu,ﲌ:Nu,ﱎ:Pu,ﶛ:Fu,ﶚ:Iu,ﲍ:Lu,ﲎ:Ru,ﱏ:zu,ﲏ:Bu,ﱐ:Vu,ۂ:`ۀ`,ﮥ:`ۀ`,ﮤ:`ۀ`,"𐋤":`و`,𞸅:`و`,𞺅:`و`,𞺥:`و`,ﻮ:`و`,ﻭ:`و`,ࢱ:`و`,ۋ:Hu,ﯟ:Uu,ﯞ:Wu,ۇ:Gu,ﯘ:Ku,ﯗ:qu,ۆ:Ju,ﯚ:Yu,ﯙ:Xu,ۉ:Zu,ﯣ:Qu,ﯢ:$u,ۈ:ed,ﯜ:td,ﯛ:nd,ؤ:rd,ﺆ:id,ﺅ:ad,ٶ:od,ٷ:sd,ﯝ:cd,ﷸ:ld,ﯡ:`ۅ`,ﯠ:`ۅ`,ٮ:`ى`,𞸜:`ى`,𞹼:`ى`,ں:`ى`,𞸝:`ى`,𞹝:`ى`,ﮟ:`ى`,ﮞ:`ى`,ࢽ:`ى`,ﯨ:`ى`,ﯩ:`ى`,ﻰ:`ى`,ﻯ:`ى`,ي:`ى`,𞸉:`ى`,𞸩:`ى`,𞹉:`ى`,𞹩:`ى`,𞺉:`ى`,𞺩:`ى`,ﻳ:`ى`,ﻴ:`ى`,ﻲ:`ى`,ﻱ:`ى`,ی:`ى`,ﯾ:`ى`,ﯿ:`ى`,ﯽ:`ى`,ﯼ:`ى`,ے:`ى`,ﮯ:`ى`,ﮮ:`ى`,ٹ:ud,ﭨ:dd,ﭩ:fd,ﭧ:pd,ﭦ:md,ڻ:hd,ﮢ:gd,ﮣ:_d,ﮡ:vd,ﮠ:yd,پ:bd,ﭘ:xd,ﭙ:Sd,ﭗ:Cd,ﭖ:wd,ث:Td,𞸖:Ed,𞸶:Dd,𞹶:Od,𞺖:kd,𞺶:Ad,ﺛ:jd,ﺜ:Md,ﺚ:Nd,ﺙ:Pd,ڽ:Fd,ۑ:Id,ؿ:Ld,ࢷ:Rd,ݖ:zd,ێ:Bd,ࢺ:Vd,ؽ:Hd,ࢨ:Ud,ﲐ:Wd,ﱝ:Gd,ﳞ:`ىo`,ﳱ:`ىo`,ﳦ:Kd,ئ:qd,ﺋ:Jd,ﺌ:Yd,ﺊ:Xd,ﺉ:Zd,ٸ:Qd,ﯫ:$d,ﯪ:ef,ﲛ:tf,ﳠ:nf,ﯭ:rf,ﯬ:af,ﯸ:of,ﯷ:sf,ﯶ:cf,ﲗ:lf,ﰀ:uf,ﲘ:df,ﰁ:ff,ﲙ:pf,ﱤ:mf,ﱥ:hf,ﲚ:gf,ﳟ:_f,ﱦ:vf,ﰂ:yf,ﱧ:bf,ﯯ:xf,ﯮ:Sf,ﯱ:Cf,ﯰ:wf,ﯳ:Tf,ﯲ:Ef,ﯵ:Df,ﯴ:Of,ﯻ:kf,ﯺ:Af,ﱨ:jf,ﯹ:Mf,ﰃ:Nf,ﱩ:Pf,ﰄ:Ff,ﳚ:If,ﱕ:Lf,ﰑ:Rf,ﶯ:zf,ﳛ:Bf,ﱖ:Vf,ﶮ:Hf,ﳜ:Uf,ﱗ:Wf,ﲑ:Gf,ﱶ:Kf,ﲒ:qf,ﱷ:Jf,ﳝ:Yf,ﳰ:Xf,ﲓ:Zf,ﱘ:Qf,ﲦ:$f,ﳥ:ep,ﱸ:tp,ﰒ:np,ﶝ:rp,ﶜ:ip,ﶰ:ap,ﲔ:op,ﱹ:sp,ﲕ:cp,ﱙ:lp,ﲖ:up,ﱚ:dp,ﱺ:fp,ﰓ:pp,ﱻ:mp,ﰔ:hp,ﮱ:`ۓ`,ﮰ:`ۓ`,𐊸:`ⵀ`,"⁞":`ⵂ`,"⸽":`ⵂ`,"⦙":`ⵂ`,"︙":`ⵗ`,"⁝":`ⵗ`,"⋮":`ⵗ`,Մ:`ሆ`,Ռ:`ቡ`,Ի:`ኮ`,Պ:`ጣ`,आ:gp,ऒ:_p,ओ:vp,औ:yp,ऄ:bp,ऑ:xp,ऍ:Sp,ऎ:Cp,ऐ:wp,ई:Tp,ઽ:`ऽ`,𑇜:`ꣻ`,"𑇋":`ऺ`,"ુ":`ु`,"ૂ":`ू`,"ੋ":`ॆ`,"੍":`्`,"્":`्`,আ:Ep,ৠ:Dp,ৡ:Op,𑒒:`ঘ`,𑒔:`চ`,𑒖:`জ`,𑒘:`ঞ`,𑒙:`ট`,𑒛:`ড`,𑒪:`ণ`,𑒞:`ত`,𑒟:`থ`,𑒠:`দ`,𑒡:`ধ`,𑒢:`ন`,𑒣:`প`,𑒩:`ব`,𑒧:`ম`,𑒨:`য`,𑒫:`র`,𑒝:`ল`,𑒭:`ষ`,𑒮:`স`,𑓄:`ঽ`,"𑒰":`া`,"𑒱":`ি`,"𑒹":`ে`,"𑒼":`ো`,"𑒾":`ৌ`,"𑓂":`্`,"𑒽":`ৗ`,ਉ:kp,ਊ:Ap,ਆ:jp,ਐ:Mp,ਔ:Np,ਇ:Pp,ਈ:Fp,ਏ:Ip,આ:Lp,ઑ:Rp,ઓ:zp,ઔ:Bp,ઍ:Vp,એ:Hp,ઐ:Up,ଆ:Wp,"௮":`அ`,ர:`ஈ`,"ா":`ஈ`,"௫":`ஈு`,"௨":`உ`,ഉ:`உ`,ஊ:Gp,ഊ:Kp,"௭":`எ`,"௷":`எவ`,ஜ:`ஐ`,ജ:`ஐ`,"௧":`க`,"௪":`ச`,"௬":`சு`,"௲":`சூ`,ഺ:qp,ണ:`ண`,"௺":`நீ`,"௴":`மீ`,"௰":`ய`,ഴ:`ழ`,"ௗ":`ள`,"ை":`ன`,ശ:`ஶ`,"௸":`ஷ`,"ി":`ி`,"ീ":`ி`,"ொ":`ெஈ`,"ௌ":`ெள`,"ோ":`ேஈ`,ಅ:`అ`,ಆ:`ఆ`,ಇ:`ఇ`,ౠ:Jp,ౡ:Yp,ಒ:`ఒ`,ఔ:Xp,ಔ:Zp,ఓ:Qp,ಓ:$p,ಜ:`జ`,ಞ:`ఞ`,ఢ:em,ಣ:`ణ`,థ:tm,భ:nm,ಯ:`య`,ఠ:rm,ಱ:`ఱ`,ಲ:`ల`,ష:im,హ:am,మ:om,"ూ":`ుా`,"ౄ":`ృా`,ೡ:sm,ഈ:cm,ഐ:lm,ഓ:um,ഔ:dm,ൡ:`ഞ`,"൫":`ദ്ര`,"൹":`നു`,ഌ:fm,ങ:pm,"൯":`ന്`,ൻ:mm,"൬":`ന്ന`,"൚":`ന്മ`,റ:`ര`,"൪":`ര്`,ർ:hm,"൮":`വ്ര`,"൶":`ഹ്മ`,"ൂ":`ു`,"ൃ":`ു`,"ൈ":`െെ`,"෪":`ජ`,"෫":`ද`,𑐓:gm,𑐙:_m,𑐤:vm,𑐪:ym,𑐭:bm,𑐯:xm,𑗘:Sm,𑗙:Cm,𑗚:wm,𑗛:Tm,"𑗜":`𑖲`,"𑗝":`𑖳`,ฃ:`ข`,ด:`ค`,ต:`ค`,ม:`ฆ`,ຈ:`จ`,ซ:`ช`,ฏ:`ฎ`,ท:`ฑ`,ບ:`บ`,ປ:`ป`,ຝ:`ฝ`,ພ:`พ`,ຟ:`ฟ`,ฦ:`ภ`,ຍ:`ย`,"។":`ฯ`,ๅ:`า`,ำ:Em,"ិ":`ิ`,"ី":`ี`,"ឹ":`ึ`,"ឺ":`ื`,"ຸ":`ุ`,"ູ":`ู`,แ:Dm,ໜ:Om,ໝ:km,ຳ:Am,"༂":`འུྂཿ`,"༃":`འུྂ༔`,ཪ:`ར`,ༀ:jm,"ཷ":`ྲཱྀ`,"ཹ":`ླཱྀ`,"𑲲":`𑲪`,ႁ:Mm,က:Nm,ၰ:Pm,ၦ:Fm,ဟ:Im,ၯ:Lm,ၾ:Rm,ဩ:zm,ဪ:Bm,"႞":`ႃ̊`,ឣ:`អ`,"᧐":`ᦞ`,"᧑":`ᦱ`,"᪀":`ᩅ`,"᪐":`ᩅ`,"꩓":`ꨁ`,"꩖":`ꨣ`,"᭒":`ᬍ`,"᭓":`ᬑ`,"᭘":`ᬨ`,ꦣ:`ꦝ`,ᢖ:`ᡜ`,ᡕ:`ᠵ`,ῶ:`Ꮿ`,ᐍ:Vm,ᐫ:Hm,ᐑ:Um,ᐓ:Wm,ᐭ:Gm,ᐕ:Km,ᐘ:qm,ᐮ:Jm,ᐚ:Ym,ᣝ:Xm,ᓑ:`ᐡ`,ᕀ:`ᐩ`,ᐿ:Zm,ᑃ:Qm,"⍩":`ᐵ`,ᑇ:$m,ᑜ:eh,"⸧":`ᑐ`,"⊃":`ᑐ`,ᑞ:th,ᑩ:nh,"⟉":`ᑐ/`,"⫗":`ᑐᑕ`,ᑠ:rh,"⸦":`ᑕ`,"⊂":`ᑕ`,ᑢ:ih,ᑪ:ah,ᑤ:oh,ᑵ:sh,ᒅ:ch,ᑹ:lh,ᑽ:uh,ᘃ:`ᒉ`,ᒓ:dh,ᒕ:fh,ᒗ:ph,ᒛ:mh,ᘂ:`ᒐ`,ᒝ:hh,ᒟ:gh,ᒭ:_h,ᒱ:vh,ᒳ:yh,ᒵ:bh,ᒹ:xh,ᓊ:Sh,ᣇ:Ch,ᣉ:wh,ᣋ:Th,ᣍ:Eh,ᓌ:Dh,ᓎ:Oh,ᘄ:`ᓓ`,ᓝ:kh,ᓟ:Ah,ᓡ:jh,ᓣ:Mh,ᓥ:Nh,ᘇ:`ᓚ`,ᓧ:Ph,ᓩ:Fh,ᓷ:Ih,ᓹ:Lh,ᓻ:Rh,ᓽ:zh,ᓿ:Bh,ᔁ:Vh,ᔃ:Hh,ᔌ:Uh,ᔎ:Wh,ᔍ:Gh,ᔏ:Kh,ᔘ:qh,ᔚ:Jh,ᔜ:Yh,ᔞ:Xh,ᔠ:Zh,ᔢ:Qh,ᔤ:$h,ᔲ:eg,ᔴ:tg,ᔶ:ng,ᔸ:rg,ᔺ:ig,ᔼ:ag,ᘢ:`ᕃ`,ᣠ:og,ᘣ:`ᕆ`,ᘤ:`ᕊ`,ᕏ:sg,ᖃ:cg,ᖄ:lg,ᖁ:ug,ᕿ:dg,ᙯ:fg,ᕾ:pg,ᖀ:mg,ᖂ:hg,ᖅ:gg,ᕜ:_g,ᣣ:vg,ᣤ:yg,ᕩ:bg,ᣥ:xg,ᣨ:Sg,ᖑ:Cg,ᙰ:wg,ᖎ:Tg,ᖏ:Eg,ᖐ:Dg,ᖒ:Og,ᖓ:kg,ᖔ:Ag,ᙳ:jg,ᙱ:Mg,ᙲ:Ng,ᙴ:Pg,ᙵ:Fg,ᙶ:Ig,ᣪ:Lg,ᙷ:Rg,ᙸ:zg,ᙹ:Bg,ᙺ:Vg,ᙻ:Hg,ᙼ:Ug,ᙽ:Wg,"⪫":`ᗒ`,"⪪":`ᗕ`,ꓷ:`ᗡ`,ᣰ:Gg,ᣲ:Kg,ᶻ:`ᙆ`,ꓭ:`ᙠ`,ᶺ:`ᣔ`,ᴾ:`ᣖ`,ᣜ:qg,ˡ:`ᣳ`,ʳ:`ᣴ`,ˢ:`ᣵ`,ᣛ:`ᣵ`,ꚰ:`ᚹ`,ᛡ:`ᚼ`,"⍿":`ᚽ`,ᛂ:`ᚽ`,"𝈿":`ᛋ`,"↑":`ᛏ`,"↿":`ᛐ`,"⥮":`ᛐ⇂`,"⥣":`ᛐᛚ`,ⵣ:`ᛯ`,"↾":`ᛚ`,"⨡":`ᛚ`,"⋄":`ᛜ`,"◇":`ᛜ`,"◊":`ᛜ`,"♢":`ᛜ`,"🝔":`ᛜ`,𑢷:`ᛜ`,𐊔:`ᛜ`,"⍚":`ᛜ̲`,"⋈":`ᛞ`,"⨝":`ᛞ`,𐓐:`ᛦ`,"↕":`ᛨ`,"𐳼":`𐲂`,"𐳺":`𐲥`,ㄱ:`ᄀ`,ᆨ:`ᄀ`,ᄁ:Jg,ㄲ:Yg,ᆩ:Xg,ᇺ:Zg,ᅚ:Qg,ᇃ:$g,ᇻ:e_,ᆪ:t_,ㄳ:n_,ᇄ:r_,ᇼ:i_,ᇽ:a_,ᇾ:o_,ㄴ:`ᄂ`,ᆫ:`ᄂ`,ᄓ:s_,ᇅ:c_,ᄔ:l_,ㅥ:u_,ᇿ:d_,ᄕ:f_,ㅦ:p_,ᇆ:m_,ퟋ:h_,ᄖ:g_,ᅛ:__,ᇇ:v_,ㅧ:y_,ᅜ:b_,ᆬ:x_,ㄵ:S_,ퟌ:C_,ᇉ:w_,ᅝ:T_,ᆭ:E_,ㄶ:D_,ᇈ:O_,ㅨ:k_,ㄷ:`ᄃ`,ᆮ:`ᄃ`,ᄗ:A_,ᇊ:j_,ᄄ:M_,ㄸ:N_,ퟍ:P_,ퟎ:F_,ᅞ:I_,ᇋ:L_,ꥠ:R_,ꥡ:z_,ퟏ:B_,ꥢ:V_,ퟐ:H_,ퟑ:U_,ꥣ:W_,ퟒ:G_,ퟓ:K_,ퟔ:q_,ㄹ:`ᄅ`,ᆯ:`ᄅ`,ꥤ:J_,ᆰ:Y_,ㄺ:X_,ꥥ:Z_,ퟕ:Q_,ᇌ:$_,ㅩ:ev,ퟖ:tv,ᄘ:nv,ᇍ:rv,ꥦ:iv,ᇎ:av,ㅪ:ov,ꥧ:sv,ᇏ:cv,ᄙ:lv,ᇐ:uv,ퟗ:dv,ꥨ:fv,ᆱ:pv,ㄻ:mv,ᇑ:hv,ᇒ:gv,ퟘ:_v,ꥩ:vv,ᆲ:yv,ㄼ:bv,ퟙ:xv,ꥪ:Sv,ᇓ:Cv,ㅫ:wv,ꥫ:Tv,ᇕ:Ev,ퟚ:Dv,ᇔ:Ov,ꥬ:kv,ᆳ:Av,ㄽ:jv,ᇖ:Mv,ᄛ:Nv,ퟝ:Pv,ꥭ:Fv,ꥮ:Iv,ᇘ:Lv,ᆴ:Rv,ㄾ:zv,ᆵ:Bv,ㄿ:Vv,ᄚ:Hv,ㅀ:Uv,ᄻ:Wv,ᆶ:Gv,ퟲ:Kv,ᇗ:qv,ㅬ:Jv,ퟛ:Yv,ᇙ:Xv,ㅭ:Zv,ퟜ:Qv,ㅁ:`ᄆ`,ᆷ:`ᄆ`,ꥯ:$v,ᇚ:ey,ퟞ:ty,ퟟ:ny,ꥰ:ry,ᇛ:iy,ퟠ:ay,ᄜ:oy,ㅮ:sy,ᇜ:cy,ퟡ:ly,ꥱ:uy,ᇝ:dy,ㅯ:fy,ᇞ:py,ᄝ:my,ㅱ:hy,ᇢ:gy,ퟢ:_y,ᇠ:vy,ᇡ:yy,ᇟ:by,ㅰ:xy,ㅂ:`ᄇ`,ᆸ:`ᄇ`,ᄞ:Sy,ㅲ:Cy,ᄟ:wy,ᄠ:Ty,ㅳ:Ey,ퟣ:Dy,ᇣ:Oy,ퟤ:ky,ퟥ:Ay,ᄈ:jy,ㅃ:My,ퟦ:Ny,ᄬ:Py,ㅹ:Fy,ᄡ:Iy,ㅄ:Ly,ᆹ:Ry,ᄢ:zy,ㅴ:By,ᄣ:Vy,ㅵ:Hy,ퟧ:Uy,ᄤ:Wy,ᄥ:Gy,ᄦ:Ky,ꥲ:qy,ᄫ:Jy,ㅸ:Yy,ᇦ:Xy,ᄧ:Zy,ㅶ:Qy,ퟨ:$y,ᄨ:eb,ퟩ:tb,ꥳ:nb,ᄩ:rb,ㅷ:ib,ᄪ:ab,ᇤ:ob,ꥴ:sb,ᇥ:cb,ㅅ:`ᄉ`,ᆺ:`ᄉ`,ᄭ:lb,ㅺ:ub,ᇧ:db,ᄮ:fb,ㅻ:pb,ᄯ:mb,ㅼ:hb,ᇨ:gb,ᄰ:_b,ᇩ:vb,ᄱ:yb,ퟪ:bb,ᄲ:xb,ㅽ:Sb,ᇪ:Cb,ᄳ:wb,ퟫ:Tb,ᄊ:Eb,ㅆ:Db,ᆻ:Ob,ퟬ:kb,ퟭ:Ab,ꥵ:jb,ᄴ:Mb,ᄵ:Nb,ᄶ:Pb,ㅾ:Fb,ퟯ:Ib,ᄷ:Lb,ퟰ:Rb,ᄸ:zb,ᄹ:Bb,ퟱ:Vb,ᄺ:Hb,ퟮ:Ub,ㅇ:`ᄋ`,ᆼ:`ᄋ`,ᅁ:Wb,ᇬ:Gb,ᇭ:Kb,ᅂ:qb,ꥶ:Jb,ᅃ:Yb,ᅄ:Xb,ᅅ:Zb,ᇱ:Qb,ㆂ:$b,ᅇ:ex,ㆀ:tx,ᇮ:nx,ᅈ:rx,ᅉ:ix,ᇯ:ax,ᅊ:ox,ᅋ:sx,ꥷ:cx,ᅆ:lx,ᇲ:ux,ㆃ:dx,ㅈ:`ᄌ`,ᆽ:`ᄌ`,ퟷ:fx,ퟸ:px,ᅍ:mx,ᄍ:hx,ㅉ:gx,ퟹ:_x,ꥸ:vx,ㅊ:`ᄎ`,ᆾ:`ᄎ`,ᅒ:yx,ᅓ:bx,ㅋ:`ᄏ`,ᆿ:`ᄏ`,ㅌ:`ᄐ`,ᇀ:`ᄐ`,ꥹ:xx,ㅍ:`ᄑ`,ᇁ:`ᄑ`,ᅖ:Sx,ᇳ:Cx,ퟺ:wx,ᅗ:Tx,ㆄ:Ex,ᇴ:Dx,ퟻ:Ox,ꥺ:kx,ㅎ:`ᄒ`,ᇂ:`ᄒ`,ᇵ:Ax,ᇶ:jx,ᇷ:Mx,ᇸ:Nx,ꥻ:Px,ᅘ:Fx,ㆅ:Ix,ᄽ:Lx,ᄿ:Rx,ㅿ:`ᅀ`,ᇫ:`ᅀ`,ퟳ:zx,ퟴ:Bx,ㆁ:`ᅌ`,ᇰ:`ᅌ`,ퟵ:Vx,ퟶ:Hx,ᅏ:Ux,ᅑ:Wx,ㆆ:`ᅙ`,ᇹ:`ᅙ`,ꥼ:Gx,ㅤ:`ᅠ`,ㅏ:`ᅡ`,ᆣ:Kx,ᅶ:qx,ᅷ:Jx,ᅢ:Yx,ㅐ:Xx,ㅑ:`ᅣ`,ᅸ:Zx,ᅹ:Qx,ᆤ:$x,ᅤ:eS,ㅒ:tS,ㅓ:`ᅥ`,ᅼ:nS,ᅺ:rS,ᅻ:iS,ᅦ:aS,ㅔ:oS,ㅕ:`ᅧ`,ᆥ:sS,ᅽ:cS,ᅾ:lS,ᅨ:uS,ㅖ:dS,ㅗ:`ᅩ`,ᅪ:fS,ㅘ:pS,ᅫ:mS,ㅙ:hS,ᆦ:gS,ᆧ:_S,ᅿ:vS,ᆀ:yS,ힰ:bS,ᆁ:xS,ᆂ:SS,ힱ:CS,ᆃ:wS,ᅬ:TS,ㅚ:ES,ㅛ:`ᅭ`,ힲ:DS,ힳ:OS,ᆄ:kS,ㆇ:AS,ᆆ:jS,ᆅ:MS,ㆈ:NS,ힴ:PS,ᆇ:FS,ᆈ:IS,ㆉ:LS,ㅜ:`ᅮ`,ᆉ:RS,ᆊ:zS,ᅯ:BS,ㅝ:VS,ᆋ:HS,ᅰ:US,ㅞ:WS,ힵ:GS,ᆌ:KS,ᆍ:qS,ᅱ:JS,ㅟ:YS,ힶ:XS,ㅠ:`ᅲ`,ᆎ:ZS,ힷ:QS,ᆏ:$S,ᆐ:eC,ᆑ:tC,ㆊ:nC,ᆒ:rC,ㆋ:iC,ힸ:aC,ᆓ:oC,ᆔ:sC,ㆌ:cC,ㆍ:`ᆞ`,ퟅ:lC,ᆟ:uC,ퟆ:dC,ᆠ:fC,ᆢ:pC,ᆡ:mC,ㆎ:hC,ヘ:`へ`,"⍁":`〼`,"⧄":`〼`,"꒞":`ꁊ`,"꒬":`ꁐ`,"꒜":`ꃀ`,"꒨":`ꄲ`,"꒿":`ꉙ`,"꒾":`ꊱ`,"꒔":`ꋍ`,"꓀":`ꎫ`,"꓂":`ꎵ`,"꒺":`ꎿ`,"꒰":`ꏂ`,"꒧":`ꑘ`,"⊥":`ꓕ`,"⟂":`ꓕ`,"𝈜":`ꓕ`,Ʇ:`ꓕ`,Ꞟ:`ꓤ`,"⅁":`ꓨ`,"⅂":`ꓶ`,"𝈕":`ꓶ`,"𝈫":`ꓶ`,𖼦:`ꓶ`,𐐑:`ꓶ`,"⅃":`𖼀`,𑫦:gC,𑫨:_C,𑫩:vC,𑫪:yC,𑫧:bC,𑫴:xC,𑫶:SC,𑫷:CC,𑫸:wC,𑫵:TC,𑫬:EC,𑫭:DC,𑫮:OC,"⊕":`𐊨`,"⨁":`𐊨`,"🜨":`𐊨`,Ꚛ:kC,"▽":`𐊼`,"𝈔":`𐊼`,"🜄":`𐊼`,"⧖":`𐋀`,ꞛ:AC,Ꞛ:jC,"𐒠":`𐒆`,𐏑:MC,𐏓:NC,𒀸:PC,"☥":`𐦞`,𓋹:FC,〹:`卄`,不:`不`,丽:`丽`,並:`並`,"⎜":`丨`,"⎟":`丨`,"⎢":`丨`,"⎥":`丨`,"⎪":`丨`,"⎮":`丨`,"㇑":`丨`,ᅵ:`丨`,ㅣ:`丨`,"⼁":`丨`,ᆜ:IC,ᆘ:LC,ᆙ:RC,ힽ:zC,ힾ:BC,ힿ:VC,ퟀ:HC,ᆚ:UC,ퟁ:WC,ퟂ:GC,ᆛ:KC,ퟃ:qC,ᆝ:JC,ퟄ:YC,串:`串`,丸:`丸`,丹:`丹`,乁:`乁`,"㇠":`乙`,"⼄":`乙`,"㇟":`乚`,"⺃":`乚`,"㇖":`乛`,"⺂":`乛`,"⻲":`亀`,亂:`亂`,"㇚":`亅`,"⼅":`亅`,了:`了`,ニ:`二`,"⼆":`二`,𠄢:XC,"⼇":`亠`,亮:`亮`,"⼈":`人`,イ:`亻`,"⺅":`亻`,什:`什`,仌:`仌`,令:`令`,你:`你`,倂:`併`,倂:`併`,侀:`侀`,來:`來`,例:`例`,侮:`侮`,侮:`侮`,侻:`侻`,便:`便`,值:`値`,倫:`倫`,偺:`偺`,備:`備`,像:`像`,僚:`僚`,僧:`僧`,僧:`僧`,㒞:`㒞`,"⼉":`儿`,兀:`兀`,"⺎":`兀`,充:`充`,免:`免`,免:`免`,兔:`兔`,兤:`兤`,"⼊":`入`,內:`內`,全:`全`,兩:`兩`,ハ:`八`,"⼋":`八`,六:`六`,具:`具`,𠔜:ZC,𠔥:QC,冀:`冀`,㒹:`㒹`,"⼌":`冂`,再:`再`,𠕋:$C,冒:`冒`,冕:`冕`,㒻:`㒻`,最:`最`,"⼍":`冖`,冗:`冗`,冤:`冤`,"⼎":`冫`,冬:`冬`,况:`况`,况:`况`,冷:`冷`,凉:`凉`,凌:`凌`,凜:`凜`,凞:`凞`,"⼏":`几`,𠘺:ew,凵:`凵`,"⼐":`凵`,"⼑":`刀`,"⺉":`刂`,刃:`刃`,切:`切`,切:`切`,列:`列`,利:`利`,㓟:`㓟`,刺:`刺`,刻:`刻`,剆:`剆`,割:`割`,剷:`剷`,劉:`劉`,𠠄:tw,カ:`力`,力:`力`,"⼒":`力`,劣:`劣`,㔕:`㔕`,劳:`劳`,勇:`勇`,勇:`勇`,勉:`勉`,勉:`勉`,勒:`勒`,勞:`勞`,勤:`勤`,勤:`勤`,勵:`勵`,"⼓":`勹`,勺:`勺`,勺:`勺`,包:`包`,匆:`匆`,𠣞:nw,"⼔":`匕`,北:`北`,北:`北`,"⼕":`匚`,"⼖":`匸`,匿:`匿`,"⼗":`十`,〸:`十`,〺:`卅`,卉:`卉`,"࿖":`卍`,"࿕":`卐`,卑:`卑`,卑:`卑`,博:`博`,ト:`卜`,"⼘":`卜`,"⼙":`卩`,"⺋":`㔾`,即:`即`,卵:`卵`,卽:`卽`,卿:`卿`,卿:`卿`,卿:`卿`,"⼚":`厂`,𠨬:rw,"⼛":`厶`,參:`參`,"⼜":`又`,及:`及`,叟:`叟`,𠭣:iw,ロ:`口`,"⼝":`口`,囗:`口`,"⼞":`口`,句:`句`,叫:`叫`,叱:`叱`,吆:`吆`,吏:`吏`,吝:`吝`,吸:`吸`,呂:`呂`,呈:`呈`,周:`周`,咞:`咞`,咢:`咢`,咽:`咽`,䎛:`㖈`,哶:`哶`,唐:`唐`,啓:`啓`,啟:`啓`,啕:`啕`,啣:`啣`,善:`善`,善:`善`,喇:`喇`,喙:`喙`,喙:`喙`,喝:`喝`,喝:`喝`,喫:`喫`,喳:`喳`,嗀:`嗀`,嗂:`嗂`,嗢:`嗢`,嘆:`嘆`,嘆:`嘆`,噑:`噑`,噴:`噴`,器:`器`,囹:`囹`,圖:`圖`,圗:`圗`,"⼟":`土`,士:`土`,"⼠":`土`,型:`型`,城:`城`,㦳:`㘽`,埴:`埴`,堍:`堍`,報:`報`,堲:`堲`,塀:`塀`,塚:`塚`,塚:`塚`,塞:`塞`,填:`塡`,壿:`墫`,墬:`墬`,墳:`墳`,壘:`壘`,壟:`壟`,𡓤:aw,壮:`壮`,売:`売`,壷:`壷`,"⼡":`夂`,夆:`夆`,"⼢":`夊`,タ:`夕`,"⼣":`夕`,多:`多`,夢:`夢`,"⼤":`大`,奄:`奄`,奈:`奈`,契:`契`,奔:`奔`,奢:`奢`,女:`女`,"⼥":`女`,𡚨:ow,𡛪:sw,姘:`姘`,姬:`姬`,娛:`娛`,娧:`娧`,婢:`婢`,婦:`婦`,嬀:`媯`,㛮:`㛮`,㛼:`㛼`,媵:`媵`,嬈:`嬈`,嬨:`嬨`,嬾:`嬾`,嬾:`嬾`,"⼦":`子`,"⼧":`宀`,宅:`宅`,𡧈:cw,寃:`寃`,寘:`寘`,寧:`寧`,寧:`寧`,寧:`寧`,寮:`寮`,寳:`寳`,𡬘:lw,"⼨":`寸`,寿:`寿`,将:`将`,"⼩":`小`,尢:`尢`,"⺐":`尢`,"⼪":`尢`,"⺏":`尣`,㞁:`㞁`,"⼫":`尸`,尿:`尿`,屠:`屠`,屢:`屢`,層:`層`,履:`履`,屮:`屮`,屮:`屮`,"⼬":`屮`,𡴋:uw,"⼭":`山`,峀:`峀`,岍:`岍`,𡷤:dw,𡷦:fw,崙:`崙`,嵃:`嵃`,嵐:`嵐`,嵫:`嵫`,嵮:`嵮`,嵼:`嵼`,嶲:`嶲`,嶺:`嶺`,"⼮":`巛`,巢:`巢`,エ:`工`,"⼯":`工`,"⼰":`己`,"⺒":`巳`,㠯:`㠯`,巽:`巽`,"⼱":`巾`,帲:`帡`,帨:`帨`,帽:`帽`,幩:`幩`,㡢:`㡢`,𢆃:pw,"⼲":`干`,年:`年`,𢆟:mw,"⺓":`幺`,"⼳":`幺`,"⼴":`广`,度:`度`,㡼:`㡼`,庰:`庰`,庳:`庳`,庶:`庶`,廊:`廊`,廊:`廊`,廉:`廉`,廒:`廒`,廓:`廓`,廙:`廙`,廬:`廬`,"⼵":`廴`,廾:`廾`,"⼶":`廾`,𢌱:hw,𢌱:gw,弄:`弄`,"⼷":`弋`,"⼸":`弓`,弢:`弢`,弢:`弢`,"⼹":`彐`,"⺔":`彑`,当:`当`,㣇:`㣇`,"⼺":`彡`,形:`形`,彩:`彩`,彫:`彫`,"⼻":`彳`,律:`律`,㣣:`㣣`,徚:`徚`,復:`復`,徭:`徭`,"⼼":`心`,"⺖":`忄`,"⺗":`㣺`,忍:`忍`,志:`志`,念:`念`,忹:`忹`,怒:`怒`,怜:`怜`,恵:`恵`,㤜:`㤜`,㤺:`㤺`,悁:`悁`,悔:`悔`,悔:`悔`,惇:`惇`,惘:`惘`,惡:`惡`,𢛔:_w,愈:`愈`,慨:`慨`,慄:`慄`,慈:`慈`,慌:`慌`,慌:`慌`,慎:`慎`,慎:`慎`,慠:`慠`,慺:`慺`,憎:`憎`,憎:`憎`,憎:`憎`,憐:`憐`,憤:`憤`,憯:`憯`,憲:`憲`,𢡄:vw,𢡊:yw,懞:`懞`,懲:`懲`,懲:`懲`,懲:`懲`,懶:`懶`,懶:`懶`,戀:`戀`,"⼽":`戈`,成:`成`,戛:`戛`,戮:`戮`,戴:`戴`,"⼾":`戶`,戸:`戶`,"⼿":`手`,"⺘":`扌`,扝:`扝`,抱:`抱`,拉:`拉`,拏:`拏`,拓:`拓`,拔:`拔`,拼:`拼`,拾:`拾`,𢬌:bw,挽:`挽`,捐:`捐`,捨:`捨`,捻:`捻`,掃:`掃`,掠:`掠`,掩:`掩`,揄:`揄`,揤:`揤`,摒:`摒`,𢯱:xw,搜:`搜`,搢:`搢`,揅:`揅`,摩:`摩`,摷:`摷`,摾:`摾`,㨮:`㨮`,搉:`㩁`,撚:`撚`,撝:`撝`,擄:`擄`,㩬:`㩬`,"⽀":`支`,"⽁":`攴`,"⺙":`攵`,敏:`敏`,敏:`敏`,敖:`敖`,敬:`敬`,數:`數`,𣀊:Sw,"⽂":`文`,"⻫":`斉`,"⽃":`斗`,料:`料`,"⽄":`斤`,"⽅":`方`,旅:`旅`,"⽆":`无`,"⺛":`旡`,既:`既`,旣:`旣`,"⽇":`日`,易:`易`,曶:`㫚`,㫤:`㫤`,晉:`晉`,晩:`晚`,晴:`晴`,晴:`晴`,暑:`暑`,暑:`暑`,暈:`暈`,㬈:`㬈`,暜:`暜`,暴:`暴`,曆:`曆`,㬙:`㬙`,𣊸:Cw,"⽈":`曰`,更:`更`,書:`書`,"⽉":`月`,𣍟:ww,肦:`朌`,胐:`朏`,胊:`朐`,脁:`朓`,胶:`㬵`,朗:`朗`,朗:`朗`,朗:`朗`,脧:`朘`,望:`望`,望:`望`,幐:`㬺`,䐠:`㬻`,𣎓:Tw,膧:`朣`,𣎜:Ew,"⽊":`木`,李:`李`,杓:`杓`,杖:`杖`,杞:`杞`,𣏃:Dw,柿:`杮`,杻:`杻`,枅:`枅`,林:`林`,㭉:`㭉`,𣏕:Ow,柳:`柳`,柺:`柺`,栗:`栗`,栟:`栟`,桒:`桒`,𣑭:kw,梁:`梁`,梅:`梅`,梅:`梅`,梎:`梎`,梨:`梨`,椔:`椔`,楂:`楂`,㮝:`㮝`,㮝:`㮝`,槩:`㮣`,樧:`榝`,榣:`榣`,槪:`槪`,樂:`樂`,樂:`樂`,樂:`樂`,樓:`樓`,𣚣:Aw,檨:`檨`,櫓:`櫓`,櫛:`櫛`,欄:`欄`,㰘:`㰘`,"⽋":`欠`,次:`次`,𣢧:jw,歔:`歔`,㱎:`㱎`,"⽌":`止`,"⻭":`歯`,歲:`歲`,歷:`歷`,歹:`歹`,"⽍":`歹`,"⺞":`歺`,殟:`殟`,殮:`殮`,"⽎":`殳`,殺:`殺`,殺:`殺`,殺:`殺`,殻:`殻`,𣪍:Mw,"⽏":`毋`,"⺟":`母`,𣫺:Nw,"⽐":`比`,"⽑":`毛`,"⽒":`氏`,"⺠":`民`,"⽓":`气`,"⽔":`水`,"⺡":`氵`,"⺢":`氺`,汎:`汎`,汧:`汧`,沈:`沈`,沿:`沿`,泌:`泌`,泍:`泍`,泥:`泥`,𣲼:Pw,洛:`洛`,洞:`洞`,洴:`洴`,派:`派`,流:`流`,流:`流`,流:`流`,洖:`洖`,浩:`浩`,浪:`浪`,海:`海`,海:`海`,浸:`浸`,涅:`涅`,𣴞:Fw,淋:`淋`,淚:`淚`,淪:`淪`,淹:`淹`,渚:`渚`,港:`港`,湮:`湮`,潙:`溈`,滋:`滋`,滋:`滋`,溜:`溜`,溺:`溺`,滇:`滇`,滑:`滑`,滛:`滛`,㴳:`㴳`,漏:`漏`,漢:`漢`,漢:`漢`,漣:`漣`,𣻑:Iw,潮:`潮`,𣽞:Lw,𣾎:Rw,濆:`濆`,濫:`濫`,濾:`濾`,瀛:`瀛`,瀞:`瀞`,瀞:`瀞`,瀹:`瀹`,灊:`灊`,㶖:`㶖`,"⽕":`火`,"⺣":`灬`,灰:`灰`,灷:`灷`,災:`災`,炙:`炙`,炭:`炭`,烈:`烈`,烙:`烙`,煮:`煮`,煮:`煮`,𤉣:zw,煅:`煅`,煉:`煉`,𤋮:Bw,熜:`熜`,燎:`燎`,燐:`燐`,𤎫:Vw,爐:`爐`,爛:`爛`,爨:`爨`,"⽖":`爪`,爫:`爫`,"⺤":`爫`,爵:`爵`,爵:`爵`,"⽗":`父`,"⽘":`爻`,"⺦":`丬`,"⽙":`爿`,"⽚":`片`,牐:`牐`,"⽛":`牙`,𤘈:Hw,"⽜":`牛`,牢:`牢`,犀:`犀`,犕:`犕`,"⽝":`犬`,"⺨":`犭`,犯:`犯`,狀:`狀`,𤜵:Uw,狼:`狼`,猪:`猪`,猪:`猪`,𤠔:Ww,獵:`獵`,獺:`獺`,"⽞":`玄`,率:`率`,率:`率`,"⽟":`玉`,王:`王`,㺬:`㺬`,玥:`玥`,玲:`玲`,㺸:`㺸`,㺸:`㺸`,珞:`珞`,琉:`琉`,理:`理`,琢:`琢`,瑇:`瑇`,瑜:`瑜`,瑩:`瑩`,瑱:`瑱`,瑱:`瑱`,璅:`璅`,璉:`璉`,璘:`璘`,瓊:`瓊`,"⽠":`瓜`,"⽡":`瓦`,㼛:`㼛`,甆:`甆`,"⽢":`甘`,"⽣":`生`,甤:`甤`,"⽤":`用`,"⽥":`田`,画:`画`,甾:`甾`,𤰶:Gw,留:`留`,略:`略`,異:`異`,異:`異`,𤲒:Kw,"⽦":`疋`,"⽧":`疒`,痢:`痢`,瘐:`瘐`,瘟:`瘟`,瘝:`瘝`,療:`療`,癩:`癩`,"⽨":`癶`,"⽩":`白`,𤾡:qw,𤾸:Jw,"⽪":`皮`,"⽫":`皿`,𥁄:Yw,㿼:`㿼`,益:`益`,益:`益`,盛:`盛`,盧:`盧`,䀈:`䀈`,"⽬":`目`,直:`直`,直:`直`,𥃲:Xw,𥃳:Zw,省:`省`,䀘:`䀘`,𥄙:Qw,眞:`眞`,真:`真`,真:`真`,𥄳:$w,着:`着`,睊:`睊`,睊:`睊`,鿃:`䀹`,䀹:`䀹`,䀹:`䀹`,晣:`䀿`,䁆:`䁆`,瞋:`瞋`,𥉉:eT,瞧:`瞧`,"⽭":`矛`,"⽮":`矢`,"⽯":`石`,䂖:`䂖`,𥐝:tT,硏:`研`,硎:`硎`,硫:`硫`,碌:`碌`,碌:`碌`,碑:`碑`,磊:`磊`,磌:`磌`,磌:`磌`,磻:`磻`,䃣:`䃣`,礪:`礪`,"⽰":`示`,"⺭":`礻`,礼:`礼`,社:`社`,祈:`祈`,祉:`祉`,𥘦:nT,祐:`祐`,祖:`祖`,祖:`祖`,祝:`祝`,神:`神`,祥:`祥`,視:`視`,視:`視`,祿:`祿`,𥚚:rT,禍:`禍`,禎:`禎`,福:`福`,福:`福`,𥛅:iT,禮:`禮`,"⽱":`禸`,"⽲":`禾`,秊:`秊`,䄯:`䄯`,秫:`秫`,稜:`稜`,穊:`穊`,穀:`穀`,穀:`穀`,穏:`穏`,"⽳":`穴`,突:`突`,𥥼:aT,窱:`窱`,立:`立`,"⽴":`立`,"⻯":`竜`,𥪧:oT,𥪧:sT,竮:`竮`,"⽵":`竹`,笠:`笠`,節:`節`,節:`節`,䈂:`䈂`,𥮫:cT,篆:`篆`,䈧:`䈧`,築:`築`,𥲀:lT,𥳐:uT,簾:`簾`,籠:`籠`,"⽶":`米`,类:`类`,粒:`粒`,精:`精`,糒:`糒`,糖:`糖`,糨:`糨`,䊠:`䊠`,糣:`糣`,糧:`糧`,"⽷":`糸`,"⺯":`糹`,𥾆:dT,紀:`紀`,紐:`紐`,索:`索`,累:`累`,絶:`絕`,絣:`絣`,絛:`絛`,綠:`綠`,綾:`綾`,緇:`緇`,練:`練`,練:`練`,練:`練`,縂:`縂`,䌁:`䌁`,縉:`縉`,縷:`縷`,繁:`繁`,繅:`繅`,𦇚:fT,䌴:`䌴`,"⽸":`缶`,𦈨:pT,缾:`缾`,𦉇:mT,"⽹":`网`,"⺫":`罒`,"⺲":`罒`,"⺱":`罓`,䍙:`䍙`,署:`署`,𦋙:hT,罹:`罹`,罺:`罺`,羅:`羅`,𦌾:gT,"⽺":`羊`,羕:`羕`,羚:`羚`,羽:`羽`,"⽻":`羽`,翺:`翺`,老:`老`,"⽼":`老`,"⺹":`耂`,者:`者`,者:`者`,者:`者`,"⽽":`而`,𦓚:_T,"⽾":`耒`,𦔣:vT,"⽿":`耳`,聆:`聆`,聠:`聠`,𦖨:yT,聯:`聯`,聰:`聰`,聾:`聾`,"⾀":`聿`,"⺺":`肀`,"⾁":`肉`,肋:`肋`,肭:`肭`,育:`育`,䏕:`䏕`,䏙:`䏙`,腁:`胼`,脃:`脃`,脾:`脾`,䐋:`䐋`,朡:`朡`,𦞧:bT,𦞵:xT,朦:`䑃`,臘:`臘`,"⾂":`臣`,臨:`臨`,"⾃":`自`,臭:`臭`,"⾄":`至`,"⾅":`臼`,舁:`舁`,舁:`舁`,舄:`舄`,"⾆":`舌`,舘:`舘`,"⾇":`舛`,"⾈":`舟`,䑫:`䑫`,"⾉":`艮`,良:`良`,"⾊":`色`,"⾋":`艸`,艹:`艹`,艹:`艹`,"⺾":`艹`,"⺿":`艹`,"⻀":`艹`,芋:`芋`,芑:`芑`,芝:`芝`,花:`花`,芳:`芳`,芽:`芽`,若:`若`,若:`若`,苦:`苦`,𦬼:ST,茶:`茶`,荒:`荒`,荣:`荣`,茝:`茝`,茣:`茣`,莽:`莽`,荓:`荓`,菉:`菉`,菊:`菊`,菌:`菌`,菜:`菜`,菧:`菧`,華:`華`,菱:`菱`,著:`著`,著:`著`,𦰶:CT,莭:`莭`,落:`落`,葉:`葉`,蔿:`蒍`,𦳕:wT,𦵫:TT,蓮:`蓮`,蓱:`蓱`,蓳:`蓳`,蓼:`蓼`,蔖:`蔖`,䔫:`䔫`,蕤:`蕤`,𦼬:ET,藍:`藍`,䕝:`䕝`,𦾱:DT,䕡:`䕡`,藺:`藺`,蘆:`蘆`,䕫:`䕫`,蘒:`蘒`,蘭:`蘭`,𧃒:OT,虁:`蘷`,蘿:`蘿`,"⾌":`虍`,"⻁":`虎`,虐:`虐`,虜:`虜`,虜:`虜`,虧:`虧`,虩:`虩`,"⾍":`虫`,蚩:`蚩`,蚈:`蚈`,蛢:`蛢`,蜎:`蜎`,蜨:`蜨`,蝫:`蝫`,蟡:`蟡`,蝹:`蝹`,蝹:`蝹`,螆:`螆`,䗗:`䗗`,𧏊:kT,螺:`螺`,蠁:`蠁`,䗹:`䗹`,蠟:`蠟`,"⾎":`血`,行:`行`,"⾏":`行`,衠:`衠`,衣:`衣`,"⾐":`衣`,"⻂":`衤`,裂:`裂`,𧙧:AT,裏:`裏`,裗:`裗`,裞:`裞`,裡:`裡`,裸:`裸`,裺:`裺`,䘵:`䘵`,褐:`褐`,襁:`襁`,襤:`襤`,"⾑":`襾`,"⻄":`西`,"⻃":`覀`,覆:`覆`,見:`見`,"⾒":`見`,𧢮:jT,"⻅":`见`,"⾓":`角`,"⾔":`言`,𧥦:MT,詽:`訮`,訞:`䚶`,䚾:`䚾`,䛇:`䛇`,誠:`誠`,說:`說`,說:`說`,調:`調`,請:`請`,諒:`諒`,論:`論`,諭:`諭`,諭:`諭`,諸:`諸`,諸:`諸`,諾:`諾`,諾:`諾`,謁:`謁`,謁:`謁`,謹:`謹`,謹:`謹`,識:`識`,讀:`讀`,讏:`讆`,變:`變`,變:`變`,"⻈":`讠`,"⾕":`谷`,"⾖":`豆`,豈:`豈`,豕:`豕`,"⾗":`豕`,豣:`豜`,"⾘":`豸`,𧲨:NT,"⾙":`貝`,貫:`貫`,賁:`賁`,賂:`賂`,賈:`賈`,賓:`賓`,贈:`贈`,贈:`贈`,贛:`贛`,"⻉":`贝`,"⾚":`赤`,"⾛":`走`,起:`起`,趆:`赿`,𧻓:PT,𧼯:FT,"⾜":`足`,跋:`跋`,趼:`趼`,跺:`跥`,路:`路`,跰:`跰`,躛:`躗`,"⾝":`身`,車:`車`,"⾞":`車`,軔:`軔`,輧:`軿`,輦:`輦`,輪:`輪`,輸:`輸`,輸:`輸`,輻:`輻`,轢:`轢`,"⻋":`车`,"⾟":`辛`,辞:`辞`,辰:`辰`,"⾠":`辰`,"⾡":`辵`,辶:`辶`,"⻌":`辶`,"⻍":`辶`,巡:`巡`,連:`連`,逸:`逸`,逸:`逸`,遲:`遲`,遼:`遼`,𨗒:IT,𨗭:LT,邏:`邏`,"⾢":`邑`,邔:`邔`,郎:`郎`,郞:`郎`,郞:`郎`,郱:`郱`,都:`都`,𨜮:RT,鄑:`鄑`,鄛:`鄛`,"⾣":`酉`,酪:`酪`,醙:`醙`,醴:`醴`,"⾤":`釆`,里:`里`,"⾥":`里`,量:`量`,金:`金`,"⾦":`金`,鈴:`鈴`,鈸:`鈸`,鉶:`鉶`,鋗:`鋗`,鋘:`鋘`,鉼:`鉼`,錄:`錄`,鍊:`鍊`,鎮:`鎭`,鏹:`鏹`,鐕:`鐕`,𨯺:zT,"⻐":`钅`,"⻑":`長`,"⾧":`長`,"⻒":`镸`,"⻓":`长`,"⾨":`門`,開:`開`,䦕:`䦕`,閭:`閭`,閷:`閷`,𨵷:BT,"⻔":`门`,"⾩":`阜`,"⻏":`阝`,"⻖":`阝`,阮:`阮`,陋:`陋`,降:`降`,陵:`陵`,陸:`陸`,陼:`陼`,隆:`隆`,隣:`隣`,䧦:`䧦`,"⾪":`隶`,隷:`隷`,隸:`隷`,隸:`隷`,"⾫":`隹`,雃:`雃`,離:`離`,難:`難`,難:`難`,"⾬":`雨`,零:`零`,雷:`雷`,霣:`霣`,𩅅:VT,露:`露`,靈:`靈`,"⾭":`靑`,"⻘":`青`,靖:`靖`,靖:`靖`,𩇟:HT,"⾮":`非`,"⾯":`面`,𩈚:UT,"⾰":`革`,䩮:`䩮`,䩶:`䩶`,"⾱":`韋`,韛:`韛`,韠:`韠`,"⻙":`韦`,"⾲":`韭`,𩐊:WT,"⾳":`音`,響:`響`,響:`響`,"⾴":`頁`,䪲:`䪲`,頋:`頋`,頋:`頋`,頋:`頋`,領:`領`,頩:`頩`,𩒖:GT,頻:`頻`,頻:`頻`,類:`類`,"⻚":`页`,"⾵":`風`,𩖶:KT,"⻛":`风`,"⾶":`飛`,"⻜":`飞`,"⻝":`食`,"⾷":`食`,"⻟":`飠`,飢:`飢`,飯:`飯`,飼:`飼`,䬳:`䬳`,館:`館`,餩:`餩`,"⻠":`饣`,"⾸":`首`,"⾹":`香`,馧:`馧`,"⾺":`馬`,駂:`駂`,駱:`駱`,駾:`駾`,驪:`驪`,"⻢":`马`,"⾻":`骨`,䯎:`䯎`,"⾼":`高`,"⾽":`髟`,𩬰:qT,鬒:`鬒`,鬒:`鬒`,"⾾":`鬥`,"⾿":`鬯`,"⿀":`鬲`,"⿁":`鬼`,"⻤":`鬼`,"⿂":`魚`,魯:`魯`,鱀:`鱀`,鱗:`鱗`,"⻥":`鱼`,"⿃":`鳥`,鳽:`鳽`,䳎:`䳎`,鵧:`鵧`,䳭:`䳭`,𪃎:JT,鶴:`鶴`,𪄅:YT,䳸:`䳸`,鷺:`鷺`,𪈎:XT,鸞:`鸞`,鹃:`鹂`,"⿄":`鹵`,鹿:`鹿`,"⿅":`鹿`,𪊑:ZT,麗:`麗`,麟:`麟`,"⿆":`麥`,"⻨":`麦`,麻:`麻`,"⿇":`麻`,𪎒:QT,"⿈":`黃`,"⻩":`黄`,"⿉":`黍`,黎:`黎`,䵖:`䵖`,"⿊":`黑`,黒:`黑`,墨:`墨`,黹:`黹`,"⿋":`黹`,"⿌":`黽`,鼅:`鼅`,黾:`黾`,"⿍":`鼎`,鼏:`鼏`,"⿎":`鼓`,鼖:`鼖`,"⿏":`鼠`,鼻:`鼻`,"⿐":`鼻`,齃:`齃`,"⿑":`齊`,"⻬":`齐`,"⿒":`齒`,𪘀:$T,"⻮":`齿`,龍:`龍`,"⿓":`龍`,龎:`龎`,"⻰":`龙`,龜:`龜`,龜:`龜`,龜:`龜`,"⿔":`龜`,"⻳":`龟`,"⿕":`龠`}})),nE=u(s(((e,t)=>{var n=(tE(),d(ie).default);function r(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,`\\$1`)}var i=RegExp(Object.keys(n).map(r).join(`|`),`g`);function a(e){return n[e]}function o(e){return e.replace(i,a)}t.exports=o}))(),1);const rE=Object.prototype.toString,iE=e=>rE.call(e)===`[object Error]`,aE=new Set([`network error`,`NetworkError when attempting to fetch resource.`,`The Internet connection appears to be offline.`,`Network request failed`,`fetch failed`,`terminated`,` A network error occurred.`,`Network connection lost`]);function oE(e){if(!(e&&iE(e)&&e.name===`TypeError`&&typeof e.message==`string`))return!1;let{message:t,stack:n}=e;return t===`Load failed`?n===void 0||`__sentry_captured__`in e:t.startsWith(`error sending request for url`)||t===`Failed to fetch`||t.startsWith(`Failed to fetch (`)&&t.endsWith(`)`)?!0:aE.has(t)}function sE(e){if(typeof e==`number`){if(e<0)throw TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(e))throw TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(e!==void 0)throw TypeError("Expected `retries` to be a number or Infinity.")}function cE(e,t,{min:n=0,allowInfinity:r=!1}={}){if(t!==void 0){if(typeof t!=`number`||Number.isNaN(t))throw TypeError(`Expected \`${e}\` to be a number${r?` or Infinity`:``}.`);if(!r&&!Number.isFinite(t))throw TypeError(`Expected \`${e}\` to be a finite number.`);if(t<n)throw TypeError(`Expected \`${e}\` to be \u2265 ${n}.`)}}function lE(e,t){if(t!==void 0&&typeof t!=`function`)throw TypeError(`Expected \`${e}\` to be a function.`)}var uE=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=Error(e),this.originalError.stack=this.stack),this.name=`AbortError`,this.message=e}};function dE(e,t){let n=Math.max(1,e+1),r=t.randomize?Math.random()+1:1,i=Math.round(r*t.minTimeout*t.factor**(n-1));return i=Math.min(i,t.maxTimeout),i}function fE(e,t){return Number.isFinite(t)?t-(performance.now()-e):t}async function pE(e,t){e<=0||await new Promise((n,r)=>{let i=()=>{clearTimeout(a),t.signal?.removeEventListener(`abort`,i),r(t.signal.reason)},a=setTimeout(()=>{t.signal?.removeEventListener(`abort`,i),n()},e);t.unref&&a.unref?.(),t.signal?.addEventListener(`abort`,i,{once:!0})})}async function mE({error:e,attemptNumber:t,retriesConsumed:n,startTime:r,options:i}){let a=e instanceof Error?e:TypeError(`Non-error was thrown: "${e}". You should only throw errors.`);if(a instanceof uE)throw a.originalError;let o=Number.isFinite(i.retries)?Math.max(0,i.retries-n):i.retries,s=i.maxRetryTime??1/0,c=dE(n,i);if(fE(r,s)<=0){let e=Object.freeze({error:a,attemptNumber:t,retriesLeft:o,retriesConsumed:n,retryDelay:0});throw await i.onFailedAttempt(e),a}let l=Object.freeze({error:a,attemptNumber:t,retriesLeft:o,retriesConsumed:n,retryDelay:o>0?c:0}),u=await i.shouldConsumeRetry(l),d=u&&o>0?c:0,f=Object.freeze({error:a,attemptNumber:t,retriesLeft:o,retriesConsumed:n,retryDelay:d});if(await i.onFailedAttempt(f),fE(r,s)<=0||fE(r,s)<=0||o<=0||a instanceof TypeError&&!oE(a)||!await i.shouldRetry(f))throw a;let p=fE(r,s);if(p<=0)throw a;if(!u)return i.signal?.throwIfAborted(),!1;let m=Math.min(d,p);return i.signal?.throwIfAborted(),await pE(m,i),i.signal?.throwIfAborted(),!0}async function hE(e,t={}){if(t={...t},sE(t.retries),Object.hasOwn(t,`forever`))throw Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");t.retries??=10,t.factor??=2,t.minTimeout??=1e3,t.maxTimeout??=1/0,t.maxRetryTime??=1/0,t.randomize??=!1,t.onFailedAttempt??=()=>{},t.shouldRetry??=()=>!0,t.shouldConsumeRetry??=()=>!0,lE(`onFailedAttempt`,t.onFailedAttempt),lE(`shouldRetry`,t.shouldRetry),lE(`shouldConsumeRetry`,t.shouldConsumeRetry),cE(`factor`,t.factor,{min:0,allowInfinity:!1}),cE(`minTimeout`,t.minTimeout,{min:0,allowInfinity:!1}),cE(`maxTimeout`,t.maxTimeout,{min:0,allowInfinity:!0}),cE(`maxRetryTime`,t.maxRetryTime,{min:0,allowInfinity:!0}),t.factor>0||(t.factor=1),t.signal?.throwIfAborted();let n=0,r=0,i=performance.now();for(;!Number.isFinite(t.retries)||r<=t.retries;){n++;try{t.signal?.throwIfAborted();let r=await e(n);return t.signal?.throwIfAborted(),r}catch(e){await mE({error:e,attemptNumber:n,retriesConsumed:r,startTime:i,options:t})&&r++}}throw Error(`Retry attempts exhausted without throwing an error.`)}var gE=class{constructor(e,t){if(this.stable=e,this.unstable=t,!this.unstable&&!this.stable)throw Error(`One of stable or unstable values must be supplied`)}get name(){return this.stable?this.stable:this.unstable}get altName(){return this.stable?this.unstable:null}get names(){var e=[this.name],t=this.altName;return t&&e.push(t),e}matches(e){return this.name===e||this.altName===e}findIn(e){var t=void 0;return this.name&&(t=e?.[this.name]),!t&&this.altName&&(t=e?.[this.altName]),t}includedIn(e){var t=!1;return this.name&&(t=e.includes(this.name)),!t&&this.altName&&(t=e.includes(this.altName)),t}},_E=class extends gE{constructor(){super(...arguments),h(this,`preferUnstable`,!1)}setPreferUnstable(e){this.preferUnstable=e}get name(){return this.stable&&!this.preferUnstable?this.stable:this.unstable}},vE=class extends gE{constructor(e,t){if(super(e,t),!this.unstable)throw Error(`Unstable value must be supplied`)}get name(){return this.unstable}get altName(){return this.stable}},yE=new vE(`m.asset`,`org.matrix.msc3488.asset`),bE=new vE(`m.ts`,`org.matrix.msc3488.ts`),xE=new vE(`m.location`,`org.matrix.msc3488.location`),SE=function(e){return e.Read=`m.read`,e.FullyRead=`m.fully_read`,e.ReadPrivate=`m.read.private`,e}({}),CE=`main`;function wE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function TE(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?wE(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wE(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var EE=new Map;function DE(e){return e instanceof String&&(e=e.toString()),EE.has(e)||EE.set(e,e),EE.get(e)}function OE(e,t){var n=t??new URLSearchParams,r=function(){i=x(a,2);var e=i[0],t=i[1];t!=null&&(Array.isArray(t)?t.forEach(t=>{n.append(e,String(t))}):n.append(e,String(t)))},i;for(var a of Object.entries(e))r();return n}function kE(e,t,n){var r=TE(TE({},n),{},{[t]:n[e]});return delete r[e],r}function T(e,t){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];r!=null&&(e=e.replace(n,encodeURIComponent(r)))}return e}function AE(e,t,n){var r;if(n){for(r=e.length-1;r>=0;r--)if(t(e[r],r,e))return e.splice(r,1),!0}else for(r=0;r<e.length;r++)if(t(e[r],r,e))return e.splice(r,1),!0;return!1}function jE(e,t){for(var n of t)if(!e.hasOwnProperty(n))throw Error(`Missing required key: `+n)}function ME(e){return JSON.parse(JSON.stringify(e))}function NE(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`number`&&isNaN(e)&&isNaN(t))return!0;if(e===null||t===null)return e===t;if(e.constructor.name!==`Object`&&e.constructor.name!==`RegExp`&&e.constructor.name!==`Date`&&e.constructor.name!==`Array`||e.prototype!==t.prototype)return!1;if(e instanceof RegExp||e instanceof Date)return e.toString()===t.toString();if(Array.isArray(e)){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!NE(e[n],t[n]))return!1}else{for(var r in t)if(t.hasOwnProperty(r)!==e.hasOwnProperty(r))return!1;for(var i in e)if(t.hasOwnProperty(i)!==e.hasOwnProperty(i)||!NE(e[i],t[i]))return!1}return!0}function PE(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;var t=[];for(var n of Object.entries(e)){var r=x(n,2),i=r[0],a=r[1];t.push([i,PE(a)])}return t.sort((e,t)=>aD(e[0],t[0])),t}function FE(e){return typeof e==`number`&&isFinite(e)}function IE(e){return typeof e==`string`?(0,nE.default)(e.normalize(`NFD`).replace(zE,``)):``}function LE(e){return typeof e==`string`?e.replace(/[\u202d-\u202e]/g,``):``}function RE(e){return IE(e.toLowerCase()).replace(/[\\'!"#$%&()*+,\-./:;<=>?@[\]^_`{|}~\u2000-\u206f\u2e00-\u2e7f]/g,``).toLowerCase()}var zE=/[\u2000-\u200F\u202A-\u202F\u0300-\u036F\uFEFF\u061C\u2800\u2062-\u2063\s]/g;function BE(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function VE(e){return BE(e).replace(/\\\*/g,`.*`).replace(/\?/g,`.`)}function HE(e){return e!=null&&e.endsWith(`/`)?e.slice(0,-1):e}function UE(e,t){return new Promise(n=>{setTimeout(n,e,t)})}function WE(e,t,n){return GE.apply(this,arguments)}function GE(){return GE=C(function*(e,t,n){var r=Date.now();try{return yield n()}finally{var i=Date.now();e.debug(`[Perf]: ${t} took ${i-r}ms`)}}),GE.apply(this,arguments)}function KE(e,t,n){var r=Date.now();try{return n()}finally{var i=Date.now();e.debug(`[Perf]: ${t} took ${i-r}ms`)}}function qE(e){return e==null}function JE(e,t){return YE.apply(this,arguments)}function YE(){return YE=C(function*(e,t){for(var n of e)yield t(yield n)}),YE.apply(this,arguments)}function XE(e){return Promise.resolve(e())}function ZE(e,t){return hE(t=>e(t),{retries:1/0,shouldRetry:t?e=>{var n=e.error;return t(n)}:void 0,factor:2,minTimeout:3e3,maxTimeout:15e3})}var QE=(()=>{for(var e=``,t=32;t<=126;t++)e+=String.fromCharCode(t);return e})();function $E(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:QE;return e.padEnd(t,n[0])}function eD(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:QE,n=BigInt(t.length);if(e<=n)return t[Number(e)-1]??``;var r=e/n,i=Number(e%n)-1;return i<0&&(r-=BigInt(Math.abs(i)),i=Number(n)-1),eD(r,t)+t[i]}function tD(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:QE,n=BigInt(t.length),r=BigInt(0),i=e.length-1,a=BigInt(0);i>=0;i--,a++){var o=e.charCodeAt(i)-t.charCodeAt(0);r+=BigInt(1+o)*n**a}return r}function nD(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:QE,r=Math.max(e.length,t.length),i=tD($E(e,r,n),n),a=tD($E(t,r,n),n),o=(i+a)/BigInt(2);return o===i||o==a?eD(o,n)+n[0]:eD(o,n)}function rD(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:QE;return eD(tD(e,t)+BigInt(1),t)}function iD(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:QE;return eD(tD(e,t)-BigInt(1),t)}function aD(e,t){return e<t?-1:+(e>t)}function oD(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;for(var r of Object.entries(t)){var i=x(r,2),a=i[0],o=i[1];if(e[a]instanceof Object&&o){oD(e[a],o);continue}if(o!=null||!n){mD(e,a,o);continue}}return e}function sD(e){return bE.findIn(e.getContent())??-1}function cD(e,t){return sD(t)-sD(e)}function lD(e){return[SE.Read,SE.ReadPrivate].includes(e)}function uD(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(e,t)=>e===t;if(e.size!==t.size)return!1;for(var r of e){var i=x(r,2),a=i[0],o=i[1],s=t.get(a);if(s===void 0||!n(o,s))return!1}return!0}function dD(e){return e instanceof Map?fD(e):Array.isArray(e)?e.map(e=>dD(e)):e}function fD(e){var t=new Map;for(var n of e){var r=x(n,2),i=r[0],a=r[1];t.set(i,dD(a))}return Object.fromEntries(t.entries())}function pD(e){return e===`__proto__`||e===`prototype`||e===`constructor`}function mD(e,t,n){if(pD(t))throw Error(`Trying to modify prototype or constructor`);e[t]=n}function hD(e){return!(pD(e.room_id)||pD(e.sender)||pD(e.event_id))}var gD=class extends Map{constructor(e){super(),this.createDefault=e}getOrCreate(e){return this.has(e)||this.set(e,this.createDefault()),this.get(e)}},_D=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NamespacedMap=void 0;function t(e,t){var r=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!r){if(Array.isArray(e)||(r=n(e))||t&&e&&typeof e.length==`number`){r&&(e=r);var i=0,a=function(){};return{s:a,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:a}}throw TypeError(`Invalid attempt to iterate non-iterable instance. 3 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,c;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,c=e},f:function(){try{!o&&r.return!=null&&r.return()}finally{if(s)throw c}}}}function n(e,t){if(e){if(typeof e==`string`)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}}function r(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.NamespacedMap=function(){function e(n){if(i(this,e),s(this,`internalMap`,new Map),n){var r=t(n),a;try{for(r.s();!(a=r.n()).done;){var o=a.value;this.set(o[0],o[1])}}catch(e){r.e(e)}finally{r.f()}}}return o(e,[{key:`get`,value:function(e){return e.name&&this.internalMap.has(e.name)?this.internalMap.get(e.name):e.altName&&this.internalMap.has(e.altName)?this.internalMap.get(e.altName):null}},{key:`set`,value:function(e,t){e.name&&this.internalMap.set(e.name,t),e.altName&&this.internalMap.set(e.altName,t)}},{key:`has`,value:function(e){return!!this.get(e)}},{key:`delete`,value:function(e){e.name&&this.internalMap.delete(e.name),e.altName&&this.internalMap.delete(e.altName)}},{key:`hasNamespaced`,value:function(e){return this.internalMap.has(e)}},{key:`getNamespaced`,value:function(e){return this.internalMap.get(e)}}]),e}()})),vD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.InvalidEventError=void 0;function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function a(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}function o(e){var t=d();return function(){var n=m(e),r;if(t){var i=m(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return s(this,r)}}function s(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return c(e)}function c(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function l(e){var t=typeof Map==`function`?new Map:void 0;return l=function(e){if(e===null||!f(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return u(e,arguments,m(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),p(n,e)},l(e)}function u(e,t,n){return u=d()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&p(i,n.prototype),i},u.apply(null,arguments)}function d(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function f(e){return Function.toString.call(e).indexOf(`[native code]`)!==-1}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}e.InvalidEventError=function(e){a(n,e);var t=o(n);function n(e){return i(this,n),t.call(this,e)}return r(n)}(l(Error))})),yD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ExtensibleEvent=void 0;function t(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}e.ExtensibleEvent=function(){function e(n){t(this,e),this.wireFormat=n}return r(e,[{key:`wireContent`,get:function(){return this.wireFormat.content}}]),e}()})),bD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isOptionalAString=t,e.isProvided=n;function t(e){return n(e)&&typeof e==`string`}function n(e){return e!=null}})),xD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.UnstableValue=e.NamespacedValue=void 0;function n(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&r(e,t)}function r(e,t){return r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},r(e,t)}function i(e){var t=s();return function(){var n=c(e),r;if(t){var i=c(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return a(this,r)}}function a(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return o(e)}function o(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function s(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function l(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var f=function(){function e(t,n){if(l(this,e),this.stable=t,this.unstable=n,!this.unstable&&!this.stable)throw Error(`One of stable or unstable values must be supplied`)}return d(e,[{key:`name`,get:function(){return this.stable?this.stable:this.unstable}},{key:`altName`,get:function(){return this.stable?this.unstable:null}},{key:`matches`,value:function(e){return!!this.name&&this.name===e||!!this.altName&&this.altName===e}},{key:`findIn`,value:function(e){var t;return this.name&&(t=e?.[this.name]),!t&&this.altName&&(t=e?.[this.altName]),t}},{key:`includedIn`,value:function(e){var t=!1;return this.name&&(t=e.includes(this.name)),!t&&this.altName&&(t=e.includes(this.altName)),t}}]),e}();e.NamespacedValue=f,e.UnstableValue=function(e){n(r,e);var t=i(r);function r(e,n){var i;if(l(this,r),i=t.call(this,e,n),!i.unstable)throw Error(`Unstable value must be supplied`);return i}return d(r,[{key:`name`,get:function(){return this.unstable}},{key:`altName`,get:function(){return this.stable}}]),r}(f)})),SD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.M_TEXT=e.M_NOTICE=e.M_MESSAGE=e.M_HTML=e.M_EMOTE=void 0;var t=xD();e.M_MESSAGE=new t.UnstableValue(`m.message`,`org.matrix.msc1767.message`),e.M_TEXT=new t.UnstableValue(`m.text`,`org.matrix.msc1767.text`),e.M_HTML=new t.UnstableValue(`m.html`,`org.matrix.msc1767.html`),e.M_EMOTE=new t.UnstableValue(`m.emote`,`org.matrix.msc1767.emote`),e.M_NOTICE=new t.UnstableValue(`m.notice`,`org.matrix.msc1767.notice`)})),CD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isEventTypeSame=t;function t(e,t){if(typeof e==`string`)return typeof t==`string`?t===e:t.matches(e);if(typeof t==`string`)return e.matches(t);var n=t,r=e;return n.matches(r.name)||n.matches(r.altName)}})),wD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.MessageEvent=void 0;var n=yD(),r=bD(),i=vD(),a=SD(),o=CD();function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?s(Object(n),!0).forEach(function(t){y(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function l(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function f(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function m(e){var t=_();return function(){var n=v(e),r;if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return h(this,r)}}function h(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return g(e)}function g(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function _(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function v(e){return v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},v(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.MessageEvent=function(e){f(n,e);var t=m(n);function n(e){var o;l(this,n),o=t.call(this,e),y(g(o),`text`,void 0),y(g(o),`html`,void 0),y(g(o),`renderings`,void 0);var s=a.M_MESSAGE.findIn(o.wireContent),c=a.M_TEXT.findIn(o.wireContent),u=a.M_HTML.findIn(o.wireContent);if((0,r.isProvided)(s)){if(!Array.isArray(s))throw new i.InvalidEventError(`m.message contents must be an array`);var d=s.find(function(e){return!(0,r.isProvided)(e.mimetype)||e.mimetype===`text/plain`}),f=s.find(function(e){return e.mimetype===`text/html`});if(!d)throw new i.InvalidEventError(`m.message is missing a plain text representation`);o.text=d.body,o.html=f?.body,o.renderings=s}else if((0,r.isOptionalAString)(c))o.text=c,o.html=u,o.renderings=[{body:c,mimetype:`text/plain`}],o.html&&o.renderings.push({body:o.html,mimetype:`text/html`});else throw new i.InvalidEventError(`Missing textual representation for event`);return o}return d(n,[{key:`isEmote`,get:function(){return a.M_EMOTE.matches(this.wireFormat.type)||(0,r.isProvided)(a.M_EMOTE.findIn(this.wireFormat.content))}},{key:`isNotice`,get:function(){return a.M_NOTICE.matches(this.wireFormat.type)||(0,r.isProvided)(a.M_NOTICE.findIn(this.wireFormat.content))}},{key:`isEquivalentTo`,value:function(e){return(0,o.isEventTypeSame)(e,a.M_MESSAGE)}},{key:`serializeMMessageOnly`,value:function(){var e=y({},a.M_MESSAGE.name,this.renderings);if(this.renderings.length===1){var t=this.renderings[0].mimetype;(t===void 0||t===`text/plain`)&&(e=y({},a.M_TEXT.name,this.renderings[0].body))}return e}},{key:`serialize`,value:function(){return{type:`m.room.message`,content:c(c({},this.serializeMMessageOnly()),{},{body:this.text,msgtype:`m.text`,format:this.html?`org.matrix.custom.html`:void 0,formatted_body:this.html??void 0})}}}],[{key:`from`,value:function(e,t){var r;return new n({type:a.M_MESSAGE.name,content:(r={},y(r,a.M_TEXT.name,e),y(r,a.M_HTML.name,t),r)})}}]),n}(n.ExtensibleEvent)})),TD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.NoticeEvent=void 0;var n=wD(),r=SD(),i=CD();function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function l(){return l=typeof Reflect<`u`&&Reflect.get?Reflect.get:function(e,t,n){var r=u(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},l.apply(this,arguments)}function u(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=_(e),e!==null););return e}function d(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e){var t=g();return function(){var n=_(e),r;if(t){var i=_(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}function m(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return h(e)}function h(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function g(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}e.NoticeEvent=function(e){d(n,e);var t=p(n);function n(e){return o(this,n),t.call(this,e)}return c(n,[{key:`isNotice`,get:function(){return!0}},{key:`isEquivalentTo`,value:function(e){return(0,i.isEventTypeSame)(e,r.M_NOTICE)||l(_(n.prototype),`isEquivalentTo`,this).call(this,e)}},{key:`serialize`,value:function(){var e=l(_(n.prototype),`serialize`,this).call(this);return e.content.msgtype=`m.notice`,e}}],[{key:`from`,value:function(e,t){var i;return new n({type:r.M_NOTICE.name,content:(i={},a(i,r.M_TEXT.name,e),a(i,r.M_HTML.name,t),i)})}}]),n}(n.MessageEvent)})),ED=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.EmoteEvent=void 0;var n=wD(),r=SD(),i=CD();function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function l(){return l=typeof Reflect<`u`&&Reflect.get?Reflect.get:function(e,t,n){var r=u(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},l.apply(this,arguments)}function u(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=_(e),e!==null););return e}function d(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function p(e){var t=g();return function(){var n=_(e),r;if(t){var i=_(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}function m(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return h(e)}function h(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function g(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}e.EmoteEvent=function(e){d(n,e);var t=p(n);function n(e){return o(this,n),t.call(this,e)}return c(n,[{key:`isEmote`,get:function(){return!0}},{key:`isEquivalentTo`,value:function(e){return(0,i.isEventTypeSame)(e,r.M_EMOTE)||l(_(n.prototype),`isEquivalentTo`,this).call(this,e)}},{key:`serialize`,value:function(){var e=l(_(n.prototype),`serialize`,this).call(this);return e.content.msgtype=`m.emote`,e}}],[{key:`from`,value:function(e,t){var i;return new n({type:r.M_EMOTE.name,content:(i={},a(i,r.M_TEXT.name,e),a(i,r.M_HTML.name,t),i)})}}]),n}(n.MessageEvent)})),DD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LEGACY_M_ROOM_MESSAGE=void 0,e.parseMRoomMessage=l;var t=wD(),n=TD(),r=ED(),i=xD(),a=SD();function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?o(Object(n),!0).forEach(function(t){c(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.LEGACY_M_ROOM_MESSAGE=new i.NamespacedValue(`m.room.message`);function l(e){if(a.M_MESSAGE.findIn(e.content)||a.M_TEXT.findIn(e.content))return new t.MessageEvent(e);var i=e.content?.msgtype,o=e.content?.body,l=e.content?.format===`org.matrix.custom.html`?e.content.formatted_body:null;if(i===`m.text`){var u;return new t.MessageEvent(s(s({},e),{},{content:s(s({},e.content),{},(u={},c(u,a.M_TEXT.name,o),c(u,a.M_HTML.name,l),u))}))}else if(i===`m.notice`){var d;return new n.NoticeEvent(s(s({},e),{},{content:s(s({},e.content),{},(d={},c(d,a.M_TEXT.name,o),c(d,a.M_HTML.name,l),d))}))}else if(i===`m.emote`){var f;return new r.EmoteEvent(s(s({},e),{},{content:s(s({},e.content),{},(f={},c(f,a.M_TEXT.name,o),c(f,a.M_HTML.name,l),f))}))}else return null}})),OD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseMMessage=a;var t=wD(),n=SD(),r=ED(),i=TD();function a(e){return n.M_EMOTE.matches(e.type)?new r.EmoteEvent(e):n.M_NOTICE.matches(e.type)?new i.NoticeEvent(e):new t.MessageEvent(e)}})),kD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.M_POLL_START=e.M_POLL_RESPONSE=e.M_POLL_KIND_UNDISCLOSED=e.M_POLL_KIND_DISCLOSED=e.M_POLL_END=void 0;var t=xD();e.M_POLL_KIND_DISCLOSED=new t.UnstableValue(`m.poll.disclosed`,`org.matrix.msc3381.poll.disclosed`),e.M_POLL_KIND_UNDISCLOSED=new t.UnstableValue(`m.poll.undisclosed`,`org.matrix.msc3381.poll.undisclosed`),e.M_POLL_START=new t.UnstableValue(`m.poll.start`,`org.matrix.msc3381.poll.start`),e.M_POLL_RESPONSE=new t.UnstableValue(`m.poll.response`,`org.matrix.msc3381.poll.response`),e.M_POLL_END=new t.UnstableValue(`m.poll.end`,`org.matrix.msc3381.poll.end`)})),AD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.PollStartEvent=e.PollAnswerSubevent=void 0;var n=kD(),r=wD(),i=SD(),a=vD(),o=xD(),s=CD(),c=yD();function l(e){return p(e)||f(e)||d(e)||u()}function u(){throw TypeError(`Invalid attempt to spread non-iterable instance. 4 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function d(e,t){if(e){if(typeof e==`string`)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}}function f(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function p(e){if(Array.isArray(e))return m(e)}function m(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?h(Object(n),!0).forEach(function(t){w(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function b(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function S(e){var t=te();return function(){var n=ne(e),r;if(t){var i=ne(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return C(this,r)}}function C(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return ee(e)}function ee(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function te(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ne(e){return ne=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},ne(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=function(e){b(n,e);var t=S(n);function n(e){var r;_(this,n),r=t.call(this,e),w(ee(r),`id`,void 0);var i=e.content.id;if(!i||typeof i!=`string`)throw new a.InvalidEventError(`Answer ID must be a non-empty string`);return r.id=i,r}return y(n,[{key:`serialize`,value:function(){return{type:`org.matrix.sdk.poll.answer`,content:g({id:this.id},this.serializeMMessageOnly())}}}],[{key:`from`,value:function(e,t){return new n({type:`org.matrix.sdk.poll.answer`,content:w({id:e},i.M_TEXT.name,t)})}}]),n}(r.MessageEvent);e.PollAnswerSubevent=re,e.PollStartEvent=function(e){b(c,e);var t=S(c);function c(e){var i;_(this,c),i=t.call(this,e),w(ee(i),`question`,void 0),w(ee(i),`kind`,void 0),w(ee(i),`rawKind`,void 0),w(ee(i),`maxSelections`,void 0),w(ee(i),`answers`,void 0);var o=n.M_POLL_START.findIn(i.wireContent);if(!o.question)throw new a.InvalidEventError(`A question is required`);if(i.question=new r.MessageEvent({type:`org.matrix.sdk.poll.question`,content:o.question}),i.rawKind=o.kind,n.M_POLL_KIND_DISCLOSED.matches(i.rawKind)?i.kind=n.M_POLL_KIND_DISCLOSED:i.kind=n.M_POLL_KIND_UNDISCLOSED,i.maxSelections=Number.isFinite(o.max_selections)&&o.max_selections>0?o.max_selections:1,!Array.isArray(o.answers))throw new a.InvalidEventError(`Poll answers must be an array`);var s=o.answers.slice(0,20).map(function(e){return new re({type:`org.matrix.sdk.poll.answer`,content:e})});if(s.length<=0)throw new a.InvalidEventError(`No answers available`);return i.answers=s,i}return y(c,[{key:`isEquivalentTo`,value:function(e){return(0,s.isEventTypeSame)(e,n.M_POLL_START)}},{key:`serialize`,value:function(){var e;return{type:n.M_POLL_START.name,content:(e={},w(e,n.M_POLL_START.name,{question:this.question.serialize().content,kind:this.rawKind,max_selections:this.maxSelections,answers:this.answers.map(function(e){return e.serialize().content})}),w(e,i.M_TEXT.name,`${this.question.text} 5 ${this.answers.map(function(e,t){return`${t+1}. ${e.text}`}).join(` 6 `)}`),e)}}}],[{key:`from`,value:function(e,t,r){var a,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;return new c({type:n.M_POLL_START.name,content:(a={},w(a,i.M_TEXT.name,e),w(a,n.M_POLL_START.name,{question:w({},i.M_TEXT.name,e),kind:r instanceof o.NamespacedValue?r.name:r,max_selections:s,answers:t.map(function(e){return w({id:ae()},i.M_TEXT.name,e)})}),a)})}}]),c}(c.ExtensibleEvent);var ie=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`;function ae(){return l(Array(16)).map(function(){return ie.charAt(Math.floor(Math.random()*ie.length))}).join(``)}})),jD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.REFERENCE_RELATION=void 0,e.REFERENCE_RELATION=new(xD()).NamespacedValue(`m.reference`)})),MD=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.PollResponseEvent=void 0;var n=yD(),r=kD(),i=vD(),a=jD(),o=CD();function s(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function u(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function f(e){var t=h();return function(){var n=g(e),r;if(t){var i=g(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return p(this,r)}}function p(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return m(e)}function m(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function h(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.PollResponseEvent=function(e){u(n,e);var t=f(n);function n(e){var r;s(this,n),r=t.call(this,e),_(m(r),`internalAnswerIds`,void 0),_(m(r),`internalSpoiled`,void 0),_(m(r),`pollEventId`,void 0);var o=r.wireContent[`m.relates_to`];if(!a.REFERENCE_RELATION.matches(o?.rel_type)||typeof o?.event_id!=`string`)throw new i.InvalidEventError(`Relationship must be a reference to an event`);return r.pollEventId=o.event_id,r.validateAgainst(null),r}return l(n,[{key:`answerIds`,get:function(){return this.internalAnswerIds}},{key:`spoiled`,get:function(){return this.internalSpoiled}},{key:`validateAgainst`,value:function(e){var t=r.M_POLL_RESPONSE.findIn(this.wireContent);if(!Array.isArray(t?.answers)){this.internalSpoiled=!0,this.internalAnswerIds=[];return}var n=t.answers;if(n.some(function(e){return typeof e!=`string`})||n.length===0){this.internalSpoiled=!0,this.internalAnswerIds=[];return}if(e){if(n.some(function(t){return!e.answers.some(function(e){return e.id===t})})){this.internalSpoiled=!0,this.internalAnswerIds=[];return}n=n.slice(0,e.maxSelections)}this.internalAnswerIds=n,this.internalSpoiled=!1}},{key:`isEquivalentTo`,value:function(e){return(0,o.isEventTypeSame)(e,r.M_POLL_RESPONSE)}},{key:`serialize`,value:function(){return{type:r.M_POLL_RESPONSE.name,content:_({"m.relates_to":{rel_type:a.REFERENCE_RELATION.name,event_id:this.pollEventId}},r.M_POLL_RESPONSE.name,{answers:this.spoiled?void 0:this.answerIds})}}}],[{key:`from`,value:function(e,t){return new n({type:r.M_POLL_RESPONSE.name,content:_({"m.relates_to":{rel_type:a.REFERENCE_RELATION.name,event_id:t}},r.M_POLL_RESPONSE.name,{answers:e})})}}]),n}(n.ExtensibleEvent)})),ND=s((e=>{function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.PollEndEvent=void 0;var n=kD(),r=vD(),i=jD(),a=wD(),o=SD(),s=CD(),c=yD();function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?l(Object(n),!0).forEach(function(t){x(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function d(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t,n){return t&&f(e.prototype,t),n&&f(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function g(e){var t=y();return function(){var n=b(e),r;if(t){var i=b(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _(this,r)}}function _(e,n){if(n&&(t(n)===`object`||typeof n==`function`))return n;if(n!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return v(e)}function v(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function y(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function b(e){return b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},b(e)}function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.PollEndEvent=function(e){m(c,e);var t=g(c);function c(e){var n;d(this,c),n=t.call(this,e),x(v(n),`pollEventId`,void 0),x(v(n),`closingMessage`,void 0);var o=n.wireContent[`m.relates_to`];if(!i.REFERENCE_RELATION.matches(o?.rel_type)||typeof o?.event_id!=`string`)throw new r.InvalidEventError(`Relationship must be a reference to an event`);return n.pollEventId=o.event_id,n.closingMessage=new a.MessageEvent(n.wireFormat),n}return p(c,[{key:`isEquivalentTo`,value:function(e){return(0,s.isEventTypeSame)(e,n.M_POLL_END)}},{key:`serialize`,value:function(){return{type:n.M_POLL_END.name,content:u(x({"m.relates_to":{rel_type:i.REFERENCE_RELATION.name,event_id:this.pollEventId}},n.M_POLL_END.name,{}),this.closingMessage.serialize().content)}}}],[{key:`from`,value:function(e,t){var r;return new c({type:n.M_POLL_END.name,content:(r={"m.relates_to":{rel_type:i.REFERENCE_RELATION.name,event_id:e}},x(r,n.M_POLL_END.name,{}),x(r,o.M_TEXT.name,t),r)})}}]),c}(c.ExtensibleEvent)})),PD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseMPoll=a;var t=kD(),n=AD(),r=MD(),i=ND();function a(e){return t.M_POLL_START.matches(e.type)?new n.PollStartEvent(e):t.M_POLL_RESPONSE.matches(e.type)?new r.PollResponseEvent(e):t.M_POLL_END.matches(e.type)?new i.PollEndEvent(e):null}})),FD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ExtensibleEvents=void 0;var t=_D(),n=vD(),r=DD(),i=OD(),a=SD(),o=kD(),s=PD();function c(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=l(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance. 7 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,o=!1,s;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,s=e},f:function(){try{!a&&n.return!=null&&n.return()}finally{if(o)throw s}}}}function l(e,t){if(e){if(typeof e==`string`)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}}function u(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t,n){return t&&f(e.prototype,t),n&&f(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=function(){function e(){d(this,e),m(this,`interpreters`,new t.NamespacedMap([[r.LEGACY_M_ROOM_MESSAGE,r.parseMRoomMessage],[a.M_MESSAGE,i.parseMMessage],[a.M_EMOTE,i.parseMMessage],[a.M_NOTICE,i.parseMMessage],[o.M_POLL_START,s.parseMPoll],[o.M_POLL_RESPONSE,s.parseMPoll],[o.M_POLL_END,s.parseMPoll]])),m(this,`_unknownInterpretOrder`,[a.M_MESSAGE])}return p(e,[{key:`unknownInterpretOrder`,get:function(){return this._unknownInterpretOrder??[]},set:function(e){this._unknownInterpretOrder=e}},{key:`registerInterpreter`,value:function(e,t){this.interpreters.set(e,t)}},{key:`parse`,value:function(e){try{if(this.interpreters.hasNamespaced(e.type))return this.interpreters.getNamespaced(e.type)(e);var t=c(this.unknownInterpretOrder),r;try{for(t.s();!(r=t.n()).done;){var i=r.value;if(this.interpreters.has(i)){var a=this.interpreters.get(i)(e);if(a)return a}}}catch(e){t.e(e)}finally{t.f()}return null}catch(e){if(e instanceof n.InvalidEventError)return null;throw e}}}],[{key:`defaultInstance`,get:function(){return e._defaultInstance}},{key:`unknownInterpretOrder`,get:function(){return e.defaultInstance.unknownInterpretOrder},set:function(t){e.defaultInstance.unknownInterpretOrder=t}},{key:`registerInterpreter`,value:function(t,n){e.defaultInstance.registerInterpreter(t,n)}},{key:`parse`,value:function(t){return e.defaultInstance.parse(t)}}]),e}();e.ExtensibleEvents=h,m(h,`_defaultInstance`,new h)})),ID=s((e=>{Object.defineProperty(e,"__esModule",{value:!0})})),LD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LegacyMsgType=void 0,e.isEventLike=r;var t=SD(),n;e.LegacyMsgType=n,(function(e){e.Text=`m.text`,e.Notice=`m.notice`,e.Emote=`m.emote`})(n||(e.LegacyMsgType=n={}));function r(e,r){var i=e.content;return r===n.Text?t.M_MESSAGE.matches(e.type)||e.type===`m.room.message`&&i?.msgtype===`m.text`:r===n.Emote?t.M_EMOTE.matches(e.type)||e.type===`m.room.message`&&i?.msgtype===`m.emote`:r===n.Notice?t.M_NOTICE.matches(e.type)||e.type===`m.room.message`&&i?.msgtype===`m.notice`:!1}})),RD=s((e=>{Object.defineProperty(e,"__esModule",{value:!0});var t=FD();Object.keys(t).forEach(function(n){n==="default"||n==="__esModule"||n in e&&e[n]===t[n]||Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})});var n=ID();Object.keys(n).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===n[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})});var r=vD();Object.keys(r).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===r[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t]}})});var i=xD();Object.keys(i).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===i[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return i[t]}})});var a=_D();Object.keys(a).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===a[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return a[t]}})});var o=bD();Object.keys(o).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===o[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return o[t]}})});var s=LD();Object.keys(s).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===s[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return s[t]}})});var c=CD();Object.keys(c).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===c[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return c[t]}})});var l=DD();Object.keys(l).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===l[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return l[t]}})});var u=OD();Object.keys(u).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===u[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return u[t]}})});var d=PD();Object.keys(d).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===d[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return d[t]}})});var f=jD();Object.keys(f).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===f[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return f[t]}})});var p=yD();Object.keys(p).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===p[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return p[t]}})});var m=SD();Object.keys(m).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===m[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return m[t]}})});var h=wD();Object.keys(h).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===h[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return h[t]}})});var g=ED();Object.keys(g).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===g[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return g[t]}})});var _=TD();Object.keys(_).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===_[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return _[t]}})});var v=kD();Object.keys(v).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===v[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return v[t]}})});var y=AD();Object.keys(y).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===y[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return y[t]}})});var b=MD();Object.keys(b).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===b[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return b[t]}})});var x=ND();Object.keys(x).forEach(function(t){t==="default"||t==="__esModule"||t in e&&e[t]===x[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return x[t]}})})}))(),E=function(e){return e.RoomCanonicalAlias=`m.room.canonical_alias`,e.RoomCreate=`m.room.create`,e.RoomJoinRules=`m.room.join_rules`,e.RoomMember=`m.room.member`,e.RoomThirdPartyInvite=`m.room.third_party_invite`,e.RoomPowerLevels=`m.room.power_levels`,e.RoomName=`m.room.name`,e.RoomTopic=`m.room.topic`,e.RoomAvatar=`m.room.avatar`,e.RoomPinnedEvents=`m.room.pinned_events`,e.RoomEncryption=`m.room.encryption`,e.RoomHistoryVisibility=`m.room.history_visibility`,e.RoomGuestAccess=`m.room.guest_access`,e.RoomServerAcl=`m.room.server_acl`,e.RoomTombstone=`m.room.tombstone`,e.RoomPredecessor=`org.matrix.msc3946.room_predecessor`,e.PolicyRuleUser=`m.policy.rule.user`,e.PolicyRuleRoom=`m.policy.rule.room`,e.PolicyRuleServer=`m.policy.rule.server`,e.SpaceChild=`m.space.child`,e.SpaceParent=`m.space.parent`,e.RoomRedaction=`m.room.redaction`,e.RoomMessage=`m.room.message`,e.RoomMessageEncrypted=`m.room.encrypted`,e.Sticker=`m.sticker`,e.CallInvite=`m.call.invite`,e.CallCandidates=`m.call.candidates`,e.CallAnswer=`m.call.answer`,e.CallHangup=`m.call.hangup`,e.CallReject=`m.call.reject`,e.CallSelectAnswer=`m.call.select_answer`,e.CallNegotiate=`m.call.negotiate`,e.CallSDPStreamMetadataChanged=`m.call.sdp_stream_metadata_changed`,e.CallSDPStreamMetadataChangedPrefix=`org.matrix.call.sdp_stream_metadata_changed`,e.CallReplaces=`m.call.replaces`,e.CallAssertedIdentity=`m.call.asserted_identity`,e.CallAssertedIdentityPrefix=`org.matrix.call.asserted_identity`,e.CallEncryptionKeysPrefix=`io.element.call.encryption_keys`,e.KeyVerificationRequest=`m.key.verification.request`,e.KeyVerificationStart=`m.key.verification.start`,e.KeyVerificationCancel=`m.key.verification.cancel`,e.KeyVerificationMac=`m.key.verification.mac`,e.KeyVerificationDone=`m.key.verification.done`,e.KeyVerificationKey=`m.key.verification.key`,e.KeyVerificationAccept=`m.key.verification.accept`,e.KeyVerificationReady=`m.key.verification.ready`,e.RoomMessageFeedback=`m.room.message.feedback`,e.Reaction=`m.reaction`,e.PollStart=`org.matrix.msc3381.poll.start`,e.Typing=`m.typing`,e.Receipt=`m.receipt`,e.Presence=`m.presence`,e.FullyRead=`m.fully_read`,e.Tag=`m.tag`,e.SpaceOrder=`org.matrix.msc3230.space_order`,e.MarkedUnread=`m.marked_unread`,e.PushRules=`m.push_rules`,e.Direct=`m.direct`,e.IgnoredUserList=`m.ignored_user_list`,e.InvitePermissionConfig=`m.invite_permission_config`,e.RoomKey=`m.room_key`,e.RoomKeyRequest=`m.room_key_request`,e.ForwardedRoomKey=`m.forwarded_room_key`,e.Dummy=`m.dummy`,e.SecretRequest=`m.secret.request`,e.SecretSend=`m.secret.send`,e.GroupCallPrefix=`org.matrix.msc3401.call`,e.GroupCallMemberPrefix=`org.matrix.msc3401.call.member`,e.RTCMembership=`org.matrix.msc4143.rtc.member`,e.CallNotify=`org.matrix.msc4075.call.notify`,e.RTCNotification=`org.matrix.msc4075.rtc.notification`,e.RTCDecline=`org.matrix.msc4310.rtc.decline`,e.RoomPolicy=`org.matrix.msc4284.policy`,e.RetentionPolicy=`m.room.retention`,e.RetentionPolicyUnstable=`org.matrix.msc1763.retention`,e}({}),D=function(e){return e.Annotation=`m.annotation`,e.Replace=`m.replace`,e.Reference=`m.reference`,e.Thread=`m.thread`,e}({}),zD=function(e){return e.Text=`m.text`,e.Emote=`m.emote`,e.Notice=`m.notice`,e.Image=`m.image`,e.File=`m.file`,e.Audio=`m.audio`,e.Location=`m.location`,e.Video=`m.video`,e.KeyVerificationRequest=`m.key.verification.request`,e}({}),BD=`type`,VD=function(e){return e.Space=`m.space`,e.UnstableCall=`org.matrix.msc3417.call`,e.ElementVideo=`io.element.video`,e}({}),HD=`org.matrix.msgid`,UD=new vE(`m.room.purpose`,`org.matrix.msc3088.purpose`),WD=new vE(`m.enabled`,`org.matrix.msc3088.enabled`),GD=new vE(`m.data_tree`,`org.matrix.msc3089.data_tree`),KD=new vE(`m.leaf`,`org.matrix.msc3089.leaf`),qD=new vE(`m.branch`,`org.matrix.msc3089.branch`),JD=new vE(`m.room.marker`,`org.matrix.msc2716.marker`),YD=new vE(`with_rel_types`,`org.matrix.msc3912.with_relations`),XD=new vE(`io.element.functional_members`,`io.element.functional_members`),ZD=new vE(`m.visibility`,`org.matrix.msc3531.visibility`),QD=new vE(`enabled`,`org.matrix.msc3881.enabled`);new vE(`device_id`,`org.matrix.msc3881.device_id`);var $D=new vE(`m.local_notification_settings`,`org.matrix.msc3890.local_notification_settings`),eO=new vE(`thread_id`,`org.matrix.msc4023.thread_id`),tO=new gE(`membership`,`io.element.msc4115.membership`);function nO(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function rO(e,t){if(e==null)return{};var n,r,i=nO(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var iO=s(((e,t)=>{var n=typeof Reflect==`object`?Reflect:null,r=n&&typeof n.apply==`function`?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},i=n&&typeof n.ownKeys==`function`?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};function a(e){console&&console.warn&&console.warn(e)}var o=Number.isNaN||function(e){return e!==e};function s(){s.init.call(this)}t.exports=s,t.exports.once=y,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var c=10;function l(e){if(typeof e!=`function`)throw TypeError(`The "listener" argument must be of type Function. Received type `+typeof e)}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return c},set:function(e){if(typeof e!=`number`||e<0||o(e))throw RangeError(`The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received `+e+`.`);c=e}}),s.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if(typeof e!=`number`||e<0||o(e))throw RangeError(`The value of "n" is out of range. It must be a non-negative number. Received `+e+`.`);return this._maxListeners=e,this};function u(e){return e._maxListeners===void 0?s.defaultMaxListeners:e._maxListeners}s.prototype.getMaxListeners=function(){return u(this)},s.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var i=e===`error`,a=this._events;if(a!==void 0)i&&=a.error===void 0;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var s=Error(`Unhandled error.`+(o?` (`+o.message+`)`:``));throw s.context=o,s}var c=a[e];if(c===void 0)return!1;if(typeof c==`function`)r(c,this,t);else for(var l=c.length,u=g(c,l),n=0;n<l;++n)r(u[n],this,t);return!0};function d(e,t,n,r){var i,o,s;if(l(n),o=e._events,o===void 0?(o=e._events=Object.create(null),e._eventsCount=0):(o.newListener!==void 0&&(e.emit(`newListener`,t,n.listener?n.listener:n),o=e._events),s=o[t]),s===void 0)s=o[t]=n,++e._eventsCount;else if(typeof s==`function`?s=o[t]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),i=u(e),i>0&&s.length>i&&!s.warned){s.warned=!0;var c=Error(`Possible EventEmitter memory leak detected. `+s.length+` `+String(t)+` listeners added. Use emitter.setMaxListeners() to increase limit`);c.name=`MaxListenersExceededWarning`,c.emitter=e,c.type=t,c.count=s.length,a(c)}return e}s.prototype.addListener=function(e,t){return d(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return d(this,e,t,!0)};function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=f.bind(r);return i.listener=n,r.wrapFn=i,i}s.prototype.once=function(e,t){return l(t),this.on(e,p(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return l(t),this.prependListener(e,p(this,e,t)),this},s.prototype.removeListener=function(e,t){var n,r,i,a,o;if(l(t),r=this._events,r===void 0||(n=r[e],n===void 0))return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit(`removeListener`,e,n.listener||t));else if(typeof n!=`function`){for(i=-1,a=n.length-1;a>=0;a--)if(n[a]===t||n[a].listener===t){o=n[a].listener,i=a;break}if(i<0)return this;i===0?n.shift():_(n,i),n.length===1&&(r[e]=n[0]),r.removeListener!==void 0&&this.emit(`removeListener`,e,o||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,n=this._events,r;if(n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),a;for(r=0;r<i.length;++r)a=i[r],a!==`removeListener`&&this.removeAllListeners(a);return this.removeAllListeners(`removeListener`),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t==`function`)this.removeListener(e,t);else if(t!==void 0)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this};function m(e,t,n){var r=e._events;if(r===void 0)return[];var i=r[t];return i===void 0?[]:typeof i==`function`?n?[i.listener||i]:[i]:n?v(i):g(i,i.length)}s.prototype.listeners=function(e){return m(this,e,!0)},s.prototype.rawListeners=function(e){return m(this,e,!1)},s.listenerCount=function(e,t){return typeof e.listenerCount==`function`?e.listenerCount(t):h.call(e,t)},s.prototype.listenerCount=h;function h(e){var t=this._events;if(t!==void 0){var n=t[e];if(typeof n==`function`)return 1;if(n!==void 0)return n.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]};function g(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e[r];return n}function _(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function v(e){for(var t=Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}function y(e,t){return new Promise(function(n,r){function i(n){e.removeListener(t,a),r(n)}function a(){typeof e.removeListener==`function`&&e.removeListener(`error`,i),n([].slice.call(arguments))}x(e,t,a,{once:!0}),t!==`error`&&b(e,i,{once:!0})})}function b(e,t,n){typeof e.on==`function`&&x(e,`error`,t,n)}function x(e,t,n,r){if(typeof e.on==`function`)r.once?e.once(t,n):e.on(t,n);else if(typeof e.addEventListener==`function`)e.addEventListener(t,function i(a){r.once&&e.removeEventListener(t,i),n(a)});else throw TypeError(`The "emitter" argument must be of type EventEmitter. Received type `+typeof e)}}))(),aO=function(e){return e.NewListener=`newListener`,e.RemoveListener=`removeListener`,e.Error=`error`,e}({}),O=class extends iO.EventEmitter{addListener(e,t){return super.addListener(e,t)}emit(e){var t=[...arguments].slice(1);return super.emit(e,...t)}emitPromised(e){var t=arguments,n=this;return C(function*(){for(var r=t.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=t[a];var o=n.listeners(e);return Promise.allSettled(o.map(e=>e(...i))).then(()=>o.length>0)})()}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}off(e,t){return super.off(e,t)}on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}prependListener(e,t){return super.prependListener(e,t)}prependOnceListener(e,t){return super.prependOnceListener(e,t)}removeAllListeners(e){return e===void 0?super.removeAllListeners():super.removeAllListeners(e)}removeListener(e,t){return super.removeListener(e,t)}rawListeners(e){return super.rawListeners(e)}},oO=function(e){return e.DisplayName=`User.displayName`,e.AvatarUrl=`User.avatarUrl`,e.Presence=`User.presence`,e.CurrentlyActive=`User.currentlyActive`,e.LastPresenceTs=`User.lastPresenceTs`,e}({}),sO=class e extends O{constructor(e){super(),this.userId=e,h(this,`modified`,-1),h(this,`displayName`,void 0),h(this,`rawDisplayName`,void 0),h(this,`avatarUrl`,void 0),h(this,`presenceStatusMsg`,void 0),h(this,`presence`,`offline`),h(this,`lastActiveAgo`,0),h(this,`lastPresenceTs`,0),h(this,`currentlyActive`,!1),h(this,`events`,{}),this.displayName=e,this.rawDisplayName=e,this.updateModifiedTime()}static createUser(t,n){var r=new e(t);return n.reEmitter.reEmit(r,[oO.AvatarUrl,oO.DisplayName,oO.Presence,oO.CurrentlyActive,oO.LastPresenceTs]),r}setPresenceEvent(e){if(e.getType()===`m.presence`){var t=this.events.presence===null;this.events.presence=e;var n=[];(e.getContent().presence!==this.presence||t)&&n.push(oO.Presence),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&n.push(oO.AvatarUrl),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&n.push(oO.DisplayName),e.getContent().currently_active!==void 0&&e.getContent().currently_active!==this.currentlyActive&&n.push(oO.CurrentlyActive),this.presence=e.getContent().presence,n.push(oO.LastPresenceTs),e.getContent().status_msg&&(this.presenceStatusMsg=e.getContent().status_msg),e.getContent().displayname&&(this.displayName=e.getContent().displayname),e.getContent().avatar_url&&(this.avatarUrl=e.getContent().avatar_url),this.lastActiveAgo=e.getContent().last_active_ago,this.lastPresenceTs=Date.now(),this.currentlyActive=e.getContent().currently_active,this.updateModifiedTime();for(var r of n)this.emit(r,e,this)}}setDisplayName(e){var t=this.displayName;this.displayName=e,e!==t&&this.updateModifiedTime()}setRawDisplayName(e){this.rawDisplayName=e}setAvatarUrl(e){var t=this.avatarUrl;this.avatarUrl=e,e!==t&&this.updateModifiedTime()}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}getLastActiveTs(){return this.lastPresenceTs-this.lastActiveAgo}};function cO(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function lO(e){return g(e)||cO(e)||y(e)||b()}function uO(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var dO=/^(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?:\[[\dA-Fa-f:.]{2,45}])|(?:[A-Za-z\d\-.]{1,255}))(?::\d{1,5})?$/;function fO(e){return dO.exec(e)?.[0]===e}var pO=/^[\w-]+$/;function mO(e){return pO.exec(e)?.[0]===e}function hO(e,t,n,r,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,o=arguments.length>6?arguments[6]:void 0,s=arguments.length>7?arguments[7]:void 0,c=arguments.length>8?arguments[8]:void 0;if(typeof t!=`string`||!t)return``;if(!t.startsWith(`mxc://`))return a?t:``;var l=lO(t.slice(6).split(`/`)),u=l[0],d=l[1];if(uO(l).slice(2).length>0||!fO(u)||!mO(d))return``;s&&(o=!0);var f,p=n||r||i?`thumbnail`:`download`;f=s?`/_matrix/client/v1/media/${p}`:`/_matrix/media/v3/${p}`;var m=new URL(`${f}/${u}/${d}`,e);return n&&m.searchParams.set(`width`,Math.round(n).toString()),r&&m.searchParams.set(`height`,Math.round(r).toString()),i&&m.searchParams.set(`method`,i),c!==void 0&&m.searchParams.set(`animated`,String(c)),typeof o==`boolean`&&m.searchParams.set(`allow_redirect`,JSON.stringify(o)),m.href}var k=function(e){return e.Ban=`ban`,e.Invite=`invite`,e.Join=`join`,e.Knock=`knock`,e.Leave=`leave`,e}({}),gO=function(e){return e.Membership=`RoomMember.membership`,e.Name=`RoomMember.name`,e.PowerLevel=`RoomMember.powerLevel`,e.Typing=`RoomMember.typing`,e}({}),_O=class extends O{constructor(e,t){super(),this.roomId=e,this.userId=t,h(this,`_isOutOfBand`,!1),h(this,`modified`,-1),h(this,`requestedProfileInfo`,!1),h(this,`typing`,!1),h(this,`name`,void 0),h(this,`rawDisplayName`,void 0),h(this,`powerLevel`,0),h(this,`user`,void 0),h(this,`membership`,void 0),h(this,`disambiguate`,!1),h(this,`events`,{}),this.name=t,this.rawDisplayName=t,this.updateModifiedTime()}markOutOfBand(){this._isOutOfBand=!0}isOutOfBand(){return this._isOutOfBand}setMembershipEvent(e,t){var n=e.getDirectionalContent().displayname??``;if(e.getType()===E.RoomMember){this._isOutOfBand=!1,this.events.member=e;var r=this.membership;this.membership=e.getDirectionalContent().membership,this.membership===void 0&&w.trace(`membership event with membership undefined (forwardLooking: ${e.forwardLooking})!`,e.getContent(),`prevcontent is `,e.getPrevContent()),this.disambiguate=bO(this.userId,n,t);var i=this.name;this.name=xO(this.userId,n,this.disambiguate),this.rawDisplayName=LE(e.getDirectionalContent().displayname??``),(!this.rawDisplayName||!IE(this.rawDisplayName))&&(this.rawDisplayName=this.userId),r!==this.membership&&(this.updateModifiedTime(),this.emit(gO.Membership,e,this,r)),i!==this.name&&(this.updateModifiedTime(),this.emit(gO.Name,e,this,i))}}recalculateDisambiguatedName(e){if(!this.events.member)return!1;var t=this.events.member.getDirectionalContent().displayname??``,n=bO(this.userId,t,e);if(n===this.disambiguate)return!1;this.disambiguate=n;var r=this.name;return this.name=xO(this.userId,t,this.disambiguate),r===this.name?!1:(this.updateModifiedTime(),this.emit(gO.Name,this.events.member,this,r),!0)}setPowerLevel(e,t){var n=this.powerLevel;this.powerLevel=e,n!==this.powerLevel&&(this.updateModifiedTime(),this.emit(gO.PowerLevel,t,this))}setTypingEvent(e){if(e.getType()===`m.typing`){var t=this.typing;this.typing=!1;var n=e.getContent().user_ids;Array.isArray(n)&&(n.indexOf(this.userId)!==-1&&(this.typing=!0),t!==this.typing&&(this.updateModifiedTime(),this.emit(gO.Typing,e,this)))}}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}isKicked(){return this.membership===k.Leave&&this.events.member!==void 0&&this.events.member.getSender()!==this.events.member.getStateKey()}getDMInviter(){if(this.events.member){var e=this.events.member,t=e.getContent(),n=e.getSender();if(t.membership===k.Join&&(t=e.getPrevContent(),n=e.getUnsigned().prev_sender),t.membership===k.Invite&&t.is_direct)return n}}getAvatarUrl(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5?arguments[5]:void 0,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:!1,s=this.getMxcAvatarUrl();return!s&&!i?null:hO(e,s,t,n,r,a,void 0,o)||null}getMxcAvatarUrl(){if(this.events.member)return this.events.member.getDirectionalContent().avatar_url;if(this.user)return this.user.avatarUrl}},vO=/@.+:.+/,yO=/[\u200E\u200F\u202A-\u202F]/;function bO(e,t,n){if(!t||t===e||!n)return!1;var r=IE(t);return r?!!(vO.test(r)||yO.test(t)||n.getUserIdsWithDisplayName(t).some(t=>t!==e)):!1}function xO(e,t,n){return!t||t===e?e:n?LE(t)+` (`+e+`)`:IE(t)?LE(t):e}var SO=function(e){return e.PrivateChat=`private_chat`,e.TrustedPrivateChat=`trusted_private_chat`,e.PublicChat=`public_chat`,e}({}),CO=function(e){return e.Public=`public`,e.Invite=`invite`,e.Private=`private`,e.Knock=`knock`,e.Restricted=`restricted`,e}({}),wO=function(e){return e.CanJoin=`can_join`,e.Forbidden=`forbidden`,e}({}),TO=function(e){return e.Invited=`invited`,e.Joined=`joined`,e.Shared=`shared`,e.WorldReadable=`world_readable`,e}({});function EO(e){return e!=null}new RD.UnstableValue(`m.message`,`org.matrix.msc1767.message`),new RD.UnstableValue(`m.text`,`org.matrix.msc1767.text`),new RD.UnstableValue(`m.html`,`org.matrix.msc1767.html`),new RD.NamespacedValue(`m.reference`);var DO=new gE(`m.topic`,null);function OO(e,t){return{msgtype:zD.Text,format:`org.matrix.custom.html`,body:e,formatted_body:t}}function kO(e,t){return{msgtype:zD.Notice,format:`org.matrix.custom.html`,body:e,formatted_body:t}}function AO(e,t){return{msgtype:zD.Emote,format:`org.matrix.custom.html`,body:e,formatted_body:t}}function jO(e){return{msgtype:zD.Text,body:e}}function MO(e){return{msgtype:zD.Notice,body:e}}function NO(e){return{msgtype:zD.Emote,body:e}}var PO=(e,t)=>{var n=[];return EO(t)&&n.push({body:t,mimetype:`text/html`}),EO(e)&&n.push({body:e,mimetype:`text/plain`}),{topic:e,[DO.name]:{"m.text":n}}},FO=e=>{var t=e.description,n=e.timeout,r=e.live,i=bE.findIn(e)??void 0;return{description:t,timeout:n,live:r,assetType:yE.findIn(e)?.type,timestamp:i}},IO=e=>{var t=xE.findIn(e),n=bE.findIn(e)??void 0;return{description:t?.description,uri:t?.uri,timestamp:n}},A=function(e){return e.New=`Beacon.new`,e.Update=`Beacon.update`,e.LivenessChange=`Beacon.LivenessChange`,e.Destroy=`Beacon.Destroy`,e.LocationUpdate=`Beacon.LocationUpdate`,e}({}),LO=(e,t,n)=>n>=e&&e+t>=n,RO=e=>`${e.getRoomId()}_${e.getStateKey()}`,zO=class extends O{constructor(e){super(),this.rootEvent=e,h(this,`roomId`,void 0),h(this,`_beaconInfo`,void 0),h(this,`_isLive`,void 0),h(this,`livenessWatchTimeout`,void 0),h(this,`_latestLocationEvent`,void 0),h(this,`clearLatestLocation`,()=>{this._latestLocationEvent=void 0,this.emit(A.LocationUpdate,this.latestLocationState)}),this.roomId=this.rootEvent.getRoomId(),this.setBeaconInfo(this.rootEvent)}get isLive(){return!!this._isLive}get identifier(){return RO(this.rootEvent)}get beaconInfoId(){return this.rootEvent.getId()}get beaconInfoOwner(){return this.rootEvent.getStateKey()}get beaconInfoEventType(){return this.rootEvent.getType()}get beaconInfo(){return this._beaconInfo}get latestLocationState(){return this._latestLocationEvent&&IO(this._latestLocationEvent.getContent())}get latestLocationEvent(){return this._latestLocationEvent}update(e){if(RO(e)!==this.identifier)throw Error(`Invalid updating event`);e.getTs()<this.rootEvent.getTs()||(this.rootEvent=e,this.setBeaconInfo(this.rootEvent),this.emit(A.Update,e,this),this.clearLatestLocation())}destroy(){this.livenessWatchTimeout&&clearTimeout(this.livenessWatchTimeout),this._isLive=!1,this.emit(A.Destroy,this.identifier)}monitorLiveness(){if(this.livenessWatchTimeout&&clearTimeout(this.livenessWatchTimeout),this.checkLiveness(),this.beaconInfo)if(this.isLive){var e=this.beaconInfo.timestamp+this.beaconInfo.timeout-Date.now();e>1&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},e))}else this.beaconInfo.timestamp>Date.now()&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},this.beaconInfo.timestamp-Date.now()))}addLocations(e){if(this.isLive){var t=e.filter(e=>{var t=IO(e.getContent());if(!t.uri||!t.timestamp)return!1;var n=t.timestamp;return this._beaconInfo.timestamp&&LO(this._beaconInfo.timestamp,this._beaconInfo.timeout,n)&&(!this.latestLocationState||n>this.latestLocationState.timestamp)}).sort(cD)?.[0];t&&(this._latestLocationEvent=t,this.emit(A.LocationUpdate,this.latestLocationState))}}setBeaconInfo(e){this._beaconInfo=FO(e.getContent()),this.checkLiveness()}checkLiveness(){var e=this.isLive;if(this.beaconInfo){var t=this.beaconInfo.timestamp>Date.now()?this.beaconInfo.timestamp-36e4:this.beaconInfo.timestamp;this._isLive=!!this._beaconInfo.live&&!!t&&LO(t,this._beaconInfo.timeout,Date.now()),e!==this.isLive&&this.emit(A.LivenessChange,this.isLive,this)}}},BO=class{constructor(e){this.target=e,h(this,`reEmitters`,new WeakMap)}reEmit(e,t){var n=this,r=this.reEmitters.get(e);r||(r=new Map,this.reEmitters.set(e,r));var i=function(t){if(r.has(t))return 1;var i=function(){if(!(t===`error`&&n.target.listenerCount(`error`)===0)){var r=[...arguments];n.target.emit(t,...r,e)}};e.on(t,i),r.set(t,i)};for(var a of t)if(i(a))continue}stopReEmitting(e,t){var n=this.reEmitters.get(e);if(n){for(var r of t)e.off(r,n.get(r)),n.delete(r);n.size===0&&this.reEmitters.delete(e)}}},VO=class extends BO{constructor(e){super(e)}reEmit(e,t){super.reEmit(e,t)}stopReEmitting(e,t){super.stopReEmitting(e,t)}},HO=new vE(`m.beacon_info`,`org.matrix.msc3672.beacon_info`),UO=new vE(`m.beacon`,`org.matrix.msc3672.beacon`),WO=[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`];function GO(e){return!WO.includes(e)}var KO=function(e){return e[e.NotStarted=0]=`NotStarted`,e[e.InProgress=1]=`InProgress`,e[e.Finished=2]=`Finished`,e}(KO||{}),j=function(e){return e.Events=`RoomState.events`,e.Members=`RoomState.members`,e.NewMember=`RoomState.newMember`,e.Update=`RoomState.update`,e.BeaconLiveness=`RoomState.BeaconLiveness`,e.Marker=`RoomState.Marker`,e}({}),qO=class e extends O{constructor(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{status:KO.NotStarted};super(),this.roomId=e,this.oobMemberFlags=t,h(this,`reEmitter`,new VO(this)),h(this,`sentinels`,{}),h(this,`displayNameToUserIds`,new Map),h(this,`userIdsToDisplayNames`,{}),h(this,`tokenToInvite`,{}),h(this,`joinedMemberCount`,null),h(this,`summaryJoinedMemberCount`,null),h(this,`invitedMemberCount`,null),h(this,`summaryInvitedMemberCount`,null),h(this,`modified`,-1),h(this,`members`,{}),h(this,`events`,new Map),h(this,`paginationToken`,null),h(this,`beacons`,new Map),h(this,`_liveBeaconIds`,[]),h(this,`getVersionWarning`,!1),this.updateModifiedTime()}getRoomVersion(){var e=this.getStateEvents(E.RoomCreate,``);return e?e.getContent().room_version??`1`:(this.getVersionWarning||=(w.warn(`[getVersion] Room `+this.roomId+` does not have an m.room.create event`),!0),`1`)}getJoinedMemberCount(){return this.summaryJoinedMemberCount===null?(this.joinedMemberCount===null&&(this.joinedMemberCount=this.getMembers().reduce((e,t)=>t.membership===k.Join?e+1:e,0)),this.joinedMemberCount):this.summaryJoinedMemberCount}setJoinedMemberCount(e){this.summaryJoinedMemberCount=e}getInvitedMemberCount(){return this.summaryInvitedMemberCount===null?(this.invitedMemberCount===null&&(this.invitedMemberCount=this.getMembers().reduce((e,t)=>t.membership===k.Invite?e+1:e,0)),this.invitedMemberCount):this.summaryInvitedMemberCount}setInvitedMemberCount(e){this.summaryInvitedMemberCount=e}getMembers(){return Object.values(this.members)}getMembersExcept(e){return this.getMembers().filter(t=>!e.includes(t.userId))}getMember(e){return this.members[e]||null}getSentinelMember(e){if(!e)return null;var t=this.sentinels[e];if(t===void 0){t=new _O(this.roomId,e);var n=this.members[e];n!=null&&n.events.member&&t.setMembershipEvent(n.events.member,this),this.sentinels[e]=t}return t}getStateEvents(e,t){return this.events.has(e)?t===void 0?Array.from(this.events.get(e).values()):this.events.get(e).get(t)||null:t===void 0?[]:null}get hasLiveBeacons(){var e;return!!((e=this.liveBeaconIds)!=null&&e.length)}get liveBeaconIds(){return this._liveBeaconIds}clone(){var t=new e(this.roomId,this.oobMemberFlags),n=this.oobMemberFlags.status;return this.oobMemberFlags.status=KO.NotStarted,Array.from(this.events.values()).forEach(e=>{t.setStateEvents(Array.from(e.values()))}),this.oobMemberFlags.status=n,this.summaryInvitedMemberCount!==null&&t.setInvitedMemberCount(this.getInvitedMemberCount()),this.summaryJoinedMemberCount!==null&&t.setJoinedMemberCount(this.getJoinedMemberCount()),this.oobMemberFlags.status==KO.Finished&&this.getMembers().forEach(e=>{if(e.isOutOfBand()){var n;(n=t.getMember(e.userId))==null||n.markOutOfBand()}}),t}setUnknownStateEvents(e){var t=e.filter(e=>!this.events.has(e.getType())||!this.events.get(e.getType()).has(e.getStateKey()));this.setStateEvents(t)}setStateEvents(e,t){this.updateModifiedTime();var n=new Set,r=new Set;if(e.forEach(e=>{if(!(e.getRoomId()!==this.roomId||!e.isState())){HO.matches(e.getType())&&this.setBeacon(e);var t=this.getStateEventMatching(e);if(this.setStateEvent(e),e.getType()===E.RoomMember){var i=e.getStateKey();r.add(i);var a=e.getContent().displayname??``,o=this.userIdsToDisplayNames[i];if(o){var s=IE(o);s&&n.add(s)}if(a){var c=IE(a);c&&n.add(c)}this.updateDisplayNameCache(i,a),this.updateThirdPartyTokenCache(e)}this.emit(j.Events,e,this,t)}}),this.onBeaconLivenessChange(),e.forEach(e=>{if(!(e.getRoomId()!==this.roomId||!e.isState()))if(e.getType()===E.RoomMember){var n=e.getStateKey();(e.getContent().membership===k.Leave||e.getContent().membership===k.Ban)&&(e.getContent().avatar_url=e.getContent().avatar_url||e.getPrevContent().avatar_url,e.getContent().displayname=e.getContent().displayname||e.getPrevContent().displayname);var r=this.getOrCreateMember(n,e);r.setMembershipEvent(e,this),this.updateMember(r),this.emit(j.Members,e,this,r)}else if(e.getType()===E.RoomPowerLevels){if(e.getStateKey()!==``)return;var i=Object.values(this.members),a=this.getStateEvents(E.RoomCreate,``),o=JO(this.getRoomVersion(),a);i.forEach(t=>{var n=t.getLastModifiedTime();if(a){var r=YO(t.userId,e,o);t.setPowerLevel(r,e)}n!==t.getLastModifiedTime()&&this.emit(j.Members,e,this,t)}),this.sentinels={}}else JD.matches(e.getType())&&this.emit(j.Marker,e,t)}),n.size>0){var i=new Set;for(var a of n)(this.displayNameToUserIds.get(a)??[]).forEach(e=>i.add(e));for(var o of i)if(!r.has(o)){var s=this.members[o];s!=null&&s.events.member&&s.recalculateDisambiguatedName(this)&&this.emit(j.Members,s.events.member,this,s)}}this.emit(j.Update,this)}processBeaconEvents(e,t){var n=this;return C(function*(){if(!(!e.length||!n.beacons.size)){var r=[...n.beacons.values()].reduce((e,t)=>(e[t.beaconInfoId]=t,e),{}),i=(e,t)=>{if(UO.matches(t.getType())){var n=r[e];n&&n.addLocations([t])}},a=function*(e){var n=e.getRelation()?.event_id;if(!n||!r[n]||!UO.matches(e.getType())&&!e.isEncrypted())return{v:void 0};try{yield t.decryptEventIfNeeded(e),i(n,e)}catch{e.isDecryptionFailure()&&e.once($.Decrypted,C(function*(){i(n,e)}))}},o;for(var s of e)if(o=yield*a(s),o)return o.v}})()}getOrCreateMember(e,t){var n=this.members[e];return n||(n=new _O(this.roomId,e),this.members[e]=n,this.emit(j.NewMember,t,this,n)),n}setStateEvent(e){this.events.has(e.getType())||this.events.set(e.getType(),new Map),this.events.get(e.getType()).set(e.getStateKey(),e)}setBeacon(e){var t=RO(e);if(this.beacons.has(t)){var n=this.beacons.get(t);if(e.isRedacted()){n.beaconInfoId===e.getRedactionEvent()?.redacts&&(n.destroy(),this.beacons.delete(t));return}return n.update(e)}if(!e.isRedacted()){var r=new zO(e);this.reEmitter.reEmit(r,[A.New,A.Update,A.Destroy,A.LivenessChange]),this.emit(A.New,e,r),r.on(A.LivenessChange,this.onBeaconLivenessChange.bind(this)),r.on(A.Destroy,this.onBeaconLivenessChange.bind(this)),this.beacons.set(r.identifier,r)}}onBeaconLivenessChange(){this._liveBeaconIds=Array.from(this.beacons.values()).filter(e=>e.isLive).map(e=>e.identifier),this.emit(j.BeaconLiveness,this,this.hasLiveBeacons)}getStateEventMatching(e){return this.events.get(e.getType())?.get(e.getStateKey())??null}updateMember(e){var t=this.getStateEvents(E.RoomCreate,``),n=this.getStateEvents(E.RoomPowerLevels,``);if(n&&t){var r=YO(e.userId,n,JO(this.getRoomVersion(),t));e.setPowerLevel(r,n)}delete this.sentinels[e.userId],this.members[e.userId]=e,this.joinedMemberCount=null,this.invitedMemberCount=null}needsOutOfBandMembers(){return this.oobMemberFlags.status===KO.NotStarted}outOfBandMembersReady(){return this.oobMemberFlags.status===KO.Finished}markOutOfBandMembersStarted(){this.oobMemberFlags.status===KO.NotStarted&&(this.oobMemberFlags.status=KO.InProgress)}markOutOfBandMembersFailed(){this.oobMemberFlags.status===KO.InProgress&&(this.oobMemberFlags.status=KO.NotStarted)}clearOutOfBandMembers(){var e=0;Object.keys(this.members).forEach(t=>{this.members[t].isOutOfBand()&&(++e,delete this.members[t])}),w.log(`LL: RoomState removed ${e} members...`),this.oobMemberFlags.status=KO.NotStarted}setOutOfBandMembers(e){w.log(`LL: RoomState about to set ${e.length} OOB members ...`),this.oobMemberFlags.status===KO.InProgress&&(w.log(`LL: RoomState put in finished state ...`),this.oobMemberFlags.status=KO.Finished,e.forEach(e=>this.setOutOfBandMember(e)),this.emit(j.Update,this))}setOutOfBandMember(e){if(e.getType()===E.RoomMember){var t=e.getStateKey(),n=this.getMember(t);if(!(n&&!n.isOutOfBand())){var r=this.getOrCreateMember(t,e);r.setMembershipEvent(e,this),r.markOutOfBand(),this.updateDisplayNameCache(r.userId,r.name),this.setStateEvent(e),this.updateMember(r),this.emit(j.Members,e,this,r)}}}setTypingEvent(e){Object.values(this.members).forEach(function(t){t.setTypingEvent(e)})}getInviteForThreePidToken(e){return this.tokenToInvite[e]||null}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}getUserIdsWithDisplayName(e){return this.displayNameToUserIds.get(IE(e))??[]}maySendRedactionForEvent(e,t){var n=this.getMember(t);return!n||n.membership===k.Leave||e.status||e.isRedacted()||!this.maySendEvent(E.RoomRedaction,t)?!1:e.getSender()===t?!0:this.hasSufficientPowerLevelFor(`redact`,n.powerLevel)}hasSufficientPowerLevelFor(e,t){var n=this.getStateEvents(E.RoomPowerLevels,``),r={};n&&(r=n.getContent());var i=50;return FE(r[e])&&(i=r[e]),t>=i}maySendMessage(e){return this.maySendEventOfType(E.RoomMessage,e,!1)}maySendEvent(e,t){return this.maySendEventOfType(e,t,!1)}mayClientSendStateEvent(e,t){return t.isGuest()||!t.credentials.userId?!1:this.maySendStateEvent(e,t.credentials.userId)}maySendStateEvent(e,t){return this.maySendEventOfType(e,t,!0)}maySendEventOfType(e,t,n){var r=this.getStateEvents(E.RoomPowerLevels,``),i,a={},o=0,s=0;r&&(i=r.getContent(),a=i.events||{},o=Number.isSafeInteger(i.state_default)?i.state_default:50,Number.isSafeInteger(i.events_default)&&(s=i.events_default));var c=n?o:s;return Number.isSafeInteger(a[e])&&(c=a[e]),(this.getMember(t)?.powerLevel??0)>=c}mayTriggerNotifOfType(e,t){var n=this.getMember(t);if(!n)return!1;var r=this.getStateEvents(E.RoomPowerLevels,``),i=50;return r&&r.getContent()&&r.getContent().notifications&&FE(r.getContent().notifications[e])&&(i=r.getContent().notifications[e]),n.powerLevel>=i}getJoinRule(){return(this.getStateEvents(E.RoomJoinRules,``)?.getContent()??{}).join_rule||CO.Invite}getHistoryVisibility(){return(this.getStateEvents(E.RoomHistoryVisibility,``)?.getContent()??{}).history_visibility||TO.Shared}getGuestAccess(){return(this.getStateEvents(E.RoomGuestAccess,``)?.getContent()??{}).guest_access||wO.Forbidden}findPredecessor(){if(arguments.length>0&&arguments[0]!==void 0&&arguments[0]){var e=this.getStateEvents(E.RoomPredecessor,``);if(e){var t=e.getContent(),n=t.predecessor_room_id,r=t.last_known_event_id;typeof r!=`string`&&(r=void 0);var i=t.via_servers;if(Array.isArray(i)||(i=void 0),typeof n==`string`)return{roomId:n,eventId:r,viaServers:i}}}var a=this.getStateEvents(E.RoomCreate,``);if(a){var o=a.getContent().predecessor;if(o){var s=o.room_id;if(typeof s==`string`){var c=o.event_id;return(typeof c!=`string`||c===``)&&(c=void 0),{roomId:s,eventId:c}}}}return null}updateThirdPartyTokenCache(e){if(e.getContent().third_party_invite){var t=(e.getContent().third_party_invite.signed||{}).token;t&&this.getStateEvents(E.RoomThirdPartyInvite,t)&&(this.tokenToInvite[t]=e)}}updateDisplayNameCache(e,t){var n=this.userIdsToDisplayNames[e];if(delete this.userIdsToDisplayNames[e],n){var r=IE(n),i=this.displayNameToUserIds.get(r);if(i){var a=i.filter(t=>t!==e);this.displayNameToUserIds.set(r,a)}}this.userIdsToDisplayNames[e]=t;var o=t&&IE(t);if(o){var s=this.displayNameToUserIds.get(o)??[];s.push(e),this.displayNameToUserIds.set(o,s)}}};function JO(e,t){var n=new Set;if(GO(e)&&t){var r=t.getSender();r&&n.add(r);var i=t.getDirectionalContent().additional_creators;Array.isArray(i)&&i.forEach(e=>n.add(e))}return n}function YO(e,t,n){if(n.has(e))return 1/0;var r=t.getDirectionalContent(),i=r.users||{};return i[e]!==void 0&&Number.isInteger(i[e])?i[e]:r.users_default===void 0?0:r.users_default}var M=function(e){return e.Backward=`b`,e.Forward=`f`,e}({}),N=class e{static setEventMetadata(e,t,n){e.setMetadata(t,n)}constructor(e){this.eventTimelineSet=e,h(this,`roomId`,void 0),h(this,`name`,void 0),h(this,`events`,[]),h(this,`baseIndex`,0),h(this,`startState`,void 0),h(this,`endState`,void 0),h(this,`startToken`,null),h(this,`endToken`,null),h(this,`prevTimeline`,null),h(this,`nextTimeline`,null),h(this,`paginationRequests`,{[M.Backward]:null,[M.Forward]:null}),this.roomId=e.room?.roomId??null,this.roomId&&(this.startState=new qO(this.roomId),this.endState=new qO(this.roomId)),this.paginationRequests={b:null,f:null},this.name=this.roomId+`:`+new Date().toISOString()}initialiseState(e){var t,n,r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).timelineWasEmpty;if(this.events.length>0)throw Error(`Cannot initialise state after events are added`);(t=this.startState)==null||t.setStateEvents(e,{timelineWasEmpty:r}),(n=this.endState)==null||n.setStateEvents(e,{timelineWasEmpty:r})}forkLive(t){var n=this.getState(t),r=new e(this.eventTimelineSet);return r.startState=n?.clone(),r.endState=n,this.endState=n?.clone(),r}fork(t){var n=this.getState(t),r=new e(this.eventTimelineSet);return r.startState=n?.clone(),r.endState=n?.clone(),r}getRoomId(){return this.roomId}getFilter(){return this.eventTimelineSet.getFilter()}getTimelineSet(){return this.eventTimelineSet}getBaseIndex(){return this.baseIndex}getEvents(){return this.events}getState(t){if(t==e.BACKWARDS)return this.startState;if(t==e.FORWARDS)return this.endState;throw Error(`Invalid direction '`+t+`'`)}getPaginationToken(e){return this.roomId?this.getState(e).paginationToken:e===M.Backward?this.startToken:this.endToken}setPaginationToken(e,t){this.roomId?this.getState(t).paginationToken=e:t===M.Backward?this.startToken=e:this.endToken=e}getNeighbouringTimeline(t){if(t==e.BACKWARDS)return this.prevTimeline;if(t==e.FORWARDS)return this.nextTimeline;throw Error(`Invalid direction '`+t+`'`)}setNeighbouringTimeline(t,n){if(this.getNeighbouringTimeline(n))throw Error(`timeline already has a neighbouring timeline - cannot reset neighbour (direction: `+n+`)`);if(n==e.BACKWARDS)this.prevTimeline=t;else if(n==e.FORWARDS)this.nextTimeline=t;else throw Error(`Invalid direction '`+n+`'`);this.setPaginationToken(null,n)}addEvent(t,n){var r=n.toStartOfTimeline,i=n.roomState,a=n.timelineWasEmpty,o=n.addToState;i||=r?this.startState:this.endState;var s=this.getTimelineSet();if(s.room&&(e.setEventMetadata(t,i,r),o&&t.isState()&&s.room.getUnfilteredTimelineSet()===s)){var c;(c=i)==null||c.setStateEvents([t],{timelineWasEmpty:a}),(!t.sender||t.getType()===E.RoomMember&&!r)&&e.setEventMetadata(t,i,r)}var l=r?0:this.events.length;this.events.splice(l,0,t),r&&this.baseIndex++}insertEvent(t,n,r,i){var a=this.getTimelineSet();a.room&&(e.setEventMetadata(t,r,!1),i&&t.isState()&&a.room.getUnfilteredTimelineSet()===a&&(r.setStateEvents([t],{}),(!t.sender||t.getType()===E.RoomMember)&&e.setEventMetadata(t,r,!1))),this.events.splice(n,0,t)}removeEvent(e){for(var t=this.events.length-1;t>=0;t--){var n=this.events[t];if(n.getId()==e)return this.events.splice(t,1),t<this.baseIndex&&this.baseIndex--,n}return null}toString(){return this.name}};h(N,`BACKWARDS`,M.Backward),h(N,`FORWARDS`,M.Forward);var XO=function(e){return e.Add=`Relations.add`,e.Remove=`Relations.remove`,e.Redaction=`Relations.redaction`,e}({}),ZO=function(e,t){return[t,...arguments.length>2&&arguments[2]!==void 0?arguments[2]:[]].includes(e)},QO=class extends O{constructor(e,t,n,r){var i;super(),i=this,this.relationType=e,this.eventType=t,this.altEventTypes=r,h(this,`relationEventIds`,new Set),h(this,`relations`,new Set),h(this,`annotationsByKey`,{}),h(this,`annotationsBySender`,{}),h(this,`sortedAnnotationsByKey`,[]),h(this,`targetEvent`,null),h(this,`creationEmitted`,!1),h(this,`replacementUpdateId`,0),h(this,`client`,void 0),h(this,`onEventStatus`,(e,t)=>{if(!e.isSending()){e.removeListener($.Status,this.onEventStatus);return}t===P.CANCELLED&&(e.removeListener($.Status,this.onEventStatus),this.removeEvent(e))}),h(this,`onBeforeRedaction`,function(){var e=C(function*(e){i.relations.has(e)&&(i.relations.delete(e),i.relationType===D.Annotation?i.removeAnnotationFromAggregation(e):i.relationType===D.Replace&&(yield i.updateTargetEventReplacement()),e.removeListener($.BeforeRedaction,i.onBeforeRedaction),i.emit(XO.Redaction,e))});return function(t){return e.apply(this,arguments)}}()),this.client=n instanceof RA?n.client:n}addEvent(e){var t=this;return C(function*(){if(!t.relationEventIds.has(e.getId())){var n=e.getRelation();if(!n){w.error(`Event must have relation info`);return}var r=n.rel_type,i=e.getType();if(t.relationType!==r||!ZO(i,t.eventType,t.altEventTypes)){w.error(`Event relation info doesn't match this container`);return}e.isSending()&&e.on($.Status,t.onEventStatus),t.relations.add(e),t.relationEventIds.add(e.getId()),t.relationType===D.Annotation?t.addAnnotationToAggregation(e):t.relationType===D.Replace&&(yield t.updateTargetEventReplacement()),e.on($.BeforeRedaction,t.onBeforeRedaction),t.emit(XO.Add,e),t.maybeEmitCreated()}})()}removeEvent(e){var t=this;return C(function*(){t.relations.has(e)&&(t.relations.delete(e),t.relationType===D.Annotation?t.removeAnnotationFromAggregation(e):t.relationType===D.Replace&&(yield t.updateTargetEventReplacement()),t.emit(XO.Remove,e))})()}getRelations(){return[...this.relations]}addAnnotationToAggregation(e){var t=(e.getRelation()??{}).key;if(t){var n=this.annotationsByKey[t];n||(n=this.annotationsByKey[t]=new Set,this.sortedAnnotationsByKey.push([t,n])),n.add(e),this.sortedAnnotationsByKey.sort((e,t)=>{var n=e[1];return t[1].size-n.size});var r=e.getSender(),i=this.annotationsBySender[r];i||=this.annotationsBySender[r]=new Set,i.add(e)}}removeAnnotationFromAggregation(e){var t=(e.getRelation()??{}).key;if(t){var n=this.annotationsByKey[t];n&&(n.delete(e),this.sortedAnnotationsByKey.sort((e,t)=>{var n=e[1];return t[1].size-n.size}));var r=e.getSender(),i=this.annotationsBySender[r];i&&i.delete(e)}}getSortedAnnotationsByKey(){return this.relationType===D.Annotation?this.sortedAnnotationsByKey:null}getAnnotationsBySender(){return this.relationType===D.Annotation?this.annotationsBySender:null}getLastReplacement(){var e=this;return C(function*(){if(e.relationType!==D.Replace||!e.targetEvent)return null;var t=e.targetEvent.getServerAggregatedRelation(D.Replace)?.origin_server_ts,n=e.getRelations().reduce((n,r)=>r.getSender()!==e.targetEvent.getSender()||t&&t>r.getTs()||n&&n.getTs()>r.getTs()?n:r,null);return n!=null&&n.shouldAttemptDecryption()&&e.client.getCrypto()?yield n.attemptDecryption(e.client.getCrypto()):n!=null&&n.isBeingDecrypted()&&(yield n.getDecryptionPromise()),n})()}setTargetEvent(e){var t=this;return C(function*(){t.targetEvent||(t.targetEvent=e,t.relationType===D.Replace&&(yield t.updateTargetEventReplacement()),t.maybeEmitCreated())})()}updateTargetEventReplacement(){var e=this;return C(function*(){if(!(!e.targetEvent||e.targetEvent.isState())){var t=e.targetEvent,n=++e.replacementUpdateId,r=yield e.getLastReplacement();n!==e.replacementUpdateId||e.targetEvent!==t||!r&&!t.replacingEvent()||t.makeReplaced(r??void 0)}})()}maybeEmitCreated(){this.creationEmitted||!this.targetEvent||!this.relations.size||(this.creationEmitted=!0,this.targetEvent.emit($.RelationsCreated,this.relationType,this.eventType))}},$O=class{constructor(e,t){this.client=e,this.room=t,h(this,`relations`,new Map)}getChildEventsForEvent(e,t,n){var r;return(r=this.relations.get(e))==null||(r=r.get(t))==null?void 0:r.get(n)}getAllChildEventsForEvent(e){var t=this.relations.get(e)??new Map,n=[];for(var r of t.values())for(var i of r.values())n.push(...i.getRelations());return n}aggregateParentEvent(e){var t=this.relations.get(e.getId());if(t)for(var n of t.values())for(var r of n.values())r.setTargetEvent(e)}aggregateChildEvent(e,t){if(!(e.isRedacted()||e.status===P.CANCELLED)){var n=e.getRelation();if(n){var r=()=>{if(e.isDecryptionFailure()){e.once($.Decrypted,r);return}this.aggregateChildEvent(e,t)};if(e.isBeingDecrypted()||e.shouldAttemptDecryption()){e.once($.Decrypted,r);return}var i=n.event_id,a=n.rel_type,o=e.getType(),s=this.relations.get(i);s||(s=new Map,this.relations.set(i,s));var c=s.get(a);c||(c=new Map,s.set(a,c));var l=c.get(o);if(!l){l=new QO(a,o,this.client),c.set(o,l);var u=this.room??t?.room,d=t?.findEventById(i)??u?.findEventById(i)??u?.getPendingEvent(i);d&&l.setTargetEvent(d)}l.addEvent(e)}}}},ek=w.log.bind(w),tk=function(e){return e.Ignore=`ignore`,e.Replace=`replace`,e}({}),nk=class extends O{constructor(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;super(),this.room=e,this.thread=r,this.threadListType=i,h(this,`relations`,void 0),h(this,`timelineSupport`,void 0),h(this,`displayPendingEvents`,void 0),h(this,`liveTimeline`,void 0),h(this,`timelines`,void 0),h(this,`_eventIdToTimeline`,new Map),h(this,`filter`,void 0),this.timelineSupport=!!t.timelineSupport,this.liveTimeline=new N(this),this.displayPendingEvents=t.pendingEvents!==!1,this.timelines=[this.liveTimeline],this._eventIdToTimeline=new Map,this.filter=t.filter,this.relations=this.room?.relations??new $O(e?.client??n)}getTimelines(){return this.timelines}getFilter(){return this.filter}setFilter(e){this.filter=e}getPendingEvents(){return!this.room||!this.displayPendingEvents?[]:this.room.getPendingEvents()}getLiveTimeline(){return this.liveTimeline}setLiveTimeline(e){this.liveTimeline=e}eventIdToTimeline(e){return this._eventIdToTimeline.get(e)}replaceEventId(e,t){var n=this._eventIdToTimeline.get(e);n&&(this._eventIdToTimeline.delete(e),this._eventIdToTimeline.set(t,n))}resetLiveTimeline(e,t){var n=!this.timelineSupport||!t,r=this.liveTimeline,i=n?r.forkLive(N.FORWARDS):r.fork(N.FORWARDS);n?(this.timelines=[i],this._eventIdToTimeline=new Map):this.timelines.push(i),t&&r.setPaginationToken(t,N.FORWARDS),i.setPaginationToken(e??null,N.BACKWARDS),this.liveTimeline=i,this.emit(z.TimelineReset,this.room,this,n)}getTimelineForEvent(e){if(e==null)return null;var t=this._eventIdToTimeline.get(e);return t===void 0?null:t}findEventById(e){var t=this.getTimelineForEvent(e);if(t)return t.getEvents().find(function(t){return t.getId()==e})}addTimeline(){if(!this.timelineSupport)throw Error(`timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.`);var e=new N(this);return this.timelines.push(e),e}addEventsToTimeline(e,t,n,r,i){if(!r)throw Error(`'timeline' not specified for EventTimelineSet.addEventsToTimeline`);if(!t&&r==this.liveTimeline)throw Error(`EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead`);if(!(this.filter&&(e=this.filter.filterRoomTimeline(e),!e.length))){var a=t?N.BACKWARDS:N.FORWARDS,o=t?N.FORWARDS:N.BACKWARDS,s=!1,c=!1;for(var l of e){var u=l.getId(),d=this._eventIdToTimeline.get(u);if(!d){this.addEventToTimeline(l,r,{toStartOfTimeline:t,addToState:n}),c=!0,s=!0;continue}if(c=!1,d==r){ek(`Event `+u+` already in timeline `+r);continue}var f=r.getNeighbouringTimeline(a);if(f){ek(d==f?`Event `+u+` in neighbouring timeline - switching to `+d:`Event `+u+` already in a different timeline `+d),r=d;continue}w.info(`Already have timeline for `+u+` - joining timeline `+r+` to `+d);var p=d===this.liveTimeline,m=r===this.liveTimeline,h=a===N.BACKWARDS&&p,g=a===N.FORWARDS&&m;if(h||g){h&&w.warn(`Refusing to set a preceding existingTimeLine on our timeline as the existingTimeLine is live (`+d+`)`),g&&w.warn(`Refusing to set our preceding timeline on a existingTimeLine as our timeline is live (`+r+`)`);continue}r.setNeighbouringTimeline(d,a),d.setNeighbouringTimeline(r,o),r=d,s=!0}if(c||!s){if(a===N.FORWARDS&&r===this.liveTimeline){w.warn({lastEventWasNew:c,didUpdate:s}),w.warn(`Refusing to set forwards pagination token of live timeline ${r} to ${i}`);return}r.setPaginationToken(i??null,a)}}}addLiveEvent(e,t){var n=t.duplicateStrategy,r=t.fromCache,i=t.roomState,a=t.timelineWasEmpty,o=t.addToState;if(!(this.filter&&!this.filter.filterRoomTimeline([e]).length)){var s=this._eventIdToTimeline.get(e.getId());if(s){if(n===tk.Replace){ek(`EventTimelineSet.addLiveEvent: replacing duplicate event `+e.getId());for(var c=s.getEvents(),l=0;l<c.length;l++)if(c[l].getId()===e.getId()){i||=s.getState(N.FORWARDS),N.setEventMetadata(e,i,!1),c[l]=e;break}}else ek(`EventTimelineSet.addLiveEvent: ignoring duplicate event `+e.getId());return}this.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:!1,fromCache:r,roomState:i,timelineWasEmpty:a,addToState:o})}}addEventToTimeline(e,t,n){var r=n.toStartOfTimeline,i=n.fromCache,a=i===void 0?!1:i,o=n.roomState,s=n.timelineWasEmpty,c=n.addToState;if(t.getTimelineSet()!==this)throw Error(`EventTimelineSet.addEventToTimeline: Timeline=${t.toString()} does not belong " + 8 "in timelineSet(threadId=${this.thread?.id})`);var l=e.getId();if(this.relations.aggregateParentEvent(e),this.relations.aggregateChildEvent(e,this),this.room&&!this.canContain(e)){var u=`event=${l}`;e.threadRootId&&(u+=`(belongs to thread=${e.threadRootId})`),w.warn(`EventTimelineSet.addEventToTimeline: Ignoring ${u} that does not belong in timeline=${t.toString()} timelineSet(threadId=${this.thread?.id})`);return}t.addEvent(e,{toStartOfTimeline:r,roomState:o,timelineWasEmpty:s,addToState:c}),this._eventIdToTimeline.set(l,t);var d={timeline:t,liveEvent:!r&&t==this.liveTimeline&&!a};this.emit(z.Timeline,e,this.room,!!r,!1,d)}insertEventIntoTimeline(e,t,n,r){if(t.getTimelineSet()!==this)throw Error(`EventTimelineSet.insertEventIntoTimeline: Timeline=${t.toString()} does not belong " + 9 "in timelineSet(threadId=${this.thread?.id})`);var i=e.getId();if(this.relations.aggregateParentEvent(e),this.relations.aggregateChildEvent(e,this),this.room&&!this.canContain(e)){var a=`event=${i}`;e.threadRootId&&(a+=`(belongs to thread=${e.threadRootId})`),w.warn(`EventTimelineSet.insertEventIntoTimeline: Ignoring ${a} that does not belong in timeline=${t.toString()} timelineSet(threadId=${this.thread?.id})`);return}var o=e.relationEventId;if(!o){this.addEventToTimeline(e,t,{toStartOfTimeline:!1,fromCache:!1,timelineWasEmpty:!1,roomState:n,addToState:r});return}for(var s=this.findEventById(o),c=t.getEvents(),l=s===void 0?0:c.indexOf(s);l<c.length&&!(c[l].getTs()>e.getTs());l++);t.insertEvent(e,l,n,r),this._eventIdToTimeline.set(i,t);var u={timeline:t,liveEvent:!1};this.emit(z.Timeline,e,this.room,!1,!1,u)}handleRemoteEcho(e,t,n){var r=this._eventIdToTimeline.get(t);r?(this._eventIdToTimeline.delete(t),this._eventIdToTimeline.set(n,r)):(!this.filter||this.filter.filterRoomTimeline([e]).length)&&this.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:!1,addToState:!1})}removeEvent(e){var t=this._eventIdToTimeline.get(e);if(!t)return null;var n=t.removeEvent(e);if(n){this._eventIdToTimeline.delete(e);var r={timeline:t};this.emit(z.Timeline,n,this.room,void 0,!0,r)}return n}compareEventOrdering(e,t){if(e==t)return 0;var n=this._eventIdToTimeline.get(e),r=this._eventIdToTimeline.get(t);if(n===void 0||r===void 0)return null;if(n===r){for(var i=void 0,a=void 0,o=n.getEvents(),s=0;s<o.length&&(i===void 0||a===void 0);s++){var c=o[s].getId();c==e&&(i=s),c==t&&(a=s)}var l=i-a;return l<0?-1:+(l>0)}for(var u=n;u;){if(u===r)return-1;u=u.getNeighbouringTimeline(N.FORWARDS)}for(u=n;u;){if(u===r)return 1;u=u.getNeighbouringTimeline(N.BACKWARDS)}return null}canContain(e){if(!this.room)throw Error("Cannot call `EventTimelineSet::canContain without a `room` set. Set the room when creating the EventTimelineSet to call this method.");var t=this.room.eventShouldLiveIn(e),n=t.threadId,r=t.shouldLiveInRoom,i=t.shouldLiveInThread;return this.thread?this.thread.id===n:(!r&&!i&&w.warn(`EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=${this.room?.roomId} eventId=${e.getId()} threadId=${e.threadRootId}`),r)}},P=function(e){return e.NOT_SENT=`not_sent`,e.ENCRYPTING=`encrypting`,e.SENDING=`sending`,e.QUEUED=`queued`,e.SENT=`sent`,e.CANCELLED=`cancelled`,e}({}),rk=class{constructor(e,t){this.roomId=e}},ik=new _E(`unread_thread_notifications`,`org.matrix.msc3773.unread_thread_notifications`);function ak(e,t){if(t.endsWith(`*`)){var n=t.slice(0,-1);return e.slice(0,n.length)===n}else return e===t}var ok=class{constructor(e,t){this.filterJson=e,this.userId=t}check(e){var t,n=e.getUnsigned()?.[`m.relations`]||{},r=Object.keys(n),i=[];return this.userId&&n!=null&&(t=n[Q.name])!=null&&t.current_user_participated&&i.push(this.userId),this.checkFields(e.getRoomId(),e.getSender(),e.getType(),e.getContent()?e.getContent().url!==void 0:!1,r,i)}toJSON(){return Object.fromEntries(Object.entries({types:this.filterJson.types,not_types:this.filterJson.not_types,rooms:this.filterJson.rooms,not_rooms:this.filterJson.not_rooms,senders:this.filterJson.senders,not_senders:this.filterJson.not_senders,contains_url:this.filterJson.contains_url,[wI.name]:this.filterJson[wI.name],[TI.name]:this.filterJson[TI.name]}).filter(e=>{var t=x(e,2);return t[0],t[1]}))}checkFields(e,t,n,r,i,a){var o={rooms:function(t){return e===t},senders:function(e){return t===e},types:function(e){return ak(n,e)}};for(var s in o){var c=o[s],l=`not_`+s,u=this.filterJson[l];if(u!=null&&u.some(c))return!1;var d=this.filterJson[s];if(d&&!d.some(c))return!1}var f=this.filterJson.contains_url;if(f!==void 0&&f!==r)return!1;var p=this.filterJson[TI.name];if(p!==void 0&&!this.arrayMatchesFilter(p,i))return!1;var m=this.filterJson[wI.name];return!(m!==void 0&&!this.arrayMatchesFilter(m,a))}arrayMatchesFilter(e,t){return t.length>0&&e.every(e=>t.includes(e))}filter(e){return e.filter(this.check,this)}limit(){return this.filterJson.limit===void 0?10:this.filterJson.limit}};function sk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ck(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?sk(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sk(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var lk=new gE(`profile_fields`,`org.matrix.msc4429.profile_fields`);function uk(e,t,n){for(var r=t.split(`.`),i=e,a=0;a<r.length-1;a++)i[r[a]]||(i[r[a]]={}),i=i[r[a]];i[r[r.length-1]]=n}var dk=class e{static fromJson(t,n,r){var i=new e(t,n);return i.setDefinition(r),i}constructor(e,t){this.userId=e,this.filterId=t,h(this,`definition`,{}),h(this,`roomFilter`,void 0),h(this,`roomTimelineFilter`,void 0)}getFilterId(){return this.filterId}getDefinition(){return this.definition}setDefinition(e){this.definition=e;var t=e.room,n={};t&&(t.rooms&&(n.rooms=t.rooms),t.rooms&&(n.not_rooms=t.not_rooms)),this.roomFilter=new ok(n,this.userId),this.roomTimelineFilter=new ok(t?.timeline||{},this.userId)}getRoomTimelineFilterComponent(){return this.roomTimelineFilter}filterRoomTimeline(e){return this.roomFilter&&(e=this.roomFilter.filter(e)),this.roomTimelineFilter&&(e=this.roomTimelineFilter.filter(e)),e}setTimelineLimit(e){uk(this.definition,`room.timeline.limit`,e)}setUnreadThreadNotifications(e){var t;this.definition=ck(ck({},this.definition),{},{room:ck(ck({},this.definition?.room),{},{timeline:ck(ck({},(t=this.definition)==null||(t=t.room)==null?void 0:t.timeline),{},{[ik.name]:e})})})}setLazyLoadMembers(e){uk(this.definition,`room.state.lazy_load_members`,e)}setIncludeLeaveRooms(e){uk(this.definition,`room.include_leave`,e)}setUnstableMSC4429SyncUserProfiles(e,t){var n=t?lk.name:lk.unstable??lk.name;this.definition[n]={ids:e}}};h(dk,`LAZY_LOADING_MESSAGES_FILTER`,{lazy_load_members:!0});function fk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function pk(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?fk(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fk(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function mk(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return new MI({content:{[t.getId()]:{[n]:{[e]:pk({ts:t.getTs()},!r&&{thread_id:hI(t)})}}},type:E.Receipt,room_id:t.getRoomId()})}var hk=0,gk=1,_k=class extends O{constructor(){super(...arguments),h(this,`receipts`,new gD(()=>new Map)),h(this,`receiptCacheByEventId`,new Map)}getReadReceiptForUserId(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:SE.Read,r=x(this.receipts.get(n)?.get(e)??[null,null],2),i=r[0],a=r[1];return t?i:a??i}compareReceipts(e,t){return this.getUnfilteredTimelineSet().compareEventOrdering(e.eventId,t.eventId)??e.data.ts-t.data.ts}getEventReadUpTo(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=this.getLatestReceipt(e,t);return n&&this.receiptPointsAtConsistentEvent(n)?n.eventId:null}receiptPointsAtConsistentEvent(e){var t,n=this.findEventById(e.eventId);if(!n)return!1;if(!((t=e.data)!=null&&t.thread_id))return!0;if(e.data.thread_id===`main`){if(gI(n))return!0}else if(n.threadRootId===e.data.thread_id)return!0;return w.warn(`Ignoring receipt because its thread_id (${e.data.thread_id}) disagrees with the thread root (${n.threadRootId}) of the referenced event (event ID = ${e.eventId})`),!1}getLatestReceipt(e,t){var n=this.getReadReceiptForUserId(e,t,SE.Read),r=this.getReadReceiptForUserId(e,t,SE.ReadPrivate),i;return n!=null&&n.eventId&&r!=null&&r.eventId&&(i=this.compareReceipts(n,r)),i?(i<0?r:n)??null:r??n??null}addReceiptToStructure(e,t,n,r,i){var a=this.receipts.getOrCreate(t),o=a.get(n);o||(o=[null,null],a.set(n,o));var s=o[hk];i&&(s=o[gk]??o[hk]);var c={eventId:e,data:r};if(!(s&&this.compareReceipts(s,c)>=0)){var l=i?o[hk]:c,u=i?c:o[gk],d=null;l&&u&&(d=this.getUnfilteredTimelineSet().compareEventOrdering(l.eventId,u.eventId));var f=d===null||d<0,p=o[gk]??o[hk];if(i&&f?o[gk]=c:i||(o[hk]=c,f||(o[gk]=null)),p!==(o[gk]??o[hk])){if(p&&this.receiptCacheByEventId.get(p.eventId)){var m=p.eventId;this.receiptCacheByEventId.set(m,this.receiptCacheByEventId.get(m).filter(e=>e.type!==t||e.userId!==n)),this.receiptCacheByEventId.get(m).length<1&&this.receiptCacheByEventId.delete(m)}this.receiptCacheByEventId.get(e)||this.receiptCacheByEventId.set(e,[]),this.receiptCacheByEventId.get(e).push({userId:n,type:t,data:r})}}}getReceiptsForEvent(e){return this.receiptCacheByEventId.get(e.getId())||[]}fixupNotifications(e){var t=this.getReadReceiptForUserId(e,!1),n=this.timeline[this.timeline.length-1];n&&t?.eventId===n.getId()&&e===n.getSender()&&(this.setUnread(R.Total,0),this.setUnread(R.Highlight,0))}addLocalEchoReceipt(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;this.addReceipt(mk(e,t,n,r),!0)}getUsersReadUpTo(e){return this.getReceiptsForEvent(e).filter(function(e){return lD(e.type)}).map(function(e){return e.userId})}};new RD.UnstableValue(`m.poll.disclosed`,`org.matrix.msc3381.poll.disclosed`),new RD.UnstableValue(`m.poll.undisclosed`,`org.matrix.msc3381.poll.undisclosed`),new RD.UnstableValue(`m.poll.start`,`org.matrix.msc3381.poll.start`);var vk=new RD.UnstableValue(`m.poll.response`,`org.matrix.msc3381.poll.response`),yk=new RD.UnstableValue(`m.poll.end`,`org.matrix.msc3381.poll.end`),bk=function(e){return e.New=`Poll.new`,e.End=`Poll.end`,e.Update=`Poll.update`,e.Responses=`Poll.Responses`,e.Destroy=`Poll.Destroy`,e.UndecryptableRelations=`Poll.UndecryptableRelations`,e}({}),xk=(e,t)=>({responseEvents:e.filter(e=>{if(!e.isDecryptionFailure())return vk.matches(e.getType())&&e.getTs()<=t})}),Sk=class extends O{constructor(e,t,n){if(super(),this.rootEvent=e,this.matrixClient=t,this.room=n,h(this,`roomId`,void 0),h(this,`pollEvent`,void 0),h(this,`_isFetchingResponses`,!1),h(this,`relationsNextBatch`,void 0),h(this,`responses`,null),h(this,`endEvent`,void 0),h(this,`undecryptableRelationEventIds`,new Set),h(this,`countUndecryptableEvents`,e=>{var t=e.filter(e=>e.isDecryptionFailure()).map(e=>e.getId()),n=this.undecryptableRelationsCount;this.undecryptableRelationEventIds=new Set([...this.undecryptableRelationEventIds,...t]),this.undecryptableRelationsCount!==n&&this.emit(bk.UndecryptableRelations,this.undecryptableRelationsCount)}),!this.rootEvent.getRoomId()||!this.rootEvent.getId())throw Error(`Invalid poll start event.`);this.roomId=this.rootEvent.getRoomId(),this.pollEvent=this.rootEvent.unstableExtensibleEvent}get pollId(){return this.rootEvent.getId()}get endEventId(){return this.endEvent?.getId()}get isEnded(){return!!this.endEvent}get isFetchingResponses(){return this._isFetchingResponses}get undecryptableRelationsCount(){return this.undecryptableRelationEventIds.size}getResponses(){var e=this;return C(function*(){return e.responses||e.isFetchingResponses||(yield e.fetchResponses()),e.responses})()}onNewRelation(e){if(yk.matches(e.getType())&&this.validateEndEvent(e)&&(this.endEvent=e,this.refilterResponsesOnEnd(),this.emit(bk.End)),this.responses){var t=this.endEvent?.getTs()||2**53-1,n=xk([e],t).responseEvents;this.countUndecryptableEvents([e]),n.length&&(n.forEach(e=>{this.responses.addEvent(e)}),this.emit(bk.Responses,this.responses))}}fetchResponses(){var e=this;return C(function*(){e._isFetchingResponses=!0;var t=yield e.matrixClient.relations(e.roomId,e.rootEvent.getId(),`m.reference`,void 0,{from:e.relationsNextBatch||void 0});yield Promise.all(t.events.map(t=>e.matrixClient.decryptEventIfNeeded(t)));var n=e.responses||new QO(`m.reference`,vk.name,e.matrixClient,[vk.altName]),r=t.events.find(e=>yk.matches(e.getType()));e.validateEndEvent(r)&&(e.endEvent=r,e.refilterResponsesOnEnd(),e.emit(bk.End));var i=e.endEvent?.getTs()||2**53-1;xk(t.events,i).responseEvents.forEach(e=>{n.addEvent(e)}),e.relationsNextBatch=t.nextBatch??void 0,e.responses=n,e.countUndecryptableEvents(t.events),e.relationsNextBatch?e.fetchResponses():e._isFetchingResponses=!1,e.emit(bk.Responses,e.responses)})()}refilterResponsesOnEnd(){if(this.responses){var e=this.endEvent?.getTs()||2**53-1;this.responses.getRelations().forEach(t=>{if(t.getTs()>e){var n;(n=this.responses)==null||n.removeEvent(t)}}),this.emit(bk.Responses,this.responses)}}validateEndEvent(e){if(!e||this.endEvent&&this.endEvent.getTs()<e.getTs())return!1;var t=this.room.currentState,n=e.getSender();return!!n&&(n===this.rootEvent.getSender()||t.maySendRedactionForEvent(this.rootEvent,n))}},Ck=e=>{var t=e.getType();return RD.M_POLL_START.matches(t)||vk.matches(t)||yk.matches(t)},wk=class{constructor(e){h(this,`room`,void 0),h(this,`threadedReceipts`,void 0),h(this,`unthreadedReceipts`,void 0),h(this,`danglingReceipts`,void 0),h(this,`onTimelineEvent`,e=>{var t=e.getId();t&&this.danglingReceipts.remove(t)?.forEach(e=>{e.receipt.thread_id?this.threadedReceipts.set(e.receipt.thread_id,e.eventId,e.receiptType,e.userId,e.receipt.ts,e.synthetic):this.unthreadedReceipts.set(t,e.receiptType,e.userId,e.receipt.ts,e.synthetic)})}),this.room=e,this.threadedReceipts=new kk(e),this.unthreadedReceipts=new Ok(e),this.danglingReceipts=new Ak,e.on(z.Timeline,this.onTimelineEvent)}add(e,t){for(var n of Object.entries(e)){var r=x(n,2),i=r[0],a=r[1];for(var o of Object.entries(a)){var s=x(o,2),c=s[0],l=s[1];for(var u of Object.entries(l)){var d=x(u,2),f=d[0],p=d[1];this.room.findEventById(i)?p.thread_id?this.threadedReceipts.set(p.thread_id,i,c,f,p.ts,t):this.unthreadedReceipts.set(i,c,f,p.ts,t):this.danglingReceipts.add(new Ek(i,c,f,p,t))}}}}hasUserReadEvent(e,t){var n=this.unthreadedReceipts.get(e);if(n&&Mk(n.eventId,t,this.room))return!0;var r=this.room.findEventById(t);if(!r)return w.warn(`hasUserReadEvent event ID ${t} not found in room ${this.room.roomId}: this shouldn't happen!`),!1;var i=hI(r),a=this.threadedReceipts.get(i,e);return!!(a&&Mk(a.eventId,t,this.room)||this.userSentLatestEventInThread(i,e))}userSentLatestEventInThread(e,t){var n=e===`main`?this.room.getLiveTimeline().getEvents():this.room.getThread(e)?.timeline;return!!(n&&n.length>0&&n[n.length-1].getSender()===t)}},Tk=class{constructor(e,t,n){this.eventId=e,this.receiptType=t,this.ts=n}},Ek=class{constructor(e,t,n,r,i){this.eventId=e,this.receiptType=t,this.userId=n,this.receipt=r,this.synthetic=i}},Dk=class{constructor(e){h(this,`room`,void 0),h(this,`real`,void 0),h(this,`synthetic`,void 0),this.room=e,this.real=void 0,this.synthetic=void 0}set(e,t){e?this.synthetic=t:this.real=t,this.synthetic&&this.real&&Mk(this.real.eventId,this.synthetic.eventId,this.room)&&(this.synthetic=void 0)}get(){return this.synthetic??this.real}getByType(e){return e?this.synthetic:this.real}},Ok=class{constructor(e){h(this,`room`,void 0),h(this,`data`,void 0),this.room=e,this.data=new Map}set(e,t,n,r,i){var a=jk(this.data,n,()=>new Dk(this.room)),o=a.getByType(i);o&&Nk(o.eventId,e,this.room)||a.set(i,new Tk(e,t,r))}get(e){return this.data.get(e)?.get()}},kk=class{constructor(e){h(this,`room`,void 0),h(this,`data`,void 0),this.room=e,this.data=new Map}set(e,t,n,r,i,a){jk(this.data,e,()=>new Ok(this.room)).set(t,n,r,i,a)}get(e,t){return this.data.get(e)?.get(t)}},Ak=class{constructor(){h(this,`data`,new Map)}add(e){jk(this.data,e.eventId,()=>[]).push(e)}remove(e){var t=this.data.get(e);return this.data.delete(e),t}};function jk(e,t,n){var r=e.get(t);if(r)return r;var i=n();return e.set(t,i),i}function Mk(e,t,n){var r=n.compareEventOrdering(e,t);return r!==null&&r>=0}function Nk(e,t,n){var r=n.compareEventOrdering(e,t);return r!==null&&r>0}function Pk(e,t,n){var r=e.findEventById(t),i=e.findEventById(n);if(!r||!i)return null;var a=gI(r),o=gI(i);return a&&o?Fk(e,t,n,r,i):Ik(t,n,r,i)}function Fk(e,t,n,r,i){var a=e.getUnfilteredTimelineSet(),o=a.compareEventOrdering(t,n);return o===null?a.getTimelineForEvent(t)===a.getLiveTimeline()?1:a.getTimelineForEvent(n)===a.getLiveTimeline()?-1:Lk(r,i):o}function Ik(e,t,n,r){var i=hI(n),a=hI(r),o=n.getThread();return o&&i===a?o.timelineSet.compareEventOrdering(e,t):Lk(n,r)}function Lk(e,t){var n=e.getTs(),r=t.getTs();return n<r?-1:+(n>r)}var Rk=360*60*1e3,zk=30*1e3,Bk=class extends O{constructor(e,t,n){var r;super(),r=this,this.logger=e,this.http=t,this.name=n,h(this,`cached`,void 0),h(this,`retryTimeout`,void 0),h(this,`refreshTimeout`,void 0),h(this,`poll`,C(function*(){r.logger.debug(`Checking capabilites`);try{var e=r.cached;yield r.fetch(),r.clearTimeouts(),r.refreshTimeout=globalThis.setTimeout(r.poll,Rk),r.logger.debug(`Fetched new server ${r.name}`),r.cached&&!NE(e,r.cached)&&r.emit(`update`,r.cached)}catch(e){r.clearTimeouts();var t=Math.floor(zk+Math.random()*5e3);r.retryTimeout=globalThis.setTimeout(r.poll,t),r.logger.warn(`Failed to refresh ${r.name}: retrying in ${t}ms`,e)}}))}start(){this.poll().then()}stop(){this.clearTimeouts()}getCached(){return this.cached}clearTimeouts(){this.refreshTimeout&&=(clearInterval(this.refreshTimeout),void 0),this.retryTimeout&&=(clearTimeout(this.retryTimeout),void 0)}},F=function(e){return e.Get=`GET`,e.Put=`PUT`,e.Post=`POST`,e.Delete=`DELETE`,e.Options=`OPTIONS`,e.Head=`HEAD`,e.Patch=`PATCH`,e}({});function Vk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Hk(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Vk(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vk(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Uk=class extends Error{constructor(e,t,n){super(e),this.httpStatus=t,this.httpHeaders=n}isRateLimitError(){return this.httpStatus===429}getRetryAfterMs(){var e=this.httpHeaders?.get(`Retry-After`);if(e!=null){if(/^\d+$/.test(e)){var t=Number.parseInt(e)*1e3;if(!Number.isFinite(t))throw Error(`Retry-After header integer value is too large`);return t}var n=new Date(e);if(n.toUTCString()!==e)throw Error(`Retry-After header value is not a valid HTTP-date or non-negative decimal integer`);return n.getTime()-Date.now()}return null}},I=class e extends Uk{constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,a=e.error||`Unknown message`;t&&(a=`[${t}] ${a}`),n&&(a=`${a} (${n})`),super(`MatrixError: ${a}`,t,i),this.url=n,this.event=r,h(this,`errcode`,void 0),h(this,`error`,void 0),h(this,`data`,void 0),this.errcode=e.errcode,this.error=e.error,this.name=e.errcode||`Unknown error code`,this.data=e}isRateLimitError(){return this.errcode===`M_LIMIT_EXCEEDED`||(this.errcode===`M_UNKNOWN`||this.errcode===void 0)&&super.isRateLimitError()}getRetryAfterMs(){var e=super.getRetryAfterMs();if(e!==null)return e;if(this.errcode===`M_LIMIT_EXCEEDED`&&`retry_after_ms`in this.data){if(!Number.isInteger(this.data.retry_after_ms))throw Error(`retry_after_ms is not an integer`);return this.data.retry_after_ms}return null}asWidgetApiErrorData(){var e={};if(this.httpHeaders)for(var t of this.httpHeaders){var n=x(t,2),r=n[0];e[r]=n[1]}return{http_status:this.httpStatus??400,http_headers:e,url:this.url??``,response:Hk({errcode:this.errcode??`M_UNKNOWN`,error:this.data.error??`Unknown message`},this.data)}}static fromWidgetApiErrorData(t){return new e(t.response,t.http_status,t.url,void 0,new Headers(t.http_headers))}};function Wk(e,t){if(!(e instanceof Uk)||!e.isRateLimitError())return t;try{return e.getRetryAfterMs()??t}catch{return t}}var Gk=class extends Error{constructor(e,t){super(e+(t?`: ${t.message}`:``))}get name(){return`ConnectionError`}},Kk=class extends Error{constructor(e){super(e?.message??``)}get name(){return`TokenRefreshError`}},qk=class extends Error{constructor(e){super(e?.message??``)}get name(){return`TokenRefreshLogoutError`}},Jk=new gE(null,`ORG.MATRIX.MSC4387_SAFETY`),Yk=class extends I{constructor(){super(...arguments),h(this,`harms`,void 0),h(this,`expiry`,void 0);var e=arguments.length<=0?void 0:arguments[0];this.harms=new Set(e&&`harms`in e&&Array.isArray(e.harms)?e.harms:[]),this.message=`${super.message} (${[...this.harms].join(`, `)})`,e&&`expiry`in e&&typeof e.expiry==`number`&&(this.expiry=new Date(e.expiry))}},Xk=function(e){return e.SessionLoggedOut=`Session.logged_out`,e.NoConsent=`no_consent`,e}({}),Zk=s((e=>{ 10 /*! 11 * content-type 12 * Copyright(c) 2015 Douglas Christopher Wilson 13 * MIT Licensed 14 */ 15 Object.defineProperty(e,"__esModule",{value:!0}),e.parse=n;let t=(()=>{let e=function(){};return e.prototype=Object.create(null),e})();function n(e,n){let s=e.length,c=a(e,0,s),l=c;c=i(e,c,s);let u=o(e,l,c);return{type:e.slice(l,u).toLowerCase(),parameters:n?.parameters===!1?new t:r(e,c,s)}}function r(e,n,r){let s=new t;parameter:for(;n<r;){n=a(e,n+1,r);let t=n;for(;n<r;){let c=e.charCodeAt(n);if(c===59)continue parameter;if(c===61){let c=o(e,t,n),l=e.slice(t,c).toLowerCase();if(n=a(e,n+1,r),n<r&&e.charCodeAt(n)===34){n++;let t=``;for(;n<r;){let a=e.charCodeAt(n++);if(a===34){n=i(e,n,r),s[l]===void 0&&(s[l]=t);break}if(a===92&&n<r){t+=e[n++];continue}t+=String.fromCharCode(a)}continue parameter}let u=n;if(n=i(e,n,r),s[l]===void 0){let t=o(e,u,n);s[l]=e.slice(u,t)}continue parameter}n++}}return s}function i(e,t,n){for(;t<n&&e.charCodeAt(t)!==59;)t++;return t}function a(e,t,n){for(;t<n;){let n=e.charCodeAt(t);if(n!==32&&n!==9)break;t++}return t}function o(e,t,n){for(;n>t;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return n}}))();function Qk(e){var t=new AbortController;return setTimeout(()=>{t.abort()},e),t.signal}function $k(e){var t=new AbortController;function n(){for(var t of e)t.removeEventListener(`abort`,r)}function r(){t.abort(),n()}for(var i of e){if(i.aborted){r();break}i.addEventListener(`abort`,r)}return{signal:t.signal,cleanup:n}}function eA(e,t){var n=tA(e)?new Headers(e.getAllResponseHeaders().trim().split(/[\r\n]+/).map(e=>{var t=e.indexOf(`:`);return[e.substring(0,t),e.substring(t+1)]})):e.headers,r;try{r=nA(n)}catch(e){return e}if(r?.type===`application/json`&&t){var i=JSON.parse(t);return i.errcode&&Jk.matches(i.errcode)?new Yk(i,e.status,tA(e)?e.responseURL:e.url,void 0,n):new I(i,e.status,tA(e)?e.responseURL:e.url,void 0,n)}return r?.type===`text/plain`?new Uk(`Server returned ${e.status} error: ${t}`,e.status,n):new Uk(`Server returned ${e.status} error`,e.status,n)}function tA(e){return`getResponseHeader`in e}function nA(e){var t=e.get(`Content-Type`);return t===null?null:(0,Zk.parse)(t)}function rA(e,t){return iA.apply(this,arguments)}function iA(){return iA=C(function*(e,t){for(var n=0,r=null;n<e;)try{if(n>0){var i=1e3*2**n;w.log(`network operation failed ${n} times, retrying in ${i}ms...`),yield UE(i)}return yield t()}catch(e){if(e instanceof Gk)n+=1,r=e;else throw e}throw r}),iA.apply(this,arguments)}function aA(e,t,n){return t>4||e instanceof Gk&&!n||e.httpStatus&&Math.floor(e.httpStatus/100)===4&&e.httpStatus!==429||e.name===`AbortError`||e.name===`M_TOO_LARGE`?-1:Wk(e,1e3*2**t)}var oA=function(e){return e.Success=`success`,e.Failure=`failure`,e.Logout=`logout`,e}({}),sA=500,cA=60*1e3,lA=class{constructor(e){this.opts=e,h(this,`tokenRefreshPromise`,void 0),h(this,`latestTokenRefreshExpiry`,void 0)}prepareForRequest(){var e=this;return C(function*(){return yield e.refreshIfNeeded(),{accessToken:e.opts.accessToken,refreshToken:e.opts.refreshToken,expiry:e.latestTokenRefreshExpiry}})()}refreshIfNeeded(){var e=this;return C(function*(){if(e.tokenRefreshPromise)return e.tokenRefreshPromise;e.latestTokenRefreshExpiry&&e.latestTokenRefreshExpiry.getTime()-Date.now()<=sA&&(yield e._handleUnknownToken())})()}handleUnknownToken(e,t){var n=this;return C(function*(){return n._handleUnknownToken(e,t)})()}_handleUnknownToken(e,t){var n=this;return C(function*(){if(e!=null&&e.expiry&&e.expiry.getTime()-Date.now()>=cA)return oA.Logout;if(!e||e?.accessToken===n.opts.accessToken){n.tokenRefreshPromise??=n.doTokenRefresh(t);try{return yield n.tokenRefreshPromise}finally{n.tokenRefreshPromise=void 0}}return oA.Success})()}doTokenRefresh(e){var t=this;return C(function*(){if(!t.opts.refreshToken||!t.opts.tokenRefreshFunction){var n;return(n=t.opts.logger)==null||n.error(`Unable to refresh token - no refresh token or refresh function`),oA.Logout}e&&e>1&&(yield UE(1e3*Math.min(32,2**e)));try{var r,i;(r=t.opts.logger)==null||r.debug(`Attempting to refresh token`);var a=yield t.opts.tokenRefreshFunction(t.opts.refreshToken),o=a.accessToken,s=a.refreshToken,c=a.expiry;return t.opts.accessToken=o,t.opts.refreshToken=s,t.latestTokenRefreshExpiry=c,(i=t.opts.logger)==null||i.debug(`... token refresh complete, new token expiry:`,c),oA.Success}catch(e){var l;if(e instanceof qk||e instanceof I){var u;return(u=t.opts.logger)==null||u.error(`Failed to refresh token`,e),oA.Logout}return(l=t.opts.logger)==null||l.warn(`Failed to refresh token`,e),oA.Failure}})()}};function uA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function dA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?uA(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):uA(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var fA=class{constructor(e,t){if(this.eventEmitter=e,this.opts=t,h(this,`abortController`,new AbortController),h(this,`tokenRefresher`,void 0),jE(t,[`baseUrl`,`prefix`]),!t.onlyData)throw Error("Constructing FetchHttpApi without `onlyData=true` is no longer supported.");t.useAuthorizationHeader=t.useAuthorizationHeader??!0,this.tokenRefresher=new lA(t)}abort(){this.abortController.abort(),this.abortController=new AbortController}fetch(e,t){return this.opts.fetchFn?this.opts.fetchFn(e,t):globalThis.fetch(e,t)}setIdBaseUrl(e){this.opts.idBaseUrl=e}idServerRequest(e,t,n,r,i){if(!this.opts.idBaseUrl)throw Error(`No identity server base URL set`);var a=void 0,o=void 0;e===F.Get?a=n:o=n;var s=this.getUrl(t,a,r,this.opts.idBaseUrl),c={json:!0,headers:{}};return i&&(c.headers.Authorization=`Bearer ${i}`),this.requestOtherUrl(e,s,o,c)}authedRequest(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};return this.doAuthedRequest(1,e,t,n,r,i)}doAuthedRequest(e,t,n,r,i){var a=arguments,o=this;return C(function*(){var s=a.length>5&&a[5]!==void 0?a[5]:{},c=ME(s);c.abortSignal=s.abortSignal;var l=yield o.tokenRefresher.prepareForRequest();l.accessToken&&(o.opts.useAuthorizationHeader?(c.headers||={},c.headers.Authorization||(c.headers.Authorization=`Bearer ${l.accessToken}`),r.access_token&&delete r.access_token):r.access_token||=l.accessToken);try{return yield o.request(t,n,r,i,c)}catch(a){if(!(a instanceof I))throw a;if(a.errcode===`M_UNKNOWN_TOKEN`){var u=yield o.tokenRefresher.handleUnknownToken(l,e);if(u===oA.Success)return o.doAuthedRequest(e+1,t,n,r,i,s);if(u===oA.Failure)throw new Kk(a);c!=null&&c.inhibitLogoutEmit||o.eventEmitter.emit(Xk.SessionLoggedOut,a)}else a.errcode==`M_CONSENT_NOT_GIVEN`&&o.eventEmitter.emit(Xk.NoConsent,a.message,a.data.consent_uri);throw a}})()}request(e,t,n,r,i){var a=this.getUrl(t,n,i?.prefix,i?.baseUrl);return this.requestOtherUrl(e,a,r,i)}requestOtherUrl(e,t,n){var r=arguments,i=this;return C(function*(){var a,o,s=r.length>3&&r[3]!==void 0?r[3]:{};if(s.json!==void 0&&s.rawResponseBody!==void 0)throw Error("Invalid call to `FetchHttpApi` sets both `opts.json` and `opts.rawResponseBody`");var c=i.sanitizeUrlForLogs(t);(a=i.opts.logger)==null||a.debug(`FetchHttpApi: --> ${e} ${c}`);var l=Object.assign({},s.headers||{}),u=!s.rawResponseBody&&s.json!==!1;u&&(l.Accept||=`application/json`);var d=s.localTimeoutMs??i.opts.localTimeoutMs,f=s.keepAlive??!1,p=[i.abortController.signal];d!==void 0&&p.push(Qk(d)),s.abortSignal&&p.push(s.abortSignal);var m;s.json!==!1&&(n==null||(o=n.constructor)==null?void 0:o.name)===Object.name?(m=JSON.stringify(n),l[`Content-Type`]||=`application/json`):m=n;var h=$k(p),g=h.signal,_=h.cleanup,v=`Authorization`in l?void 0:`no-cache`,y,b=Date.now();try{var x;y=yield i.fetch(t,{signal:g,method:e,body:m,headers:l,mode:`cors`,redirect:`follow`,referrer:``,referrerPolicy:`no-referrer`,cache:v,credentials:`omit`,keepalive:f,priority:s.priority}),(x=i.opts.logger)==null||x.debug(`FetchHttpApi: <-- ${e} ${c} [${Date.now()-b}ms ${y.status}]`)}catch(t){var S;throw(S=i.opts.logger)==null||S.debug(`FetchHttpApi: <-- ${e} ${c} [${Date.now()-b}ms ${t}]`),t.name===`AbortError`?t:new Gk(`fetch failed`,t)}finally{_()}if(!y.ok)throw eA(y,yield y.text());return s.rawResponseBody?yield y.blob():u?yield y.json():yield y.text()})()}sanitizeUrlForLogs(e){try{var t=typeof e==`string`?new URL(e):e,n=new URLSearchParams;for(var r of t.searchParams.keys())n.append(r,`xxx`);var i=n.toString(),a=i?`?${i}`:``;return t.origin+t.pathname+a}catch{return`??`}}getUrl(e,t,n,r){var i=r??this.opts.baseUrl,a=i.endsWith(`/`)?i.slice(0,-1):i,o=new URL(a+(n??this.opts.prefix)+e);return(this.opts.extraParams||t)&&OE(dA(dA({},this.opts.extraParams),t),o.searchParams),o}},L=function(e){return e.V1=`/_matrix/client/v1`,e.V3=`/_matrix/client/v3`,e.Unstable=`/_matrix/client/unstable`,e}({}),pA=function(e){return e.V2=`/_matrix/identity/v2`,e}({}),mA=function(e){return e.V1=`/_matrix/media/v1`,e.V3=`/_matrix/media/v3`,e}({}),hA=1e3,gA=0,_A,vA=[];function yA(e,t){var n=[...arguments].slice(2);t||=0,t<0&&(t=0);var r=Date.now()+t,i=gA++,a={runAt:r,func:e,params:n,key:i},o=CA(vA,function(e){return e.runAt-r});return vA.splice(o,0,a),xA(),i}function bA(e){if(vA.length!==0){var t;for(t=0;t<vA.length;t++)if(vA[t].key==e){vA.splice(t,1);break}t===0&&xA()}}function xA(){_A&&globalThis.clearTimeout(_A);var e=vA[0];if(e){var t=Date.now(),n=Math.min(e.runAt-t,hA);_A=globalThis.setTimeout(SA,n)}}function SA(){for(var e=Date.now(),t=[];;){var n=vA[0];if(!n||n.runAt>e)break;var r=vA.shift();r.key,t.push(r)}xA();for(var i of t)try{i.func.apply(globalThis,i.params)}catch(e){w.error(`Uncaught exception in callback function`,e)}}function CA(e,t){for(var n=0,r=e.length;n<r;){var i=n+r>>1;t(e[i])>0?r=i:n=i+1}return n}var wA=class extends fA{constructor(){super(...arguments),h(this,`uploads`,[])}uploadContent(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.includeFilename??!0,r=t.abortController??new AbortController,i=(t.type??e.type)||`application/octet-stream`,a=t.name??e.name,o={loaded:0,total:0,abortController:r},s=Promise.withResolvers();if(globalThis.XMLHttpRequest){var c=new globalThis.XMLHttpRequest,l=function(){c.abort(),s.reject(Error(`Timeout`))},u=yA(l,3e4);c.onreadystatechange=function(){switch(c.readyState){case globalThis.XMLHttpRequest.DONE:bA(u);try{if(c.status===0)throw new DOMException(c.statusText,`AbortError`);if(!c.responseText)throw Error(`No response body.`);c.status>=400?s.reject(eA(c,c.responseText)):s.resolve(JSON.parse(c.responseText))}catch(e){if(e.name===`AbortError`){s.reject(e);return}s.reject(new Gk(`request failed`,e))}break}},c.upload.onprogress=e=>{var n;bA(u),o.loaded=e.loaded,o.total=e.total,u=yA(l,3e4),(n=t.progressHandler)==null||n.call(t,{loaded:e.loaded,total:e.total})};var d=this.getUrl(`/upload`,void 0,mA.V3);n&&a&&d.searchParams.set(`filename`,encodeURIComponent(a)),!this.opts.useAuthorizationHeader&&this.opts.accessToken&&d.searchParams.set(`access_token`,encodeURIComponent(this.opts.accessToken)),c.open(F.Post,d.href),this.opts.useAuthorizationHeader&&this.opts.accessToken&&c.setRequestHeader(`Authorization`,`Bearer `+this.opts.accessToken),c.setRequestHeader(`Content-Type`,i),c.send(e),r.signal.addEventListener(`abort`,()=>{c.abort()})}else{var f={};n&&a&&(f.filename=a);var p={"Content-Type":i};this.authedRequest(F.Post,`/upload`,f,e,{prefix:mA.V3,headers:p,abortSignal:r.signal}).then(s.resolve,s.reject)}return o.promise=s.promise.finally(()=>{AE(this.uploads,e=>e===o)}),r.signal.addEventListener(`abort`,()=>{AE(this.uploads,e=>e===o),s.reject(new DOMException(`Aborted`,`AbortError`))}),this.uploads.push(o),o.promise}cancelUpload(e){var t=this.uploads.find(t=>t.promise===e);return t?(t.abortController.abort(),!0):!1}getCurrentUploads(){return this.uploads}getContentUri(){return{base:this.opts.baseUrl,path:mA.V3+`/upload`,params:{access_token:this.opts.accessToken}}}},TA=function(e){return e.Stable=`stable`,e.Unstable=`unstable`,e}({}),EA=class extends Bk{constructor(e,t){var n;super(e,t,`server capabilities`),n=this,h(this,`fetch`,C(function*(){var e=yield n.http.authedRequest(F.Get,`/capabilities`);return n.cached=e.capabilities,n.cached}))}};function DA(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var OA=w.getChild(`RoomStickyEvents`),kA=function(e){return e.Update=`RoomStickyEvents.Update`,e}({});function AA(e){if(typeof e!=`string`)throw Error(`Not a string`);if(!e.startsWith(`@`))throw Error(`Not a userId`)}var jA=class e extends O{constructor(){super(...arguments),h(this,`stickyEventsMap`,new Map),h(this,`unkeyedStickyEvents`,new Set),h(this,`stickyEventTimer`,void 0),h(this,`nextStickyEventExpiryTs`,2**53-1),h(this,`cleanExpiredStickyEvents`,()=>{var e=Date.now(),t=[];this.nextStickyEventExpiryTs=2**53-1;for(var n of this.stickyEventsMap.entries()){var r=x(n,2),i=r[0];for(var a of r[1]){var o=x(a,2),s=o[0],c=lO(o[1]),l=c[0],u=DA(c).slice(1);e>=l.unstableStickyExpiresAt?(OA.debug(`Expiring sticky event`,l.getId()),t.push(l),this.stickyEventsMap.get(i).delete(s)):(this.stickyEventsMap.get(i).set(s,[l,...u.filter(t=>t.unstableStickyExpiresAt<=e)]),this.nextStickyEventExpiryTs=Math.min(this.nextStickyEventExpiryTs,l.unstableStickyExpiresAt))}this.stickyEventsMap.get(i)?.size===0&&this.stickyEventsMap.delete(i)}for(var d of this.unkeyedStickyEvents)e>=d.unstableStickyExpiresAt?(OA.debug(`Expiring sticky event`,d.getId()),this.unkeyedStickyEvents.delete(d),t.push(d)):this.nextStickyEventExpiryTs=Math.min(this.nextStickyEventExpiryTs,d.unstableStickyExpiresAt);t.length&&this.emit(kA.Update,[],[],t),this.scheduleStickyTimer()})}static sortStickyEvent(e,t){if(t.getTs()!==e.getTs())return t.getTs()-e.getTs();if((t.getId()??``)>(e.getId()??``))return 1;throw Error(`Comparing two sticky events with the same event ID is not allowed.`)}static stickyMapKey(e,t){return`${e}${t}`}*getStickyEvents(){yield*this.unkeyedStickyEvents;for(var e of this.stickyEventsMap.values())for(var t of e.values())yield t[0]}getKeyedStickyEvent(t,n,r){var i;return AA(t),(i=this.stickyEventsMap.get(n))==null||(i=i.get(e.stickyMapKey(r,t)))==null?void 0:i[0]}getUnkeyedStickyEvent(e,t){return[...this.unkeyedStickyEvents].filter(n=>n.getType()===t&&n.getSender()===e)}addStickyEvent(t){var n,r=t.getContent().msc4354_sticky_key;if(typeof r!=`string`&&r!==void 0)throw Error(`${t.getId()} is missing msc4354_sticky_key`);if(t.unstableStickyExpiresAt===void 0)throw Error(`${t.getId()} is missing msc4354_sticky.duration_ms`);var i=t.getSender(),a=t.getType();if(AA(i),t.unstableStickyExpiresAt<=Date.now())return OA.info(`ignored sticky event with older expiration time than current time`,r),{added:!1};if(!i.startsWith(`@`))throw Error(`Expected sender to start with @`);var o=t;if(r===void 0)return this.unkeyedStickyEvents.add(o),this.nextStickyEventExpiryTs=Math.min(t.unstableStickyExpiresAt,this.nextStickyEventExpiryTs),this.scheduleStickyTimer(),{added:!0};var s=e.stickyMapKey(r,i),c=[o,...this.stickyEventsMap.get(a)?.get(s)??[]].sort(e.sortStickyEvent);return this.stickyEventsMap.has(a)||this.stickyEventsMap.set(a,new Map),(n=this.stickyEventsMap.get(a))==null||n.set(s,c),this.nextStickyEventExpiryTs=Math.min(o.unstableStickyExpiresAt,this.nextStickyEventExpiryTs),this.scheduleStickyTimer(),{added:c[0]===o,prevEvent:c?.[1]}}addStickyEvents(e){var t=[],n=[];for(var r of e)try{var i=this.addStickyEvent(r);i.added&&(i.prevEvent?n.push({current:r,previous:i.prevEvent}):t.push(r))}catch(e){OA.warn(`ignored invalid sticky event`,e)}(t.length||n.length)&&this.emit(kA.Update,t,n,[]),this.scheduleStickyTimer()}scheduleStickyTimer(){this.stickyEventTimer&&=(clearTimeout(this.stickyEventTimer),void 0),this.nextStickyEventExpiryTs!==2**53-1&&(this.stickyEventTimer=setTimeout(this.cleanExpiredStickyEvents,this.nextStickyEventExpiryTs-Date.now()))}handleRedaction(t){var n=typeof t==`string`?t:t.getId();for(var r of this.unkeyedStickyEvents)if(r.getId()===n){this.unkeyedStickyEvents.delete(r),this.emit(kA.Update,[],[],[r]);return}if(typeof t!=`string`&&!t.isRedacted()){var i,a=t.getContent().msc4354_sticky_key;if(typeof a!=`string`&&a!==void 0)return;var o=t.getType(),s=t.getSender();AA(s);var c=this.stickyEventsMap.get(o);if(!c)return;var l=e.stickyMapKey(a,s),u=lO(c.get(l)??[]),d=u[0],f=DA(u).slice(1);if(!d)return;OA.debug(`Redaction for ${n} under sticky key ${a}`);var p=f.filter(e=>!e.isRedacted()).sort(e.sortStickyEvent);(i=this.stickyEventsMap.get(o))==null||i.set(l,p),p.length?this.emit(kA.Update,[],[{previous:d,current:p[0]}],[]):(c.delete(l),c.size===0&&this.stickyEventsMap.delete(o),this.emit(kA.Update,[],[],[d]));return}for(var m of this.stickyEventsMap.values())for(var h of m.values()){var g=x(h,1)[0];if(g.getId()===n)return this.handleRedaction(g)}}clear(){this.stickyEventsMap.clear(),this.nextStickyEventExpiryTs=2**53-1,this.scheduleStickyTimer()}},MA=new vE(`m.room.retention`,`org.matrix.msc1763.retention`),NA=class{constructor(e,t,n){var r=this;this.room=e,this.retentionService=t,this.store=n,h(this,`maxRetention`,null),h(this,`retentionTimeout`,void 0),h(this,`logger`,void 0),h(this,`handleRetentionUpdate`,C(function*(){var e=r.maxRetention!==null;try{yield r.recalculateRetention(r.room.currentState)}catch(e){r.logger.warn(`Failed to recalculate retention policy`,e);return}e!==(r.maxRetention!==null)&&(r.logger.info(`retention recalculated to be`,r.maxRetention),r.maxRetention?r.room.on(z.Timeline,r.timelineUpdated):r.room.off(z.Timeline,r.timelineUpdated))})),h(this,`recalculateRetention`,function(){var e=C(function*(e){var t,n,i,a=e.getStateEvents(MA.name).find(e=>e.getStateKey()===``),o=e.getStateEvents(MA.altName).find(e=>e.getStateKey()===``),s=r.retentionService.getCached(),c=s==null||(t=s.policies)==null?void 0:t[r.room.roomId],l=a?.getContent()??o?.getContent(),u=c??l??(s==null||(n=s.policies)==null?void 0:n[`*`]);if(!u){r.maxRetention=null;return}var d=!c&&l,f=u.max_lifetime;if(!f&&d){var p;if(f=s==null||(p=s.limits)==null||(p=p.max_lifetime)==null?void 0:p.min,!f){r.maxRetention=null;return}}if(typeof f!=`number`)throw Error(`max_lifetime must be a number, got "${f}"`);if(f<0||!Number.isInteger(f))throw Error(`max_lifetime must be >= 0, got ${f}`);r.maxRetention=f,d&&s!=null&&(i=s.limits)!=null&&i.max_lifetime&&(r.maxRetention=Math.max(r.maxRetention,s.limits.max_lifetime.min??0),r.maxRetention=Math.min(r.maxRetention,s.limits.max_lifetime.max??2**53-1)),r.processTimeline()});return function(t){return e.apply(this,arguments)}}()),h(this,`timelineUpdated`,()=>{this.logger.info(`timelineUpdated`),this.scheduleTimelineCheck(200)}),h(this,`scheduleTimelineCheck`,e=>{this.retentionTimeout&&clearTimeout(this.retentionTimeout),this.retentionTimeout=setTimeout(()=>{this.processTimeline(),this.retentionTimeout=void 0},e)}),this.logger=w.getChild(`RetentionPolicy ${e.roomId}`),e.on(j.Events,e=>{e.getStateKey()!==``||e.getType()!==`org.matrix.msc1763.retention`&&e.getType()!==`m.room.retention`||this.handleRetentionUpdate()}),this.retentionService.on(`update`,()=>{this.logger.info(`Got global retention policy update!`),this.handleRetentionUpdate()}),this.handleRetentionUpdate()}shouldEventBeRetained(e){if(!this.maxRetention)return!0;var t=Date.now()-this.maxRetention;return e.getTs()>t}processTimeline(){if(this.maxRetention){this.logger.info(`Running processTimeline`);var e=Date.now()-this.maxRetention,t=this.room.getLiveTimeline().getEvents().filter(e=>e.getStateKey()===void 0&&!e.isRedacted()&&e.getType()!==`m.room.redaction`),n=t.filter(t=>t.getTs()<e),r=x(t.filter(t=>t.getTs()>=e).sort((e,t)=>e.getTs()-t.getTs()),1)[0];if(r){var i=r.getTs()+this.maxRetention-Date.now();this.logger.info(`Next expiry scheduled for ${i}`),this.scheduleTimelineCheck(i)}if(n.length===0){this.logger.info(`Found no expired events`);return}this.logger.info(`Found ${n.length} expired events`);for(var a of n)this.room.tryApplyRedaction(new MI({type:E.RoomRedaction,sender:a.getSender(),event_id:`$synthetic_redaction`,room_id:this.room.roomId,redacts:a.getId(),content:{reason:`Retention policy`},origin_server_ts:Date.now(),unsigned:{}}));this.store.removeEventsFromRoom(this.room.roomId,n.map(e=>e.getId())).catch(e=>{this.logger.warn(`Failed to remove events from store`,e)})}}};function PA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?PA(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PA(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var IA=[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`],LA=30,R=function(e){return e.Highlight=`highlight`,e.Total=`total`,e}({}),z=function(e){return e.MyMembership=`Room.myMembership`,e.Tags=`Room.tags`,e.AccountData=`Room.accountData`,e.Receipt=`Room.receipt`,e.Name=`Room.name`,e.Redaction=`Room.redaction`,e.RedactionCancelled=`Room.redactionCancelled`,e.LocalEchoUpdated=`Room.localEchoUpdated`,e.Timeline=`Room.timeline`,e.TimelineReset=`Room.timelineReset`,e.TimelineRefresh=`Room.TimelineRefresh`,e.OldStateUpdated=`Room.OldStateUpdated`,e.CurrentStateUpdated=`Room.CurrentStateUpdated`,e.HistoryImportedWithinTimeline=`Room.historyImportedWithinTimeline`,e.UnreadNotifications=`Room.UnreadNotifications`,e.Summary=`Room.Summary`,e}({}),RA=class extends _k{constructor(e,t,n){var r,i,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),r=this,this.roomId=e,this.client=t,this.myUserId=n,this.opts=a,h(this,`reEmitter`,void 0),h(this,`txnToEvent`,new Map),h(this,`notificationCounts`,{}),h(this,`bumpStamp`,void 0),h(this,`threadNotifications`,new Map),h(this,`cachedThreadReadReceipts`,new Map),h(this,`oldestThreadedReceiptTs`,1/0),h(this,`unthreadedReceipts`,new Map),h(this,`timelineSets`,void 0),h(this,`polls`,new Map),h(this,`threadsTimelineSets`,[]),h(this,`filteredTimelineSets`,{}),h(this,`timelineNeedsRefresh`,!1),h(this,`pendingEventList`,void 0),h(this,`blacklistUnverifiedDevices`,void 0),h(this,`selfMembership`,void 0),h(this,`heroes`,null),h(this,`getTypeWarning`,!1),h(this,`membersPromise`,void 0),h(this,`name`,void 0),h(this,`normalizedName`,void 0),h(this,`tags`,{}),h(this,`accountData`,new Map),h(this,`summary`,null),h(this,`oldState`,void 0),h(this,`currentState`,void 0),h(this,`relations`,void 0),h(this,`threads`,new Map),h(this,`visibilityEvents`,new Map),h(this,`roomReceipts`,new wk(this)),h(this,`stickyEvents`,new jA),h(this,`retention`,void 0),h(this,`threadTimelineSetsPromise`,null),h(this,`threadsReady`,!1),h(this,`updateThreadRootEvents`,(e,t,n)=>{e.length&&(this.updateThreadRootEvent(this.threadsTimelineSets?.[0],e,t,n),e.hasCurrentUserParticipated&&this.updateThreadRootEvent(this.threadsTimelineSets?.[1],e,t,n))}),h(this,`updateThreadRootEvent`,(e,t,n,r)=>{e&&t.rootEvent&&(r&&e.removeEvent(t.id),SI.hasServerSideSupport?e.addLiveEvent(t.rootEvent,{duplicateStrategy:tk.Replace,fromCache:!1,roomState:this.currentState,addToState:!1}):e.addEventToTimeline(t.rootEvent,e.getLiveTimeline(),{toStartOfTimeline:n,addToState:!1}))}),h(this,`tryApplyRedaction`,e=>{if(e.isRedaction()){var t=e.event.redacts,n=t?this.findEventById(t):void 0;if(t)try{this.stickyEvents.handleRedaction(n||t)}catch(e){w.error(`Failed to handle redaction for sticky event`,e)}n&&this.applyEventAsRedaction(e,n)}else if(e.getType()===E.RoomMember){var r=e.getContent().membership;if(r!==k.Ban&&!(r===k.Leave&&e.getStateKey()!==e.getSender())||e.getContent()[`org.matrix.msc4293.redact_events`]!==!0||!this.getLiveTimeline().getState(M.Forward).maySendRedactionForEvent(e,e.getSender()))return;for(var i of this.getTimelineSets().map(e=>e.getTimelines()).reduce((e,t)=>(e.push(...t),e),[]).map(t=>t.getEvents().filter(t=>t.getSender()===e.getStateKey())).reduce((e,t)=>(e.push(...t),t),[]))this.applyEventAsRedaction(e,i)}}),this.setMaxListeners(100),this.reEmitter=new VO(this),a.pendingEventOrdering=a.pendingEventOrdering||oI.Chronological,this.name=e,this.normalizedName=e,this.relations=new $O(this.client,this),this.on(z.Receipt,this.onReceipt),this.reEmitter.reEmit(this.stickyEvents,[kA.Update]),this.timelineSets=[new nk(this,a)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),[z.Timeline,z.TimelineReset]),this.fixUpLegacyTimelineFields(),this.opts.pendingEventOrdering===oI.Detached&&(this.pendingEventList=[],this.client.store.getPendingEvents(this.roomId).then(e=>{var n=this.client.getEventMapper({decrypt:!1});e.forEach(function(){var e=C(function*(e){var i=n(e);yield t.decryptEventIfNeeded(i),i.setStatus(P.NOT_SENT),r.addPendingEvent(i,i.getTxnId())});return function(t){return e.apply(this,arguments)}}())})),this.opts.lazyLoadMembers?this.membersPromise=void 0:this.membersPromise=Promise.resolve(!1),(i=this.client)!=null&&i._unstable_shouldApplyMessageRetention&&(this.retention=new NA(this,t.retentionPolicyService,t.store))}createThreadsTimelineSets(){var e=this;return C(function*(){var t;if(e.threadTimelineSetsPromise)return e.threadTimelineSetsPromise;if((t=e.client)!=null&&t.supportsThreads())try{e.threadTimelineSetsPromise=Promise.all([e.createThreadTimelineSet(),e.createThreadTimelineSet(EI.My)]);var n=yield e.threadTimelineSetsPromise;return e.threadsTimelineSets[0]=n[0],e.threadsTimelineSets[1]=n[1],n}catch{return e.threadTimelineSetsPromise=null,null}return null})()}decryptCriticalEvents(){var e=this;return C(function*(){if(e.client.getCrypto()){var t=e.getEventReadUpTo(e.client.getUserId(),!0),n=e.getLiveTimeline().getEvents(),r=n.findIndex(e=>e.event.event_id===t),i=n.slice(r).reverse().map(t=>e.client.decryptEventIfNeeded(t));yield Promise.allSettled(i)}})()}decryptAllEvents(){var e=this;return C(function*(){if(e.client.getCrypto()){var t=e.getUnfilteredTimelineSet().getLiveTimeline().getEvents().slice(0).reverse().map(t=>e.client.decryptEventIfNeeded(t));yield Promise.allSettled(t)}})()}getCreator(){return this.currentState.getStateEvents(E.RoomCreate,``)?.getSender()??null}getVersion(){return this.currentState.getRoomVersion()}getRecommendedVersion(){var e=this;return C(function*(){var t={};try{t=yield e.client.getCapabilities()}catch{}var n=t[`m.room_versions`];if(!n){n={default:`10`,available:{}};for(var r of IA)n.available[r]=TA.Stable}var i=e.checkVersionAgainstCapability(n);if(i.urgent&&i.needsUpgrade){w.warn(`Refreshing room version capability because the server looks to be supporting a newer room version we don't know about.`);try{t=yield e.client.fetchCapabilities()}catch(e){w.warn(`Failed to refresh room version capabilities`,e)}if(n=t[`m.room_versions`],n)i=e.checkVersionAgainstCapability(n);else return w.warn(`No room version capability - assuming upgrade required.`),i}return i})()}checkVersionAgainstCapability(e){var t=this.getVersion();w.log(`[${this.roomId}] Current version: ${t}`),w.log(`[${this.roomId}] Version capability: `,e);var n={version:t,needsUpgrade:!1,urgent:!1};return t===e.default||Object.keys(e.available).filter(t=>e.available[t]===`stable`).includes(t)?n:(n.version=e.default,n.needsUpgrade=!0,n.urgent=!!this.getVersion().match(/^[0-9]+[0-9.]*$/g),n.urgent?w.warn(`URGENT upgrade required on ${this.roomId}`):w.warn(`Non-urgent upgrade required on ${this.roomId}`),n)}userMayUpgradeRoom(e){return this.currentState.maySendStateEvent(E.RoomTombstone,e)}getPendingEvents(){if(!this.pendingEventList)throw Error(`Cannot call getPendingEvents with pendingEventOrdering == `+this.opts.pendingEventOrdering);return this.pendingEventList}removePendingEvent(e){if(!this.pendingEventList)throw Error(`Cannot call removePendingEvent with pendingEventOrdering == `+this.opts.pendingEventOrdering);var t=AE(this.pendingEventList,function(t){return t.getId()==e},!1);return this.savePendingEvents(),t}hasPendingEvent(e){return this.pendingEventList?.some(t=>t.getId()===e)??!1}getPendingEvent(e){return this.pendingEventList?.find(t=>t.getId()===e)??null}getLiveTimeline(){return this.getUnfilteredTimelineSet().getLiveTimeline()}get timeline(){return this.getLiveTimeline().getEvents()}getLastActiveTimestamp(){var e=this.getLiveTimeline().getEvents();return e.length?e[e.length-1].getTs():-(2**53-1)}getLastLiveEvent(){var e=this.getLiveTimeline().getEvents(),t=e[e.length-1],n=this.getLastThread();if(!n)return t;var r=n.events[n.events.length-1];return(t?.getTs()??0)>(r?.getTs()??0)?t:r}getLastThread(){return this.getThreads().reduce((e,t)=>{if(!e)return t;var n=t.events[t.events.length-1],r=e.events[e.events.length-1];return(n?.getTs()??0)>=(r?.getTs()??0)?t:e},void 0)}getMyMembership(){return this.selfMembership??k.Leave}getDMInviter(){var e=this.getMember(this.myUserId);if(e)return e.getDMInviter();if(this.selfMembership===k.Invite&&this.getInvitedAndJoinedMemberCount()===2){var t;return(t=this.heroes)==null||(t=t[0])==null?void 0:t.userId}}guessDMUserId(){var e=this.getMember(this.myUserId);if(e){var t=e.getDMInviter();if(t)return t}if(Array.isArray(this.heroes)&&this.heroes.length)return this.heroes[0].userId;var n=this.currentState.getMembers().find(e=>e.userId!==this.myUserId);return n?n.userId:this.myUserId}getFunctionalMembers(){var e=this.currentState.getStateEvents(XD.name,``);return Array.isArray(e?.getContent().service_members)?e.getContent().service_members:[]}getAvatarFallbackMember(){var e=this.getFunctionalMembers(),t=0;if(this.getMembers().forEach(n=>{n.membership!==`join`&&n.membership!==`invite`||e.includes(n.userId)||t++}),!(t>2)){var n=this.heroes?.filter(t=>!e.includes(t.userId)),r=Array.isArray(n)&&n.length;if(r){for(var i of n)if(i.fromMSC4186){var a=new _O(this.roomId,i.userId);return a.setMembershipEvent(new MI({event_id:`$`+this.roomId+i.userId+new Date().getTime(),type:E.RoomMember,state_key:i.userId,content:{displayname:i.displayName,avatar_url:i.avatarUrl}})),a}else{var o=this.getMember(i.userId);if(o)return o}var s=n.map(e=>this.getMember(e.userId)).find(e=>!!e);if(s)return s}var c=this.getMembers()?.filter(t=>!e.includes(t.userId));if(c.length<=2){var l=c.find(e=>e.userId!==this.myUserId);if(l)return l}if(r){var u=n.map(e=>this.client.getUser(e.userId)).find(e=>!!e);if(u){var d=new _O(this.roomId,u.userId);return d.user=u,d}}}}updateMyMembership(e){var t=this.selfMembership;this.selfMembership=e,t!==e&&(e===k.Leave&&this.cleanupAfterLeaving(),this.emit(z.MyMembership,this,e,t))}loadMembersFromServer(){var e=this;return C(function*(){var t=e.client.store.getSyncToken();return(yield e.client.members(e.roomId,void 0,k.Leave,t??void 0)).chunk})()}loadMembers(){var e=this;return C(function*(){var t=!1,n=yield e.client.store.getOutOfBandMembers(e.roomId);return(n===null||e.hasEncryptionStateEvent())&&(t=!0,n=yield e.loadMembersFromServer(),w.log(`LL: got ${n.length} members from server for room ${e.roomId}`)),{memberEvents:n.filter(hD).map(e.client.getEventMapper()),fromServer:t}})()}membersLoaded(){return this.opts.lazyLoadMembers?this.currentState.outOfBandMembersReady():!0}loadMembersIfNeeded(){if(this.membersPromise)return this.membersPromise;this.currentState.markOutOfBandMembersStarted();var e=this.loadMembers().then(e=>(this.currentState.setOutOfBandMembers(e.memberEvents),this.recalculate(),e.fromServer)).catch(e=>{throw this.membersPromise=void 0,this.currentState.markOutOfBandMembersFailed(),e});return e.then(e=>{if(e){var t=this.currentState.getMembers().filter(e=>e.isOutOfBand()).map(e=>e.events.member?.event);return w.log(`LL: telling store to write ${t.length} members for room ${this.roomId}`),this.client.store.setOutOfBandMembers(this.roomId,t).catch(e=>{w.log(`LL: storing OOB room members failed, oh well`,e)})}}).catch(e=>{w.error(e)}),this.membersPromise=e,this.membersPromise}clearLoadedMembersIfNeeded(){var e=this;return C(function*(){e.opts.lazyLoadMembers&&e.membersPromise&&(yield e.loadMembersIfNeeded(),yield e.client.store.clearOutOfBandMembers(e.roomId),e.currentState.clearOutOfBandMembers(),e.membersPromise=void 0)})()}cleanupAfterLeaving(){this.clearLoadedMembersIfNeeded().catch(e=>{w.error(`error after clearing loaded members from room ${this.roomId} after leaving`),w.log(e)})}refreshLiveTimeline(){var e=this;return C(function*(){var t=e.getLiveTimeline(),n=t.getPaginationToken(N.FORWARDS),r=t.getPaginationToken(N.BACKWARDS),i=t.getEvents(),a=i[i.length-1];w.log(`[refreshLiveTimeline for ${e.roomId}] at mostRecentEventInTimeline=${a&&a.getId()} liveTimelineBefore=${t.toString()} forwardPaginationToken=${n} backwardPaginationToken=${r}`);var o=e.getUnfilteredTimelineSet(),s=null;a?(e.resetLiveTimeline(null,null),e.emit(z.TimelineRefresh,e,o),s=yield e.client.getEventTimeline(o,a.getId())):s=yield e.client.getLatestTimeline(o);var c=o.getLiveTimeline();!c||c.getPaginationToken(M.Forward)===null&&c.getPaginationToken(M.Backward)===null&&c.getEvents().length===0?(w.log(`[refreshLiveTimeline for ${e.roomId}] using our new live timeline`),s.setPaginationToken(n,N.FORWARDS),o.setLiveTimeline(s),e.fixUpLegacyTimelineFields()):w.log(`[refreshLiveTimeline for ${e.roomId}] \`/sync\` or some other request beat us to creating a new live timeline after we reset it. We'll use that instead since any events in the scrollback from this timeline will include the history.`),e.setTimelineNeedsRefresh(!1),e.emit(z.TimelineRefresh,e,o)})()}resetLiveTimeline(e,t){for(var n of this.timelineSets)n.resetLiveTimeline(e??void 0,t??void 0);for(var r of this.threads.values())r.resetLiveTimeline(e,t);this.fixUpLegacyTimelineFields()}fixUpLegacyTimelineFields(){var e=this.oldState,t=this.currentState;this.oldState=this.getLiveTimeline().getState(N.BACKWARDS),this.currentState=this.getLiveTimeline().getState(N.FORWARDS),e!==this.oldState&&this.emit(z.OldStateUpdated,this,e,this.oldState),t!==this.currentState&&(this.emit(z.CurrentStateUpdated,this,t,this.currentState),this.reEmitter.stopReEmitting(t,[j.Events,j.Members,j.NewMember,j.Update,j.Marker,A.New,A.Update,A.Destroy,A.LivenessChange]),this.reEmitter.reEmit(this.currentState,[j.Events,j.Members,j.NewMember,j.Update,j.Marker,A.New,A.Update,A.Destroy,A.LivenessChange]))}onReceipt(e){this.hasEncryptionStateEvent()&&this.clearNotificationsOnReceipt(e)}clearNotificationsOnReceipt(e){var t=[],n=!1,r=e.getContent();for(var i of Object.values(r))for(var a of Object.entries(i)){var o=x(a,2),s=o[0],c=o[1];if(lD(s)&&c)for(var l of Object.entries(c)){var u=x(l,2),d=u[0],f=u[1];if(!(!f||typeof f!=`object`)){var p=f;d===this.client.getUserId()&&(p.thread_id===void 0?n=!0:typeof p.thread_id==`string`&&t.push(p.thread_id))}}}n&&(t=this.getThreads().filter(e=>this.getThreadUnreadNotificationCount(e.id,R.Total)>0||this.getThreadUnreadNotificationCount(e.id,R.Highlight)>0).map(e=>e.id),t.push(`main`));for(var m of t){var h=20,g=m===`main`?this.getLiveTimeline():this.getThread(m)?.liveTimeline;if(!g){w.warn(`Couldn't find timeline for thread ID ${m} in room ${this.roomId}`);continue}for(var _=g.getEvents(),v=0,y=_.length-1;y>=0;y--){var b;if(y===_.length-h)return;var S=_[y];if(this.hasUserReadEvent(this.client.getUserId(),S.getId()))break;var C=this.client.getPushActionsForEvent(S);v+=C!=null&&(b=C.tweaks)!=null&&b.highlight?1:0}m===`main`?this.setUnreadNotificationCount(R.Highlight,v):this.setThreadUnreadNotificationCount(m,R.Highlight,v)}}getTimelineSets(){return this.timelineSets}getUnfilteredTimelineSet(){return this.timelineSets[0]}getTimelineForEvent(e){var t=this.findEventById(e),n=this.findThreadForEvent(t);return n?n.timelineSet.getTimelineForEvent(e):this.getUnfilteredTimelineSet().getTimelineForEvent(e)}addTimeline(){return this.getUnfilteredTimelineSet().addTimeline()}setTimelineNeedsRefresh(e){this.timelineNeedsRefresh=e}getTimelineNeedsRefresh(){return this.timelineNeedsRefresh}findEventById(e){var t=this.getUnfilteredTimelineSet().findEventById(e);if(!t){for(var n=this.getThreads(),r=0;r<n.length;r++)if(t=n[r].findEventById(e),t)return t}return t}getUnreadNotificationCount(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:R.Total,t=this.getRoomUnreadNotificationCount(e);for(var n of this.threadNotifications.values())t+=n[e]??0;return t}getUnreadCountForEventContext(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:R.Total,t=arguments.length>1?arguments[1]:void 0;return(t.threadRootId&&!t.isThreadRoot?this.getThreadUnreadNotificationCount(t.threadRootId,e):this.getRoomUnreadNotificationCount(e))??0}getRoomUnreadNotificationCount(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:R.Total;return this.notificationCounts[e]??0}getThreadUnreadNotificationCount(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:R.Total;return this.threadNotifications.get(e)?.[t]??0}hasThreadUnreadNotification(){for(var e of this.threadNotifications.values())if((e.highlight??0)>0||(e.total??0)>0)return!0;return!1}setThreadUnreadNotificationCount(e,t,n){var r=FA({highlight:this.threadNotifications.get(e)?.highlight,total:this.threadNotifications.get(e)?.total},{[t]:n});this.threadNotifications.set(e,r),this.emit(z.UnreadNotifications,r,e)}get threadsAggregateNotificationType(){var e=null;for(var t of this.threadNotifications.values()){if((t.highlight??0)>0)return R.Highlight;(t.total??0)>0&&!e&&(e=R.Total)}return e}resetThreadUnreadNotificationCountFromSync(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.hasEncryptionStateEvent();for(var n of this.threadNotifications){var r=x(n,2),i=r[0],a=r[1];e.includes(i)||(a.total=0,t||(a.highlight=0))}this.emit(z.UnreadNotifications)}setBumpStamp(e){this.bumpStamp=e}getBumpStamp(){return this.bumpStamp}setUnreadNotificationCount(e,t){this.notificationCounts[e]=t,this.emit(z.UnreadNotifications,this.notificationCounts)}setUnread(e,t){return this.setUnreadNotificationCount(e,t)}setSummary(e){var t=e[`m.heroes`]?.map(e=>({userId:e,fromMSC4186:!1})),n=e[`m.joined_member_count`],r=e[`m.invited_member_count`];Number.isInteger(n)&&this.currentState.setJoinedMemberCount(n),Number.isInteger(r)&&this.currentState.setInvitedMemberCount(r),Array.isArray(t)&&(this.heroes=t.filter(e=>e.userId!=this.myUserId)),this.emit(z.Summary,e)}setMSC4186SummaryData(e,t,n){e&&(this.heroes=e.filter(e=>e.user_id!==this.myUserId).map(e=>({userId:e.user_id,displayName:e.displayname,avatarUrl:e.avatar_url,fromMSC4186:!0}))),t!==void 0&&Number.isInteger(t)&&this.currentState.setJoinedMemberCount(t),n!==void 0&&Number.isInteger(n)&&this.currentState.setInvitedMemberCount(n),this.emit(z.Summary,{"m.heroes":this.heroes?this.heroes.map(e=>e.userId):[],"m.joined_member_count":t,"m.invited_member_count":n})}setBlacklistUnverifiedDevices(e){this.blacklistUnverifiedDevices=e}getBlacklistUnverifiedDevices(){return this.blacklistUnverifiedDevices===void 0?null:this.blacklistUnverifiedDevices}getAvatarUrl(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,o=this.getMxcAvatarUrl();return!o&&!i?null:o?hO(e,o,t,n,r,void 0,void 0,a):null}getMxcAvatarUrl(){var e=this.currentState.getStateEvents(E.RoomAvatar,``)?.getContent().url;return e&&typeof e==`string`?e:null}getCanonicalAlias(){var e=this.currentState.getStateEvents(E.RoomCanonicalAlias,``)?.getContent().alias;return e&&typeof e==`string`?e:null}getAltAliases(){var e=this.currentState.getStateEvents(E.RoomCanonicalAlias,``)?.getContent().alt_aliases;return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}addEventsToTimeline(e,t,n,r,i){e=e.filter(e=>this.retention?.shouldEventBeRetained(e)??!0),r.getTimelineSet().addEventsToTimeline(e,t,n,r,i)}getThread(e){return this.threads.get(e)??null}getThreads(){return Array.from(this.threads.values())}getMember(e){return this.currentState.getMember(e)}getMembers(){return this.currentState.getMembers()}getJoinedMembers(){return this.getMembersWithMembership(k.Join)}getJoinedMemberCount(){return this.currentState.getJoinedMemberCount()}getInvitedMemberCount(){return this.currentState.getInvitedMemberCount()}getInvitedAndJoinedMemberCount(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()}getMembersWithMembership(e){return this.currentState.getMembers().filter(function(t){return t.membership===e})}getEncryptionTargetMembers(){var e=this;return C(function*(){yield e.loadMembersIfNeeded();var t=e.getMembersWithMembership(k.Join);return e.shouldEncryptForInvitedMembers()&&(t=t.concat(e.getMembersWithMembership(k.Invite))),t})()}shouldEncryptForInvitedMembers(){var e,t=this.currentState.getStateEvents(E.RoomHistoryVisibility,``);return(t==null||(e=t.getContent())==null?void 0:e.history_visibility)!==`joined`}getDefaultRoomName(e){return this.calculateRoomName(e,!0)}hasMembershipState(e,t){var n=this.getMember(e);return n?n.membership===t:!1}getOrCreateFilteredTimelineSet(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.prepopulateTimeline,r=n===void 0?!0:n,i=t.useSyncEvents,a=i===void 0?!0:i,o=t.pendingEvents,s=o===void 0?!0:o;if(this.filteredTimelineSets[e.filterId])return this.filteredTimelineSets[e.filterId];var c=Object.assign({filter:e,pendingEvents:s},this.opts),l=new nk(this,c);this.reEmitter.reEmit(l,[z.Timeline,z.TimelineReset]),a&&(this.filteredTimelineSets[e.filterId]=l,this.timelineSets.push(l));var u=this.getLiveTimeline();if(r){u.getEvents().forEach(function(e){l.addLiveEvent(e,{addToState:!1})});for(var d=u;d.getNeighbouringTimeline(N.BACKWARDS);)d=d.getNeighbouringTimeline(N.BACKWARDS);l.getLiveTimeline().setPaginationToken(d.getPaginationToken(N.BACKWARDS),N.BACKWARDS)}else if(a){var f=u.getPaginationToken(M.Forward);l.getLiveTimeline().setPaginationToken(f,M.Backward)}return l}getThreadListFilter(){var e=arguments,t=this;return C(function*(){var n=e.length>0&&e[0]!==void 0?e[0]:EI.All,r=t.client.getUserId(),i=new dk(r),a={room:{timeline:{[TI.name]:[Q.name]}}};return n===EI.My&&(a.room.timeline[wI.name]=[r]),i.setDefinition(a),i.filterId=yield t.client.getOrCreateFilter(`THREAD_PANEL_${t.roomId}_${n}`,i),i})()}createThreadTimelineSet(e){var t=this;return C(function*(){var n;if(SI.hasServerSideListSupport)n=new nk(t,FA(FA({},t.opts),{},{pendingEvents:!1}),void 0,void 0,e??EI.All),t.reEmitter.reEmit(n,[z.Timeline,z.TimelineReset]);else if(SI.hasServerSideSupport){var r=yield t.getThreadListFilter(e);n=t.getOrCreateFilteredTimelineSet(r,{prepopulateTimeline:!1,useSyncEvents:!1,pendingEvents:!1})}else n=new nk(t,{pendingEvents:!1}),Array.from(t.threads).forEach(r=>{var i=x(r,2)[1];if(i.length!==0){var a=i.timeline.some(e=>e.getSender()===t.client.getUserId());(e!==EI.My||a)&&n.getLiveTimeline().addEvent(i.rootEvent,{toStartOfTimeline:!1,addToState:!1})}});return n})()}processThreadRoots(e,t){if(this.client.supportsThreads())for(var n of e)N.setEventMetadata(n,this.currentState,t),this.getThread(n.getId())||this.createThread(n.getId(),n,[],t)}fetchRoomThreads(){var e=this;return C(function*(){if(!(e.threadsReady||!e.client.supportsThreads())){if(SI.hasServerSideListSupport)yield Promise.all([e.fetchRoomThreadList(EI.All),e.fetchRoomThreadList(EI.My)]);else{var t=yield e.getThreadListFilter(),n=(yield e.client.createMessagesRequest(e.roomId,``,2**53-1,M.Backward,t)).chunk;if(!n.length)return;var r=n.map(e.client.getEventMapper()).sort((e,t)=>{var n=e.getServerAggregatedRelation(Q.name),r=t.getServerAggregatedRelation(Q.name);return n.latest_event.origin_server_ts-r.latest_event.origin_server_ts}),i,a=e.getLiveTimeline().getState(N.FORWARDS);for(var o of r){var s,c={duplicateStrategy:tk.Ignore,fromCache:!1,addToState:!1,roomState:a};(s=e.threadsTimelineSets[0])==null||s.addLiveEvent(o,c);var l=o.getServerAggregatedRelation(Q.name);if(l!=null&&l.current_user_participated){var u;(u=e.threadsTimelineSets[1])==null||u.addLiveEvent(o,c),i=o}}e.processThreadRoots(r,!0),e.client.decryptEventIfNeeded(r[r.length-1]),i&&e.client.decryptEventIfNeeded(i)}e.on(yI.NewReply,e.onThreadReply),e.on(yI.Update,e.onThreadUpdate),e.on(yI.Delete,e.onThreadDelete),e.threadsReady=!0}})()}processPollEvents(e){var t=this;return C(function*(){for(var n of e)try{if(!n.isEncrypted()&&!Ck(n))continue;yield t.client.decryptEventIfNeeded(n),t.processPollEvent(n)}catch(e){w.warn(`Error processing poll event`,n.getId(),e)}})()}processPollEvent(e){var t=this;return C(function*(){if(e.isDecryptionFailure()){e.once($.Decrypted,e=>{t.processPollEvent(e)});return}if(RD.M_POLL_START.matches(e.getType())){try{var n=new Sk(e,t.client,t);t.polls.set(e.getId(),n),t.emit(bk.New,n),e.once($.BeforeRedaction,e=>{t.polls.delete(e.getId())})}catch{}return}var r=e.relationEventId;r&&t.polls.has(r)&&t.polls.get(r)?.onNewRelation(e)})()}fetchRoomThreadList(e){var t=this;return C(function*(){if(t.client.supportsThreads()&&t.threadsTimelineSets.length!==0){var n=e===EI.My?t.threadsTimelineSets[1]:t.threadsTimelineSets[0],r=yield t.client.createThreadListMessagesRequest(t.roomId,null,void 0,M.Backward,n.threadListType,n.getFilter()),i=r.chunk,a=r.end;if(n.getLiveTimeline().setPaginationToken(a??null,M.Backward),i.length){var o=i.map(t.client.getEventMapper());t.processThreadRoots(o,!0);var s=t.getLiveTimeline().getState(N.FORWARDS);for(var c of o)n.addLiveEvent(c,{duplicateStrategy:tk.Replace,fromCache:!1,roomState:s,addToState:!1})}}})()}onThreadUpdate(e){this.updateThreadRootEvents(e,!1,!1)}onThreadReply(e){this.updateThreadRootEvents(e,!1,!0)}onThreadDelete(e){var t;this.threads.delete(e.id);var n=this.getTimelineForEvent(e.id),r=n==null||(t=n.getEvents())==null?void 0:t.find(t=>t.getId()===e.id);r?e.clearEventMetadata(r):w.debug(`onThreadDelete: Could not find root event in room timeline`);for(var i of this.threadsTimelineSets)i.removeEvent(e.id)}removeFilteredTimelineSet(e){var t=this.filteredTimelineSets[e.filterId];delete this.filteredTimelineSets[e.filterId];var n=this.timelineSets.indexOf(t);n>-1&&this.timelineSets.splice(n,1)}eventShouldLiveIn(e,t,n){var r;if(!((r=this.client)!=null&&r.supportsThreads()))return{shouldLiveInRoom:!0,shouldLiveInThread:!1};if(e.isThreadRoot||n!=null&&n.has(e.getId()))return{shouldLiveInRoom:!0,shouldLiveInThread:!0,threadId:e.getId()};var i=e.isRelation(Q.name),a=e.getAssociatedId(),o=e.threadRootId;if(a&&!i&&(o===a||n!=null&&n.has(a)))return{shouldLiveInRoom:!0,shouldLiveInThread:!1};var s;return a&&(s=this.findEventById(a)??t?.find(e=>e.getId()===a)),s&&!i?this.eventShouldLiveIn(s,t,n):o==null?!a||e.replyEventId?{shouldLiveInRoom:!0,shouldLiveInThread:!1}:{shouldLiveInRoom:!1,shouldLiveInThread:!1}:{shouldLiveInRoom:!1,shouldLiveInThread:!0,threadId:o}}findThreadForEvent(e){if(!e)return null;var t=this.eventShouldLiveIn(e).threadId;return t?this.getThread(t):null}addThreadedEvents(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=this.getThread(e);if(r)r.addEvents(t,n);else{var i=this.findEventById(e)??t.find(t=>t.getId()===e);this.createThread(e,i,t,n)}}processThreadedEvents(e,t){e=e.filter(e=>this.retention?.shouldEventBeRetained(e)??!0),e.forEach(this.tryApplyRedaction);var n={};for(var r of e){var i,a=this.eventShouldLiveIn(r),o=a.threadId;a.shouldLiveInThread&&!n[o]&&(n[o]=[]),(i=n[o])==null||i.push(r)}Object.entries(n).map(e=>{var n=x(e,2),r=n[0],i=n[1];return this.addThreadedEvents(r,i,t)})}createThread(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=arguments.length>3?arguments[3]:void 0;if(this.threads.has(e))return this.threads.get(e);if(t){var i=this.relations.getAllChildEventsForEvent(t.getId());i!=null&&i.length&&(n=n.concat(i.filter(e=>!e.isRelation(D.Replace))))}var a=new SI(e,t,{room:this,client:this.client,pendingEventOrdering:this.opts.pendingEventOrdering,receipts:this.cachedThreadReadReceipts.get(e)??[]});return this.reEmitter.reEmit(a,[yI.Delete,yI.Update,yI.NewReply,z.Timeline,z.TimelineReset]),this.cachedThreadReadReceipts.delete(e),this.threads.set(a.id,a),a.addEvents(n,!1),this.threadsReady&&a.initialEventsFetched&&this.updateThreadRootEvents(a,r,!1),this.emit(yI.New,a,r),a}applyEventAsRedaction(e,t){var n=t.threadRootId;t.makeRedacted(e,this),t.isState()&&this.currentState.getStateEvents(t.getType(),t.getStateKey())?.getId()===t.getId()&&this.currentState.setStateEvents([t]),this.emit(z.Redaction,e,this,n),this.visibilityEvents.delete(t.getId()),t.isVisibilityEvent()&&this.redactVisibilityChangeEvent(e)}processLiveEvent(e){if(this.tryApplyRedaction(e),e.isVisibilityEvent()&&this.applyNewVisibilityEvent(e),this.applyPendingVisibilityEvents(e),!e.getUnsigned().transaction_id&&e.getSender()===this.myUserId)for(var t of this.txnToEvent){var n=x(t,2),r=n[0];if(n[1].getId()===e.getId()){w.debug(`processLiveEvent: found sent event without txn ID: `,r,e.getId());var i=e.getUnsigned();i.transaction_id=r,e.setUnsigned(i);break}}}addLiveEvent(e,t){var n=t.duplicateStrategy,r=t.timelineWasEmpty,i=t.fromCache,a=t.addToState;for(var o of this.timelineSets)o.addLiveEvent(e,{duplicateStrategy:n,fromCache:i,timelineWasEmpty:r,addToState:a});e.sender&&e.getType()!==E.RoomRedaction&&this.addReceipt(mk(e.sender.userId,e,SE.Read),!0)}addPendingEvent(e,t){if(e.status!==P.SENDING&&e.status!==P.NOT_SENT)throw Error(`addPendingEvent called on an event with status `+e.status);if(this.txnToEvent.get(t))throw Error(`addPendingEvent called on an event with known txnId `+t);if(N.setEventMetadata(e,this.getLiveTimeline().getState(N.FORWARDS),!1),this.txnToEvent.set(t,e),this.pendingEventList){if(this.pendingEventList.some(e=>e.status===P.NOT_SENT)&&(w.warn(`Setting event as NOT_SENT due to messages in the same state`),e.setStatus(P.NOT_SENT)),this.pendingEventList.push(e),this.savePendingEvents(),e.isRelation()&&this.aggregateNonLiveRelation(e),e.isRedaction()){var n=e.event.redacts,r=this.pendingEventList.find(e=>e.getId()===n);!r&&n&&(r=this.findEventById(n)),r&&(r.markLocallyRedacted(e),this.emit(z.Redaction,e,this,r.threadRootId))}}else for(var i of this.timelineSets)i.getFilter()?i.getFilter().filterRoomTimeline([e]).length&&i.addEventToTimeline(e,i.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1}):i.addEventToTimeline(e,i.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1});this.emit(z.LocalEchoUpdated,e,this)}savePendingEvents(){if(this.pendingEventList){var e=this.pendingEventList.map(e=>FA(FA({},e.event),{},{txn_id:e.getTxnId()})).filter(e=>{var t=e.type===E.RoomMessageEncrypted,n=this.hasEncryptionStateEvent();return t||!n});this.client.store.setPendingEvents(this.roomId,e)}}aggregateNonLiveRelation(e){this.relations.aggregateChildEvent(e)}getEventForTxnId(e){return this.txnToEvent.get(e)}handleRemoteEcho(e,t){var n=t.getId(),r=e.getId(),i=t.status;w.debug(`Got remote echo for event ${n} -> ${r} old status ${i}`),this.txnToEvent.delete(e.getUnsigned().transaction_id),this.pendingEventList&&this.removePendingEvent(n),t.handleRemoteEcho(e.event);var a=this.eventShouldLiveIn(e),o=a.shouldLiveInRoom,s=a.threadId,c=s?this.getThread(s):null;if(c?.setEventMetadata(t),c?.timelineSet.handleRemoteEcho(t,n,r),o)for(var l of this.timelineSets)l.handleRemoteEcho(t,n,r);this.emit(z.LocalEchoUpdated,t,this,n,i)}updatePendingEvent(e,t,n){if(w.log(`setting pendingEvent status to ${t} in ${e.getRoomId()} event ID ${e.getId()} -> ${n}`),t==P.SENT&&!n)throw Error(`updatePendingEvent called with status=SENT, but no new event id`);if(t==P.SENT&&this.getTimelineForEvent(n)){var r=this.findEventById(n);if(!r?.getUnsigned().transaction_id&&r){var i=r.getUnsigned();i.transaction_id=e.getTxnId(),r.setUnsigned(i),this.removeEvent(r.getId()),this.handleRemoteEcho(r,e)}return}var a=e.status,o=e.getId();if(!a)throw Error(`updatePendingEventStatus called on an event which is not a local echo.`);var s=zA[a];if(!(s!=null&&s.includes(t)))throw Error(`Invalid EventStatus transition ${a}->${t}`);if(e.setStatus(t),t==P.SENT){e.replaceLocalEventId(n);var c=this.eventShouldLiveIn(e),l=c.shouldLiveInRoom,u=c.threadId,d=u?this.getThread(u):void 0;if(d?.setEventMetadata(e),d?.timelineSet.replaceEventId(o,n),l)for(var f of this.timelineSets)f.replaceEventId(o,n)}else if(t==P.CANCELLED){if(this.pendingEventList){var p=this.getPendingEvent(o);this.removePendingEvent(o),p!=null&&p.isRedaction()&&this.revertRedactionLocalEcho(p)}this.removeEvent(o)}this.savePendingEvents(),this.emit(z.LocalEchoUpdated,e,this,o,a)}revertRedactionLocalEcho(e){var t=e.event.redacts;if(t){var n=this.getUnfilteredTimelineSet().findEventById(t);n&&(n.unmarkLocallyRedacted(),this.emit(z.RedactionCancelled,e,this),n.isRelation()&&this.aggregateNonLiveRelation(n))}}assertTimelineSetsAreLive(){for(var e=0;e<this.timelineSets.length;e++){var t=this.timelineSets[e].getLiveTimeline();if(t.getPaginationToken(N.FORWARDS))throw Error(`live timeline `+e+` is no longer live - it has a pagination token (`+t.getPaginationToken(N.FORWARDS)+`)`);if(t.getNeighbouringTimeline(N.FORWARDS))throw Error(`live timeline ${e} is no longer live - it has a neighbouring timeline`)}}addLiveEvents(e,t){var n=this;return C(function*(){var r=t.duplicateStrategy,i=t.fromCache,a=t.timelineWasEmpty,o=a===void 0?!1:a,s=t.addToState;if(r&&[`replace`,`ignore`].indexOf(r)===-1)throw Error(`duplicateStrategy MUST be either 'replace' or 'ignore'`);e=e.filter(e=>n.retention?.shouldEventBeRetained(e)??!0),n.assertTimelineSetsAreLive();var c=n.findThreadRoots(e),l={},u={duplicateStrategy:r,fromCache:i,timelineWasEmpty:o,addToState:s},d=[...e];for(var f of e){var p;if(n.processLiveEvent(f),f.getUnsigned().transaction_id){var m=n.txnToEvent.get(f.getUnsigned().transaction_id);if(m){n.handleRemoteEcho(f,m);continue}}var h=n.eventShouldLiveIn(f,d,c),g=h.shouldLiveInRoom,_=h.shouldLiveInThread,v=h.threadId,y=v===void 0?``:v;if(!_&&!g&&f.isRelation())try{var b=new MI(yield n.client.fetchRoomEvent(n.roomId,f.relationEventId));if(d.push(b),b.threadRootId){c.add(b.threadRootId);var S=f.getUnsigned();S[eO.name]=b.threadRootId,f.setUnsigned(S)}var C=n.eventShouldLiveIn(f,d,c);g=C.shouldLiveInRoom,_=C.shouldLiveInThread;var ee=C.threadId;y=ee===void 0?``:ee}catch(e){w.error(`Failed to load parent event of unhandled relation`,e)}_&&!l[y]&&(l[y]=[]),(p=l[y])==null||p.push(f),g?n.addLiveEvent(f,u):!_&&f.isRelation()&&n.relations.aggregateChildEvent(f)}Object.entries(l).forEach(e=>{var t=x(e,2),r=t[0],i=t[1];n.addThreadedEvents(r,i,!1)})})()}partitionThreadedEvents(e){var t=0,n=1,r=2;if(this.client.supportsThreads()){var i=this.findThreadRoots(e);return e.reduce((a,o)=>{var s=this.eventShouldLiveIn(o,e,i),c=s.shouldLiveInRoom,l=s.shouldLiveInThread,u=s.threadId;return c&&a[t].push(o),l&&(o.setThreadId(u??``),a[n].push(o)),!l&&!c&&a[r].push(o),a},[[],[],[]])}else return[e,[],[]]}findThreadRoots(e){var t=new Set;for(var n of e){var r=n.threadRootId;r!=null&&t.add(r)}return t}addReceipt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=e.getContent();this.roomReceipts.add(n,t),Object.keys(n).forEach(e=>{Object.keys(n[e]).forEach(r=>{Object.keys(n[e][r]).forEach(i=>{var a=n[e][r][i],o=!a.thread_id||a.thread_id===`main`,s=o?this:this.threads.get(a.thread_id??``);if(s){if(s.addReceiptToStructure(e,r,i,a,t),!t&&this.client.isInitialSyncComplete()&&i===this.client.getUserId()){var c=s.timeline[s.timeline.length-1];c&&e===c.getId()&&i===c.getSender()&&(s.setUnread(R.Total,0),s.setUnread(R.Highlight,0))}}else this.cachedThreadReadReceipts.set(a.thread_id,[...this.cachedThreadReadReceipts.get(a.thread_id)??[],{eventId:e,receiptType:r,userId:i,receipt:a,synthetic:t}]);i===this.client.getUserId()&&!o&&a.ts<this.oldestThreadedReceiptTs&&(this.oldestThreadedReceiptTs=a.ts),!a.thread_id&&a.ts>(this.unthreadedReceipts.get(i)?.ts??0)&&this.unthreadedReceipts.set(i,a)})})}),this.emit(z.Receipt,e,this)}addEphemeralEvents(e){for(var t of e)t.getType()===E.Typing?this.currentState.setTypingEvent(t):t.getType()===E.Receipt&&this.addReceipt(t)}removeEvents(e){for(var t of e)this.removeEvent(t)}removeEvent(e){var t=!1;for(var n of this.timelineSets){var r=n.removeEvent(e);r&&(r.isRedaction()&&this.revertRedactionLocalEcho(r),t=!0)}return t}recalculate(){var e=this.currentState.getStateEvents(E.RoomMember,this.myUserId);if(e){var t=e.getContent().membership;this.updateMyMembership(t),t===k.Invite&&(e.getUnsigned().invite_room_state||[]).forEach(e=>{this.currentState.getStateEvents(e.type,e.state_key)||this.currentState.setStateEvents([new MI({type:e.type,state_key:e.state_key,content:e.content,event_id:`$fake`+Date.now(),room_id:this.roomId,sender:this.myUserId})])})}var n=this.name;this.name=this.calculateRoomName(this.myUserId),this.normalizedName=RE(this.name),this.summary=new rk(this.roomId,{title:this.name}),n!==this.name&&this.emit(z.Name,this)}addTags(e){this.tags=e.getContent().tags||{},this.emit(z.Tags,e,this)}addAccountData(e){for(var t of e){t.getType()===`m.tag`&&this.addTags(t);var n=t.getType(),r=this.accountData.get(n);this.accountData.set(n,t),this.emit(z.AccountData,t,this,r)}}getAccountData(e){return this.accountData.get(e)}_unstable_getStickyEvents(){return this.stickyEvents.getStickyEvents()}_unstable_getKeyedStickyEvent(e,t,n){return this.stickyEvents.getKeyedStickyEvent(e,t,n)}_unstable_getUnkeyedStickyEvent(e,t){return this.stickyEvents.getUnkeyedStickyEvent(e,t)}_unstable_addStickyEvents(e){return e=e.filter(e=>this.retention?.shouldEventBeRetained(e)??!0),this.stickyEvents.addStickyEvents(e)}maySendMessage(){return this.getMyMembership()===k.Join&&(this.hasEncryptionStateEvent()?this.currentState.maySendEvent(E.RoomMessageEncrypted,this.myUserId):this.currentState.maySendEvent(E.RoomMessage,this.myUserId))}canInvite(e){var t=this.getMyMembership()===k.Join,n=this.currentState.getStateEvents(E.RoomPowerLevels,``),r=n&&n.getContent(),i=this.getMember(e);return r&&i&&r.invite>i.powerLevel&&(t=!1),t}getJoinRule(){return this.currentState.getJoinRule()}getHistoryVisibility(){return this.currentState.getHistoryVisibility()}getGuestAccess(){return this.currentState.getGuestAccess()}getType(){var e=this.currentState.getStateEvents(E.RoomCreate,``);if(!e){this.getTypeWarning||=(w.warn(`[getType] Room `+this.roomId+` does not have an m.room.create event`),!0);return}return e.getContent()[BD]}isSpaceRoom(){return this.getType()===VD.Space}isCallRoom(){return this.getType()===VD.UnstableCall}isElementVideoRoom(){return this.getType()===VD.ElementVideo}findPredecessor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.getLiveTimeline().getState(N.FORWARDS);return t?t.findPredecessor(e):null}roomNameGenerator(e){if(this.client.roomNameGenerator){var t=this.client.roomNameGenerator(this.roomId,e);if(t!==null)return t}switch(e.type){case BA.Actual:return e.name;case BA.Generated:switch(e.subtype){case`Inviting`:return`Inviting ${VA(e.names,e.count)}`;default:return VA(e.names,e.count)}case BA.EmptyRoom:return e.oldName?`Empty room (was ${e.oldName})`:`Empty room`}}calculateRoomName(e){if(!(arguments.length>1&&arguments[1]!==void 0&&arguments[1])){var t=this.currentState.getStateEvents(E.RoomName,``)?.getContent().name;if(t&&typeof t==`string`)return this.roomNameGenerator({type:BA.Actual,name:t})}var n=this.getCanonicalAlias();if(n)return this.roomNameGenerator({type:BA.Actual,name:n});var r=this.currentState.getJoinedMemberCount()+this.currentState.getInvitedMemberCount()-1,i=this.getFunctionalMembers(),a=[];if(this.heroes)this.heroes.forEach(e=>{if(i.includes(e.userId)){r--;return}if(e.displayName)a.push(e.displayName);else{var t=this.getMember(e.userId);a.push(t?t.name:e.userId)}});else{var o=this.currentState.getMembers().filter(t=>t.userId!==e&&(t.membership===k.Invite||t.membership===k.Join));o=o.filter(e=>{var t=e.userId;return i.includes(t)?(r--,!1):!0});var s=new Intl.Collator;o.sort((e,t)=>s.compare(e.userId,t.userId)),o=o.slice(0,5),a=o.map(e=>e.name)}if(r)return this.roomNameGenerator({type:BA.Generated,names:a,count:r});if(this.getMyMembership()==k.Join){var c=this.currentState.getStateEvents(E.RoomThirdPartyInvite);if(c!=null&&c.length){var l=c.map(e=>e.getContent().display_name);return this.roomNameGenerator({type:BA.Generated,subtype:`Inviting`,names:l,count:l.length+1})}}var u=a;u.length||(u=this.currentState.getMembers().filter(t=>t.userId!==e&&t.membership!==k.Invite&&t.membership!==k.Join).map(e=>e.name));var d;return u.length&&(d=this.roomNameGenerator({type:BA.Generated,names:u,count:u.length+1})),this.roomNameGenerator({type:BA.EmptyRoom,oldName:d})}applyNewVisibilityEvent(e){var t=e.asVisibilityChange();if(t){var n=e.getSender();if(n&&(ZD.name&&this.currentState.maySendStateEvent(ZD.name,n)||ZD.altName&&this.currentState.maySendStateEvent(ZD.altName,n))){var r=this.visibilityEvents.get(t.eventId);if(r){for(var i=r.length-1,a=Math.max(0,r.length-LA);i>=a&&!(r[i].getTs()<e.getTs());--i);i===-1?r.unshift(e):r.splice(i+1,0,e)}else this.visibilityEvents.set(t.eventId,[e]);var o=this.findEventById(t.eventId);o&&o.applyVisibilityEvent(t)}}}redactVisibilityChangeEvent(e){if(!e.isVisibilityEvent)throw Error(`expected a visibility change event`);var t=e.getRelation()?.event_id,n=this.visibilityEvents.get(t);if(n){var r=n.findIndex(t=>t.getId()===e.getId());if(r!==-1&&(n.splice(r,1),r===n.length)){var i=this.findEventById(t);if(!i)return;if(r===0)this.visibilityEvents.delete(t),i.applyVisibilityEvent();else{var a=n[n.length-1].asVisibilityChange();if(!a)throw Error(`at this stage, visibility changes should be well-formed`);i.applyVisibilityEvent(a)}}}}applyPendingVisibilityEvents(e){var t=this.visibilityEvents.get(e.getId());if(!(!t||t.length==0)){var n=t[t.length-1],r=n.asVisibilityChange();r&&(r.visible,!(n.getTs()<e.getTs())&&e.applyVisibilityEvent(r))}}getOldestThreadedReceiptTs(){return this.oldestThreadedReceiptTs}hasUserReadEvent(e,t){return this.roomReceipts.hasUserReadEvent(e,t)}getLastUnthreadedReceiptFor(e){return this.unthreadedReceipts.get(e)}fixupNotifications(e){super.fixupNotifications(e);for(var t of this.getThreads().filter(e=>this.getThreadUnreadNotificationCount(e.id,R.Total)>0))t.fixupNotifications(e)}compareEventOrdering(e,t){return Pk(this,e,t)}hasEncryptionStateEvent(){return!!this.getLiveTimeline().getState(N.FORWARDS)?.getStateEvents(E.RoomEncryption,``)}},zA={[P.ENCRYPTING]:[P.SENDING,P.NOT_SENT,P.CANCELLED],[P.SENDING]:[P.ENCRYPTING,P.QUEUED,P.NOT_SENT,P.SENT],[P.QUEUED]:[P.SENDING,P.NOT_SENT,P.CANCELLED],[P.SENT]:[],[P.NOT_SENT]:[P.SENDING,P.QUEUED,P.CANCELLED],[P.CANCELLED]:[]},BA=function(e){return e[e.EmptyRoom=0]=`EmptyRoom`,e[e.Generated=1]=`Generated`,e[e.Actual=2]=`Actual`,e}({});function VA(e,t){var n=t-1;return e.length?e.length===1&&n<=1?e[0]:e.length===2&&n<=2?`${e[0]} and ${e[1]}`:n>1?`${e[0]} and ${n} others`:`${e[0]} and 1 other`:`Empty room`}var HA=function(e){return e[e.Stable=0]=`Stable`,e[e.Unstable=1]=`Unstable`,e[e.Unsupported=2]=`Unsupported`,e}({}),UA=function(e){return e.Thread=`Thread`,e.ThreadUnreadNotifications=`ThreadUnreadNotifications`,e.LoginTokenRequest=`LoginTokenRequest`,e.RelationBasedRedactions=`RelationBasedRedactions`,e.AccountDataDeletion=`AccountDataDeletion`,e.RelationsRecursion=`RelationsRecursion`,e.IntentionalMentions=`IntentionalMentions`,e}({}),WA={[UA.Thread]:{unstablePrefixes:[`org.matrix.msc3440`],matrixVersion:`v1.3`},[UA.ThreadUnreadNotifications]:{unstablePrefixes:[`org.matrix.msc3771`,`org.matrix.msc3773`],matrixVersion:`v1.4`},[UA.LoginTokenRequest]:{unstablePrefixes:[`org.matrix.msc3882`]},[UA.RelationBasedRedactions]:{unstablePrefixes:[`org.matrix.msc3912`]},[UA.AccountDataDeletion]:{unstablePrefixes:[`org.matrix.msc3391`]},[UA.RelationsRecursion]:{unstablePrefixes:[`org.matrix.msc3981`],matrixVersion:`v1.10`},[UA.IntentionalMentions]:{unstablePrefixes:[`org.matrix.msc3952_intentional_mentions`],matrixVersion:`v1.7`}};function GA(e){return KA.apply(this,arguments)}function KA(){return KA=C(function*(e){var t=new Map;for(var n of Object.entries(WA)){var r=x(n,2),i=r[0],a=r[1],o=e.versions?.includes(a.matrixVersion||``)??!1,s=a.unstablePrefixes?.every(t=>e.unstable_features?.[t]===!0)??!1;o?t.set(i,HA.Stable):s?t.set(i,HA.Unstable):t.set(i,HA.Unsupported)}return t}),KA.apply(this,arguments)}function qA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function JA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?qA(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qA(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var YA=80*1e3,XA=3,B=function(e){return e.Error=`ERROR`,e.Prepared=`PREPARED`,e.Stopped=`STOPPED`,e.Syncing=`SYNCING`,e.Catchup=`CATCHUP`,e.Reconnecting=`RECONNECTING`,e}({}),ZA=[`org.matrix.msc2716v3`];function QA(e,t){return`FILTER_SYNC_${e}`+(t?`_`+t:``)}var $A=function(e){return e.Offline=`offline`,e.Online=`online`,e.Unavailable=`unavailable`,e}({});function ej(e){return JA({initialSyncLimit:8,resolveInvitesToProfiles:!1,pollTimeout:30*1e3,pendingEventOrdering:oI.Chronological,threadSupport:!1},e)}function tj(e){return JA({canResetEntireTimeline:e=>!1},e)}var nj=class{constructor(e,t,n){var r=this;this.client=e,h(this,`opts`,void 0),h(this,`syncOpts`,void 0),h(this,`_peekRoom`,null),h(this,`currentSyncRequest`,void 0),h(this,`abortController`,void 0),h(this,`syncState`,null),h(this,`syncStateData`,void 0),h(this,`catchingUp`,!1),h(this,`running`,!1),h(this,`keepAliveTimer`,void 0),h(this,`connectionReturnedResolvers`,void 0),h(this,`notifEvents`,[]),h(this,`failedSyncCount`,0),h(this,`storeIsInvalid`,!1),h(this,`presence`,void 0),h(this,`getPushRules`,C(function*(){try{r.syncOpts.logger.debug(`Getting push rules...`);var e=yield r.client.getPushRules();r.syncOpts.logger.debug(`Got push rules`),r.client.pushRules=e}catch(e){return r.syncOpts.logger.error(`Getting push rules failed`,e),r.shouldAbortSync(e)?void 0:(r.syncOpts.logger.debug(`Waiting for saved sync before retrying push rules...`),yield r.recoverFromSyncStartupError(r.savedSyncPromise,e),r.getPushRules())}})),h(this,`buildDefaultFilter`,()=>{var e=new dk(this.client.credentials.userId);return this.client.canSupport.get(UA.ThreadUnreadNotifications)!==HA.Unsupported&&e.setUnreadThreadNotifications(!0),e}),h(this,`prepareSyncFilterLazyLoading`,()=>{this.syncOpts.logger.debug(`Prepare lazy loading for sync...`),this.client.isGuest()&&(this.opts.lazyLoadMembers=!1),this.opts.lazyLoadMembers&&(this.syncOpts.logger.debug(`Enabling lazy load on sync filter...`),this.opts.filter||(this.opts.filter=this.buildDefaultFilter()),this.opts.filter.setLazyLoadMembers(!0))}),h(this,`prepareSyncFilterUserProfiles`,C(function*(){var e;(e=r.opts.unstableMSC4429SyncUserProfileFields)!=null&&e.length&&(r.syncOpts.logger.debug(`Enabling EXPERIMENTAL user profiles on sync filter...`),r.opts.filter||(r.opts.filter=r.buildDefaultFilter()),r.opts.filter.setUnstableMSC4429SyncUserProfiles(r.opts.unstableMSC4429SyncUserProfileFields,yield r.client.doesServerSupportUnstableFeature(`org.matrix.msc4429.stable`)))})),h(this,`storeClientOptions`,C(function*(){try{r.syncOpts.logger.debug(`Storing client options...`),yield r.client.storeClientOptions(),r.syncOpts.logger.debug(`Stored client options`)}catch(e){throw r.syncOpts.logger.error(`Storing client options failed`,e),e}})),h(this,`getFilter`,C(function*(){r.syncOpts.logger.debug(`Getting filter...`);var e=r.opts.filter?r.opts.filter:r.buildDefaultFilter(),t;try{t=yield r.client.getOrCreateFilter(QA(r.client.credentials.userId),e)}catch(e){return r.syncOpts.logger.error(`Getting filter failed`,e),r.shouldAbortSync(e)?{}:(r.syncOpts.logger.debug(`Waiting for saved sync before retrying filter...`),yield r.recoverFromSyncStartupError(r.savedSyncPromise,e),r.getFilter())}return{filter:e,filterId:t}})),h(this,`savedSyncPromise`,void 0),h(this,`onOnline`,()=>{this.syncOpts.logger.debug(`Browser thinks we are back online`),this.startKeepAlives(0)}),this.opts=ej(t),this.syncOpts=tj(n),e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),[z.Timeline,z.TimelineReset])}createRoom(e){var t=rj(this.client,e,this.opts);return t.on(j.Marker,(e,n)=>{this.onMarkerStateEvent(t,e,n)}),t}onMarkerStateEvent(e,t){if((arguments.length>2&&arguments[2]!==void 0?arguments[2]:{}).timelineWasEmpty){this.syncOpts.logger.debug(`MarkerState: Ignoring markerEventId=${t.getId()} in roomId=${e.roomId} because the timeline was empty before the marker arrived which means there is nothing to refresh.`);return}ZA.includes(e.getVersion())||t.getSender()===e.getCreator()?(this.syncOpts.logger.debug(`MarkerState: Timeline needs to be refreshed because a new markerEventId=${t.getId()} was sent in roomId=${e.roomId}`),e.setTimelineNeedsRefresh(!0),e.emit(z.HistoryImportedWithinTimeline,t,e)):this.syncOpts.logger.debug(`MarkerState: Ignoring markerEventId=${t.getId()} in roomId=${e.roomId} because MSC2716 is not supported in the room version or for any room version, the marker wasn't sent by the room creator.`)}syncLeftRooms(){var e=this;return C(function*(){var t,n=e.client,r=new dk(e.client.credentials.userId);r.setTimelineLimit(1),r.setIncludeLeaveRooms(!0);var i=e.opts.pollTimeout+YA,a={timeout:0,filter:yield n.getOrCreateFilter(QA(n.credentials.userId,`LEFT_ROOMS`),r),"org.matrix.msc4222.use_state_after":!0},o=yield n.http.authedRequest(F.Get,`/sync`,a,void 0,{localTimeoutMs:i}),s=[];return(t=o.rooms)!=null&&t.leave&&(s=e.mapSyncResponseToRoomArray(o.rooms.leave)),(yield Promise.all(s.map(function(){var t=C(function*(t){var r=t.room;if(t.isBrandNewRoom){t.timeline=t.timeline||{prev_batch:null,events:[]},r.getLiveTimeline().setPaginationToken(t.timeline.prev_batch,N.BACKWARDS);var i=(yield e.mapAndInjectRoomEvents(t)).timelineEvents;return r.recalculate(),n.store.storeRoom(r),n.emit(Z.Room,r),e.processEventsForNotifs(r,i),r}});return function(e){return t.apply(this,arguments)}}()))).filter(Boolean)})()}peek(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:20;if(this._peekRoom?.roomId===e)return Promise.resolve(this._peekRoom);var n=this.client;return this._peekRoom=this.createRoom(e),this.client.roomInitialSync(e,t).then(t=>{if(this._peekRoom?.roomId!==e)throw Error(`Peeking aborted`);t.messages=t.messages||{chunk:[]},t.messages.chunk=t.messages.chunk||[],t.state=t.state||[];var r=ME(t.state).map(n.getEventMapper()),i=t.state.map(n.getEventMapper()),a=t.messages.chunk.map(n.getEventMapper());return Array.isArray(t.presence)&&t.presence.map(n.getEventMapper()).forEach(function(e){var t=n.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=sO.createUser(e.getContent().user_id,n),t.setPresenceEvent(e),n.store.storeUser(t)),n.emit(Z.Event,e)}),t.messages.start&&(this._peekRoom.oldState.paginationToken=t.messages.start),this._peekRoom.oldState.setStateEvents(r),this._peekRoom.currentState.setStateEvents(i),this.resolveInvites(this._peekRoom),this._peekRoom.recalculate(),this._peekRoom.addEventsToTimeline(a.reverse(),!0,!0,this._peekRoom.getLiveTimeline(),t.messages.start),n.store.storeRoom(this._peekRoom),n.emit(Z.Room,this._peekRoom),this.peekPoll(this._peekRoom),this._peekRoom})}stopPeeking(){this._peekRoom=null}peekPoll(e,t){var n=this;if(this._peekRoom!==e){this.syncOpts.logger.debug(`Stopped peeking in room %s`,e.roomId);return}this.client.http.authedRequest(F.Get,`/events`,{room_id:e.roomId,timeout:`30000`,from:t},void 0,{localTimeoutMs:50*1e3,abortSignal:this.abortController?.signal}).then(function(){var t=C(function*(t){if(n._peekRoom!==e){n.syncOpts.logger.debug(`Stopped peeking in room %s`,e.roomId);return}t.chunk.filter(function(e){return e.type===`m.presence`}).map(n.client.getEventMapper()).forEach(e=>{var t=n.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=sO.createUser(e.getContent().user_id,n.client),t.setPresenceEvent(e),n.client.store.storeUser(t)),n.client.emit(Z.Event,e)});var r=t.chunk.filter(function(t){return t.room_id===e.roomId&&t.event_id}).map(n.client.getEventMapper());yield e.addLiveEvents(r,{addToState:!0}),n.peekPoll(e,t.end)});return function(e){return t.apply(this,arguments)}}(),n=>{this.syncOpts.logger.error(`[%s] Peek poll failed: %s`,e.roomId,n),setTimeout(()=>{this.peekPoll(e,t)},30*1e3)})}getSyncState(){return this.syncState}getSyncStateData(){return this.syncStateData??null}recoverFromSyncStartupError(e,t){var n=this;return C(function*(){yield e;var r=n.startKeepAlives();n.updateSyncState(B.Error,{error:t}),yield r})()}shouldAbortSync(e){return e.errcode===`M_UNKNOWN_TOKEN`?(this.syncOpts.logger.warn(`Token no longer valid - assuming logout`),this.stop(),this.updateSyncState(B.Error,{error:e}),!0):!1}sync(){var e=this;return C(function*(){var t,n;if(e.running=!0,e.abortController=new AbortController,(t=globalThis.window)==null||(n=t.addEventListener)==null||n.call(t,`online`,e.onOnline,!1),e.client.isGuest())return e.doSync({});e.syncOpts.logger.debug(`Getting saved sync token...`);var r=e.client.store.getSavedSyncToken().then(t=>(e.syncOpts.logger.debug(`Got saved sync token`),t));e.savedSyncPromise=e.client.store.getSavedSync().then(t=>{if(e.syncOpts.logger.debug(`Got reply from saved sync, exists? ${!!t}`),t)return e.syncFromCache(t)}).catch(t=>{e.syncOpts.logger.error(`Getting saved sync failed`,t)}),yield e.getPushRules(),e.prepareSyncFilterLazyLoading(),yield e.prepareSyncFilterUserProfiles(),yield e.storeClientOptions();var i=yield e.getFilter(),a=i.filterId,o=i.filter;if(o){if(e.client.resetNotifTimelineSet(),!e.currentSyncRequest){var s=a,c=yield r;if(c)e.syncOpts.logger.debug(`Sending first sync request...`);else{e.syncOpts.logger.debug(`Sending initial sync request...`);var l=e.buildDefaultFilter();l.setDefinition(o.getDefinition()),l.setTimelineLimit(e.opts.initialSyncLimit),s=JSON.stringify(l.getDefinition())}e.currentSyncRequest=e.doSyncRequest({filter:s},c)}return e.syncOpts.logger.debug(`Waiting for saved sync before starting sync processing...`),yield e.savedSyncPromise,e.doSync({filter:a})}})()}stop(){var e,t,n;this.syncOpts.logger.debug(`SyncApi.stop`),(e=globalThis.window)==null||(t=e.removeEventListener)==null||t.call(e,`online`,this.onOnline,!1),this.running=!1,(n=this.abortController)==null||n.abort(),this.keepAliveTimer&&=(clearTimeout(this.keepAliveTimer),void 0)}retryImmediately(){return this.connectionReturnedResolvers?(this.startKeepAlives(0),!0):!1}syncFromCache(e){var t=this;return C(function*(){t.syncOpts.logger.debug(`sync(): not doing HTTP hit, instead returning stored /sync data`);var n=e.nextBatch;t.client.store.setSyncToken(n);var r={nextSyncToken:n,catchingUp:!1,fromCache:!0},i={next_batch:n,rooms:e.roomsData,account_data:{events:e.accountData}};try{yield t.processSyncResponse(r,i)}catch(e){t.syncOpts.logger.error(`Error processing cached sync`,e)}t.storeIsInvalid||t.updateSyncState(B.Prepared,r)})()}doSync(e){var t=this;return C(function*(){for(;t.running;){var n=t.client.store.getSyncToken(),r=void 0;try{t.currentSyncRequest||=t.doSyncRequest(e,n),r=yield t.currentSyncRequest}catch(e){if(yield t.onSyncError(e))return;continue}finally{t.currentSyncRequest=void 0}t.client.store.setSyncToken(r.next_batch),t.failedSyncCount=0;var i={oldSyncToken:n??void 0,nextSyncToken:r.next_batch,catchingUp:t.catchingUp};try{yield t.processSyncResponse(i,r)}catch(e){t.syncOpts.logger.error(`Caught /sync error`,e),t.client.emit(Z.SyncUnexpectedError,e)}yield t.client.store.setSyncData(r),i.catchingUp=t.catchingUp,e.hasSyncedBefore||=(t.updateSyncState(B.Prepared,i),!0),t.syncOpts.cryptoCallbacks&&(yield t.syncOpts.cryptoCallbacks.onSyncCompleted(i)),t.updateSyncState(B.Syncing,i),t.client.store.wantsSave()&&(yield t.client.store.save())}t.running||(t.syncOpts.logger.debug(`Sync no longer running: exiting.`),t.connectionReturnedResolvers&&=(t.connectionReturnedResolvers.reject(),void 0),t.updateSyncState(B.Stopped))})()}doSyncRequest(e,t){var n=this.getSyncParams(e,t);return this.client.http.authedRequest(F.Get,`/sync`,n,void 0,{localTimeoutMs:n.timeout+YA,abortSignal:this.abortController?.signal})}getSyncParams(e,t){var n=this.opts.pollTimeout;(this.getSyncState()!==B.Syncing||this.catchingUp)&&(this.catchingUp=!0,n=0);var r=e.filter;this.client.isGuest()&&!r&&(r=this.getGuestFilter());var i={filter:r,timeout:n,"org.matrix.msc4222.use_state_after":!0};return this.opts.disablePresence?i.set_presence=$A.Offline:this.presence!==void 0&&(i.set_presence=this.presence),t?i.since=t:i._cacheBuster=Date.now(),[B.Reconnecting,B.Error].includes(this.getSyncState())&&(i.timeout=0),i}setPresence(e){this.presence=e}onSyncError(e){var t=this;return C(function*(){if(!t.running)return t.syncOpts.logger.debug(`Sync no longer running: exiting`),t.connectionReturnedResolvers&&=(t.connectionReturnedResolvers.reject(),void 0),t.updateSyncState(B.Stopped),!0;if(t.syncOpts.logger.error(`/sync error %s`,e),t.shouldAbortSync(e))return!0;t.failedSyncCount++,t.syncOpts.logger.debug(`Number of consecutive failed sync requests:`,t.failedSyncCount),t.syncOpts.logger.debug(`Starting keep-alive`);var n=t.startKeepAlives();return t.currentSyncRequest=void 0,t.updateSyncState(t.failedSyncCount>=XA?B.Error:B.Reconnecting,{error:e}),(yield n)&&t.getSyncState()===B.Error&&t.updateSyncState(B.Catchup,{catchingUp:!0}),!1})()}processSyncResponse(e,t){var n=this;return C(function*(){var r=n.client;if(Array.isArray(t.presence?.events)&&t.presence.events.filter(hD).map(r.getEventMapper()).forEach(function(e){var t=r.store.getUser(e.getSender());t?t.setPresenceEvent(e):(t=sO.createUser(e.getSender(),r),t.setPresenceEvent(e),r.store.storeUser(t)),r.emit(Z.Event,e)}),Array.isArray(t.account_data?.events)){var i=t.account_data.events.filter(hD).map(r.getEventMapper()),a=i.reduce((e,t)=>(e[t.getType()]=r.store.getAccountData(t.getType()),e),{});r.store.storeAccountDataEvents(i),i.forEach(function(e){if(e.getType()===E.PushRules){var t=e.getContent();r.setPushRules(t)}var n=a[e.getType()];return r.emit(Z.AccountData,e,n),e})}var o=t.users??t[`org.matrix.msc4429.users`];if(typeof o==`object`&&o){var s=[],c=new Map;for(var l of Object.entries(o)){var u=x(l,2),d=u[0],f=u[1];if(w.info(`Storing user profile ${d}`,f),f.profile_updates){var p=yield r.store.getUserProfile(d);c.set(d,JA(JA({},p),f.profile_updates))}else f.profile_updates===null&&s.push(d)}s.length&&(yield r.store.removeUserProfiles(s)),c.size&&(yield r.store.storeUserProfiles(c));for(var m of Object.entries(o)){var h=x(m,2),g=h[0],_=h[1];r.emit(Z.UserProfileUpdate,g,_.profile_updates??null)}}if(t.to_device&&Array.isArray(t.to_device.events)&&t.to_device.events.length>0){var v=t.to_device.events.filter(hD);ij(n.syncOpts.cryptoCallbacks?yield n.syncOpts.cryptoCallbacks.preprocessToDeviceMessages(v):v.map(e=>({message:e,encryptionInfo:null})),r)}else n.catchingUp=!1;var y=[],b=[],S=[],ee=[];t.rooms&&(t.rooms.invite&&(y=n.mapSyncResponseToRoomArray(t.rooms.invite)),t.rooms.join&&(b=n.mapSyncResponseToRoomArray(t.rooms.join)),t.rooms.leave&&(S=n.mapSyncResponseToRoomArray(t.rooms.leave)),t.rooms.knock&&(ee=n.mapSyncResponseToRoomArray(t.rooms.knock))),n.notifEvents=[],yield Promise.all(y.map(function(){var e=C(function*(e){var t=e.room,i=n.mapSyncEventsFormat(e.invite_state,t);yield n.injectRoomEvents(t,i,void 0),e.isBrandNewRoom?(t.recalculate(),r.store.storeRoom(t),r.emit(Z.Room,t)):t.recalculate(),i.forEach(function(e){r.emit(Z.Event,e)})});return function(t){return e.apply(this,arguments)}}())),yield Promise.all(b.map(function(){var t=C(function*(t){var i=t.room,a=n.mapSyncEventsFormat(t.state,i),o=n.mapSyncEventsFormat(t[`org.matrix.msc4222.state_after`],i),s=n.mapSyncEventsFormat(t.timeline,i,!1),c=n.mapSyncEventsFormat(t.ephemeral),l=n.mapSyncEventsFormat(t.account_data),u=n.mapSyncEventsFormat(t.msc4354_sticky),d=t[`org.matrix.msc4222.state_after`]?o:a.concat(s),f=n.isRoomEncrypted(i,d);t.unread_notifications&&((!f||t.unread_notifications.notification_count===0)&&i.setUnreadNotificationCount(R.Total,t.unread_notifications.notification_count??0),(!f||i.getUnreadNotificationCount(R.Highlight)<=0)&&i.setUnreadNotificationCount(R.Highlight,t.unread_notifications.highlight_count??0));var p=t[ik.name]??t[ik.altName];if(p){i.resetThreadUnreadNotificationCountFromSync(Object.keys(p));for(var m of Object.entries(p)){var h=x(m,2),g=h[0],_=h[1];(!f||_.notification_count===0)&&i.setThreadUnreadNotificationCount(g,R.Total,_.notification_count??0);var v=i.getThreadUnreadNotificationCount(g,R.Highlight)<=0;(!f||f&&v)&&i.setThreadUnreadNotificationCount(g,R.Highlight,_.highlight_count??0)}}else i.resetThreadUnreadNotificationCountFromSync();if(t.timeline=t.timeline||{},t.isBrandNewRoom)t.timeline.prev_batch!==null&&i.getLiveTimeline().setPaginationToken(t.timeline.prev_batch,N.BACKWARDS);else if(t.timeline.limited){for(var y=!0,b=s.length-1;b>=0;b--){var S=s[b].getId();if(i.getTimelineForEvent(S)){n.syncOpts.logger.debug(`Already have event ${S} in limited sync - not resetting`),y=!1,s.splice(0,b);break}}y&&(i.resetLiveTimeline(t.timeline.prev_batch,n.syncOpts.canResetEntireTimeline(i.roomId)?null:e.oldSyncToken??null),r.resetNotifTimelineSet())}if(n.syncOpts.cryptoCallbacks)for(var C of d)C.isState()&&C.getType()===E.RoomEncryption&&C.getStateKey()===``&&(yield n.syncOpts.cryptoCallbacks.onCryptoEvent(i,C));for(var ee of s.filter(e=>e.isState()))yield n.client.decryptEventIfNeeded(ee);try{`org.matrix.msc4222.state_after`in t?yield n.injectRoomEvents(i,void 0,o,s,e.fromCache):yield n.injectRoomEvents(i,a,void 0,s,e.fromCache)}catch(e){n.syncOpts.logger.error(`Failed to process events on room ${i.roomId}:`,e)}t.summary&&i.setSummary(t.summary),i.addEphemeralEvents(c),i.addAccountData(l);var te=u.concat(s.filter(e=>e.unstableStickyInfo!==void 0));i._unstable_addStickyEvents(te),i.recalculate(),t.isBrandNewRoom&&(r.store.storeRoom(i),r.emit(Z.Room,i)),n.processEventsForNotifs(i,s);var ne=e=>r.emit(Z.Event,e);a.forEach(ne),s.forEach(ne),c.forEach(ne),l.forEach(ne),u.filter(e=>!s.some(t=>t.getId()===e.getId())).forEach(ne),i.decryptCriticalEvents()});return function(e){return t.apply(this,arguments)}}())),yield Promise.all(S.map(function(){var e=C(function*(e){var t=e.room,i=yield n.mapAndInjectRoomEvents(e),a=i.timelineEvents,o=i.stateEvents,s=i.stateAfterEvents,c=n.mapSyncEventsFormat(e.account_data);t.addAccountData(c),t.recalculate(),e.isBrandNewRoom&&(r.store.storeRoom(t),r.emit(Z.Room,t)),n.processEventsForNotifs(t,a),o?.forEach(function(e){r.emit(Z.Event,e)}),s?.forEach(function(e){r.emit(Z.Event,e)}),a.forEach(function(e){r.emit(Z.Event,e)}),c.forEach(function(e){r.emit(Z.Event,e)})});return function(t){return e.apply(this,arguments)}}())),yield Promise.all(ee.map(function(){var e=C(function*(e){var t=e.room,i=n.mapSyncEventsFormat(e.knock_state,t);yield n.injectRoomEvents(t,i,void 0),e.isBrandNewRoom?(t.recalculate(),r.store.storeRoom(t),r.emit(Z.Room,t)):t.recalculate(),i.forEach(function(e){r.emit(Z.Event,e)})});return function(t){return e.apply(this,arguments)}}())),e.oldSyncToken&&n.notifEvents.length&&(n.notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),n.notifEvents.forEach(function(e){var t;(t=r.getNotifTimelineSet())==null||t.addLiveEvent(e,{addToState:!0})})),t.device_lists&&n.syncOpts.cryptoCallbacks&&(yield n.syncOpts.cryptoCallbacks.processDeviceLists(t.device_lists)),yield n.syncOpts.cryptoCallbacks?.processKeyCounts(t.device_one_time_keys_count,t.device_unused_fallback_key_types??t[`org.matrix.msc2732.device_unused_fallback_key_types`])})()}startKeepAlives(e){return e===void 0&&(e=2e3+Math.floor(Math.random()*5e3)),this.keepAliveTimer!==null&&clearTimeout(this.keepAliveTimer),e>0?this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this),e):this.pokeKeepAlive(),this.connectionReturnedResolvers||=Promise.withResolvers(),this.connectionReturnedResolvers.promise}pokeKeepAlive(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(!this.running){clearTimeout(this.keepAliveTimer),this.connectionReturnedResolvers&&=(this.connectionReturnedResolvers.reject(`SyncApi.stop() was called`),void 0);return}var t=()=>{clearTimeout(this.keepAliveTimer),this.connectionReturnedResolvers&&=(this.connectionReturnedResolvers.resolve(e),void 0)};this.client.http.request(F.Get,`/_matrix/client/versions`,void 0,void 0,{prefix:``,localTimeoutMs:15*1e3,abortSignal:this.abortController?.signal}).then(()=>{t()},n=>{n.httpStatus==400||n.httpStatus==404?this.keepAliveTimer=setTimeout(t,2e3):(e=!0,this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this,e),5e3+Math.floor(Math.random()*5e3)),this.updateSyncState(B.Error,{error:n}))})}mapSyncResponseToRoomArray(e){var t=this.client;return Object.keys(e).filter(e=>!pD(e)).map(n=>{var r=t.store.getRoom(n),i=!1;return r||(r=this.createRoom(n),i=!0),JA(JA({},e[n]),{},{room:r,isBrandNewRoom:i})})}mapSyncEventsFormat(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!Array.isArray(e.events))return[];var r=this.client.getEventMapper({decrypt:n});return e.events.filter(hD).map(function(e){return t&&(e.room_id=t.roomId),r(e)})}resolveInvites(e){if(!(!e||!this.opts.resolveInvitesToProfiles)){var t=this.client;e.getMembersWithMembership(k.Invite).forEach(function(n){if(!n.requestedProfileInfo){n.requestedProfileInfo=!0;var r=t.getUser(n.userId);(r?Promise.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId)).then(function(t){var r=n.events.member;r?.getContent().membership===k.Invite&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}}findEncryptionEvent(e){return e?.find(e=>e.getType()===E.RoomEncryption&&e.getStateKey()===``)}isRoomEncrypted(e,t){return e.hasEncryptionStateEvent()||!!this.findEncryptionEvent(t)}mapAndInjectRoomEvents(e){var t=this;return C(function*(){var n=t.mapSyncEventsFormat(e.state,e.room),r=t.mapSyncEventsFormat(e[`org.matrix.msc4222.state_after`],e.room),i=t.mapSyncEventsFormat(e.timeline,e.room);return`org.matrix.msc4222.state_after`in e?yield t.injectRoomEvents(e.room,void 0,r,i):yield t.injectRoomEvents(e.room,n,void 0,i),{timelineEvents:i,stateEvents:n,stateAfterEvents:r}})()}injectRoomEvents(e,t,n,r){var i=arguments,a=this;return C(function*(){var o=i.length>4&&i[4]!==void 0?i[4]:!1,s=n??t,c=e.getLiveTimeline(),l=c.getEvents().length==0;if(l){for(var u of s)a.client.getPushActionsForEvent(u);c.initialiseState(s,{timelineWasEmpty:l})}a.resolveInvites(e),e.recalculate(),l||(e.oldState.setStateEvents(s),e.currentState.setStateEvents(s)),yield e.addLiveEvents(r||[],{fromCache:o,timelineWasEmpty:l,addToState:n===void 0}),a.client.processBeaconEvents(e,r)})()}processEventsForNotifs(e,t){if(this.client.getNotifTimelineSet())for(var n of t){var r,i=this.client.getPushActionsForEvent(n);i!=null&&i.notify&&(r=i.tweaks)!=null&&r.highlight&&this.notifEvents.push(n)}}getGuestFilter(){return`{}`}updateSyncState(e,t){var n=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(Z.Sync,this.syncState,n,t)}};function rj(e,t,n){var r=e.timelineSupport,i=new RA(t,e,e.getUserId(),{lazyLoadMembers:n.lazyLoadMembers,pendingEventOrdering:n.pendingEventOrdering,timelineSupport:r});return e.reEmitter.reEmit(i,[z.Name,z.Redaction,z.RedactionCancelled,z.Receipt,z.Tags,z.LocalEchoUpdated,z.AccountData,z.MyMembership,z.Timeline,z.TimelineReset,j.Events,j.Members,j.NewMember,j.Update,A.New,A.Update,A.Destroy,A.LivenessChange]),i.on(j.NewMember,(t,n,r)=>{r.user=e.getUser(r.userId)??void 0,e.reEmitter.reEmit(r,[gO.Name,gO.Typing,gO.PowerLevel,gO.Membership])}),i}function ij(e,t){var n=[];e.map(e=>{if(e.message.type===`m.key.verification.cancel`){var t=e.message.content.transaction_id;t&&n.push(t)}return e}).forEach(function(e){var r=e.message,i=r.content,a=new MI(Object.assign({},r));if(r.type===`m.key.verification.start`||r.type===`m.key.verification.request`){var o=i.transaction_id;n.includes(o)&&a.flagCancelled()}e.encryptionInfo&&a.makeEncrypted(E.RoomMessageEncrypted,{ciphertext:``},e.encryptionInfo.senderCurve25519KeyBase64,``),t.emit(Z.ToDeviceEvent,a),t.emit(Z.ReceivedToDeviceMessage,e)})}var aj=class{constructor(){h(this,`accountData`,new Map),h(this,`fromToken`,null)}isNewlyCreated(){return Promise.resolve(!0)}getSyncToken(){return this.fromToken}setSyncToken(e){this.fromToken=e}storeRoom(e){}getRoom(e){return null}getRooms(){return[]}removeRoom(e){}getRoomSummaries(){return[]}storeUser(e){}getUser(e){return null}getUsers(){return[]}scrollback(e,t){return[]}setUserCreator(e){}storeEvents(e,t,n,r){}storeFilter(e){}getFilter(e,t){return null}getFilterIdByName(e){return null}setFilterIdByName(e,t){}storeAccountDataEvents(e){}getAccountData(e){}setSyncData(e){return Promise.resolve()}wantsSave(){return!1}save(){return Promise.resolve()}startup(){return Promise.resolve()}getSavedSync(){return Promise.resolve(null)}getSavedSyncToken(){return Promise.resolve(null)}deleteAllData(){return Promise.resolve()}getOutOfBandMembers(){return Promise.resolve(null)}setOutOfBandMembers(e,t){return Promise.resolve()}clearOutOfBandMembers(){return Promise.resolve()}getClientOptions(){return Promise.resolve(void 0)}storeClientOptions(e){return Promise.resolve()}getPendingEvents(e){return C(function*(){return[]})()}setPendingEvents(e,t){return Promise.resolve()}saveToDeviceBatches(e){return C(function*(){return Promise.resolve()})()}getOldestToDeviceBatch(){return Promise.resolve(null)}removeToDeviceBatch(e){return C(function*(){return Promise.resolve()})()}getUserProfile(){return C(function*(){})()}storeUserProfiles(){return C(function*(){})()}removeUserProfiles(){return C(function*(){})()}destroy(){return C(function*(){})()}removeEventsFromRoom(e,t){return C(function*(){})()}},oj=s(((e,t)=>{var n=t.exports={v:[{name:`version`,reg:/^(\d*)$/}],o:[{name:`origin`,reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:[`username`,`sessionId`,`sessionVersion`,`netType`,`ipVer`,`address`],format:`%s %s %d %s IP%d %s`}],s:[{name:`name`}],i:[{name:`description`}],u:[{name:`uri`}],e:[{name:`email`}],p:[{name:`phone`}],z:[{name:`timezones`}],r:[{name:`repeats`}],t:[{name:`timing`,reg:/^(\d*) (\d*)/,names:[`start`,`stop`],format:`%d %d`}],c:[{name:`connection`,reg:/^IN IP(\d) (\S*)/,names:[`version`,`ip`],format:`IN IP%d %s`}],b:[{push:`bandwidth`,reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:[`type`,`limit`],format:`%s:%s`}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:[`type`,`port`,`protocol`,`payloads`],format:`%s %d %s %s`}],a:[{push:`rtp`,reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:[`payload`,`codec`,`rate`,`encoding`],format:function(e){return e.encoding?`rtpmap:%d %s/%s/%s`:e.rate?`rtpmap:%d %s/%s`:`rtpmap:%d %s`}},{push:`fmtp`,reg:/^fmtp:(\d*) ([\S| ]*)/,names:[`payload`,`config`],format:`fmtp:%d %s`},{name:`control`,reg:/^control:(.*)/,format:`control:%s`},{name:`rtcp`,reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:[`port`,`netType`,`ipVer`,`address`],format:function(e){return e.address==null?`rtcp:%d`:`rtcp:%d %s IP%d %s`}},{push:`rtcpFbTrrInt`,reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:[`payload`,`value`],format:`rtcp-fb:%s trr-int %d`},{push:`rtcpFb`,reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:[`payload`,`type`,`subtype`],format:function(e){return e.subtype==null?`rtcp-fb:%s %s`:`rtcp-fb:%s %s %s`}},{push:`ext`,reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:[`value`,`direction`,`encrypt-uri`,`uri`,`config`],format:function(e){return`extmap:%d`+(e.direction?`/%s`:`%v`)+(e[`encrypt-uri`]?` %s`:`%v`)+` %s`+(e.config?` %s`:``)}},{name:`extmapAllowMixed`,reg:/^(extmap-allow-mixed)/},{push:`crypto`,reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:[`id`,`suite`,`config`,`sessionConfig`],format:function(e){return e.sessionConfig==null?`crypto:%d %s %s`:`crypto:%d %s %s %s`}},{name:`setup`,reg:/^setup:(\w*)/,format:`setup:%s`},{name:`connectionType`,reg:/^connection:(new|existing)/,format:`connection:%s`},{name:`mid`,reg:/^mid:([^\s]*)/,format:`mid:%s`},{push:`msid`,reg:/^msid:([\w-]+)(?: ([\w-]+))?/,names:[`id`,`appdata`],format:`msid:%s %s`},{name:`ptime`,reg:/^ptime:(\d*(?:\.\d*)*)/,format:`ptime:%d`},{name:`maxptime`,reg:/^maxptime:(\d*(?:\.\d*)*)/,format:`maxptime:%d`},{name:`direction`,reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:`icelite`,reg:/^(ice-lite)/},{name:`iceUfrag`,reg:/^ice-ufrag:(\S*)/,format:`ice-ufrag:%s`},{name:`icePwd`,reg:/^ice-pwd:(\S*)/,format:`ice-pwd:%s`},{name:`fingerprint`,reg:/^fingerprint:(\S*) (\S*)/,names:[`type`,`hash`],format:`fingerprint:%s %s`},{push:`candidates`,reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:[`foundation`,`component`,`transport`,`priority`,`ip`,`port`,`type`,`raddr`,`rport`,`tcptype`,`generation`,`network-id`,`network-cost`],format:function(e){var t=`candidate:%s %d %s %d %s %d typ %s`;return t+=e.raddr==null?`%v%v`:` raddr %s rport %d`,t+=e.tcptype==null?`%v`:` tcptype %s`,e.generation!=null&&(t+=` generation %d`),t+=e[`network-id`]==null?`%v`:` network-id %d`,t+=e[`network-cost`]==null?`%v`:` network-cost %d`,t}},{name:`endOfCandidates`,reg:/^(end-of-candidates)/},{name:`remoteCandidates`,reg:/^remote-candidates:(.*)/,format:`remote-candidates:%s`},{name:`iceOptions`,reg:/^ice-options:(\S*)/,format:`ice-options:%s`},{push:`ssrcs`,reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:[`id`,`attribute`,`value`],format:function(e){var t=`ssrc:%d`;return e.attribute!=null&&(t+=` %s`,e.value!=null&&(t+=`:%s`)),t}},{push:`ssrcGroups`,reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:[`semantics`,`ssrcs`],format:`ssrc-group:%s %s`},{name:`msidSemantic`,reg:/^msid-semantic:\s?(\w*) (\S*)/,names:[`semantic`,`token`],format:`msid-semantic: %s %s`},{push:`groups`,reg:/^group:(\w*) (.*)/,names:[`type`,`mids`],format:`group:%s %s`},{name:`rtcpMux`,reg:/^(rtcp-mux)/},{name:`rtcpRsize`,reg:/^(rtcp-rsize)/},{name:`sctpmap`,reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:[`sctpmapNumber`,`app`,`maxMessageSize`],format:function(e){return e.maxMessageSize==null?`sctpmap:%s %s`:`sctpmap:%s %s %s`}},{name:`xGoogleFlag`,reg:/^x-google-flag:([^\s]*)/,format:`x-google-flag:%s`},{push:`rids`,reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:[`id`,`direction`,`params`],format:function(e){return e.params?`rid:%s %s %s`:`rid:%s %s`}},{push:`imageattrs`,reg:RegExp(`^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?`),names:[`pt`,`dir1`,`attrs1`,`dir2`,`attrs2`],format:function(e){return`imageattr:%s %s %s`+(e.dir2?` %s %s`:``)}},{name:`simulcast`,reg:RegExp(`^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$`),names:[`dir1`,`list1`,`dir2`,`list2`],format:function(e){return`simulcast:%s %s`+(e.dir2?` %s %s`:``)}},{name:`simulcast_03`,reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:[`value`],format:`simulcast: %s`},{name:`framerate`,reg:/^framerate:(\d+(?:$|\.\d+))/,format:`framerate:%s`},{name:`sourceFilter`,reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:[`filterMode`,`netType`,`addressTypes`,`destAddress`,`srcList`],format:`source-filter: %s %s %s %s %s`},{name:`bundleOnly`,reg:/^(bundle-only)/},{name:`label`,reg:/^label:(.+)/,format:`label:%s`},{name:`sctpPort`,reg:/^sctp-port:(\d+)$/,format:`sctp-port:%s`},{name:`maxMessageSize`,reg:/^max-message-size:(\d+)$/,format:`max-message-size:%s`},{push:`tsRefClocks`,reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:[`clksrc`,`clksrcExt`],format:function(e){return`ts-refclk:%s`+(e.clksrcExt==null?``:`=%s`)}},{name:`mediaClk`,reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:[`id`,`mediaClockName`,`mediaClockValue`,`rateNumerator`,`rateDenominator`],format:function(e){var t=`mediaclk:`;return t+=e.id==null?`%v%s`:`id=%s %s`,t+=e.mediaClockValue==null?``:`=%s`,t+=e.rateNumerator==null?``:` rate=%s`,t+=e.rateDenominator==null?``:`/%s`,t}},{name:`keywords`,reg:/^keywds:(.+)$/,format:`keywds:%s`},{name:`content`,reg:/^content:(.+)/,format:`content:%s`},{name:`bfcpFloorCtrl`,reg:/^floorctrl:(c-only|s-only|c-s)/,format:`floorctrl:%s`},{name:`bfcpConfId`,reg:/^confid:(\d+)/,format:`confid:%s`},{name:`bfcpUserId`,reg:/^userid:(\d+)/,format:`userid:%s`},{name:`bfcpFloorId`,reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:[`id`,`mStream`],format:`floorid:%s mstrm:%s`},{push:`invalid`,names:[`value`]}]};Object.keys(n).forEach(function(e){n[e].forEach(function(e){e.reg||=/(.*)/,e.format||=`%s`})})})),sj=s((e=>{var t=function(e){return String(Number(e))===e?Number(e):e},n=function(e,n,r,i){if(i&&!r)n[i]=t(e[1]);else for(var a=0;a<r.length;a+=1)e[a+1]!=null&&(n[r[a]]=t(e[a+1]))},r=function(e,t,r){var i=e.name&&e.names;e.push&&!t[e.push]?t[e.push]=[]:i&&!t[e.name]&&(t[e.name]={});var a=e.push?{}:i?t[e.name]:t;n(r.match(e.reg),a,e.names,e.name),e.push&&t[e.push].push(a)},i=oj(),a=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(a).forEach(function(e){var t=e[0],a=e.slice(2);t===`m`&&(n.push({rtp:[],fmtp:[]}),o=n[n.length-1]);for(var s=0;s<(i[t]||[]).length;s+=1){var c=i[t][s];if(c.reg.test(a))return r(c,o,a)}}),t.media=n,t};var o=function(e,n){var r=n.split(/=(.+)/,2);return r.length===2?e[r[0]]=t(r[1]):r.length===1&&n.length>1&&(e[r[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(o,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(` `).map(Number)},e.parseRemoteCandidates=function(e){for(var n=[],r=e.split(` `).map(t),i=0;i<r.length;i+=3)n.push({component:r[i],ip:r[i+1],port:r[i+2]});return n},e.parseImageAttributes=function(e){return e.split(` `).map(function(e){return e.substring(1,e.length-1).split(`,`).reduce(o,{})})},e.parseSimulcastStreamList=function(e){return e.split(`;`).map(function(e){return e.split(`,`).map(function(e){var n,r=!1;return e[0]===`~`?(n=t(e.substring(1,e.length)),r=!0):n=t(e),{scid:n,paused:r}})})}})),cj=s(((e,t)=>{var n=oj(),r=/%[sdv%]/g,i=function(e){var t=1,n=arguments,i=n.length;return e.replace(r,function(e){if(t>=i)return e;var r=n[t];switch(t+=1,e){case`%%`:return`%`;case`%s`:return String(r);case`%d`:return Number(r);case`%v`:return``}})},a=function(e,t,n){var r=t.format instanceof Function?t.format(t.push?n:n[t.name]):t.format,a=[e+`=`+r];if(t.names)for(var o=0;o<t.names.length;o+=1){var s=t.names[o];t.name?a.push(n[t.name][s]):a.push(n[t.names[o]])}else a.push(n[t.name]);return i.apply(null,a)},o=[`v`,`o`,`s`,`i`,`u`,`e`,`p`,`c`,`b`,`t`,`r`,`z`,`a`],s=[`i`,`c`,`b`,`a`];t.exports=function(e,t){t||={},e.version??=0,e.name??=` `,e.media.forEach(function(e){e.payloads??=``});var r=t.outerOrder||o,i=t.innerOrder||s,c=[];return r.forEach(function(t){n[t].forEach(function(n){n.name in e&&e[n.name]!=null?c.push(a(t,n,e)):n.push in e&&e[n.push]!=null&&e[n.push].forEach(function(e){c.push(a(t,n,e))})})}),e.media.forEach(function(e){c.push(a(`m`,n.m[0],e)),i.forEach(function(t){n[t].forEach(function(n){n.name in e&&e[n.name]!=null?c.push(a(t,n,e)):n.push in e&&e[n.push]!=null&&e[n.push].forEach(function(e){c.push(a(t,n,e))})})})}),c.join(`\r 16 `)+`\r 17 `}})),lj=s((e=>{var t=sj(),n=cj();oj(),e.write=n,e.parse=t.parse,e.parseParams=t.parseParams,e.parseFmtpConfig=t.parseFmtpConfig,e.parsePayloads=t.parsePayloads,e.parseRemoteCandidates=t.parseRemoteCandidates,e.parseImageAttributes=t.parseImageAttributes,e.parseSimulcastStreamList=t.parseSimulcastStreamList}))();function uj(e,t){if(typeof e.toBase64==`function`)return e.toBase64(t);var n=btoa(e.reduce((e,t)=>e+String.fromCharCode(t),``));return t.omitPadding&&(n=n.replace(/={1,2}$/,``)),t.alphabet===`base64url`&&(n=n.replace(/\+/g,`-`).replace(/\//g,`_`)),n}function dj(e){return uj(e,{alphabet:`base64`,omitPadding:!1})}function fj(e){return uj(e,{alphabet:`base64`,omitPadding:!0})}function pj(e){return uj(e,{alphabet:`base64url`,omitPadding:!0})}function mj(e,t){return typeof Uint8Array.fromBase64==`function`?Uint8Array.fromBase64(e,t):Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function hj(e){return mj(e.replace(/-/g,`+`).replace(/_/g,`/`),{alphabet:`base64`,lastChunkHandling:`loose`})}var gj=`abcdefghijklmnopqrstuvwxyz`,_j=`ABCDEFGHIJKLMNOPQRSTUVWXYZ`,vj=`0123456789`;function yj(e){return bj(e,_j+gj+vj)}function bj(e,t){if(t.length<2||t.length>256)throw Error(`Character set must be between 2 and 256 characters long`);if(e<1||e>32768)throw Error(`Requested random string length must be between 1 and 32768`);for(var n=256-256%t.length,r=new Uint8Array(Math.floor(e*1.3)),i=r.length,a=[];a.length<e;){i===r.length&&(globalThis.crypto.getRandomValues(r),i=0);var o=r[i++];o<n&&a.push(t[o%t.length])}return a.join(``)}var xj=new gE(`sdp_stream_metadata`,`org.matrix.msc3077.sdp_stream_metadata`),V=function(e){return e.Usermedia=`m.usermedia`,e.Screenshare=`m.screenshare`,e}({}),Sj=null,Cj=0,wj=()=>(Sj===null&&(Sj=new AudioContext),Cj++,Sj),Tj=()=>{if(Cj--,Cj===0){var e;(e=Sj)==null||e.close(),Sj=null}},Ej=200,Dj=8,Oj=function(e){return e.NewStream=`new_stream`,e.MuteStateChanged=`mute_state_changed`,e.LocalVolumeChanged=`local_volume_changed`,e.VolumeChanged=`volume_changed`,e.ConnectedChanged=`connected_changed`,e.Speaking=`speaking`,e.Disposed=`disposed`,e}({}),kj=class e extends O{constructor(e){super(),h(this,`stream`,void 0),h(this,`sdpMetadataStreamId`,void 0),h(this,`userId`,void 0),h(this,`deviceId`,void 0),h(this,`purpose`,void 0),h(this,`speakingVolumeSamples`,void 0),h(this,`client`,void 0),h(this,`call`,void 0),h(this,`roomId`,void 0),h(this,`audioMuted`,void 0),h(this,`videoMuted`,void 0),h(this,`localVolume`,1),h(this,`measuringVolumeActivity`,!1),h(this,`audioContext`,void 0),h(this,`analyser`,void 0),h(this,`frequencyBinCount`,void 0),h(this,`speakingThreshold`,-60),h(this,`speaking`,!1),h(this,`volumeLooperTimeout`,void 0),h(this,`_disposed`,!1),h(this,`_connected`,!1),h(this,`onAddTrack`,()=>{this.emit(Oj.NewStream,this.stream)}),h(this,`onCallState`,e=>{e===W.Connected?this.connected=!0:e===W.Connecting&&(this.connected=!1)}),h(this,`volumeLooper`,()=>{if(this.analyser&&this.measuringVolumeActivity){this.analyser.getFloatFrequencyData(this.frequencyBinCount);var e=-1/0;for(var t of this.frequencyBinCount)t>e&&(e=t);this.speakingVolumeSamples.shift(),this.speakingVolumeSamples.push(e),this.emit(Oj.VolumeChanged,e);var n=!1;for(var r of this.speakingVolumeSamples)if(r>this.speakingThreshold){n=!0;break}this.speaking!==n&&(this.speaking=n,this.emit(Oj.Speaking,this.speaking)),this.volumeLooperTimeout=setTimeout(this.volumeLooper,Ej)}}),this.client=e.client,this.call=e.call,this.roomId=e.roomId,this.userId=e.userId,this.deviceId=e.deviceId,this.purpose=e.purpose,this.audioMuted=e.audioMuted,this.videoMuted=e.videoMuted,this.speakingVolumeSamples=Array(Dj).fill(-1/0),this.sdpMetadataStreamId=e.stream.id,this.updateStream(null,e.stream),this.stream=e.stream,this.hasAudioTrack&&this.initVolumeMeasuring(),e.call&&(e.call.addListener(K.State,this.onCallState),this.onCallState(e.call.state))}get connected(){return this.isLocal()||this._connected}set connected(e){this._connected=e,this.emit(Oj.ConnectedChanged,this.connected)}get hasAudioTrack(){return this.stream.getAudioTracks().length>0}updateStream(e,t){if(t!==e){var n=this.measuringVolumeActivity;e&&(e.removeEventListener(`addtrack`,this.onAddTrack),this.measureVolumeActivity(!1)),this.stream=t,t.addEventListener(`addtrack`,this.onAddTrack),this.hasAudioTrack?(this.initVolumeMeasuring(),n&&this.measureVolumeActivity(!0)):this.measureVolumeActivity(!1),this.emit(Oj.NewStream,this.stream)}}initVolumeMeasuring(){this.hasAudioTrack&&(this.audioContext||=wj(),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=512,this.analyser.smoothingTimeConstant=.1,this.audioContext.createMediaStreamSource(this.stream).connect(this.analyser),this.frequencyBinCount=new Float32Array(this.analyser.frequencyBinCount))}getMember(){return this.client.getRoom(this.roomId)?.getMember(this.userId)??null}isLocal(){return this.userId===this.client.getUserId()&&(this.deviceId===void 0||this.deviceId===this.client.getDeviceId())}isAudioMuted(){return this.stream.getAudioTracks().length===0||this.audioMuted}isVideoMuted(){return this.stream.getVideoTracks().length===0||this.videoMuted}isSpeaking(){return this.speaking}setNewStream(e){this.updateStream(this.stream,e)}setAudioVideoMuted(e,t){e!==null&&(this.audioMuted!==e&&this.speakingVolumeSamples.fill(-1/0),this.audioMuted=e),t!==null&&(this.videoMuted=t),this.emit(Oj.MuteStateChanged,this.audioMuted,this.videoMuted)}measureVolumeActivity(e){if(e){if(!this.analyser||!this.frequencyBinCount||!this.hasAudioTrack)return;this.measuringVolumeActivity=!0,this.volumeLooper()}else this.measuringVolumeActivity=!1,this.speakingVolumeSamples.fill(-1/0),this.emit(Oj.VolumeChanged,-1/0)}setSpeakingThreshold(e){this.speakingThreshold=e}clone(){var t=this.client.getMediaHandler(),n=this.stream.clone();return w.log(`CallFeed clone() cloning stream (originalStreamId=${this.stream.id}, newStreamId${n.id})`),this.purpose===V.Usermedia?t.userMediaStreams.push(n):t.screensharingStreams.push(n),new e({client:this.client,roomId:this.roomId,userId:this.userId,deviceId:this.deviceId,stream:n,purpose:this.purpose,audioMuted:this.audioMuted,videoMuted:this.videoMuted})}dispose(){var e,t;clearTimeout(this.volumeLooperTimeout),(e=this.stream)==null||e.removeEventListener(`addtrack`,this.onAddTrack),(t=this.call)==null||t.removeListener(K.State,this.onCallState),this.audioContext&&(this.audioContext=void 0,this.analyser=void 0,Tj()),this._disposed=!0,this.emit(Oj.Disposed)}get disposed(){return this._disposed}set disposed(e){this._disposed=e}getLocalVolume(){return this.localVolume}setLocalVolume(e){this.localVolume=e,this.emit(Oj.LocalVolumeChanged,e)}},Aj=3e3,jj=function(e){return e.Incoming=`Call.incoming`,e}({}),Mj=class{constructor(e){h(this,`calls`,void 0),h(this,`callEventBuffer`,void 0),h(this,`nextSeqByCall`,new Map),h(this,`toDeviceEventBuffers`,new Map),h(this,`client`,void 0),h(this,`candidateEventsByCall`,void 0),h(this,`eventBufferPromiseChain`,void 0),h(this,`onSync`,()=>{var e=this.callEventBuffer;this.callEventBuffer=[],this.eventBufferPromiseChain?this.eventBufferPromiseChain=this.eventBufferPromiseChain.then(()=>this.evaluateEventBuffer(e)):this.eventBufferPromiseChain=this.evaluateEventBuffer(e)}),h(this,`onRoomTimeline`,e=>{this.callEventBuffer.push(e)}),h(this,`onToDeviceEvent`,e=>{var t=e.getContent();if(!t.call_id){this.callEventBuffer.push(e);return}if(this.nextSeqByCall.has(t.call_id)||this.nextSeqByCall.set(t.call_id,0),t.seq===void 0){this.callEventBuffer.push(e);return}var n=this.nextSeqByCall.get(t.call_id)||0;if(t.seq!==n){this.toDeviceEventBuffers.has(t.call_id)||this.toDeviceEventBuffers.set(t.call_id,[]);var r=this.toDeviceEventBuffers.get(t.call_id),i=r.findIndex(e=>e.getContent().seq>t.seq);i===-1?r.push(e):r.splice(i,0,e)}else{var a=t.call_id;this.callEventBuffer.push(e),this.nextSeqByCall.set(a,t.seq+1);for(var o=this.toDeviceEventBuffers.get(a),s=o&&o.shift();s&&s.getContent().seq===this.nextSeqByCall.get(a);)this.callEventBuffer.push(s),this.nextSeqByCall.set(a,s.getContent().seq+1),s=o.shift()}}),this.client=e,this.calls=new Map,this.callEventBuffer=[],this.candidateEventsByCall=new Map}start(){this.client.on(Z.Sync,this.onSync),this.client.on(z.Timeline,this.onRoomTimeline),this.client.on(Z.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.removeListener(Z.Sync,this.onSync),this.client.removeListener(z.Timeline,this.onRoomTimeline),this.client.removeListener(Z.ToDeviceEvent,this.onToDeviceEvent)}evaluateEventBuffer(e){var t=this;return C(function*(){yield Promise.all(e.map(e=>t.client.decryptEventIfNeeded(e)));var n=e.filter(e=>{var t=e.getType();return t.startsWith(`m.call.`)||t.startsWith(`org.matrix.call.`)}),r=new Set;for(var i of n){var a=i.getType();(a===E.CallAnswer||a===E.CallHangup)&&r.add(i.getContent().call_id)}for(var o of n){var s=o.getType(),c=o.getContent().call_id;if(!(s===E.CallInvite&&r.has(c)))try{yield t.handleCallEvent(o)}catch(e){w.error(`CallEventHandler evaluateEventBuffer() caught exception handling call event`,e)}}})()}handleCallEvent(e){var t=this;return C(function*(){var n;t.client.emit(Z.ReceivedVoipEvent,e);var r=e.getContent(),i=e.getRoomId()||((n=t.client.groupCallEventHandler.getGroupCallById(r.conf_id))==null||(n=n.room)==null?void 0:n.roomId),a=r.conf_id,o=e.getType(),s=e.getSender(),c=r.call_id?t.calls.get(r.call_id):void 0,l,u;if(a){if(u=t.client.groupCallEventHandler.getGroupCallById(a),!u){w.warn(`CallEventHandler handleCallEvent() could not find a group call - ignoring event (groupCallId=${a}, type=${o})`);return}if(l=r.device_id,!l){w.warn(`CallEventHandler handleCallEvent() could not find a device id - ignoring event (senderId=${s})`),u.emit(H.Error,new sM(s));return}if(r.dest_session_id!==t.client.getSessionId()){w.warn(`CallEventHandler handleCallEvent() call event does not match current session id - ignoring`);return}}var d=s===t.client.credentials.userId&&(l===void 0||l===t.client.getDeviceId());if(i){if(o===E.CallInvite){if(d||e.getLocalAge()>r.lifetime-Aj||c&&c.state===W.Ended||(c&&w.warn(`CallEventHandler handleCallEvent() already has a call but got an invite - clobbering (callId=${r.call_id})`),r.invitee&&r.invitee!==t.client.getUserId()))return;var f=(t.client.getTurnServersExpiry()??0)-Date.now();if(w.info(`CallEventHandler handleCallEvent() current turn creds expire in `+f+` ms`),c=OM(t.client,i,{forceTURN:t.client.forceTURN,opponentDeviceId:l,groupCallId:a,opponentSessionId:r.sender_session_id})??void 0,!c){w.log(`CallEventHandler handleCallEvent() this client does not support WebRTC (callId=${r.call_id})`);return}c.callId=r.call_id;var p=u?.getGroupCallStats();p&&c.initStats(p);try{yield c.initWithInvite(e)}catch(e){if(e instanceof xM)if(e.code===aM.UnknownDevice){var m;(m=u)==null||m.emit(H.Error,e)}else w.error(e)}if(t.calls.set(c.callId,c),t.candidateEventsByCall.get(c.callId))for(var h of t.candidateEventsByCall.get(c.callId))c.onRemoteIceCandidatesReceived(h);var g;for(var _ of t.calls.values()){var v=[W.WaitLocalMedia,W.CreateOffer,W.InviteSent].includes(_.state);if(c.roomId===_.roomId&&_.direction===mM.Outbound&&c.getOpponentMember()?.userId===_.invitee&&v){g=_;break}}g?g.callId>c.callId?(w.log(`CallEventHandler handleCallEvent() detected glare - answering incoming call and canceling outgoing call (incomingId=${c.callId}, outgoingId=${g.callId})`),g.replacedBy(c)):(w.log(`CallEventHandler handleCallEvent() detected glare - hanging up incoming call (incomingId=${c.callId}, outgoingId=${g.callId})`),c.hangup(q.Replaced,!0)):t.client.emit(jj.Incoming,c);return}else if(o===E.CallCandidates){if(d)return;c?c.onRemoteIceCandidatesReceived(e):(t.candidateEventsByCall.has(r.call_id)||t.candidateEventsByCall.set(r.call_id,[]),t.candidateEventsByCall.get(r.call_id).push(e));return}else if([E.CallHangup,E.CallReject].includes(o)){c?c.state!==W.Ended&&(o===E.CallHangup?c.onHangupReceived(r):c.onRejectReceived(r),c.state===W.Ended&&t.calls.delete(r.call_id)):(c=OM(t.client,i,{opponentDeviceId:l,opponentSessionId:r.sender_session_id})??void 0,c&&(c.callId=r.call_id,c.initWithHangup(e),t.calls.set(r.call_id,c)));return}if(!c||!c.hasPeerConnection){w.info(`CallEventHandler handleCallEvent() discarding possible call event as we don't have a call (type=${o})`);return}if(e.getContent().party_id!==c.ourPartyId)switch(o){case E.CallAnswer:d?c.state===W.Ringing&&c.onAnsweredElsewhere(r):c.onAnswerReceived(e);break;case E.CallSelectAnswer:c.onSelectAnswerReceived(e);break;case E.CallNegotiate:c.onNegotiateReceived(e);break;case E.CallAssertedIdentity:case E.CallAssertedIdentityPrefix:c.onAssertedIdentityReceived(e);break;case E.CallSDPStreamMetadataChanged:case E.CallSDPStreamMetadataChangedPrefix:c.onSDPStreamMetadataChangedReceived(e);break}}})()}},Nj=function(e){return e.Incoming=`GroupCall.incoming`,e.Outgoing=`GroupCall.outgoing`,e.Ended=`GroupCall.ended`,e.Participants=`GroupCall.participants`,e}({}),Pj=class{constructor(e){this.client=e,h(this,`groupCalls`,new Map),h(this,`roomDeferreds`,new Map),h(this,`onRoomsChanged`,e=>{this.createGroupCallForRoom(e)}),h(this,`onRoomStateChanged`,(e,t)=>{if(e.getType()===E.GroupCallPrefix){var n=e.getStateKey(),r=e.getContent(),i=this.groupCalls.get(t.roomId);!i&&!r[`m.terminated`]&&!e.isRedacted()?this.createGroupCallFromRoomStateEvent(e):i&&i.groupCallId===n?r[`m.terminated`]||e.isRedacted()?i.terminate(!1):r[`m.type`]!==i.type&&w.warn(`GroupCallEventHandler onRoomStateChanged() currently does not support changing type (roomId=${t.roomId})`):i&&i.groupCallId!==n&&w.warn(`GroupCallEventHandler onRoomStateChanged() currently does not support multiple calls (roomId=${t.roomId})`)}})}start(){var e=this;return C(function*(){e.client.getSyncState()!==B.Syncing&&(w.debug(`GroupCallEventHandler start() waiting for client to start syncing`),yield new Promise(t=>{var n=()=>{if(e.client.getSyncState()===B.Syncing)return e.client.off(Z.Sync,n),t()};e.client.on(Z.Sync,n)}));for(var t of e.client.getRooms())e.createGroupCallForRoom(t);e.client.on(Z.Room,e.onRoomsChanged),e.client.on(j.Events,e.onRoomStateChanged)})()}stop(){this.client.removeListener(Z.Room,this.onRoomsChanged),this.client.removeListener(j.Events,this.onRoomStateChanged)}getRoomDeferred(e){var t=this.roomDeferreds.get(e);if(t===void 0){var n;t={prom:new Promise(e=>{n=e})},t.resolve=n,this.roomDeferreds.set(e,t)}return t}waitUntilRoomReadyForGroupCalls(e){return this.getRoomDeferred(e).prom}getGroupCallById(e){return[...this.groupCalls.values()].find(t=>t.groupCallId===e)}createGroupCallForRoom(e){var t=e.currentState.getStateEvents(E.GroupCallPrefix);for(var n of t.sort((e,t)=>t.getTs()-e.getTs()))if(!(n.getContent()[`m.terminated`]||n.isRedacted())){w.debug(`GroupCallEventHandler createGroupCallForRoom() choosing group call from possible calls (stateKey=${n.getStateKey()}, ts=${n.getTs()}, roomId=${e.roomId}, numOfPossibleCalls=${t.length})`),this.createGroupCallFromRoomStateEvent(n);break}this.getRoomDeferred(e.roomId).resolve()}createGroupCallFromRoomStateEvent(e){var t=e.getRoomId(),n=e.getContent(),r=this.client.getRoom(t);if(!r){w.warn(`GroupCallEventHandler createGroupCallFromRoomStateEvent() couldn't find room for call (roomId=${t})`);return}var i=e.getStateKey(),a=n[`m.type`];if(!Object.values(nM).includes(a)){w.warn(`GroupCallEventHandler createGroupCallFromRoomStateEvent() received invalid call type (type=${a}, roomId=${t})`);return}var o=n[`m.intent`];if(!Object.values(tM).includes(o)){w.warn(`Received invalid group call intent (type=${a}, roomId=${t})`);return}var s=!!n[`io.element.ptt`],c;if(n!=null&&n.dataChannelsEnabled&&n!=null&&n.dataChannelOptions){var l=n.dataChannelOptions;c={ordered:l.ordered,maxPacketLifeTime:l.maxPacketLifeTime,maxRetransmits:l.maxRetransmits,protocol:l.protocol}}var u=new uM(this.client,r,a,s,o,i,n?.dataChannelsEnabled||this.client.isVoipWithNoMediaAllowed,c,this.client.isVoipWithNoMediaAllowed,this.client.useLivekitForGroupCalls,n[`io.element.livekit_service_url`]);return this.groupCalls.set(r.roomId,u),this.client.emit(Nj.Incoming,u),u}},Fj=class{constructor(){h(this,`bandwidth`,{}),h(this,`bitrate`,{}),h(this,`packetLoss`,{}),h(this,`transport`,[])}},Ij=class{static buildBandwidthReport(e){var t=e.availableIncomingBitrate,n=e.availableOutgoingBitrate;return{download:t?Math.round(t/1e3):0,upload:n?Math.round(n/1e3):0}}},Lj=class{static buildReport(e,t,n,r){var i=e?.get(t.localCandidateId),a=e?.get(t.remoteCandidateId);if(a&&i){var o=`${a.ip===void 0?a.address:a.ip}:${a.port}`,s=`${i.ip===void 0?i.address:i.ip}:${i.port}`,c=a.protocol;n.some(e=>e.ip===o&&e.type===c&&e.localIp===s)||n.push({ip:o,type:c,localIp:s,isFocus:r,localCandidateType:i.candidateType,remoteCandidateType:a.candidateType,networkType:i.networkType,rtt:t.currentRoundTripTime?t.currentRoundTripTime*1e3:NaN})}return n}},Rj=class{constructor(){h(this,`ssrcToMid`,{local:new Map,remote:new Map})}findMidBySsrc(e,t){var n;return this.ssrcToMid[t].forEach((t,r)=>{if(t.find(t=>t==e)){n=r;return}}),n}parse(e,t){var n=(0,lj.parse)(e),r=new Map;n.media.forEach(e=>{if(e.mid&&e.type===`video`||e.type===`audio`){var t,n=[];(t=e.ssrcs)==null||t.forEach(e=>{e.attribute===`cname`&&n.push(`${e.id}`)}),r.set(`${e.mid}`,n)}}),this.ssrcToMid[t]=r}getSsrcToMidMap(e){return this.ssrcToMid[e]}},zj=class{constructor(e){this.pc=e}getLocalTracks(e){return this.pc.getTransceivers().filter(e=>e.currentDirection===`sendonly`||e.currentDirection===`sendrecv`).filter(e=>e.sender!==null).map(e=>e.sender).map(e=>e.track).filter(t=>t!==null&&t.kind===e)}getTackById(e){return this.pc.getTransceivers().map(t=>{if(t?.sender.track!==null&&t.sender.track.id===e)return t.sender.track;if(t?.receiver.track!==null&&t.receiver.track.id===e)return t.receiver.track}).find(e=>e!==void 0)}getLocalTrackIdByMid(e){var t,n=this.pc.getTransceivers().find(t=>t.mid===e);return n==null||(t=n.sender)==null||(t=t.track)==null?void 0:t.id}getRemoteTrackIdByMid(e){var t,n=this.pc.getTransceivers().find(t=>t.mid===e);return n==null||(t=n.receiver)==null||(t=t.track)==null?void 0:t.id}getActiveSimulcastStreams(){return 3}getTransceiverByTrackId(e){return this.pc.getTransceivers().find(t=>t.receiver.track.id===e||t.sender.track!==null&&t.sender.track.id===e)}},Bj=class{constructor(e,t,n){this.trackId=e,this.type=t,this.kind=n,h(this,`loss`,{packetsTotal:0,packetsLost:0,isDownloadStream:!1}),h(this,`bitrate`,{download:0,upload:0}),h(this,`resolution`,{width:-1,height:-1}),h(this,`audioConcealment`,{concealedAudio:0,totalAudioDuration:0}),h(this,`framerate`,0),h(this,`jitter`,0),h(this,`codec`,``),h(this,`isAlive`,!0),h(this,`isMuted`,!1),h(this,`isEnabled`,!0)}getType(){return this.type}setLoss(e){this.loss=e}getLoss(){return this.loss}setResolution(e){this.resolution=e}getResolution(){return this.resolution}setFramerate(e){this.framerate=e}getFramerate(){return this.framerate}setBitrate(e){this.bitrate=e}getBitrate(){return this.bitrate}setCodec(e){return this.codec=e,!0}getCodec(){return this.codec}resetBitrate(){this.bitrate={download:0,upload:0}}set alive(e){this.isAlive=e}get alive(){return this.isAlive}set muted(e){this.isMuted=e}get muted(){return this.isMuted}set enabled(e){this.isEnabled=e}get enabled(){return this.isEnabled}setJitter(e){this.jitter=e}getJitter(){return this.jitter}setAudioConcealment(e,t){this.audioConcealment.concealedAudio=e,this.audioConcealment.totalAudioDuration=t}getAudioConcealment(){return this.audioConcealment}},Vj=class{constructor(e,t){this.mediaSsrcHandler=e,this.mediaTrackHandler=t,h(this,`track2stats`,new Map)}findTrack2Stats(e,t){var n;if(e.trackIdentifier)n=e.trackIdentifier;else if(e.mid)n=t===`remote`?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid);else if(e.ssrc){if(!this.mediaSsrcHandler.findMidBySsrc(e.ssrc,t))return;n=t===`remote`?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid)}if(n){var r=this.track2stats.get(n);if(!r){var i=this.mediaTrackHandler.getTackById(n);if(i!==void 0){var a=i.kind===`audio`?i.kind:`video`;r=new Bj(n,t,a),this.track2stats.set(n,r)}else return}return r}}findLocalVideoTrackStats(e){if(this.mediaTrackHandler.getLocalTracks(`video`).length!==0)return this.findTrack2Stats(e,`local`)}getTrack2stats(){return this.track2stats}findTransceiverByTrackId(e){return this.mediaTrackHandler.getTransceiverByTrackId(e)}},Hj=class{static getNonNegativeValue(e){var t=e;return typeof t!=`number`&&(t=Number(t)),isNaN(t)?0:Math.max(0,t)}},Uj=class e{static buildFramerateResolution(e,t){var n={height:t.frameHeight,width:t.frameWidth},r=t.framesPerSecond;n.height&&n.width&&e.setResolution(n),e.setFramerate(Math.round(r||0))}static calculateSimulcastFramerate(e,t,n,r){var i=e.getFramerate();if(!i){if(n){var a=t.timestamp-n.timestamp;a>0&&t.framesSent&&(i=(t.framesSent-n.framesSent)/a*1e3)}if(!i)return}i=r?Math.round(i/r):0,e.setFramerate(i)}static buildCodec(e,t,n){var r=e?.get(n.codecId);if(r){var i=r.mimeType.split(`/`)[1];i&&t.setCodec(i)}}static buildBitrateReceived(t,n,r){t.setBitrate({download:e.calculateBitrate(n.bytesReceived,r.bytesReceived,n.timestamp,r.timestamp),upload:0})}static buildBitrateSend(e,t,n){e.setBitrate({download:0,upload:this.calculateBitrate(t.bytesSent,n.bytesSent,t.timestamp,n.timestamp)})}static buildPacketsLost(e,t,n){var r=t.type===`outbound-rtp`?`packetsSent`:`packetsReceived`,i=t[r];(!i||i<0)&&(i=0);var a=Hj.getNonNegativeValue(n[r]),o=Math.max(0,i-a),s=Hj.getNonNegativeValue(t.packetsLost),c=Hj.getNonNegativeValue(n.packetsLost),l=Math.max(0,s-c);e.setLoss({packetsTotal:o+l,packetsLost:l,isDownloadStream:t.type!==`outbound-rtp`})}static calculateBitrate(e,t,n,r){var i=Hj.getNonNegativeValue(e),a=Hj.getNonNegativeValue(t),o=Math.max(0,i-a),s=n-r,c=0;return s>0&&(c=Math.round(o*8/s)),c}static setTrackStatsState(e,t){var n;if(t===void 0){e.alive=!1;return}var r=e.getType()===`remote`?t.receiver.track:t==null||(n=t.sender)==null?void 0:n.track;if(r==null){e.alive=!1;return}if(r.readyState===`ended`){e.alive=!1;return}e.muted=r.muted,e.enabled=r.enabled,e.alive=!0}static buildTrackSummary(e){var t={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},n={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},r=e.filter(e=>e.getType()===`remote`),i=r.filter(e=>e.kind===`audio`);return r.forEach(e=>{var r=e.kind===`video`?t:n;r.count++,e.alive&&e.muted&&r.muted++,r.maxJitter<e.getJitter()&&(r.maxJitter=e.getJitter()),r.maxPacketLoss<e.getLoss().packetsLost&&(r.maxPacketLoss=e.getLoss().packetsLost),i.length>0&&(r.concealedAudio+=e.getAudioConcealment()?.concealedAudio,r.totalAudio+=e.getAudioConcealment()?.totalAudioDuration)}),{audioTrackSummary:n,videoTrackSummary:t}}static buildJitter(e,t){if(t.type===`inbound-rtp`){var n=t?.jitter;if(n!==void 0){var r=Hj.getNonNegativeValue(n);e.setJitter(Math.round(r*1e3))}else e.setJitter(-1)}}static buildAudioConcealment(e,t){if(t.type===`inbound-rtp`){var n=1e3*t?.totalSamplesDuration/t?.totalSamplesReceived*t?.concealedSamples,r=1e3*t?.totalSamplesDuration;e.setAudioConcealment(n,r)}}},Wj=class e{static build(t){var n={},r={download:0,upload:0},i={download:0,upload:0},a=0,o=0,s={local:new Map,remote:new Map},c={local:new Map,remote:new Map},l={local:new Map,remote:new Map},u=new Map,d=new Map,f=0,p=0,m=0,h=0,g=0,_=0;for(var v of t){var y=x(v,2),b=y[0],S=y[1],C=S.getLoss(),ee=C.isDownloadStream?`download`:`upload`;if(r[ee]+=C.packetsTotal,i[ee]+=C.packetsLost,a+=S.getBitrate().download,o+=S.getBitrate().upload,S.kind===`audio`){var te=S.getAudioConcealment();g+=te.concealedAudio,_+=te.totalAudioDuration,f+=S.getBitrate().download,p+=S.getBitrate().upload}else m+=S.getBitrate().download,h+=S.getBitrate().upload;s[S.getType()].set(b,S.getResolution()),c[S.getType()].set(b,S.getFramerate()),l[S.getType()].set(b,S.getCodec()),S.getType()===`remote`&&(u.set(b,S.getJitter()),S.kind===`audio`&&d.set(b,S.getAudioConcealment())),S.resetBitrate()}return n.bitrate={upload:o,download:a},n.bitrate.audio={upload:p,download:f},n.bitrate.video={upload:h,download:m},n.packetLoss={total:e.calculatePacketLoss(i.download+i.upload,r.download+r.upload),download:e.calculatePacketLoss(i.download,r.download),upload:e.calculatePacketLoss(i.upload,r.upload)},n.audioConcealment=d,n.totalAudioConcealment={concealedAudio:g,totalAudioDuration:_},n.framerate=c,n.resolution=s,n.codec=l,n.jitter=u,n}static calculatePacketLoss(e,t){return!t||t<=0||!e||e<=0?0:Math.round(e/t*100)}},Gj=class e{static buildCallFeedReport(t,n,r){var i=r.getTransceivers(),a=[];return i.forEach(t=>{var n,r=(n=t.sender)!=null&&n.track?e.buildTrackStats(t.sender.track,`sender`):null,i=e.buildTrackStats(t.receiver.track,`receiver`);a.push({mid:t.mid==null?`null`:t.mid,direction:t.direction,currentDirection:t.currentDirection==null?`null`:t.currentDirection,sender:r,receiver:i})}),{callId:t,opponentMemberId:n,transceiver:a,callFeeds:[]}}static buildTrackStats(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`--`,n=e.getSettings()?.deviceId,r=e.getConstraints()?.deviceId;return{id:e.id,kind:e.kind,settingDeviceId:n??`unknown`,constrainDeviceId:r??`unknown`,muted:e.muted,enabled:e.enabled,readyState:e.readyState,label:t}}static expandCallFeedReport(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`unknown`;return n.forEach(n=>{var i=n.stream.getAudioTracks(),a=n.stream.getVideoTracks(),o=i.length>0?e.buildTrackStats(n.stream.getAudioTracks()[0],n.purpose):null,s=a.length>0?e.buildTrackStats(n.stream.getVideoTracks()[0],n.purpose):null,c={stream:n.stream.id,type:n.isLocal()?`local`:`remote`,audio:o,video:s,purpose:n.purpose,prefix:r,isVideoMuted:n.isVideoMuted(),isAudioMuted:n.isAudioMuted()};t.callFeeds.push(c)}),t}};function Kj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function qj(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Kj(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kj(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Jj=class{constructor(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;this.callId=e,this.opponentMemberId=t,this.pc=n,this.emitter=r,this.isFocus=i,h(this,`isActive`,!0),h(this,`previousStatsReport`,void 0),h(this,`currentStatsReport`,void 0),h(this,`connectionStats`,new Fj),h(this,`trackStats`,void 0),n.addEventListener(`signalingstatechange`,this.onSignalStateChange.bind(this)),this.trackStats=new Vj(new Rj,new zj(n))}processStats(e,t){var n=this;return C(function*(){var r={isFirstCollection:n.previousStatsReport===void 0,receivedMedia:0,receivedAudioMedia:0,receivedVideoMedia:0,audioTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0},videoTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0}};if(n.isActive){var i=n.pc.getStats();if(typeof i?.then==`function`)return i.then(i=>{n.currentStatsReport=typeof i?.result==`function`?i.result():i;try{n.processStatsReport(e,t)}catch(e){return n.handleError(e),r}n.previousStatsReport=n.currentStatsReport,r.receivedMedia=n.connectionStats.bitrate.download,r.receivedAudioMedia=n.connectionStats.bitrate.audio?.download||0,r.receivedVideoMedia=n.connectionStats.bitrate.video?.download||0;var a=Uj.buildTrackSummary(Array.from(n.trackStats.getTrack2stats().values()));return qj(qj({},r),{},{audioTrackSummary:a.audioTrackSummary,videoTrackSummary:a.videoTrackSummary})}).catch(e=>(n.handleError(e),r));n.isActive=!1}return Promise.resolve(r)})()}processStatsReport(e,t){var n,r=new Map;r.callId=this.callId,r.opponentMemberId=this.opponentMemberId,(n=this.currentStatsReport)==null||n.forEach(e=>{var t=this.previousStatsReport?this.previousStatsReport.get(e.id):null;if(e.type===`candidate-pair`&&e.nominated&&e.state===`succeeded`)this.connectionStats.bandwidth=Ij.buildBandwidthReport(e),this.connectionStats.transport=Lj.buildReport(this.currentStatsReport,e,this.connectionStats.transport,this.isFocus);else if(e.type===`inbound-rtp`||e.type===`outbound-rtp`){var n=this.trackStats.findTrack2Stats(e,e.type===`inbound-rtp`?`remote`:`local`);if(!n)return;if(t&&Uj.buildPacketsLost(n,e,t),e.type===`inbound-rtp`){Uj.buildFramerateResolution(n,e),t&&Uj.buildBitrateReceived(n,e,t);var i=this.trackStats.findTransceiverByTrackId(n.trackId);Uj.setTrackStatsState(n,i),Uj.buildJitter(n,e),Uj.buildAudioConcealment(n,e)}else t&&(r.set(n.trackId,Hj.getNonNegativeValue(e.bytesSent)),Uj.buildBitrateSend(n,e,t));Uj.buildCodec(this.currentStatsReport,n,e)}else if(e.type===`track`&&e.kind===`video`&&!e.remoteSource){var a=this.trackStats.findLocalVideoTrackStats(e);if(!a)return;Uj.buildFramerateResolution(a,e),Uj.calculateSimulcastFramerate(a,e,t,this.trackStats.mediaTrackHandler.getActiveSimulcastStreams())}}),this.emitter.emitByteSendReport(r),this.emitter.emitCallFeedReport(Gj.buildCallFeedReport(this.callId,this.opponentMemberId,this.pc)),this.processAndEmitConnectionStatsReport()}setActive(e){this.isActive=e}getActive(){return this.isActive}handleError(e){this.isActive=!1,w.warn(`CallStatsReportGatherer ${this.callId} processStatsReport fails and set to inactive ${e}`)}processAndEmitConnectionStatsReport(){var e=Wj.build(this.trackStats.getTrack2stats());e.callId=this.callId,e.opponentMemberId=this.opponentMemberId,this.connectionStats.bandwidth=e.bandwidth,this.connectionStats.bitrate=e.bitrate,this.connectionStats.packetLoss=e.packetLoss,this.emitter.emitConnectionStatsReport(qj(qj({},e),{},{transport:this.connectionStats.transport})),this.connectionStats.transport=[]}stopProcessingStats(){}onSignalStateChange(){this.pc.signalingState===`stable`&&(this.pc.currentRemoteDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentRemoteDescription.sdp,`remote`),this.pc.currentLocalDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentLocalDescription.sdp,`local`))}setOpponentMemberId(e){this.opponentMemberId=e}},Yj=function(e){return e.CONNECTION_STATS=`StatsReport.connection_stats`,e.CALL_FEED_REPORT=`StatsReport.call_feed_report`,e.BYTE_SENT_STATS=`StatsReport.byte_sent_stats`,e.SUMMARY_STATS=`StatsReport.summary_stats`,e}({}),Xj=class extends O{emitByteSendReport(e){this.emit(Yj.BYTE_SENT_STATS,e)}emitConnectionStatsReport(e){this.emit(Yj.CONNECTION_STATS,e)}emitCallFeedReport(e){this.emit(Yj.CALL_FEED_REPORT,e)}emitSummaryStatsReport(e){this.emit(Yj.SUMMARY_STATS,e)}},Zj=class{constructor(e){this.emitter=e}build(e){var t=e.filter(e=>!e.isFirstCollection),n=t.length,r=e.length;if(n!==0){var i={receivedAudio:0,receivedVideo:0,receivedMedia:0,concealedAudio:0,totalAudio:0},a=0,o=0;t.forEach(e=>{this.countTrackListReceivedMedia(i,e),this.countConcealedAudio(i,e),a=this.buildMaxJitter(a,e),o=this.buildMaxPacketLoss(o,e)});var s=5,c={percentageReceivedMedia:Number((i.receivedMedia/n).toFixed(s)),percentageReceivedVideoMedia:Number((i.receivedVideo/n).toFixed(s)),percentageReceivedAudioMedia:Number((i.receivedAudio/n).toFixed(s)),maxJitter:a,maxPacketLoss:o,percentageConcealedAudio:Number(i.totalAudio>0?(i.concealedAudio/i.totalAudio).toFixed(s):0),peerConnections:r};this.emitter.emitSummaryStatsReport(c)}}static extendSummaryReport(e,t){var n=[],r=[];for(var i of t){r.push(i);for(var a of i[1])n.push(a)}e.opponentDevicesInCall=Math.max(0,n.length-1),e.opponentUsersInCall=Math.max(0,r.length-1),e.diffDevicesToPeerConnections=Math.max(0,n.length-1)-e.peerConnections,e.ratioPeerConnectionToDevices=Math.max(0,n.length-1)==0?0:e.peerConnections/(n.length-1)}countTrackListReceivedMedia(e,t){var n=!1,r=!1;(t.receivedAudioMedia>0||t.audioTrackSummary.count===0)&&(e.receivedAudio++,n=!0),(t.receivedVideoMedia>0||t.videoTrackSummary.count===0||t.videoTrackSummary.muted>0&&t.videoTrackSummary.muted===t.videoTrackSummary.count)&&(e.receivedVideo++,r=!0),r&&n&&e.receivedMedia++}buildMaxJitter(e,t){return e<t.videoTrackSummary.maxJitter&&(e=t.videoTrackSummary.maxJitter),e<t.audioTrackSummary.maxJitter&&(e=t.audioTrackSummary.maxJitter),e}buildMaxPacketLoss(e,t){return e<t.videoTrackSummary.maxPacketLoss&&(e=t.videoTrackSummary.maxPacketLoss),e<t.audioTrackSummary.maxPacketLoss&&(e=t.audioTrackSummary.maxPacketLoss),e}countConcealedAudio(e,t){e.concealedAudio+=t.audioTrackSummary.concealedAudio,e.totalAudio+=t.audioTrackSummary.totalAudio}},Qj=class{constructor(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e4;this.groupCallId=e,this.userId=t,this.interval=n,h(this,`timer`,void 0),h(this,`gatherers`,new Map),h(this,`reports`,new Xj),h(this,`summaryStatsReportGatherer`,new Zj(this.reports))}start(){this.timer===void 0&&this.interval>0&&(this.timer=setInterval(()=>{this.processStats()},this.interval))}stop(){this.timer!==void 0&&(clearInterval(this.timer),this.gatherers.forEach(e=>e.stopProcessingStats()))}hasStatsReportGatherer(e){return this.gatherers.has(e)}addStatsReportGatherer(e,t,n){return this.hasStatsReportGatherer(e)?!1:(this.gatherers.set(e,new Jj(e,t,n,this.reports)),!0)}removeStatsReportGatherer(e){return this.gatherers.delete(e)}getStatsReportGatherer(e){return this.hasStatsReportGatherer(e)?this.gatherers.get(e):void 0}updateOpponentMember(e,t){var n;(n=this.getStatsReportGatherer(e))==null||n.setOpponentMemberId(t)}processStats(){var e=[];this.gatherers.forEach(t=>{e.push(t.processStats(this.groupCallId,this.userId))}),Promise.all(e).then(e=>this.summaryStatsReportGatherer.build(e)).catch(e=>{w.error(`Could not build summary stats report`,e)})}setInterval(e){this.interval=e}};function $j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function eM(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?$j(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$j(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var tM=function(e){return e.Ring=`m.ring`,e.Prompt=`m.prompt`,e.Room=`m.room`,e}({}),nM=function(e){return e.Video=`m.video`,e.Voice=`m.voice`,e}({}),rM=function(e){return e.CallEnded=`call_ended`,e}({}),H=function(e){return e.GroupCallStateChanged=`group_call_state_changed`,e.ActiveSpeakerChanged=`active_speaker_changed`,e.CallsChanged=`calls_changed`,e.UserMediaFeedsChanged=`user_media_feeds_changed`,e.ScreenshareFeedsChanged=`screenshare_feeds_changed`,e.LocalScreenshareStateChanged=`local_screenshare_state_changed`,e.LocalMuteStateChanged=`local_mute_state_changed`,e.ParticipantsChanged=`participants_changed`,e.Error=`group_call_error`,e}({}),iM=function(e){return e.ConnectionStats=`GroupCall.connection_stats`,e.ByteSentStats=`GroupCall.byte_sent_stats`,e.SummaryStats=`GroupCall.summary_stats`,e.CallFeedStats=`GroupCall.call_feed_stats`,e}({}),aM=function(e){return e.NoUserMedia=`no_user_media`,e.UnknownDevice=`unknown_device`,e.PlaceCallFailed=`place_call_failed`,e}({}),oM=class extends Error{constructor(e,t,n){n?(super(t+`: `+n),h(this,`code`,void 0)):(super(t),h(this,`code`,void 0)),this.code=e}},sM=class extends oM{constructor(e){super(aM.UnknownDevice,`No device found for `+e),this.userId=e}},U=function(e){return e.LocalCallFeedUninitialized=`local_call_feed_uninitialized`,e.InitializingLocalCallFeed=`initializing_local_call_feed`,e.LocalCallFeedInitialized=`local_call_feed_initialized`,e.Entered=`entered`,e.Ended=`ended`,e}({}),cM=1e3*60*60;function lM(e){return e.getOpponentMember()?.userId||e.invitee||null}var uM=class extends O{constructor(e,t,n,r,i,a,o,s,c){var l=arguments.length>9&&arguments[9]!==void 0?arguments[9]:!1,u=arguments.length>10?arguments[10]:void 0;super(),this.client=e,this.room=t,this.type=n,this.isPtt=r,this.intent=i,this.dataChannelsEnabled=o,this.dataChannelOptions=s,this.useLivekit=l,h(this,`activeSpeakerInterval`,1e3),h(this,`retryCallInterval`,5e3),h(this,`participantTimeout`,1e3*15),h(this,`pttMaxTransmitTime`,1e3*20),h(this,`activeSpeaker`,void 0),h(this,`localCallFeed`,void 0),h(this,`localScreenshareFeed`,void 0),h(this,`localDesktopCapturerSourceId`,void 0),h(this,`userMediaFeeds`,[]),h(this,`screenshareFeeds`,[]),h(this,`groupCallId`,void 0),h(this,`allowCallWithoutVideoAndAudio`,void 0),h(this,`calls`,new Map),h(this,`callHandlers`,new Map),h(this,`activeSpeakerLoopInterval`,void 0),h(this,`retryCallLoopInterval`,void 0),h(this,`retryCallCounts`,new Map),h(this,`reEmitter`,void 0),h(this,`transmitTimer`,null),h(this,`participantsExpirationTimer`,null),h(this,`resendMemberStateTimer`,null),h(this,`initWithAudioMuted`,!1),h(this,`initWithVideoMuted`,!1),h(this,`initCallFeedPromise`,void 0),h(this,`_livekitServiceURL`,void 0),h(this,`stats`,void 0),h(this,`statsCollectIntervalTime`,0),h(this,`onConnectionStats`,e=>{this.emit(iM.ConnectionStats,{report:e})}),h(this,`onByteSentStats`,e=>{this.emit(iM.ByteSentStats,{report:e})}),h(this,`onSummaryStats`,e=>{Zj.extendSummaryReport(e,this.participants),this.emit(iM.SummaryStats,{report:e})}),h(this,`onCallFeedReport`,e=>{this.localCallFeed&&(e=Gj.expandCallFeedReport(e,[this.localCallFeed],`from-local-feed`));var t=[];this.forEachCall(n=>{n.callId===e.callId&&n.getFeeds().forEach(e=>t.push(e))}),e=Gj.expandCallFeedReport(e,t,`from-call-feed`),this.emit(iM.CallFeedStats,{report:e})}),h(this,`_state`,U.LocalCallFeedUninitialized),h(this,`_participants`,new Map),h(this,`_creationTs`,null),h(this,`_enteredViaAnotherSession`,!1),h(this,`onIncomingCall`,e=>{if(e.roomId===this.room.roomId){if(e.state!==W.Ringing){w.warn(`GroupCall ${this.groupCallId} onIncomingCall() incoming call no longer in ringing state - ignoring`);return}if(!e.groupCallId||e.groupCallId!==this.groupCallId){w.log(`GroupCall ${this.groupCallId} onIncomingCall() ignored because it doesn't match the current group call`),e.reject();return}var t=e.getOpponentMember()?.userId;if(t===void 0){w.warn(`GroupCall ${this.groupCallId} onIncomingCall() incoming call with no member - ignoring`);return}if(this.useLivekit){w.info(`Received incoming call whilst in signaling-only mode! Ignoring.`);return}var n=this.calls.get(t)??new Map,r=n.get(e.getOpponentDeviceId());if(r?.callId!==e.callId){w.log(`GroupCall ${this.groupCallId} onIncomingCall() incoming call (userId=${t}, callId=${e.callId})`),r&&r.hangup(q.Replaced,!1),n.set(e.getOpponentDeviceId(),e),this.calls.set(t,n),this.initCall(e);var i=this.getLocalFeeds().map(e=>e.clone());if(!this.callExpected(e))for(var a of i)EM(a.stream.getAudioTracks(),!1),EM(a.stream.getVideoTracks(),!1);e.answerWithCallFeeds(i),this.emit(H.CallsChanged,this.calls)}}}),h(this,`onRetryCallLoop`,()=>{var e=!1;for(var t of this.participants){var n=x(t,2),r=n[0].userId,i=n[1],a=this.calls.get(r),o=this.retryCallCounts.get(r);for(var s of i){var c=x(s,2),l=c[0],u=c[1],d=a?.get(l),f=o?.get(l)??0;d?.getOpponentSessionId()!==u.sessionId&&this.wantsOutgoingCall(r,l)&&f<3&&(o===void 0&&(o=new Map,this.retryCallCounts.set(r,o)),o.set(l,f+1),e=!0)}}e&&this.placeOutgoingCalls()}),h(this,`onCallFeedsChanged`,e=>{var t=lM(e),n=e.getOpponentDeviceId();if(!t)throw Error(`Cannot change call feeds without user id`);var r=this.getUserMediaFeed(t,n),i=e.remoteUsermediaFeed,a=i!==r;if(this.calls.get(t)?.get(n)?.callId===e.callId){a&&(!r&&i?this.addUserMediaFeed(i):r&&i?this.replaceUserMediaFeed(r,i):r&&!i&&this.removeUserMediaFeed(r));var o=this.getScreenshareFeed(t,n),s=e.remoteScreensharingFeed;s!==o&&(!o&&s?this.addScreenshareFeed(s):o&&s?this.replaceScreenshareFeed(o,s):o&&!s&&this.removeScreenshareFeed(o))}}),h(this,`onCallStateChanged`,(e,t,n)=>{if(t!==W.Ended){var r=this.localCallFeed.isAudioMuted();e.localUsermediaStream&&e.isMicrophoneMuted()!==r&&e.setMicrophoneMuted(r);var i=this.localCallFeed.isVideoMuted();e.localUsermediaStream&&e.isLocalVideoMuted()!==i&&e.setLocalVideoMuted(i);var a=e.getOpponentMember()?.userId;if(t===W.Connected&&a){var o=this.retryCallCounts.get(a);o?.delete(e.getOpponentDeviceId()),o?.size===0&&this.retryCallCounts.delete(a)}}}),h(this,`onCallHangup`,e=>{if(e.hangupReason!==q.Replaced){var t=e.getOpponentMember()?.userId??this.room.getMember(e.invitee).userId,n=this.calls.get(t);n?.get(e.getOpponentDeviceId())===e&&(this.disposeCall(e,e.hangupReason),n.delete(e.getOpponentDeviceId()),n.size===0&&this.calls.delete(t),this.emit(H.CallsChanged,this.calls))}}),h(this,`onCallReplaced`,(e,t)=>{var n=e.getOpponentMember().userId,r=this.calls.get(n);r===void 0&&(r=new Map,this.calls.set(n,r)),e.hangup(q.Replaced,!1),this.initCall(t),r.set(e.getOpponentDeviceId(),t),this.emit(H.CallsChanged,this.calls)}),h(this,`onActiveSpeakerLoop`,()=>{var e=void 0,t=void 0;for(var n of this.userMediaFeeds)if(!(n.isLocal()&&this.userMediaFeeds.length>1)){var r=n.speakingVolumeSamples.reduce((e,t)=>e+Math.max(t,-60))/n.speakingVolumeSamples.length;(!e||r>e)&&(e=r,t=n)}t&&this.activeSpeaker!==t&&e&&e>-60&&(this.activeSpeaker=t,this.emit(H.ActiveSpeakerChanged,this.activeSpeaker))}),h(this,`onRoomState`,()=>this.updateParticipants()),h(this,`onParticipantsChanged`,()=>{this.forEachCall(e=>{var t=this.callExpected(e);for(var n of e.getLocalFeeds())EM(n.stream.getAudioTracks(),!n.isAudioMuted()&&t),EM(n.stream.getVideoTracks(),!n.isVideoMuted()&&t)}),this.state===U.Entered&&!this.useLivekit&&this.placeOutgoingCalls()}),h(this,`onStateChanged`,(e,t)=>{(e===U.Entered||t===U.Entered||e===U.Ended)&&(this.updateParticipants(),this.updateMemberState().catch(e=>w.error(`GroupCall ${this.groupCallId} onStateChanged() failed to update member state devices"`,e)))}),h(this,`onLocalFeedsChanged`,()=>{this.state===U.Entered&&this.updateMemberState().catch(e=>w.error(`GroupCall ${this.groupCallId} onLocalFeedsChanged() failed to update member state feeds`,e))}),this.reEmitter=new BO(this),this.groupCallId=a??SM(),this._livekitServiceURL=u,this.creationTs=t.currentState.getStateEvents(E.GroupCallPrefix,this.groupCallId)?.getTs()??null,this.updateParticipants(),t.on(j.Update,this.onRoomState),this.on(H.ParticipantsChanged,this.onParticipantsChanged),this.on(H.GroupCallStateChanged,this.onStateChanged),this.on(H.LocalScreenshareStateChanged,this.onLocalFeedsChanged),this.allowCallWithoutVideoAndAudio=!!c}create(){var e=this;return C(function*(){return e.creationTs=Date.now(),e.client.groupCallEventHandler.groupCalls.set(e.room.roomId,e),e.client.emit(Nj.Outgoing,e),yield e.sendCallStateEvent(),e})()}sendCallStateEvent(){var e=this;return C(function*(){var t={"m.intent":e.intent,"m.type":e.type,"io.element.ptt":e.isPtt,dataChannelsEnabled:e.dataChannelsEnabled,dataChannelOptions:e.dataChannelsEnabled?e.dataChannelOptions:void 0};e.livekitServiceURL&&(t[`io.element.livekit_service_url`]=e.livekitServiceURL),yield e.client.sendStateEvent(e.room.roomId,E.GroupCallPrefix,t,e.groupCallId)})()}get livekitServiceURL(){return this._livekitServiceURL}updateLivekitServiceURL(e){return this._livekitServiceURL=e,this.sendCallStateEvent()}get state(){return this._state}set state(e){var t=this._state;e!==t&&(this._state=e,this.emit(H.GroupCallStateChanged,e,t))}get participants(){return this._participants}set participants(e){var t=this._participants,n=(e,t)=>e.sessionId===t.sessionId&&e.screensharing===t.screensharing;uD(e,t,(e,t)=>uD(e,t,n))||(this._participants=e,this.emit(H.ParticipantsChanged,e))}get creationTs(){return this._creationTs}set creationTs(e){this._creationTs=e}get enteredViaAnotherSession(){return this._enteredViaAnotherSession}set enteredViaAnotherSession(e){this._enteredViaAnotherSession=e,this.updateParticipants()}forEachCall(e){for(var t of this.calls.values())for(var n of t.values())e(n)}getLocalFeeds(){var e=[];return this.localCallFeed&&e.push(this.localCallFeed),this.localScreenshareFeed&&e.push(this.localScreenshareFeed),e}hasLocalParticipant(){return this.participants.get(this.room.getMember(this.client.getUserId()))?.has(this.client.getDeviceId())??!1}callExpected(e){var t=lM(e),n=t===null?null:this.room.getMember(t),r=e.getOpponentDeviceId();return n!==null&&r!==void 0&&this.participants.get(n)?.get(r)!==void 0}initLocalCallFeed(){var e=this;return C(function*(){if(e.useLivekit){w.info(`Livekit group call: not starting local call feed.`);return}if(e.state!==U.LocalCallFeedUninitialized)throw Error(`Cannot initialize local call feed in the "${e.state}" state.`);if(e.state=U.InitializingLocalCallFeed,e.initCallFeedPromise)return e.initCallFeedPromise;try{e.initCallFeedPromise=e.initLocalCallFeedInternal(),yield e.initCallFeedPromise}finally{e.initCallFeedPromise=void 0}})()}initLocalCallFeedInternal(){var e=this;return C(function*(){w.log(`GroupCall ${e.groupCallId} initLocalCallFeedInternal() running`);var t;try{t=yield e.client.getMediaHandler().getUserMediaStream(!0,e.type===nM.Video)}catch(n){if(e.allowCallWithoutVideoAndAudio)t=new MediaStream;else throw e.state=U.LocalCallFeedUninitialized,n}if(e._state!==U.InitializingLocalCallFeed)throw e.client.getMediaHandler().stopUserMediaStream(t),Error(`Group call disposed while gathering media stream`);var n=new kj({client:e.client,roomId:e.room.roomId,userId:e.client.getUserId(),deviceId:e.client.getDeviceId(),stream:t,purpose:V.Usermedia,audioMuted:e.initWithAudioMuted||t.getAudioTracks().length===0||e.isPtt,videoMuted:e.initWithVideoMuted||t.getVideoTracks().length===0});EM(t.getAudioTracks(),!n.isAudioMuted()),EM(t.getVideoTracks(),!n.isVideoMuted()),e.localCallFeed=n,e.addUserMediaFeed(n),e.state=U.LocalCallFeedInitialized})()}updateLocalUsermediaStream(e){var t=this;return C(function*(){if(t.localCallFeed){var n=t.localCallFeed.stream;t.localCallFeed.setNewStream(e);var r=t.localCallFeed.isAudioMuted(),i=t.localCallFeed.isVideoMuted();w.log(`GroupCall ${t.groupCallId} updateLocalUsermediaStream() (oldStreamId=${n.id}, newStreamId=${e.id}, micShouldBeMuted=${r}, vidShouldBeMuted=${i})`),EM(e.getAudioTracks(),!r),EM(e.getVideoTracks(),!i),t.client.getMediaHandler().stopUserMediaStream(n)}})()}enter(){var e=this;return C(function*(){if(e.state===U.LocalCallFeedUninitialized)yield e.initLocalCallFeed();else if(e.state!==U.LocalCallFeedInitialized)throw Error(`Cannot enter call in the "${e.state}" state`);w.log(`GroupCall ${e.groupCallId} enter() running`),e.state=U.Entered,e.client.on(jj.Incoming,e.onIncomingCall);for(var t of e.client.callEventHandler.calls.values())e.onIncomingCall(t);e.useLivekit||(e.retryCallLoopInterval=setInterval(e.onRetryCallLoop,e.retryCallInterval),e.activeSpeaker=void 0,e.onActiveSpeakerLoop(),e.activeSpeakerLoopInterval=setInterval(e.onActiveSpeakerLoop,e.activeSpeakerInterval))})()}dispose(){var e;this.localCallFeed&&=(this.removeUserMediaFeed(this.localCallFeed),void 0),this.localScreenshareFeed&&(this.client.getMediaHandler().stopScreensharingStream(this.localScreenshareFeed.stream),this.removeScreenshareFeed(this.localScreenshareFeed),this.localScreenshareFeed=void 0,this.localDesktopCapturerSourceId=void 0),this.client.getMediaHandler().stopAllStreams(),this.transmitTimer!==null&&(clearTimeout(this.transmitTimer),this.transmitTimer=null),this.retryCallLoopInterval!==void 0&&(clearInterval(this.retryCallLoopInterval),this.retryCallLoopInterval=void 0),this.participantsExpirationTimer!==null&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state===U.Entered&&(this.forEachCall(e=>e.hangup(q.UserHangup,!1)),this.activeSpeaker=void 0,clearInterval(this.activeSpeakerLoopInterval),this.retryCallCounts.clear(),clearInterval(this.retryCallLoopInterval),this.client.removeListener(jj.Incoming,this.onIncomingCall),(e=this.stats)==null||e.stop())}leave(){this.dispose(),this.state=U.LocalCallFeedUninitialized}terminate(){var e=arguments,t=this;return C(function*(){var n=e.length>0&&e[0]!==void 0?e[0]:!0;if(t.dispose(),t.room.off(j.Update,t.onRoomState),t.client.groupCallEventHandler.groupCalls.delete(t.room.roomId),t.client.emit(Nj.Ended,t),t.state=U.Ended,n){var r=t.room.currentState.getStateEvents(E.GroupCallPrefix,t.groupCallId);yield t.client.sendStateEvent(t.room.roomId,E.GroupCallPrefix,eM(eM({},r.getContent()),{},{"m.terminated":rM.CallEnded}),t.groupCallId)}})()}isLocalVideoMuted(){return this.localCallFeed?this.localCallFeed.isVideoMuted():!0}isMicrophoneMuted(){return this.localCallFeed?this.localCallFeed.isAudioMuted():!0}setMicrophoneMuted(e){var t=this;return C(function*(){if(!e&&!(yield t.client.getMediaHandler().hasAudioDevice()))return!1;var n=!e&&t.isPtt;t.isPtt&&(!e&&t.isMicrophoneMuted()?t.transmitTimer=setTimeout(()=>{t.setMicrophoneMuted(!0)},t.pttMaxTransmitTime):e&&!t.isMicrophoneMuted()&&(t.transmitTimer!==null&&clearTimeout(t.transmitTimer),t.transmitTimer=null)),t.forEachCall(t=>t.localUsermediaFeed?.setAudioVideoMuted(e,null));var r=function(){var e=C(function*(){var e=[];t.forEachCall(t=>e.push(t.sendMetadataUpdate())),yield Promise.all(e).catch(e=>w.info(`GroupCall ${t.groupCallId} setMicrophoneMuted() failed to send some metadata updates`,e))});return function(){return e.apply(this,arguments)}}();if(n&&(yield r()),t.localCallFeed){if(w.log(`GroupCall ${t.groupCallId} setMicrophoneMuted() (streamId=${t.localCallFeed.stream.id}, muted=${e})`),!(yield t.checkAudioPermissionIfNecessary(e)))return!1;t.localCallFeed.setAudioVideoMuted(e,null),EM(t.localCallFeed.stream.getAudioTracks(),!e)}else w.log(`GroupCall ${t.groupCallId} setMicrophoneMuted() no stream muted (muted=${e})`),t.initWithAudioMuted=e;return t.forEachCall(n=>EM(n.localUsermediaFeed.stream.getAudioTracks(),!e&&t.callExpected(n))),t.emit(H.LocalMuteStateChanged,e,t.isLocalVideoMuted()),n||(yield r()),!0})()}checkAudioPermissionIfNecessary(e){var t=this;return C(function*(){try{if(!e&&t.localCallFeed&&!t.localCallFeed.hasAudioTrack&&(yield t.client.getMediaHandler().getUserMediaStream(!0,!t.localCallFeed.isVideoMuted()))?.getTracks().length===0)return w.log(`GroupCall ${t.groupCallId} setMicrophoneMuted() no device to receive local stream, muted=${e}`),!1}catch{return w.log(`GroupCall ${t.groupCallId} setMicrophoneMuted() no device or permission to receive local stream, muted=${e}`),!1}return!0})()}setLocalVideoMuted(e){var t=this;return C(function*(){if(!e&&!(yield t.client.getMediaHandler().hasVideoDevice()))return!1;if(t.localCallFeed){w.log(`GroupCall ${t.groupCallId} setLocalVideoMuted() (stream=${t.localCallFeed.stream.id}, muted=${e})`);try{var n=yield t.client.getMediaHandler().getUserMediaStream(!0,!e);yield t.updateLocalUsermediaStream(n),t.localCallFeed.setAudioVideoMuted(null,e),EM(t.localCallFeed.stream.getVideoTracks(),!e)}catch{return w.log(`GroupCall ${t.groupCallId} setLocalVideoMuted() no device or permission to receive local stream, muted=${e}`),!1}}else w.log(`GroupCall ${t.groupCallId} setLocalVideoMuted() no stream muted (muted=${e})`),t.initWithVideoMuted=e;var r=[];return t.forEachCall(t=>r.push(t.setLocalVideoMuted(e))),yield Promise.all(r),t.forEachCall(n=>EM(n.localUsermediaFeed.stream.getVideoTracks(),!e&&t.callExpected(n))),t.emit(H.LocalMuteStateChanged,t.isMicrophoneMuted(),e),!0})()}setScreensharingEnabled(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};if(e===n.isScreensharing())return e;if(e)try{w.log(`GroupCall ${n.groupCallId} setScreensharingEnabled() is asking for screensharing permissions`);var i=yield n.client.getMediaHandler().getScreensharingStream(r),a=function*(e){var t=()=>{n.setScreensharingEnabled(!1),e.removeEventListener(`ended`,t)};e.addEventListener(`ended`,t)};for(var o of i.getTracks())yield*a(o);return w.log(`GroupCall ${n.groupCallId} setScreensharingEnabled() granted screensharing permissions. Setting screensharing enabled on all calls`),n.localDesktopCapturerSourceId=r.desktopCapturerSourceId,n.localScreenshareFeed=new kj({client:n.client,roomId:n.room.roomId,userId:n.client.getUserId(),deviceId:n.client.getDeviceId(),stream:i,purpose:V.Screenshare,audioMuted:!1,videoMuted:!1}),n.addScreenshareFeed(n.localScreenshareFeed),n.emit(H.LocalScreenshareStateChanged,!0,n.localScreenshareFeed,n.localDesktopCapturerSourceId),n.forEachCall(e=>e.pushLocalFeed(n.localScreenshareFeed.clone())),!0}catch(e){if(r.throwOnFail)throw e;return w.error(`GroupCall ${n.groupCallId} setScreensharingEnabled() enabling screensharing error`,e),n.emit(H.Error,new oM(aM.NoUserMedia,`Failed to get screen-sharing stream: `,e)),!1}else return n.forEachCall(e=>{e.localScreensharingFeed&&e.removeLocalFeed(e.localScreensharingFeed)}),n.client.getMediaHandler().stopScreensharingStream(n.localScreenshareFeed.stream),n.removeScreenshareFeed(n.localScreenshareFeed),n.localScreenshareFeed=void 0,n.localDesktopCapturerSourceId=void 0,n.emit(H.LocalScreenshareStateChanged,!1,void 0,void 0),!1})()}isScreensharing(){return!!this.localScreenshareFeed}wantsOutgoingCall(e,t){var n=this.client.getUserId(),r=this.client.getDeviceId();return e>=n&&(e!==n||t>r)}placeOutgoingCalls(){var e=this,t=!1,n=function(){r=x(i,2);var n=r[0].userId,a=r[1],o=e.calls.get(n)??new Map,s=function(){c=x(l,2);var r=c[0],i=c[1],a=o.get(r);if(a?.getOpponentSessionId()!==i.sessionId&&e.wantsOutgoingCall(n,r)){t=!0,a!==void 0&&(w.debug(`GroupCall ${e.groupCallId} placeOutgoingCalls() replacing call (userId=${n}, deviceId=${r}, callId=${a.callId})`),a.hangup(q.NewSession,!1));var s=OM(e.client,e.room.roomId,{invitee:n,opponentDeviceId:r,opponentSessionId:i.sessionId,groupCallId:e.groupCallId});s===null?(w.error(`GroupCall ${e.groupCallId} placeOutgoingCalls() failed to create call (userId=${n}, device=${r})`),o.delete(r)):(e.initCall(s),o.set(r,s),w.debug(`GroupCall ${e.groupCallId} placeOutgoingCalls() placing call (userId=${n}, deviceId=${r}, sessionId=${i.sessionId})`),s.placeCallWithCallFeeds(e.getLocalFeeds().map(e=>e.clone()),i.screensharing).then(()=>{e.dataChannelsEnabled&&s.createDataChannel(`datachannel`,e.dataChannelOptions)}).catch(t=>{w.warn(`GroupCall ${e.groupCallId} placeOutgoingCalls() failed to place call (userId=${n})`,t),t instanceof xM&&t.code===aM.UnknownDevice?e.emit(H.Error,t):e.emit(H.Error,new oM(aM.PlaceCallFailed,`Failed to place call to ${n}`)),s.hangup(q.SignallingFailed,!1),o.get(r)===s&&o.delete(r)}))}},c;for(var l of a)s();o.size>0?e.calls.set(n,o):e.calls.delete(n)},r;for(var i of this.participants)n();t&&this.emit(H.CallsChanged,this.calls)}getMemberStateEvents(e){return e===void 0?this.room.currentState.getStateEvents(E.GroupCallMemberPrefix):this.room.currentState.getStateEvents(E.GroupCallMemberPrefix,e)}initCall(e){var t=lM(e);if(!t)throw Error(`Cannot init call without user id`);var n=()=>this.onCallFeedsChanged(e),r=(t,n)=>this.onCallStateChanged(e,t,n),i=this.onCallHangup,a=t=>this.onCallReplaced(e,t),o=this.callHandlers.get(t);o===void 0&&(o=new Map,this.callHandlers.set(t,o)),o.set(e.getOpponentDeviceId(),{onCallFeedsChanged:n,onCallStateChanged:r,onCallHangup:i,onCallReplaced:a}),e.on(K.FeedsChanged,n),e.on(K.State,r),e.on(K.Hangup,i),e.on(K.Replaced,a),e.isPtt=this.isPtt,this.reEmitter.reEmit(e,Object.values(K)),e.initStats(this.getGroupCallStats()),n()}disposeCall(e,t){var n=lM(e),r=e.getOpponentDeviceId();if(!n)throw Error(`Cannot dispose call without user id`);var i=this.callHandlers.get(n),a=i.get(r),o=a.onCallFeedsChanged,s=a.onCallStateChanged,c=a.onCallHangup,l=a.onCallReplaced;if(e.removeListener(K.FeedsChanged,o),e.removeListener(K.State,s),e.removeListener(K.Hangup,c),e.removeListener(K.Replaced,l),i.delete(n),i.size===0&&this.callHandlers.delete(n),e.hangupReason!==q.Replaced){var u=this.getUserMediaFeed(n,r);u&&this.removeUserMediaFeed(u);var d=this.getScreenshareFeed(n,r);d&&this.removeScreenshareFeed(d)}}getUserMediaFeed(e,t){return this.userMediaFeeds.find(n=>n.userId===e&&n.deviceId===t)}addUserMediaFeed(e){this.userMediaFeeds.push(e),e.measureVolumeActivity(!0),this.emit(H.UserMediaFeedsChanged,this.userMediaFeeds)}replaceUserMediaFeed(e,t){var n=this.userMediaFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(n===-1)throw Error(`Couldn't find user media feed to replace`);this.userMediaFeeds.splice(n,1,t),e.dispose(),t.measureVolumeActivity(!0),this.emit(H.UserMediaFeedsChanged,this.userMediaFeeds)}removeUserMediaFeed(e){var t=this.userMediaFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(t===-1)throw Error(`Couldn't find user media feed to remove`);this.userMediaFeeds.splice(t,1),e.dispose(),this.emit(H.UserMediaFeedsChanged,this.userMediaFeeds),this.activeSpeaker===e&&(this.activeSpeaker=this.userMediaFeeds[0],this.emit(H.ActiveSpeakerChanged,this.activeSpeaker))}getScreenshareFeed(e,t){return this.screenshareFeeds.find(n=>n.userId===e&&n.deviceId===t)}addScreenshareFeed(e){this.screenshareFeeds.push(e),this.emit(H.ScreenshareFeedsChanged,this.screenshareFeeds)}replaceScreenshareFeed(e,t){var n=this.screenshareFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(n===-1)throw Error(`Couldn't find screenshare feed to replace`);this.screenshareFeeds.splice(n,1,t),e.dispose(),this.emit(H.ScreenshareFeedsChanged,this.screenshareFeeds)}removeScreenshareFeed(e){var t=this.screenshareFeeds.findIndex(t=>t.userId===e.userId&&t.deviceId===e.deviceId);if(t===-1)throw Error(`Couldn't find screenshare feed to remove`);this.screenshareFeeds.splice(t,1),e.dispose(),this.emit(H.ScreenshareFeedsChanged,this.screenshareFeeds)}updateParticipants(){var e=this.room.getMember(this.client.getSafeUserId());if(!e){w.warn(`GroupCall ${this.groupCallId} updateParticipants() tried to update participants before local room member is available`);return}if(this.participantsExpirationTimer!==null&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state===U.Ended){this.participants=new Map;return}var t=new Map,n=Date.now(),r=this.state===U.Entered||this.enteredViaAnotherSession,i=1/0;for(var a of this.getMemberStateEvents()){var o=this.room.getMember(a.getStateKey()),s=a.getContent(),c=(Array.isArray(s[`m.calls`])?s[`m.calls`]:[]).find(e=>e[`m.call_id`]===this.groupCallId),l=(Array.isArray(c?.[`m.devices`])?c[`m.devices`]:[]).filter(e=>typeof e.device_id==`string`&&typeof e.session_id==`string`&&typeof e.expires_ts==`number`&&e.expires_ts>n&&Array.isArray(e.feeds));if(!r&&o?.userId===this.client.getUserId()&&(l=l.filter(e=>e.device_id!==this.client.getDeviceId())),l.length>0&&o?.membership===k.Join){var u=new Map;t.set(o,u);for(var d of l)u.set(d.device_id,{sessionId:d.session_id,screensharing:d.feeds.some(e=>e.purpose===V.Screenshare)}),d.expires_ts<i&&(i=d.expires_ts)}}if(r){var f=t.get(e);f===void 0&&(f=new Map,t.set(e,f)),f.has(this.client.getDeviceId())||f.set(this.client.getDeviceId(),{sessionId:this.client.getSessionId(),screensharing:this.getLocalFeeds().some(e=>e.purpose===V.Screenshare)})}this.participants=t,i<1/0&&(this.participantsExpirationTimer=setTimeout(()=>this.updateParticipants(),i-n))}updateDevices(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:!1,i=Date.now(),a=n.client.getUserId(),o=n.getMemberStateEvents(a)?.getContent()??{},s=Array.isArray(o[`m.calls`])?o[`m.calls`]:[],c=null,l=[];for(var u of s)u[`m.call_id`]===n.groupCallId?c=u:l.push(u);c===null&&(c={});var d=e((Array.isArray(c[`m.devices`])?c[`m.devices`]:[]).filter(e=>typeof e.device_id==`string`&&typeof e.session_id==`string`&&typeof e.expires_ts==`number`&&e.expires_ts>i&&Array.isArray(e.feeds)));if(d!==null){var f=[...l];d.length>0&&f.push(eM(eM({},c),{},{"m.call_id":n.groupCallId,"m.devices":d}));var p={"m.calls":f};yield n.client.sendStateEvent(n.room.roomId,E.GroupCallMemberPrefix,p,a,{keepAlive:r})}})()}addDeviceToMemberState(){var e=this;return C(function*(){yield e.updateDevices(t=>[...t.filter(t=>t.device_id!==e.client.getDeviceId()),{device_id:e.client.getDeviceId(),session_id:e.client.getSessionId(),expires_ts:Date.now()+cM,feeds:e.getLocalFeeds().map(e=>({purpose:e.purpose}))}])})()}updateMemberState(){var e=this;return C(function*(){e.resendMemberStateTimer!==null&&(clearInterval(e.resendMemberStateTimer),e.resendMemberStateTimer=null),e.state===U.Entered?(yield e.addDeviceToMemberState(),e.resendMemberStateTimer=setInterval(C(function*(){w.log(`GroupCall ${e.groupCallId} updateMemberState() resending call member state"`);try{yield e.addDeviceToMemberState()}catch(t){w.error(`GroupCall ${e.groupCallId} updateMemberState() failed to resend call member state`,t)}}),cM*3/4)):yield e.updateDevices(t=>t.filter(t=>t.device_id!==e.client.getDeviceId()),!0)})()}cleanMemberState(){var e=this;return C(function*(){var t=(yield e.client.getDevices()).devices,n=new Map(t.map(e=>[e.device_id,e]));yield e.updateDevices(t=>{var r=t.filter(t=>n.get(t.device_id)?.last_seen_ts!==void 0&&!(t.device_id===e.client.getDeviceId()&&e.state!==U.Entered&&!e.enteredViaAnotherSession));return r.length===t.length?null:r})})()}getGroupCallStats(){if(this.stats===void 0){var e=this.client.getUserId()||`unknown`;this.stats=new Qj(this.groupCallId,e,this.statsCollectIntervalTime),this.stats.reports.on(Yj.CONNECTION_STATS,this.onConnectionStats),this.stats.reports.on(Yj.BYTE_SENT_STATS,this.onByteSentStats),this.stats.reports.on(Yj.SUMMARY_STATS,this.onSummaryStats),this.stats.reports.on(Yj.CALL_FEED_REPORT,this.onCallFeedReport)}return this.stats}setGroupCallStatsInterval(e){this.statsCollectIntervalTime=e,this.stats!==void 0&&(this.stats.stop(),this.stats.setInterval(e),e>0&&this.stats.start())}};function dM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function fM(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?dM(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dM(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var W=function(e){return e.Fledgling=`fledgling`,e.InviteSent=`invite_sent`,e.WaitLocalMedia=`wait_local_media`,e.CreateOffer=`create_offer`,e.CreateAnswer=`create_answer`,e.Connecting=`connecting`,e.Connected=`connected`,e.Ringing=`ringing`,e.Ended=`ended`,e}({}),pM=function(e){return e.Voice=`voice`,e.Video=`video`,e}({}),mM=function(e){return e.Inbound=`inbound`,e.Outbound=`outbound`,e}({}),G=function(e){return e.Local=`local`,e.Remote=`remote`,e}({}),K=function(e){return e.Hangup=`hangup`,e.State=`state`,e.Error=`error`,e.Replaced=`replaced`,e.LocalHoldUnhold=`local_hold_unhold`,e.RemoteHoldUnhold=`remote_hold_unhold`,e.HoldUnhold=`hold_unhold`,e.FeedsChanged=`feeds_changed`,e.AssertedIdentityChanged=`asserted_identity_changed`,e.LengthChanged=`length_changed`,e.DataChannel=`datachannel`,e.SendVoipEvent=`send_voip_event`,e.PeerConnectionCreated=`peer_connection_created`,e}({}),q=function(e){return e.UserHangup=`user_hangup`,e.LocalOfferFailed=`local_offer_failed`,e.NoUserMedia=`no_user_media`,e.UnknownDevices=`unknown_devices`,e.SendInvite=`send_invite`,e.CreateAnswer=`create_answer`,e.CreateOffer=`create_offer`,e.SendAnswer=`send_answer`,e.SetRemoteDescription=`set_remote_description`,e.SetLocalDescription=`set_local_description`,e.AnsweredElsewhere=`answered_elsewhere`,e.IceFailed=`ice_failed`,e.InviteTimeout=`invite_timeout`,e.Replaced=`replaced`,e.SignallingFailed=`signalling_timeout`,e.UserBusy=`user_busy`,e.Transferred=`transferred`,e.NewSession=`new_session`,e}({}),hM=`1`,gM=`stun:turn.matrix.org`,_M=60*1e3,vM=1e3,yM=30*1e3,bM=2*1e3,xM=class extends Error{constructor(e,t,n){super(t+`: `+n),h(this,`code`,void 0),this.code=e}};function SM(){return Date.now().toString()+yj(16)}function CM(e){return[{mediaType:`audio`,codec:`opus`,enableDtx:!0,maxAverageBitrate:e?12e3:void 0}]}function wM(e,t){return e+`:`+t}var TM=class extends O{constructor(e){var t;if(super(),t=this,h(this,`roomId`,void 0),h(this,`callId`,void 0),h(this,`invitee`,void 0),h(this,`hangupParty`,void 0),h(this,`hangupReason`,void 0),h(this,`direction`,void 0),h(this,`ourPartyId`,void 0),h(this,`peerConn`,void 0),h(this,`toDeviceSeq`,0),h(this,`isPtt`,!1),h(this,`_state`,W.Fledgling),h(this,`client`,void 0),h(this,`forceTURN`,void 0),h(this,`turnServers`,void 0),h(this,`candidateSendQueue`,[]),h(this,`candidateSendTries`,0),h(this,`candidatesEnded`,!1),h(this,`feeds`,[]),h(this,`transceivers`,new Map),h(this,`inviteOrAnswerSent`,!1),h(this,`waitForLocalAVStream`,!1),h(this,`successor`,void 0),h(this,`opponentMember`,void 0),h(this,`opponentVersion`,void 0),h(this,`opponentPartyId`,void 0),h(this,`opponentCaps`,void 0),h(this,`iceDisconnectedTimeout`,void 0),h(this,`iceReconnectionTimeOut`,void 0),h(this,`inviteTimeout`,void 0),h(this,`removeTrackListeners`,new Map),h(this,`remoteOnHold`,!1),h(this,`callStatsAtEnd`,void 0),h(this,`makingOffer`,!1),h(this,`ignoreOffer`,!1),h(this,`isSettingRemoteAnswerPending`,!1),h(this,`responsePromiseChain`,void 0),h(this,`remoteCandidateBuffer`,new Map),h(this,`remoteAssertedIdentity`,void 0),h(this,`remoteSDPStreamMetadata`,void 0),h(this,`callLengthInterval`,void 0),h(this,`callStartTime`,void 0),h(this,`opponentDeviceId`,void 0),h(this,`hasOpponentDeviceInfo`,void 0),h(this,`opponentSessionId`,void 0),h(this,`groupCallId`,void 0),h(this,`stopVideoTrackTimer`,void 0),h(this,`isOnlyDataChannelAllowed`,void 0),h(this,`stats`,void 0),h(this,`gotLocalIceCandidate`,e=>{if(e.candidate){if(this.candidatesEnded&&w.warn(`Call ${this.callId} gotLocalIceCandidate() got candidate after candidates have ended!`),w.debug(`Call ${this.callId} got local ICE ${e.candidate.sdpMid} ${e.candidate.candidate}`),this.callHasEnded())return;e.candidate.candidate===``?this.queueCandidate(null):this.queueCandidate(e.candidate)}}),h(this,`onIceGatheringStateChange`,e=>{w.debug(`Call ${this.callId} onIceGatheringStateChange() ice gathering state changed to ${this.peerConn.iceGatheringState}`),this.peerConn?.iceGatheringState===`complete`&&(this.queueCandidate(null),w.debug(`Call ${this.callId} onIceGatheringStateChange() ice gathering state complete, set candidates have ended`))}),h(this,`getLocalOfferFailed`,e=>{w.error(`Call ${this.callId} getLocalOfferFailed() running`,e),this.emit(K.Error,new xM(q.LocalOfferFailed,`Failed to get local offer!`,e),this),this.terminate(G.Local,q.LocalOfferFailed,!1)}),h(this,`getUserMediaFailed`,e=>{if(this.successor){this.successor.getUserMediaFailed(e);return}w.warn(`Call ${this.callId} getUserMediaFailed() failed to get user media - ending call`,e),this.emit(K.Error,new xM(q.NoUserMedia,`Couldn't start capturing media! Is your microphone set up and does this app have permission?`,e),this),this.terminate(G.Local,q.NoUserMedia,!1)}),h(this,`placeCallFailed`,e=>{if(this.successor){this.successor.placeCallFailed(e);return}w.warn(`Call ${this.callId} placeCallWithCallFeeds() failed - ending call`,e),this.emit(K.Error,new xM(q.IceFailed,`Couldn't start call! Invalid ICE server configuration.`,e),this),this.terminate(G.Local,q.IceFailed,!1)}),h(this,`onIceConnectionStateChanged`,()=>{if(!this.callHasEnded()){if(w.debug(`Call ${this.callId} onIceConnectionStateChanged() running (state=${this.peerConn?.iceConnectionState}, conn=${this.peerConn?.connectionState})`),[`connected`,`completed`].includes(this.peerConn?.iceConnectionState??``))clearTimeout(this.iceDisconnectedTimeout),this.iceDisconnectedTimeout=void 0,this.iceReconnectionTimeOut&&clearTimeout(this.iceReconnectionTimeOut),this.state=W.Connected,!this.callLengthInterval&&!this.callStartTime&&(this.callStartTime=Date.now(),this.callLengthInterval=setInterval(()=>{this.emit(K.LengthChanged,Math.round((Date.now()-this.callStartTime)/1e3),this)},vM));else if(this.peerConn?.iceConnectionState==`failed`){var e;this.candidatesEnded=!1,(e=this.peerConn)!=null&&e.restartIce?(this.candidatesEnded=!1,w.debug(`Call ${this.callId} onIceConnectionStateChanged() ice restart (state=${this.peerConn?.iceConnectionState})`),this.peerConn.restartIce()):(w.info(`Call ${this.callId} onIceConnectionStateChanged() hanging up call (ICE failed and no ICE restart method)`),this.hangup(q.IceFailed,!1))}else this.peerConn?.iceConnectionState==`disconnected`&&(this.candidatesEnded=!1,this.iceReconnectionTimeOut=setTimeout(()=>{var e;w.info(`Call ${this.callId} onIceConnectionStateChanged() ICE restarting because of ICE disconnected, (state=${this.peerConn?.iceConnectionState}, conn=${this.peerConn?.connectionState})`),(e=this.peerConn)!=null&&e.restartIce&&(this.candidatesEnded=!1,this.peerConn.restartIce()),this.iceReconnectionTimeOut=void 0},bM),this.iceDisconnectedTimeout=setTimeout(()=>{w.info(`Call ${this.callId} onIceConnectionStateChanged() hanging up call (ICE disconnected for too long)`),this.hangup(q.IceFailed,!1)},yM),this.state=W.Connecting);if(this.isPtt&&[`failed`,`disconnected`].includes(this.peerConn.iceConnectionState))for(var t of this.getRemoteFeeds())t.setAudioVideoMuted(!0,!0)}}),h(this,`onSignallingStateChanged`,()=>{w.debug(`Call ${this.callId} onSignallingStateChanged() running (state=${this.peerConn?.signalingState})`)}),h(this,`onTrack`,e=>{if(e.streams.length===0){w.warn(`Call ${this.callId} onTrack() called with streamless track streamless (kind=${e.track.kind})`);return}var t=e.streams[0];if(this.pushRemoteFeed(t),!this.removeTrackListeners.has(t)){var n=()=>{t.getTracks().length===0&&(w.info(`Call ${this.callId} onTrack() removing track (streamId=${t.id})`),this.deleteFeedByStream(t),t.removeEventListener(`removetrack`,n),this.removeTrackListeners.delete(t))};t.addEventListener(`removetrack`,n),this.removeTrackListeners.set(t,n)}}),h(this,`onDataChannel`,e=>{this.emit(K.DataChannel,e.channel,this)}),h(this,`onNegotiationNeeded`,C(function*(){if(w.info(`Call ${t.callId} onNegotiationNeeded() negotiation is needed!`),t.state!==W.CreateOffer&&t.opponentVersion===0){w.info(`Call ${t.callId} onNegotiationNeeded() opponent does not support renegotiation: ignoring negotiationneeded event`);return}t.queueGotLocalOffer()})),h(this,`onHangupReceived`,e=>{w.debug(`Call ${this.callId} onHangupReceived() running`),this.partyIdMatches(e)||this.state===W.Ringing?this.terminate(G.Remote,e.reason||q.UserHangup,!0):w.info(`Call ${this.callId} onHangupReceived() ignoring message from party ID ${e.party_id}: our partner is ${this.opponentPartyId}`)}),h(this,`onRejectReceived`,e=>{w.debug(`Call ${this.callId} onRejectReceived() running`),[W.InviteSent,W.Ringing].includes(this.state)||this.state===W.Fledgling&&this.direction===mM.Inbound?this.terminate(G.Remote,e.reason||q.UserHangup,!0):w.debug(`Call ${this.callId} onRejectReceived() called in wrong state (state=${this.state})`)}),h(this,`onAnsweredElsewhere`,e=>{w.debug(`Call ${this.callId} onAnsweredElsewhere() running`),this.terminate(G.Remote,q.AnsweredElsewhere,!0)}),this.roomId=e.roomId,this.invitee=e.invitee,this.client=e.client,!this.client.deviceId)throw Error(`Client must have a device ID to start calls`);this.forceTURN=e.forceTURN??!1,this.ourPartyId=this.client.deviceId,this.opponentDeviceId=e.opponentDeviceId,this.opponentSessionId=e.opponentSessionId,this.groupCallId=e.groupCallId,this.turnServers=e.turnServers||[],this.turnServers.length===0&&this.client.isFallbackICEServerAllowed()&&this.turnServers.push({urls:[gM]});for(var n of this.turnServers)jE(n,[`urls`]);this.callId=SM(),this.isOnlyDataChannelAllowed=this.client.isVoipWithNoMediaAllowed}placeVoiceCall(){var e=this;return C(function*(){yield e.placeCall(!0,!1)})()}placeVideoCall(){var e=this;return C(function*(){yield e.placeCall(!0,!0)})()}createDataChannel(e,t){var n=this.peerConn.createDataChannel(e,t);return this.emit(K.DataChannel,n,this),n}getOpponentMember(){return this.opponentMember}getOpponentDeviceId(){return this.opponentDeviceId}getOpponentSessionId(){return this.opponentSessionId}opponentCanBeTransferred(){return!!(this.opponentCaps&&this.opponentCaps[`m.call.transferee`])}opponentSupportsDTMF(){return!!(this.opponentCaps&&this.opponentCaps[`m.call.dtmf`])}getRemoteAssertedIdentity(){return this.remoteAssertedIdentity}get state(){return this._state}set state(e){var t=this._state;this._state=e,this.emit(K.State,e,t,this)}get type(){return this.hasUserMediaVideoSender||this.hasRemoteUserMediaVideoTrack?pM.Video:pM.Voice}get hasLocalUserMediaVideoTrack(){var e;return!!((e=this.localUsermediaStream)!=null&&e.getVideoTracks().length)}get hasRemoteUserMediaVideoTrack(){return this.getRemoteFeeds().some(e=>e.purpose===V.Usermedia&&e.stream?.getVideoTracks().length)}get hasLocalUserMediaAudioTrack(){var e;return!!((e=this.localUsermediaStream)!=null&&e.getAudioTracks().length)}get hasRemoteUserMediaAudioTrack(){return this.getRemoteFeeds().some(e=>{var t;return e.purpose===V.Usermedia&&!!((t=e.stream)!=null&&t.getAudioTracks().length)})}get hasUserMediaAudioSender(){return!!this.transceivers.get(wM(V.Usermedia,`audio`))?.sender}get hasUserMediaVideoSender(){return!!this.transceivers.get(wM(V.Usermedia,`video`))?.sender}get localUsermediaFeed(){return this.getLocalFeeds().find(e=>e.purpose===V.Usermedia)}get localScreensharingFeed(){return this.getLocalFeeds().find(e=>e.purpose===V.Screenshare)}get localUsermediaStream(){return this.localUsermediaFeed?.stream}get localScreensharingStream(){return this.localScreensharingFeed?.stream}get remoteUsermediaFeed(){return this.getRemoteFeeds().find(e=>e.purpose===V.Usermedia)}get remoteScreensharingFeed(){return this.getRemoteFeeds().find(e=>e.purpose===V.Screenshare)}get remoteUsermediaStream(){return this.remoteUsermediaFeed?.stream}get remoteScreensharingStream(){return this.remoteScreensharingFeed?.stream}getFeedByStreamId(e){return this.getFeeds().find(t=>t.stream.id===e)}getFeeds(){return this.feeds}getLocalFeeds(){return this.feeds.filter(e=>e.isLocal())}getRemoteFeeds(){return this.feeds.filter(e=>!e.isLocal())}initOpponentCrypto(){var e=this;return C(function*(){if(e.opponentDeviceId&&e.client.getUseE2eForGroupCall()){if(!e.client.getCrypto()){e.hasOpponentDeviceInfo=!0;return}var t=e.invitee||e.getOpponentMember()?.userId;throw t?(e.hasOpponentDeviceInfo=!1,new sM(t)):Error(`Couldn't find opponent user ID to init crypto`)}})()}getLocalSDPStreamMetadata(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t={};for(var n of this.getLocalFeeds())e&&(n.sdpMetadataStreamId=n.stream.id),t[n.sdpMetadataStreamId]={purpose:n.purpose,audio_muted:n.isAudioMuted(),video_muted:n.isVideoMuted()};return t}noIncomingFeeds(){return!this.feeds.some(e=>!e.isLocal())}pushRemoteFeed(e){if(!this.opponentSupportsSDPStreamMetadata()){this.pushRemoteFeedWithoutMetadata(e);return}var t=this.getOpponentMember().userId,n=this.remoteSDPStreamMetadata[e.id].purpose,r=this.remoteSDPStreamMetadata[e.id].audio_muted,i=this.remoteSDPStreamMetadata[e.id].video_muted;if(!n){w.warn(`Call ${this.callId} pushRemoteFeed() ignoring stream because we didn't get any metadata about it (streamId=${e.id})`);return}if(this.getFeedByStreamId(e.id)){w.warn(`Call ${this.callId} pushRemoteFeed() ignoring stream because we already have a feed for it (streamId=${e.id})`);return}this.feeds.push(new kj({client:this.client,call:this,roomId:this.roomId,userId:t,deviceId:this.getOpponentDeviceId(),stream:e,purpose:n,audioMuted:r,videoMuted:i})),this.emit(K.FeedsChanged,this.feeds,this),w.info(`Call ${this.callId} pushRemoteFeed() pushed stream (streamId=${e.id}, active=${e.active}, purpose=${n})`)}pushRemoteFeedWithoutMetadata(e){var t=this.getOpponentMember().userId,n=V.Usermedia,r=this.feeds.find(e=>!e.isLocal())?.stream;if(r&&e.id!==r.id){w.warn(`Call ${this.callId} pushRemoteFeedWithoutMetadata() ignoring new stream because we already have stream (streamId=${e.id})`);return}if(this.getFeedByStreamId(e.id)){w.warn(`Call ${this.callId} pushRemoteFeedWithoutMetadata() ignoring stream because we already have a feed for it (streamId=${e.id})`);return}this.feeds.push(new kj({client:this.client,call:this,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:t,deviceId:this.getOpponentDeviceId(),stream:e,purpose:n})),this.emit(K.FeedsChanged,this.feeds,this),w.info(`Call ${this.callId} pushRemoteFeedWithoutMetadata() pushed stream (streamId=${e.id}, active=${e.active})`)}pushNewLocalFeed(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=this.client.getUserId();if(EM(e.getAudioTracks(),!0),EM(e.getVideoTracks(),!0),this.getFeedByStreamId(e.id)){w.warn(`Call ${this.callId} pushNewLocalFeed() ignoring stream because we already have a feed for it (streamId=${e.id})`);return}this.pushLocalFeed(new kj({client:this.client,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:r,deviceId:this.getOpponentDeviceId(),stream:e,purpose:t}),n)}pushLocalFeed(e){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(this.feeds.some(t=>e.stream.id===t.stream.id)){w.info(`Call ${this.callId} pushLocalFeed() ignoring duplicate local stream (streamId=${e.stream.id})`);return}if(this.feeds.push(e),n){var r=function(){w.info(`Call ${t.callId} pushLocalFeed() adding track to peer connection (id=${i.id}, kind=${i.kind}, streamId=${e.stream.id}, streamPurpose=${e.purpose}, enabled=${i.enabled})`);var n=wM(e.purpose,i.kind);if(t.transceivers.has(n)){var r=t.transceivers.get(n);r.sender.replaceTrack(i),r.direction=r.direction===`inactive`?`sendonly`:`sendrecv`}else{var a=t.peerConn.addTrack(i,e.stream),o=t.peerConn.getTransceivers().find(e=>e.sender===a);o?t.transceivers.set(n,o):w.warn(`Call ${t.callId} pushLocalFeed() didn't find a matching transceiver after adding track!`)}};for(var i of e.stream.getTracks())r()}w.info(`Call ${this.callId} pushLocalFeed() pushed stream (id=${e.stream.id}, active=${e.stream.active}, purpose=${e.purpose})`),this.emit(K.FeedsChanged,this.feeds,this)}removeLocalFeed(e){for(var t of[wM(e.purpose,`audio`),wM(e.purpose,`video`)])if(this.transceivers.has(t)){var n=this.transceivers.get(t);n.sender&&this.peerConn.removeTrack(n.sender)}e.purpose===V.Screenshare&&this.client.getMediaHandler().stopScreensharingStream(e.stream),this.deleteFeed(e)}deleteAllFeeds(){for(var e of this.feeds)(!e.isLocal()||!this.groupCallId)&&e.dispose();this.feeds=[],this.emit(K.FeedsChanged,this.feeds,this)}deleteFeedByStream(e){var t=this.getFeedByStreamId(e.id);if(!t){w.warn(`Call ${this.callId} deleteFeedByStream() didn't find the feed to delete (streamId=${e.id})`);return}this.deleteFeed(t)}deleteFeed(e){e.dispose(),this.feeds.splice(this.feeds.indexOf(e),1),this.emit(K.FeedsChanged,this.feeds,this)}getCurrentCallStats(){var e=this;return C(function*(){return e.callHasEnded()?e.callStatsAtEnd:e.collectCallStats()})()}collectCallStats(){var e=this;return C(function*(){if(e.peerConn){var t=yield e.peerConn.getStats(),n=[];return t.forEach(e=>{n.push(e)}),n}})()}initWithInvite(e){var t=this;return C(function*(){var n=e.getContent();t.direction=mM.Inbound,(yield t.client.checkTurnServers())||w.warn(`Call ${t.callId} initWithInvite() failed to get TURN credentials! Proceeding with call anyway...`);var r=xj.findIn(n);r?t.updateRemoteSDPStreamMetadata(r):w.debug(`Call ${t.callId} initWithInvite() did not get any SDPStreamMetadata! Can not send/receive multiple streams`),t.peerConn=t.createPeerConnection(),t.emit(K.PeerConnectionCreated,t.peerConn,t),t.chooseOpponent(e),yield t.initOpponentCrypto();try{yield t.peerConn.setRemoteDescription(n.offer),w.debug(`Call ${t.callId} initWithInvite() set remote description: ${n.offer.type}`),yield t.addBufferedIceCandidates()}catch(e){w.debug(`Call ${t.callId} initWithInvite() failed to set remote description`,e),t.terminate(G.Local,q.SetRemoteDescription,!1);return}var i=t.feeds.find(e=>!e.isLocal())?.stream;if(!t.isOnlyDataChannelAllowed&&(!i||i.getTracks().length===0)){w.error(`Call ${t.callId} initWithInvite() no remote stream or no tracks after setting remote description!`),t.terminate(G.Local,q.SetRemoteDescription,!1);return}if(t.state=W.Ringing,e.getLocalAge()){var a=setTimeout(()=>{if(t.state==W.Ringing){var e;w.debug(`Call ${t.callId} initWithInvite() invite has expired. Hanging up.`),t.hangupParty=G.Remote,t.state=W.Ended,t.stopAllMedia(),t.peerConn.signalingState!=`closed`&&t.peerConn.close(),(e=t.stats)==null||e.removeStatsReportGatherer(t.callId),t.emit(K.Hangup,t)}},n.lifetime-e.getLocalAge()),o=e=>{e!==W.Ringing&&(clearTimeout(a),t.off(K.State,o))};t.on(K.State,o)}})()}initWithHangup(e){this.state=W.Ended}shouldAnswerWithMediaType(e,t,n){return e&&!t?(w.warn(`Call ${this.callId} shouldAnswerWithMediaType() unable to answer with ${n} because the other side isn't sending it either.`),!1):!qE(e)&&e!==t&&!this.opponentSupportsSDPStreamMetadata()?(w.warn(`Call ${this.callId} shouldAnswerWithMediaType() unable to answer with ${n}=${e} because the other side doesn't support it. Answering with ${n}=${t}.`),t):e??t}answer(e,t){var n=this;return C(function*(){if(!n.inviteOrAnswerSent){if(e===!1&&t===!1)throw Error(`You CANNOT answer a call without media`);if(!n.localUsermediaStream&&!n.waitForLocalAVStream){var r=n.state,i=n.shouldAnswerWithMediaType(e,n.hasRemoteUserMediaAudioTrack,`audio`),a=n.shouldAnswerWithMediaType(t,n.hasRemoteUserMediaVideoTrack,`video`);n.state=W.WaitLocalMedia,n.waitForLocalAVStream=!0;try{var o=yield n.client.getMediaHandler().getUserMediaStream(i,a);n.waitForLocalAVStream=!1;var s=[new kj({client:n.client,roomId:n.roomId,userId:n.client.getUserId(),deviceId:n.client.getDeviceId()??void 0,stream:o,purpose:V.Usermedia,audioMuted:!1,videoMuted:!1})];n.localScreensharingFeed&&s.push(n.localScreensharingFeed),n.answerWithCallFeeds(s)}catch(e){if(a)w.warn(`Call ${n.callId} answer() failed to getUserMedia(), trying to getUserMedia() without video`),n.state=r,n.waitForLocalAVStream=!1,yield n.answer(i,!1);else{n.getUserMediaFailed(e);return}}}else n.waitForLocalAVStream&&(n.state=W.WaitLocalMedia)}})()}answerWithCallFeeds(e){this.inviteOrAnswerSent||this.queueGotCallFeedsForAnswer(e)}replacedBy(e){w.debug(`Call ${this.callId} replacedBy() running (newCallId=${e.callId})`),this.state===W.WaitLocalMedia?(w.debug(`Call ${this.callId} replacedBy() telling new call to wait for local media (newCallId=${e.callId})`),e.waitForLocalAVStream=!0):[W.CreateOffer,W.InviteSent].includes(this.state)&&(e.direction===mM.Outbound?e.queueGotCallFeedsForAnswer([]):(w.debug(`Call ${this.callId} replacedBy() handing local stream to new call(newCallId=${e.callId})`),e.queueGotCallFeedsForAnswer(this.getLocalFeeds().map(e=>e.clone())))),this.successor=e,this.emit(K.Replaced,e,this),this.hangup(q.Replaced,!0)}hangup(e,t){if(!this.callHasEnded()&&(w.debug(`Call ${this.callId} hangup() ending call (reason=${e})`),this.terminate(G.Local,e,!t),![W.Fledgling,W.WaitLocalMedia].includes(this.state))){var n={};(this.opponentVersion&&this.opponentVersion!==0||e!==q.UserHangup)&&(n.reason=e),this.sendVoipEvent(E.CallHangup,n)}}reject(){if(this.state!==W.Ringing)throw Error(`Call must be in 'ringing' state to reject!`);if(this.opponentVersion===0){w.info(`Call ${this.callId} reject() opponent version is less than 1: sending hangup instead of reject (opponentVersion=${this.opponentVersion})`),this.hangup(q.UserHangup,!0);return}w.debug(`Rejecting call: `+this.callId),this.terminate(G.Local,q.UserHangup,!0),this.sendVoipEvent(E.CallReject,{})}upgradeCall(e,t){var n=this;return C(function*(){if(!(!e&&!t)&&n.opponentSupportsSDPStreamMetadata())try{w.debug(`Call ${n.callId} upgradeCall() upgrading call (audio=${e}, video=${t})`);var r=e||n.hasLocalUserMediaAudioTrack,i=t||n.hasLocalUserMediaVideoTrack,a=yield n.client.getMediaHandler().getUserMediaStream(r,i,!1);yield n.updateLocalUsermediaStream(a,e,t)}catch(e){w.error(`Call ${n.callId} upgradeCall() failed to upgrade the call`,e),n.emit(K.Error,new xM(q.NoUserMedia,`Failed to get camera access: `,e),n)}})()}opponentSupportsSDPStreamMetadata(){return!!this.remoteSDPStreamMetadata}isScreensharing(){return!!this.localScreensharingStream}setScreensharingEnabled(e,t){var n=this;return C(function*(){if(e&&n.isScreensharing())return w.warn(`Call ${n.callId} setScreensharingEnabled() there is already a screensharing stream - there is nothing to do!`),!0;if(!e&&!n.isScreensharing())return w.warn(`Call ${n.callId} setScreensharingEnabled() there already isn't a screensharing stream - there is nothing to do!`),!1;if(!n.opponentSupportsSDPStreamMetadata())return n.setScreensharingEnabledWithoutMetadataSupport(e,t);if(w.debug(`Call ${n.callId} setScreensharingEnabled() running (enabled=${e})`),e)try{var r=yield n.client.getMediaHandler().getScreensharingStream(t);return r?(n.pushNewLocalFeed(r,V.Screenshare),!0):!1}catch(e){return w.error(`Call ${n.callId} setScreensharingEnabled() failed to get screen-sharing stream:`,e),!1}else{for(var i of[n.transceivers.get(wM(V.Screenshare,`audio`)),n.transceivers.get(wM(V.Screenshare,`video`))])i&&i.sender&&n.peerConn.removeTrack(i.sender);return n.client.getMediaHandler().stopScreensharingStream(n.localScreensharingStream),n.deleteFeedByStream(n.localScreensharingStream),!1}})()}setScreensharingEnabledWithoutMetadataSupport(e,t){var n=this;return C(function*(){if(w.debug(`Call ${n.callId} setScreensharingEnabledWithoutMetadataSupport() running (enabled=${e})`),e)try{var r=yield n.client.getMediaHandler().getScreensharingStream(t);if(!r)return!1;var i=r.getTracks().find(e=>e.kind===`video`);return(n.transceivers.get(wM(V.Usermedia,`video`))?.sender)?.replaceTrack(i??null),n.pushNewLocalFeed(r,V.Screenshare,!1),!0}catch(e){return w.error(`Call ${n.callId} setScreensharingEnabledWithoutMetadataSupport() failed to get screen-sharing stream:`,e),!1}else{var a=n.localUsermediaStream?.getTracks().find(e=>e.kind===`video`);return(n.transceivers.get(wM(V.Usermedia,`video`))?.sender)?.replaceTrack(a??null),n.client.getMediaHandler().stopScreensharingStream(n.localScreensharingStream),n.deleteFeedByStream(n.localScreensharingStream),!1}})()}updateLocalUsermediaStream(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:!1,i=t.length>2&&t[2]!==void 0?t[2]:!1,a=n.localUsermediaFeed,o=r||!a.isAudioMuted()&&!n.remoteOnHold,s=i||!a.isVideoMuted()&&!n.remoteOnHold;w.log(`Call ${n.callId} updateLocalUsermediaStream() running (streamId=${e.id}, audio=${o}, video=${s})`),EM(e.getAudioTracks(),o),EM(e.getVideoTracks(),s);for(var c of n.localUsermediaStream.getTracks())n.localUsermediaStream.removeTrack(c),c.stop();for(var l of e.getTracks())n.localUsermediaStream.addTrack(l);var u=function*(){var t=wM(V.Usermedia,d.kind),r=n.transceivers.get(t),i=r?.sender,o=!1;if(i)try{w.info(`Call ${n.callId} updateLocalUsermediaStream() replacing track (id=${d.id}, kind=${d.kind}, streamId=${e.id}, streamPurpose=${a.purpose})`),yield i.replaceTrack(d),r.direction=r.direction===`inactive`?`sendonly`:`sendrecv`,o=!0}catch(e){w.warn(`Call ${n.callId} updateLocalUsermediaStream() replaceTrack failed: adding new transceiver instead`,e)}if(!o){w.info(`Call ${n.callId} updateLocalUsermediaStream() adding track to peer connection (id=${d.id}, kind=${d.kind}, streamId=${e.id}, streamPurpose=${a.purpose})`);var s=n.peerConn.addTrack(d,n.localUsermediaStream),c=n.peerConn.getTransceivers().find(e=>e.sender===s);c?n.transceivers.set(t,c):w.warn(`Call ${n.callId} updateLocalUsermediaStream() couldn't find matching transceiver for newly added track!`)}};for(var d of e.getTracks())yield*u()})()}setLocalVideoMuted(e){var t=this;return C(function*(){var n;if(w.log(`Call ${t.callId} setLocalVideoMuted() running ${e}`),!e&&t.stopVideoTrackTimer!==void 0&&(clearTimeout(t.stopVideoTrackTimer),t.stopVideoTrackTimer=void 0),!(yield t.client.getMediaHandler().hasVideoDevice()))return t.isLocalVideoMuted();if(!t.hasUserMediaVideoSender&&!e){var r;return(r=t.localUsermediaFeed)==null||r.setAudioVideoMuted(null,e),yield t.upgradeCall(!1,!0),t.isLocalVideoMuted()}if(!e&&t.localUsermediaStream.getVideoTracks().length===0){var i=yield t.client.getMediaHandler().getUserMediaStream(!0,!0);yield t.updateLocalUsermediaStream(i)}return(n=t.localUsermediaFeed)==null||n.setAudioVideoMuted(null,e),t.updateMuteStatus(),yield t.sendMetadataUpdate(),e&&(t.stopVideoTrackTimer=setTimeout(()=>{for(var e of t.localUsermediaStream.getVideoTracks())e.stop(),t.localUsermediaStream.removeTrack(e)},120)),t.isLocalVideoMuted()})()}isLocalVideoMuted(){return this.localUsermediaFeed?.isVideoMuted()??!1}setMicrophoneMuted(e){var t=this;return C(function*(){var n;return w.log(`Call ${t.callId} setMicrophoneMuted() running ${e}`),(yield t.client.getMediaHandler().hasAudioDevice())?!e&&(!t.hasUserMediaAudioSender||!t.hasLocalUserMediaAudioTrack)?(yield t.upgradeCall(!0,!1),t.isMicrophoneMuted()):((n=t.localUsermediaFeed)==null||n.setAudioVideoMuted(e,null),t.updateMuteStatus(),yield t.sendMetadataUpdate(),t.isMicrophoneMuted()):t.isMicrophoneMuted()})()}isMicrophoneMuted(){return this.localUsermediaFeed?.isAudioMuted()??!1}isRemoteOnHold(){return this.remoteOnHold}setRemoteOnHold(e){if(this.isRemoteOnHold()!==e){this.remoteOnHold=e;for(var t of this.peerConn.getTransceivers())t.direction=e?`sendonly`:`sendrecv`;this.updateMuteStatus(),this.sendMetadataUpdate(),this.emit(K.RemoteHoldUnhold,this.remoteOnHold,this)}}isLocalOnHold(){if(this.state!==W.Connected)return!1;var e=!0;for(var t of this.peerConn.getTransceivers())[`inactive`,`recvonly`].includes(t.currentDirection)||(e=!1);return e}sendDtmfDigit(e){for(var t of this.peerConn.getSenders())if(t.track?.kind===`audio`&&t.dtmf){t.dtmf.insertDTMF(e);return}throw Error(`Unable to find a track to send DTMF on`)}updateMuteStatus(){var e=this.isMicrophoneMuted()||this.remoteOnHold,t=this.isLocalVideoMuted()||this.remoteOnHold;w.log(`Call ${this.callId} updateMuteStatus stream ${this.localUsermediaStream.id} micShouldBeMuted ${e} vidShouldBeMuted ${t}`),EM(this.localUsermediaStream.getAudioTracks(),!e),EM(this.localUsermediaStream.getVideoTracks(),!t)}sendMetadataUpdate(){var e=this;return C(function*(){yield e.sendVoipEvent(E.CallSDPStreamMetadataChanged,{[xj.name]:e.getLocalSDPStreamMetadata()})})()}gotCallFeedsForInvite(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(this.successor){this.successor.queueGotCallFeedsForAnswer(e);return}if(this.callHasEnded()){this.stopAllMedia();return}for(var n of e)this.pushLocalFeed(n);t&&this.peerConn.addTransceiver(`video`,{direction:`recvonly`}),this.state=W.CreateOffer,w.debug(`Call ${this.callId} gotUserMediaForInvite() run`)}sendAnswer(){var e=this;return C(function*(){var t={answer:{sdp:e.peerConn.localDescription.sdp,type:e.peerConn.localDescription.type},[xj.name]:e.getLocalSDPStreamMetadata(!0)};t.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1};var n=e.discardDuplicateCandidates();w.info(`Call ${e.callId} sendAnswer() discarding ${n} candidates that will be sent in answer`);try{yield e.sendVoipEvent(E.CallAnswer,t),e.inviteOrAnswerSent=!0}catch(t){e.state=W.Ringing,t instanceof I&&t.event&&e.client.cancelPendingEvent(t.event);var r=q.SendAnswer,i=`Failed to send answer`;throw t.name==`UnknownDeviceError`&&(r=q.UnknownDevices,i=`Unknown devices present in the room`),e.emit(K.Error,new xM(r,i,t),e),t}e.sendCandidateQueue()})()}queueGotCallFeedsForAnswer(e){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.gotCallFeedsForAnswer(e)):this.responsePromiseChain=this.gotCallFeedsForAnswer(e)}mungeSdp(e,t){var n=(0,lj.parse)(e.sdp);n.media.forEach(e=>{var n=new Map,r=new Map;for(var i of e.rtp)n.set(i.payload,i.codec),r.set(i.codec,i.payload);for(var a of t)if(a.mediaType===e.type){if(!r.has(a.codec)){w.info(`Call ${this.callId} mungeSdp() ignoring SDP modifications for ${a.codec} as it's not present.`);continue}var o=[];a.enableDtx!==void 0&&o.push(`usedtx=${a.enableDtx?`1`:`0`}`),a.maxAverageBitrate!==void 0&&o.push(`maxaveragebitrate=${a.maxAverageBitrate}`);var s=!1;for(var c of e.fmtp)n.get(c.payload)===a.codec&&(s=!0,c.config+=`;`+o.join(`;`));s||e.fmtp.push({payload:r.get(a.codec),config:o.join(`;`)})}}),e.sdp=(0,lj.write)(n)}createOffer(){var e=this;return C(function*(){var t=yield e.peerConn.createOffer();return e.mungeSdp(t,CM(e.isPtt)),t})()}createAnswer(){var e=this;return C(function*(){var t=yield e.peerConn.createAnswer();return e.mungeSdp(t,CM(e.isPtt)),t})()}gotCallFeedsForAnswer(e){var t=this;return C(function*(){if(!t.callHasEnded()){t.waitForLocalAVStream=!1;for(var n of e)t.pushLocalFeed(n);t.state=W.CreateAnswer;var r;try{t.getRidOfRTXCodecs(),r=yield t.createAnswer()}catch(e){w.debug(`Call ${t.callId} gotCallFeedsForAnswer() failed to create answer: `,e),t.terminate(G.Local,q.CreateAnswer,!0);return}try{if(yield t.peerConn.setLocalDescription(r),t.callHasEnded()||(t.state=W.Connecting,yield new Promise(e=>{setTimeout(e,200)}),t.callHasEnded()))return;t.sendAnswer()}catch(e){w.debug(`Call ${t.callId} gotCallFeedsForAnswer() error setting local description!`,e),t.terminate(G.Local,q.SetLocalDescription,!0);return}}})()}onRemoteIceCandidatesReceived(e){var t=this;return C(function*(){if(!t.callHasEnded()){var n=e.getContent(),r=n.candidates;if(!r){w.info(`Call ${t.callId} onRemoteIceCandidatesReceived() ignoring candidates event with no candidates!`);return}var i=n.version===0?null:n.party_id||null;if(t.opponentPartyId===void 0){if(i){w.info(`Call ${t.callId} onRemoteIceCandidatesReceived() buffering ${r.length} candidates until we pick an opponent`);var a=t.remoteCandidateBuffer.get(i)||[];a.push(...r),t.remoteCandidateBuffer.set(i,a)}return}if(!t.partyIdMatches(n)){w.info(`Call ${t.callId} onRemoteIceCandidatesReceived() ignoring candidates from party ID ${n.party_id}: we have chosen party ID ${t.opponentPartyId}`);return}yield t.addIceCandidates(r)}})()}onAnswerReceived(e){var t=this;return C(function*(){var n=e.getContent();if(w.debug(`Call ${t.callId} onAnswerReceived() running (hangupParty=${n.party_id})`),t.callHasEnded()){w.debug(`Call ${t.callId} onAnswerReceived() ignoring answer because call has ended`);return}if(t.opponentPartyId!==void 0){w.info(`Call ${t.callId} onAnswerReceived() ignoring answer from party ID ${n.party_id}: we already have an answer/reject from ${t.opponentPartyId}`);return}t.chooseOpponent(e),yield t.addBufferedIceCandidates(),t.state=W.Connecting;var r=xj.findIn(n);r?t.updateRemoteSDPStreamMetadata(r):w.warn(`Call ${t.callId} onAnswerReceived() did not get any SDPStreamMetadata! Can not send/receive multiple streams`);try{t.isSettingRemoteAnswerPending=!0,yield t.peerConn.setRemoteDescription(n.answer),t.isSettingRemoteAnswerPending=!1,w.debug(`Call ${t.callId} onAnswerReceived() set remote description: ${n.answer.type}`)}catch(e){t.isSettingRemoteAnswerPending=!1,w.debug(`Call ${t.callId} onAnswerReceived() failed to set remote description`,e),t.terminate(G.Local,q.SetRemoteDescription,!1);return}if(t.opponentPartyId!==null)try{yield t.sendVoipEvent(E.CallSelectAnswer,{selected_party_id:t.opponentPartyId})}catch(e){w.warn(`Call ${t.callId} onAnswerReceived() failed to send select_answer event`,e)}})()}onSelectAnswerReceived(e){var t=this;return C(function*(){if(t.direction!==mM.Inbound){w.warn(`Call ${t.callId} onSelectAnswerReceived() got select_answer for an outbound call: ignoring`);return}var n=e.getContent().selected_party_id;if(n==null){w.warn(`Call ${t.callId} onSelectAnswerReceived() got nonsensical select_answer with null/undefined selected_party_id: ignoring`);return}n!==t.ourPartyId&&(w.info(`Call ${t.callId} onSelectAnswerReceived() got select_answer for party ID ${n}: we are party ID ${t.ourPartyId}.`),yield t.terminate(G.Remote,q.AnsweredElsewhere,!0))})()}onNegotiateReceived(e){var t=this;return C(function*(){var n=e.getContent(),r=n.description;if(!r||!r.sdp||!r.type){w.info(`Call ${t.callId} onNegotiateReceived() ignoring invalid m.call.negotiate event`);return}var i=t.direction===mM.Inbound,a=!t.makingOffer&&(t.peerConn.signalingState===`stable`||t.isSettingRemoteAnswerPending),o=r.type===`offer`&&!a;if(t.ignoreOffer=!i&&o,t.ignoreOffer){w.info(`Call ${t.callId} onNegotiateReceived() ignoring colliding negotiate event because we're impolite`);return}var s=t.isLocalOnHold(),c=xj.findIn(n);c?t.updateRemoteSDPStreamMetadata(c):w.warn(`Call ${t.callId} onNegotiateReceived() received negotiation event without SDPStreamMetadata!`);try{if(t.isSettingRemoteAnswerPending=r.type==`answer`,yield t.peerConn.setRemoteDescription(r),t.isSettingRemoteAnswerPending=!1,w.debug(`Call ${t.callId} onNegotiateReceived() set remote description: ${r.type}`),r.type===`offer`){var l;try{t.getRidOfRTXCodecs(),l=yield t.createAnswer()}catch(e){w.debug(`Call ${t.callId} onNegotiateReceived() failed to create answer: `,e),t.terminate(G.Local,q.CreateAnswer,!0);return}yield t.peerConn.setLocalDescription(l),w.debug(`Call ${t.callId} onNegotiateReceived() create an answer`),t.sendVoipEvent(E.CallNegotiate,{lifetime:_M,description:t.peerConn.localDescription?.toJSON(),[xj.name]:t.getLocalSDPStreamMetadata(!0)})}}catch(e){t.isSettingRemoteAnswerPending=!1,w.warn(`Call ${t.callId} onNegotiateReceived() failed to complete negotiation`,e)}var u=t.isLocalOnHold();s!==u&&(t.emit(K.LocalHoldUnhold,u,t),t.emit(K.HoldUnhold,u))})()}updateRemoteSDPStreamMetadata(e){this.remoteSDPStreamMetadata=oD(this.remoteSDPStreamMetadata||{},e,!0);for(var t of this.getRemoteFeeds()){var n=t.stream.id,r=this.remoteSDPStreamMetadata[n];t.setAudioVideoMuted(r?.audio_muted,r?.video_muted),t.purpose=this.remoteSDPStreamMetadata[n]?.purpose}}onSDPStreamMetadataChangedReceived(e){var t=e.getContent(),n=xj.findIn(t);n&&this.updateRemoteSDPStreamMetadata(n)}onAssertedIdentityReceived(e){var t=this;return C(function*(){var n=e.getContent();n.asserted_identity&&(t.remoteAssertedIdentity={id:n.asserted_identity.id,displayName:n.asserted_identity.display_name},t.emit(K.AssertedIdentityChanged,t))})()}callHasEnded(){return this.state===W.Ended}queueGotLocalOffer(){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.wrappedGotLocalOffer()):this.responsePromiseChain=this.wrappedGotLocalOffer()}wrappedGotLocalOffer(){var e=this;return C(function*(){e.makingOffer=!0;try{yield e.gotLocalOffer()}catch(t){e.getLocalOfferFailed(t);return}finally{e.makingOffer=!1}})()}gotLocalOffer(){var e=this;return C(function*(){if(w.debug(`Call ${e.callId} gotLocalOffer() running`),e.callHasEnded()){w.debug(`Call ${e.callId} gotLocalOffer() ignoring newly created offer because the call has ended"`);return}var t;try{e.getRidOfRTXCodecs(),t=yield e.createOffer()}catch(t){w.debug(`Call ${e.callId} gotLocalOffer() failed to create offer: `,t),e.terminate(G.Local,q.CreateOffer,!0);return}try{yield e.peerConn.setLocalDescription(t)}catch(t){w.debug(`Call ${e.callId} gotLocalOffer() error setting local description!`,t),e.terminate(G.Local,q.SetLocalDescription,!0);return}if(e.peerConn.iceGatheringState===`gathering`&&(yield new Promise(e=>{setTimeout(e,200)})),!e.callHasEnded()){var n=e.state===W.CreateOffer?E.CallInvite:E.CallNegotiate,r={lifetime:_M};n===E.CallInvite&&e.invitee&&(r.invitee=e.invitee),e.state===W.CreateOffer?r.offer=e.peerConn.localDescription?.toJSON():r.description=e.peerConn.localDescription?.toJSON(),r.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1},r[xj.name]=e.getLocalSDPStreamMetadata(!0);var i=e.discardDuplicateCandidates();w.info(`Call ${e.callId} gotLocalOffer() discarding ${i} candidates that will be sent in offer`);try{yield e.sendVoipEvent(n,r)}catch(t){w.error(`Call ${e.callId} gotLocalOffer() failed to send invite`,t),t instanceof I&&t.event&&e.client.cancelPendingEvent(t.event);var a=q.SignallingFailed,o=`Signalling failed`;e.state===W.CreateOffer&&(a=q.SendInvite,o=`Failed to send invite`),t.name==`UnknownDeviceError`&&(a=q.UnknownDevices,o=`Unknown devices present in the room`),e.emit(K.Error,new xM(a,o,t),e),e.terminate(G.Local,a,!1);return}e.sendCandidateQueue(),e.state===W.CreateOffer&&(e.inviteOrAnswerSent=!0,e.state=W.InviteSent,e.inviteTimeout=setTimeout(()=>{e.inviteTimeout=void 0,e.state===W.InviteSent&&e.hangup(q.InviteTimeout,!1)},_M))}})()}getRidOfRTXCodecs(){if(!(!RTCRtpReceiver.getCapabilities||!RTCRtpSender.getCapabilities)){var e=this.transceivers.get(wM(V.Screenshare,`video`));if(!(!e||!e.setCodecPreferences)){var t=RTCRtpReceiver.getCapabilities(`video`).codecs,n=RTCRtpSender.getCapabilities(`video`).codecs,r=[];for(var i of[...t,...n])if(i.mimeType!==`video/rtx`){r.push(i);try{e.setCodecPreferences(r)}catch(e){w.info(`Working around buggy WebRTC impl: claimed to support codec but threw when setting codec preferences`,i,e),r.pop()}}}}}sendVoipEvent(e,t){var n=this;return C(function*(){var r=fM(fM({},t),{},{version:hM,call_id:n.callId,party_id:n.ourPartyId,conf_id:n.groupCallId});if(n.opponentDeviceId){var i=n.toDeviceSeq++,a=fM(fM({},r),{},{device_id:n.client.deviceId,sender_session_id:n.client.getSessionId(),dest_session_id:n.opponentSessionId,seq:i,[HD]:globalThis.crypto.randomUUID()});n.emit(K.SendVoipEvent,{type:`toDevice`,eventType:e,userId:n.invitee||n.getOpponentMember()?.userId,opponentDeviceId:n.opponentDeviceId,content:a},n);var o=n.invitee||n.getOpponentMember().userId;if(n.client.getUseE2eForGroupCall()){if(!n.hasOpponentDeviceInfo){w.warn(`Call ${n.callId} sendVoipEvent() failed: we do not have opponentDeviceInfo`);return}throw Error(`Unimplemented`)}else yield n.client.sendToDevice(e,new Map([[o,new Map([[n.opponentDeviceId,a]])]]))}else n.emit(K.SendVoipEvent,{type:`sendEvent`,eventType:e,roomId:n.roomId,content:r,userId:n.invitee||n.getOpponentMember()?.userId},n),yield n.client.sendEvent(n.roomId,e,r)})()}queueCandidate(e){if(e?this.candidateSendQueue.push(e):this.candidatesEnded=!0,!(this.state===W.Ringing||!this.inviteOrAnswerSent)){var t=this.direction===mM.Inbound?500:2e3;this.candidateSendTries===0&&setTimeout(()=>{this.sendCandidateQueue()},t)}}discardDuplicateCandidates(){for(var e=0,t=[],n=0;n<this.candidateSendQueue.length;n++){var r=this.candidateSendQueue[n];r.candidate===``?t.push(r):e++}return this.candidateSendQueue=t,e}transfer(e){var t=this;return C(function*(){var n=yield t.client.getProfileInfo(e),r=SM(),i={replacement_id:SM(),target_user:{id:e,display_name:n.displayname,avatar_url:n.avatar_url},create_call:r};yield t.sendVoipEvent(E.CallReplaces,i),yield t.terminate(G.Local,q.Transferred,!0)})()}transferToCall(e){var t=this;return C(function*(){var n=e.getOpponentMember()?.userId,r=n?yield t.client.getProfileInfo(n):void 0,i=t.getOpponentMember()?.userId,a=i?yield t.client.getProfileInfo(i):void 0,o=SM(),s={replacement_id:SM(),target_user:{id:i,display_name:a?.displayname,avatar_url:a?.avatar_url},await_call:o};yield e.sendVoipEvent(E.CallReplaces,s);var c={replacement_id:SM(),target_user:{id:n,display_name:r?.displayname,avatar_url:r?.avatar_url},create_call:o};yield t.sendVoipEvent(E.CallReplaces,c),yield t.terminate(G.Local,q.Transferred,!0),yield e.terminate(G.Local,q.Transferred,!0)})()}terminate(e,t,n){var r=this;return C(function*(){var i;if(!r.callHasEnded()){r.hangupParty=e,r.hangupReason=t,r.state=W.Ended,r.inviteTimeout&&=(clearTimeout(r.inviteTimeout),void 0),r.iceDisconnectedTimeout!==void 0&&(clearTimeout(r.iceDisconnectedTimeout),r.iceDisconnectedTimeout=void 0),r.callLengthInterval&&=(clearInterval(r.callLengthInterval),void 0),r.stopVideoTrackTimer!==void 0&&(clearTimeout(r.stopVideoTrackTimer),r.stopVideoTrackTimer=void 0);for(var a of r.removeTrackListeners){var o=x(a,2),s=o[0],c=o[1];s.removeEventListener(`removetrack`,c)}r.removeTrackListeners.clear(),r.callStatsAtEnd=yield r.collectCallStats(),r.stopAllMedia(),r.deleteAllFeeds(),r.peerConn&&r.peerConn.signalingState!==`closed`&&r.peerConn.close(),(i=r.stats)==null||i.removeStatsReportGatherer(r.callId),n&&r.emit(K.Hangup,r),r.client.callEventHandler.calls.delete(r.callId)}})()}stopAllMedia(){w.debug(`Call ${this.callId} stopAllMedia() running`);for(var e of this.feeds)if(e.isLocal()&&e.purpose===V.Usermedia)this.client.getMediaHandler().stopUserMediaStream(e.stream);else if(e.isLocal()&&e.purpose===V.Screenshare)this.client.getMediaHandler().stopScreensharingStream(e.stream);else if(!e.isLocal()){w.debug(`Call ${this.callId} stopAllMedia() stopping stream (streamId=${e.stream.id})`);for(var t of e.stream.getTracks())t.stop()}}checkForErrorListener(){if(this.listeners(aO.Error).length===0)throw Error(`You MUST attach an error listener using call.on('error', function() {})`)}sendCandidateQueue(){var e=this;return C(function*(){if(!(e.candidateSendQueue.length===0||e.callHasEnded())){var t=e.candidateSendQueue;e.candidateSendQueue=[],++e.candidateSendTries;var n={candidates:t.map(e=>e.toJSON())};e.candidatesEnded&&n.candidates.push({candidate:``}),w.debug(`Call ${e.callId} sendCandidateQueue() attempting to send ${t.length} candidates`);try{yield e.sendVoipEvent(E.CallCandidates,n),e.candidateSendTries=0,e.sendCandidateQueue()}catch(n){if(n instanceof I&&n.event&&e.client.cancelPendingEvent(n.event),e.candidateSendQueue.push(...t),e.candidateSendTries>5){w.debug(`Call ${e.callId} sendCandidateQueue() failed to send candidates on attempt ${e.candidateSendTries}. Giving up on this call.`,n);var r=q.SignallingFailed;e.emit(K.Error,new xM(r,`Signalling failed`,n),e),e.hangup(r,!1);return}var i=500*2**e.candidateSendTries;++e.candidateSendTries,w.debug(`Call ${e.callId} sendCandidateQueue() failed to send candidates. Retrying in ${i}ms`,n),setTimeout(()=>{e.sendCandidateQueue()},i)}}})()}placeCall(e,t){var n=this;return C(function*(){if(!e)throw Error(`You CANNOT start a call without audio`);n.state=W.WaitLocalMedia;var r;try{var i=yield n.client.getMediaHandler().getUserMediaStream(e,t);EM(i.getAudioTracks(),!0),EM(i.getVideoTracks(),!0),r=new kj({client:n.client,roomId:n.roomId,userId:n.client.getUserId(),deviceId:n.client.getDeviceId()??void 0,stream:i,purpose:V.Usermedia,audioMuted:!1,videoMuted:!1})}catch(e){n.getUserMediaFailed(e);return}try{yield n.placeCallWithCallFeeds([r])}catch(e){n.placeCallFailed(e);return}})()}placeCallWithCallFeeds(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:!1;n.checkForErrorListener(),n.direction=mM.Outbound,yield n.initOpponentCrypto(),n.client.callEventHandler.calls.set(n.callId,n),(yield n.client.checkTurnServers())||w.warn(`Call ${n.callId} placeCallWithCallFeeds() failed to get TURN credentials! Proceeding with call anyway...`),n.peerConn=n.createPeerConnection(),n.emit(K.PeerConnectionCreated,n.peerConn,n),n.gotCallFeedsForInvite(e,r)})()}createPeerConnection(){var e,t=new window.RTCPeerConnection({iceTransportPolicy:this.forceTURN?`relay`:void 0,iceServers:this.turnServers.length?this.turnServers:void 0,iceCandidatePoolSize:this.client.iceCandidatePoolSize,bundlePolicy:`max-bundle`});t.addEventListener(`iceconnectionstatechange`,this.onIceConnectionStateChanged),t.addEventListener(`signalingstatechange`,this.onSignallingStateChanged),t.addEventListener(`icecandidate`,this.gotLocalIceCandidate),t.addEventListener(`icegatheringstatechange`,this.onIceGatheringStateChange),t.addEventListener(`track`,this.onTrack),t.addEventListener(`negotiationneeded`,this.onNegotiationNeeded),t.addEventListener(`datachannel`,this.onDataChannel);var n=this.getOpponentMember(),r=n?n.userId:`unknown`;return(e=this.stats)==null||e.addStatsReportGatherer(this.callId,r,t),t}partyIdMatches(e){return(e.version===0?null:e.party_id||null)===this.opponentPartyId}chooseOpponent(e){var t=e.getContent();if(w.debug(`Call ${this.callId} chooseOpponent() running (partyId=${t.party_id})`),this.opponentVersion=t.version,this.opponentVersion===0?this.opponentPartyId=null:this.opponentPartyId=t.party_id||null,this.opponentCaps=t.capabilities||{},this.opponentMember=this.client.getRoom(this.roomId).getMember(e.getSender())??void 0,this.opponentMember){var n;(n=this.stats)==null||n.updateOpponentMember(this.callId,this.opponentMember.userId)}}addBufferedIceCandidates(){var e=this;return C(function*(){var t=e.remoteCandidateBuffer.get(e.opponentPartyId);t&&(w.info(`Call ${e.callId} addBufferedIceCandidates() adding ${t.length} buffered candidates for opponent ${e.opponentPartyId}`),yield e.addIceCandidates(t)),e.remoteCandidateBuffer.clear()})()}addIceCandidates(e){var t=this;return C(function*(){for(var n of e){(n.sdpMid===null||n.sdpMid===void 0)&&(n.sdpMLineIndex===null||n.sdpMLineIndex===void 0)?w.debug(`Call ${t.callId} addIceCandidates() got remote ICE end-of-candidates`):w.debug(`Call ${t.callId} addIceCandidates() got remote ICE candidate (sdpMid=${n.sdpMid}, candidate=${n.candidate})`);try{yield t.peerConn.addIceCandidate(n)}catch(e){t.ignoreOffer?w.debug(`Call ${t.callId} addIceCandidates() failed to add remote ICE candidate because ignoring offer`,e):w.info(`Call ${t.callId} addIceCandidates() failed to add remote ICE candidate`,e)}}})()}get hasPeerConnection(){return!!this.peerConn}initStats(e){arguments.length>1&&arguments[1]!==void 0&&arguments[1],this.stats=e,this.stats.start()}};function EM(e,t){for(var n of e)n.enabled=t}function DM(){if(typeof window>`u`||typeof document>`u`)return!1;try{if(!(window.RTCPeerConnection??window.RTCSessionDescription??window.RTCIceCandidate??navigator.mediaDevices))return w.error(`WebRTC is not supported in this browser / environment`),!1}catch(e){return w.error(`Exception thrown when trying to access WebRTC`,e),!1}return!0}function OM(e,t,n){if(!DM())return null;var r=n?n.forceTURN:!1,i=new TM({client:e,roomId:t,invitee:n?.invitee,turnServers:e.getTurnServers(),forceTURN:e.forceTURN||r,opponentDeviceId:n?.opponentDeviceId,opponentSessionId:n?.opponentSessionId,groupCallId:n?.groupCallId});return e.reEmitter.reEmit(i,Object.values(K)),i}var kM=function(e){return e.DontNotify=`dont_notify`,e.Notify=`notify`,e.Coalesce=`coalesce`,e}({}),AM=function(e){return e.Highlight=`highlight`,e.Sound=`sound`,e}({}),jM=function(e){return e.EventMatch=`event_match`,e.EventPropertyIs=`event_property_is`,e.EventPropertyContains=`event_property_contains`,e.ContainsDisplayName=`contains_display_name`,e.RoomMemberCount=`room_member_count`,e.SenderNotificationPermission=`sender_notification_permission`,e.CallStarted=`call_started`,e.CallStartedPrefix=`org.matrix.msc3914.call_started`,e}({}),MM=function(e){return e.Override=`override`,e.ContentSpecific=`content`,e.RoomSpecific=`room`,e.SenderSpecific=`sender`,e.Underride=`underride`,e}({}),NM=function(e){return e.Master=`.m.rule.master`,e.IsUserMention=`.m.rule.is_user_mention`,e.IsRoomMention=`.m.rule.is_room_mention`,e.ContainsDisplayName=`.m.rule.contains_display_name`,e.ContainsUserName=`.m.rule.contains_user_name`,e.AtRoomNotification=`.m.rule.roomnotif`,e.DM=`.m.rule.room_one_to_one`,e.EncryptedDM=`.m.rule.encrypted_room_one_to_one`,e.Message=`.m.rule.message`,e.EncryptedMessage=`.m.rule.encrypted`,e.InviteToSelf=`.m.rule.invite_for_me`,e.MemberEvent=`.m.rule.member_event`,e.IncomingCall=`.m.rule.call`,e.SuppressNotices=`.m.rule.suppress_notices`,e.Tombstone=`.m.rule.tombstone`,e.PollStart=`.m.rule.poll_start`,e.PollStartUnstable=`.org.matrix.msc3930.rule.poll_start`,e.PollEnd=`.m.rule.poll_end`,e.PollEndUnstable=`.org.matrix.msc3930.rule.poll_end`,e.PollStartOneToOne=`.m.rule.poll_start_one_to_one`,e.PollStartOneToOneUnstable=`.org.matrix.msc3930.rule.poll_start_one_to_one`,e.PollEndOneToOne=`.m.rule.poll_end_one_to_one`,e.PollEndOneToOneUnstable=`.org.matrix.msc3930.rule.poll_end_one_to_one`,e}({});function PM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FM(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?PM(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PM(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var IM=[MM.Override,MM.ContentSpecific,MM.RoomSpecific,MM.SenderSpecific,MM.Underride],LM={".m.rule.is_room_mention":{rule_id:`.m.rule.is_room_mention`,default:!0,enabled:!0,conditions:[{kind:jM.EventPropertyIs,key:`content.m\\.mentions.room`,value:!0},{kind:jM.SenderNotificationPermission,key:`room`}],actions:[kM.Notify,{set_tweak:AM.Highlight}]},".m.rule.reaction":{rule_id:`.m.rule.reaction`,default:!0,enabled:!0,conditions:[{kind:jM.EventMatch,key:`type`,pattern:`m.reaction`}],actions:[kM.DontNotify]},".org.matrix.msc3786.rule.room.server_acl":{rule_id:`.org.matrix.msc3786.rule.room.server_acl`,default:!0,enabled:!0,conditions:[{kind:jM.EventMatch,key:`type`,pattern:E.RoomServerAcl},{kind:jM.EventMatch,key:`state_key`,pattern:``}],actions:[]}},RM=Symbol(`UserDefinedRules`),zM=[NM.Master,RM,NM.SuppressNotices,NM.InviteToSelf,NM.MemberEvent,NM.IsUserMention,NM.ContainsDisplayName,NM.IsRoomMention,NM.AtRoomNotification,NM.Tombstone,`.m.rule.reaction`,`.m.rule.room.server_acl`,`.org.matrix.msc3786.rule.room.server_acl`,`.m.rule.suppress_edits`],BM={".org.matrix.msc3914.rule.room.call":{rule_id:`.org.matrix.msc3914.rule.room.call`,default:!0,enabled:!0,conditions:[{kind:jM.EventMatch,key:`type`,pattern:`org.matrix.msc3401.call`},{kind:jM.CallStarted}],actions:[kM.Notify,{set_tweak:AM.Sound,value:`default`}]}},VM=[RM,NM.IncomingCall,`.org.matrix.msc3914.rule.room.call`,NM.EncryptedDM,NM.DM,NM.Message,NM.EncryptedMessage];function HM(e,t,n,r,i){var a=n.filter(e=>e.default),o=n.filter(e=>!e.default);function s(n){n===RM?l.push(...o):n in r?(e.warn(`Adding default global ${t} push rule ${n}`),l.push(r[n])):e.warn(`Missing default global ${t} push rule ${n}`)}var c=0,l=[];for(var u of a){var d=i.indexOf(u.rule_id);if(d===-1){l.push(u);continue}for(;d>c;){var f=i[c];s(f),c+=1}l.push(u),c+=1}for(var p of i.slice(c))s(p);return l}var UM=class e{constructor(e){this.client=e,h(this,`parsedKeys`,new Map)}static actionListToActionsObject(e){var t={notify:!1,tweaks:{}};for(var n of e)n===kM.Notify?t.notify=!0:typeof n==`object`&&(n.value===void 0&&(n.value=!0),t.tweaks[n.set_tweak]=n.value);return t}static rewriteDefaultRules(e,t){arguments.length>2&&arguments[2]!==void 0&&arguments[2];var n=JSON.parse(JSON.stringify(t));return n||={},n.global||={},n.global.override||(n.global.override=[]),n.global.underride||(n.global.underride=[]),n.global.override=HM(e,MM.Override,n.global.override,LM,zM),n.global.underride=HM(e,MM.Underride,n.global.underride,BM,VM),n}static getPushRuleGlobRegex(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`i`,i=x(n?[`(?<=^|\\W)`,`(?=\\W|$)`]:[`^`,`$`],2),a=i[0],o=i[1],s=`${n}-${r}-${t}`;return e.cachedGlobToRegex[s]||(e.cachedGlobToRegex[s]=RegExp(a+`(`+VE(t)+`)`+o,r)),e.cachedGlobToRegex[s]}updateCachedPushRuleKeys(t){t||={},t.global||={},t.global.override||(t.global.override=[]),t.global.room||(t.global.room=[]),t.global.sender||(t.global.sender=[]),t.global.underride||(t.global.underride=[]);var n=new Set(this.parsedKeys.keys());for(var r of[t.global.override,t.global.room,t.global.sender,t.global.underride])for(var i of r)if(i.conditions)for(var a of i.conditions)a.kind===jM.EventMatch&&(n.delete(a.key),this.parsedKeys.set(a.key,e.partsForDottedKey(a.key)));n.forEach(e=>this.parsedKeys.delete(e))}matchingRuleFromKindSet(e,t){for(var n of IM){var r=t[n];if(r){for(var i of r)if(i.enabled){var a=this.templateRuleToRaw(n,i);if(a&&this.ruleMatchesEvent(a,e))return FM(FM({},i),{},{kind:n})}}}return null}templateRuleToRaw(e,t){var n={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case MM.Underride:case MM.Override:n.conditions=t.conditions;break;case MM.RoomSpecific:if(!t.rule_id)return null;n.conditions.push({kind:jM.EventMatch,key:`room_id`,value:t.rule_id});break;case MM.SenderSpecific:if(!t.rule_id)return null;n.conditions.push({kind:jM.EventMatch,key:`user_id`,value:t.rule_id});break;case MM.ContentSpecific:if(!t.pattern)return null;n.conditions.push({kind:jM.EventMatch,key:`content.body`,pattern:t.pattern});break}return n}eventFulfillsCondition(e,t){switch(e.kind){case jM.EventMatch:return this.eventFulfillsEventMatchCondition(e,t);case jM.EventPropertyIs:return this.eventFulfillsEventPropertyIsCondition(e,t);case jM.EventPropertyContains:return this.eventFulfillsEventPropertyContains(e,t);case jM.ContainsDisplayName:return this.eventFulfillsDisplayNameCondition(e,t);case jM.RoomMemberCount:return this.eventFulfillsRoomMemberCountCondition(e,t);case jM.SenderNotificationPermission:return this.eventFulfillsSenderNotifPermCondition(e,t);case jM.CallStarted:case jM.CallStartedPrefix:return this.eventFulfillsCallStartedCondition(e,t)}return!1}eventFulfillsSenderNotifPermCondition(e,t){var n=e.key;if(!n)return!1;var r=this.client.getRoom(t.getRoomId());return r!=null&&r.currentState?r.currentState.mayTriggerNotifOfType(n,t.getSender()):!1}eventFulfillsRoomMemberCountCondition(e,t){if(!e.is)return!1;var n=this.client.getRoom(t.getRoomId());if(!n||!n.currentState||!n.currentState.members)return!1;var r=n.currentState.getJoinedMemberCount(),i=e.is.match(/^([=<>]*)(\d*)$/);if(!i)return!1;var a=i[1],o=parseInt(i[2]);if(isNaN(o))return!1;switch(a){case``:case`==`:return r==o;case`<`:return r<o;case`>`:return r>o;case`<=`:return r<=o;case`>=`:return r>=o;default:return!1}}eventFulfillsDisplayNameCondition(e,t){var n,r=t.getContent();if(t.isEncrypted()&&t.getClearContent()&&(r=t.getClearContent()),!r||!r.body||typeof r.body!=`string`)return!1;var i=this.client.getRoom(t.getRoomId()),a=i==null||(n=i.currentState)==null?void 0:n.getMember(this.client.credentials.userId);if(!a)return!1;var o=a.name,s=RegExp(`(^|\\W)`+BE(o)+`(\\W|$)`,`i`);return r.body.search(s)>-1}eventFulfillsEventMatchCondition(t,n){if(!t.key)return!1;var r=this.valueForDottedKey(t.key,n);if(typeof r!=`string`)return!1;if(t.value)return t.value===r;if(typeof t.pattern!=`string`)return!1;var i=e.getPushRuleGlobRegex(t.pattern,t.key===`content.body`);return!!r.match(i)}eventFulfillsEventPropertyIsCondition(e,t){return!e.key||e.value===void 0?!1:e.value===this.valueForDottedKey(e.key,t)}eventFulfillsEventPropertyContains(e,t){if(!e.key||e.value===void 0)return!1;var n=this.valueForDottedKey(e.key,t);return Array.isArray(n)?n.includes(e.value):!1}eventFulfillsCallStartedCondition(e,t){return[`m.ring`,`m.prompt`].includes(t.getContent()[`m.intent`])&&!(`m.terminated`in t.getContent())&&(t.getPrevContent()[`m.terminated`]!==t.getContent()[`m.terminated`]||NE(t.getPrevContent(),{}))}static partsForDottedKey(e){var t=[],n=``,r=!1;for(var i of e){if(r){i===`\\`||i===`.`?n+=i:n+=`\\`+i,r=!1;continue}i==`.`?(t.push(n),n=``):i==`\\`?r=!0:n+=i}return r&&(n+=`\\`),t.push(n),t}valueForDottedKey(t,n){var r=this.parsedKeys.get(t);r===void 0&&(r=e.partsForDottedKey(t),this.parsedKeys.set(t,r));var i,a=r[0],o=0;for(a===`content`?(i=n.getContent(),++o):a===`type`?(i=n.getType(),++o):i=n.event;o<r.length;++o){if(qE(i))return;var s=r[o];i=i[s]}return i}matchingRuleForEventWithRulesets(e,t){return!t||e.getSender()===this.client.getSafeUserId()?null:this.matchingRuleFromKindSet(e,t.global)}pushActionsForEventAndRulesets(t,n){var r=this.matchingRuleForEventWithRulesets(t,n);if(!r)return{};var i=e.actionListToActionsObject(r.actions);return i.tweaks.highlight===void 0&&(i.tweaks.highlight=r.kind==MM.ContentSpecific),{actions:i,rule:r}}ruleMatchesEvent(e,t){var n;return this.client.supportsIntentionalMentions()&&t.getContent()[`m.mentions`]!==void 0&&(e.rule_id===NM.ContainsUserName||e.rule_id===NM.ContainsDisplayName||e.rule_id===NM.AtRoomNotification)?!1:!((n=e.conditions)!=null&&n.some(e=>!this.eventFulfillsCondition(e,t)))}actionsForEvent(e){return this.pushActionsForEventAndRulesets(e,this.client.pushRules).actions||{}}actionsAndRuleForEvent(e){return this.pushActionsForEventAndRulesets(e,this.client.pushRules)}getPushRuleById(e){return this.getPushRuleAndKindById(e)?.rule??null}getPushRuleAndKindById(e){for(var t of[`global`])if(this.client.pushRules?.[t]!==void 0){for(var n of IM)if(this.client.pushRules[t][n]!==void 0){for(var r of this.client.pushRules[t][n])if(r.rule_id===e)return{rule:r,kind:n}}}return null}};h(UM,`cachedGlobToRegex`,{});var WM=[`v1.1`,`v1.2`,`v1.3`,`v1.4`,`v1.5`,`v1.6`,`v1.7`,`v1.8`,`v1.9`,`v1.10`,`v1.11`,`v1.12`,`v1.13`];WM[0],WM[WM.length-1];var GM=function(e){return e.SUCCESS=`SUCCESS`,e.IGNORE=`IGNORE`,e.PROMPT=`PROMPT`,e.FAIL_PROMPT=`FAIL_PROMPT`,e.FAIL_ERROR=`FAIL_ERROR`,e}({}),KM=function(e){return e.Invalid=`Invalid homeserver discovery response`,e.GenericFailure=`Failed to get autodiscovery configuration from server`,e.InvalidHsBaseUrl=`Invalid base_url for m.homeserver`,e.InvalidHomeserver=`Homeserver URL does not appear to be a valid Matrix homeserver`,e.InvalidIsBaseUrl=`Invalid base_url for m.identity_server`,e.InvalidIdentityServer=`Identity server URL does not appear to be a valid identity server`,e.InvalidIs=`Invalid identity server discovery response`,e.MissingWellknown=`No .well-known JSON file found`,e.InvalidJson=`Invalid JSON`,e.UnsupportedHomeserverSpecVersion=`The homeserver does not meet the version requirements`,e}({}),qM=class e{static fromDiscoveryConfig(t){var n=this;return C(function*(){var r={"m.homeserver":{state:e.FAIL_ERROR,error:e.ERROR_INVALID,base_url:null},"m.identity_server":{state:e.PROMPT,error:null,base_url:null}};if(!(t!=null&&t[`m.homeserver`]))return w.error(`No m.homeserver key in config`),r[`m.homeserver`].state=e.FAIL_PROMPT,r[`m.homeserver`].error=e.ERROR_INVALID,Promise.resolve(r);if(!t[`m.homeserver`].base_url)return w.error(`No m.homeserver base_url in config`),r[`m.homeserver`].state=e.FAIL_PROMPT,r[`m.homeserver`].error=e.ERROR_INVALID_HS_BASE_URL,Promise.resolve(r);var i=n.sanitizeWellKnownUrl(t[`m.homeserver`].base_url);if(!i)return w.error(`Invalid base_url for m.homeserver`),r[`m.homeserver`].error=e.ERROR_INVALID_HS_BASE_URL,Promise.resolve(r);var a=yield n.fetchWellKnownObject(`${i}/_matrix/client/versions`);if(!a||!Array.isArray(a.raw?.versions))return w.error(`Invalid /versions response`),r[`m.homeserver`].error=e.ERROR_INVALID_HOMESERVER,r[`m.homeserver`].base_url=i,Promise.resolve(r);var o=new Set(a.raw.versions),s=!1;for(var c of WM)if(o.has(c)){s=!0;break}if(!s)return w.error(`Homeserver does not meet version requirements`),r[`m.homeserver`].error=e.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION,r[`m.homeserver`].base_url=i,Promise.resolve(r);r[`m.homeserver`]={state:e.SUCCESS,error:null,base_url:i};var l=``;if(t[`m.identity_server`]){var u={"m.homeserver":r[`m.homeserver`],"m.identity_server":{state:e.FAIL_PROMPT,error:e.ERROR_INVALID_IS,base_url:null}};if(l=n.sanitizeWellKnownUrl(t[`m.identity_server`].base_url),!l)return w.error(`Invalid base_url for m.identity_server`),u[`m.identity_server`].error=e.ERROR_INVALID_IS_BASE_URL,Promise.resolve(u);var d=yield n.fetchWellKnownObject(`${l}/_matrix/identity/v2`);if(!(d!=null&&d.raw)||d.action!==GM.SUCCESS)return w.error(`Invalid /v2 response`),u[`m.identity_server`].error=e.ERROR_INVALID_IDENTITY_SERVER,u[`m.identity_server`].base_url=l,Promise.resolve(u)}return l&&l.toString().length>0&&(r[`m.identity_server`]={state:e.SUCCESS,error:null,base_url:l}),Object.keys(t).forEach(e=>{if(e===`m.homeserver`||e===`m.identity_server`){var n=[`error`,`state`,`base_url`];for(var i of Object.keys(t[e]))n.includes(i)||(r[e][i]=t[e][i])}else r[e]=t[e]}),Promise.resolve(r)})()}static findClientConfig(t){var n=this;return C(function*(){if(!t||typeof t!=`string`||t.length===0)throw Error(`'domain' must be a string of non-zero length`);var r={"m.homeserver":{state:e.FAIL_ERROR,error:e.ERROR_INVALID,base_url:null},"m.identity_server":{state:e.PROMPT,error:null,base_url:null}},i=t.includes(`://`)?t:`https://${t}`,a=yield n.fetchWellKnownObject(`${i}/.well-known/matrix/client`);return!a||a.action!==GM.SUCCESS?(w.error(`No response or error when parsing .well-known`),a.reason&&w.error(a.reason),a.action===GM.IGNORE?r[`m.homeserver`]={state:e.PROMPT,error:null,base_url:null}:(r[`m.homeserver`].state=e.FAIL_PROMPT,r[`m.homeserver`].error=e.ERROR_INVALID),Promise.resolve(r)):e.fromDiscoveryConfig(a.raw)})()}static getRawClientConfig(e){var t=this;return C(function*(){if(!e||typeof e!=`string`||e.length===0)throw Error(`'domain' must be a string of non-zero length`);var n=yield t.fetchWellKnownObject(`https://${e}/.well-known/matrix/client`);return n?n.raw??{}:{}})()}static sanitizeWellKnownUrl(e){if(!e)return!1;try{var t,n;try{n=new URL(e)}catch(e){w.error(`Could not parse url`,e)}if(!((t=n)!=null&&t.hostname)||n.protocol!==`http:`&&n.protocol!==`https:`)return!1;var r=n.port?`:${n.port}`:``,i=n.pathname?n.pathname:``,a=`${n.protocol}//${n.hostname}${r}${i}`;return a.endsWith(`/`)&&(a=a.substring(0,a.length-1)),a}catch(e){return w.error(e),!1}}static fetch(e,t){return this.fetchFn?this.fetchFn(e,t):globalThis.fetch(e,t)}static setFetchFn(t){e.fetchFn=t}static fetchWellKnownObject(t){return C(function*(){var n;try{if(n=yield e.fetch(t,{method:F.Get,signal:Qk(5e3)}),n.status===404)return{raw:{},action:GM.IGNORE,reason:e.ERROR_MISSING_WELLKNOWN};if(n.status!==200)return{raw:{},action:GM.FAIL_PROMPT,reason:`General failure`}}catch(e){var r=e,i=``;return typeof r==`object`&&(i=r?.message),{error:r,raw:{},action:GM.FAIL_PROMPT,reason:i||`General failure`}}try{return{raw:yield n.json(),action:GM.SUCCESS}}catch(t){var a=t;return{error:a,raw:{},action:GM.FAIL_PROMPT,reason:a?.name===`SyntaxError`?e.ERROR_INVALID_JSON:e.ERROR_INVALID}}})()}};h(qM,`ERROR_INVALID`,KM.Invalid),h(qM,`ERROR_GENERIC_FAILURE`,KM.GenericFailure),h(qM,`ERROR_INVALID_HS_BASE_URL`,KM.InvalidHsBaseUrl),h(qM,`ERROR_INVALID_HOMESERVER`,KM.InvalidHomeserver),h(qM,`ERROR_INVALID_IS_BASE_URL`,KM.InvalidIsBaseUrl),h(qM,`ERROR_INVALID_IDENTITY_SERVER`,KM.InvalidIdentityServer),h(qM,`ERROR_INVALID_IS`,KM.InvalidIs),h(qM,`ERROR_MISSING_WELLKNOWN`,KM.MissingWellknown),h(qM,`ERROR_INVALID_JSON`,KM.InvalidJson),h(qM,`ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION`,KM.UnsupportedHomeserverSpecVersion),h(qM,`ALL_ERRORS`,Object.keys(KM)),h(qM,`FAIL_ERROR`,GM.FAIL_ERROR),h(qM,`FAIL_PROMPT`,GM.FAIL_PROMPT),h(qM,`PROMPT`,GM.PROMPT),h(qM,`SUCCESS`,GM.SUCCESS),h(qM,`fetchFn`,void 0);var JM=function(e){return e.IS=`SERVICE_TYPE_IS`,e.IM=`SERVICE_TYPE_IM`,e}({}),YM=class{constructor(e){this.ourEvent=e,h(this,`timeline`,void 0),h(this,`ourEventIndex`,0),h(this,`paginateTokens`,{[M.Backward]:null,[M.Forward]:null}),this.timeline=[e]}getEvent(){return this.timeline[this.ourEventIndex]}getTimeline(){return this.timeline}getOurEventIndex(){return this.ourEventIndex}getPaginateToken(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return this.paginateTokens[e?M.Backward:M.Forward]}setPaginateToken(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.paginateTokens[t?M.Backward:M.Forward]=e??null}addEvents(e){arguments.length>1&&arguments[1]!==void 0&&arguments[1]?(this.timeline=e.concat(this.timeline),this.ourEventIndex+=e.length):this.timeline=this.timeline.concat(e)}},XM=class e{static fromJson(t,n){var r=t.context||{},i=(r.events_before||[]).map(n),a=(r.events_after||[]).map(n),o=new YM(n(t.result)),s=o.ourEvent.threadRootId;return i=i.filter(e=>e.threadRootId===s),a=a.filter(e=>e.threadRootId===s),o.setPaginateToken(r.start,!0),o.addEvents(i,!0),o.addEvents(a,!1),o.setPaginateToken(r.end,!1),new e(t.rank,o)}constructor(e,t){this.rank=e,this.context=t}};function ZM(e){return`parent_delay_id`in e&&typeof e.parent_delay_id!=`string`?!1:`delay`in e&&typeof e.delay!=`number`?!0:`delay`in e||`parent_delay_id`in e}var QM=function(e){return e.Cancel=`cancel`,e.Restart=`restart`,e.Send=`send`,e}({});function $M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function eN(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?$M(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$M(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function tN(e,t){var n=!!t.preventReEmit,r=t.decrypt!==!1;function i(t){var a=e.getRoom(t.room_id),o;a&&t.state_key===void 0&&(o=a.findEventById(t.event_id)),!o||o.status?o=new MI(t):(o.setUnsigned(eN(eN({},o.getUnsigned()),t.unsigned)),n=!0);var s=o.getServerAggregatedRelation(D.Replace);if(s!=null&&s.content){var c=i(s);o.makeReplaced(c)}var l=a?.findThreadForEvent(o);return l&&o.setThread(l),o.isEncrypted()&&(n||e.reEmitter.reEmit(o,[$.Decrypted]),r&&e.decryptEventIfNeeded(o)),n||(e.reEmitter.reEmit(o,[$.Replaced,$.VisibilityChange]),a?.reEmitter.reEmit(o,[$.BeforeRedaction])),o}return i}function nN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function rN(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?nN(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nN(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var iN=class{constructor(e,t,n){this.client=e,this.indexEvent=t,this.directory=n}get id(){var e=this.indexEvent.getStateKey();if(!e)throw Error(`State key not found for branch`);return e}get isActive(){return this.indexEvent.getContent().active===!0}get version(){return this.indexEvent.getContent().version??1}get roomId(){return this.indexEvent.getRoomId()}delete(){var e=this;return C(function*(){yield e.client.sendStateEvent(e.roomId,qD.name,{},e.id),yield e.client.redactEvent(e.roomId,e.id);var t=(yield e.getVersionHistory())[1];t&&(yield t.delete())})()}getName(){return this.indexEvent.getContent().name||`Unnamed File`}setName(e){var t=this;return C(function*(){yield t.client.sendStateEvent(t.roomId,qD.name,rN(rN({},t.indexEvent.getContent()),{},{name:e}),t.id)})()}isLocked(){return this.indexEvent.getContent().locked||!1}setLocked(e){var t=this;return C(function*(){yield t.client.sendStateEvent(t.roomId,qD.name,rN(rN({},t.indexEvent.getContent()),{},{locked:e}),t.id)})()}getFileInfo(){var e=this;return C(function*(){var t=(yield e.getFileEvent()).getOriginalContent().file,n=e.client.mxcUrlToHttp(t.url);if(!n)throw Error(`No HTTP URL available for ${t.url}`);return{info:t,httpUrl:n}})()}getFileEvent(){var e=this;return C(function*(){var t=e.client.getRoom(e.roomId);if(!t)throw Error(`Unknown room`);for(var n=t.getUnfilteredTimelineSet().findEventById(e.id);!n&&t.getLiveTimeline().getState(N.BACKWARDS).paginationToken;)yield e.client.scrollback(t,100),n=t.getUnfilteredTimelineSet().findEventById(e.id);if(!n)throw Error(`Failed to find event`);return yield e.client.decryptEventIfNeeded(n),n})()}createNewVersion(e,t,n,r){var i=this;return C(function*(){var a=yield i.directory.createFile(e,t,n,rN(rN({},r??{}),{},{"m.new_content":!0,"m.relates_to":{rel_type:D.Replace,event_id:i.id}}));return yield i.client.sendStateEvent(i.roomId,qD.name,{active:!0,name:e,version:i.version+1},a.event_id),yield i.client.sendStateEvent(i.roomId,qD.name,rN(rN({},i.indexEvent.getContent()),{},{active:!1}),i.id),a})()}getVersionHistory(){var e=this;return C(function*(){var t=[];t.push(e);var n=e.client.getRoom(e.roomId);if(!n)throw Error(`Invalid or unknown room`);var r=[...n.getLiveTimeline().getEvents()].reverse(),i,a=yield e.getFileEvent();do if(i=r.find(e=>e.replacingEventId()===a.getId()),i){var o=e.directory.getFile(i.getId());if(o)t.push(o),a=i;else break}while(i);return t})()}};function aN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oN(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?aN(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):aN(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var sN={invite:100,kick:100,ban:100,redact:50,state_default:50,events_default:50,users_default:0,events:{[E.RoomPowerLevels]:100,[E.RoomHistoryVisibility]:100,[E.RoomTombstone]:100,[E.RoomEncryption]:100,[E.RoomName]:50,[E.RoomMessage]:50,[E.RoomMessageEncrypted]:50,[E.Sticker]:50},users:{}},cN=function(e){return e.Viewer=`viewer`,e.Editor=`editor`,e.Owner=`owner`,e}({}),lN=class{constructor(e,t){if(this.client=e,this.roomId=t,h(this,`room`,void 0),this.room=this.client.getRoom(this.roomId),!this.room)throw Error(`Unknown room`)}get id(){return this.roomId}get isTopLevel(){var e=this.room.currentState.getStateEvents(E.SpaceParent);return e!=null&&e.length?e.every(e=>{var t;return!((t=e.getContent())!=null&&t.via)}):!0}setName(e){var t=this;return C(function*(){yield t.client.sendStateEvent(t.roomId,E.RoomName,{name:e},``)})()}invite(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:!0,i=[n.retryInvite(e)];r&&i.push(...n.getDirectories().map(t=>t.invite(e,r))),yield Promise.all(i)})()}retryInvite(e){var t=this;return C(function*(){yield ZE(()=>t.client.invite(t.roomId,e),e=>!(e instanceof I&&e.errcode===`M_FORBIDDEN`))})()}setPermissions(e,t){var n=this;return C(function*(){var r=n.room.currentState.getStateEvents(E.RoomPowerLevels,``);if(Array.isArray(r))throw Error(`Unexpected return type for power levels`);var i=r?.getContent()||{},a=i.users_default||0,o=i.events_default||50,s=i.events?.[E.RoomPowerLevels]||100,c=i.users||{};switch(t){case cN.Viewer:c[e]=a;break;case cN.Editor:c[e]=o;break;case cN.Owner:c[e]=s;break;default:throw Error(`Invalid role: `+t)}i.users=c,yield n.client.sendStateEvent(n.roomId,E.RoomPowerLevels,i,``)})()}getPermissions(e){var t=this.room.currentState.getStateEvents(E.RoomPowerLevels,``);if(Array.isArray(t))throw Error(`Unexpected return type for power levels`);var n=t?.getContent()||{},r=n.users_default||0,i=n.events_default||50,a=n.events?.[E.RoomPowerLevels]||100,o=n.users?.[e]||r;return o>=a?cN.Owner:o>=i?cN.Editor:cN.Viewer}createDirectory(e){var t=this;return C(function*(){var n=yield t.client.unstableCreateFileTree(e);return yield t.client.sendStateEvent(t.roomId,E.SpaceChild,{via:[t.client.getDomain()]},n.roomId),yield t.client.sendStateEvent(n.roomId,E.SpaceParent,{via:[t.client.getDomain()]},t.roomId),n})()}getDirectories(){var e=[];for(var t of this.room.currentState.getStateEvents(E.SpaceChild))try{var n=t.getStateKey();if(n){var r=this.client.unstableGetFileTreeSpace(n);r&&e.push(r)}}catch(e){w.warn(`Unable to create tree space instance for listing. Are we joined?`,e)}return e}getDirectory(e){return this.getDirectories().find(t=>t.roomId===e)}delete(){var e=this;return C(function*(){for(var t of e.getDirectories())yield t.delete();var n=[k.Invite,k.Knock,k.Join];for(var r of e.room.currentState.getStateEvents(E.RoomMember))if(r.getStateKey()!==e.client.getUserId()&&n.includes(r.getContent().membership)){var i=r.getStateKey();if(!i)throw Error(`State key not found for branch`);yield e.client.kick(e.roomId,i,`Room deleted`)}yield e.client.leave(e.roomId)})()}getOrderedChildren(e){var t=e.map(e=>({roomId:e.getStateKey(),order:e.getContent().order})).filter(e=>e.roomId);return t.sort((e,t)=>{if(e.order&&!t.order)return-1;if(!e.order&&t.order)return 1;if(!e.order&&!t.order){var n=this.client.getRoom(e.roomId),r=this.client.getRoom(t.roomId);if(!n||!r)return aD(e.roomId,t.roomId);var i=n.currentState.getStateEvents(E.RoomCreate,``)?.getTs()??0,a=r.currentState.getStateEvents(E.RoomCreate,``)?.getTs()??0;return i===a?aD(e.roomId,t.roomId):i-a}else return aD(e.order,t.order)}),t}getParentRoom(){var e=this.room.currentState.getStateEvents(E.SpaceParent)[0];if(!e)throw Error(`Expected to have a parent in a non-top level space`);var t=e.getStateKey();if(!t)throw Error(`No state key found for parent`);var n=this.client.getRoom(t);if(!n)throw Error(`Unable to locate room for parent`);return n}getOrder(){if(this.isTopLevel)return-1;var e=this.getParentRoom().currentState.getStateEvents(E.SpaceChild);return this.getOrderedChildren(e).findIndex(e=>e.roomId===this.roomId)}setOrder(e){var t=this;return C(function*(){if(t.isTopLevel)throw Error(`Cannot set order of top level spaces currently`);var n=t.getParentRoom(),r=n.currentState.getStateEvents(E.SpaceChild),i=t.getOrderedChildren(r);e=Math.max(Math.min(e,i.length-1),0);var a=t.getOrder()<e;a&&e===i.length-1?e--:!a&&e===0&&e++;var o=i[a?e:e-1],s=i[a?e+1:e],c=QE[0],l=!1;if(!o)s!=null&&s.order&&(c=iD(s.order));else if(e===i.length-1)s!=null&&s.order&&(c=rD(s.order));else{var u=o?.order,d=s?.order;u&&d?c=u===d?rD(u):nD(u,d):u?c=rD(u):d?c=iD(d):l=!0}if(l){for(var f,p=0;p<=e;p++){var m=i[p];if(p===0&&(f=m.order),m.order)f=m.order;else{f=f?rD(f):QE[0];var h=n.currentState.getStateEvents(E.SpaceChild,m.roomId)?.getContent()??{via:[t.client.getDomain()]};yield t.client.sendStateEvent(n.roomId,E.SpaceChild,oN(oN({},h),{},{order:f}),m.roomId)}}f&&(c=rD(f))}var g=n.currentState.getStateEvents(E.SpaceChild,t.roomId)?.getContent()??{via:[t.client.getDomain()]};yield t.client.sendStateEvent(n.roomId,E.SpaceChild,oN(oN({},g),{},{order:c}),t.roomId)})()}createFile(e,t,n,r){var i=this;return C(function*(){var a=(yield i.client.uploadContent(t,{includeFilename:!1})).content_uri;n.url=a;var o={msgtype:zD.File,body:e,url:a,file:n};r??={},r[`m.new_content`]&&=o;var s=yield i.client.sendMessage(i.roomId,oN(oN(oN({},r),o),{},{[KD.name]:{}}));return yield i.client.sendStateEvent(i.roomId,qD.name,{active:!0,name:e},s.event_id),s})()}getFile(e){var t=this.room.currentState.getStateEvents(qD.name,e);return t?new iN(this.client,t,this):null}listFiles(){return this.listAllFiles().filter(e=>e.isActive)}listAllFiles(){return(this.room.currentState.getStateEvents(qD.name)??[]).map(e=>new iN(this.client,e,this))}},uN=function(e){return e.Recent=`recent`,e.Rank=`rank`,e}({}),dN=function(e){return e.LocalStreamsChanged=`local_streams_changed`,e}({}),fN=class extends O{constructor(e){super(),this.client=e,h(this,`audioInput`,void 0),h(this,`audioSettings`,void 0),h(this,`videoInput`,void 0),h(this,`localUserMediaStream`,void 0),h(this,`userMediaStreams`,[]),h(this,`screensharingStreams`,[]),h(this,`getMediaStreamPromise`,void 0)}restoreMediaSettings(e,t){this.audioInput=e,this.videoInput=t}setAudioInput(e){var t=this;return C(function*(){w.info(`MediaHandler setAudioInput() running (deviceId=${e})`),t.audioInput!==e&&(t.audioInput=e,yield t.updateLocalUsermediaStreams())})()}setAudioSettings(e){var t=this;return C(function*(){w.info(`MediaHandler setAudioSettings() running (opts=${JSON.stringify(e)})`),t.audioSettings=Object.assign({},e),yield t.updateLocalUsermediaStreams()})()}setVideoInput(e){var t=this;return C(function*(){w.info(`MediaHandler setVideoInput() running (deviceId=${e})`),t.videoInput!==e&&(t.videoInput=e,yield t.updateLocalUsermediaStreams())})()}setMediaInputs(e,t){var n=this;return C(function*(){w.log(`MediaHandler setMediaInputs() running (audioInput: ${e} videoInput: ${t})`),n.audioInput=e,n.videoInput=t,yield n.updateLocalUsermediaStreams()})()}updateLocalUsermediaStreams(){var e=this;return C(function*(){if(e.userMediaStreams.length!==0){var t=new Map;for(var n of e.client.callEventHandler.calls.values())t.set(n.callId,{audio:n.hasLocalUserMediaAudioTrack,video:n.hasLocalUserMediaVideoTrack});for(var r of e.userMediaStreams){w.log(`MediaHandler updateLocalUsermediaStreams() stopping all tracks (streamId=${r.id})`);for(var i of r.getTracks())i.stop()}e.userMediaStreams=[],e.localUserMediaStream=void 0;for(var a of e.client.callEventHandler.calls.values())if(!(a.callHasEnded()||!t.has(a.callId))){var o=t.get(a.callId),s=o.audio,c=o.video;w.log(`MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (callId=${a.callId})`);var l=yield e.getUserMediaStream(s,c);a.callHasEnded()||(yield a.updateLocalUsermediaStream(l))}for(var u of e.client.groupCallEventHandler.groupCalls.values())if(u.localCallFeed){w.log(`MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (groupCallId=${u.groupCallId})`);var d=yield e.getUserMediaStream(!0,u.type===nM.Video);u.state!==U.Ended&&(yield u.updateLocalUsermediaStream(d))}e.emit(dN.LocalStreamsChanged)}})()}hasAudioDevice(){return C(function*(){try{return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`).length>0}catch(e){return w.log(`MediaHandler hasAudioDevice() calling navigator.mediaDevices.enumerateDevices with error`,e),!1}})()}hasVideoDevice(){return C(function*(){try{return(yield navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`videoinput`).length>0}catch(e){return w.log(`MediaHandler hasVideoDevice() calling navigator.mediaDevices.enumerateDevices with error`,e),!1}})()}getUserMediaStream(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:!0;return r.getMediaStreamPromise?r.getMediaStreamPromise=r.getMediaStreamPromise.then(()=>r.getUserMediaStreamInternal(e,t,i)):r.getMediaStreamPromise=r.getUserMediaStreamInternal(e,t,i),r.getMediaStreamPromise})()}getUserMediaStreamInternal(e,t,n){var r=this;return C(function*(){var i=e&&(yield r.hasAudioDevice()),a=t&&(yield r.hasVideoDevice()),o,s=!0;if(r.localUserMediaStream){var c,l;i!==r.localUserMediaStream.getAudioTracks().length>0&&(s=!1),a!==r.localUserMediaStream.getVideoTracks().length>0&&(s=!1),i&&((c=r.localUserMediaStream.getAudioTracks()[0])==null||(c=c.getSettings())==null?void 0:c.deviceId)!==r.audioInput&&(s=!1),a&&((l=r.localUserMediaStream.getVideoTracks()[0])==null||(l=l.getSettings())==null?void 0:l.deviceId)!==r.videoInput&&(s=!1)}else s=!1;if(s){if(o=r.localUserMediaStream.clone(),w.log(`MediaHandler getUserMediaStreamInternal() cloning (oldStreamId=${r.localUserMediaStream?.id} newStreamId=${o.id} shouldRequestAudio=${i} shouldRequestVideo=${a})`),!i)for(var u of o.getAudioTracks())o.removeTrack(u);if(!a)for(var d of o.getVideoTracks())o.removeTrack(d)}else{var f;try{f=r.getUserMediaContraints(i,a,!0),o=yield navigator.mediaDevices.getUserMedia(f)}catch(e){w.warn(`MediaHandler getUserMediaStreamInternal() error (e=${e}), retrying without exact deviceId`),f=r.getUserMediaContraints(i,a,!1),o=yield navigator.mediaDevices.getUserMedia(f)}w.log(`MediaHandler getUserMediaStreamInternal() calling getUserMediaStream (streamId=${o.id}, shouldRequestAudio=${i}, shouldRequestVideo=${a}, constraints=${JSON.stringify(f)})`);for(var p of o.getTracks()){var m=p.getSettings();p.kind===`audio`?r.audioInput=m.deviceId:p.kind===`video`&&(r.videoInput=m.deviceId)}n&&(r.localUserMediaStream=o)}return n&&r.userMediaStreams.push(o),r.emit(dN.LocalStreamsChanged),o})()}stopUserMediaStream(e){w.log(`MediaHandler stopUserMediaStream() stopping (streamId=${e.id})`);for(var t of e.getTracks())t.stop();var n=this.userMediaStreams.indexOf(e);if(n!==-1&&(w.debug(`MediaHandler stopUserMediaStream() splicing usermedia stream out stream array (streamId=${e.id})`,e.id),this.userMediaStreams.splice(n,1)),this.emit(dN.LocalStreamsChanged),this.localUserMediaStream===e)this.localUserMediaStream=void 0;else for(var r of e.getTracks()){var i;if((i=this.localUserMediaStream)!=null&&i.getTrackById(r.id)){this.stopUserMediaStream(this.localUserMediaStream);break}}}getScreensharingStream(){var e=arguments,t=this;return C(function*(){var n=e.length>0&&e[0]!==void 0?e[0]:{},r=e.length>1&&e[1]!==void 0?e[1]:!0,i;if(t.screensharingStreams.length===0){var a=t.getScreenshareContraints(n);n.desktopCapturerSourceId?(w.debug(`MediaHandler getScreensharingStream() calling getUserMedia() (opts=${JSON.stringify(n)})`),i=yield navigator.mediaDevices.getUserMedia(a)):(w.debug(`MediaHandler getScreensharingStream() calling getDisplayMedia() (opts=${JSON.stringify(n)})`),i=yield navigator.mediaDevices.getDisplayMedia(a))}else{var o=t.screensharingStreams[t.screensharingStreams.length-1];w.log(`MediaHandler getScreensharingStream() cloning (streamId=${o.id})`),i=o.clone()}return r&&t.screensharingStreams.push(i),t.emit(dN.LocalStreamsChanged),i})()}stopScreensharingStream(e){w.debug(`MediaHandler stopScreensharingStream() stopping stream (streamId=${e.id})`);for(var t of e.getTracks())t.stop();var n=this.screensharingStreams.indexOf(e);n!==-1&&(w.debug(`MediaHandler stopScreensharingStream() splicing stream out (streamId=${e.id})`),this.screensharingStreams.splice(n,1)),this.emit(dN.LocalStreamsChanged)}stopAllStreams(){for(var e of this.userMediaStreams){w.log(`MediaHandler stopAllStreams() stopping (streamId=${e.id})`);for(var t of e.getTracks())t.stop()}for(var n of this.screensharingStreams)for(var r of n.getTracks())r.stop();this.userMediaStreams=[],this.screensharingStreams=[],this.localUserMediaStream=void 0,this.emit(dN.LocalStreamsChanged)}getUserMediaContraints(e,t,n){var r=!!navigator.webkitGetUserMedia,i=n?`exact`:`ideal`,a={};this.audioInput&&(a.deviceId={[i]:this.audioInput}),this.audioSettings&&(a.autoGainControl={ideal:this.audioSettings.autoGainControl},a.echoCancellation={ideal:this.audioSettings.echoCancellation},a.noiseSuppression={ideal:this.audioSettings.noiseSuppression});var o={width:r?{exact:640}:{ideal:640},height:r?{exact:360}:{ideal:360}};return this.videoInput&&(o.deviceId={[i]:this.videoInput}),{audio:e?a:!1,video:t?o:!1}}getScreenshareContraints(e){var t=e.desktopCapturerSourceId,n=e.audio;return t?{audio:n??!1,video:{mandatory:{chromeMediaSource:`desktop`,chromeMediaSourceId:t}}}:{audio:n??!1,video:!0}}},pN=function(e){return e.RequestFinished=`FINISHED`,e.Complete=`COMPLETE`,e}({}),mN=function(e){return e.PreProcess=`ExtState.PreProcess`,e.PostProcess=`ExtState.PostProcess`,e}({}),hN=function(e){return e.RoomData=`SlidingSync.RoomData`,e.Lifecycle=`SlidingSync.Lifecycle`,e}({}),gN=3,_N=class{constructor(e){this.crypto=e}name(){return`e2ee`}when(){return mN.PreProcess}onRequest(e){var t=this;return C(function*(){return e&&(w.log(`ExtensionE2EE: invalidating all device lists due to missing 'pos'`),yield t.crypto.markAllTrackedUsersAsDirty()),{enabled:!0}})()}onResponse(e){var t=this;return C(function*(){e.device_lists&&(yield t.crypto.processDeviceLists(e.device_lists)),yield t.crypto.processKeyCounts(e.device_one_time_keys_count,e.device_unused_fallback_key_types||e[`org.matrix.msc2732.device_unused_fallback_key_types`]),t.crypto.onSyncCompleted({})})()}},vN=class{constructor(e,t){this.client=e,this.cryptoCallbacks=t,h(this,`nextBatch`,null)}name(){return`to_device`}when(){return mN.PreProcess}onRequest(e){var t=this;return C(function*(){return{since:t.nextBatch===null?void 0:t.nextBatch,limit:100,enabled:!0}})()}onResponse(e){var t=this;return C(function*(){var n=e.events||[];ij(t.cryptoCallbacks?yield t.cryptoCallbacks.preprocessToDeviceMessages(n):n.map(e=>({message:e,encryptionInfo:null})),t.client),t.nextBatch=e.next_batch})()}},yN=class{constructor(e){this.client=e}name(){return`account_data`}when(){return mN.PostProcess}onRequest(e){return C(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return C(function*(){for(var n in e.global&&e.global.length>0&&t.processGlobalAccountData(e.global),e.rooms){var r=wN(t.client,n,e.rooms[n]),i=t.client.getRoom(n);if(!i){w.warn(`got account data for room but room doesn't exist on client:`,n);continue}i.addAccountData(r),r.forEach(e=>{t.client.emit(Z.Event,e)})}})()}processGlobalAccountData(e){var t=wN(this.client,void 0,e),n=t.reduce((e,t)=>(e[t.getType()]=this.client.store.getAccountData(t.getType()),e),{});this.client.store.storeAccountDataEvents(t),t.forEach(e=>{if(e.getType()===E.PushRules){var t=e.getContent();this.client.setPushRules(t)}var r=n[e.getType()];return this.client.emit(Z.AccountData,e,r),e})}},bN=class{constructor(e){this.client=e}name(){return`typing`}when(){return mN.PostProcess}onRequest(e){return C(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return C(function*(){if(e!=null&&e.rooms)for(var n in e.rooms)TN(t.client,n,[e.rooms[n]])})()}},xN=class{constructor(e){this.client=e}name(){return`receipts`}when(){return mN.PostProcess}onRequest(e){return C(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return C(function*(){if(e!=null&&e.rooms)for(var n in e.rooms)TN(t.client,n,[e.rooms[n]])})()}},SN=class{constructor(e,t,n,r){this.slidingSync=e,this.client=t,h(this,`opts`,void 0),h(this,`syncOpts`,void 0),h(this,`syncState`,null),h(this,`syncStateData`,void 0),h(this,`lastPos`,null),h(this,`failCount`,0),h(this,`notifEvents`,[]),this.opts=ej(n),this.syncOpts=tj(r),t.getNotifTimelineSet()&&t.reEmitter.reEmit(t.getNotifTimelineSet(),[z.Timeline,z.TimelineReset]),this.slidingSync.on(hN.Lifecycle,this.onLifecycle.bind(this)),this.slidingSync.on(hN.RoomData,this.onRoomData.bind(this));var i=[new vN(this.client,this.syncOpts.cryptoCallbacks),new yN(this.client),new bN(this.client),new xN(this.client)];this.syncOpts.cryptoCallbacks&&i.push(new _N(this.syncOpts.cryptoCallbacks)),i.forEach(e=>{this.slidingSync.registerExtension(e)})}onRoomData(e,t){var n=this;return C(function*(){var r=n.client.store.getRoom(e);if(!r){if(!t.initial){n.syncOpts.logger.debug(`initial flag not set but no stored room exists for room `,e,t);return}r=rj(n.client,e,n.opts)}yield n.processRoomData(n.client,r,t)})()}onLifecycle(e,t,n){switch(n&&this.syncOpts.logger.debug(`onLifecycle`,e,n),e){case pN.Complete:if(this.purgeNotifications(),!t)break;this.lastPos||this.updateSyncState(B.Prepared,{oldSyncToken:void 0,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.updateSyncState(B.Syncing,{oldSyncToken:this.lastPos,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.lastPos=t.pos;break;case pN.RequestFinished:if(n){if(this.failCount+=1,this.updateSyncState(this.failCount>gN?B.Error:B.Reconnecting,{error:new I(n)}),this.shouldAbortSync(new I(n)))return}else this.failCount=0,this.syncOpts.logger.debug(`SlidingSyncState.RequestFinished with ${Object.keys(t?.rooms||[]).length} rooms`);break}}syncLeftRooms(){return C(function*(){return[]})()}peek(e){return C(function*(){return null})()}stopPeeking(){}setPresence(e){}getSyncState(){return this.syncState}getSyncStateData(){return this.syncStateData??null}createRoom(e){var t=this.client.timelineSupport,n=new RA(e,this.client,this.client.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t});return this.client.reEmitter.reEmit(n,[z.Name,z.Redaction,z.RedactionCancelled,z.Receipt,z.Tags,z.LocalEchoUpdated,z.AccountData,z.MyMembership,z.Timeline,z.TimelineReset]),this.registerStateListeners(n),n}registerStateListeners(e){this.client.reEmitter.reEmit(e.currentState,[j.Events,j.Members,j.NewMember,j.Update]),e.currentState.on(j.NewMember,(e,t,n)=>{n.user=this.client.getUser(n.userId)??void 0,this.client.reEmitter.reEmit(n,[gO.Name,gO.Typing,gO.PowerLevel,gO.Membership])})}shouldAbortSync(e){return e.errcode===`M_UNKNOWN_TOKEN`?(this.syncOpts.logger.warn(`Token no longer valid - assuming logout`),this.stop(),this.updateSyncState(B.Error,{error:e}),!0):!1}processRoomData(e,t,n){var r=this;return C(function*(){n=CN(e,t.roomId,n);var i=wN(r.client,t.roomId,n.required_state),a=wN(r.client,t.roomId,n.timeline,!1),o=[];if(n.limited||n.initial){var s=new Set;t.getLiveTimeline().getEvents().forEach(e=>{s.add(e.getId())});for(var c=[],l=[],u=!1,d=a.length-1;d>=0;d--){var f=a[d];if(s.has(f.getId())){u=!0;continue}u?c.push(f):l.unshift(f)}a=l,c.length>0&&t.addEventsToTimeline(c,!0,!1,t.getLiveTimeline(),n.prev_batch)}var p=t.hasEncryptionStateEvent();if(n.notification_count!=null&&t.setUnreadNotificationCount(R.Total,n.notification_count),n.highlight_count!=null&&(!p||p&&t.getUnreadNotificationCount(R.Highlight)<=0)&&t.setUnreadNotificationCount(R.Highlight,n.highlight_count),n.bump_stamp&&t.setBumpStamp(n.bump_stamp),Number.isInteger(n.invited_count)&&t.currentState.setInvitedMemberCount(n.invited_count),Number.isInteger(n.joined_count)&&t.currentState.setJoinedMemberCount(n.joined_count),n.invite_state){var m=wN(r.client,t.roomId,n.invite_state);yield r.injectRoomEvents(t,m),n.initial&&(t.recalculate(),r.client.store.storeRoom(t),r.client.emit(Z.Room,t)),m.forEach(e=>{r.client.emit(Z.Event,e)});return}n.limited&&t.getLiveTimeline().setPaginationToken(n.prev_batch??null,N.BACKWARDS),yield r.injectRoomEvents(t,i,a,n.num_live),t.addEphemeralEvents(o),t.updateMyMembership(k.Join),t.setMSC4186SummaryData(n.heroes,n.joined_count,n.invited_count),t.recalculate(),n.initial&&(e.store.storeRoom(t),e.emit(Z.Room,t)),r.addNotifications(a);var h=function(){var n=C(function*(n){e.emit(Z.Event,n),n.isState()&&n.getType()==E.RoomEncryption&&r.syncOpts.cryptoCallbacks&&(yield r.syncOpts.cryptoCallbacks.onCryptoEvent(t,n))});return function(e){return n.apply(this,arguments)}}();yield JE(i,h),yield JE(a,h),o.forEach(function(t){e.emit(Z.Event,t)}),t.decryptCriticalEvents()})()}injectRoomEvents(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:[],a=n.length>3&&n[3]!==void 0?n[3]:0,o=e.getLiveTimeline(),s=o.getEvents().length==0;if(s){for(var c of t)r.client.getPushActionsForEvent(c);o.initialiseState(t)}s||(e.oldState.setStateEvents(t),e.currentState.setStateEvents(t));var l=[];a>0&&(l=i.slice(-1*a),i=i.slice(0,-1*l.length)),yield e.addLiveEvents(i,{fromCache:!0,addToState:!1}),l.length>0&&(yield e.addLiveEvents(l,{fromCache:!1,addToState:!1})),e.recalculate(),r.resolveInvites(e)})()}resolveInvites(e){if(!(!e||!this.opts.resolveInvitesToProfiles)){var t=this.client;e.getMembersWithMembership(k.Invite).forEach(function(n){if(!n.requestedProfileInfo){n.requestedProfileInfo=!0;var r=t.getUser(n.userId);(r?Promise.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId)).then(function(t){var r=n.events.member;r.getContent().membership===k.Invite&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}}retryImmediately(){return!0}sync(){var e=this;return C(function*(){for(e.syncOpts.logger.debug(`Sliding sync init loop`);!e.client.isGuest();)try{e.syncOpts.logger.debug(`Getting push rules...`);var t=yield e.client.getPushRules();e.syncOpts.logger.debug(`Got push rules`),e.client.pushRules=t;break}catch(t){if(e.syncOpts.logger.error(`Getting push rules failed`,t),e.shouldAbortSync(t))return}yield e.slidingSync.start()})()}stop(){this.syncOpts.logger.debug(`SyncApi.stop`),this.slidingSync.stop()}updateSyncState(e,t){var n=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(Z.Sync,this.syncState,n,t)}addNotifications(e){if(this.client.getNotifTimelineSet())for(var t of e){var n=this.client.getPushActionsForEvent(t);n&&n.notify&&n.tweaks&&n.tweaks.highlight&&this.notifEvents.push(t)}}purgeNotifications(){this.notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this.notifEvents.forEach(e=>{var t;(t=this.client.getNotifTimelineSet())==null||t.addLiveEvent(e,{addToState:!1})}),this.notifEvents=[]}};function CN(e,t,n){if(!n.name)return n;for(var r of n.required_state)if(r.type===E.RoomName&&r.state_key===``)return r.content={name:n.name},n;return n.required_state.push({event_id:`$fake-sliding-sync-name-event-`+t,state_key:``,type:E.RoomName,content:{name:n.name},sender:e.getUserId(),origin_server_ts:new Date().getTime()}),n}function wN(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=e.getEventMapper({decrypt:r});return n.map(function(e){return e.room_id=t,i(e)})}function TN(e,t,n){var r=wN(e,t,n),i=e.getRoom(t);if(!i){w.warn(`got ephemeral events for room but room doesn't exist on client:`,t);return}i.addEphemeralEvents(r),r.forEach(t=>{e.emit(Z.Event,t)})}var EN=!1,DN=class e{static RETRY_BACKOFF_RATELIMIT(e,t,n){return aA(n,t,!1)}static QUEUE_MESSAGES(e){return e.getType()===E.RoomMessage||e.hasAssociation()?`message`:null}constructor(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.RETRY_BACKOFF_RATELIMIT,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.QUEUE_MESSAGES;this.retryAlgorithm=t,this.queueAlgorithm=n,h(this,`queues`,{}),h(this,`activeQueues`,[]),h(this,`procFn`,null),h(this,`processQueue`,e=>{var t=this.peekNextEvent(e);if(!t){this.disableQueue(e);return}ON(`Queue '%s' has %s pending events`,e,this.queues[e].length),Promise.resolve().then(()=>this.procFn(t.event)).then(n=>{this.removeNextEvent(e),ON(`Queue '%s' sent event %s`,e,t.event.getId()),t.resolvers.resolve(n),this.processQueue(e)},n=>{t.attempts+=1;var r=this.retryAlgorithm(t.event,t.attempts,n);ON(`retry(%s) err=%s event_id=%s waitTime=%s`,t.attempts,n,t.event.getId(),r),r===-1?(w.info(`Queue '%s' giving up on event %s`,e,t.event.getId()),this.clearQueue(e,n)):setTimeout(this.processQueue,r,e)})})}getQueueForEvent(e){var t=this.queueAlgorithm(e);return!t||!this.queues[t]?null:this.queues[t].map(function(e){return e.event})}removeEventFromQueue(e){var t=this.queueAlgorithm(e);if(!t||!this.queues[t])return!1;var n=!1;return AE(this.queues[t],t=>t.event.getId()===e.getId()?(n=!0,!0):!1),n}setProcessFunction(e){this.procFn=e,this.startProcessingQueues()}queueEvent(e){var t=this.queueAlgorithm(e);if(!t)return null;this.queues[t]||(this.queues[t]=[]);var n=Promise.withResolvers();return this.queues[t].push({event:e,resolvers:n,attempts:0}),ON(`Queue algorithm dumped event %s into queue '%s'`,e.getId(),t),this.startProcessingQueues(),n.promise}startProcessingQueues(){this.procFn&&Object.keys(this.queues).filter(e=>this.activeQueues.indexOf(e)===-1&&this.queues[e].length>0).forEach(e=>{this.activeQueues.push(e),ON(`Spinning up queue: '%s'`,e),this.processQueue(e)})}disableQueue(e){var t=this.activeQueues.indexOf(e);t>=0&&this.activeQueues.splice(t,1),w.info(`Stopping queue '%s' as it is now empty`,e)}clearQueue(e,t){w.info(`clearing queue '%s'`,e);for(var n;n=this.removeNextEvent(e);)n.resolvers.reject(t);this.disableQueue(e)}peekNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t[0]}removeNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t.shift()}};function ON(){EN&&w.log(...arguments)}var kN=20,AN=class{constructor(e,t){var n=this;this.client=e,this.logger=t,h(this,`sending`,!1),h(this,`running`,!0),h(this,`retryTimeout`,null),h(this,`retryAttempts`,0),h(this,`sendQueue`,C(function*(){if(n.retryTimeout!==null&&clearTimeout(n.retryTimeout),n.retryTimeout=null,!(n.sending||!n.running)){n.logger.debug(`Attempting to send queued to-device messages`),n.sending=!0;var e;try{for(;n.running&&(e=yield n.client.store.getOldestToDeviceBatch(),e!==null);)yield n.sendBatch(e),yield n.client.store.removeToDeviceBatch(e.id),n.retryAttempts=0;if(!n.running)return;n.logger.debug(`All queued to-device messages sent`)}catch(r){++n.retryAttempts;var t=DN.RETRY_BACKOFF_RATELIMIT(null,n.retryAttempts,r);if(t===-1){Math.floor(r.httpStatus/100)===4?(n.logger.error(`Fatal error when sending to-device message - dropping to-device batch!`,r),yield n.client.store.removeToDeviceBatch(e.id)):n.logger.info(`Automatic retry limit reached for to-device messages.`);return}n.logger.info(`Failed to send batch of to-device messages. Will retry in ${t}ms`,r),n.retryTimeout=setTimeout(n.sendQueue,t)}finally{n.sending=!1}}})),h(this,`onResumedSync`,(e,t)=>{e===B.Syncing&&t!==B.Syncing&&(this.logger.info(`Resuming queue after resumed sync`),this.sendQueue())})}start(){this.running=!0,this.sendQueue(),this.client.on(Z.Sync,this.onResumedSync)}stop(){this.running=!1,this.retryTimeout!==null&&clearTimeout(this.retryTimeout),this.retryTimeout=null,this.client.removeListener(Z.Sync,this.onResumedSync)}queueBatch(e){var t=this;return C(function*(){for(var n=[],r=0;r<e.batch.length;r+=kN){var i={eventType:e.eventType,batch:e.batch.slice(r,r+kN),txnId:t.client.makeTxnId()};n.push(i);var a=i.batch.map(e=>`${e.userId}/${e.deviceId} (msgid ${e.payload[HD]})`);t.logger.info(`Enqueuing batch of to-device messages. type=${e.eventType} txnid=${i.txnId}`,a)}yield t.client.store.saveToDeviceBatches(n),t.sendQueue()})()}sendBatch(e){var t=this;return C(function*(){var n=new gD(()=>new Map);for(var r of e.batch)n.getOrCreate(r.userId).set(r.deviceId,r.payload);t.logger.info(`Sending batch of ${e.batch.length} to-device messages with ID ${e.id} and txnId ${e.txnId}`),yield t.client.sendToDevice(e.eventType,n,e.txnId)})()}},jN=new RD.UnstableValue(`m.policies`,`org.matrix.msc3847.policies`),MN=new RD.UnstableValue(`m.ignore.invites`,`org.matrix.msc3847.ignore.invites`),NN=function(e){return e.Ban=`m.ban`,e}({}),PN=function(e){return e.User=`m.policy.user`,e.Room=`m.policy.room`,e.Server=`m.policy.server`,e}({}),FN={[PN.User]:E.PolicyRuleUser,[PN.Room]:E.PolicyRuleRoom,[PN.Server]:E.PolicyRuleServer},IN=class{constructor(e){this.client=e}addRule(e,t,n){var r=this;return C(function*(){var i=yield r.getOrCreateTargetRoom();return(yield r.client.sendStateEvent(i.roomId,FN[e],{entity:t,reason:n,recommendation:NN.Ban})).event_id})()}removeRule(e){var t=this;return C(function*(){yield t.client.redactEvent(e.getRoomId(),e.getId())})()}addSource(e){var t=this;return C(function*(){yield t.client.joinRoom(e);var n=(yield t.getOrCreateSourceRooms()).map(e=>e.roomId);return n.includes(e)?!1:(n.push(e),yield t.withIgnoreInvitesPolicies(e=>{e.sources=n}),!0)})()}getRuleForInvite(e){var t=this;return C(function*(){var n=e.sender,r=e.roomId,i=yield t.getOrCreateSourceRooms(),a=n.split(`:`)[1],o=r.split(`:`)[1];for(var s of i){var c=s.getUnfilteredTimelineSet().getLiveTimeline().getState(N.FORWARDS);for(var l of[{scope:PN.Room,entities:[r]},{scope:PN.User,entities:[n]},{scope:PN.Server,entities:[a,o]}]){var u=l.scope,d=l.entities;for(var f of c.getStateEvents(FN[u])){var p=f.getContent();if(p?.recommendation==NN.Ban){var m=p?.entity;if(m){var h=void 0;try{h=new RegExp(VE(m))}catch{continue}for(var g of d)if(g&&h.test(g))return f}}}}}return null})()}getOrCreateTargetRoom(){var e=this;return C(function*(){var t=e.getIgnoreInvitesPolicies().target;if(typeof t!=`string`&&(t=null),t){var n=e.client.getRoom(t);if(n)return n;t=null}return t=(yield e.client.createRoom({name:`Individual Policy Room`,preset:SO.PrivateChat})).room_id,yield e.withIgnoreInvitesPolicies(e=>{e.target=t}),e.client.getRoom(t)})()}getOrCreateSourceRooms(){var e=this;return C(function*(){var t=e.getIgnoreInvitesPolicies().sources,n=!1;Array.isArray(t)||(n=!0,t=[]);var r=t.filter(e=>typeof e==`string`).map(t=>e.client.getRoom(t)).filter(e=>!!e);if(r.length!=t.length&&(n=!0),r.length==0){var i=yield e.getOrCreateTargetRoom();n=!0,r=[i]}return n&&(yield e.withIgnoreInvitesPolicies(e=>{e.sources=t})),r})()}getIgnoreInvitesPolicies(){return this.getPoliciesAndIgnoreInvitesPolicies().ignoreInvitesPolicies}withIgnoreInvitesPolicies(e){var t=this;return C(function*(){var n=t.getPoliciesAndIgnoreInvitesPolicies(),r=n.policies,i=n.ignoreInvitesPolicies;e(i),r[MN.name]=i,yield t.client.setAccountData(jN.name,r)})()}getPoliciesAndIgnoreInvitesPolicies(){var e={};for(var t of[jN.name,jN.altName])if(t){var n=this.client.getAccountData(t)?.getContent();if(n){e=n;break}}var r={},i=!1;for(var a of[MN.name,MN.altName])if(a){var o=e[a];if(o&&typeof o==`object`){r=o,i=!0;break}}return i||(e[MN.name]=r),{policies:e,ignoreInvitesPolicies:r}}},LN=`matrix-js-sdk`,RN=function(e){return e.Change=`change`,e}({}),zN=function(e){return e[e.Unsent=1]=`Unsent`,e[e.Requested=2]=`Requested`,e[e.Ready=3]=`Ready`,e[e.Started=4]=`Started`,e[e.Cancelled=5]=`Cancelled`,e[e.Done=6]=`Done`,e}({}),BN=function(e){return e.Cancel=`cancel`,e.ShowSas=`show_sas`,e.ShowReciprocateQr=`show_reciprocate_qr`,e}({});function VN(e){if(e.length>=255)throw TypeError(`Alphabet too long`);let t=new Uint8Array(256);for(let e=0;e<t.length;e++)t[e]=255;for(let n=0;n<e.length;n++){let r=e.charAt(n),i=r.charCodeAt(0);if(t[i]!==255)throw TypeError(r+` is ambiguous`);t[i]=n}let n=e.length,r=e.charAt(0),i=Math.log(n)/Math.log(256),a=Math.log(256)/Math.log(n);function o(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw TypeError(`Expected Uint8Array`);if(t.length===0)return``;let i=0,o=0,s=0,c=t.length;for(;s!==c&&t[s]===0;)s++,i++;let l=(c-s)*a+1>>>0,u=new Uint8Array(l);for(;s!==c;){let e=t[s],r=0;for(let t=l-1;(e!==0||r<o)&&t!==-1;t--,r++)e+=256*u[t]>>>0,u[t]=e%n>>>0,e=e/n>>>0;if(e!==0)throw Error(`Non-zero carry`);o=r,s++}let d=l-o;for(;d!==l&&u[d]===0;)d++;let f=r.repeat(i);for(;d<l;++d)f+=e.charAt(u[d]);return f}function s(e){if(typeof e!=`string`)throw TypeError(`Expected String`);if(e.length===0)return new Uint8Array;let a=0,o=0,s=0;for(;e[a]===r;)o++,a++;let c=(e.length-a)*i+1>>>0,l=new Uint8Array(c);for(;a<e.length;){let r=e.charCodeAt(a);if(r>255)return;let i=t[r];if(i===255)return;let o=0;for(let e=c-1;(i!==0||o<s)&&e!==-1;e--,o++)i+=n*l[e]>>>0,l[e]=i%256>>>0,i=i/256>>>0;if(i!==0)throw Error(`Non-zero carry`);s=o,a++}let u=c-s;for(;u!==c&&l[u]===0;)u++;let d=new Uint8Array(o+(c-u)),f=o;for(;u!==c;)d[f++]=l[u++];return d}function c(e){let t=s(e);if(t)return t;throw Error(`Non-base`+n+` character`)}return{encode:o,decodeUnsafe:s,decode:c}}var HN=VN(`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`),UN=[139,1];function WN(e){var t=new Uint8Array(UN.length+e.length+1);t.set(UN,0),t.set(e,UN.length);for(var n=0,r=0;r<t.length-1;++r)n^=t[r];return t[t.length-1]=n,HN.encode(t).match(/.{1,4}/g)?.join(` `)}var GN=256;function KN(e,t,n){return qN.apply(this,arguments)}function qN(){return qN=C(function*(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:GN;if(!globalThis.crypto.subtle||!TextEncoder)throw Error(`Password-based backup is not available on this platform`);var i=yield globalThis.crypto.subtle.importKey(`raw`,new TextEncoder().encode(e),{name:`PBKDF2`},!1,[`deriveBits`]),a=yield globalThis.crypto.subtle.deriveBits({name:`PBKDF2`,salt:new TextEncoder().encode(t),iterations:n,hash:`SHA-512`},i,r);return new Uint8Array(a)}),qN.apply(this,arguments)}var JN=function(e){return e.UserTrustStatusChanged=`userTrustStatusChanged`,e.KeyBackupStatus=`crypto.keyBackupStatus`,e.KeyBackupFailed=`crypto.keyBackupFailed`,e.KeyBackupSessionsRemaining=`crypto.keyBackupSessionsRemaining`,e.KeyBackupDecryptionKeyCached=`crypto.keyBackupDecryptionKeyCached`,e.VerificationRequestReceived=`crypto.verificationRequestReceived`,e.WillUpdateDevices=`crypto.willUpdateDevices`,e.DevicesUpdated=`crypto.devicesUpdated`,e.KeysChanged=`crossSigning.keysChanged`,e.LegacyCryptoStoreMigrationProgress=`crypto.legacyCryptoStoreMigrationProgress`,e.DehydratedDeviceCreated=`dehydration.DehydratedDeviceCreated`,e.DehydratedDeviceUploaded=`dehydration.DehydratedDeviceUploaded`,e.RehydrationStarted=`dehydration.RehydrationStarted`,e.RehydrationProgress=`dehydration.RehydrationProgress`,e.RehydrationCompleted=`dehydration.RehydrationCompleted`,e.RehydrationError=`dehydration.RehydrationError`,e.DehydrationKeyCached=`dehydration.DehydrationKeyCached`,e.DehydratedDeviceRotationError=`dehydration.DehydratedDeviceRotationError`,e}({}),YN=function(e){return e.MEGOLM_UNKNOWN_INBOUND_SESSION_ID=`MEGOLM_UNKNOWN_INBOUND_SESSION_ID`,e.MEGOLM_KEY_WITHHELD=`MEGOLM_KEY_WITHHELD`,e.MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE=`MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE`,e.OLM_UNKNOWN_MESSAGE_INDEX=`OLM_UNKNOWN_MESSAGE_INDEX`,e.HISTORICAL_MESSAGE_NO_KEY_BACKUP=`HISTORICAL_MESSAGE_NO_KEY_BACKUP`,e.HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED=`HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED`,e.HISTORICAL_MESSAGE_WORKING_BACKUP=`HISTORICAL_MESSAGE_WORKING_BACKUP`,e.HISTORICAL_MESSAGE_USER_NOT_JOINED=`HISTORICAL_MESSAGE_USER_NOT_JOINED`,e.SENDER_IDENTITY_PREVIOUSLY_VERIFIED=`SENDER_IDENTITY_PREVIOUSLY_VERIFIED`,e.UNSIGNED_SENDER_DEVICE=`UNSIGNED_SENDER_DEVICE`,e.UNKNOWN_SENDER_DEVICE=`UNKNOWN_SENDER_DEVICE`,e.UNKNOWN_ERROR=`UNKNOWN_ERROR`,e}({}),XN=function(e){return e[e.AllDevicesIsolationMode=0]=`AllDevicesIsolationMode`,e[e.OnlySignedDevicesIsolationMode=1]=`OnlySignedDevicesIsolationMode`,e}({}),ZN=class{constructor(e){this.errorOnVerifiedUserProblems=e,h(this,`kind`,XN.AllDevicesIsolationMode)}},QN=class{constructor(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;this.crossSigningVerified=e,this.crossSigningVerifiedBefore=t,h(this,`known`,void 0),h(this,`needsUserApproval`,void 0),this.known=n,this.needsUserApproval=r}isVerified(){return this.isCrossSigningVerified()}isCrossSigningVerified(){return this.crossSigningVerified}wasCrossSigningVerified(){return this.crossSigningVerifiedBefore}isTofu(){return!1}},$N=class{constructor(e){h(this,`signedByOwner`,void 0),h(this,`crossSigningVerified`,void 0),h(this,`tofu`,void 0),h(this,`localVerified`,void 0),h(this,`trustCrossSignedDevices`,void 0),this.signedByOwner=e.signedByOwner??!1,this.crossSigningVerified=e.crossSigningVerified??!1,this.tofu=e.tofu??!1,this.localVerified=e.localVerified??!1,this.trustCrossSignedDevices=e.trustCrossSignedDevices??!1}isVerified(){return this.localVerified||this.trustCrossSignedDevices&&this.crossSigningVerified}},eP=function(e){return e.Fetch=`fetch`,e.LoadKeys=`load_keys`,e}({}),tP=function(e){return e.Master=`master`,e.SelfSigning=`self_signing`,e.UserSigning=`user_signing`,e}({}),nP=function(e){return e[e.NONE=0]=`NONE`,e[e.GREY=1]=`GREY`,e[e.RED=2]=`RED`,e}({}),rP=function(e){return e[e.UNKNOWN=0]=`UNKNOWN`,e[e.UNVERIFIED_IDENTITY=1]=`UNVERIFIED_IDENTITY`,e[e.UNSIGNED_DEVICE=2]=`UNSIGNED_DEVICE`,e[e.UNKNOWN_DEVICE=3]=`UNKNOWN_DEVICE`,e[e.AUTHENTICITY_NOT_GUARANTEED=4]=`AUTHENTICITY_NOT_GUARANTEED`,e[e.MISMATCHED_SENDER_KEY=5]=`MISMATCHED_SENDER_KEY`,e[e.SENT_IN_CLEAR=6]=`SENT_IN_CLEAR`,e[e.VERIFICATION_VIOLATION=7]=`VERIFICATION_VIOLATION`,e[e.MISMATCHED_SENDER=8]=`MISMATCHED_SENDER`,e}({}),iP=class extends Error{constructor(e){super(e),this.name=`DecryptionKeyDoesNotMatchError`}},aP=new Uint8Array(8);function oP(e,t){return sP.apply(this,arguments)}function sP(){return sP=C(function*(e,t){var n=yield globalThis.crypto.subtle.importKey(`raw`,e,{name:`HKDF`},!1,[`deriveBits`]),r=yield globalThis.crypto.subtle.deriveBits({name:`HKDF`,salt:aP,info:new TextEncoder().encode(t),hash:`SHA-256`},n,512),i=r.slice(0,32),a=r.slice(32),o=globalThis.crypto.subtle.importKey(`raw`,i,{name:`AES-CTR`},!1,[`encrypt`,`decrypt`]),s=globalThis.crypto.subtle.importKey(`raw`,a,{name:`HMAC`,hash:{name:`SHA-256`}},!1,[`sign`,`verify`]);return Promise.all([o,s])}),sP.apply(this,arguments)}function cP(e,t,n,r){return lP.apply(this,arguments)}function lP(){return lP=C(function*(e,t,n,r){var i;r?i=hj(r):(i=new Uint8Array(16),globalThis.crypto.getRandomValues(i),i[8]&=127);var a=x(yield oP(t,n),2),o=a[0],s=a[1],c=new TextEncoder().encode(e),l=yield globalThis.crypto.subtle.encrypt({name:`AES-CTR`,counter:i,length:64},o,c),u=yield globalThis.crypto.subtle.sign({name:`HMAC`},s,l);return{iv:dj(i),ciphertext:dj(new Uint8Array(l)),mac:dj(new Uint8Array(u))}}),lP.apply(this,arguments)}function uP(e,t,n){return dP.apply(this,arguments)}function dP(){return dP=C(function*(e,t,n){var r=x(yield oP(t,n),2),i=r[0],a=r[1],o=hj(e.ciphertext);if(!(yield globalThis.crypto.subtle.verify({name:`HMAC`},a,hj(e.mac),o)))throw Error(`Error decrypting secret ${n}: bad MAC`);var s=yield globalThis.crypto.subtle.decrypt({name:`AES-CTR`,counter:hj(e.iv),length:64},i,o);return new TextDecoder().decode(new Uint8Array(s))}),dP.apply(this,arguments)}var fP=`m.secret_storage.v1.aes-hmac-sha2`,pP=class{constructor(e,t){this.accountDataAdapter=e,this.callbacks=t}getDefaultKeyId(){var e=this;return C(function*(){var t=yield e.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.default_key`);return t?t.key??null:null})()}setDefaultKeyId(e){return new Promise((t,n)=>{var r=n=>{if(n.getType()===`m.secret_storage.default_key`){var i=n.getContent();(e===null?Object.keys(i).length===0:i.key===e)&&(this.accountDataAdapter.removeListener(Z.AccountData,r),t())}};this.accountDataAdapter.on(Z.AccountData,r);var i=e===null?{}:{key:e};this.accountDataAdapter.setAccountData(`m.secret_storage.default_key`,i).catch(e=>{this.accountDataAdapter.removeListener(Z.AccountData,r),n(e)})})}addKey(e,t,n){var r=this;return C(function*(){if(e!==`m.secret_storage.v1.aes-hmac-sha2`)throw Error(`Unknown key algorithm ${e}`);var i={algorithm:e};t.name&&(i.name=t.name),t.passphrase&&(i.passphrase=t.passphrase);var a=yield gP(t.key),o=a.iv,s=a.mac;if(i.iv=o,i.mac=s,!n)do n=yj(32);while(yield r.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${n}`));return yield r.accountDataAdapter.setAccountData(`m.secret_storage.key.${n}`,i),{keyId:n,keyInfo:i}})()}getKey(e){var t=this;return C(function*(){if(e||=yield t.getDefaultKeyId(),!e)return null;var n=yield t.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${e}`);return n?[e,n]:null})()}hasKey(e){var t=this;return C(function*(){return!!(yield t.getKey(e))})()}checkKey(e,t){return C(function*(){if(t.algorithm===`m.secret_storage.v1.aes-hmac-sha2`)if(t.mac){var n=(yield gP(e,t.iv)).mac;return mP(t.mac)===mP(n)}else return!0;else throw Error(`Unknown algorithm`)})()}store(e,t,n){var r=this;return C(function*(){if(t===null){yield r.accountDataAdapter.setAccountData(e,{});return}var i={};if(!n){var a=yield r.getDefaultKeyId();if(!a)throw Error(`No keys specified and no default key present`);n=[a]}if(n.length===0)throw Error(`Zero keys given to encrypt with!`);for(var o of n){var s=yield r.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${o}`);if(!s)throw Error(`Unknown key: `+o);if(s.algorithm===`m.secret_storage.v1.aes-hmac-sha2`){var c={[o]:s};i[o]=yield x(yield r.getSecretStorageKey(c,e),2)[1].encrypt(t)}else w.warn(`unknown algorithm for secret storage key `+o+`: `+s.algorithm)}yield r.accountDataAdapter.setAccountData(e,{encrypted:i})})()}get(e){var t=this;return C(function*(){var n=yield t.accountDataAdapter.getAccountDataFromServer(e);if(n){if(!n.encrypted)throw Error(`Content is not encrypted!`);var r={};for(var i of Object.keys(n.encrypted)){var a=yield t.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${i}`),o=n.encrypted[i];a?.algorithm===`m.secret_storage.v1.aes-hmac-sha2`&&o.iv&&o.ciphertext&&o.mac&&(r[i]=a)}if(Object.keys(r).length===0)throw Error(`Could not decrypt ${e} because none of the keys it is encrypted with are for a supported algorithm`);var s=x(yield t.getSecretStorageKey(r,e),2),c=s[0],l=s[1],u=n.encrypted[c];return l.decrypt(u)}})()}isStored(e){var t=this;return C(function*(){var n=yield t.accountDataAdapter.getAccountDataFromServer(e);if(!(n!=null&&n.encrypted))return null;var r={};for(var i of Object.keys(n.encrypted)){var a=yield t.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${i}`);if(a){var o=n.encrypted[i];a.algorithm===`m.secret_storage.v1.aes-hmac-sha2`&&o.iv&&o.ciphertext&&o.mac&&(r[i]=a)}}return Object.keys(r).length?r:null})()}getSecretStorageKey(e,t){var n=this;return C(function*(){if(!n.callbacks.getSecretStorageKey)throw Error(`No getSecretStorageKey callback supplied`);var r=yield n.callbacks.getSecretStorageKey({keys:e},t);if(!r)throw Error(`getSecretStorageKey callback returned falsey`);if(r.length<2)throw Error(`getSecretStorageKey callback returned invalid data`);var i=x(r,2),a=i[0],o=i[1];if(!e[a])throw Error(`App returned unknown key from getSecretStorageKey!`);if(e[a].algorithm===`m.secret_storage.v1.aes-hmac-sha2`)return[a,{encrypt:function(e){return cP(e,o,t)},decrypt:function(e){return uP(e,o,t)}}];throw Error(`Unknown key type: `+e[a].algorithm)})()}};function mP(e){for(var t=e.length;t>=1&&e.charCodeAt(t-1)==61;)t--;return t<e.length?e.substring(0,t):e}var hP=`\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`;function gP(e,t){return cP(hP,e,``,t)}function _P(e){return`${e.userId}:${e.deviceId}(${e.memberId})`}function vP(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var yP=class{constructor(){h(this,`tsBuffer`,new Map)}isOutdated(e,t){var n=_P(e);this.tsBuffer.has(n)||this.tsBuffer.set(n,new Map);var r=this.tsBuffer.get(n)?.get(t.keyIndex);return r&&r>t.creationTS?!0:(this.tsBuffer.get(n).set(t.keyIndex,t.creationTS),!1)}};function bP(e){var t=lO(e.split(`#`)),n=t[0],r=t[1];if(vP(t).slice(2).length)throw Error(`MatrixRTC Slot IDs *must* only contain two components seperated by one '#'. Additional '#' characters detected.`);return{application:n,id:r}}function xP(e){return`${e.application}#${e.id}`}var SP=class extends AggregateError{constructor(e,t){super(t,`Does not match ${e}: 18 ${t.join(` 19 `)}`),this.type=e}},CP=e=>{var t=` - `,n=[];if(typeof e.device_id!=`string`&&n.push(t+`device_id must be string`),typeof e.call_id!=`string`&&n.push(t+`call_id must be string`),typeof e.application!=`string`&&n.push(t+`application must be a string`),e.focus_active===void 0&&n.push(t+`focus_active has an invalid type`),typeof e.focus_active?.type!=`string`&&n.push(t+`focus_active.type must be a string`),e.foci_preferred!==void 0&&!(Array.isArray(e.foci_preferred)&&e.foci_preferred.every(e=>typeof e==`object`&&!!e&&typeof e.type==`string`))&&n.push(t+`foci_preferred must be an array of transport objects`),e.created_ts!==void 0&&typeof e.created_ts!=`number`&&n.push(t+`created_ts must be number`),e.scope!==void 0&&typeof e.scope!=`string`&&n.push(t+`scope must be string`),e[`m.call.intent`]!==void 0&&typeof e[`m.call.intent`]!=`string`&&n.push(t+`m.call.intent must be a string`),n.length)throw new SP(`SessionMembership`,n);return!0};function wP(e){return TP.apply(this,arguments)}function TP(){return TP=C(function*(e){if(!globalThis.crypto.subtle)throw Error(`Crypto.subtle is not available: insecure context?`);var t=new TextEncoder().encode(e),n=yield globalThis.crypto.subtle.digest(`SHA-256`,t);return new Uint8Array(n)}),TP.apply(this,arguments)}var EP=(e,t)=>{var n,r=[],i=` - `,a=`${e==null||(n=e.application)==null?void 0:n.type}#`;if(typeof e.slot_id!=`string`)r.push(i+`slot_id must be string`);else if(!e.slot_id.startsWith(a))r.push(i+`slot_id must start with ${a}`);else try{bP(e.slot_id)}catch(e){r.push(i+`slot_id was badly formed${e instanceof Error?`: ${e.message}`:``}`)}if(typeof e.member!=`object`||e.member===null?r.push(i+`member must be an object`):(typeof e.member.user_id==`string`?vO.test(e.member.user_id)?e.member.user_id!==t&&r.push(i+`member.user_id must match the sender`):r.push(i+`member.user_id must be a valid mxid`):r.push(i+`member.user_id must be string`),typeof e.member.device_id!=`string`&&r.push(i+`member.device_id must be string`),typeof e.member.id!=`string`&&r.push(i+`member.id must be string`)),typeof e.application!=`object`||e.application===null?r.push(i+`application must be an object`):typeof e.application.type==`string`?e.application.type.includes(`#`)&&r.push(i+`application.type must not include "#"`):r.push(i+`application.type must be a string`),e.rtc_transports===void 0||!Array.isArray(e.rtc_transports))r.push(i+`rtc_transports must be an array`);else for(var o of e.rtc_transports)if(typeof o!=`object`||!o||typeof o.type!=`string`){r.push(i+`rtc_transports entries must be objects with a string type`);break}if(e.versions===void 0||!Array.isArray(e.versions)?r.push(i+`versions must be an array`):e.versions.every(e=>typeof e==`string`)||r.push(i+`versions must be an array of strings`),(e.sticky_key??e.msc4354_sticky_key)===void 0&&r.push(i+`sticky_key or msc4354_sticky_key must be a defined`),e.sticky_key!==void 0&&typeof e.sticky_key!=`string`&&r.push(i+`sticky_key must be a string`),e.msc4354_sticky_key!==void 0&&typeof e.msc4354_sticky_key!=`string`&&r.push(i+`msc4354_sticky_key must be a string`),e.sticky_key!==void 0&&e.msc4354_sticky_key!==void 0&&e.sticky_key!==e.msc4354_sticky_key&&r.push(i+`sticky_key and msc4354_sticky_key must be equal if both are defined`),e[`m.relates_to`]!==void 0){var s=e[`m.relates_to`];typeof s!=`object`||!s?r.push(i+`m.relates_to must be an object if provided`):(typeof s.event_id!=`string`&&r.push(i+`m.relates_to.event_id must be a string`),s.rel_type!==`m.reference`&&r.push(i+`m.relates_to.rel_type must be m.reference`))}if(r.length)throw new SP(`RtcMembership`,r);return!0};function DP(e,t,n){return OP.apply(this,arguments)}function OP(){return OP=C(function*(e,t,n){return fj(yield wP(JSON.stringify([e,t,n])))}),OP.apply(this,arguments)}var kP=1e3*60*60*4,J=function(e){return e.RTC=`rtc`,e.Session=`session`,e}(J||{}),AP=class e{static membershipDataFromMatrixEvent(e){var t=e.getSender(),n=e.getType(),r=e.getContent();if(t===void 0)throw Error(`matrixEvent is missing sender field`);try{if(n===E.RTCMembership&&EP(r,t))return{kind:J.RTC,data:r};if(n===E.GroupCallMemberPrefix&&CP(r))return{kind:J.Session,data:r};throw Error(`'${n} is not a known call membership type`)}catch(e){throw e instanceof SP&&w.debug(`CallMembership.MatrixRTCMembershipParseError provided invalid data`,r),e}}static parseFromEvent(t){var n=this;return C(function*(){var r=n.membershipDataFromMatrixEvent(t);return new e(t,r,r.kind===J.RTC?yield DP(r.data.member.user_id,r.data.member.device_id,r.data.member.id):`${t.getSender()}:${r.data.device_id}`)})()}static equal(e,t){return NE(e?.membershipData,t?.membershipData)}constructor(e,t,n){this.matrixEvent=e,this.membershipData=t,this.rtcBackendIdentity=n,h(this,`logger`,void 0),h(this,`matrixEventData`,void 0);var r=e.getId(),i=e.getSender();if(r===void 0)throw Error(`parentEvent is missing eventId field`);if(i===void 0)throw Error(`parentEvent is missing sender field`);this.logger=w.getChild(`[CallMembership ${i}:${this.deviceId}]`),this.matrixEventData={eventId:r,sender:i}}get sender(){return this.userId}get userId(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return n.member.user_id;case J.Session:default:return this.matrixEventData.sender}}get eventId(){return this.matrixEventData.eventId}get slotId(){var e,t=this.membershipData,n=t.kind,r=t.data;if(r.application===`m.call`)switch(n){case J.RTC:return r.slot_id;case J.Session:default:var i=[r.application,r.call_id],a=i[0],o=i[1],s;if(o===``){var c;s=`ROOM`,(c=this.logger)==null||c.info(`use slotId compat hack emptyString -> ROOM`)}else s=o;return xP({application:a,id:s})}switch((e=this.logger)==null||e.info(`NOT using slotId compat hack emptyString -> ROOM`),n){case J.RTC:return r.slot_id;case J.Session:default:return xP({application:r.application,id:r.call_id})}}get deviceId(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return n.member.device_id;case J.Session:default:return n.device_id}}get callIntent(){var e=this.applicationData[`m.call.intent`];if(typeof e==`string`)return e;this.logger.warn(`RTC membership has invalid m.call.intent`)}get slotDescription(){var e=this.membershipData,t=e.kind,n=e.data;if(t===J.RTC){var r=n.slot_id.slice(`${n.application.type}#`.length);return{application:n.application.type,id:r}}return bP(this.slotId)}get application(){return this.applicationData.type}get applicationData(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return n.application;case J.Session:default:return{type:n.application,"m.call.intent":n[`m.call.intent`]}}}get scope(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return;case J.Session:default:return n.scope}}get memberId(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case`rtc`:return n.member.id;case`session`:return n.membershipID??`${this.matrixEventData.sender}:${n.device_id}`;default:throw Error(`Not possible to get memberID without knowing the membership event kind`)}}get membershipID(){return this.memberId}createdTs(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return this.matrixEvent.getTs();case J.Session:default:return n.created_ts??this.matrixEvent.getTs()}}getAbsoluteExpiry(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return;case J.Session:default:return this.createdTs()+(n.expires??kP)}}getMsUntilExpiry(){if(this.membershipData.kind===J.Session){var e=this.getAbsoluteExpiry();if(e)return e-Date.now()}}isExpired(){switch(this.membershipData.kind){case J.RTC:return!1;case J.Session:default:return this.getMsUntilExpiry()<=0}}getTransport(t){var n=this.membershipData,r=n.kind,i=n.data;switch(r){case J.RTC:return i.rtc_transports[0];case J.Session:switch(i.focus_active.focus_selection){case`oldest_membership`:if(e.equal(this,t))return i.foci_preferred[0];if(t!==void 0)return t.getTransport(t);break;case`multi_sfu`:return i.foci_preferred[0];default:return}break;default:return}}get transports(){var e=this.membershipData,t=e.kind,n=e.data;switch(t){case J.RTC:return n.rtc_transports;case J.Session:default:return n.foci_preferred}}},jP=function(e){return e.Disconnected=`Disconnected`,e.Connecting=`Connecting`,e.Connected=`Connected`,e.Disconnecting=`Disconnecting`,e.Unknown=`Unknown`,e}({}),MP=(e,t,n)=>e.sender===t&&e.deviceId===n,NP=class{constructor(e,t){this.membershipLoopHandler=e,h(this,`logger`,void 0),h(this,`running`,!1),h(this,`wakeup`,e=>{this.logger.error("Cannot call wakeup before calling `startWithJoin()`")}),h(this,`_actions`,[]),this.logger=(t??w).getChild(`[NewMembershipActionScheduler]`)}get actions(){return this._actions}startWithJoin(){var e=this;return C(function*(){if(e.running){e.logger.error(`Cannot call startWithJoin() on NewMembershipActionScheduler while already running`);return}e.running=!0,e._actions=[{ts:Date.now(),type:Y.SendDelayedEvent}];try{for(var t=function*(){e._actions.sort((e,t)=>e.ts-t.ts);var t=e._actions[0],n=void 0,r=new Promise(t=>{e.wakeup=e=>{n=e,t()}});t.ts>Date.now()&&(yield Promise.race([r,UE(t.ts-Date.now())]));var i={};if(!n){e.logger.debug(`Current MembershipManager processing: ${t.type} 20 Queue:`,e._actions,` 21 Date.now: "${Date.now()}`);try{i=yield e.membershipLoopHandler(t.type)}catch(e){throw Error(`The MembershipManager shut down because of the end condition: ${e}`,{cause:e})}}e._actions.splice(0,1);var a=n??i;`replace`in a?e._actions=a.replace:`insert`in a&&e._actions.push(...a.insert)};e._actions.length>0;)yield*t()}finally{e.running=!1}e.logger.debug(`Leave MembershipManager ActionScheduler loop (no more actions)`)})()}initiateJoin(){var e;(e=this.wakeup)==null||e.call(this,{replace:[{ts:Date.now(),type:Y.SendDelayedEvent}]})}initiateLeave(){var e;(e=this.wakeup)==null||e.call(this,{replace:[{ts:Date.now(),type:Y.SendScheduledDelayedLeaveEvent}]})}},PP=function(e){return e.TooNew=`TOO_NEW`,e}({}),FP=class extends Error{constructor(e){var t=`Crypto store is invalid because ${e}, please stop the client, delete all data and start the client again`;super(t),this.reason=e,this.name=`InvalidCryptoStoreError`}};h(FP,`TOO_NEW`,PP.TooNew);var IP=class extends Error{constructor(){super(`MatrixClient has been stopped`)}},LP=class extends Error{constructor(e,t){super(e),this.clientEndpoint=t,this.name=`UnsupportedDelayedEventsEndpointError`}},RP=class extends Error{constructor(e,t){super(e),this.clientEndpoint=t,this.name=`UnsupportedStickyEventsEndpointError`}},zP=function(e){return e.StatusChanged=`StatusChanged`,e.ProbablyLeft=`ProbablyLeft`,e.DelayIdChanged=`DelayIdChanged`,e}({}),BP=e=>e.type===`livekit`&&`livekit_service_url`in e;function VP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function HP(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?VP(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):VP(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var UP=3600*1e3,Y=function(e){return e.SendDelayedEvent=`SendDelayedEvent`,e.SendJoinEvent=`SendJoinEvent`,e.RestartDelayedEvent=`RestartDelayedEvent`,e.UpdateExpiry=`UpdateExpiry`,e.SendScheduledDelayedLeaveEvent=`SendScheduledDelayedLeaveEvent`,e.SendLeaveEvent=`SendLeaveEvent`,e}({});function WP(e,t){return{insert:[{ts:Date.now()+(t??0),type:e}]}}function GP(e,t){return{replace:[{ts:Date.now()+(t??0),type:e}]}}var KP=class e extends O{isActivated(){return this.activated}isJoined(){return this.isActivated()}join(t,n,r){if(this.scheduler.running){this.logger.error(`MembershipManager is already running. Ignoring join request.`);return}this.fociPreferred=t,this.rtcTransport=n,this.leavePromiseResolvers=void 0,this.activated=!0,this.oldStatus=this.status,this.state=e.defaultState,this.scheduler.startWithJoin().catch(e=>{this.logger.error(`MembershipManager stopped because: `,e),r?.(e)}).finally(()=>{if(this.activated=!1,this.oldStatus&&this.oldStatus!==this.status&&this.emit(zP.StatusChanged,this.oldStatus,this.status),!this.scheduler.running){var e;(e=this.leavePromiseResolvers)==null||e.resolve(!0),this.leavePromiseResolvers=void 0}})}leave(e){return this.scheduler.running?(this.leavePromiseResolvers||(this.leavePromiseResolvers=Promise.withResolvers(),this.activated=!1,this.scheduler.initiateLeave(),e&&setTimeout(()=>this.leavePromiseResolvers?.resolve(!1),e)),this.leavePromiseResolvers.promise):(this.logger.warn(`Called MembershipManager.leave() even though the MembershipManager is not running`),Promise.resolve(!0))}onRTCSessionMemberUpdate(e){if(!this.isActivated())return Promise.resolve();if(this._ownMembership=e.find(e=>MP(e,this.userId,this.deviceId)),!this._ownMembership){var t=[Y.SendDelayedEvent,Y.SendJoinEvent];this.logger.warn(`Missing own membership: force re-join`),this.state.hasMemberStateEvent=!1,this.scheduler.actions.some(e=>t.includes(e.type))?this.logger.error("tried adding another `SendDelayedEvent` actions even though we already have one in the Queue\nActionQueueOnMemberUpdate:",this.scheduler.actions):this.scheduler.initiateJoin()}return Promise.resolve()}updateCallIntent(e){var t=this;return C(function*(){if(!t.activated||!t.ownMembership)throw Error(`You cannot update your intent before joining the call`);t.ownMembership.callIntent!==e&&(t.callIntent=e,yield t.sendJoinEvent())})()}constructor(t,n,r,i,a){super(),this.joinConfig=t,this.room=n,this.client=r,this.slotDescription=i,h(this,`activated`,!1),h(this,`logger`,void 0),h(this,`callIntent`,void 0),h(this,`leavePromiseResolvers`,void 0),h(this,`_ownMembership`,void 0),h(this,`oldStatus`,void 0),h(this,`scheduler`,void 0),h(this,`state`,void 0),h(this,`deviceId`,void 0),h(this,`userId`,void 0),h(this,`stateKey`,void 0),h(this,`rtcTransport`,void 0),h(this,`fociPreferred`,void 0),h(this,`delayedLeaveEventDelayMsOverride`,void 0),h(this,`clientSendDelayedDisconnectMembership`,()=>this.client._unstable_sendDelayedStateEvent(this.room.roomId,{delay:this.delayedLeaveEventDelayMs},E.GroupCallMemberPrefix,{},this.stateKey)),h(this,`clientSendMembership`,e=>this.client.sendStateEvent(this.room.roomId,E.GroupCallMemberPrefix,e,this.stateKey)),this.logger=(a??w).getChild(`[MembershipManager]`);var o=[this.client.getUserId(),this.client.getDeviceId()],s=o[0],c=o[1];if(s===null)throw Error(`Missing userId in client`);if(c===null)throw Error(`Missing deviceId in client`);this.deviceId=c,this.userId=s,this.stateKey=this.makeMembershipStateKey(s,c),this.state=e.defaultState,this.callIntent=t?.callIntent,this.scheduler=new NP(e=>(this.oldStatus&&(this.logger.debug(`MembershipManager applied action changes. Status: ${this.oldStatus} -> ${this.status}`),this.oldStatus!==this.status&&this.emit(zP.StatusChanged,this.oldStatus,this.status)),this.oldStatus=this.status,this.logger.debug(`MembershipManager before processing action. status=${this.oldStatus}`),this.membershipLoopHandler(e)),this.logger)}get ownMembership(){return this._ownMembership}static get defaultState(){return{hasMemberStateEvent:!1,delayId:void 0,startTime:0,rateLimitRetries:new Map,networkErrorRetries:new Map,expireUpdateIterations:1,probablyLeft:!1}}get networkErrorRetryMs(){return this.joinConfig?.networkErrorRetryMs??3e3}get membershipEventExpiryMs(){return this.joinConfig?.membershipEventExpiryMs??kP}get membershipEventExpiryHeadroomMs(){return this.joinConfig?.membershipEventExpiryHeadroomMs??5e3}computeNextExpiryActionTs(e){return this.state.startTime+Math.min(this.membershipEventExpiryMs,UP)*e-this.membershipEventExpiryHeadroomMs}get delayedLeaveEventDelayMs(){return this.delayedLeaveEventDelayMsOverride??this.joinConfig?.delayedLeaveEventDelayMs??8e3}get delayedLeaveEventRestartMs(){return this.joinConfig?.delayedLeaveEventRestartMs??5e3}get maximumRateLimitRetryCount(){return this.joinConfig?.maximumRateLimitRetryCount??10}get maximumNetworkErrorRetryCount(){return this.joinConfig?.maximumNetworkErrorRetryCount??10}get delayedLeaveEventRestartLocalTimeoutMs(){return this.joinConfig?.delayedLeaveEventRestartLocalTimeoutMs??2e3}membershipLoopHandler(e){var t=this;return C(function*(){switch(e){case Y.SendDelayedEvent:return t.state.delayId?t.cancelKnownDelayIdBeforeSendDelayedEvent(t.state.delayId):t.sendOrResendDelayedLeaveEvent();case Y.RestartDelayedEvent:return t.state.delayId?t.restartDelayedEvent(t.state.delayId):WP(Y.SendDelayedEvent);case Y.SendScheduledDelayedLeaveEvent:return t.state.hasMemberStateEvent?t.state.delayId?t.sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(t.state.delayId):WP(Y.SendLeaveEvent):{replace:[]};case Y.SendJoinEvent:return t.sendJoinEvent();case Y.UpdateExpiry:return t.updateExpiryOnJoinedEvent();case Y.SendLeaveEvent:return t.state.hasMemberStateEvent?t.sendFallbackLeaveEvent():{replace:[]}}})()}sendOrResendDelayedLeaveEvent(){var e=this;return C(function*(){return yield e.clientSendDelayedDisconnectMembership().then(t=>(e.state.expectedServerDelayLeaveTs=Date.now()+e.delayedLeaveEventDelayMs,e.setAndEmitProbablyLeft(!1),e.resetRateLimitCounter(Y.SendDelayedEvent),e.setAndEmitDelayId(t.delay_id),e.state.hasMemberStateEvent?WP(Y.RestartDelayedEvent,e.delayedLeaveEventRestartMs):WP(Y.SendJoinEvent))).catch(t=>{var n=Y.SendDelayedEvent;if(e.manageMaxDelayExceededSituation(t))return WP(n);var r=e.actionUpdateFromErrors(t,n,`_unstable_sendDelayedStateEvent`);if(r)return r;if(e.state.hasMemberStateEvent){if(e.isUnsupportedDelayedEndpoint(t))return{};throw Error(`Could not send delayed event, even though delayed events are supported. `+t)}else return e.isUnsupportedDelayedEndpoint(t)?e.logger.info(`Not using delayed event because the endpoint is not supported`):e.logger.info(`Not using delayed event because: `+t),WP(Y.SendJoinEvent)})})()}cancelKnownDelayIdBeforeSendDelayedEvent(e){var t=this;return C(function*(){return yield t.client._unstable_cancelScheduledDelayedEvent(e).then(()=>(t.setAndEmitDelayId(void 0),t.resetRateLimitCounter(Y.SendDelayedEvent),GP(Y.SendDelayedEvent))).catch(e=>{var n=Y.SendDelayedEvent,r=t.actionUpdateFromErrors(e,n,`cancelScheduledDelayedEvent`);if(r)return r;if(t.isNotFoundError(e))return t.setAndEmitDelayId(void 0),GP(n);if(t.isUnsupportedDelayedEndpoint(e))return GP(Y.SendJoinEvent);throw Error(`We failed to cancel a delayed event where we already had a delay id with an error we cannot automatically handle`)})})()}setAndEmitProbablyLeft(e){this.state.probablyLeft!==e&&(this.state.probablyLeft=e,this.emit(zP.ProbablyLeft,this.state.probablyLeft))}setAndEmitDelayId(e){this.state.delayId!==e&&(this.state.delayId=e,this.emit(zP.DelayIdChanged,this.state.delayId))}restartDelayedEvent(e){var t=this;return C(function*(){var n=t.state.expectedServerDelayLeaveTs?t.state.expectedServerDelayLeaveTs-Date.now():void 0,r=new Promise((e,r)=>{setTimeout(()=>{r(new uE(`Restart delayed event timed out before the HS responded`))},n!==void 0&&!t.state.probablyLeft?Math.min(t.delayedLeaveEventRestartLocalTimeoutMs,n):t.delayedLeaveEventRestartLocalTimeoutMs)});return yield Promise.race([t.client._unstable_restartScheduledDelayedEvent(e),r]).then(()=>(t.state.expectedServerDelayLeaveTs=Date.now()+t.delayedLeaveEventDelayMs,t.resetRateLimitCounter(Y.RestartDelayedEvent),t.setAndEmitProbablyLeft(!1),WP(Y.RestartDelayedEvent,t.delayedLeaveEventRestartMs))).catch(e=>{t.state.expectedServerDelayLeaveTs&&t.state.expectedServerDelayLeaveTs<=Date.now()&&t.setAndEmitProbablyLeft(!0);var n=Y.RestartDelayedEvent;if(t.isNotFoundError(e))return t.setAndEmitDelayId(void 0),WP(Y.SendDelayedEvent);if(t.isUnsupportedDelayedEndpoint(e))return{};var r=t.actionUpdateFromErrors(e,n,`restartScheduledDelayedEvent`);if(r)return r;throw Error(`Could not restart delayed event, even though delayed events are supported. `+e)})})()}sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(e){var t=this;return C(function*(){return yield t.client._unstable_sendScheduledDelayedEvent(e).then(()=>(t.state.hasMemberStateEvent=!1,t.setAndEmitDelayId(void 0),t.resetRateLimitCounter(Y.SendScheduledDelayedLeaveEvent),{replace:[]})).catch(e=>{var n=Y.SendLeaveEvent;return t.isUnsupportedDelayedEndpoint(e)?{}:t.isNotFoundError(e)?(t.setAndEmitDelayId(void 0),WP(n)):t.actionUpdateFromErrors(e,n,`sendScheduledDelayedEvent`)||(t.logger.warn(`Encountered unexpected error during SendScheduledDelayedLeaveEvent. Falling back to SendLeaveEvent`,e),WP(n))})})()}sendJoinEvent(){var e=this;return C(function*(){return yield e.clientSendMembership(e.makeMyMembership(e.membershipEventExpiryMs)).then(()=>(e.setAndEmitProbablyLeft(!1),e.state.startTime=Date.now(),e.state.expireUpdateIterations=1,e.state.hasMemberStateEvent=!0,e.resetRateLimitCounter(Y.SendJoinEvent),{replace:[...e.scheduler.actions.filter(e=>e.type!==Y.UpdateExpiry&&e.type!==Y.SendJoinEvent),{ts:Date.now(),type:Y.RestartDelayedEvent},{ts:e.computeNextExpiryActionTs(e.state.expireUpdateIterations),type:Y.UpdateExpiry}]})).catch(t=>{var n=e.actionUpdateFromErrors(t,Y.SendJoinEvent,`sendStateEvent`);if(n)return n;throw t})})()}updateExpiryOnJoinedEvent(){var e=this;return C(function*(){var t=e.state.expireUpdateIterations+1;return yield e.clientSendMembership(e.makeMyMembership(e.membershipEventExpiryMs*t)).then(()=>(e.resetRateLimitCounter(Y.UpdateExpiry),e.state.expireUpdateIterations=t,{insert:[{ts:e.computeNextExpiryActionTs(t),type:Y.UpdateExpiry}]})).catch(t=>{var n=e.actionUpdateFromErrors(t,Y.UpdateExpiry,`sendStateEvent`);if(n)return n;throw t})})()}sendFallbackLeaveEvent(){var e=this;return C(function*(){return yield e.clientSendMembership({}).then(()=>(e.resetRateLimitCounter(Y.SendLeaveEvent),e.state.hasMemberStateEvent=!1,{replace:[]})).catch(t=>{var n=e.actionUpdateFromErrors(t,Y.SendLeaveEvent,`sendStateEvent`);if(n)return n;throw t})})()}makeMembershipStateKey(e,t){var n=this.slotDescription.application,r=`${e}_${t}_${n}${n===`m.call`&&this.slotDescription.id===`ROOM`?``:this.slotDescription.id}`;return/^org\.matrix\.msc(3757|3779)\b/.exec(this.room.getVersion())?r:`_${r}`}makeMyMembership(e){var t=this.ownMembership,n=this.slotDescription.application===`m.call`&&this.slotDescription.id===`ROOM`,r=this.rtcTransport===void 0?{focus_active:{type:`livekit`,focus_selection:`oldest_membership`},foci_preferred:this.fociPreferred??[]}:{focus_active:{type:`livekit`,focus_selection:`multi_sfu`},foci_preferred:[this.rtcTransport,...this.fociPreferred??[]]};return HP(HP({application:this.slotDescription.application,call_id:n?``:this.slotDescription.id,scope:`m.room`,device_id:this.deviceId,membershipID:`${this.userId}:${this.deviceId}`,expires:e,"m.call.intent":this.callIntent},r),t===void 0?void 0:{created_ts:t.createdTs()})}isNotFoundError(e){return e instanceof I&&e.errcode===`M_NOT_FOUND`}manageMaxDelayExceededSituation(e){if(e instanceof I&&e.errcode===`M_UNKNOWN`&&e.data[`org.matrix.msc4140.errcode`]===`M_MAX_DELAY_EXCEEDED`){var t=e.data[`org.matrix.msc4140.max_delay`];return typeof t==`number`&&this.delayedLeaveEventDelayMs>t&&(this.delayedLeaveEventDelayMsOverride=t),this.logger.warn(`Retry sending delayed disconnection event due to server timeout limitations:`,e),!0}return!1}actionUpdateFromErrors(e,t,n){var r=this.actionUpdateFromRateLimitError(e,n,t);if(r)return r;var i=this.actionUpdateFromNetworkErrorRetry(e,t);if(i)return i}actionUpdateFromRateLimitError(e,t,n){if((e instanceof Uk||e instanceof I)&&e.isRateLimitError()){var r=this.state.rateLimitRetries.get(n)??0;if(r<this.maximumRateLimitRetryCount){var i,a=5e3;try{i=e.getRetryAfterMs()??a,this.logger.info(`Rate limited by server, retrying in ${i}ms`)}catch(e){this.logger.warn(`Error while retrieving a rate-limit retry delay, retrying after default delay of ${a}`,e),i=a}return this.state.rateLimitRetries.set(n,r+1),WP(n,i)}throw Error(`Exceeded maximum retries for `+n+` attempts (client.`+t+`)`,{cause:e})}}actionUpdateFromNetworkErrorRetry(e,t){var n=this.state.networkErrorRetries.get(t)??0,r=this.networkErrorRetryMs/1e3+`s`,i=`(`+n+`/`+this.maximumNetworkErrorRetryCount+`)`,a=this.networkErrorRetryMs;if(e instanceof Error&&e.name===`AbortError`)a=0,this.logger.warn(`Network local timeout error while sending event, immediate retry (`+i+`)`,e);else if(e instanceof Error&&e.message.includes(`updating delayed event`))this.logger.warn(`delayed event update timeout error, retrying in `+r+` `+i,e);else if(e instanceof Gk)this.logger.warn(`Network connection error while sending event, retrying in `+r+` `+i,e);else if((e instanceof Uk||e instanceof I)&&typeof e.httpStatus==`number`&&e.httpStatus>=500&&e.httpStatus<600)this.logger.warn(`Server error while sending event, retrying in `+r+` `+i,e);else return;if(n<this.maximumNetworkErrorRetryCount)return this.state.networkErrorRetries.set(t,n+1),WP(t,a);throw Error(`Reached maximum (`+this.maximumNetworkErrorRetryCount+`) retries cause by: `+e)}isUnsupportedDelayedEndpoint(e){return e instanceof LP}resetRateLimitCounter(e){this.state.rateLimitRetries.set(e,0),this.state.networkErrorRetries.set(e,0)}get status(){var e=this.scheduler.actions;if(e.length===1)switch(e[0].type){case Y.SendDelayedEvent:case Y.SendJoinEvent:return jP.Connecting;case Y.UpdateExpiry:return jP.Connected;case Y.SendScheduledDelayedLeaveEvent:case Y.SendLeaveEvent:return jP.Disconnecting;default:}else if(e.length===2){var t=e.map(e=>e.type);if((t.includes(Y.RestartDelayedEvent)||t.includes(Y.SendDelayedEvent)&&this.state.hasMemberStateEvent)&&t.includes(Y.UpdateExpiry))return jP.Connected}else if(e.length===3){var n=e.map(e=>e.type);if(n.filter(e=>e===Y.RestartDelayedEvent).length===2&&n.includes(Y.UpdateExpiry))return jP.Connected}return this.scheduler.running?(this.logger.error(`MembershipManager has an unknown state. Actions: `,e),jP.Unknown):jP.Disconnected}get probablyLeft(){return this.state.probablyLeft}get delayId(){return this.state.delayId}},qP=class e extends KP{constructor(e,t,n,r,i,a){super(e,t,n,r,a),this.clientWithSticky=n,this.memberId=i,h(this,`clientSendDelayedDisconnectMembership`,()=>this.clientWithSticky._unstable_sendStickyDelayedEvent(this.room.roomId,UP,{delay:this.delayedLeaveEventDelayMs},null,E.RTCMembership,{msc4354_sticky_key:this.memberId})),h(this,`clientSendMembership`,e=>this.clientWithSticky._unstable_sendStickyEvent(this.room.roomId,UP,null,E.RTCMembership,HP(HP({},e),{},{msc4354_sticky_key:this.memberId})))}actionUpdateFromErrors(t,n,r){return super.actionUpdateFromErrors(t,n,e.nameMap.get(r)??`unknown`)}makeMyMembership(){var e=this.ownMembership,t=BP(this.rtcTransport)?this.rtcTransport:void 0,n=e!=null&&e.eventId?{"m.relation":{rel_type:D.Reference,event_id:e?.eventId}}:{};return HP({application:HP({type:this.slotDescription.application},this.callIntent?{"m.call.intent":this.callIntent}:{}),slot_id:xP(this.slotDescription),rtc_transports:t?[{type:t.type,livekit_service_url:t.livekit_service_url}]:[],member:{device_id:this.deviceId,user_id:this.userId,id:this.memberId},versions:[]},n)}};h(qP,`nameMap`,new Map([[`sendStateEvent`,`_unstable_sendStickyEvent`],[`sendDelayedStateEvent`,`_unstable_sendStickyDelayedEvent`]]));var JP=function(e){return e.ReceivedKeys=`received_keys`,e.NotSupportedError=`not_supported_error`,e}({}),YP=class{constructor(e,t,n,r,i,a){this.ownMembership=e,this.getMemberships=t,this.transport=n,this.onEncryptionKeysChanged=r,h(this,`manageMediaKeys`,!1),h(this,`useHashedRtcBackendIdentity`,!1),h(this,`ownRtcBackendIdentityCache`,void 0),h(this,`participantKeyRings`,new Map),h(this,`outboundSession`,null),h(this,`currentKeyDistributionPromise`,null),h(this,`useKeyDelay`,5e3),h(this,`keyRotationGracePeriodMs`,1e4),h(this,`needToEnsureKeyAgain`,!1),h(this,`keyBuffer`,new yP),h(this,`logger`,void 0),h(this,`rtcIdentityProvider`,void 0),h(this,`keysWithoutMatchingRTCMembership`,[]),h(this,`onNewKeyReceived`,(e,t,n,r)=>{var i;if(!this.manageMediaKeys){var a;(a=this.logger)==null||a.warn(`Received key over transport ${e.userId}:${e.deviceId} at index ${n} but media keys are disabled`);return}(i=this.logger)==null||i.debug(`Received key over transport ${e.userId}:${e.deviceId} at index ${n}`);var o={key:hj(t),membership:e,keyIndex:n,creationTS:r};if(!this.keyBuffer.isOutdated(e,o))this.addKeyToParticipant(o.key,o.keyIndex,o.membership);else{var s;(s=this.logger)==null||s.info(`Received an out of order key for ${e.userId}:${e.deviceId}, dropping it`)}}),this.logger=i?.getChild(`[EncryptionManager]`),this.rtcIdentityProvider=a??DP}getOwnRtcBackendIdentity(){var e=this;return C(function*(){if(e.ownRtcBackendIdentityCache)return e.ownRtcBackendIdentityCache;if(e.useHashedRtcBackendIdentity){var t,n=e.ownMembership,r=n.userId,i=n.deviceId,a=n.memberId;(t=e.logger)==null||t.info(`Computing RTC backend identity for ${r}:${i}:${a} (SHOULD ONLY BE CALLED ONCE)`),e.ownRtcBackendIdentityCache=yield e.rtcIdentityProvider(r,i,a)}else e.ownRtcBackendIdentityCache=`${e.ownMembership.userId}:${e.ownMembership.deviceId}`;return e.ownRtcBackendIdentityCache})()}getEncryptionKeys(){return new Map(this.participantKeyRings)}checkKeysWithoutMatchingRTCMembership(){var e=this.keysWithoutMatchingRTCMembership;this.keysWithoutMatchingRTCMembership=[],e.forEach(e=>{this.addKeyToParticipant(e.key,e.keyIndex,e.membership)})}addKeyToParticipant(e,t,n){var r=this.getMemberships().find(e=>e.userId===n.userId&&e.deviceId===n.deviceId);if(!r){var i;(i=this.logger)==null||i.info(`No matching RTC membership for key from ${n.userId}:${n.deviceId}, delaying key addition`),this.keysWithoutMatchingRTCMembership.push({key:e,keyIndex:t,membership:n});return}this.addKeyToParticipantWithBackendIdentity(e,t,n,r.rtcBackendIdentity)}addKeyToParticipantWithBackendIdentity(e,t,n,r){var i=_P(n);this.participantKeyRings.has(i)||this.participantKeyRings.set(i,[]),this.participantKeyRings.get(i).push({key:e,keyIndex:t,membership:n,rtcBackendIdentity:r}),this.onEncryptionKeysChanged(e,t,n,r)}join(e){var t;this.manageMediaKeys=e?.manageMediaKeys??!0,this.useHashedRtcBackendIdentity=e?.unstableSendStickyEvents??!1,this.useKeyDelay=e?.useKeyDelay??1e3,this.keyRotationGracePeriodMs=e?.keyRotationGracePeriodMs??1e4,this.transport.on(JP.ReceivedKeys,this.onNewKeyReceived),this.getOwnRtcBackendIdentity(),(t=this.logger)==null||t.info(`Joining room`),this.transport.start()}leave(){this.transport.off(JP.ReceivedKeys,this.onNewKeyReceived),this.transport.stop(),this.participantKeyRings.clear()}ensureKeyDistribution(){if(this.manageMediaKeys)if(this.currentKeyDistributionPromise==null){var e;(e=this.logger)==null||e.debug(`No active rollout, start a new one`),this.currentKeyDistributionPromise=this.rolloutOutboundKey().then(()=>{var e;if((e=this.logger)==null||e.debug(`Rollout completed`),this.currentKeyDistributionPromise=null,this.needToEnsureKeyAgain){var t;(t=this.logger)==null||t.debug(`New Rollout needed`),this.needToEnsureKeyAgain=!1,this.ensureKeyDistribution()}})}else{var t;(t=this.logger)==null||t.debug(`Rollout in progress, a new rollout will be started after the current one`),this.needToEnsureKeyAgain=!0}}onMembershipsUpdate(){var e;arguments.length>0&&arguments[0]!==void 0&&arguments[0],(e=this.logger)==null||e.trace(`onMembershipsUpdate`),this.ensureKeyDistribution(),this.checkKeysWithoutMatchingRTCMembership()}rolloutOutboundKey(){var e=this;return C(function*(){if(e.outboundSession==null){var t={key:e.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:0};e.outboundSession=t,e.addKeyToParticipantWithBackendIdentity(t.key,t.keyId,e.ownMembership,yield e.getOwnRtcBackendIdentity())}var n=e.getMemberships().filter(e=>e.sender!=null).map(e=>({userId:e.sender,deviceId:e.deviceId,membershipTs:e.createdTs()})),r=e.outboundSession?.sharedWith??[];r=r.filter(e=>!n.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs!=t.membershipTs));var i=r.filter(e=>!n.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs==t.membershipTs)),a=n.filter(e=>!r.some(t=>e.userId==t.userId&&e.deviceId==t.deviceId&&e.membershipTs==t.membershipTs)),o=[],s,c=!1;if(i.length>0){var l=e.createNewOutboundSession();c=!0,o=n,s=l}else if(a.length>0){var u=Date.now()-e.outboundSession.creationTS;if(u<e.keyRotationGracePeriodMs){var d;(d=e.logger)==null||d.debug(`New joiners detected, but the key is recent enough (age:${u}), keeping it`),o=a,s=e.outboundSession}else{var f;(f=e.logger)==null||f.debug(`New joiners detected, rotating the key`);var p=e.createNewOutboundSession();c=!0,o=n,s=p}}else return;try{var m,h;if((m=e.logger)==null||m.trace(`Sending key...`),yield e.transport.sendKey(dj(s.key),s.keyId,o),s.sharedWith.push(...o),(h=e.logger)==null||h.trace(`key index:${s.keyId} sent to ${s.sharedWith.map(e=>`${e.userId}:${e.deviceId}`).join(`,`)}`),c){var g,_;(g=e.logger)==null||g.trace(`Delay Rollout for key:${s.keyId}...`),yield UE(e.useKeyDelay),(_=e.logger)==null||_.trace(`...Delayed rollout of index:${s.keyId} `),e.addKeyToParticipantWithBackendIdentity(s.key,s.keyId,e.ownMembership,yield e.getOwnRtcBackendIdentity())}}catch(t){var v;(v=e.logger)==null||v.error(`Failed to rollout key`,t)}})()}createNewOutboundSession(){var e,t={key:this.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:this.nextKeyIndex()};return(e=this.logger)==null||e.info(`creating new outbound key index:${t.keyId}`),this.outboundSession=t,t}nextKeyIndex(){return this.outboundSession?(this.outboundSession.keyId+1)%256:0}generateRandomKey(){var e=new Uint8Array(16);return globalThis.crypto.getRandomValues(e),e}},XP=class extends Error{constructor(e){super(e)}get name(){return`NotSupportedError`}},ZP=class extends O{setParentLogger(e){this.logger=e.getChild(`[ToDeviceKeyTransport]`)}constructor(e,t,n,r,i){super(),this.membership=e,this.roomId=t,this.client=n,this.statistics=r,h(this,`logger`,w),h(this,`onToDeviceEvent`,e=>{if(e.getType()===E.CallEncryptionKeysPrefix){var t=this.getValidEventContent(e);t&&e.getSender()&&this.receiveCallKeyEvent(e.getSender(),t)}}),this.setParentLogger(i??w)}start(){this.client.on(Z.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.off(Z.ToDeviceEvent,this.onToDeviceEvent)}sendKey(e,t,n){var r=this;return C(function*(){var i={keys:{index:t,key:e},room_id:r.roomId,member:{claimed_device_id:r.membership.deviceId,id:r.membership.memberId},session:{call_id:``,application:`m.call`,scope:`m.room`},sent_ts:Date.now()},a=n.map(e=>({userId:e.userId,deviceId:e.deviceId})).filter(e=>!(e.userId==r.membership.userId&&e.deviceId==r.membership.deviceId));a.length>0?(yield r.client.encryptAndSendToDevice(E.CallEncryptionKeysPrefix,a,i).catch(e=>{var t=e.message;if(t.includes(`unknown variant`)&&t.includes(`send_to_device`)||t.includes(`not supported`))throw new XP(`The widget driver does not support to-device encryption`)}),r.statistics.counters.roomEventEncryptionKeysSent+=1):r.logger.warn(`No targets found for sending key`)})()}receiveCallKeyEvent(e,t){this.statistics.counters.roomEventEncryptionKeysReceived+=1;var n=Date.now(),r=n-(typeof t.sent_ts==`number`?t.sent_ts:n);this.statistics.totals.roomEventEncryptionKeysReceivedTotalAge+=r;var i=`${e}:${t.member.claimed_device_id}`;this.emit(JP.ReceivedKeys,{userId:e,deviceId:t.member.claimed_device_id,memberId:t.member.id??i},t.keys.key,t.keys.index,n)}getValidEventContent(e){var t=e.getContent(),n=t.room_id;if(!n){this.logger.warn(`Malformed Event: invalid call encryption keys event, no roomId`);return}if(n!==this.roomId){this.logger.warn(`Malformed Event: Mismatch roomId`);return}if(!t.keys||!t.keys.key||typeof t.keys.index!=`number`){this.logger.warn(`Malformed Event: Missing keys field`);return}if(!t.member||!t.member.claimed_device_id){this.logger.warn(`Malformed Event: Missing claimed_device_id`);return}return t}};function QP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function $P(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?QP(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):QP(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var eF=function(e){return e.MembershipsChanged=`memberships_changed`,e.JoinStateChanged=`join_state_changed`,e.EncryptionKeyChanged=`encryption_key_changed`,e.MembershipManagerError=`membership_manager_error`,e.DidSendCallNotification=`did_send_call_notification`,e}({}),tF={listenForStickyEvents:!0,listenForMemberStateEvents:!0},nF=class e extends O{get membershipStatus(){return this.membershipManager?.status}get probablyLeft(){return this.membershipManager?.probablyLeft}get delayId(){return this.membershipManager?.delayId}get callId(){return this.slotDescription?.id}get slotId(){return xP(this.slotDescription)}static sessionMembershipsForSlot(e,t){var n=arguments;return C(function*(){var r=n.length>2&&n[2]!==void 0?n[2]:tF,i=w.getChild(`[MatrixRTCSession ${e.roomId} ${t.application}#${t.id}]`),a=yield rF(e,sF(e,r,i),t,i);return a.sort((e,t)=>e.createdTs()-t.createdTs()),a.length>1&&i.debug(`Call memberships in room ${e.roomId}, in order: `,a.map(e=>[e.createdTs(),e.userId])),a})()}static sessionForSlot(t,n,r,i){return new e(t,n,r,i)}get room(){return this.roomSubset}constructor(t,n,r,i){var a;super(),a=this,this.client=t,this.roomSubset=n,this.slotDescription=r,this.calculateMembershipsOpts=i,h(this,`membershipManager`,void 0),h(this,`encryptionManager`,void 0),h(this,`joinConfig`,void 0),h(this,`logger`,void 0),h(this,`pendingNotificationToSend`,void 0),h(this,`expiryTimeout`,void 0),h(this,`memberships`,[]),h(this,`initialMembershipCalculated`,void 0),h(this,`membershipNeedsRecalculation`,!1),h(this,`statistics`,{counters:{roomEventEncryptionKeysSent:0,roomEventEncryptionKeysReceived:0},totals:{roomEventEncryptionKeysReceivedTotalAge:0}}),h(this,`reEmitter`,new VO(this)),h(this,`onRoomMemberUpdate`,()=>{this.ensureRecalculateSessionMembers()}),h(this,`onStickyEventUpdate`,(e,t,n)=>{[...e,...n,...t.flatMap(e=>[e.current,e.previous])].some(e=>e.getType()===E.RTCMembership)&&this.ensureRecalculateSessionMembers()}),h(this,`_onRTCSessionMemberUpdate`,C(function*(){yield a.recalculateSessionMembers()})),h(this,`recalculateSessionMembersPromise`,Promise.resolve()),h(this,`recalculateSessionMembers`,C(function*(){var t;a.membershipNeedsRecalculation=!1;var n=a.memberships;if(a.memberships=yield e.sessionMembershipsForSlot(a.room,a.slotDescription,a.calculateMembershipsOpts),n.length!=a.memberships.length||n.some((e,t)=>!AP.equal(e,a.memberships[t]))){var r;a.logger.info(`Memberships for call in room ${a.roomSubset.roomId} have changed: emitting (${a.memberships.length} members)`),KE(a.logger,`emit MatrixRTCSessionEvent.MembershipsChanged`,()=>{a.emit(eF.MembershipsChanged,n,a.memberships)}),(r=a.membershipManager)==null||r.onRTCSessionMemberUpdate(a.memberships);var i=a.membershipManager?.ownMembership;if(a.pendingNotificationToSend&&i&&n.length===0){var o;i.eventId&&(o=a.joinConfig)!=null&&o.notificationType?a.sendCallNotify(i.eventId,a.joinConfig.notificationType,i.callIntent):a.logger.warn(`Own membership eventId is undefined, cannot send call notification`)}a.memberships.length>0&&(a.pendingNotificationToSend=void 0)}else a.logger.debug(`No membership changes detected for room ${a.roomSubset.roomId}`);(t=a.encryptionManager)==null||t.onMembershipsUpdate(n),a.setExpiryTimer()})),this.logger=w.getChild(`[MatrixRTCSession ${n.roomId} ${r.application}#${r.id}]`),this.roomSubset.on(j.Members,this.onRoomMemberUpdate),this.roomSubset.on(kA.Update,this.onStickyEventUpdate),this.initialMembershipCalculated=this.ensureRecalculateSessionMembers(),this.setExpiryTimer()}isJoined(){return this.membershipManager?.isJoined()??!1}stop(){var e=this;return C(function*(){yield e.membershipManager?.leave(1e3),e.expiryTimeout&&=(clearTimeout(e.expiryTimeout),void 0),e.roomSubset.off(j.Members,e.onRoomMemberUpdate),e.roomSubset.off(kA.Update,e.onStickyEventUpdate)})()}joinRTCSession(e,t,n,r){if(this.isJoined()){this.logger.info(`Already joined to session in room ${this.roomSubset.roomId}: ignoring join call`);return}else{this.membershipManager=r!=null&&r.unstableSendStickyEvents?new qP(r,this.roomSubset,this.client,this.slotDescription,e.memberId,this.logger):new KP(r,this.roomSubset,this.client,this.slotDescription,this.logger),this.reEmitter.reEmit(this.membershipManager,[zP.ProbablyLeft,zP.StatusChanged,zP.DelayIdChanged]);var i=[this.roomSubset,this.client,this.statistics],a=i[0],o=i[1],s=i[2],c=new ZP(e,a.roomId,o,s);this.encryptionManager=new YP(e,()=>this.memberships,c,(e,t,n,r)=>{this.emit(eF.EncryptionKeyChanged,e,t,n,r)},this.logger)}this.joinConfig=r,this.pendingNotificationToSend=this.joinConfig?.notificationType,this.membershipManager.join(t,n,e=>{this.logger.error(`MembershipManager encountered an unrecoverable error: `,e),this.emit(eF.MembershipManagerError,e),this.emit(eF.JoinStateChanged,this.isJoined())}),this.encryptionManager.join(r),this.emit(eF.JoinStateChanged,!0)}joinRoomSession(e,t,n){var r=this.client.getUserId(),i=this.client.getDeviceId(),a=`${r}:${i}`;this.joinRTCSession({userId:r,deviceId:i,memberId:a},e,t,n)}leaveRoomSession(){var e=arguments,t=this;return C(function*(){var n=e.length>0&&e[0]!==void 0?e[0]:void 0;if(!t.isJoined())return t.logger.info(`Not joined to session in room ${t.roomSubset.roomId}: ignoring leave call`),!1;t.logger.info(`Leaving call session in room ${t.roomSubset.roomId}`),t.encryptionManager.leave();var r=t.membershipManager.leave(n);return t.emit(eF.JoinStateChanged,!1),yield r})()}getFocusInUse(){var e=this.getOldestMembership();return e?.getTransport(e)}getOldestMembership(){return this.memberships[0]}getConsensusCallIntent(){var e=this.memberships.find(e=>!!e.callIntent)?.callIntent;if(e&&this.memberships.every(t=>!t.callIntent||t.callIntent===e))return e}updateCallIntent(e){var t=this;return C(function*(){if(!t.membershipManager?.ownMembership)throw Error(`Not connected yet`);yield t.membershipManager?.updateCallIntent(e)})()}reemitEncryptionKeys(){var e;(e=this.encryptionManager)==null||e.getEncryptionKeys().forEach((e,t)=>{e.forEach(e=>{this.emit(eF.EncryptionKeyChanged,e.key,e.keyIndex,e.membership,e.rtcBackendIdentity)})})}setExpiryTimer(){this.expiryTimeout&&=(clearTimeout(this.expiryTimeout),void 0);var e;for(var t of this.memberships){var n=t.getMsUntilExpiry();n!==void 0&&(e===void 0||n<e)&&(e=n)}e!=null&&(this.expiryTimeout=setTimeout(()=>void this.ensureRecalculateSessionMembers(),e))}sendCallNotify(e,t,n){var r=this;(function(){var i=C(function*(){var i={"m.mentions":{user_ids:[],room:!0},notification_type:t,"m.relates_to":{event_id:e,rel_type:D.Reference},sender_ts:Date.now(),lifetime:3e4};return n&&(i[`m.call.intent`]=n),{response:yield r.client.sendEvent(r.roomSubset.roomId,E.RTCNotification,i),content:i}});return function(){return i.apply(this,arguments)}})()().then(e=>{var t=$P($P({},e.response),e.content);this.emit(eF.DidSendCallNotification,t)}).catch(e=>{var t=x(e,2),n=t[0],r=t[1];return this.logger.error(`Failed to send call notification`,n,r)})}ensureRecalculateSessionMembers(){return this.membershipNeedsRecalculation?this.recalculateSessionMembersPromise:(this.membershipNeedsRecalculation=!0,this.recalculateSessionMembersPromise=this.recalculateSessionMembersPromise.then(()=>this.recalculateSessionMembers(),()=>this.recalculateSessionMembers()),this.recalculateSessionMembersPromise)}};function rF(e,t,n,r){return iF.apply(this,arguments)}function iF(){return iF=C(function*(e,t,n,r){var i=[];for(var a of t)if(aF(a.getContent(),r))try{var o=yield AP.parseFromEvent(a);oF(o,e,n,r)&&i.push(o)}catch(e){r.warn(`Couldn't construct call membership: `,e)}return i}),iF.apply(this,arguments)}function aF(e,t){var n=Object.keys(e).filter(e=>e!==`msc4354_sticky_key`).length;return n===0?!1:n>1&&`application`in e?!0:(n===1&&`memberships`in e,!1)}function oF(e,t,n,r){return e.slotDescription.id===n.id?e.isExpired()?(r.info(`Ignoring expired device membership ${e.userId}/${e.deviceId}`),!1):t.hasMembershipState(e.userId??``,k.Join)?!0:(r.info(`Ignoring membership of user ${e.userId} who is not in the room.`),!1):(r.info(`Ignoring membership of user ${e.userId} for a different slot. Theirs: ${JSON.stringify(e.slotDescription)}, Expected: ${JSON.stringify(n)}`),!1)}function sF(e,t,n){var r=t.listenForStickyEvents,i=t.listenForMemberStateEvents,a=[];if(r&&(a=[...e._unstable_getStickyEvents()].filter(e=>e.getType()===E.RTCMembership)),i){var o=e.getLiveTimeline().getState(N.FORWARDS);if(!o)return n.warn(`Couldn't get state for room `+e.roomId+`using empty membership array`),[];var s=o.getStateEvents(E.GroupCallMemberPrefix);a=a.concat(s.filter(e=>!a.some(t=>t.getContent().msc4354_sticky_key===e.getStateKey())))}return a}var cF=function(e){return e.SessionStarted=`session_started`,e.SessionEnded=`session_ended`,e}({}),lF=class extends O{constructor(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{application:`m.call`,id:`ROOM`};super(),this.client=t,this.slotDescription=n,h(this,`roomSessions`,new Map),h(this,`logger`,void 0),h(this,`onRoom`,e=>{this.refreshRoom(e)}),h(this,`onEvent`,e=>{if(e.unstableStickyExpiresAt&&e.getType()===E.RTCMembership){var t=this.client.getRoom(e.getRoomId());t&&this.refreshRoom(t)}}),h(this,`onRoomState`,e=>{if(e.getType()===E.GroupCallMemberPrefix){var t=this.client.getRoom(e.getRoomId());if(!t){this.logger.error(`Got room state event for unknown room ${e.getRoomId()}!`);return}this.refreshRoom(t)}}),this.logger=e.getChild(`[MatrixRTCSessionManager ${xP(n)}]`)}start(){for(var e of(t=this.client.getRooms())??[]){var t,n=nF.sessionForSlot(this.client,e,this.slotDescription);n.memberships.length>0&&this.roomSessions.set(e.roomId,n)}this.client.on(Z.Room,this.onRoom),this.client.on(Z.Event,this.onEvent),this.client.on(j.Events,this.onRoomState)}stop(){for(var e of this.roomSessions.values())e.stop();this.roomSessions.clear(),this.client.off(Z.Room,this.onRoom),this.client.off(Z.Event,this.onEvent),this.client.off(j.Events,this.onRoomState)}getActiveRoomSession(e){return this.roomSessions.get(e.roomId)}getRoomSession(e){return this.roomSessions.has(e.roomId)||this.roomSessions.set(e.roomId,nF.sessionForSlot(this.client,e,this.slotDescription)),this.roomSessions.get(e.roomId)}refreshRoom(e){var t=this;return C(function*(){var n=!t.roomSessions.has(e.roomId),r=t.getRoomSession(e),i=r.memberships.length>0&&!n;yield r._onRTCSessionMemberUpdate().catch(n=>{t.logger.error(`Error updating RTC session members for ${e.roomId}: ${n}`)});var a=r.memberships.length>0;i&&!a?(t.logger.trace(`Session ended for ${e.roomId} (${r.memberships.length} members)`),t.emit(cF.SessionEnded,e.roomId,t.roomSessions.get(e.roomId))):!i&&a&&(t.logger.trace(`Session started for ${e.roomId} (${r.memberships.length} members)`),t.emit(cF.SessionStarted,e.roomId,t.roomSessions.get(e.roomId)))})()}};function uF(e){return t=>{var n,r;return((n=t.content)==null||(n=n[`m.relates_to`])==null?void 0:n.event_id)!==e||((r=t.content)==null||(r=r[`m.relates_to`])==null?void 0:r.rel_type)===Q.name}}var dF=class extends Error{};dF.prototype.name=`InvalidTokenError`;function fF(e){return decodeURIComponent(atob(e).replace(/(.)/g,(e,t)=>{let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n=`0`+n),`%`+n}))}function pF(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`);switch(t.length%4){case 0:break;case 2:t+=`==`;break;case 3:t+=`=`;break;default:throw Error(`base64 string is not of the correct length`)}try{return fF(t)}catch{return atob(t)}}function mF(e,t){if(typeof e!=`string`)throw new dF(`Invalid token specified: must be a string`);t||={};let n=t.header===!0?0:1,r=e.split(`.`)[n];if(typeof r!=`string`)throw new dF(`Invalid token specified: missing part #${n+1}`);let i;try{i=pF(r)}catch(e){throw new dF(`Invalid token specified: invalid base64 for part #${n+1} (${e.message})`)}try{return JSON.parse(i)}catch(e){throw new dF(`Invalid token specified: invalid json for part #${n+1} (${e.message})`)}}var hF={debug:()=>void 0,info:()=>void 0,warn:()=>void 0,error:()=>void 0},gF,_F,vF=(e=>(e[e.NONE=0]=`NONE`,e[e.ERROR=1]=`ERROR`,e[e.WARN=2]=`WARN`,e[e.INFO=3]=`INFO`,e[e.DEBUG=4]=`DEBUG`,e))(vF||{});(e=>{function t(){gF=3,_F=hF}e.reset=t;function n(e){if(!(0<=e&&e<=4))throw Error(`Invalid log level`);gF=e}e.setLevel=n;function r(e){_F=e}e.setLogger=r})(vF||={});var yF=class e{constructor(e){this._name=e}debug(...t){gF>=4&&_F.debug(e._format(this._name,this._method),...t)}info(...t){gF>=3&&_F.info(e._format(this._name,this._method),...t)}warn(...t){gF>=2&&_F.warn(e._format(this._name,this._method),...t)}error(...t){gF>=1&&_F.error(e._format(this._name,this._method),...t)}throw(e){throw this.error(e),e}create(e){let t=Object.create(this);return t._method=e,t.debug(`begin`),t}static createStatic(t,n){let r=new e(`${t}.${n}`);return r.debug(`begin`),r}static _format(e,t){let n=`[${e}]`;return t?`${n} ${t}:`:n}static debug(t,...n){gF>=4&&_F.debug(e._format(t),...n)}static info(t,...n){gF>=3&&_F.info(e._format(t),...n)}static warn(t,...n){gF>=2&&_F.warn(e._format(t),...n)}static error(t,...n){gF>=1&&_F.error(e._format(t),...n)}};vF.reset();var bF=class{static decode(e){try{return mF(e)}catch(e){throw yF.error(`JwtUtils.decode`,e),e}}static async generateSignedJwt(e,t,n){let r=`${wF.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e)))}.${wF.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t)))}`,i=await window.crypto.subtle.sign({name:`ECDSA`,hash:{name:`SHA-256`}},n,new TextEncoder().encode(r));return`${r}.${wF.encodeBase64Url(new Uint8Array(i))}`}static async generateSignedJwtWithHmac(e,t,n){let r=`${wF.encodeBase64Url(new TextEncoder().encode(JSON.stringify(e)))}.${wF.encodeBase64Url(new TextEncoder().encode(JSON.stringify(t)))}`,i=await window.crypto.subtle.sign(`HMAC`,n,new TextEncoder().encode(r));return`${r}.${wF.encodeBase64Url(new Uint8Array(i))}`}},xF=`10000000-1000-4000-8000-100000000000`,SF=e=>btoa([...new Uint8Array(e)].map(e=>String.fromCharCode(e)).join(``)),CF=class e{static _randomWord(){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]}static generateUUIDv4(){return xF.replace(/[018]/g,t=>(t^e._randomWord()&15>>t/4).toString(16)).replace(/-/g,``)}static generateCodeVerifier(){return e.generateUUIDv4()+e.generateUUIDv4()+e.generateUUIDv4()}static async generateCodeChallenge(e){if(!crypto.subtle)throw Error(`Crypto.subtle is available only in secure contexts (HTTPS).`);try{let t=new TextEncoder().encode(e);return SF(await crypto.subtle.digest(`SHA-256`,t)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}catch(e){throw yF.error(`CryptoUtils.generateCodeChallenge`,e),e}}static generateBasicAuth(e,t){return SF(new TextEncoder().encode([e,t].join(`:`)))}static async hash(e,t){let n=new TextEncoder().encode(t),r=await crypto.subtle.digest(e,n);return new Uint8Array(r)}static async customCalculateJwkThumbprint(t){let n;switch(t.kty){case`RSA`:n={e:t.e,kty:t.kty,n:t.n};break;case`EC`:n={crv:t.crv,kty:t.kty,x:t.x,y:t.y};break;case`OKP`:n={crv:t.crv,kty:t.kty,x:t.x};break;case`oct`:n={crv:t.k,kty:t.kty};break;default:throw Error(`Unknown jwk type`)}let r=await e.hash(`SHA-256`,JSON.stringify(n));return e.encodeBase64Url(r)}static async generateDPoPProof({url:t,accessToken:n,httpMethod:r,keyPair:i,nonce:a}){let o,s,c={jti:window.crypto.randomUUID(),htm:r??`GET`,htu:t,iat:Math.floor(Date.now()/1e3)};n&&(o=await e.hash(`SHA-256`,n),s=e.encodeBase64Url(o),c.ath=s),a&&(c.nonce=a);try{let e=await crypto.subtle.exportKey(`jwk`,i.publicKey),t={alg:`ES256`,typ:`dpop+jwt`,jwk:{crv:e.crv,kty:e.kty,x:e.x,y:e.y}};return await bF.generateSignedJwt(t,c,i.privateKey)}catch(e){throw e instanceof TypeError?Error(`Error exporting dpop public key: ${e.message}`):e}}static async generateDPoPJkt(t){try{let n=await crypto.subtle.exportKey(`jwk`,t.publicKey);return await e.customCalculateJwkThumbprint(n)}catch(e){throw e instanceof TypeError?Error(`Could not retrieve dpop keys from storage: ${e.message}`):e}}static async generateDPoPKeys(){return await window.crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`,`verify`])}static async generateClientAssertionJwt(t,n,r,i=`HS256`){let a=Math.floor(Date.now()/1e3),o={alg:i,typ:`JWT`},s={iss:t,sub:t,aud:r,jti:e.generateUUIDv4(),exp:a+300,iat:a},c={HS256:`SHA-256`,HS384:`SHA-384`,HS512:`SHA-512`}[i];if(!c)throw Error(`Unsupported algorithm: ${i}. Supported algorithms are: HS256, HS384, HS512`);let l=new TextEncoder,u=await crypto.subtle.importKey(`raw`,l.encode(n),{name:`HMAC`,hash:c},!1,[`sign`]);return await bF.generateSignedJwtWithHmac(o,s,u)}};CF.encodeBase64Url=e=>SF(e).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`);var wF=CF,TF=class{constructor(e){this._name=e,this._callbacks=[],this._logger=new yF(`Event('${this._name}')`)}addHandler(e){return this._callbacks.push(e),()=>this.removeHandler(e)}removeHandler(e){let t=this._callbacks.lastIndexOf(e);t>=0&&this._callbacks.splice(t,1)}async raise(...e){this._logger.debug(`raise:`,...e);for(let t of this._callbacks)await t(...e)}},EF=class e extends TF{constructor(){super(...arguments),this._logger=new yF(`Timer('${this._name}')`),this._timerHandle=null,this._expiration=0,this._callback=()=>{let t=this._expiration-e.getEpochTime();this._logger.debug(`timer completes in`,t),this._expiration<=e.getEpochTime()&&(this.cancel(),super.raise())}}static getEpochTime(){return Math.floor(Date.now()/1e3)}init(t){let n=this._logger.create(`init`);t=Math.max(Math.floor(t),1);let r=e.getEpochTime()+t;if(this.expiration===r&&this._timerHandle){n.debug(`skipping since already initialized for expiration at`,this.expiration);return}this.cancel(),n.debug(`using duration`,t),this._expiration=r;let i=Math.min(t,5);this._timerHandle=setInterval(this._callback,i*1e3)}get expiration(){return this._expiration}cancel(){this._logger.create(`cancel`),this._timerHandle&&=(clearInterval(this._timerHandle),null)}},DF=`;`,OF=class extends Error{constructor(e,t){if(super(e.error_description||e.error||``),this.form=t,this.name=`ErrorResponse`,!e.error)throw yF.error(`ErrorResponse`,`No error passed`),Error(`No error passed`);this.error=e.error,this.error_description=e.error_description??null,this.error_uri=e.error_uri??null,this.state=e.userState,this.session_state=e.session_state??null,this.url_state=e.url_state}},kF=class extends Error{constructor(e){super(e),this.name=`ErrorTimeout`}},AF=class{constructor(){this._logger=new yF(`InMemoryWebStorage`),this._data={}}clear(){this._logger.create(`clear`),this._data={}}getItem(e){return this._logger.create(`getItem('${e}')`),this._data[e]}setItem(e,t){this._logger.create(`setItem('${e}')`),this._data[e]=t}removeItem(e){this._logger.create(`removeItem('${e}')`),delete this._data[e]}get length(){return Object.getOwnPropertyNames(this._data).length}key(e){return Object.getOwnPropertyNames(this._data)[e]}},jF=class extends Error{constructor(e,t){super(t),this.name=`ErrorDPoPNonce`,this.nonce=e}},MF=class{constructor(e=[],t=null,n={}){this._jwtHandler=t,this._extraHeaders=n,this._logger=new yF(`JsonService`),this._contentTypes=[],this._contentTypes.push(...e,`application/json`),t&&this._contentTypes.push(`application/jwt`)}async fetchWithTimeout(e,t={}){let{timeoutInSeconds:n,...r}=t;if(!n)return await fetch(e,r);let i=new AbortController,a=setTimeout(()=>i.abort(),n*1e3);try{return await fetch(e,{...t,signal:i.signal})}catch(e){throw e instanceof DOMException&&e.name===`AbortError`?new kF(`Network timed out`):e}finally{clearTimeout(a)}}async getJson(e,{token:t,credentials:n,timeoutInSeconds:r}={}){let i=this._logger.create(`getJson`),a={Accept:this._contentTypes.join(`, `)};t&&(i.debug(`token passed, setting Authorization header`),a.Authorization=`Bearer `+t),this._appendExtraHeaders(a);let o;try{i.debug(`url:`,e),o=await this.fetchWithTimeout(e,{method:`GET`,headers:a,timeoutInSeconds:r,credentials:n})}catch(e){throw i.error(`Network Error`),e}i.debug(`HTTP response received, status`,o.status);let s=o.headers.get(`Content-Type`);if(s&&!this._contentTypes.find(e=>s.startsWith(e))&&i.throw(Error(`Invalid response Content-Type: ${s??`undefined`}, from URL: ${e}`)),o.ok&&this._jwtHandler&&s?.startsWith(`application/jwt`))return await this._jwtHandler(await o.text());let c;try{c=await o.json()}catch(e){throw i.error(`Error parsing JSON response`,e),o.ok?e:Error(`${o.statusText} (${o.status})`)}if(!o.ok)throw i.error(`Error from server:`,c),c.error?new OF(c):Error(`${o.statusText} (${o.status}): ${JSON.stringify(c)}`);return c}async postForm(e,{body:t,basicAuth:n,timeoutInSeconds:r,initCredentials:i,extraHeaders:a}){let o=this._logger.create(`postForm`),s={Accept:this._contentTypes.join(`, `),"Content-Type":`application/x-www-form-urlencoded`,...a};n!==void 0&&(s.Authorization=`Basic `+n),this._appendExtraHeaders(s);let c;try{o.debug(`url:`,e),c=await this.fetchWithTimeout(e,{method:`POST`,headers:s,body:t,timeoutInSeconds:r,credentials:i})}catch(e){throw o.error(`Network error`),e}o.debug(`HTTP response received, status`,c.status);let l=c.headers.get(`Content-Type`);if(l&&!this._contentTypes.find(e=>l.startsWith(e)))throw Error(`Invalid response Content-Type: ${l??`undefined`}, from URL: ${e}`);let u=await c.text(),d={};if(u)try{d=JSON.parse(u)}catch(e){throw o.error(`Error parsing JSON response`,e),c.ok?e:Error(`${c.statusText} (${c.status})`)}if(!c.ok)throw o.error(`Error from server:`,d),c.headers.has(`dpop-nonce`)?new jF(c.headers.get(`dpop-nonce`),`${JSON.stringify(d)}`):d.error?new OF(d,t):Error(`${c.statusText} (${c.status}): ${JSON.stringify(d)}`);return d}_appendExtraHeaders(e){let t=this._logger.create(`appendExtraHeaders`),n=Object.keys(this._extraHeaders),r=[`accept`,`content-type`],i=[`authorization`];n.length!==0&&n.forEach(n=>{if(r.includes(n.toLocaleLowerCase())){t.warn(`Protected header could not be set`,n,r);return}if(i.includes(n.toLocaleLowerCase())&&Object.keys(e).includes(n)){t.warn(`Header could not be overridden`,n,i);return}let a=typeof this._extraHeaders[n]==`function`?this._extraHeaders[n]():this._extraHeaders[n];a&&a!==``&&(e[n]=a)})}},NF=class{constructor(e){this._settings=e,this._logger=new yF(`MetadataService`),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new MF([`application/jwk-set+json`],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug(`using signingKeys from settings`),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug(`using metadata from settings`),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug(`using fetchRequestCredentials from settings`),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){let e=this._logger.create(`getMetadata`);if(this._metadata)return e.debug(`using cached values`),this._metadata;if(!this._metadataUrl)throw e.throw(Error(`No authority or metadataUrl configured on settings`)),null;e.debug(`getting metadata from`,this._metadataUrl);let t=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return e.debug(`merging remote JSON with seed metadata`),this._metadata=Object.assign({},t,this._settings.metadataSeed),this._metadata}getIssuer(){return this._getMetadataProperty(`issuer`)}getAuthorizationEndpoint(){return this._getMetadataProperty(`authorization_endpoint`)}getUserInfoEndpoint(){return this._getMetadataProperty(`userinfo_endpoint`)}getTokenEndpoint(e=!0){return this._getMetadataProperty(`token_endpoint`,e)}getCheckSessionIframe(){return this._getMetadataProperty(`check_session_iframe`,!0)}getEndSessionEndpoint(){return this._getMetadataProperty(`end_session_endpoint`,!0)}getRevocationEndpoint(e=!0){return this._getMetadataProperty(`revocation_endpoint`,e)}getKeysEndpoint(e=!0){return this._getMetadataProperty(`jwks_uri`,e)}async _getMetadataProperty(e,t=!1){let n=this._logger.create(`_getMetadataProperty('${e}')`),r=await this.getMetadata();if(n.debug(`resolved`),r[e]===void 0){if(t===!0){n.warn(`Metadata does not contain optional property`);return}n.throw(Error(`Metadata does not contain property `+e))}return r[e]}async getSigningKeys(){let e=this._logger.create(`getSigningKeys`);if(this._signingKeys)return e.debug(`returning signingKeys from cache`),this._signingKeys;let t=await this.getKeysEndpoint(!1);e.debug(`got jwks_uri`,t);let n=await this._jsonService.getJson(t,{timeoutInSeconds:this._settings.requestTimeoutInSeconds});if(e.debug(`got key set`,n),!Array.isArray(n.keys))throw e.throw(Error(`Missing keys on keyset`)),null;return this._signingKeys=n.keys,this._signingKeys}},PF=class{constructor({prefix:e=`oidc.`,store:t=localStorage}={}){this._logger=new yF(`WebStorageStateStore`),this._store=t,this._prefix=e}async set(e,t){this._logger.create(`set('${e}')`),e=this._prefix+e,await this._store.setItem(e,t)}async get(e){return this._logger.create(`get('${e}')`),e=this._prefix+e,await this._store.getItem(e)}async remove(e){this._logger.create(`remove('${e}')`),e=this._prefix+e;let t=await this._store.getItem(e);return await this._store.removeItem(e),t}async getAllKeys(){this._logger.create(`getAllKeys`);let e=await this._store.length,t=[];for(let n=0;n<e;n++){let e=await this._store.key(n);e&&e.indexOf(this._prefix)===0&&t.push(e.substr(this._prefix.length))}return t}},FF=`code`,IF=`openid`,LF=`client_secret_post`,RF=900,zF=class{constructor({authority:e,metadataUrl:t,metadata:n,signingKeys:r,metadataSeed:i,client_id:a,client_secret:o,response_type:s=FF,scope:c=IF,redirect_uri:l,post_logout_redirect_uri:u,client_authentication:d=LF,token_endpoint_auth_signing_alg:f=`HS256`,prompt:p,display:m,max_age:h,ui_locales:g,acr_values:_,resource:v,response_mode:y,filterProtocolClaims:b=!0,loadUserInfo:x=!1,requestTimeoutInSeconds:S,staleStateAgeInSeconds:C=RF,mergeClaimsStrategy:ee={array:`replace`},disablePKCE:te=!1,stateStore:ne,revokeTokenAdditionalContentTypes:w,fetchRequestCredentials:re,refreshTokenAllowedScope:ie,extraQueryParams:ae={},extraTokenParams:oe={},extraHeaders:se={},dpop:ce,omitScopeWhenRequesting:le=!1}){if(this.authority=e,t?this.metadataUrl=t:(this.metadataUrl=e,e&&(this.metadataUrl.endsWith(`/`)||(this.metadataUrl+=`/`),this.metadataUrl+=`.well-known/openid-configuration`)),this.metadata=n,this.metadataSeed=i,this.signingKeys=r,this.client_id=a,this.client_secret=o,this.response_type=s,this.scope=c,this.redirect_uri=l,this.post_logout_redirect_uri=u,this.client_authentication=d,this.token_endpoint_auth_signing_alg=f,this.prompt=p,this.display=m,this.max_age=h,this.ui_locales=g,this.acr_values=_,this.resource=v,this.response_mode=y,this.filterProtocolClaims=b??!0,this.loadUserInfo=!!x,this.staleStateAgeInSeconds=C,this.mergeClaimsStrategy=ee,this.omitScopeWhenRequesting=le,this.disablePKCE=!!te,this.revokeTokenAdditionalContentTypes=w,this.fetchRequestCredentials=re||`same-origin`,this.requestTimeoutInSeconds=S,ne)this.stateStore=ne;else{let e=typeof window<`u`?window.localStorage:new AF;this.stateStore=new PF({store:e})}if(this.refreshTokenAllowedScope=ie,this.extraQueryParams=ae,this.extraTokenParams=oe,this.extraHeaders=se,this.dpop=ce,this.dpop&&!this.dpop?.store)throw Error(`A DPoPStore is required when dpop is enabled`)}},BF=class e{constructor(e){this.id=e.id||wF.generateUUIDv4(),this.data=e.data,e.created&&e.created>0?this.created=e.created:this.created=EF.getEpochTime(),this.request_type=e.request_type,this.url_state=e.url_state}toStorageString(){return new yF(`State`).create(`toStorageString`),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state})}static fromStorageString(t){return yF.createStatic(`State`,`fromStorageString`),Promise.resolve(new e(JSON.parse(t)))}static async clearStaleState(t,n){let r=yF.createStatic(`State`,`clearStaleState`),i=EF.getEpochTime()-n,a=await t.getAllKeys();r.debug(`got keys`,a);for(let n=0;n<a.length;n++){let o=a[n],s=await t.get(o),c=!1;if(s)try{let t=await e.fromStorageString(s);r.debug(`got item from key:`,o,t.created),t.created<=i&&(c=!0)}catch(e){r.error(`Error parsing state for key:`,o,e),c=!0}else r.debug(`no item in storage for key:`,o),c=!0;c&&(r.debug(`removed item for key:`,o),t.remove(o))}}},VF=class e extends BF{constructor(e){super(e),this.code_verifier=e.code_verifier,this.code_challenge=e.code_challenge,this.authority=e.authority,this.client_id=e.client_id,this.redirect_uri=e.redirect_uri,this.scope=e.scope,this.client_secret=e.client_secret,this.extraTokenParams=e.extraTokenParams,this.response_mode=e.response_mode,this.skipUserInfo=e.skipUserInfo,this.nonce=e.nonce}static async create(t){let n=t.code_verifier===!0?wF.generateCodeVerifier():t.code_verifier||void 0,r=n?await wF.generateCodeChallenge(n):void 0;return new e({...t,code_verifier:n,code_challenge:r})}toStorageString(){return new yF(`SigninState`).create(`toStorageString`),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,url_state:this.url_state,code_verifier:this.code_verifier,authority:this.authority,client_id:this.client_id,redirect_uri:this.redirect_uri,scope:this.scope,client_secret:this.client_secret,extraTokenParams:this.extraTokenParams,response_mode:this.response_mode,skipUserInfo:this.skipUserInfo,nonce:this.nonce})}static fromStorageString(t){yF.createStatic(`SigninState`,`fromStorageString`);let n=JSON.parse(t);return e.create(n)}},HF=class e{constructor(e){this.url=e.url,this.state=e.state}static async create({url:t,authority:n,client_id:r,redirect_uri:i,response_type:a,scope:o,state_data:s,response_mode:c,request_type:l,client_secret:u,nonce:d,url_state:f,resource:p,skipUserInfo:m,extraQueryParams:h,extraTokenParams:g,disablePKCE:_,dpopJkt:v,omitScopeWhenRequesting:y,...b}){if(!t)throw this._logger.error(`create: No url passed`),Error(`url`);if(!r)throw this._logger.error(`create: No client_id passed`),Error(`client_id`);if(!i)throw this._logger.error(`create: No redirect_uri passed`),Error(`redirect_uri`);if(!a)throw this._logger.error(`create: No response_type passed`),Error(`response_type`);if(!o)throw this._logger.error(`create: No scope passed`),Error(`scope`);if(!n)throw this._logger.error(`create: No authority passed`),Error(`authority`);let x=await VF.create({data:s,request_type:l,url_state:f,code_verifier:!_,client_id:r,authority:n,redirect_uri:i,response_mode:c,client_secret:u,scope:o,extraTokenParams:g,skipUserInfo:m,nonce:d}),S=new URL(t);S.searchParams.append(`client_id`,r),S.searchParams.append(`redirect_uri`,i),S.searchParams.append(`response_type`,a),y||S.searchParams.append(`scope`,o),d&&S.searchParams.append(`nonce`,d),v&&S.searchParams.append(`dpop_jkt`,v);let C=x.id;f&&(C=`${C}${DF}${f}`),S.searchParams.append(`state`,C),x.code_challenge&&(S.searchParams.append(`code_challenge`,x.code_challenge),S.searchParams.append(`code_challenge_method`,`S256`)),p&&(Array.isArray(p)?p:[p]).forEach(e=>S.searchParams.append(`resource`,e));for(let[e,t]of Object.entries({response_mode:c,...b,...h}))t!=null&&S.searchParams.append(e,t.toString());return new e({url:S.href,state:x})}};HF._logger=new yF(`SigninRequest`);var UF=function(e){return e.NotSupported=`OIDC authentication not supported`,e.Misconfigured=`OIDC is misconfigured`,e.General=`Something went wrong with OIDC discovery`,e.OpSupport=`Configured OIDC OP does not support required functions`,e.DynamicRegistrationNotSupported=`Dynamic registration not supported`,e.DynamicRegistrationFailed=`Dynamic registration failed`,e.DynamicRegistrationInvalid=`Dynamic registration invalid response`,e.CodeExchangeFailed=`Failed to exchange code for token`,e.InvalidBearerTokenResponse=`Invalid bearer token response`,e.InvalidIdToken=`Invalid ID token`,e.MissingOrInvalidStoredState=`State required to finish logging in is not found in storage.`,e}({}),WF=e=>!!e&&typeof e==`object`&&!Array.isArray(e),GF=(e,t)=>!e[t]||!KF(e,t)?(w.error(`Missing or invalid property: ${t}`),!1):!0,KF=(e,t)=>e[t]&&typeof e[t]!=`string`?(w.error(`Invalid property: ${t}`),!1):!0,qF=(e,t)=>e[t]&&(!Array.isArray(e[t])||!e[t].every(e=>typeof e==`string`))?(w.error(`Invalid property: ${t}`),!1):!0,JF=(e,t,n)=>{var r=e[t];return!r||!Array.isArray(r)||!r.includes(n)?(w.error(`Invalid property: ${t}. ${n} is required.`),!1):!0},YF=e=>{if(!WF(e))throw w.error(`Issuer configuration not found or malformed`),Error(UF.OpSupport);if(![GF(e,`issuer`),GF(e,`authorization_endpoint`),GF(e,`token_endpoint`),GF(e,`revocation_endpoint`),KF(e,`registration_endpoint`),KF(e,`account_management_uri`),KF(e,`device_authorization_endpoint`),qF(e,`account_management_actions_supported`),JF(e,`response_types_supported`,`code`),JF(e,`grant_types_supported`,XF.AuthorizationCode),JF(e,`code_challenge_methods_supported`,`S256`),qF(e,`prompt_values_supported`)].some(e=>!e))return e;throw w.error(`Issuer configuration not valid`),Error(UF.OpSupport)},XF=function(e){return e.AuthorizationCode=`authorization_code`,e.RefreshToken=`refresh_token`,e.DeviceAuthorization=`urn:ietf:params:oauth:grant-type:device_code`,e}({});XF.DeviceAuthorization;function ZF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function QF(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ZF(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ZF(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var $F=function(){var e=C(function*(e){var t=new URL(`.well-known/openid-configuration`,e);return eI(yield(yield fetch(t,{method:F.Get,signal:Qk(5e3)})).json())});return function(t){return e.apply(this,arguments)}}(),eI=function(){var e=C(function*(e){var t=YF(e),n=new NF(new zF({authority:t.issuer,metadata:t,redirect_uri:``,client_id:``}));return QF(QF({},t),{},{signingKeys:t.jwks_uri?yield n.getSigningKeys():null})});return function(t){return e.apply(this,arguments)}}(),tI=class extends Bk{constructor(e,t){var n;super(e,t,`retention policy`),n=this,h(this,`fetch`,C(function*(){var e=yield n.http.authedRequest(F.Get,`/retention/configuration`,void 0,void 0,{prefix:`${L.Unstable}/org.matrix.msc1763`});return n.cached=e,n.cached}))}},nI=[`server`,`limit`,`since`];function rI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function X(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?rI(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rI(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var iI=3e3,aI=600*1e3;new vE(`last_seen_user_agent`,`org.matrix.msc3852.last_seen_user_agent`);var oI=function(e){return e.Chronological=`chronological`,e.Detached=`detached`,e}({});new gE(`m.get_login_token`,`org.matrix.msc3882.get_login_token`);var sI=`uk.half-shot.msc2666`,cI=`uk.half-shot.msc2666.mutual_rooms`,lI=`uk.half-shot.msc2666.query_mutual_rooms`,uI=`org.matrix.msc4140`,dI=`$`,Z=function(e){return e.Sync=`sync`,e.Event=`event`,e.ToDeviceEvent=`toDeviceEvent`,e.ReceivedToDeviceMessage=`receivedToDeviceMessage`,e.AccountData=`accountData`,e.Room=`Room`,e.DeleteRoom=`deleteRoom`,e.SyncUnexpectedError=`sync.unexpectedError`,e.ClientWellKnown=`WellKnown.client`,e.ReceivedVoipEvent=`received_voip_event`,e.TurnServers=`turnServers`,e.TurnServersError=`turnServers.error`,e.UserProfileUpdate=`userProfileUpdate`,e}({}),fI=new vE(`action`,`org.matrix.msc3824.action`);h(class extends O{constructor(e){var t;super(),t=this,h(this,`logger`,void 0),h(this,`reEmitter`,new VO(this)),h(this,`olmVersion`,null),h(this,`usingExternalCrypto`,!1),h(this,`_store`,void 0),h(this,`deviceId`,void 0),h(this,`credentials`,void 0),h(this,`legacyPickleKey`,void 0),h(this,`scheduler`,void 0),h(this,`clientRunning`,!1),h(this,`timelineSupport`,!1),h(this,`urlPreviewCache`,{}),h(this,`identityServer`,void 0),h(this,`http`,void 0),h(this,`cryptoBackend`,void 0),h(this,`enableEncryptedStateEvents`,void 0),h(this,`cryptoCallbacks`,void 0),h(this,`callEventHandler`,void 0),h(this,`groupCallEventHandler`,void 0),h(this,`supportsCallTransfer`,!1),h(this,`forceTURN`,!1),h(this,`iceCandidatePoolSize`,0),h(this,`idBaseUrl`,void 0),h(this,`baseUrl`,void 0),h(this,`isVoipWithNoMediaAllowed`,void 0),h(this,`disableVoip`,void 0),h(this,`useLivekitForGroupCalls`,void 0),h(this,`canSupportVoip`,!1),h(this,`peekSync`,null),h(this,`isGuestAccount`,!1),h(this,`ongoingScrollbacks`,{}),h(this,`notifTimelineSet`,null),h(this,`legacyCryptoStore`,void 0),h(this,`verificationMethods`,void 0),h(this,`fallbackICEServerAllowed`,!1),h(this,`syncApi`,void 0),h(this,`roomNameGenerator`,void 0),h(this,`pushRules`,void 0),h(this,`syncLeftRoomsPromise`,void 0),h(this,`syncedLeftRooms`,!1),h(this,`clientOpts`,void 0),h(this,`clientWellKnownIntervalID`,void 0),h(this,`canResetTimelineCallback`,void 0),h(this,`canSupport`,new Map),h(this,`pushProcessor`,new UM(this)),h(this,`serverVersionsPromise`,void 0),h(this,`clientWellKnown`,void 0),h(this,`clientWellKnownPromise`,void 0),h(this,`turnServers`,[]),h(this,`turnServersExpiry`,0),h(this,`checkTurnServersIntervalID`,void 0),h(this,`txnCtr`,0),h(this,`mediaHandler`,new fN(this)),h(this,`sessionId`,void 0),h(this,`eventsBeingEncrypted`,new Set),h(this,`useE2eForGroupCall`,!0),h(this,`toDeviceMessageQueue`,void 0),h(this,`livekitServiceURL`,void 0),h(this,`_secretStorage`,void 0),h(this,`ignoredInvites`,void 0),h(this,`matrixRTC`,void 0),h(this,`serverCapabilitiesService`,void 0),h(this,`retentionPolicyService`,void 0),h(this,`_unstable_shouldApplyMessageRetention`,void 0),h(this,`startCallEventHandler`,()=>{this.isInitialSyncComplete()&&(DM()&&(this.callEventHandler.start(),this.groupCallEventHandler.start()),this.off(Z.Sync,this.startCallEventHandler))}),h(this,`startMatrixRTC`,()=>{this.isInitialSyncComplete()&&(this.matrixRTC.start(),this.off(Z.Sync,this.startMatrixRTC))}),h(this,`fixupRoomNotifications`,()=>{if(this.isInitialSyncComplete()){for(var e of(this.getRooms()??[]).filter(e=>e.getUnreadNotificationCount(R.Total)>0)){var t=this.getSafeUserId();e.fixupNotifications(t)}this.off(Z.Sync,this.fixupRoomNotifications)}}),this.logger=e.logger??w,e.baseUrl=HE(e.baseUrl),e.idBaseUrl=HE(e.idBaseUrl),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl,this.identityServer=e.identityServer,this.usingExternalCrypto=e.usingExternalCrypto??!1,this.store=e.store||new aj,this.deviceId=e.deviceId||null,this.sessionId=yj(10);var n=e.userId||null;this.credentials={userId:n},this.http=new wA(this,{fetchFn:e.fetchFn,baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenRefreshFunction:e.tokenRefreshFunction,prefix:L.V3,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader,logger:this.logger}),e.pickleKey&&(this.legacyPickleKey=e.pickleKey),this.useLivekitForGroupCalls=!!e.useLivekitForGroupCalls,this.scheduler=e.scheduler,this.scheduler&&this.scheduler.setProcessFunction(function(){var e=C(function*(e){var n=t.getRoom(e.getRoomId());e.status!==P.SENDING&&t.updatePendingEventStatus(n,e,P.SENDING);var r=yield t.sendEventHttpRequest(e);return n&&n.updatePendingEvent(e,P.SENT,r.event_id),r});return function(t){return e.apply(this,arguments)}}()),this.disableVoip=e.disableVoip??!1,!this.disableVoip&&DM()&&(this.callEventHandler=new Mj(this),this.groupCallEventHandler=new Pj(this),this.canSupportVoip=!0,this.on(Z.Sync,this.startCallEventHandler)),this.matrixRTC=new lF(this.logger,this),this.serverCapabilitiesService=new EA(this.logger,this.http),this.retentionPolicyService=new tI(this.logger,this.http),this._unstable_shouldApplyMessageRetention=e.unstableMSC1763Retention??!1,this.on(Z.Sync,this.fixupRoomNotifications),this.timelineSupport=!!e.timelineSupport,this.legacyCryptoStore=e.cryptoStore,this.verificationMethods=e.verificationMethods,this.cryptoCallbacks=e.cryptoCallbacks||{},this.enableEncryptedStateEvents=e.enableEncryptedStateEvents??!1,this.forceTURN=e.forceTURN||!1,this.iceCandidatePoolSize=e.iceCandidatePoolSize===void 0?0:e.iceCandidatePoolSize,this.supportsCallTransfer=e.supportsCallTransfer||!1,this.fallbackICEServerAllowed=e.fallbackICEServerAllowed||!1,this.isVoipWithNoMediaAllowed=e.isVoipWithNoMediaAllowed||!1,e.useE2eForGroupCall!==void 0&&(this.useE2eForGroupCall=e.useE2eForGroupCall),this.livekitServiceURL=e.livekitServiceURL,this.roomNameGenerator=e.roomNameGenerator,this.toDeviceMessageQueue=new AN(this,this.logger),this.on($.Decrypted,e=>{mI(this,e)}),this.ignoredInvites=new IN(this),this._secretStorage=new pP(this,e.cryptoCallbacks??{}),this.setMaxListeners(0)}set store(e){this._store=e,this._store.setUserCreator(e=>sO.createUser(e,this))}get store(){return this._store}startClient(e){var t=this;return C(function*(){if(!t.clientRunning){t.clientRunning=!0,t.on(Z.Sync,t.startMatrixRTC);var n=t.getUserId();n&&t.store.storeUser(new sO(n)),t.supportsVoip()&&(t.checkTurnServersIntervalID=setInterval(()=>{t.checkTurnServers()},aI),t.checkTurnServers()),t.syncApi&&(t.logger.error(`Still have sync object whilst not running: stopping old one`),t.syncApi.stop());try{yield t.getVersions();var r=yield t.doesServerSupportThread(),i=r.threads,a=r.list,o=r.fwdPagination;SI.setServerSideSupport(i),SI.setServerSideListSupport(a),SI.setServerSideFwdPaginationSupport(o)}catch(e){t.logger.error(`Can't fetch server versions, continuing to initialise sync, this will be retried later`,e)}if(t.clientOpts=e??{},t.clientOpts.slidingSync?t.syncApi=new SN(t.clientOpts.slidingSync,t,t.clientOpts,t.buildSyncApiOptions()):t.syncApi=new nj(t,t.clientOpts,t.buildSyncApiOptions()),t.syncApi.sync().catch(e=>t.logger.info(`Sync startup aborted with an error:`,e)),t.clientOpts.clientWellKnownPollPeriod!==void 0&&(t.clientWellKnownIntervalID=setInterval(()=>{t.fetchClientWellKnown()},1e3*t.clientOpts.clientWellKnownPollPeriod),t.fetchClientWellKnown()),t.toDeviceMessageQueue.start(),t.serverCapabilitiesService.start(),t._unstable_shouldApplyMessageRetention){var s;(s=t.retentionPolicyService)==null||s.start()}}})()}buildSyncApiOptions(){return{cryptoCallbacks:this.cryptoBackend,canResetEntireTimeline:e=>this.canResetTimelineCallback?this.canResetTimelineCallback(e):!1,logger:this.logger.getChild(`sync`)}}stopClient(){var e,t,n,r,i;(e=this.cryptoBackend)==null||e.stop(),this.off(Z.Sync,this.startMatrixRTC),this.clientRunning&&(this.logger.debug(`stopping MatrixClient`),this.clientRunning=!1,(t=this.syncApi)==null||t.stop(),this.syncApi=void 0,(n=this.peekSync)==null||n.stopPeeking(),(r=this.callEventHandler)==null||r.stop(),(i=this.groupCallEventHandler)==null||i.stop(),this.callEventHandler=void 0,this.groupCallEventHandler=void 0,globalThis.clearInterval(this.checkTurnServersIntervalID),this.checkTurnServersIntervalID=void 0,this.clientWellKnownIntervalID!==void 0&&globalThis.clearInterval(this.clientWellKnownIntervalID),this.toDeviceMessageQueue.stop(),this.matrixRTC.stop(),this.serverCapabilitiesService.stop())}clearStores(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this.clientRunning)throw Error(`Cannot clear stores while client is running`);var n=[];n.push(this.store.deleteAllData()),this.legacyCryptoStore&&n.push(this.legacyCryptoStore.deleteAllData());var r=function(){var n=C(function*(){var n;try{if(n=globalThis.indexedDB,!n)return}catch{return}var r=function*(t){yield new Promise((r,i)=>{e.logger.info(`Removing IndexedDB instance ${t}`);var a=n.deleteDatabase(t);a.onsuccess=n=>{e.logger.info(`Removed IndexedDB instance ${t}`),r(0)},a.onerror=n=>{e.logger.warn(`Failed to remove IndexedDB instance ${t}:`,n),r(0)},a.onblocked=n=>{e.logger.info(`cannot yet remove IndexedDB instance ${t}`)}})};for(var i of[`${(a=t.cryptoDatabasePrefix)??LN}::matrix-sdk-crypto`,`${(o=t.cryptoDatabasePrefix)??LN}::matrix-sdk-crypto-meta`]){var a,o;yield*r(i)}});return function(){return n.apply(this,arguments)}}();return n.push(r()),Promise.all(n).then()}getUserId(){return this.credentials?.userId??null}getSafeUserId(){var e=this.getUserId();if(!e)throw Error(`Expected logged in user but found none.`);return e}getDomain(){var e;return(e=this.credentials)!=null&&e.userId?this.credentials.userId.replace(/^.*?:/,``):null}getUserIdLocalpart(){var e;return((e=this.credentials)==null||(e=e.userId)==null?void 0:e.split(`:`)[0].substring(1))??null}getDeviceId(){return this.deviceId}getSessionId(){return this.sessionId}supportsVoip(){return!this.disableVoip&&this.canSupportVoip}getMediaHandler(){return this.mediaHandler}setForceTURN(e){this.forceTURN=e}setSupportsCallTransfer(e){this.supportsCallTransfer=e}getUseE2eForGroupCall(){return this.useE2eForGroupCall}createCall(e){return OM(this,e)}createGroupCall(e,t,n,r,i,a){var o=this;return C(function*(){if(o.getGroupCallForRoom(e))throw Error(`${e} already has an existing group call`);var s=o.getRoom(e);if(!s)throw Error(`Cannot find room ${e}`);return new uM(o,s,t,n,r,void 0,i||o.isVoipWithNoMediaAllowed,a,o.isVoipWithNoMediaAllowed,o.useLivekitForGroupCalls,o.livekitServiceURL).create()})()}getLivekitServiceURL(){return this.livekitServiceURL}setLivekitServiceURL(e){this.livekitServiceURL=e}waitUntilRoomReadyForGroupCalls(e){return this.groupCallEventHandler.waitUntilRoomReadyForGroupCalls(e)}getGroupCallForRoom(e){return this.groupCallEventHandler.groupCalls.get(e)||null}getSyncState(){return this.syncApi?.getSyncState()??null}getSyncStateData(){return this.syncApi?this.syncApi.getSyncStateData():null}isInitialSyncComplete(){var e=this.getSyncState();return e?e===B.Prepared||e===B.Syncing:!1}isGuest(){return this.isGuestAccount}setGuest(e){this.isGuestAccount=e}getScheduler(){return this.scheduler}retryImmediately(){return this.toDeviceMessageQueue.sendQueue(),this.syncApi?.retryImmediately()??!1}getNotifTimelineSet(){return this.notifTimelineSet}setNotifTimelineSet(e){this.notifTimelineSet=e}getCapabilities(){var e=this;return C(function*(){return e.serverCapabilitiesService.getCached()||e.serverCapabilitiesService.fetch()})()}getCachedCapabilities(){return this.serverCapabilitiesService.getCached()}fetchCapabilities(){return this.serverCapabilitiesService.fetch()}initRustCrypto(){var e=arguments,t=this;return C(function*(){var n=e.length>0&&e[0]!==void 0?e[0]:{};if(t.cryptoBackend){t.logger.warn(`Attempt to re-initialise e2e encryption on MatrixClient`);return}var r=t.getUserId();if(r===null)throw Error(`Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().`);var i=t.getDeviceId();if(i===null)throw Error(`Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().`);t.logger.debug(`Downloading Rust crypto library`);var a=yield(yield import(`./rust-crypto-CmJ_6CQ8.js`)).initRustCrypto({logger:t.logger,http:t.http,userId:r,deviceId:i,secretStorage:t.secretStorage,cryptoCallbacks:t.cryptoCallbacks,storePrefix:n.useIndexedDB===!1?null:n.cryptoDatabasePrefix??LN,storeKey:n.storageKey,storePassphrase:n.storagePassword,legacyCryptoStore:t.legacyCryptoStore,legacyPickleKey:t.legacyPickleKey??`DEFAULT_KEY`,legacyMigrationProgressListener:(e,n)=>{t.emit(JN.LegacyCryptoStoreMigrationProgress,e,n)},enableEncryptedStateEvents:t.enableEncryptedStateEvents});a.setSupportedVerificationMethods(t.verificationMethods),t.cryptoBackend=a,t.on(gO.Membership,a.onRoomMembership.bind(a)),t.on(j.Events,a.onRoomStateEvent.bind(a)),t.on(Z.Event,e=>{a.onLiveEventFromSync(e)}),t.reEmitter.reEmit(a,[JN.VerificationRequestReceived,JN.UserTrustStatusChanged,JN.KeyBackupStatus,JN.KeyBackupSessionsRemaining,JN.KeyBackupFailed,JN.KeyBackupDecryptionKeyCached,JN.KeysChanged,JN.DevicesUpdated,JN.WillUpdateDevices,JN.DehydratedDeviceCreated,JN.DehydratedDeviceUploaded,JN.RehydrationStarted,JN.RehydrationProgress,JN.RehydrationCompleted,JN.RehydrationError,JN.DehydrationKeyCached,JN.DehydratedDeviceRotationError])})()}get secretStorage(){return this._secretStorage}getCrypto(){return this.cryptoBackend}isRoomEncrypted(e){var t=this.getRoom(e);return t?t.hasEncryptionStateEvent():!1}isKeyBackupKeyStored(){return Promise.resolve(this.secretStorage.isStored(`m.megolm_backup.v1`))}makeKeyBackupPath(e,t,n){return{path:t===void 0?e===void 0?`/room_keys/keys`:T(`/room_keys/keys/$roomId`,{$roomId:e}):T(`/room_keys/keys/$roomId/$sessionId`,{$roomId:e,$sessionId:t}),queryData:n===void 0?void 0:{version:n}}}deleteKeysFromBackup(e,t,n){var r=this;return C(function*(){var i=r.makeKeyBackupPath(e,t,n);yield r.http.authedRequest(F.Delete,i.path,i.queryData,void 0,{prefix:L.V3})})()}getMediaConfig(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=e?`/media/config`:`/config`;return this.http.authedRequest(F.Get,t,void 0,void 0,{prefix:e?L.V1:mA.V3})}getRoom(e){return e?this.store.getRoom(e):null}getRooms(){return this.store.getRooms()}getVisibleRooms(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.store.getRooms(),n=new Set(t);for(var r of n)for(var i of this.findPredecessorRooms(r,!0,e))n.delete(i);return Array.from(n)}getUser(e){return this.store.getUser(e)}getUsers(){return this.store.getUsers()}setAccountData(e,t){var n=this;return C(function*(){if(!n.clientRunning)return n.logger.warn("Calling `setAccountData` before the client is started: `getAccountData` may return inconsistent results."),yield rA(5,()=>n.setAccountDataRaw(e,t));var r=n.store.getAccountData(e);if(r&&NE(r.event.content,t))return{};var i=Promise.withResolvers();function a(t){t.getType()===e&&i.resolve()}n.addListener(Z.AccountData,a);try{var o=yield rA(5,()=>n.setAccountDataRaw(e,t));return yield i.promise,o}finally{n.removeListener(Z.AccountData,a)}})()}setAccountDataRaw(e,t){var n=T(`/user/$userId/account_data/$type`,{$userId:this.credentials.userId,$type:e});return this.http.authedRequest(F.Put,n,void 0,t)}getAccountData(e){return this.store.getAccountData(e)}getAccountDataFromServer(e){var t=this;return C(function*(){if(t.isInitialSyncComplete()){var n=t.store.getAccountData(e);return n?n.getContent():null}var r=T(`/user/$userId/account_data/$type`,{$userId:t.credentials.userId,$type:e});try{return yield t.http.authedRequest(F.Get,r)}catch(e){if(e.data?.errcode===`M_NOT_FOUND`)return null;throw e}})()}deleteAccountData(e){var t=this;return C(function*(){var n=t.canSupport.get(UA.AccountDataDeletion);if(n===HA.Unsupported){yield t.setAccountData(e,{});return}var r=T(`/user/$userId/account_data/$type`,{$userId:t.getSafeUserId(),$type:e}),i=n===HA.Unstable?{prefix:`/_matrix/client/unstable/org.matrix.msc3391`}:void 0;return yield t.http.authedRequest(F.Delete,r,void 0,void 0,i)})()}getIgnoredUsers(){var e=this.getAccountData(E.IgnoredUserList);return e!=null&&e.getContent().ignored_users?Object.keys(e.getContent().ignored_users):[]}setIgnoredUsers(e){var t={ignored_users:{}};return e.forEach(e=>{t.ignored_users[e]={}}),this.setAccountData(E.IgnoredUserList,t)}isUserIgnored(e){return this.getIgnoredUsers().includes(e)}joinRoom(e){var t=arguments,n=this;return C(function*(){var r,i=t.length>1&&t[1]!==void 0?t[1]:{},a=n.getRoom(e),o=a?.getMember(n.getSafeUserId()),s=o?.membership,c=s==k.Invite?(o==null||(r=o.events.member)==null?void 0:r.getSender())??null:null;if(n.logger.debug(`joinRoom[${e}]: preJoinMembership=${s}, inviter=${c}, opts=${JSON.stringify(i)}`),s==k.Join)return a;var l=Promise.resolve();if(i.inviteSignUrl){var u=new URL(i.inviteSignUrl);u.searchParams.set(`mxid`,n.credentials.userId),l=n.http.requestOtherUrl(F.Post,u)}var d={};i.viaServers&&(d.via=d.server_name=i.viaServers.slice(0,3));var f={},p=yield l;p&&(f.third_party_signed=p);var m=T(`/join/$roomid`,{$roomid:e}),h=(yield n.http.authedRequest(F.Post,m,d,f)).room_id;c&&n.cryptoBackend&&(yield n.cryptoBackend.markRoomAsPendingKeyBundle(h,c),yield n.cryptoBackend.maybeAcceptKeyBundle(h,c));var g=n.getRoom(h);return g!=null&&g.hasMembershipState(n.credentials.userId,k.Join)?g:new nj(n,n.clientOpts,n.buildSyncApiOptions()).createRoom(h)})()}knockRoom(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=this.getRoom(e);if(n!=null&&n.hasMembershipState(this.credentials.userId,k.Knock))return Promise.resolve({room_id:n.roomId});var r=T(`/knock/$roomIdOrAlias`,{$roomIdOrAlias:e}),i={};if(t.viaServers){var a=Array.isArray(t.viaServers)?t.viaServers.slice(0,3):[t.viaServers];i.server_name=a,i.via=a}var o={};return t.reason&&(o.reason=t.reason),this.http.authedRequest(F.Post,r,i,o)}resendEvent(e,t){return this.toDeviceMessageQueue.sendQueue(),this.updatePendingEventStatus(t,e,P.SENDING),this.encryptAndSendEvent(t,e)}cancelPendingEvent(e){if(![P.QUEUED,P.NOT_SENT,P.ENCRYPTING].includes(e.status))throw Error(`cannot cancel an event with status `+e.status);e.status===P.ENCRYPTING?this.eventsBeingEncrypted.delete(e.getId()):this.scheduler&&e.status===P.QUEUED&&this.scheduler.removeEventFromQueue(e);var t=this.getRoom(e.getRoomId());this.updatePendingEventStatus(t,e,P.CANCELLED)}setRoomName(e,t){return this.sendStateEvent(e,E.RoomName,{name:t})}setRoomTopic(e,t,n){var r=PO(t,n);return this.sendStateEvent(e,E.RoomTopic,r)}getRoomTags(e){var t=T(`/user/$userId/rooms/$roomId/tags`,{$userId:this.credentials.userId,$roomId:e});return this.http.authedRequest(F.Get,t)}setRoomTag(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=T(`/user/$userId/rooms/$roomId/tags/$tag`,{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(F.Put,r,void 0,n)}deleteRoomTag(e,t){var n=T(`/user/$userId/rooms/$roomId/tags/$tag`,{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(F.Delete,n)}setRoomAccountData(e,t,n){var r=T(`/user/$userId/rooms/$roomId/account_data/$type`,{$userId:this.credentials.userId,$roomId:e,$type:t});return this.http.authedRequest(F.Put,r,void 0,n)}setPowerLevel(e,t,n){var r=this;return C(function*(){var i,a;if(r.clientRunning&&r.isInitialSyncComplete()){var o;a=(o=r.getRoom(e))==null||(o=o.currentState)==null||(o=o.getStateEvents(E.RoomPowerLevels,``))==null?void 0:o.getContent()}if(!a)try{a=yield r.getStateEvent(e,E.RoomPowerLevels,``)}catch(e){if(e instanceof I&&e.errcode===`M_NOT_FOUND`)a={};else throw e}a=ME(a),(i=a)!=null&&i.users||(a.users={});for(var s of Array.isArray(t)?t:[t])n==null?delete a.users[s]:a.users[s]=n;return r.sendStateEvent(e,E.RoomPowerLevels,a,``)})()}unstable_createLiveBeacon(e,t){var n=this;return C(function*(){return n.unstable_setLiveBeacon(e,t)})()}unstable_setLiveBeacon(e,t){var n=this;return C(function*(){return n.sendStateEvent(e,HO.name,t,n.getUserId())})()}sendEvent(e,t,n,r,i){var a,o,s,c;return!(t!=null&&t.startsWith(dI))&&t!==null?(c=r,s=n,o=t,a=null):(c=i,s=r,o=n,a=t),this.addThreadRelationIfNeeded(s,a,e),this.sendCompleteEvent({roomId:e,threadId:a,eventObject:{type:o,content:s},txnId:c})}addThreadRelationIfNeeded(e,t,n){var r;if(t&&!((r=e[`m.relates_to`])!=null&&r.rel_type)){var i,a=!!((i=e[`m.relates_to`])!=null&&i[`m.in_reply_to`]);e[`m.relates_to`]=X(X({},e[`m.relates_to`]),{},{rel_type:Q.name,event_id:t,is_falling_back:!a});var o=this.getRoom(n)?.getThread(t);o&&!a&&(e[`m.relates_to`][`m.in_reply_to`]={event_id:o.lastReply(e=>e.isRelation(Q.name)&&!e.status)?.getId()??t})}}sendCompleteEvent(e){var t=e.roomId,n=e.threadId,r=e.eventObject,i=e.delayOpts,a=e.queryDict,o=e.txnId;o||=this.makeTxnId();var s=new MI(Object.assign(r,{event_id:`~`+t+`:`+o,user_id:this.credentials.userId,sender:this.credentials.userId,room_id:t,origin_server_ts:new Date().getTime()})),c=this.getRoom(t),l=n?c?.getThread(n):void 0;l&&s.setThread(l),i||(this.reEmitter.reEmit(s,[$.Replaced,$.VisibilityChange]),c?.reEmitter.reEmit(s,[$.BeforeRedaction]));var u=s.getAssociatedId();if(u!=null&&u.startsWith(`~`)){var d=c?.getPendingEvents().find(e=>e.getId()===u);d?.once($.LocalEventIdReplaced,()=>{s.updateAssociatedId(d.getId())})}var f=s.getType();return this.logger.debug(`sendEvent of type ${f} in ${t} with txnId ${o}${i?` (delayed event)`:``}${a?` query params: `+JSON.stringify(a):``}`),s.setTxnId(o),s.setStatus(P.SENDING),i?this.encryptAndSendEvent(c,s,i,a):(c?.addPendingEvent(s,o),s.status===P.NOT_SENT?Promise.reject(Error(`Event blocked by other events not yet sent`)):this.encryptAndSendEvent(c,s,a))}encryptAndSendEvent(e,t,n,r){var i=this;return C(function*(){var a=r;if(n&&ZM(n))return i.sendEventHttpRequest(t,n,a);a||=n;try{var o;i.eventsBeingEncrypted.add(t.getId());try{yield i.encryptEventIfNeeded(t,e??void 0)}finally{o=!i.eventsBeingEncrypted.delete(t.getId())}if(o)return{};t.status===P.ENCRYPTING&&i.updatePendingEventStatus(e,t,P.SENDING);var s=null;return i.scheduler&&(s=i.scheduler.queueEvent(t),s&&i.scheduler.getQueueForEvent(t).length>1&&i.updatePendingEventStatus(e,t,P.QUEUED)),s||(s=i.sendEventHttpRequest(t,a),e&&(s=s.then(n=>(e.updatePendingEvent(t,P.SENT,n.event_id),n)))),yield s}catch(n){i.logger.error(`Error sending event`,n);try{t.error=n,i.updatePendingEventStatus(e,t,P.NOT_SENT)}catch(e){i.logger.error(`Exception in error handler!`,e)}throw n instanceof I&&(n.event=t),n}})()}encryptEventIfNeeded(e,t){var n=this;return C(function*(){if(t&&(yield n.shouldEncryptEventForRoom(e,t))&&!(!n.cryptoBackend&&n.usingExternalCrypto)){if(!n.cryptoBackend)throw Error(`This room is configured to use encryption, but your client does not support encryption.`);n.updatePendingEventStatus(t,e,P.ENCRYPTING),yield n.cryptoBackend.encryptEvent(e,t)}})()}shouldEncryptEventForRoom(e,t){var n=this;return C(function*(){return e.isEncrypted()||e.getType()===E.Reaction||e.isRedaction()?!1:!!(t.hasEncryptionStateEvent()||(yield n.cryptoBackend?.isEncryptionEnabledInRoom(t.roomId)))})()}getEncryptedIfNeededEventType(e,t){var n;return t===E.Reaction?t:(n=this.getRoom(e))!=null&&n.hasEncryptionStateEvent()?E.RoomMessageEncrypted:t}updatePendingEventStatus(e,t,n){e?e.updatePendingEvent(t,n):t.setStatus(n)}sendEventHttpRequest(e,t,n){var r=e.getTxnId();r||(r=this.makeTxnId(),e.setTxnId(r));var i={$roomId:e.getRoomId(),$eventType:e.getWireType(),$stateKey:e.getStateKey(),$txnId:r},a;if(e.isState()){var o=`/rooms/$roomId/state/$eventType`;e.getStateKey()&&e.getStateKey().length>0&&(o=`/rooms/$roomId/state/$eventType/$stateKey`),a=T(o,i)}else a=e.isRedaction()&&e.event.redacts?T(`/rooms/$roomId/redact/$redactsEventId/$txnId`,X({$redactsEventId:e.event.redacts},i)):T(`/rooms/$roomId/send/$eventType/$txnId`,i);var s=t&&ZM(t)?t:void 0,c=s?n:t,l=e.getWireContent();return s?this.http.authedRequest(F.Put,a,X(X({},pI(s)),c),l):this.http.authedRequest(F.Put,a,c,l).then(t=>(this.logger.debug(`Event sent to ${e.getRoomId()} with event id ${t.event_id}`),t))}redactEvent(e,t,n,r,i){var a;(a=n)!=null&&a.startsWith(dI)||(i=r,r=n,n=t,t=null);var o={reason:i?.reason};if(i?.with_rel_types!==void 0){if(this.canSupport.get(UA.RelationBasedRedactions)===HA.Unsupported)throw Error(`Server does not support relation based redactions roomId ${e} eventId ${n} txnId: ${r} threadId ${t}`);var s=this.canSupport.get(UA.RelationBasedRedactions)===HA.Stable?YD.stable:YD.unstable;o[s]=i.with_rel_types}return this.sendCompleteEvent({roomId:e,threadId:t,eventObject:{type:E.RoomRedaction,content:o,redacts:n},txnId:r})}sendMessage(e,t,n,r){typeof t!=`string`&&t!==null&&(r=n,n=t,t=null);var i=E.RoomMessage,a=n;return this.sendEvent(e,t,i,a,r)}sendTextMessage(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=jO(n);return this.sendMessage(e,t,a,r)}sendNotice(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=MO(n);return this.sendMessage(e,t,a,r)}sendEmoteMessage(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=NO(n);return this.sendMessage(e,t,a,r)}sendImageMessage(e,t,n,r){var i,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:`Image`;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(a=r||`Image`,r=n,n=t,t=null);var o={msgtype:zD.Image,url:n,info:r,body:a};return this.sendMessage(e,t,o)}sendStickerMessage(e,t,n,r){var i,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:`Sticker`;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(a=r||`Sticker`,r=n,n=t,t=null);var o={url:n,info:r,body:a};return this.sendEvent(e,t,E.Sticker,o)}sendHtmlMessage(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=OO(n,r);return this.sendMessage(e,t,a)}sendHtmlNotice(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=kO(n,r);return this.sendMessage(e,t,a)}sendHtmlEmote(e,t,n,r){var i;!((i=t)!=null&&i.startsWith(dI))&&t!==null&&(r=n,n=t,t=null);var a=AO(n,r);return this.sendMessage(e,t,a)}_unstable_sendDelayedEvent(e,t,n,r,i,a){var o=this;return C(function*(){if(!(yield o.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`sendDelayedEvent`);return o.addThreadRelationIfNeeded(i,n,e),o.sendCompleteEvent({roomId:e,threadId:n,eventObject:{type:r,content:i},delayOpts:t,txnId:a})})()}_unstable_sendStickyDelayedEvent(e,t,n,r,i,a,o){var s=this;return C(function*(){if(!(yield s.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`getDelayedEvents`);if(!(yield s.doesServerSupportUnstableFeature(`org.matrix.msc4354`)))throw new RP(`Server does not support the sticky events`,`sendStickyEvent`);return s.addThreadRelationIfNeeded(a,r,e),s.sendCompleteEvent({roomId:e,threadId:r,eventObject:{type:i,content:a},queryDict:{"org.matrix.msc4354.sticky_duration_ms":t},delayOpts:n,txnId:o})})()}_unstable_sendDelayedStateEvent(e,t,n,r){var i=arguments,a=this;return C(function*(){var o=i.length>4&&i[4]!==void 0?i[4]:``,s=i.length>5&&i[5]!==void 0?i[5]:{};if(!(yield a.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`sendDelayedStateEvent`);var c={$roomId:e,$eventType:n,$stateKey:o},l=T(`/rooms/$roomId/state/$eventType`,c);return o!==void 0&&(l=T(l+`/$stateKey`,c)),a.http.authedRequest(F.Put,l,pI(t),r,s)})()}_unstable_sendStickyEvent(e,t,n,r,i,a){var o=this;return C(function*(){if(!(yield o.doesServerSupportUnstableFeature(`org.matrix.msc4354`)))throw new RP(`Server does not support the sticky events`,`sendStickyEvent`);return o.addThreadRelationIfNeeded(i,n,e),o.sendCompleteEvent({roomId:e,threadId:n,eventObject:{type:r,content:i},queryDict:{"org.matrix.msc4354.sticky_duration_ms":t},txnId:a})})()}_unstable_getDelayedEvents(e,t,n){var r=this;return C(function*(){if(!(yield r.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`getDelayedEvents`);var i={from:n,status:e,delay_id:t};return yield r.http.authedRequest(F.Get,`/delayed_events`,i,void 0,{prefix:`${L.Unstable}/${uI}`})})()}_unstable_updateDelayedEvent(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:{};if(!(yield r.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`updateDelayedEvent`);return yield r.updateScheduledDelayedEventWithActionInBody(e,t,i)})()}_unstable_cancelScheduledDelayedEvent(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};return yield n.updateScheduledDelayedEvent(e,QM.Cancel,r)})()}_unstable_restartScheduledDelayedEvent(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};return yield n.updateScheduledDelayedEvent(e,QM.Restart,r)})()}_unstable_sendScheduledDelayedEvent(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};return yield n.updateScheduledDelayedEvent(e,QM.Send,r)})()}updateScheduledDelayedEvent(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:{};if(!(yield r.doesServerSupportUnstableFeature(`org.matrix.msc4140`)))throw new LP(`Server does not support the delayed events API`,`${t}ScheduledDelayedEvent`);try{var a=T(`/delayed_events/$delayId/$action`,{$delayId:e,$action:t});return yield r.http.authedRequest(F.Post,a,void 0,void 0,X(X({},i),{},{prefix:`${L.Unstable}/${uI}`}))}catch(n){if(n instanceof I&&n.errcode===`M_UNRECOGNIZED`)return yield r.updateScheduledDelayedEventWithActionInBody(e,t,i);throw n}})()}updateScheduledDelayedEventWithActionInBody(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:{},a=T(`/delayed_events/$delayId`,{$delayId:e}),o={action:t};try{return yield r.http.request(F.Post,a,void 0,o,X(X({},i),{},{prefix:`${L.Unstable}/${uI}`}))}catch(e){if(e instanceof I&&e.errcode===`M_MISSING_TOKEN`)return yield r.http.authedRequest(F.Post,a,void 0,o,X(X({},i),{},{prefix:`${L.Unstable}/${uI}`}));throw e}})()}sendReceipt(e,t,n){var r=arguments,i=this;return C(function*(){var a=r.length>3&&r[3]!==void 0?r[3]:!1;if(i.isGuest())return Promise.resolve({});var o=T(`/rooms/$roomId/receipt/$receiptType/$eventId`,{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),s=!a&&i.supportsThreads()?X(X({},n),{},{thread_id:hI(e)}):n,c=i.http.authedRequest(F.Post,o,void 0,s||{}),l=i.getRoom(e.getRoomId());return l&&i.credentials.userId&&l.addLocalEchoReceipt(i.credentials.userId,e,t,a),c})()}sendReadReceipt(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:SE.Read,i=t.length>2&&t[2]!==void 0?t[2]:!1;if(e){var a=e.getId(),o=n.getRoom(e.getRoomId());if(o!=null&&o.hasPendingEvent(a))throw Error(`Cannot set read receipt to a pending event (${a})`);return n.sendReceipt(e,r,{},i)}})()}setRoomReadMarkers(e,t,n,r){var i=this;return C(function*(){var a=i.getRoom(e);if(a!=null&&a.hasPendingEvent(t))throw Error(`Cannot set read marker to a pending event (${t})`);var o;if(n){if(o=n.getId(),a!=null&&a.hasPendingEvent(o))throw Error(`Cannot set read receipt to a pending event (${o})`);a?.addLocalEchoReceipt(i.credentials.userId,n,SE.Read)}var s;if(r){if(s=r.getId(),a!=null&&a.hasPendingEvent(s))throw Error(`Cannot set read receipt to a pending event (${s})`);a?.addLocalEchoReceipt(i.credentials.userId,r,SE.ReadPrivate)}return yield i.setRoomReadMarkersHttpRequest(e,t,o,s)})()}sendRtcDecline(e,t){return this.sendEvent(e,E.RTCDecline,{"m.relates_to":{event_id:t,rel_type:D.Reference}})}getUrlPreview(e,t){var n=this;return C(function*(){t=Math.floor(t/6e4)*6e4;var r=new URL(e);r.hash=``,e=r.toString();var i=t+`_`+e;if(i in n.urlPreviewCache)return n.urlPreviewCache[i];var a=yield n.isVersionSupported(`v1.11`),o=n.http.authedRequest(F.Get,a?`/media/preview_url`:`/preview_url`,{url:e,ts:t.toString()},void 0,{prefix:a?L.V1:mA.V3,priority:`low`});return n.urlPreviewCache[i]=o,o})()}sendTyping(e,t,n){if(this.isGuest())return Promise.resolve({});var r=T(`/rooms/$roomId/typing/$userId`,{$roomId:e,$userId:this.getUserId()}),i={typing:t};return t&&(i.timeout=n||2e4),this.http.authedRequest(F.Put,r,void 0,i)}getRoomUpgradeHistory(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=this.getRoom(e);if(!r)return[];var i=this.findPredecessorRooms(r,t,n),a=this.findSuccessorRooms(r,t,n);return[...i,r,...a]}findPredecessorRooms(e,t,n){for(var r=[],i=new Set([e.roomId]),a=e.findPredecessor(n)?.roomId;a!==null;){if(a){if(i.has(a))break;i.add(a)}var o=this.getRoom(a);if(o===null)break;if(t){var s=o.currentState.getStateEvents(E.RoomTombstone,``);if(!s||s.getContent().replacement_room!==e.roomId)break}r.splice(0,0,o),e=o,a=e.findPredecessor(n)?.roomId}return r}findSuccessorRooms(e,t,n){for(var r=[],i=e.currentState.getStateEvents(E.RoomTombstone,``);i;){var a=this.getRoom(i.getContent().replacement_room);if(!a||a.roomId===e.roomId)break;if(t){var o=a.findPredecessor(n)?.roomId;if(!o||o!==e.roomId)break}if(r.push(a),new Set(r.map(e=>e.roomId)).size<r.length)return r.slice(0,r.length-1);e=a,i=e.currentState.getStateEvents(E.RoomTombstone,``)}return r}invite(e,t){var n=arguments,r=this;return C(function*(){var i=n.length>2&&n[2]!==void 0?n[2]:{};typeof i!=`object`&&(i={reason:i});var a=r.getRoom(e)?.getHistoryVisibility()??TO.Shared;return[TO.Invited,TO.Joined].includes(a)?r.logger.debug(`Not sharing message history as the room history visibility is currently unshared`):yield r.cryptoBackend?.shareRoomHistoryWithUser(e,t),yield r.membershipChange(e,t,k.Invite,i.reason)})()}inviteByEmail(e,t){return this.inviteByThreePid(e,`email`,t)}inviteByThreePid(e,t,n){var r=this;return C(function*(){var i,a=T(`/rooms/$roomId/invite`,{$roomId:e}),o=r.getIdentityServerUrl(!0);if(!o)return Promise.reject(new I({error:`No supplied identity server URL`,errcode:`ORG.MATRIX.JSSDK_MISSING_PARAM`}));var s={id_server:o,medium:t,address:n};if((i=r.identityServer)!=null&&i.getAccessToken){var c=yield r.identityServer.getAccessToken();c&&(s.id_access_token=c)}return r.http.authedRequest(F.Post,a,void 0,s)})()}leave(e){return this.membershipChange(e,void 0,k.Leave)}leaveRoomChain(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=this.getRoomUpgradeHistory(e,!0),r=n;if(!t){r=[];for(var i of n)if(r.push(i),i.roomId===e)break}var a={},o=[],s=e=>this.leave(e).then(()=>{delete a[e]}).catch(t=>{a[e]=t});for(var c of r)o.push(s(c.roomId));return Promise.all(o).then(()=>a)}ban(e,t,n){return this.membershipChange(e,t,k.Ban,n)}forget(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:!0,i=T(`/rooms/$room_id/forget`,{$room_id:e}),a=yield n.http.authedRequest(F.Post,i);return r&&(n.store.removeRoom(e),n.emit(Z.DeleteRoom,e)),a})()}unban(e,t){var n=T(`/rooms/$roomId/unban`,{$roomId:e}),r={user_id:t};return this.http.authedRequest(F.Post,n,void 0,r)}kick(e,t,n){var r=T(`/rooms/$roomId/kick`,{$roomId:e}),i={user_id:t,reason:n};return this.http.authedRequest(F.Post,r,void 0,i)}membershipChange(e,t,n,r){var i=T(`/rooms/$room_id/$membership`,{$room_id:e,$membership:n});return this.http.authedRequest(F.Post,i,void 0,{user_id:t,reason:r})}getPushActionsForEvent(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!e.getPushActions()||t){var n=this.pushProcessor.actionsAndRuleForEvent(e),r=n.actions,i=n.rule;e.setPushDetails(r,i)}return e.getPushActions()}getPushDetailsForEvent(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!e.getPushDetails()||t){var n=this.pushProcessor.actionsAndRuleForEvent(e),r=n.actions,i=n.rule;e.setPushDetails(r,i)}return e.getPushDetails()}setProfileInfo(e,t){var n=T(`/profile/$userId/$info`,{$userId:this.credentials.userId,$info:e});return this.http.authedRequest(F.Put,n,void 0,t)}setDisplayName(e){var t=this;return C(function*(){var n=yield t.setProfileInfo(`displayname`,{displayname:e}),r=t.getUser(t.getUserId());return r&&(r.displayName=e,r.emit(oO.DisplayName,r.events.presence,r)),n})()}setAvatarUrl(e){var t=this;return C(function*(){var n=yield t.setProfileInfo(`avatar_url`,{avatar_url:e}),r=t.getUser(t.getUserId());return r&&(r.avatarUrl=e,r.emit(oO.AvatarUrl,r.events.presence,r)),n})()}mxcUrlToHttp(e,t,n,r,i,a,o){return hO(this.baseUrl,e,t,n,r,i,a,o)}setSyncPresence(e){var t=this;return C(function*(){var n;(n=t.syncApi)==null||n.setPresence(e)})()}setPresence(e){var t=this;return C(function*(){var n=T(`/presence/$userId/status`,{$userId:t.credentials.userId});if([`offline`,`online`,`unavailable`].indexOf(e.presence)===-1)throw Error(`Bad presence value: `+e.presence);yield t.http.authedRequest(F.Put,n,void 0,e)})()}getPresence(e){var t=T(`/presence/$userId/status`,{$userId:e});return this.http.authedRequest(F.Get,t)}scrollback(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:30,n=0,r=this.ongoingScrollbacks[e.roomId]||{};if(r.promise)return r.promise;if(r.errorTs){var i=Date.now()-r.errorTs;n=Math.max(iI-i,0)}if(e.oldState.paginationToken===null)return Promise.resolve(e);var a=this.store.scrollback(e,t).length;if(a===t)return Promise.resolve(e);t-=a;var o=new Promise((r,i)=>{UE(n).then(()=>this.createMessagesRequest(e.roomId,e.oldState.paginationToken,t,M.Backward)).then(t=>{var n=t.chunk.map(this.getEventMapper());if(t.state){var i=t.state.map(this.getEventMapper());e.currentState.setUnknownStateEvents(i)}var a=x(e.partitionThreadedEvents(n),3),o=a[0],s=a[1],c=a[2];this.processAggregatedTimelineEvents(e,o),e.addEventsToTimeline(o,!0,!0,e.getLiveTimeline()),this.processThreadEvents(e,s,!0),c.forEach(t=>e.relations.aggregateChildEvent(t)),e.oldState.paginationToken=t.end??null,t.chunk.length===0&&(e.oldState.paginationToken=null),this.store.storeEvents(e,n,t.end??null,!0),delete this.ongoingScrollbacks[e.roomId],r(e)}).catch(t=>{this.ongoingScrollbacks[e.roomId]={errorTs:Date.now()},i(t)})});return r={promise:o},this.ongoingScrollbacks[e.roomId]=r,o}getEventMapper(e){return tN(this,e||{})}getEventContext(e,t){var n=this;return C(function*(){var r,i=T(`/rooms/$roomId/context/$eventId`,{$roomId:e,$eventId:t}),a={limit:`0`};(r=n.clientOpts)!=null&&r.lazyLoadMembers&&(a.filter=JSON.stringify(dk.LAZY_LOADING_MESSAGES_FILTER));var o=yield n.http.authedRequest(F.Get,i,a);if(o.event)return{start:o.start,end:o.end,event:o.event,events_after:o.events_after??[],events_before:o.events_before??[],state:o.state??[]};throw Error(`'event' not in '/context' result - homeserver too old?`)})()}getEventTimeline(e,t){var n=this;return C(function*(){if(!n.timelineSupport)throw Error(`timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.`);if(!(e!=null&&e.room))throw Error(`getEventTimeline only supports room timelines`);if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);if(e.thread&&n.supportsThreads())return(yield n.getThreadTimeline(e,t))??null;var r=yield n.getEventContext(e.room.roomId,t);if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);var i=n.getEventMapper(),a=i(r.event);if(a.isRelation(Q.name))return n.logger.warn(`Tried loading a regular timeline at the position of a thread event`),null;var o=[...r.events_after.reverse().map(i),a,...r.events_before.map(i)],s=e.getTimelineForEvent(o[0].getId());s?s.getState(N.BACKWARDS).setUnknownStateEvents(r.state.map(i)):(s=e.addTimeline(),s.initialiseState(r.state.map(i)),s.getState(N.FORWARDS).paginationToken=r.end??null);var c=x(e.room.partitionThreadedEvents(o),3),l=c[0],u=c[1],d=c[2];return e.addEventsToTimeline(l,!0,!1,s,r.start),n.processThreadEvents(e.room,u,!0),n.processAggregatedTimelineEvents(e.room,l),d.forEach(t=>e.relations.aggregateChildEvent(t)),e.getTimelineForEvent(t)??e.room.findThreadForEvent(a)?.liveTimeline??s})()}getThreadTimeline(e,t){var n=this;return C(function*(){if(!n.supportsThreads())throw Error(`could not get thread timeline: no client support`);if(!e.room)throw Error(`could not get thread timeline: not a room timeline`);if(!e.thread)throw Error(`could not get thread timeline: not a thread timeline`);var r=yield n.getEventContext(e.room.roomId,t),i=n.getEventMapper(),a=i(r.event);if(e.canContain(a)){var o=n.canSupport.get(UA.RelationsRecursion)!==HA.Unsupported;if(SI.hasServerSideSupport)if(SI.hasServerSideFwdPaginationSupport){if(!e.thread)throw Error(`could not get thread timeline: not a thread timeline`);var s=e.thread,c=yield n.fetchRelations(e.room.roomId,s.id,null,null,{dir:M.Backward,from:r.start,recurse:o||void 0}),l=yield n.fetchRelations(e.room.roomId,s.id,null,null,{dir:M.Forward,from:r.end,recurse:o||void 0}),u=[...l.chunk.reverse().filter(uF(s.id)).map(i),a,...c.chunk.filter(uF(s.id)).map(i)];for(var d of u)yield e.thread?.processEvent(d);var f=e.getTimelineForEvent(a.getId());if(f?f.getState(N.BACKWARDS).setUnknownStateEvents(r.state.map(i)):(f=e.addTimeline(),f.initialiseState(r.state.map(i))),e.addEventsToTimeline(u,!0,!1,f,l.next_batch),!c.next_batch){var p=yield n.fetchRoomEvent(e.room.roomId,s.id);e.addEventsToTimeline([i(p)],!0,!1,f,null)}return f.setPaginationToken(c.next_batch??null,M.Backward),f.setPaginationToken(l.next_batch??null,M.Forward),n.processAggregatedTimelineEvents(e.room,u),e.getTimelineForEvent(t)??f}else{for(var m=e.thread,h=yield n.fetchRelations(e.room.roomId,m.id,Q.name,null,{dir:M.Backward,from:r.start,recurse:o||void 0}),g=[],_=r.end;_;){var v=yield n.fetchRelations(e.room.roomId,m.id,Q.name,null,{dir:M.Forward,from:_,recurse:o||void 0});_=v.next_batch,g.push(...v.chunk)}var y=[...g.reverse().map(i),a,...h.chunk.map(i)];for(var b of y)yield e.thread?.processEvent(b);var x=e.getLiveTimeline();if(x.getState(N.BACKWARDS).setUnknownStateEvents(r.state.map(i)),e.addEventsToTimeline(y,!0,!1,x,null),!h.next_batch){var S=yield n.fetchRoomEvent(e.room.roomId,m.id);e.addEventsToTimeline([i(S)],!0,!1,x,null)}return x.setPaginationToken(h.next_batch??null,M.Backward),x.setPaginationToken(null,M.Forward),n.processAggregatedTimelineEvents(e.room,y),x}}})()}getLatestTimeline(e){var t=this;return C(function*(){if(!t.timelineSupport)throw Error(`timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.`);if(!e.room)throw Error(`getLatestTimeline only supports room timelines`);var n;if(e.threadListType!==null)n=(yield t.createThreadListMessagesRequest(e.room.roomId,null,1,M.Backward,e.threadListType,e.getFilter())).chunk?.[0];else if(e.thread&&SI.hasServerSideSupport){var r=t.canSupport.get(UA.RelationsRecursion)!==HA.Unsupported;n=(yield t.fetchRelations(e.room.roomId,e.thread.id,Q.name,null,{dir:M.Backward,limit:1,recurse:r||void 0})).chunk?.[0]}else{var i,a=T(`/rooms/$roomId/messages`,{$roomId:e.room.roomId}),o={dir:`b`};(i=t.clientOpts)!=null&&i.lazyLoadMembers&&(o.filter=JSON.stringify(dk.LAZY_LOADING_MESSAGES_FILTER)),n=(yield t.http.authedRequest(F.Get,a,o)).chunk?.[0]}if(!n)throw Error(`No message returned when trying to construct getLatestTimeline`);return t.getEventTimeline(e,n.event_id)})()}createMessagesRequest(e,t){var n,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:30,i=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,o=T(`/rooms/$roomId/messages`,{$roomId:e}),s={limit:r.toString(),dir:i};t&&(s.from=t);var c=null;return(n=this.clientOpts)!=null&&n.lazyLoadMembers&&(c=Object.assign({},dk.LAZY_LOADING_MESSAGES_FILTER)),a&&(c||={},Object.assign(c,a.getRoomTimelineFilterComponent()?.toJSON())),c&&(s.filter=JSON.stringify(c)),this.http.authedRequest(F.Get,o,s)}createThreadListMessagesRequest(e,t){var n,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:30,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:M.Backward,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:EI.All,o=arguments.length>5?arguments[5]:void 0,s=T(`/rooms/$roomId/threads`,{$roomId:e}),c={limit:r.toString(),dir:i,include:DI(a)};t&&(c.from=t);var l={};(n=this.clientOpts)!=null&&n.lazyLoadMembers&&(l=X({},dk.LAZY_LOADING_MESSAGES_FILTER)),o&&(l=X(X({},l),o.getRoomTimelineFilterComponent()?.toJSON())),Object.keys(l).length&&(c.filter=JSON.stringify(l));var u={prefix:SI.hasServerSideListSupport===bI.Stable?L.V1:`/_matrix/client/unstable/org.matrix.msc3856`};return this.http.authedRequest(F.Get,s,c,void 0,u).then(e=>X(X({},e),{},{chunk:e.chunk?.reverse(),start:e.prev_batch,end:e.next_batch}))}paginateEventTimeline(e,t){var n=this,r=e.getTimelineSet()===this.notifTimelineSet,i=this.getRoom(e.getRoomId()),a=e.getTimelineSet().threadListType,o=e.getTimelineSet().thread;t||={};var s=t.backwards||!1;if(r&&!s)throw Error(`paginateNotifTimeline can only paginate backwards`);var c=s?N.BACKWARDS:N.FORWARDS,l=e.getPaginationToken(c),u=e.paginationRequests[c];if(u)return u;var d,f,p;if(r)d=`/notifications`,f={limit:(t.limit??30).toString(),only:`highlight`},l&&l!==`end`&&(f.from=l),p=this.http.authedRequest(F.Get,d,f).then(function(){var t=C(function*(t){var r=t.next_token,i=[];t.notifications=t.notifications.filter(hD);for(var a=0;a<t.notifications.length;a++){var o=t.notifications[a],l=n.getEventMapper()(o.event);n.getPushDetailsForEvent(l,!0),l.event.room_id=o.room_id,i[a]=l}var u=e.getTimelineSet();return u.addEventsToTimeline(i,s,!1,e,r),n.processAggregatedTimelineEvents(u.room,i),s&&!t.next_token&&e.setPaginationToken(null,c),!!t.next_token});return function(e){return t.apply(this,arguments)}}()).finally(()=>{e.paginationRequests[c]=null}),e.paginationRequests[c]=p;else if(a!==null){if(!i)throw Error(`Unknown room `+e.getRoomId());if(!SI.hasServerSideFwdPaginationSupport&&c===M.Forward)throw Error(`Cannot paginate threads forwards without server-side support for MSC 3715`);p=this.createThreadListMessagesRequest(e.getRoomId(),l,t.limit,c,a,e.getFilter()).then(t=>{if(t.state){var n=e.getState(c),r=t.state.filter(hD).map(this.getEventMapper());n.setUnknownStateEvents(r)}var a=t.end,o=t.chunk.filter(hD).map(this.getEventMapper());return e.getTimelineSet().addEventsToTimeline(o,s,!1,e,a),this.processAggregatedTimelineEvents(i,o),this.processThreadRoots(i,o,s),s&&t.end==t.start&&e.setPaginationToken(null,c),t.end!==t.start}).finally(()=>{e.paginationRequests[c]=null}),e.paginationRequests[c]=p}else if(o){var m=this.getRoom(e.getRoomId()??void 0);if(!m)throw Error(`Unknown room `+e.getRoomId());var h=this.canSupport.get(UA.RelationsRecursion)!==HA.Unsupported;p=this.fetchRelations(e.getRoomId()??``,o.id,null,null,{dir:c,limit:t.limit,from:l??void 0,recurse:h||void 0}).then(function(){var t=C(function*(t){var r=n.getEventMapper(),i=t.chunk.filter(hD).filter(uF(o.id)).map(r);for(var a of i.slice().reverse()){yield o?.processEvent(a);var l=a.getSender();(!s||o?.getEventReadUpTo(l)===null)&&m.addLocalEchoReceipt(l,a,SE.Read)}var u=t.next_batch,d=e.getTimelineSet();if(d.addEventsToTimeline(i,s,!1,e,u??null),!u&&s){var f=o.rootEvent??r(yield n.fetchRoomEvent(e.getRoomId()??``,o.id));d.addEventsToTimeline([f],!0,!1,e,null)}return n.processAggregatedTimelineEvents(d.room,i),s&&!u&&e.setPaginationToken(null,c),!!u});return function(e){return t.apply(this,arguments)}}()).finally(()=>{e.paginationRequests[c]=null}),e.paginationRequests[c]=p}else{if(!i)throw Error(`Unknown room `+e.getRoomId());p=this.createMessagesRequest(e.getRoomId(),l,t.limit,c,e.getFilter()).then(t=>{if(t.state){var n=e.getState(c),r=t.state.filter(hD).map(this.getEventMapper());n.setUnknownStateEvents(r)}var a=t.end,o=t.chunk.filter(hD).map(this.getEventMapper()),l=e.getTimelineSet(),u=x(i.partitionThreadedEvents(o),3),d=u[0],f=u[2];l.addEventsToTimeline(d,s,!1,e,a),this.processAggregatedTimelineEvents(i,d),this.processThreadRoots(i,d.filter(e=>e.getServerAggregatedRelation(Q.name)),!1),f.forEach(e=>i.relations.aggregateChildEvent(e));var p=t.end===void 0||t.end===t.start;return s&&p&&e.setPaginationToken(null,c),!p}).finally(()=>{e.paginationRequests[c]=null}),e.paginationRequests[c]=p}return p}resetNotifTimelineSet(){this.notifTimelineSet&&this.notifTimelineSet.resetLiveTimeline(`end`)}peekInRoom(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:20;return(t=this.peekSync)==null||t.stopPeeking(),this.peekSync=new nj(this,this.clientOpts,this.buildSyncApiOptions()),this.peekSync.peek(e,n)}stopPeeking(){this.peekSync&&=(this.peekSync.stopPeeking(),null)}setGuestAccess(e,t){var n=this.sendStateEvent(e,E.RoomGuestAccess,{guest_access:t.allowJoin?wO.CanJoin:wO.Forbidden},``),r=Promise.resolve();return t.allowRead&&(r=this.sendStateEvent(e,E.RoomHistoryVisibility,{history_visibility:TO.WorldReadable},``)),Promise.all([r,n]).then()}requestRegisterEmailToken(e,t,n,r){return this.requestTokenFromEndpoint(`/register/email/requestToken`,{email:e,client_secret:t,send_attempt:n,next_link:r})}requestRegisterMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint(`/register/msisdn/requestToken`,{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestAdd3pidEmailToken(e,t,n,r){return this.requestTokenFromEndpoint(`/account/3pid/email/requestToken`,{email:e,client_secret:t,send_attempt:n,next_link:r})}requestAdd3pidMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint(`/account/3pid/msisdn/requestToken`,{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestPasswordEmailToken(e,t,n,r){return this.requestTokenFromEndpoint(`/account/password/email/requestToken`,{email:e,client_secret:t,send_attempt:n,next_link:r})}requestPasswordMsisdnToken(e,t,n,r,i){return this.requestTokenFromEndpoint(`/account/password/msisdn/requestToken`,{country:e,phone_number:t,client_secret:n,send_attempt:r,next_link:i})}requestTokenFromEndpoint(e,t){var n=this;return C(function*(){var r=Object.assign({},t);return n.http.request(F.Post,e,void 0,r)})()}getRoomPushRule(e,t){if(this.pushRules){var n;return(n=this.pushRules[e])==null||(n=n.room)==null?void 0:n.find(e=>e.rule_id===t)}else throw Error(`SyncApi.sync() must be done before accessing to push rules.`)}setRoomMutePushRule(e,t,n){var r,i=!1,a=this.getRoomPushRule(e,t);if(a!=null&&a.actions.includes(kM.DontNotify)&&(i=!0),!n)i&&(r=this.deletePushRule(e,MM.RoomSpecific,a.rule_id));else if(!a)r=this.addPushRule(e,MM.RoomSpecific,t,{actions:[kM.DontNotify]});else if(!i){var o=Promise.withResolvers();this.deletePushRule(e,MM.RoomSpecific,a.rule_id).then(()=>{this.addPushRule(e,MM.RoomSpecific,t,{actions:[kM.DontNotify]}).then(()=>{o.resolve()}).catch(e=>{o.reject(e)})}).catch(e=>{o.reject(e)}),r=o.promise}if(r)return new Promise((e,t)=>{r.then(()=>{this.getPushRules().then(t=>{this.pushRules=t,e()}).catch(e=>{t(e)})}).catch(e=>{this.getPushRules().then(n=>{this.pushRules=n,t(e)}).catch(n=>{t(e)})})})}searchMessageText(e){var t={search_term:e.query};return`keys`in e&&(t.keys=e.keys),this.search({body:{search_categories:{room_events:t}}})}searchRoomEvents(e){var t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:uN.Recent,event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},n={_query:t,results:[],highlights:[]};return this.search({body:t}).then(e=>this.processRoomEventsSearch(n,e))}backPaginateRoomEventsSearch(e){if(!e.next_batch)return Promise.reject(Error(`Cannot backpaginate event search any further`));if(e.pendingRequest)return e.pendingRequest;var t={body:e._query,next_batch:e.next_batch},n=this.search(t,e.abortSignal).then(t=>this.processRoomEventsSearch(e,t)).finally(()=>{e.pendingRequest=void 0});return e.pendingRequest=n,n}processRoomEventsSearch(e,t){var n=t.search_categories.room_events;e.count=n.count,e.next_batch=n.next_batch;var r=new Set(n.highlights);e.highlights.forEach(e=>{r.add(e)}),e.highlights=Array.from(r);for(var i=this.getEventMapper(),a=n.results?.length??0,o=0;o<a;o++){var s=XM.fromJson(n.results[o],i),c=this.getRoom(s.context.getEvent().getRoomId());if(c)for(var l of s.context.getTimeline())l.setMetadata(c.currentState,!1);e.results.push(s)}return e}syncLeftRooms(){if(this.syncedLeftRooms)return Promise.resolve([]);if(this.syncLeftRoomsPromise)return this.syncLeftRoomsPromise;var e=new nj(this,this.clientOpts,this.buildSyncApiOptions());return this.syncLeftRoomsPromise=e.syncLeftRooms(),this.syncLeftRoomsPromise.then(()=>{this.logger.debug(`Marking success of sync left room request`),this.syncedLeftRooms=!0}).finally(()=>{this.syncLeftRoomsPromise=void 0}),this.syncLeftRoomsPromise}createFilter(e){var t=T(`/user/$userId/filter`,{$userId:this.credentials.userId});return this.http.authedRequest(F.Post,t,void 0,e).then(t=>{var n=dk.fromJson(this.credentials.userId,t.filter_id,e);return this.store.storeFilter(n),n})}getFilter(e,t,n){if(n){var r=this.store.getFilter(e,t);if(r)return Promise.resolve(r)}var i=T(`/user/$userId/filter/$filterId`,{$userId:e,$filterId:t});return this.http.authedRequest(F.Get,i).then(n=>{var r=dk.fromJson(e,t,n);return this.store.storeFilter(r),r})}getOrCreateFilter(e,t){var n=this;return C(function*(){var r=n.store.getFilterIdByName(e),i;if(r){try{var a=yield n.getFilter(n.credentials.userId,r,!0);a&&NE(a.getDefinition(),t.getDefinition())&&(i=r)}catch(e){if(e.errcode!==`M_UNKNOWN`&&e.errcode!==`M_NOT_FOUND`)throw e}i||n.store.setFilterIdByName(e,void 0)}if(i)return i;var o=yield n.createFilter(t.getDefinition());return n.store.setFilterIdByName(e,o.filterId),o.filterId})()}getOpenIdToken(){var e=T(`/user/$userId/openid/request_token`,{$userId:this.credentials.userId});return this.http.authedRequest(F.Post,e,void 0,{})}turnServer(){return this.http.authedRequest(F.Get,`/voip/turnServer`)}getTurnServers(){return this.turnServers||[]}getTurnServersExpiry(){return this.turnServersExpiry}get pollingTurnServers(){return this.checkTurnServersIntervalID!==void 0}checkTurnServers(){var e=this;return C(function*(){if(e.supportsVoip()){var t=!1,n=e.turnServersExpiry-Date.now();if(n>aI)e.logger.debug(`TURN creds are valid for another `+n+` ms: not fetching new ones.`),t=!0;else{e.logger.debug(`Fetching new TURN credentials`);try{var r=yield e.turnServer();r.uris&&(e.logger.debug(`Got TURN URIs: `+r.uris+` refresh in `+r.ttl+` secs`),e.turnServers=[{urls:r.uris,username:r.username,credential:r.password}],e.turnServersExpiry=Date.now()+r.ttl*1e3,t=!0,e.emit(Z.TurnServers,e.turnServers))}catch(t){e.logger.error(`Failed to get TURN URIs`,t),t.httpStatus===403?(e.logger.info(`TURN access unavailable for this account: stopping credentials checks`),e.checkTurnServersIntervalID!==null&&globalThis.clearInterval(e.checkTurnServersIntervalID),e.checkTurnServersIntervalID=void 0,e.emit(Z.TurnServersError,t,!0)):e.emit(Z.TurnServersError,t,!1)}}return t}})()}setFallbackICEServerAllowed(e){this.fallbackICEServerAllowed=e}isFallbackICEServerAllowed(){return this.fallbackICEServerAllowed}isSynapseAdministrator(){var e=T(`/_synapse/admin/v1/users/$userId/admin`,{$userId:this.getUserId()});return this.http.authedRequest(F.Get,e,void 0,void 0,{prefix:``}).then(e=>e.admin)}whoisSynapseUser(e){var t=T(`/_synapse/admin/v1/whois/$userId`,{$userId:e});return this.http.authedRequest(F.Get,t,void 0,void 0,{prefix:``})}deactivateSynapseUser(e){var t=T(`/_synapse/admin/v1/deactivate/$userId`,{$userId:e});return this.http.authedRequest(F.Post,t,void 0,void 0,{prefix:``})}fetchClientWellKnown(){var e=this;return C(function*(){e.clientWellKnownPromise=qM.getRawClientConfig(e.getDomain()??void 0),e.clientWellKnown=yield e.clientWellKnownPromise,e.emit(Z.ClientWellKnown,e.clientWellKnown)})()}getClientWellKnown(){return this.clientWellKnown}waitForClientWellKnown(){if(!this.clientRunning)throw Error(`Client is not running`);return this.clientWellKnownPromise}storeClientOptions(){var e=[`boolean`,`string`,`number`],t=Object.entries(this.clientOpts).filter(t=>{var n=x(t,2);n[0];var r=n[1];return e.includes(typeof r)}).reduce((e,t)=>{var n=x(t,2),r=n[0];return e[r]=n[1],e},{});return this.store.storeClientOptions(t)}_unstable_getSharedRooms(e){var t=this;return C(function*(){var n=yield t.doesServerSupportUnstableFeature(sI),r=yield t.doesServerSupportUnstableFeature(cI),i=yield t.doesServerSupportUnstableFeature(lI);if(!n&&!r&&!i)throw Error(`Server does not support the Mutual Rooms API`);var a,o;i?(a=`/uk.half-shot.msc2666/user/mutual_rooms`,o={user_id:e}):(a=T(`/uk.half-shot.msc2666/user/${r?`mutual_rooms`:`shared_rooms`}/\$userId`,{$userId:e}),o={});var s=[],c=null;do{var l={};c!=null&&i&&(l.batch_token=c);var u=yield t.http.authedRequest(F.Get,a,X(X({},o),l),void 0,{prefix:L.Unstable});s.push(...u.joined),c=u.next_batch_token===void 0?null:u.next_batch_token}while(c!=null);return s})()}_unstable_getRTCTransports(){var e=this;return C(function*(){return(yield e.http.authedRequest(F.Get,`/rtc/transports`,void 0,void 0,{prefix:`${L.Unstable}/org.matrix.msc4143`})).rtc_transports})()}getVersions(){var e=this;return C(function*(){return e.serverVersionsPromise?e.serverVersionsPromise:(e.serverVersionsPromise=e.http.authedRequest(F.Get,`/_matrix/client/versions`,void 0,void 0,{prefix:``}).catch(t=>{throw e.serverVersionsPromise=void 0,t}),e.canSupport=yield GA(yield e.serverVersionsPromise),e.serverVersionsPromise)})()}isVersionSupported(e){var t=this;return C(function*(){var n=(yield t.getVersions()).versions;return n&&n.includes(e)})()}doesServerSupportUnstableFeature(e){var t=this;return C(function*(){var n=yield t.getVersions();if(!n)return!1;var r=n.unstable_features;return r&&!!r[e]})()}doesServerForceEncryptionForPreset(e){var t=this;return C(function*(){var n=yield t.getVersions();if(!n)return!1;var r=n.unstable_features,i=e.includes(`_chat`)?e.substring(0,e.indexOf(`_chat`)):e;return r&&!!r[`io.element.e2ee_forced.${i}`]})()}doesServerSupportThread(){var e=this;return C(function*(){if(yield e.isVersionSupported(`v1.4`))return{threads:bI.Stable,list:bI.Stable,fwdPagination:bI.Stable};try{var t=x(yield Promise.all([e.doesServerSupportUnstableFeature(`org.matrix.msc3440`),e.doesServerSupportUnstableFeature(`org.matrix.msc3440.stable`),e.doesServerSupportUnstableFeature(`org.matrix.msc3856`),e.doesServerSupportUnstableFeature(`org.matrix.msc3856.stable`),e.doesServerSupportUnstableFeature(`org.matrix.msc3715`),e.doesServerSupportUnstableFeature(`org.matrix.msc3715.stable`)]),6),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5];return{threads:xI(r,n),list:xI(a,i),fwdPagination:xI(s,o)}}catch{return{threads:bI.None,list:bI.None,fwdPagination:bI.None}}})()}hasLazyLoadMembersEnabled(){var e;return!!((e=this.clientOpts)!=null&&e.lazyLoadMembers)}setCanResetTimelineCallback(e){this.canResetTimelineCallback=e}getCanResetTimelineCallback(){return this.canResetTimelineCallback}relations(e,t,n,r){var i=arguments,a=this;return C(function*(){var o=i.length>4&&i[4]!==void 0?i[4]:{dir:M.Backward},s=r?a.getEncryptedIfNeededEventType(e,r):null,c=x(yield Promise.all([a.fetchRoomEvent(e,t),a.fetchRelations(e,t,n,s,o)]),2),l=c[0],u=c[1],d=a.getEventMapper(),f=l?d(l):void 0,p=u.chunk.map(d);if(s===E.RoomMessageEncrypted){var m=f?p.concat(f):p;yield Promise.all(m.map(e=>a.decryptEventIfNeeded(e))),r!==null&&(p=p.filter(e=>e.getType()===r))}return f&&n===D.Replace&&(p=p.filter(e=>e.getSender()===f.getSender())),{originalEvent:f??null,events:p,nextBatch:u.next_batch??null,prevBatch:u.prev_batch??null}})()}generateClientSecret(){return yj(32)}decryptEventIfNeeded(e,t){return e.isState()&&!this.enableEncryptedStateEvents?Promise.resolve():(e.shouldAttemptDecryption()&&this.getCrypto()&&e.attemptDecryption(this.cryptoBackend,t),e.isBeingDecrypted()?e.getDecryptionPromise():Promise.resolve())}termsUrlForService(e,t){switch(e){case JM.IS:return this.http.getUrl(`/terms`,void 0,pA.V2,t);case JM.IM:return this.http.getUrl(`/terms`,void 0,`/_matrix/integrations/v1`,t);default:throw Error(`Unsupported service type`)}}getHomeserverUrl(){return this.baseUrl}getIdentityServerUrl(){var e,t;return arguments.length>0&&arguments[0]!==void 0&&arguments[0]&&((e=this.idBaseUrl)!=null&&e.startsWith(`http://`)||(t=this.idBaseUrl)!=null&&t.startsWith(`https://`))?this.idBaseUrl.split(`://`)[1]:this.idBaseUrl}setIdentityServerUrl(e){this.idBaseUrl=HE(e),this.http.setIdBaseUrl(this.idBaseUrl)}getAccessToken(){return this.http.opts.accessToken||null}getRefreshToken(){return this.http.opts.refreshToken??null}setAccessToken(e){this.http.opts.accessToken=e,this.serverVersionsPromise=void 0}isLoggedIn(){return this.http.opts.accessToken!==void 0}makeTxnId(){return`m`+new Date().getTime()+`.`+ this.txnCtr++}isUsernameAvailable(e){return this.http.authedRequest(F.Get,`/register/available`,{username:e}).then(e=>e.available).catch(e=>e.errcode===`M_USER_IN_USE`?!1:Promise.reject(e))}register(e,t,n,r,i,a,o){n&&(r.session=n);var s={auth:r,refresh_token:!0};return e!=null&&(s.username=e),t!=null&&(s.password=t),a!=null&&(s.guest_access_token=a),o!=null&&(s.inhibit_login=o),this.registerRequest(s)}registerGuest(){var e=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}).body;return this.registerRequest(e||{},`guest`)}registerRequest(e,t){var n={};return t&&(n.kind=t),this.http.request(F.Post,`/register`,n,e)}refreshToken(e){var t=t=>this.http.authedRequest(F.Post,`/refresh`,void 0,{refresh_token:e},{prefix:t,inhibitLogoutEmit:!0});return t(L.V3).catch(e=>{if(e.errcode===`M_UNRECOGNIZED`)return t(L.V1);throw e})}loginFlows(){return this.http.request(F.Get,`/login`)}login(e,t){return this.loginRequest(X(X({},t),{},{type:e})).then(e=>(e.access_token&&e.user_id&&(this.http.opts.accessToken=e.access_token,this.credentials={userId:e.user_id}),e))}loginWithPassword(e,t){return this.login(`m.login.password`,{user:e,password:t})}getCasLoginUrl(e){return this.getSsoLoginUrl(e,`cas`)}getSsoLoginUrl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`sso`,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=`/login/`+t+`/redirect`;n&&(i+=`/`+n);var a={redirectUrl:e,[fI.stable]:r,[fI.unstable]:r};return this.http.getUrl(i,a).href}loginWithToken(e){return this.login(`m.login.token`,{token:e})}loginRequest(e){var t=this;return C(function*(){return yield t.http.authedRequest(F.Post,`/login`,void 0,e)})()}logout(){var e=arguments,t=this;return C(function*(){return e.length>0&&e[0]!==void 0&&e[0]&&(t.stopClient(),t.http.abort()),t.http.authedRequest(F.Post,`/logout`)})()}deactivateAccount(e,t){var n={};return e&&(n.auth=e),t!==void 0&&(n.erase=t),this.http.authedRequest(F.Post,`/account/deactivate`,void 0,n)}requestLoginToken(e){var t=this;return C(function*(){var n={auth:e};return t.http.authedRequest(F.Post,`/login/get_token`,void 0,n,{prefix:L.V1})})()}getFallbackAuthUrl(e,t){var n=T(`/auth/$loginType/fallback/web`,{$loginType:e});return this.http.getUrl(n,{session:t}).href}createRoom(e){var t=this;return C(function*(){var n,r=(e.invite_3pid||[]).filter(e=>!e.id_access_token);if(r.length>0&&(n=t.identityServer)!=null&&n.getAccessToken){var i=yield t.identityServer.getAccessToken();if(i)for(var a of r)a.id_access_token=i}return t.http.authedRequest(F.Post,`/createRoom`,void 0,e)})()}fetchRelations(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{dir:M.Backward};SI.hasServerSideFwdPaginationSupport===bI.Experimental&&(i=kE(`dir`,`org.matrix.msc3715.dir`,i)),this.canSupport.get(UA.RelationsRecursion)===HA.Unstable&&(i=kE(`recurse`,`org.matrix.msc3981.recurse`,i));var a=OE(i),o=`/rooms/$roomId/relations/$eventId`;n===null?r!==null&&(this.logger.warn(`eventType: ${r} ignored when fetching 22 relations as relationType is null`),r=null):(o+=`/$relationType`,r!==null&&(o+=`/$eventType`));var s=T(o+`?`+a,{$roomId:e,$eventId:t,$relationType:n,$eventType:r});return this.http.authedRequest(F.Get,s,void 0,void 0,{prefix:L.V1})}roomState(e){var t=T(`/rooms/$roomId/state`,{$roomId:e});return this.http.authedRequest(F.Get,t)}fetchRoomEvent(e,t){var n=T(`/rooms/$roomId/event/$eventId`,{$roomId:e,$eventId:t});return this.http.authedRequest(F.Get,n)}members(e,t,n,r){var i={};t&&(i.membership=t),n&&(i.not_membership=n),r&&(i.at=r);var a=T(`/rooms/$roomId/members?`+OE(i),{$roomId:e});return this.http.authedRequest(F.Get,a)}upgradeRoom(e,t,n){var r=T(`/rooms/$roomId/upgrade`,{$roomId:e});return this.http.authedRequest(F.Post,r,void 0,{new_version:t,additional_creators:n})}getStateEvent(e,t,n){var r={$roomId:e,$eventType:t,$stateKey:n},i=T(`/rooms/$roomId/state/$eventType`,r);return n!==void 0&&(i=T(i+`/$stateKey`,r)),this.http.authedRequest(F.Get,i)}sendStateEvent(e,t,n){var r=arguments,i=this;return C(function*(){var a=r.length>3&&r[3]!==void 0?r[3]:``,o=r.length>4&&r[4]!==void 0?r[4]:{},s=i.getRoom(e),c=new MI({room_id:e,type:t,state_key:a,content:n});yield i.encryptStateEventIfNeeded(c,s??void 0);var l={$roomId:e,$eventType:c.getWireType(),$stateKey:c.getWireStateKey()},u=T(`/rooms/$roomId/state/$eventType`,l);return a!==void 0&&(u=T(u+`/$stateKey`,l)),i.http.authedRequest(F.Put,u,void 0,c.getWireContent(),o)})()}encryptStateEventIfNeeded(e,t){var n=this;return C(function*(){if(n.enableEncryptedStateEvents&&t&&!(!n.cryptoBackend&&n.usingExternalCrypto)){if(!n.cryptoBackend)throw Error(`This room is configured to use encryption, but your client does not support encryption.`);(yield n.shouldEncryptEventForRoom(e,t))&&(yield n.cryptoBackend.isStateEncryptionEnabledInRoom(t.roomId))&&([`m.room.create`,`m.room.member`,`m.room.join_rules`,`m.room.power_levels`,`m.room.third_party_invite`,`m.room.history_visibility`,`m.room.guest_access`,`m.room.encryption`].includes(e.getType())||(yield n.cryptoBackend.encryptEvent(e,t)))}})()}roomInitialSync(e,t){var n=T(`/rooms/$roomId/initialSync`,{$roomId:e});return this.http.authedRequest(F.Get,n,{limit:t?.toString()??`30`})}setRoomReadMarkersHttpRequest(e,t,n,r){var i=this;return C(function*(){var a=T(`/rooms/$roomId/read_markers`,{$roomId:e}),o={[SE.FullyRead]:t,[SE.Read]:n};return((yield i.doesServerSupportUnstableFeature(`org.matrix.msc2285.stable`))||(yield i.isVersionSupported(`v1.4`)))&&(o[SE.ReadPrivate]=r),i.http.authedRequest(F.Post,a,void 0,o)})()}getJoinedRooms(){var e=T(`/joined_rooms`,{});return this.http.authedRequest(F.Get,e)}getJoinedRoomMembers(e){var t=T(`/rooms/$roomId/joined_members`,{$roomId:e});return this.http.authedRequest(F.Get,t)}publicRooms(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.server,n=e.limit,r=e.since,i=rO(e,nI);if(Object.keys(i).length===0){var a={server:t,limit:n,since:r};return this.http.authedRequest(F.Get,`/publicRooms`,a)}else{var o={server:t},s=X({limit:n,since:r},i);return this.http.authedRequest(F.Post,`/publicRooms`,o,s)}}createAlias(e,t){var n=T(`/directory/room/$alias`,{$alias:e}),r={room_id:t};return this.http.authedRequest(F.Put,n,void 0,r)}deleteAlias(e){var t=T(`/directory/room/$alias`,{$alias:e});return this.http.authedRequest(F.Delete,t)}getLocalAliases(e){var t=T(`/rooms/$roomId/aliases`,{$roomId:e}),n=L.V3;return this.http.authedRequest(F.Get,t,void 0,void 0,{prefix:n})}getRoomIdForAlias(e){var t=T(`/directory/room/$alias`,{$alias:e});return this.http.authedRequest(F.Get,t)}getRoomDirectoryVisibility(e){var t=T(`/directory/list/room/$roomId`,{$roomId:e});return this.http.authedRequest(F.Get,t)}setRoomDirectoryVisibility(e,t){var n=T(`/directory/list/room/$roomId`,{$roomId:e});return this.http.authedRequest(F.Put,n,void 0,{visibility:t})}searchUserDirectory(e){var t=e.term,n=e.limit,r={search_term:t};return n!==void 0&&(r.limit=n),this.http.authedRequest(F.Post,`/user_directory/search`,void 0,r)}uploadContent(e,t){return this.http.uploadContent(e,t)}cancelUpload(e){return this.http.cancelUpload(e)}getCurrentUploads(){return this.http.getCurrentUploads()}getProfileInfo(e,t){var n=t?T(`/profile/$userId/$info`,{$userId:e,$info:t}):T(`/profile/$userId`,{$userId:e});return this.http.authedRequest(F.Get,n)}doesServerSupportExtendedProfiles(){var e=this;return C(function*(){return(yield e.isVersionSupported(`v1.16`))||(yield e.doesServerSupportUnstableFeature(`uk.tcpip.msc4133`))||(yield e.doesServerSupportUnstableFeature(`uk.tcpip.msc4133.stable`))})()}getExtendedProfileRequestPrefix(){var e=this;return C(function*(){return(yield e.isVersionSupported(`v1.16`))||(yield e.doesServerSupportUnstableFeature(`uk.tcpip.msc4133.stable`))?L.V3:`/_matrix/client/unstable/uk.tcpip.msc4133`})()}getExtendedProfile(e){var t=this;return C(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);return t.http.authedRequest(F.Get,T(`/profile/$userId`,{$userId:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getExtendedProfileProperty(e,t){var n=this;return C(function*(){if(!(yield n.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);var r=yield n.store.getUserProfile(e);if(r?.[t]!==void 0)return r[t];var i=yield n.http.authedRequest(F.Get,T(`/profile/$userId/$key`,{$userId:e,$key:t}),void 0,void 0,{prefix:yield n.getExtendedProfileRequestPrefix()});return yield n.store.storeUserProfiles(new Map([[e,i]])),i[t]})()}setExtendedProfileProperty(e,t){var n=this;return C(function*(){if(!(yield n.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);var r=n.getUserId();yield n.http.authedRequest(F.Put,T(`/profile/$userId/$key`,{$userId:r,$key:e}),void 0,{[e]:t},{prefix:yield n.getExtendedProfileRequestPrefix()})})()}deleteExtendedProfileProperty(e){var t=this;return C(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);var n=t.getUserId();yield t.http.authedRequest(F.Delete,T(`/profile/$userId/$key`,{$userId:n,$key:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}patchExtendedProfile(e){var t=this;return C(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);var n=t.getUserId();return t.http.authedRequest(F.Patch,T(`/profile/$userId`,{$userId:n}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}setExtendedProfile(e){var t=this;return C(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw Error(`Server does not support extended profiles`);var n=t.getUserId();yield t.http.authedRequest(F.Put,T(`/profile/$userId`,{$userId:n}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getThreePids(){return this.http.authedRequest(F.Get,`/account/3pid`)}addThreePidOnly(e){var t=this;return C(function*(){return t.http.authedRequest(F.Post,`/account/3pid/add`,void 0,e)})()}bindThreePid(e){var t=this;return C(function*(){return t.http.authedRequest(F.Post,`/account/3pid/bind`,void 0,e)})()}unbindThreePid(e,t){var n=this;return C(function*(){var r=`/account/3pid/unbind`,i={medium:e,address:t,id_server:n.getIdentityServerUrl(!0)};return n.http.authedRequest(F.Post,r,void 0,i)})()}deleteThreePid(e,t){return this.http.authedRequest(F.Post,`/account/3pid/delete`,void 0,{medium:e,address:t})}setPassword(e,t,n){var r=`/account/password`,i={auth:e,new_password:t,logout_devices:n};return this.http.authedRequest(F.Post,r,void 0,i)}getDevices(){return this.http.authedRequest(F.Get,`/devices`)}getDevice(e){var t=T(`/devices/$device_id`,{$device_id:e});return this.http.authedRequest(F.Get,t)}setDeviceDetails(e,t){var n=T(`/devices/$device_id`,{$device_id:e});return this.http.authedRequest(F.Put,n,void 0,t)}deleteDevice(e,t){var n=T(`/devices/$device_id`,{$device_id:e}),r={};return t&&(r.auth=t),this.http.authedRequest(F.Delete,n,void 0,r)}deleteMultipleDevices(e,t){var n={devices:e};return t&&(n.auth=t),this.http.authedRequest(F.Post,`/delete_devices`,void 0,n)}getPushers(){var e=this;return C(function*(){var t=yield e.http.authedRequest(F.Get,`/pushers`);return(yield e.doesServerSupportUnstableFeature(`org.matrix.msc3881`))||(t.pushers=t.pushers.map(e=>(e.hasOwnProperty(QD.name)||(e[QD.name]=!0),e))),t})()}setPusher(e){return this.http.authedRequest(F.Post,`/pushers/set`,void 0,e)}removePusher(e,t){var n=`/pushers/set`,r={pushkey:e,app_id:t,kind:null};return this.http.authedRequest(F.Post,n,void 0,r)}setLocalNotificationSettings(e,t){var n=`${$D.name}.${e}`;return this.setAccountData(n,t)}getPushRules(){return this.http.authedRequest(F.Get,`/pushrules/`).then(e=>(this.setPushRules(e),this.pushRules))}setPushRules(e){this.pushRules=UM.rewriteDefaultRules(this.logger,e,this.getUserId()),this.pushProcessor.updateCachedPushRuleKeys(this.pushRules)}addPushRule(e,t,n,r){var i=T(`/pushrules/`+e+`/$kind/$ruleId`,{$kind:t,$ruleId:n});return this.http.authedRequest(F.Put,i,void 0,r)}deletePushRule(e,t,n){var r=T(`/pushrules/`+e+`/$kind/$ruleId`,{$kind:t,$ruleId:n});return this.http.authedRequest(F.Delete,r)}setPushRuleEnabled(e,t,n,r){var i=T(`/pushrules/`+e+`/$kind/$ruleId/enabled`,{$kind:t,$ruleId:n});return this.http.authedRequest(F.Put,i,void 0,{enabled:r})}setPushRuleActions(e,t,n,r){var i=T(`/pushrules/`+e+`/$kind/$ruleId/actions`,{$kind:t,$ruleId:n});return this.http.authedRequest(F.Put,i,void 0,{actions:r})}search(e,t){var n=e.body,r=e.next_batch,i={};return r&&(i.next_batch=r),this.http.authedRequest(F.Post,`/search`,i,n,{abortSignal:t})}uploadKeysRequest(e,t){return this.http.authedRequest(F.Post,`/keys/upload`,void 0,e)}uploadKeySignatures(e){return this.http.authedRequest(F.Post,`/keys/signatures/upload`,void 0,e)}downloadKeysForUsers(e){var t=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).token,n={device_keys:{}};return t!==void 0&&(n.token=t),e.forEach(e=>{n.device_keys[e]=[]}),this.http.authedRequest(F.Post,`/keys/query`,void 0,n)}claimOneTimeKeys(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`signed_curve25519`,n=arguments.length>2?arguments[2]:void 0,r={};t===void 0&&(t=`signed_curve25519`);for(var i of e){var a=x(i,2),o=a[0],s=a[1],c=r[o]||{};mD(r,o,c),mD(c,s,t)}var l={one_time_keys:r};return n&&(l.timeout=n),this.http.authedRequest(F.Post,`/keys/claim`,void 0,l)}getKeyChanges(e,t){var n={from:e,to:t};return this.http.authedRequest(F.Get,`/keys/changes`,n)}uploadDeviceSigningKeys(e,t){var n=Object.assign({},t);return e&&Object.assign(n,{auth:e}),this.http.authedRequest(F.Post,`/keys/device_signing/upload`,void 0,n,{prefix:L.Unstable})}registerWithIdentityServer(e){if(!this.idBaseUrl)throw Error(`No identity server base URL set`);var t=this.http.getUrl(`/account/register`,void 0,pA.V2,this.idBaseUrl);return this.http.requestOtherUrl(F.Post,t,e)}requestEmailToken(e,t,n,r,i){var a={client_secret:t,email:e,send_attempt:n?.toString()};return r&&(a.next_link=r),this.http.idServerRequest(F.Post,`/validate/email/requestToken`,a,pA.V2,i)}requestMsisdnToken(e,t,n,r,i,a){var o={client_secret:n,country:e,phone_number:t,send_attempt:r?.toString()};return i&&(o.next_link=i),this.http.idServerRequest(F.Post,`/validate/msisdn/requestToken`,o,pA.V2,a)}submitMsisdnToken(e,t,n,r){var i={sid:e,client_secret:t,token:n};return this.http.idServerRequest(F.Post,`/validate/msisdn/submitToken`,i,pA.V2,r??void 0)}submitMsisdnTokenOtherUrl(e,t,n,r){var i={sid:t,client_secret:n,token:r};return this.http.requestOtherUrl(F.Post,e,i)}getIdentityHashDetails(e){return this.http.idServerRequest(F.Get,`/hash_details`,void 0,pA.V2,e)}identityHashedLookup(e,t){var n=this;return C(function*(){var r={},i=yield n.getIdentityHashDetails(t);if(!i||!i.lookup_pepper||!i.algorithms)throw Error(`Unsupported identity server: bad response`);r.pepper=i.lookup_pepper;var a={};if(i.algorithms.includes(`sha256`))r.addresses=yield Promise.all(e.map(function(){var e=C(function*(e){var t=pj(yield wP(`${e[0].toLowerCase()} ${e[1].toLowerCase()} ${r.pepper}`));return a[t]=e[0],t});return function(t){return e.apply(this,arguments)}}())),r.algorithm=`sha256`;else if(i.algorithms.includes(`none`))r.addresses=e.map(e=>{var t=`${e[0].toLowerCase()} ${e[1].toLowerCase()}`;return a[t]=e[0],t}),r.algorithm=`none`;else throw Error(`Unsupported identity server: unknown hash algorithm`);var o=yield n.http.idServerRequest(F.Post,`/lookup`,r,pA.V2,t);if(!(o!=null&&o.mappings))return[];var s=[];for(var c of Object.keys(o.mappings)){var l=o.mappings[c],u=a[c];if(!u)throw Error(`Identity server returned more results than expected`);s.push({address:u,mxid:l})}return s})()}lookupThreePid(e,t,n){var r=this;return C(function*(){var i=(yield r.identityHashedLookup([[t,e]],n)).find(e=>e.address===t);return i?{address:t,medium:e,mxid:i.mxid}:{}})()}bulkLookupThreePids(e,t){var n=this;return C(function*(){var r=yield n.identityHashedLookup(e.map(e=>[e[1],e[0]]),t),i=[],a=function*(t){var n=e.find(e=>e[1]===t.address);if(!n)throw Error(`Identity sever returned unexpected results`);i.push([n[0],t.address,t.mxid])};for(var o of r)yield*a(o);return{threepids:i}})()}getIdentityAccount(e){return this.http.idServerRequest(F.Get,`/account`,void 0,pA.V2,e)}sendToDevice(e,t,n){var r=T(`/sendToDevice/$eventType/$txnId`,{$eventType:e,$txnId:n||this.makeTxnId()}),i={messages:fD(t)},a=new Map;for(var o of t){var s=x(o,2),c=s[0],l=s[1];a.set(c,Array.from(l.keys()))}return this.logger.debug(`PUT ${r}`,a),this.http.authedRequest(F.Put,r,void 0,i)}encryptAndSendToDevice(e,t,n){var r=this;return C(function*(){if(!r.cryptoBackend)throw Error(`Cannot encrypt to device event, your client does not support encryption.`);var i=yield r.cryptoBackend.encryptToDeviceMessages(e,t,n);yield r.queueToDevice(i)})()}queueToDevice(e){return this.toDeviceMessageQueue.queueBatch(e)}getThirdpartyProtocols(){return this.http.authedRequest(F.Get,`/thirdparty/protocols`).then(e=>{if(!e||typeof e!=`object`)throw Error(`/thirdparty/protocols did not return an object: ${e}`);return e})}getThirdpartyLocation(e,t){var n=T(`/thirdparty/location/$protocol`,{$protocol:e});return this.http.authedRequest(F.Get,n,t)}getThirdpartyUser(e,t){var n=T(`/thirdparty/user/$protocol`,{$protocol:e});return this.http.authedRequest(F.Get,n,t)}getTerms(e,t){var n=this.termsUrlForService(e,t);return this.http.requestOtherUrl(F.Get,n)}agreeToTerms(e,t,n,r){var i=this.termsUrlForService(e,t),a={Authorization:`Bearer `+n};return this.http.requestOtherUrl(F.Post,i,{user_accepts:r},{headers:a})}reportEvent(e,t,n,r){var i=T(`/rooms/$roomId/report/$eventId`,{$roomId:e,$eventId:t});return this.http.authedRequest(F.Post,i,void 0,{score:n,reason:r})}reportRoom(e,t){var n=T(`/rooms/$roomId/report`,{$roomId:e});return this.http.authedRequest(F.Post,n,void 0,{reason:t})}getRoomHierarchy(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=arguments.length>4?arguments[4]:void 0,a=T(`/rooms/$roomId/hierarchy`,{$roomId:e}),o={suggested_only:String(r),max_depth:n?.toString(),from:i,limit:t?.toString()};return this.http.authedRequest(F.Get,a,o,void 0,{prefix:L.V1}).catch(e=>{if(e.errcode===`M_UNRECOGNIZED`)return this.http.authedRequest(F.Get,a,o,void 0,{prefix:`/_matrix/client/unstable/org.matrix.msc2946`});throw e})}unstableCreateFileTree(e){var t=this;return C(function*(){var n=(yield t.createRoom({name:e,preset:SO.PrivateChat,power_level_content_override:X(X({},sN),{},{users:{[t.getUserId()]:100}}),creation_content:{[BD]:VD.Space},initial_state:[{type:UD.name,state_key:GD.name,content:{[WD.name]:!0}},{type:E.RoomEncryption,state_key:``,content:{algorithm:`m.megolm.v1.aes-sha2`}}]})).room_id;return new lN(t,n)})()}unstableGetFileTreeSpace(e){var t,n=this.getRoom(e);if(n?.getMyMembership()!==k.Join)return null;var r=n.currentState.getStateEvents(E.RoomCreate,``),i=n.currentState.getStateEvents(UD.name,GD.name);if(!r)throw Error(`Expected single room create event`);return!(i!=null&&(t=i.getContent())!=null&&t[WD.name])||r.getContent()?.type!==VD.Space?null:new lN(this,e)}slidingSync(e,t,n){var r={};e.pos&&(r.pos=e.pos,delete e.pos),e.timeout&&(r.timeout=e.timeout,delete e.timeout);var i=e.clientTimeout;return delete e.clientTimeout,this.http.authedRequest(F.Post,`/sync`,r,e,{prefix:`/_matrix/client/unstable/org.matrix.simplified_msc3575`,baseUrl:t,localTimeoutMs:i,abortSignal:n})}supportsThreads(){return this.clientOpts?.threadSupport||!1}supportsIntentionalMentions(){return this.canSupport.get(UA.IntentionalMentions)!==HA.Unsupported}getRoomSummary(e,t){var n=this;return C(function*(){var r={prefix:`/_matrix/client/unstable/im.nheko.summary`};try{var i=T(`/summary/$roomid`,{$roomid:e});return yield n.http.authedRequest(F.Get,i,{via:t},void 0,r)}catch(i){if(i instanceof I&&i.errcode===`M_UNRECOGNIZED`){var a=T(`/rooms/$roomid/summary`,{$roomid:e});return yield n.http.authedRequest(F.Get,a,{via:t},void 0,r)}else throw i}})()}processThreadEvents(e,t,n){e.processThreadedEvents(t,n)}processThreadRoots(e,t,n){this.supportsThreads()&&e.processThreadRoots(t,n)}processBeaconEvents(e,t){this.processAggregatedTimelineEvents(e,t)}processAggregatedTimelineEvents(e,t){t!=null&&t.length&&e&&(e.currentState.processBeaconEvents(t,this),e.processPollEvents(t))}whoami(){var e=this;return C(function*(){return e.http.authedRequest(F.Get,`/account/whoami`)})()}timestampToEvent(e,t,n){var r=this;return C(function*(){var i=T(`/rooms/$roomId/timestamp_to_event`,{$roomId:e}),a={ts:t.toString(),dir:n};try{return yield r.http.authedRequest(F.Get,i,a,void 0,{prefix:L.V1})}catch(e){if(e.errcode===`M_UNRECOGNIZED`&&(e.httpStatus===400||e.httpStatus===404||e.httpStatus===405))return yield r.http.authedRequest(F.Get,i,a,void 0,{prefix:`/_matrix/client/unstable/org.matrix.msc3030`});throw e}})()}getAuthMetadata(){var e=this;return C(function*(){var t;try{var n=yield e.isVersionSupported(`v1.15`);t=yield e.http.request(F.Get,`/auth_metadata`,void 0,void 0,{prefix:n?L.V1:L.Unstable+`/org.matrix.msc2965`})}catch(t){if(t instanceof I&&t.errcode===`M_UNRECOGNIZED`){var r=(yield e.http.request(F.Get,`/auth_issuer`,void 0,void 0,{prefix:L.Unstable+`/org.matrix.msc2965`})).issuer;return $F(r)}throw t}return eI(t)})()}},`RESTORE_BACKUP_ERROR_BAD_KEY`,`RESTORE_BACKUP_ERROR_BAD_KEY`);function pI(e){return Object.fromEntries(Object.entries(e).map(e=>{var t=x(e,2),n=t[0],r=t[1];return[`${uI}.${n}`,r]}))}function mI(e,t){var n,r=e.getUserId(),i=t.getId(),a=e.getRoom(t.getRoomId());if(!(!a||!r||!i)){if(!a.findEventById(i)){w.info(`Decrypted event ${t.getId()} is not in room ${a.roomId}: ignoring`);return}var o=!!t.threadRootId&&!t.isThreadRoot,s;if(o){var c=a.getThread(t.threadRootId);s=c?c.hasUserReadEvent(r,i):!0}else s=a.hasUserReadEvent(r,i);if(!s){var l=e.getPushActionsForEvent(t,!0);if(l!=null&&(n=l.tweaks)!=null&&n.highlight){var u=a.getUnreadCountForEventContext(R.Highlight,t)+1;o?a.setThreadUnreadNotificationCount(t.threadRootId,R.Highlight,u):a.setUnreadNotificationCount(R.Highlight,u)}if(l!=null&&l.notify){var d=a.getUnreadCountForEventContext(R.Total,t)+1;o?a.setThreadUnreadNotificationCount(t.threadRootId,R.Total,d):a.setUnreadNotificationCount(R.Total,d)}}}}function hI(e){return gI(e)?CE:e.threadRootId}function gI(e){return!e.threadRootId||e.isThreadRoot?!0:e.isRelation()?e.isRelation(Q.name)?!1:e.relationEventId===e.threadRootId:(w.warn(`Event is not a relation or a thread root, but still has a threadRootId! id=${e.getId()}`),!0)}function _I(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vI(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?_I(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_I(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var yI=function(e){return e.New=`Thread.new`,e.Update=`Thread.update`,e.NewReply=`Thread.newReply`,e.ViewThread=`Thread.viewThread`,e.Delete=`Thread.delete`,e}({}),bI=function(e){return e[e.None=0]=`None`,e[e.Experimental=1]=`Experimental`,e[e.Stable=2]=`Stable`,e}({});function xI(e,t){return e?bI.Stable:t?bI.Experimental:bI.None}var SI=class e extends _k{constructor(t,n,r){var i;if(super(),i=this,this.id=t,this.rootEvent=n,h(this,`timelineSet`,void 0),h(this,`_currentUserParticipated`,!1),h(this,`reEmitter`,void 0),h(this,`lastEvent`,void 0),h(this,`replyCount`,0),h(this,`lastPendingEvent`,void 0),h(this,`pendingReplyCount`,0),h(this,`room`,void 0),h(this,`client`,void 0),h(this,`pendingEventOrdering`,void 0),h(this,`processRootEventPromise`,void 0),h(this,`initialEventsFetched`,!e.hasServerSideSupport),h(this,`initalEventFetchProm`,void 0),h(this,`replayEvents`,[]),h(this,`onTimelineReset`,C(function*(){yield i.processRootEventPromise,i.processRootEventPromise=void 0})),h(this,`onBeforeRedaction`,(e,t)=>{e!=null&&e.isRelation(Q.name)&&this.room.eventShouldLiveIn(e).threadId===this.id&&e.getId()!==this.id&&!t.status&&(this.replyCount--,this.updatePendingReplyCount(),this.emit(yI.Update,this))}),h(this,`onRedaction`,function(){var e=C(function*(e,t,n){if(n===i.id)if(i.replyCount<=0){for(var r of i.timeline)i.clearEventMetadata(r);i.lastEvent=i.rootEvent,i._currentUserParticipated=!1,i.emit(yI.Delete,i)}else i.lastEvent?.getId()===e.getAssociatedId()&&(yield i.processRootEventPromise,i.processRootEventPromise=void 0),yield i.updateThreadMetadata()});return function(t,n,r){return e.apply(this,arguments)}}()),h(this,`onTimelineEvent`,(e,t,n)=>{if(!n){var r=e.getSender();r&&t&&this.shouldSendLocalEchoReceipt(r,e)&&t.addLocalEchoReceipt(r,e,SE.Read),e.getId()!==this.id&&e.isRelation(Q.name)&&this.replyCount++}this.onEcho(e,n??!1)}),h(this,`onLocalEcho`,e=>{this.onEcho(e,!1)}),h(this,`onEcho`,function(){var e=C(function*(e,t){e.threadRootId===i.id&&i.lastEvent!==e&&(yield i.updateThreadMetadata(),e.isRelation(Q.name)&&(t||(i.lastEvent=void 0,i.emit(yI.NewReply,i,e))))});return function(t,n){return e.apply(this,arguments)}}()),this.setMaxListeners(1e3),!(r!=null&&r.room))throw Error(`element-web#22141: A thread requires a room in order to function`);this.room=r.room,this.client=r.client,this.pendingEventOrdering=r.pendingEventOrdering??oI.Chronological,this.timelineSet=new nk(this.room,{timelineSupport:!0,pendingEvents:!0},this.client,this),this.reEmitter=new VO(this),this.reEmitter.reEmit(this.timelineSet,[z.Timeline,z.TimelineReset]),this.room.on($.BeforeRedaction,this.onBeforeRedaction),this.room.on(z.Redaction,this.onRedaction),this.room.on(z.LocalEchoUpdated,this.onLocalEcho),this.room.on(z.TimelineReset,this.onTimelineReset),this.timelineSet.on(z.Timeline,this.onTimelineEvent),this.processReceipts(r.receipts),this.updateThreadMetadata(),this.setEventMetadata(this.rootEvent)}fetchRootEvent(){var e=this;return C(function*(){try{var t=yield e.client.fetchRoomEvent(e.roomId,e.id);e.rootEvent=e.client.getEventMapper()(t)}catch(e){w.error(`Failed to fetch thread root to construct thread with`,e)}yield e.processEvent(e.rootEvent)})()}static setServerSideSupport(t){e.hasServerSideSupport=t,t!==bI.Stable&&(wI.setPreferUnstable(!0),TI.setPreferUnstable(!0),Q.setPreferUnstable(!0))}static setServerSideListSupport(t){e.hasServerSideListSupport=t}static setServerSideFwdPaginationSupport(t){e.hasServerSideFwdPaginationSupport=t}shouldSendLocalEchoReceipt(e,t){if((this.client.canSupport.get(UA.RelationsRecursion)??HA.Unsupported)===HA.Unsupported){var n=this.getReadReceiptForUserId(e)?.eventId;if(n){var r=this.findEventById(n);if(r&&r.getTs()>t.getTs())return!1}}return!0}get roomState(){return this.room.getLiveTimeline().getState(N.FORWARDS)}addEventToTimeline(e,t){this.findEventById(e.getId())||this.timelineSet.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:t,fromCache:!1,roomState:this.roomState,addToState:!1})}insertEventIntoTimeline(e){var t=e.getId();t&&(this.findEventById(t)||this.timelineSet.insertEventIntoTimeline(e,this.liveTimeline,this.roomState,!1))}addEvents(e,t){e.forEach(e=>this.addEvent(e,t,!1)),this.updateThreadMetadata()}addEvent(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;this.setEventMetadata(t);var i=this.lastReply(),a=!i||t.localTimestamp>=i.localTimestamp;if(!e.hasServerSideSupport)this.addEventToTimeline(t,n),this.client.decryptEventIfNeeded(t);else if(t.isRelation(D.Annotation)||t.isRelation(D.Replace)){this.addRelatedThreadEvent(t,n);return}else !n&&a?(this.addEventToTimeline(t,!1),this.fetchEditsWhereNeeded(t)):n?this.addEventToTimeline(t,n):this.insertEventIntoTimeline(t);t.getId()!==this.id&&t.isRelation(Q.name)&&!n&&a&&(this.lastEvent=void 0),r&&(this.emit(yI.NewReply,this,t),this.updateThreadMetadata())}addRelatedThreadEvent(e,t){if(this.initialEventsFetched)(this.client.canSupport.get(UA.RelationsRecursion)??HA.Unsupported)===HA.Unsupported?this.insertEventIntoTimeline(e):this.addEventToTimeline(e,t);else{var n;if((n=this.replayEvents)==null||n.push(e),e.isRelation(D.Annotation)){var r;(r=this.timelineSet.relations)==null||r.aggregateChildEvent(e,this.timelineSet)}}}processEvent(e){var t=this;return C(function*(){e&&(t.setEventMetadata(e),yield t.fetchEditsWhereNeeded(e))})()}processReceipts(){for(var e of arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]){var t=e.eventId,n=e.receiptType,r=e.userId,i=e.receipt,a=e.synthetic;this.addReceiptToStructure(t,n,r,i,a)}}getRootEventBundledRelationship(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.rootEvent)?.getServerAggregatedRelation(Q.name)}processRootEvent(){var t=this;return C(function*(){var n=t.getRootEventBundledRelationship();e.hasServerSideSupport&&n&&(t.replyCount=n.count,t._currentUserParticipated=!!n.current_user_participated,t.lastEvent=t.client.getEventMapper()(vI(vI({},n.latest_event),{},{room_id:t.roomId})),t.updatePendingReplyCount(),yield t.processEvent(t.lastEvent))})()}updatePendingReplyCount(){var e=(this.pendingEventOrdering===oI.Detached?this.room.getPendingEvents():this.events).filter(e=>e.threadRootId===this.id&&e.isRelation(Q.name)&&e.status!==null&&e.getId()!==this.lastEvent?.getId());this.lastPendingEvent=e.length?e[e.length-1]:void 0,this.pendingReplyCount=e.length}resetLiveTimeline(e,t){var n=this;return C(function*(){var r=n.liveTimeline;n.timelineSet.resetLiveTimeline(e??void 0,t??void 0);var i=n.liveTimeline,a,o;e&&(a=(yield n.client.createMessagesRequest(n.roomId,e,1,M.Forward)).end),t&&(o=(yield n.client.createMessagesRequest(n.roomId,t,1,M.Backward)).start),t&&r.getPaginationToken(M.Forward)===t&&r.setPaginationToken(o??null,M.Forward),e&&i.getPaginationToken(M.Backward)===e&&i.setPaginationToken(a??null,M.Backward)})()}updateThreadFromRootEvent(){var t=this;return C(function*(){e.hasServerSideSupport&&(!t.initialEventsFetched&&!t.lastEvent&&(yield t.processRootEvent()),yield t.fetchRootEvent()),yield t.processRootEvent()})()}updateThreadMetadata(){var e=this;return C(function*(){if(e.updatePendingReplyCount(),e.processRootEventPromise||=e.updateThreadFromRootEvent(),yield e.processRootEventPromise,!e.initialEventsFetched)if(e.initalEventFetchProm)yield e.initalEventFetchProm;else try{e.timelineSet.resetLiveTimeline(),e.replyCount===0&&e.rootEvent?(e.timelineSet.addEventsToTimeline([e.rootEvent],!0,!1,e.liveTimeline,null),e.liveTimeline.setPaginationToken(null,M.Backward)):(e.initalEventFetchProm=e.client.paginateEventTimeline(e.liveTimeline,{backwards:!0}),yield e.initalEventFetchProm),e.initialEventsFetched=!0;for(var t of e.replayEvents)e.addEvent(t,!1);e.replayEvents=null,e.emit(z.TimelineReset,e.room,e.timelineSet,!0)}catch(t){w.error(`Failed to load start of newly created thread: `,t),e.initialEventsFetched=!1}e.emit(yI.Update,e)})()}fetchEditsWhereNeeded(){var e=arguments,t=this;return C(function*(){if((t.client.canSupport.get(UA.RelationsRecursion)??HA.Unsupported)===HA.Unsupported){for(var n=e.length,r=Array(n),i=0;i<n;i++)r[i]=e[i];return Promise.all(r.filter(CI).map(function(){var e=C(function*(e){try{var n=yield t.client.relations(t.roomId,e.getId(),D.Replace,e.getType(),{limit:1});if(n.events.length){var r=n.events[0];e.makeReplaced(r),t.insertEventIntoTimeline(r)}}catch(e){w.error(`Failed to load edits for encrypted thread event`,e)}});return function(t){return e.apply(this,arguments)}}()))}})()}setEventMetadata(e){e&&(N.setEventMetadata(e,this.roomState,!1),e.setThread(this))}clearEventMetadata(e){if(e){var t;e.setThread(void 0),(t=e.event)==null||(t=t.unsigned)==null||(t=t[`m.relations`])==null||delete t[Q.name]}}findEventById(e){return this.timelineSet.findEventById(e)}lastReply(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e=>e.isRelation(Q.name),t=this.timeline.length-1;t>=0;t--){var n=this.timeline[t];if(e(n))return n}return null}get roomId(){return this.room.roomId}get length(){return this.replyCount+this.pendingReplyCount}get replyToEvent(){return this.lastPendingEvent??this.lastEvent??this.lastReply()}get timeline(){return this.events}get events(){return this.liveTimeline.getEvents()}has(e){return this.timelineSet.findEventById(e)instanceof MI}get hasCurrentUserParticipated(){return this._currentUserParticipated}get liveTimeline(){return this.timelineSet.getLiveTimeline()}getUnfilteredTimelineSet(){return this.timelineSet}addReceipt(e,t){throw Error(`Unsupported function on the thread model`)}getEventReadUpTo(e,t){var n=e===this.client.getUserId(),r=this.timeline[this.timeline.length-1];if(n&&r){var i=r.getTs()<this.room.getOldestThreadedReceiptTs(),a=r.getId();if(i&&a)return a}var o=super.getEventReadUpTo(e,t);if(r){var s=this.room.getLastUnthreadedReceiptFor(e);if(!s)return o;for(var c=(l=this.timeline)?.length-1;c>=0;--c){var l,u=this.timeline[c];if(u.getId()===o)return o;if(u.getTs()<s.ts)return u.getId()??o}}return o}hasUserReadEvent(e,t){if(e===this.client.getUserId()){var n,r=(this.lastReply()?.getTs()??0)<this.room.getOldestThreadedReceiptTs(),i=this.room.getLastUnthreadedReceiptFor(e)?.ts??0,a=((this===null||this===void 0||(n=this.lastReply())==null?void 0:n.getTs())??0)<i;if(r||a)return!0}return this.room.hasUserReadEvent(e,t)}setUnread(e,t){return this.room.setThreadUnreadNotificationCount(this.id,e,t)}getLastUnthreadedReceiptFor(e){return this.room.getLastUnthreadedReceiptFor(e)}};h(SI,`hasServerSideSupport`,bI.None),h(SI,`hasServerSideListSupport`,bI.None),h(SI,`hasServerSideFwdPaginationSupport`,bI.None);function CI(e){return e.isEncrypted()&&(e.isRelation(Q.name)||e.isThreadRoot)}var wI=new _E(`related_by_senders`,`io.element.relation_senders`),TI=new _E(`related_by_rel_types`,`io.element.relation_types`),Q=new _E(`m.thread`,`io.element.thread`),EI=function(e){return e[e.My=0]=`My`,e[e.All=1]=`All`,e}({});function DI(e){switch(e){case EI.My:return`participated`;default:return`all`}}var OI=class extends Error{constructor(e,t,n){super(t),this.code=e,h(this,`detailedString`,void 0),this.name=`DecryptionError`,this.detailedString=kI(this,n)}};function kI(e,t){var n=e.name+`[msg: `+e.message;return t&&(n+=`, `+Object.keys(t).map(e=>e+`: `+t[e]).join(`, `)),n+=`]`,n}var AI=Object.freeze({visible:!0}),jI=36e5,$=function(e){return e.Decrypted=`Event.decrypted`,e.BeforeRedaction=`Event.beforeRedaction`,e.VisibilityChange=`Event.visibilityChange`,e.LocalEventIdReplaced=`Event.localEventIdReplaced`,e.Status=`Event.status`,e.Replaced=`Event.replaced`,e.RelationsCreated=`Event.relationsCreated`,e.SentinelUpdated=`Event.sentinelUpdated`,e}({}),MI=class e extends O{setMetadata(e,t){var n,r,i=this.isState()&&this.getType()===E.RoomMember&&this.getSender()===this.getStateKey(),a=!1;if(i||!((n=this.sender)!=null&&(n=n.events)!=null&&n.member)){var o=e.getSentinelMember(this.getSender());o!==this.sender&&(a=!0),this.sender=o}if(i||!((r=this.target)!=null&&(r=r.events)!=null&&r.member)&&this.getType()===E.RoomMember){var s=e.getSentinelMember(this.getStateKey());s!==this.target&&(a=!0),this.target=s}this.isState()&&t&&(this.forwardLooking=!1),a&&this.emit($.SentinelUpdated)}constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(),this.event=e,h(this,`pushDetails`,{}),h(this,`_replacingEvent`,null),h(this,`_localRedactionEvent`,null),h(this,`_isCancelled`,!1),h(this,`clearEvent`,void 0),h(this,`visibility`,AI),h(this,`_hasCachedExtEv`,!1),h(this,`_cachedExtEv`,void 0),h(this,`_decryptionFailureReason`,null),h(this,`senderCurve25519Key`,null),h(this,`claimedEd25519Key`,null),h(this,`keyForwardedBy`,void 0),h(this,`decryptionPromise`,null),h(this,`retryDecryption`,!1),h(this,`txnId`,void 0),h(this,`thread`,void 0),h(this,`threadId`,void 0),h(this,`localTimestamp`,void 0),h(this,`sender`,null),h(this,`target`,null),h(this,`status`,null),h(this,`error`,null),h(this,`forwardLooking`,!0),h(this,`reEmitter`,void 0),h(this,`unstableStickyExpiresAt`,void 0),[`state_key`,`type`,`sender`,`room_id`,`membership`].forEach(t=>{typeof e[t]==`string`&&(e[t]=DE(e[t]))}),[`membership`,`avatar_url`,`displayname`].forEach(t=>{typeof e.content?.[t]==`string`&&(e.content[t]=DE(e.content[t]))}),[`rel_type`].forEach(t=>{var n;typeof((n=e.content)==null||(n=n[`m.relates_to`])==null?void 0:n[t])==`string`&&(e.content[`m.relates_to`][t]=DE(e.content[`m.relates_to`][t]))}),this.txnId=e.txn_id;var t=this.getAge(),n=Date.now();this.localTimestamp=t===void 0?this.getTs()??n:n-t,this.reEmitter=new VO(this),this.unstableStickyInfo&&(this.unstableStickyInfo.duration_ttl_ms?this.unstableStickyExpiresAt=n+this.unstableStickyInfo.duration_ttl_ms:this.unstableStickyExpiresAt=Math.min(n,this.getTs())+this.unstableStickyInfo.duration_ms)}get unstableExtensibleEvent(){return this._hasCachedExtEv||(this._cachedExtEv=RD.ExtensibleEvents.parse(this.getEffectiveEvent())??void 0),this._cachedExtEv}invalidateExtensibleEvent(){this._hasCachedExtEv=!1}getEffectiveEvent(){var e=Object.assign({},this.getContent());if(this.getWireType()===E.RoomMessageEncrypted)for(var t of Object.entries(this.getWireContent())){var n=x(t,2),r=n[0],i=n[1];[`algorithm`,`ciphertext`,`device_id`,`sender_key`,`session_id`].includes(r)||e[r]===void 0&&(e[r]=i)}return Object.assign({},this.event,this.clearEvent,{content:e})}getId(){return this.event.event_id}getSender(){return this.event.sender}getType(){return this.clearEvent?this.clearEvent.type:this.event.type}getWireType(){return this.event.type}getRoomId(){return this.event.room_id}getTs(){return this.event.origin_server_ts}getDate(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null}getDetails(){var e=this.getRoomId();return e?`id=${this.getId()} type=${this.getWireType()} sender=${this.getSender()} room=${e} ts=${this.getDate()?.toISOString()}`:`msgid=${this.getContent()[HD]} type=${this.getWireType()} sender=${this.getSender()}`}getOriginalContent(){return this._localRedactionEvent?{}:this.clearEvent?this.clearEvent.content??{}:this.event.content??{}}getContent(){return this._localRedactionEvent?{}:this._replacingEvent?this._replacingEvent.getContent()[`m.new_content`]??{}:this.getOriginalContent()}getWireContent(){return this.event.content||{}}get threadRootId(){if(!this.isState()){var e=this.getWireContent()?.[`m.relates_to`];if(e?.rel_type===Q.name)return e.event_id;if(this.thread)return this.thread.id;if(this.threadId!==void 0)return this.threadId;var t=this.getUnsigned();if(typeof t[eO.name]==`string`)return t[eO.name]}}get isThreadRoot(){return this.isState()?!1:!!this.getServerAggregatedRelation(Q.name)||this.threadRootId===this.getId()}get replyEventId(){var e;return(e=this.getWireContent()[`m.relates_to`])==null||(e=e[`m.in_reply_to`])==null?void 0:e.event_id}get relationEventId(){var e;return(e=this.getWireContent())==null||(e=e[`m.relates_to`])==null?void 0:e.event_id}getPrevContent(){return this.getUnsigned().prev_content||{}}getDirectionalContent(){return this.forwardLooking?this.getContent():this.getPrevContent()}getAge(){return this.getUnsigned().age}getLocalAge(){return Date.now()-this.localTimestamp}getStateKey(){return this.clearEvent?this.clearEvent.state_key:this.event.state_key}getWireStateKey(){return this.event.state_key}isState(){return this.event.state_key!==void 0}getMembershipAtEvent(){var e=this.getUnsigned();return tO.findIn(e)}makeEncrypted(e,t,n,r){this.clearEvent={type:this.event.type,content:this.event.content,state_key:this.event.state_key},this.event.type=e,this.event.content=t,this.senderCurve25519Key=n,this.claimedEd25519Key=r,this.isState()&&(this.event.state_key=`${this.clearEvent.type}:${this.clearEvent.state_key}`)}isBeingDecrypted(){return this.decryptionPromise!=null}getDecryptionPromise(){return this.decryptionPromise}isDecryptionFailure(){return this._decryptionFailureReason!==null}get decryptionFailureReason(){return this._decryptionFailureReason}shouldAttemptDecryption(){return!(this.isRedacted()||this.isBeingDecrypted()||this.clearEvent||!this.isEncrypted())}attemptDecryption(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};if(!n.isEncrypted())throw Error(`Attempt to decrypt event which isn't encrypted`);if(n.clearEvent&&!n.isDecryptionFailure())throw Error(`Attempt to decrypt event which has already been decrypted`);return n.decryptionPromise?(w.log(`Event ${n.getId()} already being decrypted; queueing a retry`),n.retryDecryption=!0,n.decryptionPromise):(n.decryptionPromise=n.decryptionLoop(e,r),n.decryptionPromise)})()}getKeyRequestRecipients(e){return[{userId:e,deviceId:`*`}]}decryptionLoop(e){var t=arguments,n=this;return C(function*(){var r=t.length>1&&t[1]!==void 0?t[1]:{};for(yield Promise.resolve();;){n.retryDecryption=!1;var i=void 0;try{var a=yield e.decryptEvent(n);r.isRetry===!0&&w.info(`Decrypted event on retry (${n.getDetails()})`),n.setClearData(a),n._decryptionFailureReason=null}catch(e){var o=e instanceof OI?e.detailedString:String(e);if(i=e,n.retryDecryption){w.log(`Error decrypting event (${n.getDetails()}), but retrying: ${o}`);continue}w.warn(`Error decrypting event (${n.getDetails()}): ${o}`),n.setClearDataForDecryptionFailure(String(e)),n._decryptionFailureReason=e instanceof OI?e.code:YN.UNKNOWN_ERROR}n.decryptionPromise=null,n.retryDecryption=!1,n.setPushDetails(),r.emit!==!1&&n.emit($.Decrypted,n,i);return}})()}setClearData(e){this.clearEvent=e.clearEvent,this.senderCurve25519Key=e.senderCurve25519Key??null,this.claimedEd25519Key=e.claimedEd25519Key??null,this.keyForwardedBy=e.keyForwardedBy,this.invalidateExtensibleEvent()}setClearDataForDecryptionFailure(e){this.clearEvent={type:E.RoomMessage,content:{msgtype:`m.bad.encrypted`,body:`** Unable to decrypt: ${e} **`}},this.senderCurve25519Key=null,this.claimedEd25519Key=null,this.invalidateExtensibleEvent()}getClearContent(){return this.clearEvent?this.clearEvent.content:null}isEncrypted(){return this.event.type===E.RoomMessageEncrypted}getSenderKey(){return this.senderCurve25519Key}getKeysClaimed(){return this.claimedEd25519Key?{ed25519:this.claimedEd25519Key}:{}}getClaimedEd25519Key(){return this.claimedEd25519Key}getForwardingCurve25519KeyChain(){return[]}isKeySourceUntrusted(){return!1}getKeyForwardingUser(){return this.keyForwardedBy}getUnsigned(){return this.event.unsigned||{}}setUnsigned(e){this.event.unsigned=e}unmarkLocallyRedacted(){var e=this._localRedactionEvent;return this._localRedactionEvent=null,this.event.unsigned&&(this.event.unsigned.redacted_because=void 0),!!e}markLocallyRedacted(e){this._localRedactionEvent||(this.emit($.BeforeRedaction,this,e),this._localRedactionEvent=e,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event)}applyVisibilityEvent(e){var t=e?.visible??!0,n=e?.reason??null,r=!1;this.visibility.visible===t?!this.visibility.visible&&this.visibility.reason!==n&&(r=!0):r=!0,r&&(t?this.visibility=AI:this.visibility=Object.freeze({visible:!1,reason:n}),this.emit($.VisibilityChange,this,t))}messageVisibility(){return this.visibility}makeRedacted(e,t){if(!e.event)throw Error(`invalid redactionEvent in makeRedacted`);for(var n in this._localRedactionEvent=null,this.emit($.BeforeRedaction,this,e),this._replacingEvent=null,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event,this.event)this.event.hasOwnProperty(n)&&!NI.has(n)&&delete this.event[n];this.isEncrypted()&&(this.clearEvent=void 0);var r=this.getType()in PI?PI[this.getType()]:{},i=this.getContent();for(var a in i)i.hasOwnProperty(a)&&!r[a]&&delete i[a];!this.isThreadRoot&&this.threadRootId&&this.threadRootId!==this.getId()&&(this.moveAllRelatedToMainTimeline(t),e.moveToMainTimeline(t)),this.invalidateExtensibleEvent()}moveAllRelatedToMainTimeline(e){var t=this.thread;if(this.moveToMainTimeline(e),t)for(var n of t.events)n.getRelation()?.event_id===this.getId()&&n.moveAllRelatedToMainTimeline(e)}moveToMainTimeline(e){var t;(t=this.thread)==null||t.timelineSet.removeEvent(this.getId()),this.setThread(void 0);var n=e.getLiveTimeline();n.getTimelineSet().insertEventIntoTimeline(this,n,n.getState(N.FORWARDS),!1)}isRedacted(){return!!this.getUnsigned().redacted_because}isRedaction(){return this.getType()===E.RoomRedaction}asVisibilityChange(){if(!ZD.matches(this.getType()))return null;var e=this.getRelation();if(!e||e.rel_type!=`m.reference`)return null;var t=e.event_id;if(!t)return null;var n=this.getWireContent(),r=!!n.visible,i=n.reason;return i&&typeof i!=`string`?null:{visible:r,reason:i,eventId:t}}isVisibilityEvent(){return ZD.matches(this.getType())}getRedactionEvent(){var e,t;return this.isRedacted()?(e=this.clearEvent)!=null&&e.unsigned?this.clearEvent?.unsigned.redacted_because??null:(t=this.event.unsigned)!=null&&t.redacted_because?this.event.unsigned.redacted_because:{}:null}getPushActions(){return this.pushDetails.actions||null}getPushDetails(){return this.pushDetails}setPushDetails(e,t){this.pushDetails={actions:e,rule:t}}handleRemoteEcho(e){var t=this.getUnsigned(),n=this.getId();this.event=e,t.redacted_because&&(this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=t.redacted_because),this.setStatus(null),this.getId()!==n&&this.emit($.LocalEventIdReplaced,this),this.localTimestamp=Date.now()-(this.getAge()??0)}isSending(){return!!this.status}setStatus(e){this.status=e,this.emit($.Status,this,e)}replaceLocalEventId(e){this.event.event_id=e,this.emit($.LocalEventIdReplaced,this)}isRelation(e){var t=this.getWireContent()?.[`m.relates_to`];return this.isState()&&t!=null&&t.rel_type&&[D.Replace,D.Thread].includes(t.rel_type)?!1:!!(t!=null&&t.rel_type&&t.event_id&&(!e||t.rel_type===e))}getRelation(){return this.isRelation()?this.getWireContent()[`m.relates_to`]??null:null}makeReplaced(e){this.isRedacted()&&e||this.isState()||this._replacingEvent!==e&&(this._replacingEvent=e??null,this.emit($.Replaced,this),this.invalidateExtensibleEvent())}getAssociatedStatus(){return this._replacingEvent?this._replacingEvent.status:this._localRedactionEvent?this._localRedactionEvent.status:this.status}getServerAggregatedRelation(e){return this.getUnsigned()[`m.relations`]?.[e]}replacingEventId(){var e=this.getServerAggregatedRelation(D.Replace);if(e)return e.event_id;if(this._replacingEvent)return this._replacingEvent.getId()}replacingEvent(){return this._replacingEvent}replacingEventDate(){var e=this.getServerAggregatedRelation(D.Replace);if(e){var t=e.origin_server_ts;if(Number.isFinite(t))return new Date(t)}else if(this._replacingEvent)return this._replacingEvent.getDate()??void 0}localRedactionEvent(){return this._localRedactionEvent}getAssociatedId(){var e=this.getRelation();if(this.replyEventId)return this.replyEventId;if(e)return e.event_id;if(this.isRedaction())return this.event.redacts}hasAssociation(){return!!this.getAssociatedId()}updateAssociatedId(e){var t=this.getRelation();t?t.event_id=e:this.isRedaction()&&(this.event.redacts=e)}flagCancelled(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this._isCancelled=e}isCancelled(){return this._isCancelled}toSnapshot(){var t=new e(JSON.parse(JSON.stringify(this.event)));for(var n of Object.entries(this)){var r=x(n,2),i=r[0],a=r[1];i!==`event`&&(t[i]=a)}return t}isEquivalentTo(e){if(!e)return!1;if(e===this)return!0;var t=PE(this.event),n=PE(e.event);return JSON.stringify(t)===JSON.stringify(n)}toJSON(){var e=this.getEffectiveEvent();return this.isEncrypted()?{decrypted:e,encrypted:this.event}:e}setTxnId(e){this.txnId=e}getTxnId(){return this.txnId}setThread(e){this.isState()||(this.thread&&this.reEmitter.stopReEmitting(this.thread,[yI.Update]),this.thread=e,this.setThreadId(e?.id),e&&this.reEmitter.reEmit(e,[yI.Update]))}getThread(){return this.thread}setThreadId(e){this.threadId=e}get unstableStickyInfo(){var e;if((e=this.event.msc4354_sticky)!=null&&e.duration_ms)return{duration_ms:Math.min(jI,this.event.msc4354_sticky.duration_ms),duration_ttl_ms:this.event.unsigned?.msc4354_sticky_duration_ttl_ms}}},NI=new Set([`event_id`,`type`,`room_id`,`user_id`,`sender`,`state_key`,`prev_state`,`content`,`unsigned`,`origin_server_ts`]),PI={[E.RoomMember]:{membership:1},[E.RoomJoinRules]:{join_rule:1},[E.RoomPowerLevels]:{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1}},FI=class{constructor(){h(this,`unthreadedReadReceipts`,new Map),h(this,`threadedReadReceipts`,new gD(()=>new Map))}setUnthreaded(e,t){this.unthreadedReadReceipts.set(e,t)}setThreaded(e,t,n){this.threadedReadReceipts.getOrCreate(e).set(t,n)}allUnthreaded(){return this.unthreadedReadReceipts.entries()}*allThreaded(){for(var e of this.threadedReadReceipts.values())for(var t of e.entries())yield t}consumeEphemeralEvents(e){e?.forEach(e=>{e.type!==E.Receipt||!e.content||Object.keys(e.content).forEach(t=>{Object.entries(e.content[t]).forEach(n=>{var r=x(n,2),i=r[0],a=r[1];if(lD(i))for(var o of Object.keys(a)){var s=e.content[t][i][o],c={data:e.content[t][i][o],type:i,eventId:t};s.thread_id?this.setThreaded(s.thread_id,o,c):this.setUnthreaded(o,c)}})})})}buildAccumulatedReceiptEvent(e){var t={type:E.Receipt,room_id:e,content:{}},n=new gD(()=>new gD(()=>new Map));for(var r of this.allUnthreaded()){var i=x(r,2),a=i[0],o=i[1];n.getOrCreate(o.eventId).getOrCreate(o.type).set(a,o.data)}for(var s of this.allThreaded()){var c=x(s,2),l=c[0],u=c[1];n.getOrCreate(u.eventId).getOrCreate(u.type).set(l,u.data)}return t.content=fD(n),n.size>0?t:null}},II=function(e){return e.Invite=`invite`,e.Leave=`leave`,e.Join=`join`,e.Knock=`knock`,e}({});function LI(e){return`_localTs`in e&&e._localTs!==void 0}var RI=class{constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.opts=e,h(this,`accountData`,{}),h(this,`inviteRooms`,{}),h(this,`knockRooms`,{}),h(this,`joinRooms`,{}),h(this,`nextBatch`,null),this.opts.maxTimelineEntries=this.opts.maxTimelineEntries||50}accumulate(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.accumulateRooms(e,t),this.accumulateAccountData(e),this.nextBatch=e.next_batch}accumulateAccountData(e){!e.account_data||!e.account_data.events||e.account_data.events.forEach(e=>{this.accountData[e.type]=e})}accumulateRooms(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e.rooms&&(e.rooms.invite&&Object.keys(e.rooms.invite).forEach(n=>{this.accumulateRoom(n,II.Invite,e.rooms.invite[n],t)}),e.rooms.join&&Object.keys(e.rooms.join).forEach(n=>{this.accumulateRoom(n,II.Join,e.rooms.join[n],t)}),e.rooms.leave&&Object.keys(e.rooms.leave).forEach(n=>{this.accumulateRoom(n,II.Leave,e.rooms.leave[n],t)}),e.rooms.knock&&Object.keys(e.rooms.knock).forEach(n=>{this.accumulateRoom(n,II.Knock,e.rooms.knock[n],t)}))}accumulateRoom(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;switch(t){case II.Invite:this.knockRooms[e]&&delete this.knockRooms[e],this.accumulateInviteState(e,n);break;case II.Knock:this.accumulateKnockState(e,n);break;case II.Join:this.knockRooms[e]?delete this.knockRooms[e]:this.inviteRooms[e]&&delete this.inviteRooms[e],this.accumulateJoinState(e,n,r);break;case II.Leave:this.knockRooms[e]?delete this.knockRooms[e]:this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:w.error(`Unknown cateogory: `,t)}}accumulateInviteState(e,t){if(!(!t.invite_state||!t.invite_state.events)){if(!this.inviteRooms[e]){this.inviteRooms[e]={invite_state:t.invite_state};return}var n=this.inviteRooms[e];t.invite_state.events.forEach(e=>{for(var t=!1,r=0;r<n.invite_state.events.length;r++){var i=n.invite_state.events[r];i.type===e.type&&i.state_key==e.state_key&&(n.invite_state.events[r]=e,t=!0)}t||n.invite_state.events.push(e)})}}accumulateKnockState(e,t){if(!(!t.knock_state||!t.knock_state.events)){if(!this.knockRooms[e]){this.knockRooms[e]={knock_state:t.knock_state};return}var n=this.knockRooms[e];t.knock_state.events.forEach(e=>{for(var t=!1,r=0;r<n.knock_state.events.length;r++){var i=n.knock_state.events[r];i.type===e.type&&i.state_key==e.state_key&&(n.knock_state.events[r]=e,t=!0)}t||n.knock_state.events.push(e)})}}accumulateJoinState(e,t){var n,r,i,a,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,s=Date.now();this.joinRooms[e]||(this.joinRooms[e]={_currentState:Object.create(null),_timeline:[],_accountData:Object.create(null),_unreadNotifications:{},_unreadThreadNotifications:{},_summary:{},_receipts:new FI,_stickyEvents:[]});var c=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach(e=>{c._accountData[e.type]=e}),t.unread_notifications&&(c._unreadNotifications=t.unread_notifications),c._unreadThreadNotifications=t[ik.stable]??t[ik.unstable]??void 0,t.summary){var l=`m.heroes`,u=`m.invited_member_count`,d=`m.joined_member_count`,f=c._summary,p=t.summary;f[l]=p[l]??f[l],f[d]=p[d]??f[d],f[u]=p[u]??f[u]}if(c._receipts.consumeEphemeralEvents(t.ephemeral?.events),t.timeline&&t.timeline.limited&&(c._timeline=[]),(n=t.state)==null||(n=n.events)==null||n.forEach(e=>{zI(c._currentState,e)}),(r=t[`org.matrix.msc4222.state_after`])==null||(r=r.events)==null||r.forEach(e=>{zI(c._currentState,e)}),(i=t.timeline)==null||(i=i.events)==null||i.forEach((e,n)=>{t[`org.matrix.msc4222.state_after`]||zI(c._currentState,e);var r;if(o)r=e;else{r=Object.assign({},e),r.unsigned!==void 0&&(r.unsigned=Object.assign({},r.unsigned));var i=e.unsigned?.age;i!==void 0&&(r._localTs=Date.now()-i)}c._timeline.push({event:r,token:n===0?t.timeline.prev_batch??null:null})}),c._stickyEvents=c._stickyEvents.filter(e=>e.expiresTs>s),(a=t.msc4354_sticky)!=null&&a.events&&(c._stickyEvents=c._stickyEvents.concat(t.msc4354_sticky.events.map(e=>({event:e,expiresTs:Math.min(e.msc4354_sticky.duration_ms,jI)+Math.min(e.origin_server_ts,s)})))),c._timeline.length>this.opts.maxTimelineEntries){for(var m=c._timeline.length-this.opts.maxTimelineEntries;m<c._timeline.length;m++)if(c._timeline[m].token){c._timeline=c._timeline.slice(m,c._timeline.length);break}}}getJSON(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t={join:{},invite:{},knock:{},leave:{}};Object.keys(this.inviteRooms).forEach(e=>{t.invite[e]=this.inviteRooms[e]}),Object.keys(this.knockRooms).forEach(e=>{t.knock[e]=this.knockRooms[e]}),Object.keys(this.joinRooms).forEach(n=>{var r,i=this.joinRooms[n],a={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},"org.matrix.msc4222.state_after":{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:i._unreadNotifications,unread_thread_notifications:i._unreadThreadNotifications,summary:i._summary,msc4354_sticky:(r=i._stickyEvents)!=null&&r.length?{events:i._stickyEvents.map(e=>e.event)}:void 0};Object.keys(i._accountData).forEach(e=>{a.account_data.events.push(i._accountData[e])});var o=i._receipts.buildAccumulatedReceiptEvent(n);o&&a.ephemeral.events.push(o),i._timeline.forEach(t=>{if(!a.timeline.prev_batch){if(!t.token)return;a.timeline.prev_batch=t.token}var n;!e&&LI(t.event)?(n=Object.assign({},t.event),n.unsigned!==void 0&&(n.unsigned=Object.assign({},n.unsigned)),delete n._localTs,n.unsigned=n.unsigned||{},n.unsigned.age=Date.now()-t.event._localTs):n=t.event,a.timeline.events.push(n)});for(var s=Object.create(null),c=a.timeline.events.length-1;c>=0;c--){var l=a.timeline.events[c];if(!(l.state_key===null||l.state_key===void 0)){var u=ME(l);u.unsigned&&(u.unsigned.prev_content&&(u.content=u.unsigned.prev_content),u.unsigned.prev_sender&&(u.sender=u.unsigned.prev_sender)),zI(s,u)}}Object.keys(i._currentState).forEach(e=>{Object.keys(i._currentState[e]).forEach(t=>{var n=i._currentState[e][t];a[`org.matrix.msc4222.state_after`].events.push(n),s[e]&&s[e][t]&&(n=s[e][t]),a.state.events.push(n)})}),t.join[n]=a});var n=[];return Object.keys(this.accountData).forEach(e=>{n.push(this.accountData[e])}),{nextBatch:this.nextBatch,roomsData:t,accountData:n}}getNextBatchToken(){return this.nextBatch}removeEventsFromRoom(e,t){this.joinRooms[e]._timeline=this.joinRooms[e]._timeline.filter(e=>!t.includes(e.event.event_id)),this.joinRooms[e]._stickyEvents=this.joinRooms[e]._stickyEvents.filter(e=>!t.includes(e.event.event_id))}};function zI(e,t){t.state_key===null||t.state_key===void 0||!t.type||(e[t.type]||(e[t.type]=Object.create(null)),e[t.type][t.state_key]=t)}function BI(e,t){return new Promise((n,r)=>{var i=!0,a=e.open(t);a.onupgradeneeded=()=>{i=!1},a.onblocked=()=>r(a.error),a.onsuccess=()=>{a.result.close(),i||e.deleteDatabase(t),n(i)},a.onerror=()=>r(a.error)})}var VI=[e=>{e.createObjectStore(`users`,{keyPath:[`userId`]}),e.createObjectStore(`accountData`,{keyPath:[`type`]}),e.createObjectStore(`sync`,{keyPath:[`clobber`]})},e=>{e.createObjectStore(`oob_membership_events`,{keyPath:[`room_id`,`state_key`]}).createIndex(`room`,`room_id`)},e=>{e.createObjectStore(`client_options`,{keyPath:[`clobber`]})},e=>{e.createObjectStore(`to_device_queue`,{autoIncrement:!0})},e=>{e.createObjectStore(`user_profile`,{keyPath:[`userId`]})}],HI=VI.length;function UI(e,t,n){var r=e.openCursor(t);return new Promise((t,i)=>{var a=[];r.onerror=()=>{i(Error(`selectQuery failed for ${e.name}`,{cause:r.error}))},r.onsuccess=()=>{var e=r.result;if(!e){t(a);return}a.push(n(e)),e.continue()}})}function WI(e){return new Promise((t,n)=>{e.oncomplete=function(e){t(e)},e.onerror=function(){n(e.error)}})}function GI(e){return new Promise((t,n)=>{e.onsuccess=function(e){t(e)},e.onerror=function(){n(e.error)}})}function KI(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e),e.onerror=e=>n(e)})}function qI(e){return GI(e).then(t=>e.result)}var JI=class{static exists(e,t){return t=`matrix-js-sdk:`+(t||`default`),BI(e,t)}constructor(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`default`;this.indexedDB=e,h(this,`dbName`,void 0),h(this,`syncAccumulator`,void 0),h(this,`db`,void 0),h(this,`disconnected`,!0),h(this,`_isNewlyCreated`,!1),h(this,`syncToDatabasePromise`,void 0),h(this,`pendingUserPresenceData`,[]),this.dbName=`matrix-js-sdk:`+t,this.syncAccumulator=new RI}connect(e){var t=this;if(!this.disconnected)return w.log(`LocalIndexedDBStoreBackend.connect: already connected or connecting`),Promise.resolve();this.disconnected=!1,w.log(`LocalIndexedDBStoreBackend.connect: connecting...`);var n=this.indexedDB.open(this.dbName,HI);return n.onupgradeneeded=e=>{var t=n.result,r=e.oldVersion;w.log(`LocalIndexedDBStoreBackend.connect: upgrading from ${r}`),r<1&&(this._isNewlyCreated=!0),VI.forEach((e,n)=>{r<=n&&e(t)})},n.onblocked=()=>{w.log(`can't yet open LocalIndexedDBStoreBackend because it is open elsewhere`)},w.log(`LocalIndexedDBStoreBackend.connect: awaiting connection...`),GI(n).then(C(function*(){w.log(`LocalIndexedDBStoreBackend.connect: connected`),t.db=n.result,t.db.onversionchange=()=>{var e;(e=t.db)==null||e.close(),t.disconnected=!0,t.db=void 0},t.db.onclose=()=>{t.disconnected=!0,t.db=void 0,e?.()},yield t.init()}))}isNewlyCreated(){return Promise.resolve(this._isNewlyCreated)}init(){return Promise.all([this.loadAccountData(),this.loadSyncData()]).then(e=>{var t=x(e,2),n=t[0],r=t[1];w.log(`LocalIndexedDBStoreBackend: loaded initial data`),this.syncAccumulator.accumulate({next_batch:r.nextBatch,rooms:r.roomsData,account_data:{events:n}},!0)})}getOutOfBandMembers(e){return new Promise((t,n)=>{var r=this.db.transaction([`oob_membership_events`],`readonly`).objectStore(`oob_membership_events`).index(`room`),i=IDBKeyRange.only(e),a=r.openCursor(i),o=[],s=!1;a.onsuccess=()=>{var e=a.result;if(!e)return!o.length&&!s?t(null):t(o);var n=e.value;n.oob_written?s=!0:o.push(n),e.continue()},a.onerror=e=>{n(e)}}).then(t=>(w.log(`LL: got ${t?.length} membershipEvents from storage for room ${e} ...`),t))}setOutOfBandMembers(e,t){var n=this;return C(function*(){w.log(`LL: backend about to store ${t.length} members for ${e}`);var r=n.db.transaction([`oob_membership_events`],`readwrite`),i=r.objectStore(`oob_membership_events`);t.forEach(e=>{i.put(e)});var a={room_id:e,oob_written:!0,state_key:0};i.put(a),yield WI(r),w.log(`LL: backend done storing for ${e}!`)})()}clearOutOfBandMembers(e){var t=this;return C(function*(){var n=t.db.transaction([`oob_membership_events`],`readonly`).objectStore(`oob_membership_events`).index(`room`),r=IDBKeyRange.only(e),i=qI(n.openKeyCursor(r,`next`)).then(e=>(e?.primaryKey)[1]),a=qI(n.openKeyCursor(r,`prev`)).then(e=>(e?.primaryKey)[1]),o=x(yield Promise.all([i,a]),2),s=o[0],c=o[1],l=t.db.transaction([`oob_membership_events`],`readwrite`).objectStore(`oob_membership_events`),u=IDBKeyRange.bound([e,s],[e,c]);w.log(`LL: Deleting all users + marker in storage for room ${e}, with key range:`,[e,s],[e,c]),yield KI(l.delete(u))})()}clearDatabase(){return new Promise(e=>{var t;w.log(`Removing indexeddb instance: ${this.dbName}`),(t=this.db)==null||t.close();var n=this.indexedDB.deleteDatabase(this.dbName);n.onblocked=()=>{w.log(`can't yet delete indexeddb ${this.dbName} because it is open elsewhere`)},n.onerror=()=>{w.warn(`unable to delete js-sdk store indexeddb: ${n.error?.name}`),e()},n.onsuccess=()=>{w.log(`Removed indexeddb instance: ${this.dbName}`),e()}})}getSavedSync(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=this.syncAccumulator.getJSON();return t.nextBatch?e?Promise.resolve(ME(t)):Promise.resolve(t):Promise.resolve(null)}getNextBatchToken(){return Promise.resolve(this.syncAccumulator.getNextBatchToken())}setSyncData(e){return Promise.resolve().then(()=>{this.syncAccumulator.accumulate(e)})}syncToDatabase(e){var t=this;return C(function*(){return t.syncToDatabasePromise?(w.warn(`Skipping syncToDatabase() as persist already in flight`),t.pendingUserPresenceData.push(...e),t.syncToDatabasePromise):(e.unshift(...t.pendingUserPresenceData),t.syncToDatabasePromise=t.doSyncToDatabase(e),t.syncToDatabasePromise)})()}doSyncToDatabase(e){var t=this;return C(function*(){try{var n=t.syncAccumulator.getJSON(!0);yield Promise.all([t.persistUserPresenceEvents(e),t.persistAccountData(n.accountData),t.persistSyncData(n.nextBatch,n.roomsData)])}finally{t.syncToDatabasePromise=void 0}})()}persistSyncData(e,t){return w.log(`Persisting sync data up to`,e),XE(()=>{var n=this.db.transaction([`sync`],`readwrite`);return n.objectStore(`sync`).put({clobber:`-`,nextBatch:e,roomsData:t}),WI(n).then(()=>{w.log(`Persisted sync data up to`,e)})})}persistAccountData(e){return XE(()=>{var t=this.db.transaction([`accountData`],`readwrite`),n=t.objectStore(`accountData`);for(var r of e)n.put(r);return WI(t).then()})}persistUserPresenceEvents(e){return XE(()=>{var t=this.db.transaction([`users`],`readwrite`),n=t.objectStore(`users`);for(var r of e)n.put({userId:r[0],event:r[1]});return WI(t).then()})}getUserPresenceEvents(){return XE(()=>UI(this.db.transaction([`users`],`readonly`).objectStore(`users`),void 0,e=>[e.value.userId,e.value.event]))}loadAccountData(){return w.log(`LocalIndexedDBStoreBackend: loading account data...`),XE(()=>UI(this.db.transaction([`accountData`],`readonly`).objectStore(`accountData`),void 0,e=>e.value).then(e=>(w.log(`LocalIndexedDBStoreBackend: loaded account data`),e)))}loadSyncData(){return w.log(`LocalIndexedDBStoreBackend: loading sync data...`),XE(()=>UI(this.db.transaction([`sync`],`readonly`).objectStore(`sync`),void 0,e=>e.value).then(e=>(w.log(`LocalIndexedDBStoreBackend: loaded sync data`),e.length>1&&w.warn(`loadSyncData: More than 1 sync row found.`),e.length>0?e[0]:{})))}getClientOptions(){return Promise.resolve().then(()=>UI(this.db.transaction([`client_options`],`readonly`).objectStore(`client_options`),void 0,e=>e.value?.options).then(e=>e[0]))}storeClientOptions(e){var t=this;return C(function*(){var n=t.db.transaction([`client_options`],`readwrite`);n.objectStore(`client_options`).put({clobber:`-`,options:e}),yield WI(n)})()}saveToDeviceBatches(e){var t=this;return C(function*(){var n=t.db.transaction([`to_device_queue`],`readwrite`),r=n.objectStore(`to_device_queue`);for(var i of e)r.add(i);yield WI(n)})()}getOldestToDeviceBatch(){var e=this;return C(function*(){var t=yield qI(e.db.transaction([`to_device_queue`],`readonly`).objectStore(`to_device_queue`).openCursor());if(!t)return null;var n=t.value;return{id:t.key,txnId:n.txnId,eventType:n.eventType,batch:n.batch}})()}removeToDeviceBatch(e){var t=this;return C(function*(){var n=t.db.transaction([`to_device_queue`],`readwrite`);n.objectStore(`to_device_queue`).delete(e),yield WI(n)})()}getUserProfile(e){var t=this;return C(function*(){return Promise.resolve().then(()=>UI(t.db.transaction([`user_profile`],`readonly`).objectStore(`user_profile`),[e],e=>e.value?.profile).then(e=>e[0]))})()}storeUserProfiles(e){var t=this;return C(function*(){var n=t.db.transaction([`user_profile`],`readwrite`),r=n.objectStore(`user_profile`);for(var i of e.entries()){var a=x(i,2),o=a[0],s=a[1];r.put({profile:s,userId:o})}yield WI(n)})()}removeUserProfiles(e){var t=this;return C(function*(){var n=t.db.transaction([`user_profile`],`readwrite`),r=n.objectStore(`user_profile`);for(var i of e)r.delete([i]);yield WI(n)})()}removeEventsFromRoom(e,t){var n=this;return C(function*(){try{n.syncAccumulator.removeEventsFromRoom(e,t);var r=n.syncAccumulator.getJSON(!0);yield Promise.all([n.persistSyncData(r.nextBatch,r.roomsData)])}finally{n.syncToDatabasePromise=void 0}})()}destroy(){var e=this;return C(function*(){var t;(t=e.db)==null||t.close()})()}};const YI=new class{constructor(e){this.postMessage=e,h(this,`backend`,void 0),h(this,`onClose`,()=>{this.postMessage.call(null,{command:`closed`})}),h(this,`onMessage`,e=>{var t=e.data,n;switch(t.command){case`setupWorker`:this.backend=new JI(indexedDB,t.args[0]),n=Promise.resolve();break;case`connect`:n=this.backend?.connect(this.onClose);break;case`isNewlyCreated`:n=this.backend?.isNewlyCreated();break;case`clearDatabase`:n=this.backend?.clearDatabase();break;case`getSavedSync`:n=this.backend?.getSavedSync(!1);break;case`setSyncData`:n=this.backend?.setSyncData(t.args[0]);break;case`syncToDatabase`:n=this.backend?.syncToDatabase(t.args[0]);break;case`getUserPresenceEvents`:n=this.backend?.getUserPresenceEvents();break;case`getNextBatchToken`:n=this.backend?.getNextBatchToken();break;case`getOutOfBandMembers`:n=this.backend?.getOutOfBandMembers(t.args[0]);break;case`clearOutOfBandMembers`:n=this.backend?.clearOutOfBandMembers(t.args[0]);break;case`setOutOfBandMembers`:n=this.backend?.setOutOfBandMembers(t.args[0],t.args[1]);break;case`getClientOptions`:n=this.backend?.getClientOptions();break;case`storeClientOptions`:n=this.backend?.storeClientOptions(t.args[0]);break;case`saveToDeviceBatches`:n=this.backend?.saveToDeviceBatches(t.args[0]);break;case`getOldestToDeviceBatch`:n=this.backend?.getOldestToDeviceBatch();break;case`removeToDeviceBatch`:n=this.backend?.removeToDeviceBatch(t.args[0]);break;case`getUserProfile`:n=this.backend?.getUserProfile(t.args[0]);break;case`storeUserProfiles`:n=this.backend?.storeUserProfiles(t.args[0]);break;case`removeUserProfiles`:n=this.backend?.removeUserProfiles(t.args[0]);break}if(n===void 0){this.postMessage({command:`cmd_fail`,seq:t.seq,error:`Unrecognised command`});return}n.then(e=>{this.postMessage.call(null,{command:`cmd_success`,seq:t.seq,result:e})},e=>{w.error(`Error running command: `+t.command,e),this.postMessage.call(null,{command:`cmd_fail`,seq:t.seq,error:{message:e.message,name:e.name}})})})}}(self.postMessage);self.onmessage=YI.onMessage;export{I as A,gD as B,RN as C,dj as D,hj as E,hO as F,re as G,WE as H,O as I,x as J,w as K,E as L,VO as M,TO as N,L as O,k as P,u as Q,zD as R,zN as S,yj as T,mD as U,T as V,UE as W,s as X,h as Y,c as Z,eP as _,FP as a,KN as b,uP as c,YN as d,iP as f,rP as g,nP as h,IP as i,F as j,aA as k,ZN as l,$N as m,$ as n,PP as o,XN as p,C as q,OI as r,fP as s,BI as t,tP as u,QN as v,BN as w,WN as x,JN as y,HD as z}; 23 //# sourceMappingURL=IndexedDBWorker-D6PiCwZY.js.map