@transai/connector-runner-microsoft-office365-email 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## 0.8.1 (2026-02-24)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- **XODO-1404:** fixed reading correct mailbox identifier ([1b4d9fd5](https://github.com/xip-online-applications/xod-core/commit/1b4d9fd5))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Youri Lefers @yourilefers
|
|
10
|
+
|
|
11
|
+
## 0.8.0 (2026-02-24)
|
|
12
|
+
|
|
13
|
+
### 🧱 Updated Dependencies
|
|
14
|
+
|
|
15
|
+
- Updated @transai/connector-runtime-sdk to 0.9.0
|
|
16
|
+
|
|
1
17
|
## 0.7.1 (2026-02-12)
|
|
2
18
|
|
|
3
19
|
### 🧱 Updated Dependencies
|
package/index.cjs
CHANGED
|
@@ -165,7 +165,7 @@ startxref
|
|
|
165
165
|
|
|
166
166
|
`}),i.items=[r]}),new DEt({...t})}}});var qO=K(Ey=>{var wEt=qY(),FEt=aO(),vEt=oO(),SEt=uO(),kEt=fO(),REt=pO(),NEt=yO(),LEt=kO(),MEt=NO(),GEt=MO(),TEt=TO(),UEt=_O(),_Et=Yr();Ey.makeTransformations=e=>[new wEt(e),new FEt,new vEt,new SEt,new kEt,new NEt,new REt,new LEt,new MEt,new GEt,new TEt,new UEt];Ey.transform=(e,t)=>{var i=new _Et({pages:e});let r;return t.forEach(a=>{r&&(i=r.completeTransform(i)),i=a.transform(i),r=a}),i}});var JO=K((SIt,HO)=>{var{parse:qEt}=SY(),{makeTransformations:HEt,transform:JEt}=qO();HO.exports=async function(e,t){let i=await qEt(e,t),{fonts:r,pages:a,pdfDocument:n}=i,s=HEt(r.map),c=JEt(a,s).pages.map(u=>u.items.join(`
|
|
167
167
|
`)+`
|
|
168
|
-
`).join("");try{return c}finally{if(n){try{typeof n.cleanup=="function"&&await n.cleanup(!1)}catch{}try{typeof n.destroy=="function"&&await n.destroy()}catch{}}}}});var xBt={};OD(xBt,{ConnectorRunnerMicrosoftOffice365Email:()=>Wy});module.exports=HW(xBt);var du=Us(require("node:process")),Fg=class{constructor(t,i){this.#t="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#i=i,du.default.on?du.default.on("message",r=>{r.cmd===this.#t&&i.logger.verbose(`${du.default.pid} Received message from parent process:`,r)}):i.logger.warn("IPC channel is not available. process.on is undefined."),du.default.send||i.logger.warn("IPC channel is not available. process.send is undefined."),t.actions?.forEach(r=>{if(r.config.templates===void 0)return;let a={};Object.entries(r.config.templates).forEach(([n,s])=>{try{a[n]=i.templating.compile(s)}catch(A){i.logger.error(`Error compiling template ${n} for action ${r.identifier}`,A)}}),r.config.parsedTemplates=a})}#t;#i;set callbackFunction(t){this.connectorSDK.receiver.registerCallback(this.#e(t))}get connectorSDK(){return this.#i}#e(t){return async i=>{let r=await this.#i.receiver.getActionConfig(i);return r?t(i,r):this.#i.receiver.responses.badRequest("Action not found")(i)}}};var Ua=Us(require("node:process")),fr=Us(sR()),AR=(n=>(n.error="error",n.warn="warn",n.info="info",n.http="http",n.debug="debug",n))(AR||{}),on=class e{#t;constructor(t="default",i="info"){this.logger=fr.default.createLogger({level:i,format:fr.default.format.combine(fr.default.format.label({label:t}),fr.default.format.timestamp(),fr.default.format.json(),fr.default.format.errors({stack:!0}))});let r=!1;(Ua.default.env.NODE_ENV!=="production"||Ua.default.env.LOG_TO_CONSOLE==="true")&&(r=!0,this.logger.add(new fr.default.transports.Console({format:fr.default.format.printf(({label:a,level:n,message:s})=>{let A=new Date().toLocaleString();return`[${a}] ${Ua.default.pid} - ${A} ${n}: ${s}`})}))),Ua.default.env.LOG_TO_FILE==="true"&&(r=!0,this.logger.add(new fr.default.transports.File({filename:"error.log",level:"error"})),this.logger.add(new fr.default.transports.File({filename:"combined.log"}))),r||this.logger.add(new fr.default.transports.Console({format:fr.default.format.printf(({label:a,level:n,message:s})=>`[${a}] ${n}: ${s}`)}))}static getInstance(t,i){return e.instance||(e.instance=new e(t??"default",e.#e(i))),e.instance}setDatadogTransport(t){let i=t?.apiKey??Ua.default.env.DATADOG_API_KEY;if(!i)return this.debug("DATADOG_API_KEY is not set, cannot add Datadog transport"),this;let r=new URLSearchParams({"dd-api-key":i,ddsource:t?.source??Ua.default.env.DD_SOURCE??"nodejs",service:t?.service??Ua.default.env.DD_SERVICE??"unknown",env:t?.env??Ua.default.env.DD_ENV??"prod"});t?.tags&&r.append("ddtags",Object.entries(t.tags).map(([n,s])=>`${n}:${s}`).join(","));let a={host:`http-intake.logs.${Ua.default.env.DD_SITE??"datadoghq.eu"}`,path:`/api/v2/logs?${r.toString()}`,ssl:!0,batch:!0,format:fr.default.format.json(),level:"info"};return this.#t&&this.logger.remove(this.#t),this.#t=new fr.default.transports.Http(a),this.logger.add(this.#t),this}info(...t){this.#i(this.logger.info,...t)}debug(...t){this.#i(this.logger.debug,...t)}error(...t){this.#i(this.logger.error,...t)}warn(...t){this.#i(this.logger.warn,...t)}verbose(...t){this.#i(this.logger.verbose,...t)}#i(t,...i){try{let r=i.map(a=>typeof a=="object"?JSON.stringify(a):String(a));t(r.join(" "),...i)}catch(r){console.error("unknown error in log, function",r)}}static#e=t=>{if(t!==void 0)return t;let i=Ua.default.env.LOG_LEVEL||"info",a=!Object.values(AR).includes(i);return a&&(i="info"),a&&console.error(`Invalid log level: ${i} only allow; 'error', 'warn', 'info', 'debug', 'trace'. Using info as default.`),i}};var eI=Us(require("node:https")),LT=Us(require("node:querystring"));var MT=Us(kT());var wl=class extends Error{constructor(i,r,a){super(i);this.statusCode=r;this.name="GraphApiError";try{this.responseBody=JSON.parse(a)}catch{}}};var RT=["inbox","drafts","sent items","deleted items","archive","junk email"],NT=["id","internetMessageId","subject","receivedDateTime","lastModifiedDateTime","body","bodyPreview","from","replyTo","toRecipients","ccRecipients","bccRecipients","internetMessageHeaders","categories"];var nE=class{#t;#i=!1;#e;#r={};#n={};#a={};constructor(t,i=!1){this.#t=`https://graph.microsoft.com/v1.0/users/${encodeURIComponent(t)}`,this.#i=i}async init(t,i,r){this.#e=await this.#o(t,i,r)}async getFolder(t,i=100){let r=t.toLowerCase();if(this.#r[r])return this.#r[r];if(RT.includes(r)){let s=await this.#A(`${this.#t}/mailFolders/${encodeURIComponent(t)}`);if(s?.id)return this.#r[r]=s,s}let n=(await this.#A(`${this.#t}/mailFolders?$top=${i}`))?.value?.find(s=>s.displayName?.toLowerCase()===r)??null;return this.#r[r]=n,n}async getMail(t){if(this.#n[t])return this.#n[t];let i=new URLSearchParams;i.set("$filter",`internetMessageId eq '${t}'`);let a=(await this.#A(`${this.#t}/messages?${i.toString()}`)).value?.[0]??null;return this.#n[t]=a,a}async getMails(t,i,r,a=10){let n=new URLSearchParams;n.set("$select",NT.join(",")),n.set("$top",a.toString()),n.set("$orderby","receivedDateTime DESC"),n.set("$filter",`receivedDateTime ge ${r??new Date().toISOString()}`);let s=`${this.#t}/mailFolders/${t.id}/messages/delta?${n.toString()}`,A=i??s,c=[],u;try{for(;A;){let h=await this.#A(A);c.push(...(h?.value??[]).filter(g=>!g["@removed"])),h?.["@odata.deltaLink"]&&(u=h?.["@odata.deltaLink"]),A=h?.["@odata.nextLink"]}}catch(h){if(h instanceof wl&&h.responseBody?.error?.code==="SyncStateNotFound")return on.getInstance().info(`Delta link expired, resetting to full sync: ${h.message}`),{mails:[]};throw h}return{mails:c,deltaLink:u??i??s}}async getFullMail(t,i){let r=null;return this.#i!==!1&&(r=await this.#c(t.id,i)),r||(r=await this.#l(t.id,i.id)),(0,MT.simpleParser)(r)}async getExtraData(t,i){return this.#u(t.id,i)}async getMailCategories(t){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}?$select=categories`,"GET",void 0,{Prefer:'outlook.body-content-type="text"'})}async updateMailCategories(t,i){await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}`,"PATCH",i)}async createReply(t,i,r){let a=await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/createReply`,"POST");return!i&&!r||await this.#A(`${this.#t}/messages/${encodeURIComponent(a.id)}`,"PATCH",{body:i?{contentType:"html",content:i}:void 0,from:r?{emailAddress:{address:r}}:void 0}),a}sendMail(t){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/send`,"POST")}moveMailToFolder(t,i){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/move`,"POST",{destinationId:i.id})}async listAttachments(t,i=50){if(this.#a[t.id])return this.#a[t.id];let r=new URLSearchParams;r.set("$top",i.toString());let n=(await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/attachments?${r.toString()}`,"GET"))?.value||[];return this.#a[t.id]=n,n}#o(t,i,r){return new Promise((a,n)=>{let s=LT.default.stringify({client_id:i,scope:"https://graph.microsoft.com/.default",client_secret:r,grant_type:"client_credentials"}),A={hostname:"login.microsoftonline.com",path:`/${t}/oauth2/v2.0/token`,method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","Content-Length":Buffer.byteLength(s)}};on.getInstance().debug("Fetching Office365 access token...");let c=eI.default.request(A,u=>{let h="";u.on("data",g=>{h+=g}),u.on("error",g=>{n(g)}),u.on("end",()=>{try{on.getInstance().debug(`Fetched Office365 access token: ${h}`);let g=JSON.parse(h);if(g.error){n(new Error(g.error_description||g.error));return}a(g.access_token)}catch(g){n(g)}})});c.on("error",u=>{on.getInstance().error(`Failed to fetch Office365 access token: ${u.message}`,u),on.getInstance().warn(u),n(u)}),c.write(s),c.end()})}async#A(t,i="GET",r=void 0,a=void 0){if(!this.#e)throw new Error("Graph token missing (call init())");let n=new URL(t),s=r===void 0?void 0:Buffer.from(JSON.stringify(r),"utf-8"),A={method:i,hostname:n.hostname,path:n.pathname+n.search,protocol:n.protocol,port:n.port||443,headers:{Authorization:`Bearer ${this.#e}`,"Content-Type":"application/json",Accept:"application/json",...s?{"Content-Length":String(s.length)}:{},...a||{}}};return new Promise((c,u)=>{let h=eI.default.request(A,g=>{let d=[];g.on("data",E=>d.push(Buffer.from(E))),g.on("end",()=>{let E=g.statusCode||0,B=Buffer.concat(d).toString("utf-8");if(E>=200&&E<300){if(!B)return c(void 0);if((g.headers["content-type"]||"").toString().split(";")[0].trim()==="application/json")try{return c(JSON.parse(B))}catch{return c(void 0)}else return c(B)}else return E===204?c(void 0):u(new wl(`Graph ${i} ${n.pathname}${n.search} failed: ${E} ${B}`,E,B))})});h.on("error",u),s&&h.write(s),h.end()})}async#l(t,i){return this.#A(`${this.#t}/mailFolders/${t}/messages/${i}/$value`)}async#c(t,i){let r=await this.listAttachments(i),a=r.find(s=>s["@odata.type"]==="#microsoft.graph.fileAttachment"&&((s.contentType||"").toLowerCase()==="message/rfc822"||String(s.name||s.fileName||"").toLowerCase().endsWith(".eml")));if(a?.contentBytes)return Buffer.from(a.contentBytes,"base64");if(a?.id)return this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(a.id)}/$value`);let n=r.find(s=>s["@odata.type"]==="#microsoft.graph.itemAttachment"&&(s.item?.["@odata.type"]==="#microsoft.graph.message"||s.contentType==="message/rfc822"));return n?.id?this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(n.id)}/$value`):null}async#u(t,i){let r=await this.listAttachments(i),a=r.find(s=>s["@odata.type"]==="#microsoft.graph.fileAttachment"&&(s.contentType||"").toLowerCase()==="application/json"&&String(s.name||s.fileName||"").toLowerCase()==="extradata.json");if(a?.contentBytes)return Buffer.from(a.contentBytes,"base64");if(a?.id)return this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(a.id)}/$value`);let n=r.find(s=>s["@odata.type"]==="#microsoft.graph.itemAttachment"&&(s.item?.["@odata.type"]==="#microsoft.graph.message"||s.contentType==="application/json"));return n?.id?this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(n.id)}/$value`):null}};var aj=Us(JO());var _e;(function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"})(_e||(_e={}));function PO(e){return e.type===_e.Tag||e.type===_e.Script||e.type===_e.Style}var YO=_e.Root,OO=_e.Text,KO=_e.Directive,jO=_e.Comment,WO=_e.Script,VO=_e.Style,ZO=_e.Tag,zO=_e.CDATA,XO=_e.Doctype;var Y2=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(t){this.parent=t}get previousSibling(){return this.prev}set previousSibling(t){this.prev=t}get nextSibling(){return this.next}set nextSibling(t){this.next=t}cloneNode(t=!1){return eK(this,t)}},tg=class extends Y2{constructor(t){super(),this.data=t}get nodeValue(){return this.data}set nodeValue(t){this.data=t}},Oc=class extends tg{constructor(){super(...arguments),this.type=_e.Text}get nodeType(){return 3}},eg=class extends tg{constructor(){super(...arguments),this.type=_e.Comment}get nodeType(){return 8}},ig=class extends tg{constructor(t,i){super(i),this.name=t,this.type=_e.Directive}get nodeType(){return 1}},rg=class extends Y2{constructor(t){super(),this.children=t}get firstChild(){var t;return(t=this.children[0])!==null&&t!==void 0?t:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(t){this.children=t}},ag=class extends rg{constructor(){super(...arguments),this.type=_e.CDATA}get nodeType(){return 4}},Kc=class extends rg{constructor(){super(...arguments),this.type=_e.Root}get nodeType(){return 9}},ng=class extends rg{constructor(t,i,r=[],a=t==="script"?_e.Script:t==="style"?_e.Style:_e.Tag){super(r),this.name=t,this.attribs=i,this.type=a}get nodeType(){return 1}get tagName(){return this.name}set tagName(t){this.name=t}get attributes(){return Object.keys(this.attribs).map(t=>{var i,r;return{name:t,value:this.attribs[t],namespace:(i=this["x-attribsNamespace"])===null||i===void 0?void 0:i[t],prefix:(r=this["x-attribsPrefix"])===null||r===void 0?void 0:r[t]}})}};function Fs(e){return PO(e)}function By(e){return e.type===_e.CDATA}function O2(e){return e.type===_e.Text}function fy(e){return e.type===_e.Comment}function PEt(e){return e.type===_e.Directive}function tK(e){return e.type===_e.Root}function eK(e,t=!1){let i;if(O2(e))i=new Oc(e.data);else if(fy(e))i=new eg(e.data);else if(Fs(e)){let r=t?dy(e.children):[],a=new ng(e.name,{...e.attribs},r);r.forEach(n=>n.parent=a),e.namespace!=null&&(a.namespace=e.namespace),e["x-attribsNamespace"]&&(a["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(a["x-attribsPrefix"]={...e["x-attribsPrefix"]}),i=a}else if(By(e)){let r=t?dy(e.children):[],a=new ag(r);r.forEach(n=>n.parent=a),i=a}else if(tK(e)){let r=t?dy(e.children):[],a=new Kc(r);r.forEach(n=>n.parent=a),e["x-mode"]&&(a["x-mode"]=e["x-mode"]),i=a}else if(PEt(e)){let r=new ig(e.name,e.data);e["x-name"]!=null&&(r["x-name"]=e["x-name"],r["x-publicId"]=e["x-publicId"],r["x-systemId"]=e["x-systemId"]),i=r}else throw new Error(`Not implemented yet: ${e.type}`);return i.startIndex=e.startIndex,i.endIndex=e.endIndex,e.sourceCodeLocation!=null&&(i.sourceCodeLocation=e.sourceCodeLocation),i}function dy(e){let t=e.map(i=>eK(i,!0));for(let i=1;i<t.length;i++)t[i].prev=t[i-1],t[i-1].next=t[i];return t}var iK={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},jc=class{constructor(t,i,r){this.dom=[],this.root=new Kc(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof i=="function"&&(r=i,i=iK),typeof t=="object"&&(i=t,t=void 0),this.callback=t??null,this.options=i??iK,this.elementCB=r??null}onparserinit(t){this.parser=t}onreset(){this.dom=[],this.root=new Kc(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(t){this.handleCallback(t)}onclosetag(){this.lastNode=null;let t=this.tagStack.pop();this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(t)}onopentag(t,i){let r=this.options.xmlMode?_e.Tag:void 0,a=new ng(t,i,void 0,r);this.addNode(a),this.tagStack.push(a)}ontext(t){let{lastNode:i}=this;if(i&&i.type===_e.Text)i.data+=t,this.options.withEndIndices&&(i.endIndex=this.parser.endIndex);else{let r=new Oc(t);this.addNode(r),this.lastNode=r}}oncomment(t){if(this.lastNode&&this.lastNode.type===_e.Comment){this.lastNode.data+=t;return}let i=new eg(t);this.addNode(i),this.lastNode=i}oncommentend(){this.lastNode=null}oncdatastart(){let t=new Oc(""),i=new ag([t]);this.addNode(i),t.parent=i,this.lastNode=t}oncdataend(){this.lastNode=null}onprocessinginstruction(t,i){let r=new ig(t,i);this.addNode(r)}handleCallback(t){if(typeof this.callback=="function")this.callback(t,this.dom);else if(t)throw t}addNode(t){let i=this.tagStack[this.tagStack.length-1],r=i.children[i.children.length-1];this.options.withStartIndices&&(t.startIndex=this.parser.startIndex),this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),i.children.push(t),r&&(t.prev=r,r.next=t),t.parent=i,this.lastNode=null}};var YEt=/\n/g;function OEt(e){let t=[...e.matchAll(YEt)].map((r=>r.index||0));t.unshift(-1);let i=Cy(t,0,t.length);return r=>aK(i,r)}function Cy(e,t,i){if(i-t==1)return{offset:e[t],index:t+1};let r=Math.ceil((t+i)/2),a=Cy(e,t,r),n=Cy(e,r,i);return{offset:a.offset,low:a,high:n}}function aK(e,t){return(function(i){return Object.prototype.hasOwnProperty.call(i,"index")})(e)?{line:e.index,column:t-e.offset}:aK(e.high.offset<t?e.high:e.low,t)}function Iy(e,t="",i={}){let r=typeof t!="string"?t:i,a=typeof t=="string"?t:"",n=e.map(KEt),s=!!r.lineNumbers;return function(A,c=0){let u=s?OEt(A):()=>({line:0,column:0}),h=c,g=[];t:for(;h<A.length;){let d=!1;for(let E of n){E.regex.lastIndex=h;let B=E.regex.exec(A);if(B&&B[0].length>0){if(!E.discard){let I=u(h),m=typeof E.replace=="string"?B[0].replace(new RegExp(E.regex.source,E.regex.flags),E.replace):B[0];g.push({state:a,name:E.name,text:m,offset:h,len:B[0].length,line:I.line,column:I.column})}if(h=E.regex.lastIndex,d=!0,E.push){let I=E.push(A,h);g.push(...I.tokens),h=I.offset}if(E.pop)break t;break}}if(!d)break}return{tokens:g,offset:h,complete:A.length<=h}}}function KEt(e,t){return{...e,regex:jEt(e,t)}}function jEt(e,t){if(e.name.length===0)throw new Error(`Rule #${t} has empty name, which is not allowed.`);if((function(i){return Object.prototype.hasOwnProperty.call(i,"regex")})(e))return(function(i){if(i.global)throw new Error(`Regular expression /${i.source}/${i.flags} contains the global flag, which is not allowed.`);return i.sticky?i:new RegExp(i.source,i.flags+"y")})(e.regex);if((function(i){return Object.prototype.hasOwnProperty.call(i,"str")})(e)){if(e.str.length===0)throw new Error(`Rule #${t} ("${e.name}") has empty "str" property, which is not allowed.`);return new RegExp(rK(e.str),"y")}return new RegExp(rK(e.name),"y")}function rK(e){return e.replace(/[-[\]{}()*+!<=:?./\\^$|#\s,]/g,"\\$&")}function Un(e,t){return(i,r)=>{let a=r,n;return r<i.tokens.length?(n=e(i.tokens[r],i,r),n!==void 0&&a++):t?.(i,r),n===void 0?{matched:!1}:{matched:!0,position:a,value:n}}}function py(e,t){return e.matched?{matched:!0,position:e.position,value:t(e.value,e.position)}:e}function K2(e,t){return e.matched?t(e):e}function sr(e,t){return(i,r)=>py(e(i,r),(a,n)=>t(a,i,r,n))}function sg(e,t){return(i,r)=>{let a=e(i,r);return a.matched?a:{matched:!0,position:r,value:t}}}function Wc(...e){return(t,i)=>{for(let r of e){let a=r(t,i);if(a.matched)return a}return{matched:!1}}}function HA(e,t){return(i,r)=>{let a=e(i,r);return a.matched?a:t(i,r)}}function WEt(e,t){return(i,r)=>{let a=[],n=!0;do{let s=e(i,r);s.matched&&t(s.value,a.length+1,i,r,s.position)?(a.push(s.value),r=s.position):n=!1}while(n);return{matched:!0,position:r,value:a}}}function j2(e){return WEt(e,()=>!0)}function nK(e){return Er(e,j2(e),(t,i)=>[t,...i])}function Er(e,t,i){return(r,a)=>K2(e(r,a),n=>py(t(r,n.position),(s,A)=>i(n.value,s,r,a,A)))}function sK(e,t){return Er(e,t,i=>i)}function my(e,t){return Er(e,t,(i,r)=>r)}function W2(e,t,i,r){return(a,n)=>K2(e(a,n),s=>K2(t(a,s.position),A=>py(i(a,A.position),(c,u)=>r(s.value,A.value,c,a,n,u))))}function Qy(e,t,i){return W2(e,t,i,(r,a)=>a)}function VEt(...e){return(t,i)=>{let r=[],a=i;for(let n of e){let s=n(t,a);if(s.matched)r.push(s.value),a=s.position;else return{matched:!1}}return{matched:!0,position:a,value:r}}}function AK(...e){return ZEt(VEt(...e))}function ZEt(e){return sr(e,t=>t.flatMap(i=>i))}function zEt(e,t){return(i,r)=>{let a=!0,n=e,s=r;do{let A=t(n,i,s)(i,s);A.matched?(n=A.value,s=A.position):a=!1}while(a);return{matched:!0,position:s,value:n}}}function XEt(e,t,i){return zEt(e,r=>sr(t,(a,n,s,A)=>i(r,a,n,s,A)))}function by(e,t,i){return $Et(e,r=>XEt(r,Er(t,i,(a,n)=>[a,n]),(a,[n,s])=>n(a,s)))}function $Et(e,t){return(i,r)=>K2(e(i,r),a=>t(a.value,i,r,a.position)(i,a.position))}var edt="(?:[ \\t\\r\\n\\f]*)",gK="(?:\\n|\\r\\n|\\r|\\f)",z2="[^\\x00-\\x7F]",cg="(?:\\\\[0-9a-f]{1,6}(?:\\r\\n|[ \\n\\r\\t\\f])?)",ug="(?:\\\\[^\\n\\r\\f0-9a-f])",idt=`(?:[_a-z]|${z2}|${cg}|${ug})`,xK=`(?:[_a-z0-9-]|${z2}|${cg}|${ug})`,rdt=`(?:${xK}+)`,adt=`(?:[-]?${idt}${xK}*)`,ndt=`'([^\\n\\r\\f\\\\']|\\\\${gK}|${z2}|${cg}|${ug})*'`,sdt=`"([^\\n\\r\\f\\\\"]|\\\\${gK}|${z2}|${cg}|${ug})*"`,Adt=Iy([{name:"ws",regex:new RegExp(edt)},{name:"hash",regex:new RegExp(`#${rdt}`,"i")},{name:"ident",regex:new RegExp(adt,"i")},{name:"str1",regex:new RegExp(ndt,"i")},{name:"str2",regex:new RegExp(sdt,"i")},{name:"*"},{name:"."},{name:","},{name:"["},{name:"]"},{name:"="},{name:">"},{name:"|"},{name:"+"},{name:"~"},{name:"^"},{name:"$"}]),odt=Iy([{name:"unicode",regex:new RegExp(cg,"i")},{name:"escape",regex:new RegExp(ug,"i")},{name:"any",regex:new RegExp("[\\s\\S]","i")}]);function EK([e,t,i],[r,a,n]){return[e+r,t+a,i+n]}function cdt(e){return e.reduce(EK,[0,0,0])}var udt=Un(e=>e.name==="unicode"?String.fromCodePoint(parseInt(e.text.slice(1),16)):void 0),ldt=Un(e=>e.name==="escape"?e.text.slice(1):void 0),hdt=Un(e=>e.name==="any"?e.text:void 0),gdt=sr(j2(Wc(udt,ldt,hdt)),e=>e.join(""));function wy(e){let t=odt(e);return gdt({tokens:t.tokens,options:void 0},0).value}function ri(e){return Un(t=>t.name===e?!0:void 0)}var Fy=Un(e=>e.name==="ws"?null:void 0),yy=sg(Fy,null);function Zc(e){return Qy(yy,e,yy)}var og=Un(e=>e.name==="ident"?wy(e.text):void 0),xdt=Un(e=>e.name==="hash"?wy(e.text.slice(1)):void 0),Edt=Un(e=>e.name.startsWith("str")?wy(e.text.slice(1,-1)):void 0),dK=sK(sg(og,""),ri("|")),vy=HA(Er(dK,og,(e,t)=>({name:t,namespace:e})),sr(og,e=>({name:e,namespace:null}))),ddt=HA(Er(dK,ri("*"),e=>({type:"universal",namespace:e,specificity:[0,0,0]})),sr(ri("*"),()=>({type:"universal",namespace:null,specificity:[0,0,0]}))),Bdt=sr(vy,({name:e,namespace:t})=>({type:"tag",name:e,namespace:t,specificity:[0,0,1]})),fdt=Er(ri("."),og,(e,t)=>({type:"class",name:t,specificity:[0,1,0]})),Cdt=sr(xdt,e=>({type:"id",name:e,specificity:[1,0,0]})),oK=Un(e=>{if(e.name==="ident"){if(e.text==="i"||e.text==="I")return"i";if(e.text==="s"||e.text==="S")return"s"}}),Idt=HA(Er(Edt,sg(my(yy,oK),null),(e,t)=>({value:e,modifier:t})),Er(og,sg(my(Fy,oK),null),(e,t)=>({value:e,modifier:t}))),pdt=Wc(sr(ri("="),()=>"="),Er(ri("~"),ri("="),()=>"~="),Er(ri("|"),ri("="),()=>"|="),Er(ri("^"),ri("="),()=>"^="),Er(ri("$"),ri("="),()=>"$="),Er(ri("*"),ri("="),()=>"*=")),mdt=W2(ri("["),Zc(vy),ri("]"),(e,{name:t,namespace:i})=>({type:"attrPresence",name:t,namespace:i,specificity:[0,1,0]})),Qdt=Qy(ri("["),W2(Zc(vy),pdt,Zc(Idt),({name:e,namespace:t},i,{value:r,modifier:a})=>({type:"attrValue",name:e,namespace:t,matcher:i,value:r,modifier:a,specificity:[0,1,0]})),ri("]")),bdt=HA(mdt,Qdt),ydt=HA(ddt,Bdt),cK=Wc(Cdt,fdt,bdt),uK=sr(HA(AK(ydt,j2(cK)),nK(cK)),e=>({type:"compound",list:e,specificity:cdt(e.map(t=>t.specificity))})),Ddt=Wc(sr(ri(">"),()=>">"),sr(ri("+"),()=>"+"),sr(ri("~"),()=>"~"),Er(ri("|"),ri("|"),()=>"||")),wdt=HA(Zc(Ddt),sr(Fy,()=>" ")),Dy=by(uK,sr(wdt,e=>(t,i)=>({type:"compound",list:[...i.list,{type:"combinator",combinator:e,left:t,specificity:t.specificity}],specificity:EK(t.specificity,i.specificity)})),uK),_It=by(sr(Dy,e=>({type:"list",list:[e]})),sr(Zc(ri(",")),()=>(e,t)=>({type:"list",list:[...e.list,t]})),Dy);function Fdt(e,t){if(!(typeof t=="string"||t instanceof String))throw new Error("Expected a selector string. Actual input is not a string!");let i=Adt(t);if(!i.complete)throw new Error(`The input "${t}" was only partially tokenized, stopped at offset ${i.offset}!
|
|
168
|
+
`).join("");try{return c}finally{if(n){try{typeof n.cleanup=="function"&&await n.cleanup(!1)}catch{}try{typeof n.destroy=="function"&&await n.destroy()}catch{}}}}});var xBt={};OD(xBt,{ConnectorRunnerMicrosoftOffice365Email:()=>Wy});module.exports=HW(xBt);var du=Us(require("node:process")),Fg=class{constructor(t,i){this.#t="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#i=i,du.default.on?du.default.on("message",r=>{r.cmd===this.#t&&i.logger.verbose(`${du.default.pid} Received message from parent process:`,r)}):i.logger.warn("IPC channel is not available. process.on is undefined."),du.default.send||i.logger.warn("IPC channel is not available. process.send is undefined."),t.actions?.forEach(r=>{if(r.config.templates===void 0)return;let a={};Object.entries(r.config.templates).forEach(([n,s])=>{try{a[n]=i.templating.compile(s)}catch(A){i.logger.error(`Error compiling template ${n} for action ${r.identifier}`,A)}}),r.config.parsedTemplates=a})}#t;#i;set callbackFunction(t){this.connectorSDK.receiver.registerCallback(this.#e(t))}get connectorSDK(){return this.#i}#e(t){return async i=>{let r=await this.#i.receiver.getActionConfig(i);return r?t(i,r):this.#i.receiver.responses.badRequest("Action not found")(i)}}};var Ua=Us(require("node:process")),fr=Us(sR()),AR=(n=>(n.error="error",n.warn="warn",n.info="info",n.http="http",n.debug="debug",n))(AR||{}),on=class e{#t;constructor(t="default",i="info"){this.logger=fr.default.createLogger({level:i,format:fr.default.format.combine(fr.default.format.label({label:t}),fr.default.format.timestamp(),fr.default.format.json(),fr.default.format.errors({stack:!0}))});let r=!1;(Ua.default.env.NODE_ENV!=="production"||Ua.default.env.LOG_TO_CONSOLE==="true")&&(r=!0,this.logger.add(new fr.default.transports.Console({format:fr.default.format.printf(({label:a,level:n,message:s})=>{let A=new Date().toLocaleString();return`[${a}] ${Ua.default.pid} - ${A} ${n}: ${s}`})}))),Ua.default.env.LOG_TO_FILE==="true"&&(r=!0,this.logger.add(new fr.default.transports.File({filename:"error.log",level:"error"})),this.logger.add(new fr.default.transports.File({filename:"combined.log"}))),r||this.logger.add(new fr.default.transports.Console({format:fr.default.format.printf(({label:a,level:n,message:s})=>`[${a}] ${n}: ${s}`)}))}static getInstance(t,i){return e.instance||(e.instance=new e(t??"default",e.#e(i))),e.instance}setDatadogTransport(t){let i=t?.apiKey??Ua.default.env.DATADOG_API_KEY;if(!i)return this.debug("DATADOG_API_KEY is not set, cannot add Datadog transport"),this;let r=new URLSearchParams({"dd-api-key":i,ddsource:t?.source??Ua.default.env.DD_SOURCE??"nodejs",service:t?.service??Ua.default.env.DD_SERVICE??"unknown",env:t?.env??Ua.default.env.DD_ENV??"prod"});t?.tags&&r.append("ddtags",Object.entries(t.tags).map(([n,s])=>`${n}:${s}`).join(","));let a={host:`http-intake.logs.${Ua.default.env.DD_SITE??"datadoghq.eu"}`,path:`/api/v2/logs?${r.toString()}`,ssl:!0,batch:!0,format:fr.default.format.json(),level:"info"};return this.#t&&this.logger.remove(this.#t),this.#t=new fr.default.transports.Http(a),this.logger.add(this.#t),this}info(...t){this.#i(this.logger.info,...t)}static info(...t){this.getInstance().info(...t)}debug(...t){this.#i(this.logger.debug,...t)}static debug(...t){this.getInstance().debug(...t)}error(...t){this.#i(this.logger.error,...t)}static error(...t){this.getInstance().error(...t)}warn(...t){this.#i(this.logger.warn,...t)}static warn(...t){this.getInstance().warn(...t)}verbose(...t){this.#i(this.logger.verbose,...t)}static verbose(...t){this.getInstance().verbose(...t)}#i(t,...i){try{let r=i.map(a=>typeof a=="object"?JSON.stringify(a):String(a));t(r.join(" "),...i)}catch(r){console.error("unknown error in log, function",r)}}static#e=t=>{if(t!==void 0)return t;let i=Ua.default.env.LOG_LEVEL||"info",a=!Object.values(AR).includes(i);return a&&(i="info"),a&&console.error(`Invalid log level: ${i} only allow; 'error', 'warn', 'info', 'debug', 'trace'. Using info as default.`),i}};var eI=Us(require("node:https")),LT=Us(require("node:querystring"));var MT=Us(kT());var wl=class extends Error{constructor(i,r,a){super(i);this.statusCode=r;this.name="GraphApiError";try{this.responseBody=JSON.parse(a)}catch{}}};var RT=["inbox","drafts","sent items","deleted items","archive","junk email"],NT=["id","internetMessageId","subject","receivedDateTime","lastModifiedDateTime","body","bodyPreview","from","replyTo","toRecipients","ccRecipients","bccRecipients","internetMessageHeaders","categories"];var nE=class{#t;#i=!1;#e;#r={};#n={};#a={};constructor(t,i=!1){this.#t=`https://graph.microsoft.com/v1.0/users/${encodeURIComponent(t)}`,this.#i=i}async init(t,i,r){this.#e=await this.#o(t,i,r)}async getFolder(t,i=100){let r=t.toLowerCase();if(this.#r[r])return this.#r[r];if(RT.includes(r)){let s=await this.#A(`${this.#t}/mailFolders/${encodeURIComponent(t)}`);if(s?.id)return this.#r[r]=s,s}let n=(await this.#A(`${this.#t}/mailFolders?$top=${i}`))?.value?.find(s=>s.displayName?.toLowerCase()===r)??null;return this.#r[r]=n,n}async getMail(t){if(this.#n[t])return this.#n[t];let i=new URLSearchParams;i.set("$filter",`internetMessageId eq '${t}'`);let a=(await this.#A(`${this.#t}/messages?${i.toString()}`)).value?.[0]??null;return this.#n[t]=a,a}async getMails(t,i,r,a=10){let n=new URLSearchParams;n.set("$select",NT.join(",")),n.set("$top",a.toString()),n.set("$orderby","receivedDateTime DESC"),n.set("$filter",`receivedDateTime ge ${r??new Date().toISOString()}`);let s=`${this.#t}/mailFolders/${t.id}/messages/delta?${n.toString()}`,A=i??s,c=[],u;try{for(;A;){let h=await this.#A(A);c.push(...(h?.value??[]).filter(g=>!g["@removed"])),h?.["@odata.deltaLink"]&&(u=h?.["@odata.deltaLink"]),A=h?.["@odata.nextLink"]}}catch(h){if(h instanceof wl&&h.responseBody?.error?.code==="SyncStateNotFound")return on.getInstance().info(`Delta link expired, resetting to full sync: ${h.message}`),{mails:[]};throw h}return{mails:c,deltaLink:u??i??s}}async getFullMail(t,i){let r=null;return this.#i!==!1&&(r=await this.#c(t.id,i)),r||(r=await this.#l(t.id,i.id)),(0,MT.simpleParser)(r)}async getExtraData(t,i){return this.#u(t.id,i)}async getMailCategories(t){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}?$select=categories`,"GET",void 0,{Prefer:'outlook.body-content-type="text"'})}async updateMailCategories(t,i){await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}`,"PATCH",i)}async createReply(t,i,r){let a=await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/createReply`,"POST");return!i&&!r||await this.#A(`${this.#t}/messages/${encodeURIComponent(a.id)}`,"PATCH",{body:i?{contentType:"html",content:i}:void 0,from:r?{emailAddress:{address:r}}:void 0}),a}sendMail(t){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/send`,"POST")}moveMailToFolder(t,i){return this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/move`,"POST",{destinationId:i.id})}async listAttachments(t,i=50){if(this.#a[t.id])return this.#a[t.id];let r=new URLSearchParams;r.set("$top",i.toString());let n=(await this.#A(`${this.#t}/messages/${encodeURIComponent(t.id)}/attachments?${r.toString()}`,"GET"))?.value||[];return this.#a[t.id]=n,n}#o(t,i,r){return new Promise((a,n)=>{let s=LT.default.stringify({client_id:i,scope:"https://graph.microsoft.com/.default",client_secret:r,grant_type:"client_credentials"}),A={hostname:"login.microsoftonline.com",path:`/${t}/oauth2/v2.0/token`,method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","Content-Length":Buffer.byteLength(s)}};on.getInstance().debug("Fetching Office365 access token...");let c=eI.default.request(A,u=>{let h="";u.on("data",g=>{h+=g}),u.on("error",g=>{n(g)}),u.on("end",()=>{try{on.getInstance().debug(`Fetched Office365 access token: ${h}`);let g=JSON.parse(h);if(g.error){n(new Error(g.error_description||g.error));return}a(g.access_token)}catch(g){n(g)}})});c.on("error",u=>{on.getInstance().error(`Failed to fetch Office365 access token: ${u.message}`,u),on.getInstance().warn(u),n(u)}),c.write(s),c.end()})}async#A(t,i="GET",r=void 0,a=void 0){if(!this.#e)throw new Error("Graph token missing (call init())");let n=new URL(t),s=r===void 0?void 0:Buffer.from(JSON.stringify(r),"utf-8"),A={method:i,hostname:n.hostname,path:n.pathname+n.search,protocol:n.protocol,port:n.port||443,headers:{Authorization:`Bearer ${this.#e}`,"Content-Type":"application/json",Accept:"application/json",...s?{"Content-Length":String(s.length)}:{},...a||{}}};return new Promise((c,u)=>{let h=eI.default.request(A,g=>{let d=[];g.on("data",E=>d.push(Buffer.from(E))),g.on("end",()=>{let E=g.statusCode||0,B=Buffer.concat(d).toString("utf-8");if(E>=200&&E<300){if(!B)return c(void 0);if((g.headers["content-type"]||"").toString().split(";")[0].trim()==="application/json")try{return c(JSON.parse(B))}catch{return c(void 0)}else return c(B)}else return E===204?c(void 0):u(new wl(`Graph ${i} ${n.pathname}${n.search} failed: ${E} ${B}`,E,B))})});h.on("error",u),s&&h.write(s),h.end()})}async#l(t,i){return this.#A(`${this.#t}/mailFolders/${t}/messages/${i}/$value`)}async#c(t,i){let r=await this.listAttachments(i),a=r.find(s=>s["@odata.type"]==="#microsoft.graph.fileAttachment"&&((s.contentType||"").toLowerCase()==="message/rfc822"||String(s.name||s.fileName||"").toLowerCase().endsWith(".eml")));if(a?.contentBytes)return Buffer.from(a.contentBytes,"base64");if(a?.id)return this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(a.id)}/$value`);let n=r.find(s=>s["@odata.type"]==="#microsoft.graph.itemAttachment"&&(s.item?.["@odata.type"]==="#microsoft.graph.message"||s.contentType==="message/rfc822"));return n?.id?this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(n.id)}/$value`):null}async#u(t,i){let r=await this.listAttachments(i),a=r.find(s=>s["@odata.type"]==="#microsoft.graph.fileAttachment"&&(s.contentType||"").toLowerCase()==="application/json"&&String(s.name||s.fileName||"").toLowerCase()==="extradata.json");if(a?.contentBytes)return Buffer.from(a.contentBytes,"base64");if(a?.id)return this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(a.id)}/$value`);let n=r.find(s=>s["@odata.type"]==="#microsoft.graph.itemAttachment"&&(s.item?.["@odata.type"]==="#microsoft.graph.message"||s.contentType==="application/json"));return n?.id?this.#A(`${this.#t}/mailFolders/${t}/messages/${i.id}/attachments/${encodeURIComponent(n.id)}/$value`):null}};var aj=Us(JO());var _e;(function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"})(_e||(_e={}));function PO(e){return e.type===_e.Tag||e.type===_e.Script||e.type===_e.Style}var YO=_e.Root,OO=_e.Text,KO=_e.Directive,jO=_e.Comment,WO=_e.Script,VO=_e.Style,ZO=_e.Tag,zO=_e.CDATA,XO=_e.Doctype;var Y2=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(t){this.parent=t}get previousSibling(){return this.prev}set previousSibling(t){this.prev=t}get nextSibling(){return this.next}set nextSibling(t){this.next=t}cloneNode(t=!1){return eK(this,t)}},tg=class extends Y2{constructor(t){super(),this.data=t}get nodeValue(){return this.data}set nodeValue(t){this.data=t}},Oc=class extends tg{constructor(){super(...arguments),this.type=_e.Text}get nodeType(){return 3}},eg=class extends tg{constructor(){super(...arguments),this.type=_e.Comment}get nodeType(){return 8}},ig=class extends tg{constructor(t,i){super(i),this.name=t,this.type=_e.Directive}get nodeType(){return 1}},rg=class extends Y2{constructor(t){super(),this.children=t}get firstChild(){var t;return(t=this.children[0])!==null&&t!==void 0?t:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(t){this.children=t}},ag=class extends rg{constructor(){super(...arguments),this.type=_e.CDATA}get nodeType(){return 4}},Kc=class extends rg{constructor(){super(...arguments),this.type=_e.Root}get nodeType(){return 9}},ng=class extends rg{constructor(t,i,r=[],a=t==="script"?_e.Script:t==="style"?_e.Style:_e.Tag){super(r),this.name=t,this.attribs=i,this.type=a}get nodeType(){return 1}get tagName(){return this.name}set tagName(t){this.name=t}get attributes(){return Object.keys(this.attribs).map(t=>{var i,r;return{name:t,value:this.attribs[t],namespace:(i=this["x-attribsNamespace"])===null||i===void 0?void 0:i[t],prefix:(r=this["x-attribsPrefix"])===null||r===void 0?void 0:r[t]}})}};function Fs(e){return PO(e)}function By(e){return e.type===_e.CDATA}function O2(e){return e.type===_e.Text}function fy(e){return e.type===_e.Comment}function PEt(e){return e.type===_e.Directive}function tK(e){return e.type===_e.Root}function eK(e,t=!1){let i;if(O2(e))i=new Oc(e.data);else if(fy(e))i=new eg(e.data);else if(Fs(e)){let r=t?dy(e.children):[],a=new ng(e.name,{...e.attribs},r);r.forEach(n=>n.parent=a),e.namespace!=null&&(a.namespace=e.namespace),e["x-attribsNamespace"]&&(a["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(a["x-attribsPrefix"]={...e["x-attribsPrefix"]}),i=a}else if(By(e)){let r=t?dy(e.children):[],a=new ag(r);r.forEach(n=>n.parent=a),i=a}else if(tK(e)){let r=t?dy(e.children):[],a=new Kc(r);r.forEach(n=>n.parent=a),e["x-mode"]&&(a["x-mode"]=e["x-mode"]),i=a}else if(PEt(e)){let r=new ig(e.name,e.data);e["x-name"]!=null&&(r["x-name"]=e["x-name"],r["x-publicId"]=e["x-publicId"],r["x-systemId"]=e["x-systemId"]),i=r}else throw new Error(`Not implemented yet: ${e.type}`);return i.startIndex=e.startIndex,i.endIndex=e.endIndex,e.sourceCodeLocation!=null&&(i.sourceCodeLocation=e.sourceCodeLocation),i}function dy(e){let t=e.map(i=>eK(i,!0));for(let i=1;i<t.length;i++)t[i].prev=t[i-1],t[i-1].next=t[i];return t}var iK={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},jc=class{constructor(t,i,r){this.dom=[],this.root=new Kc(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof i=="function"&&(r=i,i=iK),typeof t=="object"&&(i=t,t=void 0),this.callback=t??null,this.options=i??iK,this.elementCB=r??null}onparserinit(t){this.parser=t}onreset(){this.dom=[],this.root=new Kc(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(t){this.handleCallback(t)}onclosetag(){this.lastNode=null;let t=this.tagStack.pop();this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(t)}onopentag(t,i){let r=this.options.xmlMode?_e.Tag:void 0,a=new ng(t,i,void 0,r);this.addNode(a),this.tagStack.push(a)}ontext(t){let{lastNode:i}=this;if(i&&i.type===_e.Text)i.data+=t,this.options.withEndIndices&&(i.endIndex=this.parser.endIndex);else{let r=new Oc(t);this.addNode(r),this.lastNode=r}}oncomment(t){if(this.lastNode&&this.lastNode.type===_e.Comment){this.lastNode.data+=t;return}let i=new eg(t);this.addNode(i),this.lastNode=i}oncommentend(){this.lastNode=null}oncdatastart(){let t=new Oc(""),i=new ag([t]);this.addNode(i),t.parent=i,this.lastNode=t}oncdataend(){this.lastNode=null}onprocessinginstruction(t,i){let r=new ig(t,i);this.addNode(r)}handleCallback(t){if(typeof this.callback=="function")this.callback(t,this.dom);else if(t)throw t}addNode(t){let i=this.tagStack[this.tagStack.length-1],r=i.children[i.children.length-1];this.options.withStartIndices&&(t.startIndex=this.parser.startIndex),this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),i.children.push(t),r&&(t.prev=r,r.next=t),t.parent=i,this.lastNode=null}};var YEt=/\n/g;function OEt(e){let t=[...e.matchAll(YEt)].map((r=>r.index||0));t.unshift(-1);let i=Cy(t,0,t.length);return r=>aK(i,r)}function Cy(e,t,i){if(i-t==1)return{offset:e[t],index:t+1};let r=Math.ceil((t+i)/2),a=Cy(e,t,r),n=Cy(e,r,i);return{offset:a.offset,low:a,high:n}}function aK(e,t){return(function(i){return Object.prototype.hasOwnProperty.call(i,"index")})(e)?{line:e.index,column:t-e.offset}:aK(e.high.offset<t?e.high:e.low,t)}function Iy(e,t="",i={}){let r=typeof t!="string"?t:i,a=typeof t=="string"?t:"",n=e.map(KEt),s=!!r.lineNumbers;return function(A,c=0){let u=s?OEt(A):()=>({line:0,column:0}),h=c,g=[];t:for(;h<A.length;){let d=!1;for(let E of n){E.regex.lastIndex=h;let B=E.regex.exec(A);if(B&&B[0].length>0){if(!E.discard){let I=u(h),m=typeof E.replace=="string"?B[0].replace(new RegExp(E.regex.source,E.regex.flags),E.replace):B[0];g.push({state:a,name:E.name,text:m,offset:h,len:B[0].length,line:I.line,column:I.column})}if(h=E.regex.lastIndex,d=!0,E.push){let I=E.push(A,h);g.push(...I.tokens),h=I.offset}if(E.pop)break t;break}}if(!d)break}return{tokens:g,offset:h,complete:A.length<=h}}}function KEt(e,t){return{...e,regex:jEt(e,t)}}function jEt(e,t){if(e.name.length===0)throw new Error(`Rule #${t} has empty name, which is not allowed.`);if((function(i){return Object.prototype.hasOwnProperty.call(i,"regex")})(e))return(function(i){if(i.global)throw new Error(`Regular expression /${i.source}/${i.flags} contains the global flag, which is not allowed.`);return i.sticky?i:new RegExp(i.source,i.flags+"y")})(e.regex);if((function(i){return Object.prototype.hasOwnProperty.call(i,"str")})(e)){if(e.str.length===0)throw new Error(`Rule #${t} ("${e.name}") has empty "str" property, which is not allowed.`);return new RegExp(rK(e.str),"y")}return new RegExp(rK(e.name),"y")}function rK(e){return e.replace(/[-[\]{}()*+!<=:?./\\^$|#\s,]/g,"\\$&")}function Un(e,t){return(i,r)=>{let a=r,n;return r<i.tokens.length?(n=e(i.tokens[r],i,r),n!==void 0&&a++):t?.(i,r),n===void 0?{matched:!1}:{matched:!0,position:a,value:n}}}function py(e,t){return e.matched?{matched:!0,position:e.position,value:t(e.value,e.position)}:e}function K2(e,t){return e.matched?t(e):e}function sr(e,t){return(i,r)=>py(e(i,r),(a,n)=>t(a,i,r,n))}function sg(e,t){return(i,r)=>{let a=e(i,r);return a.matched?a:{matched:!0,position:r,value:t}}}function Wc(...e){return(t,i)=>{for(let r of e){let a=r(t,i);if(a.matched)return a}return{matched:!1}}}function HA(e,t){return(i,r)=>{let a=e(i,r);return a.matched?a:t(i,r)}}function WEt(e,t){return(i,r)=>{let a=[],n=!0;do{let s=e(i,r);s.matched&&t(s.value,a.length+1,i,r,s.position)?(a.push(s.value),r=s.position):n=!1}while(n);return{matched:!0,position:r,value:a}}}function j2(e){return WEt(e,()=>!0)}function nK(e){return Er(e,j2(e),(t,i)=>[t,...i])}function Er(e,t,i){return(r,a)=>K2(e(r,a),n=>py(t(r,n.position),(s,A)=>i(n.value,s,r,a,A)))}function sK(e,t){return Er(e,t,i=>i)}function my(e,t){return Er(e,t,(i,r)=>r)}function W2(e,t,i,r){return(a,n)=>K2(e(a,n),s=>K2(t(a,s.position),A=>py(i(a,A.position),(c,u)=>r(s.value,A.value,c,a,n,u))))}function Qy(e,t,i){return W2(e,t,i,(r,a)=>a)}function VEt(...e){return(t,i)=>{let r=[],a=i;for(let n of e){let s=n(t,a);if(s.matched)r.push(s.value),a=s.position;else return{matched:!1}}return{matched:!0,position:a,value:r}}}function AK(...e){return ZEt(VEt(...e))}function ZEt(e){return sr(e,t=>t.flatMap(i=>i))}function zEt(e,t){return(i,r)=>{let a=!0,n=e,s=r;do{let A=t(n,i,s)(i,s);A.matched?(n=A.value,s=A.position):a=!1}while(a);return{matched:!0,position:s,value:n}}}function XEt(e,t,i){return zEt(e,r=>sr(t,(a,n,s,A)=>i(r,a,n,s,A)))}function by(e,t,i){return $Et(e,r=>XEt(r,Er(t,i,(a,n)=>[a,n]),(a,[n,s])=>n(a,s)))}function $Et(e,t){return(i,r)=>K2(e(i,r),a=>t(a.value,i,r,a.position)(i,a.position))}var edt="(?:[ \\t\\r\\n\\f]*)",gK="(?:\\n|\\r\\n|\\r|\\f)",z2="[^\\x00-\\x7F]",cg="(?:\\\\[0-9a-f]{1,6}(?:\\r\\n|[ \\n\\r\\t\\f])?)",ug="(?:\\\\[^\\n\\r\\f0-9a-f])",idt=`(?:[_a-z]|${z2}|${cg}|${ug})`,xK=`(?:[_a-z0-9-]|${z2}|${cg}|${ug})`,rdt=`(?:${xK}+)`,adt=`(?:[-]?${idt}${xK}*)`,ndt=`'([^\\n\\r\\f\\\\']|\\\\${gK}|${z2}|${cg}|${ug})*'`,sdt=`"([^\\n\\r\\f\\\\"]|\\\\${gK}|${z2}|${cg}|${ug})*"`,Adt=Iy([{name:"ws",regex:new RegExp(edt)},{name:"hash",regex:new RegExp(`#${rdt}`,"i")},{name:"ident",regex:new RegExp(adt,"i")},{name:"str1",regex:new RegExp(ndt,"i")},{name:"str2",regex:new RegExp(sdt,"i")},{name:"*"},{name:"."},{name:","},{name:"["},{name:"]"},{name:"="},{name:">"},{name:"|"},{name:"+"},{name:"~"},{name:"^"},{name:"$"}]),odt=Iy([{name:"unicode",regex:new RegExp(cg,"i")},{name:"escape",regex:new RegExp(ug,"i")},{name:"any",regex:new RegExp("[\\s\\S]","i")}]);function EK([e,t,i],[r,a,n]){return[e+r,t+a,i+n]}function cdt(e){return e.reduce(EK,[0,0,0])}var udt=Un(e=>e.name==="unicode"?String.fromCodePoint(parseInt(e.text.slice(1),16)):void 0),ldt=Un(e=>e.name==="escape"?e.text.slice(1):void 0),hdt=Un(e=>e.name==="any"?e.text:void 0),gdt=sr(j2(Wc(udt,ldt,hdt)),e=>e.join(""));function wy(e){let t=odt(e);return gdt({tokens:t.tokens,options:void 0},0).value}function ri(e){return Un(t=>t.name===e?!0:void 0)}var Fy=Un(e=>e.name==="ws"?null:void 0),yy=sg(Fy,null);function Zc(e){return Qy(yy,e,yy)}var og=Un(e=>e.name==="ident"?wy(e.text):void 0),xdt=Un(e=>e.name==="hash"?wy(e.text.slice(1)):void 0),Edt=Un(e=>e.name.startsWith("str")?wy(e.text.slice(1,-1)):void 0),dK=sK(sg(og,""),ri("|")),vy=HA(Er(dK,og,(e,t)=>({name:t,namespace:e})),sr(og,e=>({name:e,namespace:null}))),ddt=HA(Er(dK,ri("*"),e=>({type:"universal",namespace:e,specificity:[0,0,0]})),sr(ri("*"),()=>({type:"universal",namespace:null,specificity:[0,0,0]}))),Bdt=sr(vy,({name:e,namespace:t})=>({type:"tag",name:e,namespace:t,specificity:[0,0,1]})),fdt=Er(ri("."),og,(e,t)=>({type:"class",name:t,specificity:[0,1,0]})),Cdt=sr(xdt,e=>({type:"id",name:e,specificity:[1,0,0]})),oK=Un(e=>{if(e.name==="ident"){if(e.text==="i"||e.text==="I")return"i";if(e.text==="s"||e.text==="S")return"s"}}),Idt=HA(Er(Edt,sg(my(yy,oK),null),(e,t)=>({value:e,modifier:t})),Er(og,sg(my(Fy,oK),null),(e,t)=>({value:e,modifier:t}))),pdt=Wc(sr(ri("="),()=>"="),Er(ri("~"),ri("="),()=>"~="),Er(ri("|"),ri("="),()=>"|="),Er(ri("^"),ri("="),()=>"^="),Er(ri("$"),ri("="),()=>"$="),Er(ri("*"),ri("="),()=>"*=")),mdt=W2(ri("["),Zc(vy),ri("]"),(e,{name:t,namespace:i})=>({type:"attrPresence",name:t,namespace:i,specificity:[0,1,0]})),Qdt=Qy(ri("["),W2(Zc(vy),pdt,Zc(Idt),({name:e,namespace:t},i,{value:r,modifier:a})=>({type:"attrValue",name:e,namespace:t,matcher:i,value:r,modifier:a,specificity:[0,1,0]})),ri("]")),bdt=HA(mdt,Qdt),ydt=HA(ddt,Bdt),cK=Wc(Cdt,fdt,bdt),uK=sr(HA(AK(ydt,j2(cK)),nK(cK)),e=>({type:"compound",list:e,specificity:cdt(e.map(t=>t.specificity))})),Ddt=Wc(sr(ri(">"),()=>">"),sr(ri("+"),()=>"+"),sr(ri("~"),()=>"~"),Er(ri("|"),ri("|"),()=>"||")),wdt=HA(Zc(Ddt),sr(Fy,()=>" ")),Dy=by(uK,sr(wdt,e=>(t,i)=>({type:"compound",list:[...i.list,{type:"combinator",combinator:e,left:t,specificity:t.specificity}],specificity:EK(t.specificity,i.specificity)})),uK),_It=by(sr(Dy,e=>({type:"list",list:[e]})),sr(Zc(ri(",")),()=>(e,t)=>({type:"list",list:[...e.list,t]})),Dy);function Fdt(e,t){if(!(typeof t=="string"||t instanceof String))throw new Error("Expected a selector string. Actual input is not a string!");let i=Adt(t);if(!i.complete)throw new Error(`The input "${t}" was only partially tokenized, stopped at offset ${i.offset}!
|
|
169
169
|
`+lK(t,i.offset));let r=Zc(e)({tokens:i.tokens,options:void 0},0);if(!r.matched)throw new Error(`No match for "${t}" input!`);if(r.position<i.tokens.length){let a=i.tokens[r.position];throw new Error(`The input "${t}" was only partially parsed, stopped at offset ${a.offset}!
|
|
170
170
|
`+lK(t,a.offset,a.len))}return r.value}function lK(e,t,i=1){return`${e.replace(/(\t)|(\r)|(\n)/g,(r,a,n)=>a?"\u2409":n?"\u240D":"\u240A")}
|
|
171
171
|
${"".padEnd(t)}${"^".repeat(i)}`}function BK(e){return Fdt(Dy,e)}function Za(e){if(!e.type)throw new Error("This is not an AST node.");switch(e.type){case"universal":return V2(e.namespace)+"*";case"tag":return V2(e.namespace)+Vc(e.name);case"class":return"."+Vc(e.name);case"id":return"#"+Vc(e.name);case"attrPresence":return`[${V2(e.namespace)}${Vc(e.name)}]`;case"attrValue":return`[${V2(e.namespace)}${Vc(e.name)}${e.matcher}"${vdt(e.value)}"${e.modifier?e.modifier:""}]`;case"combinator":return Za(e.left)+e.combinator;case"compound":return e.list.reduce((t,i)=>i.type==="combinator"?Za(i)+t:t+Za(i),"");case"list":return e.list.map(Za).join(",")}}function V2(e){return e||e===""?Vc(e)+"|":""}function Z2(e){return`\\${e.codePointAt(0).toString(16)} `}function Vc(e){return e.replace(/(^[0-9])|(^-[0-9])|(^-$)|([-0-9a-zA-Z_]|[^\x00-\x7F])|(\x00)|([\x01-\x1f]|\x7f)|([\s\S])/g,(t,i,r,a,n,s,A,c)=>i?Z2(i):r?"-"+Z2(r.slice(1)):a?"\\-":n||(s?"\uFFFD":A?Z2(A):"\\"+c))}function vdt(e){return e.replace(/(")|(\\)|(\x00)|([\x01-\x1f]|\x7f)/g,(t,i,r,a,n)=>i?'\\"':r?"\\\\":a?"\uFFFD":Z2(n))}function Ag(e){if(!e.type)throw new Error("This is not an AST node.");switch(e.type){case"compound":{e.list.forEach(Ag),e.list.sort((t,i)=>fK(hK(t),hK(i)));break}case"combinator":{Ag(e.left);break}case"list":{e.list.forEach(Ag),e.list.sort((t,i)=>Za(t)<Za(i)?-1:1);break}}return e}function hK(e){switch(e.type){case"universal":return[1];case"tag":return[1];case"id":return[2];case"class":return[3,e.name];case"attrPresence":return[4,Za(e)];case"attrValue":return[5,Za(e)];case"combinator":return[15,Za(e)]}}function Sy(e,t){return fK(e,t)}function fK(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("Arguments must be arrays.");let i=e.length<t.length?e.length:t.length;for(let r=0;r<i;r++)if(e[r]!==t[r])return e[r]<t[r]?-1:1;return e.length-t.length}var lg=class{constructor(t){this.branches=zc(kdt(t))}build(t){return t(this.branches)}};function kdt(e){let t=e.length,i=new Array(t);for(let r=0;r<t;r++){let[a,n]=e[r],s=Rdt(BK(a));i[r]={ast:s,terminal:{type:"terminal",valueContainer:{index:r,value:n,specificity:s.specificity}}}}return i}function Rdt(e){return IK(e),Ag(e),e}function IK(e){let t=[];e.list.forEach(i=>{switch(i.type){case"class":t.push({matcher:"~=",modifier:null,name:"class",namespace:null,specificity:i.specificity,type:"attrValue",value:i.name});break;case"id":t.push({matcher:"=",modifier:null,name:"id",namespace:null,specificity:i.specificity,type:"attrValue",value:i.name});break;case"combinator":IK(i.left),t.push(i);break;case"universal":break;default:t.push(i);break}}),e.list=t}function zc(e){let t=[];for(;e.length;){let i=QK(e,s=>!0,pK),{matches:r,nonmatches:a,empty:n}=Ldt(e,i);e=a,r.length&&t.push(Mdt(i,r)),n.length&&t.push(...Ndt(n))}return t}function Ndt(e){let t=[];for(let i of e){let r=i.terminal;if(r.type==="terminal")t.push(r);else{let{matches:a,rest:n}=qdt(r.cont,s=>s.type==="terminal");a.forEach(s=>t.push(s)),n.length&&(r.cont=n,t.push(r))}}return t}function Ldt(e,t){let i=[],r=[],a=[];for(let n of e){let s=n.ast.list;s.length?(s.some(c=>pK(c)===t)?i:r).push(n):a.push(n)}return{matches:i,nonmatches:r,empty:a}}function pK(e){switch(e.type){case"attrPresence":return`attrPresence ${e.name}`;case"attrValue":return`attrValue ${e.name}`;case"combinator":return`combinator ${e.combinator}`;default:return e.type}}function Mdt(e,t){if(e==="tag")return Gdt(t);if(e.startsWith("attrValue "))return Udt(e.substring(10),t);if(e.startsWith("attrPresence "))return Tdt(e.substring(13),t);if(e==="combinator >")return CK(">",t);if(e==="combinator +")return CK("+",t);throw new Error(`Unsupported selector kind: ${e}`)}function Gdt(e){let t=ky(e,r=>r.type==="tag",r=>r.name);return{type:"tagName",variants:Object.entries(t).map(([r,a])=>({type:"variant",value:r,cont:zc(a.items)}))}}function Tdt(e,t){for(let i of t)mK(i,r=>r.type==="attrPresence"&&r.name===e);return{type:"attrPresence",name:e,cont:zc(t)}}function Udt(e,t){let i=ky(t,a=>a.type==="attrValue"&&a.name===e,a=>`${a.matcher} ${a.modifier||""} ${a.value}`),r=[];for(let a of Object.values(i)){let n=a.oneSimpleSelector,s=_dt(n),A=zc(a.items);r.push({type:"matcher",matcher:n.matcher,modifier:n.modifier,value:n.value,predicate:s,cont:A})}return{type:"attrValue",name:e,matchers:r}}function _dt(e){if(e.modifier==="i"){let t=e.value.toLowerCase();switch(e.matcher){case"=":return i=>t===i.toLowerCase();case"~=":return i=>i.toLowerCase().split(/[ \t]+/).includes(t);case"^=":return i=>i.toLowerCase().startsWith(t);case"$=":return i=>i.toLowerCase().endsWith(t);case"*=":return i=>i.toLowerCase().includes(t);case"|=":return i=>{let r=i.toLowerCase();return t===r||r.startsWith(t)&&r[t.length]==="-"}}}else{let t=e.value;switch(e.matcher){case"=":return i=>t===i;case"~=":return i=>i.split(/[ \t]+/).includes(t);case"^=":return i=>i.startsWith(t);case"$=":return i=>i.endsWith(t);case"*=":return i=>i.includes(t);case"|=":return i=>t===i||i.startsWith(t)&&i[t.length]==="-"}}}function CK(e,t){let i=ky(t,a=>a.type==="combinator"&&a.combinator===e,a=>Za(a.left)),r=[];for(let a of Object.values(i)){let n=zc(a.items),s=a.oneSimpleSelector.left;r.push({ast:s,terminal:{type:"popElement",cont:n}})}return{type:"pushElement",combinator:e,cont:zc(r)}}function ky(e,t,i){let r={};for(;e.length;){let a=QK(e,t,i),n=h=>t(h)&&i(h)===a,s=h=>h.ast.list.some(n),{matches:A,rest:c}=Hdt(e,s),u=null;for(let h of A){let g=mK(h,n);u||(u=g)}if(u==null)throw new Error("No simple selector is found.");r[a]={oneSimpleSelector:u,items:A},e=c}return r}function mK(e,t){let i=e.ast.list,r=new Array(i.length),a=-1;for(let s=i.length;s-- >0;)t(i[s])&&(r[s]=!0,a=s);if(a==-1)throw new Error("Couldn't find the required simple selector.");let n=i[a];return e.ast.list=i.filter((s,A)=>!r[A]),n}function QK(e,t,i){let r={};for(let s of e){let A={};for(let c of s.ast.list.filter(t))A[i(c)]=!0;for(let c of Object.keys(A))r[c]?r[c]++:r[c]=1}let a="",n=0;for(let s of Object.entries(r))s[1]>n&&(a=s[0],n=s[1]);return a}function qdt(e,t){let i=[],r=[];for(let a of e)t(a)?i.push(a):r.push(a);return{matches:i,rest:r}}function Hdt(e,t){let i=[],r=[];for(let a of e)t(a)?i.push(a):r.push(a);return{matches:i,rest:r}}var X2=class{constructor(t){this.f=t}pickAll(t){return this.f(t)}pick1(t,i=!1){let r=this.f(t),a=r.length;if(a===0)return null;if(a===1)return r[0].value;let n=i?Jdt:Pdt,s=r[0];for(let A=1;A<a;A++){let c=r[A];n(s,c)&&(s=c)}return s.value}};function Jdt(e,t){let i=Sy(t.specificity,e.specificity);return i>0||i===0&&t.index<e.index}function Pdt(e,t){let i=Sy(t.specificity,e.specificity);return i>0||i===0&&t.index>e.index}function Ry(e){return new X2(Xc(e))}function Xc(e){let t=e.map(Ydt);return(i,...r)=>t.flatMap(a=>a(i,...r))}function Ydt(e){switch(e.type){case"terminal":{let t=[e.valueContainer];return(i,...r)=>t}case"tagName":return Odt(e);case"attrValue":return jdt(e);case"attrPresence":return Kdt(e);case"pushElement":return Wdt(e);case"popElement":return Zdt(e)}}function Odt(e){let t={};for(let i of e.variants)t[i.value]=Xc(i.cont);return(i,...r)=>{let a=t[i.name];return a?a(i,...r):[]}}function Kdt(e){let t=e.name,i=Xc(e.cont);return(r,...a)=>Object.prototype.hasOwnProperty.call(r.attribs,t)?i(r,...a):[]}function jdt(e){let t=[];for(let r of e.matchers){let a=r.predicate,n=Xc(r.cont);t.push((s,A,...c)=>a(s)?n(A,...c):[])}let i=e.name;return(r,...a)=>{let n=r.attribs[i];return n||n===""?t.flatMap(s=>s(n,r,...a)):[]}}function Wdt(e){let t=Xc(e.cont),i=e.combinator==="+"?bK:Vdt;return(r,...a)=>{let n=i(r);return n===null?[]:t(n,r,...a)}}var bK=e=>{let t=e.prev;return t===null?null:Fs(t)?t:bK(t)},Vdt=e=>{let t=e.parent;return t&&Fs(t)?t:null};function Zdt(e){let t=Xc(e.cont);return(i,r,...a)=>t(r,...a)}var $2=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(e=>e.charCodeAt(0)));var tB=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(e=>e.charCodeAt(0)));var Ny,zdt=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),$c=(Ny=String.fromCodePoint)!==null&&Ny!==void 0?Ny:function(e){let t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function hg(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=zdt.get(e))!==null&&t!==void 0?t:e}var Wi;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(Wi||(Wi={}));var Xdt=32,Ra;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Ra||(Ra={}));function Ly(e){return e>=Wi.ZERO&&e<=Wi.NINE}function $dt(e){return e>=Wi.UPPER_A&&e<=Wi.UPPER_F||e>=Wi.LOWER_A&&e<=Wi.LOWER_F}function t2t(e){return e>=Wi.UPPER_A&&e<=Wi.UPPER_Z||e>=Wi.LOWER_A&&e<=Wi.LOWER_Z||Ly(e)}function e2t(e){return e===Wi.EQUALS||t2t(e)}var ji;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(ji||(ji={}));var vs;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(vs||(vs={}));var eB=class{constructor(t,i,r){this.decodeTree=t,this.emitCodePoint=i,this.errors=r,this.state=ji.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=vs.Strict}startEntity(t){this.decodeMode=t,this.state=ji.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,i){switch(this.state){case ji.EntityStart:return t.charCodeAt(i)===Wi.NUM?(this.state=ji.NumericStart,this.consumed+=1,this.stateNumericStart(t,i+1)):(this.state=ji.NamedEntity,this.stateNamedEntity(t,i));case ji.NumericStart:return this.stateNumericStart(t,i);case ji.NumericDecimal:return this.stateNumericDecimal(t,i);case ji.NumericHex:return this.stateNumericHex(t,i);case ji.NamedEntity:return this.stateNamedEntity(t,i)}}stateNumericStart(t,i){return i>=t.length?-1:(t.charCodeAt(i)|Xdt)===Wi.LOWER_X?(this.state=ji.NumericHex,this.consumed+=1,this.stateNumericHex(t,i+1)):(this.state=ji.NumericDecimal,this.stateNumericDecimal(t,i))}addToNumericResult(t,i,r,a){if(i!==r){let n=r-i;this.result=this.result*Math.pow(a,n)+parseInt(t.substr(i,n),a),this.consumed+=n}}stateNumericHex(t,i){let r=i;for(;i<t.length;){let a=t.charCodeAt(i);if(Ly(a)||$dt(a))i+=1;else return this.addToNumericResult(t,r,i,16),this.emitNumericEntity(a,3)}return this.addToNumericResult(t,r,i,16),-1}stateNumericDecimal(t,i){let r=i;for(;i<t.length;){let a=t.charCodeAt(i);if(Ly(a))i+=1;else return this.addToNumericResult(t,r,i,10),this.emitNumericEntity(a,2)}return this.addToNumericResult(t,r,i,10),-1}emitNumericEntity(t,i){var r;if(this.consumed<=i)return(r=this.errors)===null||r===void 0||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===Wi.SEMI)this.consumed+=1;else if(this.decodeMode===vs.Strict)return 0;return this.emitCodePoint(hg(this.result),this.consumed),this.errors&&(t!==Wi.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,i){let{decodeTree:r}=this,a=r[this.treeIndex],n=(a&Ra.VALUE_LENGTH)>>14;for(;i<t.length;i++,this.excess++){let s=t.charCodeAt(i);if(this.treeIndex=My(r,a,this.treeIndex+Math.max(1,n),s),this.treeIndex<0)return this.result===0||this.decodeMode===vs.Attribute&&(n===0||e2t(s))?0:this.emitNotTerminatedNamedEntity();if(a=r[this.treeIndex],n=(a&Ra.VALUE_LENGTH)>>14,n!==0){if(s===Wi.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==vs.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;let{result:i,decodeTree:r}=this,a=(r[i]&Ra.VALUE_LENGTH)>>14;return this.emitNamedEntityData(i,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,i,r){let{decodeTree:a}=this;return this.emitCodePoint(i===1?a[t]&~Ra.VALUE_LENGTH:a[t+1],r),i===3&&this.emitCodePoint(a[t+2],r),r}end(){var t;switch(this.state){case ji.NamedEntity:return this.result!==0&&(this.decodeMode!==vs.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case ji.NumericDecimal:return this.emitNumericEntity(0,2);case ji.NumericHex:return this.emitNumericEntity(0,3);case ji.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case ji.EntityStart:return 0}}};function yK(e){let t="",i=new eB(e,r=>t+=$c(r));return function(a,n){let s=0,A=0;for(;(A=a.indexOf("&",A))>=0;){t+=a.slice(s,A),i.startEntity(n);let u=i.write(a,A+1);if(u<0){s=A+i.end();break}s=A+u,A=u===0?s+1:s}let c=t+a.slice(s);return t="",c}}function My(e,t,i,r){let a=(t&Ra.BRANCH_LENGTH)>>7,n=t&Ra.JUMP_TABLE;if(a===0)return n!==0&&r===n?i:-1;if(n){let c=r-n;return c<0||c>=a?-1:e[i+c]-1}let s=i,A=s+a-1;for(;s<=A;){let c=s+A>>>1,u=e[c];if(u<r)s=c+1;else if(u>r)A=c-1;else return e[c+a]}return-1}var XIt=yK($2),$It=yK(tB);var jt;(function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"})(jt||(jt={}));var Ft;(function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"})(Ft||(Ft={}));function Ss(e){return e===jt.Space||e===jt.NewLine||e===jt.Tab||e===jt.FormFeed||e===jt.CarriageReturn}function iB(e){return e===jt.Slash||e===jt.Gt||Ss(e)}function DK(e){return e>=jt.Zero&&e<=jt.Nine}function i2t(e){return e>=jt.LowerA&&e<=jt.LowerZ||e>=jt.UpperA&&e<=jt.UpperZ}function r2t(e){return e>=jt.UpperA&&e<=jt.UpperF||e>=jt.LowerA&&e<=jt.LowerF}var za;(function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"})(za||(za={}));var Or={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},tu=class{constructor({xmlMode:t=!1,decodeEntities:i=!0},r){this.cbs=r,this.state=Ft.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=Ft.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=t,this.decodeEntities=i,this.entityTrie=t?tB:$2}reset(){this.state=Ft.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=Ft.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(t){this.offset+=this.buffer.length,this.buffer=t,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}getIndex(){return this.index}getSectionStart(){return this.sectionStart}stateText(t){t===jt.Lt||!this.decodeEntities&&this.fastForwardTo(jt.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=Ft.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&t===jt.Amp&&(this.state=Ft.BeforeEntity)}stateSpecialStartSequence(t){let i=this.sequenceIndex===this.currentSequence.length;if(!(i?iB(t):(t|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!i){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=Ft.InTagName,this.stateInTagName(t)}stateInSpecialTag(t){if(this.sequenceIndex===this.currentSequence.length){if(t===jt.Gt||Ss(t)){let i=this.index-this.currentSequence.length;if(this.sectionStart<i){let r=this.index;this.index=i,this.cbs.ontext(this.sectionStart,i),this.index=r}this.isSpecial=!1,this.sectionStart=i+2,this.stateInClosingTagName(t);return}this.sequenceIndex=0}(t|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===Or.TitleEnd?this.decodeEntities&&t===jt.Amp&&(this.state=Ft.BeforeEntity):this.fastForwardTo(jt.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(t===jt.Lt)}stateCDATASequence(t){t===Or.Cdata[this.sequenceIndex]?++this.sequenceIndex===Or.Cdata.length&&(this.state=Ft.InCommentLike,this.currentSequence=Or.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=Ft.InDeclaration,this.stateInDeclaration(t))}fastForwardTo(t){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===t)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(t){t===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===Or.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=Ft.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):t!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(t){return this.xmlMode?!iB(t):i2t(t)}startSpecial(t,i){this.isSpecial=!0,this.currentSequence=t,this.sequenceIndex=i,this.state=Ft.SpecialStartSequence}stateBeforeTagName(t){if(t===jt.ExclamationMark)this.state=Ft.BeforeDeclaration,this.sectionStart=this.index+1;else if(t===jt.Questionmark)this.state=Ft.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(t)){let i=t|32;this.sectionStart=this.index,!this.xmlMode&&i===Or.TitleEnd[2]?this.startSpecial(Or.TitleEnd,3):this.state=!this.xmlMode&&i===Or.ScriptEnd[2]?Ft.BeforeSpecialS:Ft.InTagName}else t===jt.Slash?this.state=Ft.BeforeClosingTagName:(this.state=Ft.Text,this.stateText(t))}stateInTagName(t){iB(t)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=Ft.BeforeAttributeName,this.stateBeforeAttributeName(t))}stateBeforeClosingTagName(t){Ss(t)||(t===jt.Gt?this.state=Ft.Text:(this.state=this.isTagStartChar(t)?Ft.InClosingTagName:Ft.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(t){(t===jt.Gt||Ss(t))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=Ft.AfterClosingTagName,this.stateAfterClosingTagName(t))}stateAfterClosingTagName(t){(t===jt.Gt||this.fastForwardTo(jt.Gt))&&(this.state=Ft.Text,this.baseState=Ft.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(t){t===jt.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=Ft.InSpecialTag,this.sequenceIndex=0):this.state=Ft.Text,this.baseState=this.state,this.sectionStart=this.index+1):t===jt.Slash?this.state=Ft.InSelfClosingTag:Ss(t)||(this.state=Ft.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(t){t===jt.Gt?(this.cbs.onselfclosingtag(this.index),this.state=Ft.Text,this.baseState=Ft.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Ss(t)||(this.state=Ft.BeforeAttributeName,this.stateBeforeAttributeName(t))}stateInAttributeName(t){(t===jt.Eq||iB(t))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=Ft.AfterAttributeName,this.stateAfterAttributeName(t))}stateAfterAttributeName(t){t===jt.Eq?this.state=Ft.BeforeAttributeValue:t===jt.Slash||t===jt.Gt?(this.cbs.onattribend(za.NoValue,this.index),this.state=Ft.BeforeAttributeName,this.stateBeforeAttributeName(t)):Ss(t)||(this.cbs.onattribend(za.NoValue,this.index),this.state=Ft.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(t){t===jt.DoubleQuote?(this.state=Ft.InAttributeValueDq,this.sectionStart=this.index+1):t===jt.SingleQuote?(this.state=Ft.InAttributeValueSq,this.sectionStart=this.index+1):Ss(t)||(this.sectionStart=this.index,this.state=Ft.InAttributeValueNq,this.stateInAttributeValueNoQuotes(t))}handleInAttributeValue(t,i){t===i||!this.decodeEntities&&this.fastForwardTo(i)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(i===jt.DoubleQuote?za.Double:za.Single,this.index),this.state=Ft.BeforeAttributeName):this.decodeEntities&&t===jt.Amp&&(this.baseState=this.state,this.state=Ft.BeforeEntity)}stateInAttributeValueDoubleQuotes(t){this.handleInAttributeValue(t,jt.DoubleQuote)}stateInAttributeValueSingleQuotes(t){this.handleInAttributeValue(t,jt.SingleQuote)}stateInAttributeValueNoQuotes(t){Ss(t)||t===jt.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(za.Unquoted,this.index),this.state=Ft.BeforeAttributeName,this.stateBeforeAttributeName(t)):this.decodeEntities&&t===jt.Amp&&(this.baseState=this.state,this.state=Ft.BeforeEntity)}stateBeforeDeclaration(t){t===jt.OpeningSquareBracket?(this.state=Ft.CDATASequence,this.sequenceIndex=0):this.state=t===jt.Dash?Ft.BeforeComment:Ft.InDeclaration}stateInDeclaration(t){(t===jt.Gt||this.fastForwardTo(jt.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=Ft.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(t){(t===jt.Gt||this.fastForwardTo(jt.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=Ft.Text,this.sectionStart=this.index+1)}stateBeforeComment(t){t===jt.Dash?(this.state=Ft.InCommentLike,this.currentSequence=Or.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=Ft.InDeclaration}stateInSpecialComment(t){(t===jt.Gt||this.fastForwardTo(jt.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=Ft.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(t){let i=t|32;i===Or.ScriptEnd[3]?this.startSpecial(Or.ScriptEnd,4):i===Or.StyleEnd[3]?this.startSpecial(Or.StyleEnd,4):(this.state=Ft.InTagName,this.stateInTagName(t))}stateBeforeEntity(t){this.entityExcess=1,this.entityResult=0,t===jt.Number?this.state=Ft.BeforeNumericEntity:t===jt.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=Ft.InNamedEntity,this.stateInNamedEntity(t))}stateInNamedEntity(t){if(this.entityExcess+=1,this.trieIndex=My(this.entityTrie,this.trieCurrent,this.trieIndex+1,t),this.trieIndex<0){this.emitNamedEntity(),this.index--;return}this.trieCurrent=this.entityTrie[this.trieIndex];let i=this.trieCurrent&Ra.VALUE_LENGTH;if(i){let r=(i>>14)-1;if(!this.allowLegacyEntity()&&t!==jt.Semi)this.trieIndex+=r;else{let a=this.index-this.entityExcess+1;a>this.sectionStart&&this.emitPartial(this.sectionStart,a),this.entityResult=this.trieIndex,this.trieIndex+=r,this.entityExcess=0,this.sectionStart=this.index+1,r===0&&this.emitNamedEntity()}}}emitNamedEntity(){if(this.state=this.baseState,this.entityResult===0)return;switch((this.entityTrie[this.entityResult]&Ra.VALUE_LENGTH)>>14){case 1:{this.emitCodePoint(this.entityTrie[this.entityResult]&~Ra.VALUE_LENGTH);break}case 2:{this.emitCodePoint(this.entityTrie[this.entityResult+1]);break}case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(t){(t|32)===jt.LowerX?(this.entityExcess++,this.state=Ft.InHexEntity):(this.state=Ft.InNumericEntity,this.stateInNumericEntity(t))}emitNumericEntity(t){let i=this.index-this.entityExcess-1;i+2+ +(this.state===Ft.InHexEntity)!==this.index&&(i>this.sectionStart&&this.emitPartial(this.sectionStart,i),this.sectionStart=this.index+Number(t),this.emitCodePoint(hg(this.entityResult))),this.state=this.baseState}stateInNumericEntity(t){t===jt.Semi?this.emitNumericEntity(!0):DK(t)?(this.entityResult=this.entityResult*10+(t-jt.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(t){t===jt.Semi?this.emitNumericEntity(!0):DK(t)?(this.entityResult=this.entityResult*16+(t-jt.Zero),this.entityExcess++):r2t(t)?(this.entityResult=this.entityResult*16+((t|32)-jt.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===Ft.Text||this.baseState===Ft.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===Ft.Text||this.state===Ft.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===Ft.InAttributeValueDq||this.state===Ft.InAttributeValueSq||this.state===Ft.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){let t=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case Ft.Text:{this.stateText(t);break}case Ft.SpecialStartSequence:{this.stateSpecialStartSequence(t);break}case Ft.InSpecialTag:{this.stateInSpecialTag(t);break}case Ft.CDATASequence:{this.stateCDATASequence(t);break}case Ft.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(t);break}case Ft.InAttributeName:{this.stateInAttributeName(t);break}case Ft.InCommentLike:{this.stateInCommentLike(t);break}case Ft.InSpecialComment:{this.stateInSpecialComment(t);break}case Ft.BeforeAttributeName:{this.stateBeforeAttributeName(t);break}case Ft.InTagName:{this.stateInTagName(t);break}case Ft.InClosingTagName:{this.stateInClosingTagName(t);break}case Ft.BeforeTagName:{this.stateBeforeTagName(t);break}case Ft.AfterAttributeName:{this.stateAfterAttributeName(t);break}case Ft.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(t);break}case Ft.BeforeAttributeValue:{this.stateBeforeAttributeValue(t);break}case Ft.BeforeClosingTagName:{this.stateBeforeClosingTagName(t);break}case Ft.AfterClosingTagName:{this.stateAfterClosingTagName(t);break}case Ft.BeforeSpecialS:{this.stateBeforeSpecialS(t);break}case Ft.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(t);break}case Ft.InSelfClosingTag:{this.stateInSelfClosingTag(t);break}case Ft.InDeclaration:{this.stateInDeclaration(t);break}case Ft.BeforeDeclaration:{this.stateBeforeDeclaration(t);break}case Ft.BeforeComment:{this.stateBeforeComment(t);break}case Ft.InProcessingInstruction:{this.stateInProcessingInstruction(t);break}case Ft.InNamedEntity:{this.stateInNamedEntity(t);break}case Ft.BeforeEntity:{this.stateBeforeEntity(t);break}case Ft.InHexEntity:{this.stateInHexEntity(t);break}case Ft.InNumericEntity:{this.stateInNumericEntity(t);break}default:this.stateBeforeNumericEntity(t)}this.index++}this.cleanup()}finish(){this.state===Ft.InNamedEntity&&this.emitNamedEntity(),this.sectionStart<this.index&&this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let t=this.buffer.length+this.offset;this.state===Ft.InCommentLike?this.currentSequence===Or.CdataEnd?this.cbs.oncdata(this.sectionStart,t,0):this.cbs.oncomment(this.sectionStart,t,0):this.state===Ft.InNumericEntity&&this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state===Ft.InHexEntity&&this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state===Ft.InTagName||this.state===Ft.BeforeAttributeName||this.state===Ft.BeforeAttributeValue||this.state===Ft.AfterAttributeName||this.state===Ft.InAttributeName||this.state===Ft.InAttributeValueSq||this.state===Ft.InAttributeValueDq||this.state===Ft.InAttributeValueNq||this.state===Ft.InClosingTagName||this.cbs.ontext(this.sectionStart,t)}emitPartial(t,i){this.baseState!==Ft.Text&&this.baseState!==Ft.InSpecialTag?this.cbs.onattribdata(t,i):this.cbs.ontext(t,i)}emitCodePoint(t){this.baseState!==Ft.Text&&this.baseState!==Ft.InSpecialTag?this.cbs.onattribentity(t):this.cbs.ontextentity(t)}};var eu=new Set(["input","option","optgroup","select","button","datalist","textarea"]),Ke=new Set(["p"]),wK=new Set(["thead","tbody"]),FK=new Set(["dd","dt"]),vK=new Set(["rt","rp"]),a2t=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",Ke],["h1",Ke],["h2",Ke],["h3",Ke],["h4",Ke],["h5",Ke],["h6",Ke],["select",eu],["input",eu],["output",eu],["button",eu],["datalist",eu],["textarea",eu],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",FK],["dt",FK],["address",Ke],["article",Ke],["aside",Ke],["blockquote",Ke],["details",Ke],["div",Ke],["dl",Ke],["fieldset",Ke],["figcaption",Ke],["figure",Ke],["footer",Ke],["form",Ke],["header",Ke],["hr",Ke],["main",Ke],["nav",Ke],["ol",Ke],["pre",Ke],["section",Ke],["table",Ke],["ul",Ke],["rt",vK],["rp",vK],["tbody",wK],["tfoot",wK]]),n2t=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),SK=new Set(["math","svg"]),kK=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),s2t=/\s|\//,gg=class{constructor(t,i={}){var r,a,n,s,A;this.options=i,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.foreignContext=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=t??{},this.lowerCaseTagNames=(r=i.lowerCaseTags)!==null&&r!==void 0?r:!i.xmlMode,this.lowerCaseAttributeNames=(a=i.lowerCaseAttributeNames)!==null&&a!==void 0?a:!i.xmlMode,this.tokenizer=new((n=i.Tokenizer)!==null&&n!==void 0?n:tu)(this.options,this),(A=(s=this.cbs).onparserinit)===null||A===void 0||A.call(s,this)}ontext(t,i){var r,a;let n=this.getSlice(t,i);this.endIndex=i-1,(a=(r=this.cbs).ontext)===null||a===void 0||a.call(r,n),this.startIndex=i}ontextentity(t){var i,r;let a=this.tokenizer.getSectionStart();this.endIndex=a-1,(r=(i=this.cbs).ontext)===null||r===void 0||r.call(i,$c(t)),this.startIndex=a}isVoidElement(t){return!this.options.xmlMode&&n2t.has(t)}onopentagname(t,i){this.endIndex=i;let r=this.getSlice(t,i);this.lowerCaseTagNames&&(r=r.toLowerCase()),this.emitOpenTag(r)}emitOpenTag(t){var i,r,a,n;this.openTagStart=this.startIndex,this.tagname=t;let s=!this.options.xmlMode&&a2t.get(t);if(s)for(;this.stack.length>0&&s.has(this.stack[this.stack.length-1]);){let A=this.stack.pop();(r=(i=this.cbs).onclosetag)===null||r===void 0||r.call(i,A,!0)}this.isVoidElement(t)||(this.stack.push(t),SK.has(t)?this.foreignContext.push(!0):kK.has(t)&&this.foreignContext.push(!1)),(n=(a=this.cbs).onopentagname)===null||n===void 0||n.call(a,t),this.cbs.onopentag&&(this.attribs={})}endOpenTag(t){var i,r;this.startIndex=this.openTagStart,this.attribs&&((r=(i=this.cbs).onopentag)===null||r===void 0||r.call(i,this.tagname,this.attribs,t),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(t){this.endIndex=t,this.endOpenTag(!1),this.startIndex=t+1}onclosetag(t,i){var r,a,n,s,A,c;this.endIndex=i;let u=this.getSlice(t,i);if(this.lowerCaseTagNames&&(u=u.toLowerCase()),(SK.has(u)||kK.has(u))&&this.foreignContext.pop(),this.isVoidElement(u))!this.options.xmlMode&&u==="br"&&((a=(r=this.cbs).onopentagname)===null||a===void 0||a.call(r,"br"),(s=(n=this.cbs).onopentag)===null||s===void 0||s.call(n,"br",{},!0),(c=(A=this.cbs).onclosetag)===null||c===void 0||c.call(A,"br",!1));else{let h=this.stack.lastIndexOf(u);if(h!==-1)if(this.cbs.onclosetag){let g=this.stack.length-h;for(;g--;)this.cbs.onclosetag(this.stack.pop(),g!==0)}else this.stack.length=h;else!this.options.xmlMode&&u==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=i+1}onselfclosingtag(t){this.endIndex=t,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=t+1):this.onopentagend(t)}closeCurrentTag(t){var i,r;let a=this.tagname;this.endOpenTag(t),this.stack[this.stack.length-1]===a&&((r=(i=this.cbs).onclosetag)===null||r===void 0||r.call(i,a,!t),this.stack.pop())}onattribname(t,i){this.startIndex=t;let r=this.getSlice(t,i);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r}onattribdata(t,i){this.attribvalue+=this.getSlice(t,i)}onattribentity(t){this.attribvalue+=$c(t)}onattribend(t,i){var r,a;this.endIndex=i,(a=(r=this.cbs).onattribute)===null||a===void 0||a.call(r,this.attribname,this.attribvalue,t===za.Double?'"':t===za.Single?"'":t===za.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(t){let i=t.search(s2t),r=i<0?t:t.substr(0,i);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r}ondeclaration(t,i){this.endIndex=i;let r=this.getSlice(t,i);if(this.cbs.onprocessinginstruction){let a=this.getInstructionName(r);this.cbs.onprocessinginstruction(`!${a}`,`!${r}`)}this.startIndex=i+1}onprocessinginstruction(t,i){this.endIndex=i;let r=this.getSlice(t,i);if(this.cbs.onprocessinginstruction){let a=this.getInstructionName(r);this.cbs.onprocessinginstruction(`?${a}`,`?${r}`)}this.startIndex=i+1}oncomment(t,i,r){var a,n,s,A;this.endIndex=i,(n=(a=this.cbs).oncomment)===null||n===void 0||n.call(a,this.getSlice(t,i-r)),(A=(s=this.cbs).oncommentend)===null||A===void 0||A.call(s),this.startIndex=i+1}oncdata(t,i,r){var a,n,s,A,c,u,h,g,d,E;this.endIndex=i;let B=this.getSlice(t,i-r);this.options.xmlMode||this.options.recognizeCDATA?((n=(a=this.cbs).oncdatastart)===null||n===void 0||n.call(a),(A=(s=this.cbs).ontext)===null||A===void 0||A.call(s,B),(u=(c=this.cbs).oncdataend)===null||u===void 0||u.call(c)):((g=(h=this.cbs).oncomment)===null||g===void 0||g.call(h,`[CDATA[${B}]]`),(E=(d=this.cbs).oncommentend)===null||E===void 0||E.call(d)),this.startIndex=i+1}onend(){var t,i;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let r=this.stack.length;r>0;this.cbs.onclosetag(this.stack[--r],!0));}(i=(t=this.cbs).onend)===null||i===void 0||i.call(t)}reset(){var t,i,r,a;(i=(t=this.cbs).onreset)===null||i===void 0||i.call(t),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(a=(r=this.cbs).onparserinit)===null||a===void 0||a.call(r,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(t){this.reset(),this.end(t)}getSlice(t,i){for(;t-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let r=this.buffers[0].slice(t-this.bufferOffset,i-this.bufferOffset);for(;i-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,i-this.bufferOffset);return r}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(t){var i,r;if(this.ended){(r=(i=this.cbs).onerror)===null||r===void 0||r.call(i,new Error(".write() after done!"));return}this.buffers.push(t),this.tokenizer.running&&(this.tokenizer.write(t),this.writeIndex++)}end(t){var i,r;if(this.ended){(r=(i=this.cbs).onerror)===null||r===void 0||r.call(i,new Error(".end() after done!"));return}t&&this.write(t),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(t){this.write(t)}done(t){this.end(t)}};function rB(e){for(let t=1;t<e.length;t++)e[t][0]+=e[t-1][0]+1;return e}var A2t=new Map(rB([[9,"	"],[0,"
"],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[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,"À"],[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,"à"],[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,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[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,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[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,"Ю"],[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,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[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,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(rB([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(rB([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[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,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[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,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[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,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[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,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(rB([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[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,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[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,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]]));var Gy=/["&'<>$\x80-\uFFFF]/g,RK=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),NK=String.prototype.codePointAt!=null?(e,t)=>e.codePointAt(t):(e,t)=>(e.charCodeAt(t)&64512)===55296?(e.charCodeAt(t)-55296)*1024+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t);function xg(e){let t="",i=0,r;for(;(r=Gy.exec(e))!==null;){let a=r.index,n=e.charCodeAt(a),s=RK.get(n);s!==void 0?(t+=e.substring(i,a)+s,i=a+1):(t+=`${e.substring(i,a)}&#x${NK(e,a).toString(16)};`,i=Gy.lastIndex+=+((n&64512)===55296))}return t+e.substr(i)}function Ty(e,t){return function(r){let a,n=0,s="";for(;a=e.exec(r);)n!==a.index&&(s+=r.substring(n,a.index)),s+=t.get(a[0].charCodeAt(0)),n=a.index+1;return s+r.substring(n)}}var LK=Ty(/[&<>'"]/g,RK),aB=Ty(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),nB=Ty(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var MK;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(MK||(MK={}));var GK;(function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"})(GK||(GK={}));var _K=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),qK=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e]));var c2t=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function u2t(e){return e.replace(/"/g,""")}function l2t(e,t){var i;if(!e)return;let r=((i=t.encodeEntities)!==null&&i!==void 0?i:t.decodeEntities)===!1?u2t:t.xmlMode||t.encodeEntities!=="utf8"?xg:aB;return Object.keys(e).map(a=>{var n,s;let A=(n=e[a])!==null&&n!==void 0?n:"";return t.xmlMode==="foreign"&&(a=(s=qK.get(a))!==null&&s!==void 0?s:a),!t.emptyAttrs&&!t.xmlMode&&A===""?a:`${a}="${r(A)}"`}).join(" ")}var HK=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function Eg(e,t={}){let i="length"in e?e:[e],r="";for(let a=0;a<i.length;a++)r+=h2t(i[a],t);return r}function h2t(e,t){switch(e.type){case YO:return Eg(e.children,t);case XO:case KO:return d2t(e);case jO:return C2t(e);case zO:return f2t(e);case WO:case VO:case ZO:return E2t(e,t);case OO:return B2t(e,t)}}var g2t=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),x2t=new Set(["svg","math"]);function E2t(e,t){var i;t.xmlMode==="foreign"&&(e.name=(i=_K.get(e.name))!==null&&i!==void 0?i:e.name,e.parent&&g2t.has(e.parent.name)&&(t={...t,xmlMode:!1})),!t.xmlMode&&x2t.has(e.name)&&(t={...t,xmlMode:"foreign"});let r=`<${e.name}`,a=l2t(e.attribs,t);return a&&(r+=` ${a}`),e.children.length===0&&(t.xmlMode?t.selfClosingTags!==!1:t.selfClosingTags&&HK.has(e.name))?(t.xmlMode||(r+=" "),r+="/>"):(r+=">",e.children.length>0&&(r+=Eg(e.children,t)),(t.xmlMode||!HK.has(e.name))&&(r+=`</${e.name}>`)),r}function d2t(e){return`<${e.data}>`}function B2t(e,t){var i;let r=e.data||"";return((i=t.encodeEntities)!==null&&i!==void 0?i:t.decodeEntities)!==!1&&!(!t.xmlMode&&e.parent&&c2t.has(e.parent.name))&&(r=t.xmlMode||t.encodeEntities!=="utf8"?xg(r):nB(r)),r}function f2t(e){return`<![CDATA[${e.children[0].data}]]>`}function C2t(e){return`<!--${e.data}-->`}var JK;(function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"})(JK||(JK={}));function PK(e,t){let i=new jc(void 0,t);return new gg(i,t).end(e),i.root}var Ky=Us(_5(),1);function jy(e,t,i=()=>{}){if(e===void 0){let r=function(...a){return t(r,...a)};return r}return e>=0?function(...r){return t(jy(e-1,t,i),...r)}:i}function WK(e,t){let i=0,r=e.length;for(;i<r&&e[i]===t;)++i;for(;r>i&&e[r-1]===t;)--r;return i>0||r<e.length?e.substring(i,r):e}function m2t(e,t){let i=e.length;for(;i>0&&e[i-1]===t;)--i;return i<e.length?e.substring(0,i):e}function Q2t(e){return e.replace(/[\s\S]/g,t=>"\\u"+t.charCodeAt().toString(16).padStart(4,"0"))}function VK(e,t){let i=new Map;for(let r=e.length;r-- >0;){let a=e[r],n=t(a);i.set(n,i.has(n)?(0,Ky.default)(a,i.get(n),{arrayMerge:b2t}):a)}return[...i.values()].reverse()}var b2t=(e,t,i)=>[...t];function iu(e,t){for(let i of t){if(!e)return;e=e[i]}return e}function YK(e,t="a",i=26){let r=[];do e-=1,r.push(e%i),e=e/i>>0;while(e>0);let a=t.charCodeAt(0);return r.reverse().map(n=>String.fromCharCode(a+n)).join("")}var qy=["I","X","C","M"],OK=["V","L","D"];function KK(e){return[...e+""].map(t=>+t).reverse().map((t,i)=>t%5<4?(t<5?"":OK[i])+qy[i].repeat(t%5):qy[i]+(t<5?OK[i]:qy[i+1])).reverse().join("")}var oB=class{constructor(t,i=void 0){this.lines=[],this.nextLineWords=[],this.maxLineLength=i||t.wordwrap||Number.MAX_VALUE,this.nextLineAvailableChars=this.maxLineLength,this.wrapCharacters=iu(t,["longWordSplit","wrapCharacters"])||[],this.forceWrapOnLimit=iu(t,["longWordSplit","forceWrapOnLimit"])||!1,this.stashedSpace=!1,this.wordBreakOpportunity=!1}pushWord(t,i=!1){this.nextLineAvailableChars<=0&&!i&&this.startNewLine();let r=this.nextLineWords.length===0,a=t.length+(r?0:1);if(a<=this.nextLineAvailableChars||i)this.nextLineWords.push(t),this.nextLineAvailableChars-=a;else{let[n,...s]=this.splitLongWord(t);r||this.startNewLine(),this.nextLineWords.push(n),this.nextLineAvailableChars-=n.length;for(let A of s)this.startNewLine(),this.nextLineWords.push(A),this.nextLineAvailableChars-=A.length}}popWord(){let t=this.nextLineWords.pop();if(t!==void 0){let i=this.nextLineWords.length===0,r=t.length+(i?0:1);this.nextLineAvailableChars+=r}return t}concatWord(t,i=!1){if(this.wordBreakOpportunity&&t.length>this.nextLineAvailableChars)this.pushWord(t,i),this.wordBreakOpportunity=!1;else{let r=this.popWord();this.pushWord(r?r.concat(t):t,i)}}startNewLine(t=1){this.lines.push(this.nextLineWords),t>1&&this.lines.push(...Array.from({length:t-1},()=>[])),this.nextLineWords=[],this.nextLineAvailableChars=this.maxLineLength}isEmpty(){return this.lines.length===0&&this.nextLineWords.length===0}clear(){this.lines.length=0,this.nextLineWords.length=0,this.nextLineAvailableChars=this.maxLineLength}toString(){return[...this.lines,this.nextLineWords].map(t=>t.join(" ")).join(`
|
|
@@ -184,7 +184,7 @@ ${"".padEnd(t)}${"^".repeat(i)}`}function BK(e){return Fdt(Dy,e)}function Za(e){
|
|
|
184
184
|
`):a).split(`
|
|
185
185
|
`).map(n=>"> "+n).join(`
|
|
186
186
|
`)})}function Oy(e,t){if(!t)return e;let i=typeof t[0]=="string"?t[0]:"[",r=typeof t[1]=="string"?t[1]:"]";return i+e+r}function $K(e,t,i,r,a){let n=typeof t=="function"?t(e,r,a):e;return n[0]==="/"&&i?m2t(i,"/")+n:n}function $2t(e,t,i,r){let a=e.attribs||{},n=a.alt?a.alt:"",s=a.src?$K(a.src,r.pathRewrite,r.baseUrl,i.metadata,e):"",A=s?n?n+" "+Oy(s,r.linkBrackets):Oy(s,r.linkBrackets):n;i.addInline(A,{noWordTransform:!0})}function tBt(e,t,i,r){function a(){if(r.ignoreHref||!e.attribs||!e.attribs.href)return"";let s=e.attribs.href.replace(/^mailto:/,"");return r.noAnchorUrl&&s[0]==="#"?"":(s=$K(s,r.pathRewrite,r.baseUrl,i.metadata,e),s)}let n=a();if(!n)t(e.children,i);else{let s="";i.pushWordTransform(c=>(c&&(s+=c),c)),t(e.children,i),i.popWordTransform(),r.hideLinkHrefIfSameAsText&&n===s||i.addInline(s?" "+Oy(n,r.linkBrackets):n,{noWordTransform:!0})}}function tj(e,t,i,r,a){let n=iu(e,["parent","name"])==="li",s=0,A=(e.children||[]).filter(c=>c.type!=="text"||!/^\s*$/.test(c.data)).map(function(c){if(c.name!=="li")return{node:c,prefix:""};let u=n?a().trimStart():a();return u.length>s&&(s=u.length),{node:c,prefix:u}});if(A.length){i.openList({interRowLineBreaks:1,leadingLineBreaks:n?1:r.leadingLineBreaks||2,maxPrefixLength:s,prefixAlign:"left"});for(let{node:c,prefix:u}of A)i.openListItem({prefix:u}),t([c],i),i.closeListItem();i.closeList({trailingLineBreaks:n?1:r.trailingLineBreaks||2})}}function eBt(e,t,i,r){let a=r.itemPrefix||" * ";return tj(e,t,i,r,()=>a)}function iBt(e,t,i,r){let a=Number(e.attribs.start||"1"),n=rBt(e.attribs.type);return tj(e,t,i,r,()=>" "+n(a++)+". ")}function rBt(e="1"){switch(e){case"a":return t=>YK(t,"a");case"A":return t=>YK(t,"A");case"i":return t=>KK(t).toLowerCase();case"I":return t=>KK(t);case"1":default:return t=>t.toString()}}function aBt(e){let t=[],i=[];for(let r of e)r.startsWith(".")?t.push(r.substring(1)):r.startsWith("#")&&i.push(r.substring(1));return{classes:t,ids:i}}function nBt(e,t){if(t===!0)return!0;if(!e)return!1;let{classes:i,ids:r}=aBt(t),a=(e.class||"").split(" "),n=(e.id||"").split(" ");return a.some(s=>i.includes(s))||n.some(s=>r.includes(s))}function sBt(e,t,i,r){return nBt(e.attribs,i.options.tables)?ej(e,t,i,r):ABt(e,t,i,r)}function ABt(e,t,i,r){i.openBlock({leadingLineBreaks:r.leadingLineBreaks}),t(e.children,i),i.closeBlock({trailingLineBreaks:r.trailingLineBreaks})}function ej(e,t,i,r){i.openTable(),e.children.forEach(n),i.closeTable({tableToString:s=>O2t(s,r.rowSpacing??0,r.colSpacing??3),leadingLineBreaks:r.leadingLineBreaks,trailingLineBreaks:r.trailingLineBreaks});function a(s){let A=+iu(s,["attribs","colspan"])||1,c=+iu(s,["attribs","rowspan"])||1;i.openTableCell({maxColumnWidth:r.maxColumnWidth}),t(s.children,i),i.closeTableCell({colspan:A,rowspan:c})}function n(s){if(s.type!=="tag")return;let A=r.uppercaseHeaderCells!==!1?c=>{i.pushWordTransform(u=>u.toUpperCase()),a(c),i.popWordTransform()}:a;switch(s.name){case"thead":case"tbody":case"tfoot":case"center":s.children.forEach(n);return;case"tr":{i.openTableRow();for(let c of s.children)if(c.type==="tag")switch(c.name){case"th":{A(c);break}case"td":{a(c);break}}i.closeTableRow();break}}}}var oBt=Object.freeze({__proto__:null,anchor:tBt,blockquote:X2t,dataTable:ej,heading:z2t,horizontalLine:W2t,image:$2t,lineBreak:K2t,orderedList:iBt,paragraph:V2t,pre:Z2t,table:sBt,unorderedList:eBt,wbr:j2t}),cBt={baseElements:{selectors:["body"],orderBy:"selectors",returnDomByDefault:!0},decodeEntities:!0,encodeCharacters:{},formatters:{},limits:{ellipsis:"...",maxBaseElements:void 0,maxChildNodes:void 0,maxDepth:void 0,maxInputLength:1<<24},longWordSplit:{forceWrapOnLimit:!1,wrapCharacters:[]},preserveNewlines:!1,selectors:[{selector:"*",format:"inline"},{selector:"a",format:"anchor",options:{baseUrl:null,hideLinkHrefIfSameAsText:!1,ignoreHref:!1,linkBrackets:["[","]"],noAnchorUrl:!0}},{selector:"article",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"aside",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"blockquote",format:"blockquote",options:{leadingLineBreaks:2,trailingLineBreaks:2,trimEmptyLines:!0}},{selector:"br",format:"lineBreak"},{selector:"div",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"footer",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"form",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"h1",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h2",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h3",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h4",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"h5",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"h6",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"header",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"hr",format:"horizontalLine",options:{leadingLineBreaks:2,length:void 0,trailingLineBreaks:2}},{selector:"img",format:"image",options:{baseUrl:null,linkBrackets:["[","]"]}},{selector:"main",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"nav",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"ol",format:"orderedList",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"p",format:"paragraph",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"pre",format:"pre",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"section",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"table",format:"table",options:{colSpacing:3,leadingLineBreaks:2,maxColumnWidth:60,rowSpacing:0,trailingLineBreaks:2,uppercaseHeaderCells:!0}},{selector:"ul",format:"unorderedList",options:{itemPrefix:" * ",leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"wbr",format:"wbr"}],tables:[],whitespaceCharacters:` \r
|
|
187
|
-
\f\u200B`,wordwrap:80},uBt=(e,t,i)=>[...e,...t],ij=(e,t,i)=>[...t],lBt=(e,t,i)=>e.some(r=>typeof r=="object")?uBt(e,t):ij(e,t);function hBt(e={}){return e=(0,Ky.default)(cBt,e,{arrayMerge:ij,customMerge:t=>t==="selectors"?lBt:void 0}),e.formatters=Object.assign({},H2t,oBt,e.formatters),e.selectors=VK(e.selectors,(t=>t.selector)),gBt(e),D2t(e)}function rj(e,t={},i=void 0){return hBt(t)(e,i)}function gBt(e){if(e.tags){let i=Object.entries(e.tags).map(([r,a])=>({...a,selector:r||"*"}));e.selectors.push(...i),e.selectors=VK(e.selectors,(r=>r.selector))}function t(i,r,a){let n=r.pop();for(let s of r){let A=i[s];A||(A={},i[s]=A),i=A}i[n]=a}if(e.baseElement){let i=e.baseElement;t(e,["baseElements","selectors"],Array.isArray(i)?i:[i])}e.returnDomByDefault!==void 0&&t(e,["baseElements","returnDomByDefault"],e.returnDomByDefault);for(let i of e.selectors)i.format==="anchor"&&iu(i,["options","noLinkBrackets"])&&t(i,["options","linkBrackets"],!1)}var gB=class{async parsedToMailMessage(t,i,r,a){let n=[],s=[];i.headers.forEach((B,I)=>{n.push({key:String(I),header:Array.isArray(B)?B.join(", "):String(B)})}),i.headerLines.forEach(({key:B,line:I})=>{s.push({key:B,line:I})});let A=this.#t(i.to),c=this.#t(i.cc),u=this.#t(i.bcc),h=this.#t(i.from),g=this.#t(i.replyTo),d=typeof i.html=="string"?i.html:void 0,E=i.text||(d?rj(d):"");return{deltaLink:r,extraData:a,id:i.messageId??t.id,originalMessageId:t.internetMessageId,attachmentsCount:(i.attachments??[]).length,attachments:await this.#i(i.attachments??[]),headers:n,headerLines:s,subject:i.subject,conversationId:i.references?.[0],references:i.references,date:new Date(i.date??t.sentDateTime??new Date),to:A,from:h,fromDomain:h?.[0]?.split("@")[1],cc:c,bcc:u,replyTo:g,text:(E||"").trim(),html:d,messageId:i.messageId,inReplyTo:i.inReplyTo,categories:t.categories}}formatMailReplyBody(t,i){let r=t.from?.emailAddress?.address||"",a=t.toRecipients?.map(u=>u.emailAddress?.address).filter(Boolean).join("; ")||"",n=t.subject||"",s=t.sentDateTime?new Date(t.sentDateTime).toLocaleString():"",A=`<br><hr style="border:none;border-top:solid #b1b1b1 1px;height:1px;margin:16px 0 8px 0;" /><br>From: ${r}<br>Sent: ${s}<br>To: ${a}<br>Subject: ${n}<br><br>`,c=t.body?.content||"";return`${i}${A}${c}`}#t(t){if(!t)return;let i=a=>!a||typeof a!="object"?[]:"address"in a&&typeof a.address=="string"&&a.address?[a.address]:"group"in a&&Array.isArray(a.group)?a.group.flatMap(i):[];if("value"in t&&Array.isArray(t.value)){let a=t.value.flatMap(i).filter(Boolean);return a.length?a:void 0}if(Array.isArray(t)){let a=t.flatMap(i).filter(Boolean);return a.length?a:void 0}let r=i(t).filter(Boolean);return r.length?r:void 0}async#i(t){return(await Promise.all(t.map(async i=>{let r=i.contentType?.toLowerCase().includes("application/json")||i.filename?.toLowerCase().endsWith(".json"),a=await this.#e(i);if(!a&&!r)return;i=a??i;let n=Buffer.isBuffer(i.content)?i.content:await new Promise((s,A)=>{let c=[];i.content?.on?.("data",u=>c.push(u)),i.content?.once?.("end",()=>s(Buffer.concat(c))),i.content?.once?.("error",A)});return{id:i.cid,filename:i.filename||"attachment.json",contentType:"application/json",content:n.toString("utf-8")}}))).filter(i=>!!i)}async#e(t){if(!(t.contentType?.toLowerCase().includes("application/pdf")||t.filename?.toLowerCase().endsWith(".pdf")))return null;let r=await this.#r(t.content),a=await(0,aj.default)(r),n=`${t.filename?.replace(/\.pdf$/i,"")||"attachment"}.json`;return{...t,filename:n,contentType:"application/json",content:Buffer.from(a)}}async#r(t){return Buffer.isBuffer(t)?t:new Promise((i,r)=>{let a=[];t.on("data",n=>a.push(n)),t.once("end",()=>i(Buffer.concat(a))),t.once("error",r)})}};var xB=class{#t;#i;#e;#r;constructor(t,i,r){if(this.#e=t,this.#r=on.getInstance(),this.#t=i??new nE(this.#e.username,this.#e.emlTestMode??!1),this.#i=r??new gB,!this.#e.tenantId||!this.#e.clientId||!this.#e.clientSecret)throw new Error("Graph requires tenantId, clientId, and clientSecret")}async readMailbox(t,i,r,a=10){let n,s,A;try{if(await this.#n(),n=await this.#t.getFolder(t),!n)throw new Error(`Mailbox folder not found: ${t}`);let{mails:c,deltaLink:u}=await this.#t.getMails(n,i,r,a);s=c,A=u}catch(c){let u=`Failed to read email from mailbox ${t}: ${c?.message}`;throw this.#r.warn(u,{err:c}),new Error(u)}try{let c=[];for(let u of s.filter(Boolean)){let h=await this.#a(u,n,A);h&&c.push(h)}return{mails:c.sort((u,h)=>u.date.getTime()-h.date.getTime()),deltaLink:A}}catch(c){let u=`Failed to parse emails from mailbox ${t}: ${c?.message}`;throw this.#r.warn(u,{err:c}),new Error(u)}}async getAttachments(t){let i=await this.#t.getMail(t);if(!i)throw new Error(`Message with ID ${t} not found`);return(await this.#t.listAttachments(i)).filter(a=>a.isInline!==!0).map(a=>({id:a.cid??a.id,contentType:a.contentType,filename:a.fileName??a.name,content:a.contentBytes?Buffer.from(a.contentBytes,"base64").toString("utf-8"):void 0,contentBytes:a.contentBytes?Buffer.from(a.contentBytes,"base64"):void 0}))}async reply(t,i,r,a=!0){await this.#n();let n=await this.#t.getMail(t);if(!n)throw new Error(`Message with ID ${t} not found`);let s=await this.#t.createReply(n,this.#i.formatMailReplyBody(n,r),i);if(!a)return this.#t.sendMail(s);let A=await this.#t.getFolder("Drafts");if(!A)throw new Error("Folder not found: Drafts");return this.#t.moveMailToFolder(s,A)}async addCategory(t,...i){await this.#n();let r=await this.#t.getMail(t);if(!r)throw new Error(`Message with ID ${t} not found`);let n=(await this.#t.getMailCategories(r))?.categories||[];await this.#t.updateMailCategories(r,{categories:Array.from(new Set([...n,...i]).values())})}async removeCategory(t,...i){await this.#n();let r=await this.#t.getMail(t);if(!r)throw new Error(`Message with ID ${t} not found`);let n=(await this.#t.getMailCategories(r))?.categories||[];await this.#t.updateMailCategories(r,{categories:n.filter(s=>!i.includes(s))})}async#n(){this.#r.verbose(`Initializing Microsoft Office 365 mail client for ${this.#e.username}`),await this.#t.init(this.#e.tenantId,this.#e.clientId,this.#e.clientSecret),this.#r.debug(`Microsoft Office 365 mail client initialized for ${this.#e.username}`)}async#a(t,i,r){try{let a=await this.#t.getFullMail(i,t),n=null;return this.#e.emlTestMode&&(n=(await this.#t.getExtraData(i,t).catch(()=>null))?.toString()),this.#i.parsedToMailMessage(t,a,r,n)}catch(a){this.#r.warn(`Failed to read full mail and parse: [${i.id}] ${i.displayName} // [${t.id}] ${t.subject}: ${a?.message}`,{err:a});return}}};var EB=class{#t;#i;constructor(t,i){this.#t=t,this.#i=i}get callbackFunctionChain(){return this.#e(this.#r(this.#t.receiver.emitEventType(this.#t.receiver.responses.created())))}#e(t){return async i=>{if(i.type!=="JOB")return t(i);let r=i,a=await this.#t.receiver.getActionConfig(r);if(!a)return this.#t.receiver.responses.badRequest("Action configuration not found")(r);try{this.#t.logger.debug(`Apply templates on payload: ${JSON.stringify(r.payload)}, action: ${JSON.stringify(a)}`);let n=a.config.parsedTemplates,s=n.action({inputs:r.payload}).trim(),A=n.params({inputs:r.payload}).trim();if(r.testRun)return this.#t.logger.info(`Test run for ${r.eventId} with payload ${A} to action ${s}`),t(r);this.#t.logger.debug(`Parsed action: ${s}, parameters: ${A}`);let c=JSON.parse(A);switch(this.#t.logger.debug(`Parsed params json: ${JSON.stringify(c)}`),s){case"REPLY":await this.#i.reply(c.messageId,c.from,c.mailBody,!0);break;case"FORWARD":break;case"SEND":break;case"CATEGORY_ADD":await this.#i.addCategory(c.messageId,c.category);break;case"CATEGORY_REMOVE":await this.#i.removeCategory(c.messageId,c.category);break;default:this.#t.logger.error(`Unknown action type: ${s} in message ${r.eventId}`)}return t(r)}catch(n){return this.#t.receiver.responses.internalServerError(n instanceof Error?n.message:"Unknown error occurred")(r)}}}#r(t){return async i=>{if(i.type!=="ACTION")return t(i);let r=i;try{if(!r.payload.destination||!r.payload.content)return this.#t.receiver.responses.badRequest("Destination or content not found")(r);let a={success:!0,data:"Not implemented yet"};return a.success?t(r):this.#t.receiver.responses.internalServerError(a.data)(r)}catch(a){return this.#t.receiver.responses.internalServerError(a instanceof Error?a.message:"Unknown error occurred")(r)}}}};var dB=class{constructor(t,i,r){this.DEFAULT_EVENT_TTL=36e5;this.DEFAULT_INTERVAL_SECONDS=60;this.MAX_PROCESSING_TRIES=10;this.#a=!1;this.#o=0;this.#t=t,this.#i=r,this.#e=i,this.#r=this.#t.logger;let a=this.#e.attachmentDestination??this.#t.config.attachmentDestination;this.#n=a?this.#t.files(a):void 0}#t;#i;#e;#r;#n;#a;#o;get name(){return`mail-processor-${this.#e.mailboxIdentifier}-${this.#e.mailbox}`}async onRun(){if(this.#a){this.#o>this.MAX_PROCESSING_TRIES&&(this.#t.telemetry.increment("microsoft_office365_email.mailbox.exceeded_tries"),this.#r.error(`Exceeded processingTries for mailbox processor: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),process.exit(1)),this.#t.telemetry.increment("microsoft_office365_email.mailbox.already_processing"),this.#r.debug(`Mailsource processor service is already processing: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),this.#o+=1;return}this.#a=!0;try{let t=await this.#A(this.#e);this.#t.telemetry.increment("microsoft_office365_email.mailbox.processed",t)}catch(t){throw this.#t.telemetry.increment("microsoft_office365_email.mailbox.error"),this.#r.warn(`Error processing mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`,JSON.stringify(t)),this.#a=!1,this.#o+=1,t}this.#a=!1,this.#o=0}async#A(t){this.#r.debug(`Processing mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`);let i=new Date,r=await this.#t.offsetStore.getOffset(`${this.#e.offsetFilePrefix??"offset"}_${this.#e.mailboxIdentifier}`),a=r?.deltaLink,n=r?.dateTime;this.#r.verbose(`Last message ID of mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}: ${a}`);let s=await this.#i.readMailbox(t.mailbox,a?String(a):void 0,n?String(n):void 0,t.limit??10),A=await this.#l(t.mailboxIdentifier,t.mailbox,...s.mails);return this.#t.offsetStore.setOffset({timestamp:i.getTime(),dateTime:i.toISOString(),id:s.mails?.reverse()[0]?.originalMessageId??r?.originalMessageId,...s.deltaLink?{deltaLink:s.deltaLink}:{}},`${this.#e.offsetFilePrefix??"offset"}_${this.#e.mailboxIdentifier}`),A}async#l(t,i,...r){if(r.length===0)return this.#r.debug(`No new messages found for mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),0;await this.#c(t,i,...r);let a=r.map(n=>({...n,attachments:(n.attachments??[]).map(s=>({...s,content:s.contentType==="application/json"?s.content:void 0,contentBytes:void 0}))}));return this.#r.debug(`Fetched ${a.length} new messages for mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}, sending as ${this.#e.type}`),this.#e.type==="metric"?await this.#t.sender.metricsLegacy(a,{keyField:"messageId",collection:this.#t.config.datasourceIdentifier},{ttl:this.DEFAULT_EVENT_TTL}):await this.#t.sender.documents(a,{keyField:"messageId",collection:this.#t.config.datasourceIdentifier},{ttl:this.DEFAULT_EVENT_TTL}),this.#r.info(`Fetched ${a.length} new messages for mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}, sent as ${this.#e.type}`),a.length}async#c(t,i,...r){if(!this.#n)return;let a=r.filter(n=>n.attachmentsCount>0);a.length!==0&&(this.#r.verbose(`Storing attachments for ${a.length} messages in mailbox ${this.#e.mailboxIdentifier}/${i}...`),await Promise.all(a.map(async n=>{let s;try{s=await this.#i.getAttachments(n.id)}catch(c){this.#r.error(`Failed to fetch attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id} due to: ${c.message}`,c);return}if(s.length===0){this.#r.info(`Somehow found ${s.length} of ${n.attachmentsCount} expected attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}`);return}this.#r.verbose(`Found ${s.length} attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}, storing to ${typeof this.#n}`);let A=await Promise.all(s.map(async c=>{if(!c.contentBytes&&!c.content)return;let u=`${t}/${i}/${encodeURIComponent(n.id)}/${c.filename}`;return this.#r.verbose(`Storing mail ${this.#e.mailboxIdentifier}/${i}/${n.id} attachment "${u}"...`),await this.#n.write(u,c.contentBytes??c.content).catch(g=>{this.#r.error(`Failed to store attachment to ${u} due to: ${g.message}`,g)})?(this.#r.debug(`Stored mail ${this.#e.mailboxIdentifier}/${i}/${n.id} attachment "${u}"`),{id:c.id,dsn:this.#n.pathAsDsn(u),filename:c.filename,contentType:c.contentType}):null}).filter(Boolean));this.#r.debug(`Stored ${A.length} attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}`),n.storedAttachments=[...n.storedAttachments??[],...A]})))}};var Wy=class extends Fg{constructor(i,r){super(i,r);this.init=async()=>{let{config:i}=this.connectorSDK;await Promise.all(i.mailboxes.map(async r=>{let a=new dB(this.connectorSDK,r,this.#t);await this.connectorSDK.processing.registerInterval(r.interval??a.DEFAULT_INTERVAL_SECONDS,a,{immediate:!0})}))};let{config:a}=this.connectorSDK;this.#t=new xB(a.mailConfig),this.#i=new EB(this.connectorSDK,this.#t),this.callbackFunction=this.#i.callbackFunctionChain}#t;#i};0&&(module.exports={ConnectorRunnerMicrosoftOffice365Email});
|
|
187
|
+
\f\u200B`,wordwrap:80},uBt=(e,t,i)=>[...e,...t],ij=(e,t,i)=>[...t],lBt=(e,t,i)=>e.some(r=>typeof r=="object")?uBt(e,t):ij(e,t);function hBt(e={}){return e=(0,Ky.default)(cBt,e,{arrayMerge:ij,customMerge:t=>t==="selectors"?lBt:void 0}),e.formatters=Object.assign({},H2t,oBt,e.formatters),e.selectors=VK(e.selectors,(t=>t.selector)),gBt(e),D2t(e)}function rj(e,t={},i=void 0){return hBt(t)(e,i)}function gBt(e){if(e.tags){let i=Object.entries(e.tags).map(([r,a])=>({...a,selector:r||"*"}));e.selectors.push(...i),e.selectors=VK(e.selectors,(r=>r.selector))}function t(i,r,a){let n=r.pop();for(let s of r){let A=i[s];A||(A={},i[s]=A),i=A}i[n]=a}if(e.baseElement){let i=e.baseElement;t(e,["baseElements","selectors"],Array.isArray(i)?i:[i])}e.returnDomByDefault!==void 0&&t(e,["baseElements","returnDomByDefault"],e.returnDomByDefault);for(let i of e.selectors)i.format==="anchor"&&iu(i,["options","noLinkBrackets"])&&t(i,["options","linkBrackets"],!1)}var gB=class{async parsedToMailMessage(t,i,r,a){let n=[],s=[];i.headers.forEach((B,I)=>{n.push({key:String(I),header:Array.isArray(B)?B.join(", "):String(B)})}),i.headerLines.forEach(({key:B,line:I})=>{s.push({key:B,line:I})});let A=this.#t(i.to),c=this.#t(i.cc),u=this.#t(i.bcc),h=this.#t(i.from),g=this.#t(i.replyTo),d=typeof i.html=="string"?i.html:void 0,E=i.text||(d?rj(d):"");return{deltaLink:r,extraData:a,id:i.messageId??t.id,originalMessageId:t.internetMessageId,attachmentsCount:(i.attachments??[]).length,attachments:await this.#i(i.attachments??[]),headers:n,headerLines:s,subject:i.subject,conversationId:i.references?.[0],references:i.references,date:new Date(i.date??t.sentDateTime??new Date),to:A,from:h,fromDomain:h?.[0]?.split("@")[1],cc:c,bcc:u,replyTo:g,text:(E||"").trim(),html:d,messageId:i.messageId,inReplyTo:i.inReplyTo,categories:t.categories}}formatMailReplyBody(t,i){let r=t.from?.emailAddress?.address||"",a=t.toRecipients?.map(u=>u.emailAddress?.address).filter(Boolean).join("; ")||"",n=t.subject||"",s=t.sentDateTime?new Date(t.sentDateTime).toLocaleString():"",A=`<br><hr style="border:none;border-top:solid #b1b1b1 1px;height:1px;margin:16px 0 8px 0;" /><br>From: ${r}<br>Sent: ${s}<br>To: ${a}<br>Subject: ${n}<br><br>`,c=t.body?.content||"";return`${i}${A}${c}`}#t(t){if(!t)return;let i=a=>!a||typeof a!="object"?[]:"address"in a&&typeof a.address=="string"&&a.address?[a.address]:"group"in a&&Array.isArray(a.group)?a.group.flatMap(i):[];if("value"in t&&Array.isArray(t.value)){let a=t.value.flatMap(i).filter(Boolean);return a.length?a:void 0}if(Array.isArray(t)){let a=t.flatMap(i).filter(Boolean);return a.length?a:void 0}let r=i(t).filter(Boolean);return r.length?r:void 0}async#i(t){return(await Promise.all(t.map(async i=>{let r=i.contentType?.toLowerCase().includes("application/json")||i.filename?.toLowerCase().endsWith(".json"),a=await this.#e(i);if(!a&&!r)return;i=a??i;let n=Buffer.isBuffer(i.content)?i.content:await new Promise((s,A)=>{let c=[];i.content?.on?.("data",u=>c.push(u)),i.content?.once?.("end",()=>s(Buffer.concat(c))),i.content?.once?.("error",A)});return{id:i.cid,filename:i.filename||"attachment.json",contentType:"application/json",content:n.toString("utf-8")}}))).filter(i=>!!i)}async#e(t){if(!(t.contentType?.toLowerCase().includes("application/pdf")||t.filename?.toLowerCase().endsWith(".pdf")))return null;let r=await this.#r(t.content),a=await(0,aj.default)(r),n=`${t.filename?.replace(/\.pdf$/i,"")||"attachment"}.json`;return{...t,filename:n,contentType:"application/json",content:Buffer.from(a)}}async#r(t){return Buffer.isBuffer(t)?t:new Promise((i,r)=>{let a=[];t.on("data",n=>a.push(n)),t.once("end",()=>i(Buffer.concat(a))),t.once("error",r)})}};var xB=class{#t;#i;#e;#r;constructor(t,i,r){if(this.#e=t,this.#r=on.getInstance(),this.#t=i??new nE(this.#e.username,this.#e.emlTestMode??!1),this.#i=r??new gB,!this.#e.tenantId||!this.#e.clientId||!this.#e.clientSecret)throw new Error("Graph requires tenantId, clientId, and clientSecret")}async readMailbox(t,i,r,a=10){let n,s,A;try{if(await this.#n(),n=await this.#t.getFolder(t),!n)throw new Error(`Mailbox folder not found: ${t}`);let{mails:c,deltaLink:u}=await this.#t.getMails(n,i,r,a);s=c,A=u}catch(c){let u=`Failed to read email from mailbox ${t}: ${c?.message}`;throw this.#r.warn(u,{err:c}),new Error(u)}try{let c=[];for(let u of s.filter(Boolean)){let h=await this.#a(u,n,A);h&&c.push(h)}return{mails:c.sort((u,h)=>u.date.getTime()-h.date.getTime()),deltaLink:A}}catch(c){let u=`Failed to parse emails from mailbox ${t}: ${c?.message}`;throw this.#r.warn(u,{err:c}),new Error(u)}}async getAttachments(t){let i=await this.#t.getMail(t);if(!i)throw new Error(`Message with ID ${t} not found`);return(await this.#t.listAttachments(i)).filter(a=>a.isInline!==!0).map(a=>({id:a.cid??a.id,contentType:a.contentType,filename:a.fileName??a.name,content:a.contentBytes?Buffer.from(a.contentBytes,"base64").toString("utf-8"):void 0,contentBytes:a.contentBytes?Buffer.from(a.contentBytes,"base64"):void 0}))}async reply(t,i,r,a=!0){await this.#n();let n=await this.#t.getMail(t);if(!n)throw new Error(`Message with ID ${t} not found`);let s=await this.#t.createReply(n,this.#i.formatMailReplyBody(n,r),i);if(!a)return this.#t.sendMail(s);let A=await this.#t.getFolder("Drafts");if(!A)throw new Error("Folder not found: Drafts");return this.#t.moveMailToFolder(s,A)}async addCategory(t,...i){await this.#n();let r=await this.#t.getMail(t);if(!r)throw new Error(`Message with ID ${t} not found`);let n=(await this.#t.getMailCategories(r))?.categories||[];await this.#t.updateMailCategories(r,{categories:Array.from(new Set([...n,...i]).values())})}async removeCategory(t,...i){await this.#n();let r=await this.#t.getMail(t);if(!r)throw new Error(`Message with ID ${t} not found`);let n=(await this.#t.getMailCategories(r))?.categories||[];await this.#t.updateMailCategories(r,{categories:n.filter(s=>!i.includes(s))})}async#n(){this.#r.verbose(`Initializing Microsoft Office 365 mail client for ${this.#e.username}`),await this.#t.init(this.#e.tenantId,this.#e.clientId,this.#e.clientSecret),this.#r.debug(`Microsoft Office 365 mail client initialized for ${this.#e.username}`)}async#a(t,i,r){try{let a=await this.#t.getFullMail(i,t),n=null;return this.#e.emlTestMode&&(n=(await this.#t.getExtraData(i,t).catch(()=>null))?.toString()),this.#i.parsedToMailMessage(t,a,r,n)}catch(a){this.#r.warn(`Failed to read full mail and parse: [${i.id}] ${i.displayName} // [${t.id}] ${t.subject}: ${a?.message}`,{err:a});return}}};var EB=class{#t;#i;constructor(t,i){this.#t=t,this.#i=i}get callbackFunctionChain(){return this.#e(this.#r(this.#t.receiver.emitEventType(this.#t.receiver.responses.created())))}#e(t){return async i=>{if(i.type!=="JOB")return t(i);let r=i,a=await this.#t.receiver.getActionConfig(r);if(!a)return this.#t.receiver.responses.badRequest("Action configuration not found")(r);try{this.#t.logger.debug(`Apply templates on payload: ${JSON.stringify(r.payload)}, action: ${JSON.stringify(a)}`);let n=a.config.parsedTemplates,s=n.action({inputs:r.payload}).trim(),A=n.params({inputs:r.payload}).trim();if(r.testRun)return this.#t.logger.info(`Test run for ${r.eventId} with payload ${A} to action ${s}`),t(r);this.#t.logger.debug(`Parsed action: ${s}, parameters: ${A}`);let c=JSON.parse(A);this.#t.logger.debug(`Parsed params json: ${JSON.stringify(c)}`);let u=this.#n(c.mailboxIdentifier);switch(s){case"REPLY":await u.reply(c.messageId,c.from,c.mailBody,!0);break;case"FORWARD":break;case"SEND":break;case"CATEGORY_ADD":await u.addCategory(c.messageId,c.category);break;case"CATEGORY_REMOVE":await u.removeCategory(c.messageId,c.category);break;default:this.#t.logger.error(`Unknown action type: ${s} in message ${r.eventId}`)}return t(r)}catch(n){return this.#t.receiver.responses.internalServerError(n instanceof Error?n.message:"Unknown error occurred")(r)}}}#r(t){return async i=>{if(i.type!=="ACTION")return t(i);let r=i;try{if(!r.payload.destination||!r.payload.content)return this.#t.receiver.responses.badRequest("Destination or content not found")(r);let a={success:!0,data:"Not implemented yet"};return a.success?t(r):this.#t.receiver.responses.internalServerError(a.data)(r)}catch(a){return this.#t.receiver.responses.internalServerError(a instanceof Error?a.message:"Unknown error occurred")(r)}}}#n(t){let i=this.#i.get(t);if(!i)throw new Error(`Mail client not found for mailbox identifier: ${t}`);return i}};var dB=class{constructor(t,i,r){this.DEFAULT_EVENT_TTL=36e5;this.DEFAULT_INTERVAL_SECONDS=60;this.MAX_PROCESSING_TRIES=10;this.#a=!1;this.#o=0;this.#t=t,this.#i=r,this.#e=i,this.#r=this.#t.logger;let a=this.#e.attachmentDestination??this.#t.config.attachmentDestination;this.#n=a?this.#t.files(a):void 0}#t;#i;#e;#r;#n;#a;#o;get name(){return`mail-processor-${this.#e.mailboxIdentifier}-${this.#e.mailbox}`}async onRun(){if(this.#a){this.#o>this.MAX_PROCESSING_TRIES&&(this.#t.telemetry.increment("microsoft_office365_email.mailbox.exceeded_tries"),this.#r.error(`Exceeded processingTries for mailbox processor: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),process.exit(1)),this.#t.telemetry.increment("microsoft_office365_email.mailbox.already_processing"),this.#r.debug(`Mailsource processor service is already processing: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),this.#o+=1;return}this.#a=!0;try{let t=await this.#A(this.#e);this.#t.telemetry.increment("microsoft_office365_email.mailbox.processed",t)}catch(t){throw this.#t.telemetry.increment("microsoft_office365_email.mailbox.error"),this.#r.warn(`Error processing mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`,JSON.stringify(t)),this.#a=!1,this.#o+=1,t}this.#a=!1,this.#o=0}async#A(t){this.#r.debug(`Processing mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`);let i=new Date,r=await this.#t.offsetStore.getOffset(`${this.#e.offsetFilePrefix??"offset"}_${this.#e.mailboxIdentifier}`),a=r?.deltaLink,n=r?.dateTime;this.#r.verbose(`Last message ID of mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}: ${a}`);let s=await this.#i.readMailbox(t.mailbox,a?String(a):void 0,n?String(n):void 0,t.limit??10),A=await this.#l(t.mailboxIdentifier,t.mailbox,...s.mails);return this.#t.offsetStore.setOffset({timestamp:i.getTime(),dateTime:i.toISOString(),id:s.mails?.reverse()[0]?.originalMessageId??r?.originalMessageId,...s.deltaLink?{deltaLink:s.deltaLink}:{}},`${this.#e.offsetFilePrefix??"offset"}_${this.#e.mailboxIdentifier}`),A}async#l(t,i,...r){if(r.length===0)return this.#r.debug(`No new messages found for mailbox: ${this.#e.mailboxIdentifier}/${this.#e.mailbox}`),0;await this.#c(t,i,...r);let a=r.map(n=>({...n,attachments:(n.attachments??[]).map(s=>({...s,content:s.contentType==="application/json"?s.content:void 0,contentBytes:void 0}))}));return this.#r.debug(`Fetched ${a.length} new messages for mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}, sending as ${this.#e.type}`),this.#e.type==="metric"?await this.#t.sender.metricsLegacy(a,{keyField:"messageId",collection:this.#t.config.datasourceIdentifier},{ttl:this.DEFAULT_EVENT_TTL}):await this.#t.sender.documents(a,{keyField:"messageId",collection:this.#t.config.datasourceIdentifier},{ttl:this.DEFAULT_EVENT_TTL}),this.#r.info(`Fetched ${a.length} new messages for mailbox ${this.#e.mailboxIdentifier}/${this.#e.mailbox}, sent as ${this.#e.type}`),a.length}async#c(t,i,...r){if(!this.#n)return;let a=r.filter(n=>n.attachmentsCount>0);a.length!==0&&(this.#r.verbose(`Storing attachments for ${a.length} messages in mailbox ${this.#e.mailboxIdentifier}/${i}...`),await Promise.all(a.map(async n=>{let s;try{s=await this.#i.getAttachments(n.id)}catch(c){this.#r.error(`Failed to fetch attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id} due to: ${c.message}`,c);return}if(s.length===0){this.#r.info(`Somehow found ${s.length} of ${n.attachmentsCount} expected attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}`);return}this.#r.verbose(`Found ${s.length} attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}, storing to ${typeof this.#n}`);let A=await Promise.all(s.map(async c=>{if(!c.contentBytes&&!c.content)return;let u=`${t}/${i}/${encodeURIComponent(n.id)}/${c.filename}`;return this.#r.verbose(`Storing mail ${this.#e.mailboxIdentifier}/${i}/${n.id} attachment "${u}"...`),await this.#n.write(u,c.contentBytes??c.content).catch(g=>{this.#r.error(`Failed to store attachment to ${u} due to: ${g.message}`,g)})?(this.#r.debug(`Stored mail ${this.#e.mailboxIdentifier}/${i}/${n.id} attachment "${u}"`),{id:c.id,dsn:this.#n.pathAsDsn(u),filename:c.filename,contentType:c.contentType}):null}).filter(Boolean));this.#r.debug(`Stored ${A.length} attachments for mail ${this.#e.mailboxIdentifier}/${i}/${n.id}`),n.storedAttachments=[...n.storedAttachments??[],...A]})))}};var Wy=class extends Fg{constructor(i,r){super(i,r);this.#t=new Map;this.init=async()=>{let{config:i}=this.connectorSDK;await Promise.all(i.mailboxes.map(async r=>{let a=this.#t.get(r.mailboxIdentifier??i.mailConfig.username);if(!a){this.connectorSDK.logger.error(`Mail client not found for mailboxIdentifier: ${r.mailboxIdentifier}, could not setup processor for mailbox: ${r.mailbox}`);return}let n=new dB(this.connectorSDK,r,a);await this.connectorSDK.processing.registerInterval(r.interval??n.DEFAULT_INTERVAL_SECONDS,n,{immediate:!0})}))};let{config:a}=this.connectorSDK;a.mailboxes.forEach(n=>{let s=n.mailboxIdentifier??a.mailConfig.username;this.#t.set(s,new xB({...a.mailConfig,username:s}))}),this.#i=new EB(this.connectorSDK,this.#t),this.callbackFunction=this.#i.callbackFunctionChain}#t;#i};0&&(module.exports={ConnectorRunnerMicrosoftOffice365Email});
|
|
188
188
|
/*! Bundled license information:
|
|
189
189
|
|
|
190
190
|
safe-buffer/index.js:
|