Socket
Socket
Sign inDemoInstall

@adraffy/ens-normalize

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@adraffy/ens-normalize - npm Package Compare versions

Comparing version 1.6.7 to 1.6.11

2

dist/all.min.js

@@ -1,1 +0,1 @@

function A(A){return function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let n=e(),o=1,r=[0,1];for(let A=1;A<n;A++)r.push(o+=e());let l=e(),g=t;t+=l;let s=0,i=0;function w(){return 0==s&&(i=i<<8|A[t++],s=8),i>>--s&1}const f=2**31,B=f>>>1,E=f-1;let c=0;for(let A=0;A<31;A++)c=c<<1|w();let a=[],C=0,Q=f;for(;;){let A=Math.floor(((c-C+1)*o-1)/Q),t=0,e=n;for(;e-t>1;){let n=t+e>>>1;A<r[n]?e=n:t=n}if(0==t)break;a.push(t);let l=C+Math.floor(Q*r[t]/o),g=C+Math.floor(Q*r[t+1]/o)-1;for(;0==((l^g)&B);)c=c<<1&E|w(),l=l<<1&E,g=g<<1&E|1;for(;l&~g&536870912;)c=c&B|c<<1&E>>>1|w(),l=l<<1^B,g=(g^B)<<1|B|1;C=l,Q=1+g-l}let p=n-4;return a.map((t=>{switch(t-p){case 3:return p+65792+(A[g++]<<16|A[g++]<<8|A[g++]);case 2:return p+256+(A[g++]<<8|A[g++]);case 1:return p+A[g++];default:return t-1}}))}(function(A){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,e)=>t[A.charCodeAt(0)]=e));let e=A.length,n=new Uint8Array(6*e>>3);for(let o=0,r=0,l=0,g=0;o<e;o++)g=g<<6|t[A.charCodeAt(o)],l+=6,l>=8&&(n[r++]=g>>(l-=8));return n}(A)))}function t(A){return 1&A?~A>>1:A>>1}function e(A,t){let e=Array(A);for(let n=0,o=-1;n<A;n++)e[n]=o+=1+t();return e}function n(A,e){let n=Array(A);for(let o=0,r=0;o<A;o++)n[o]=r+=t(e());return n}function o(A,t){let n=e(A(),A),o=A(),r=e(o,A),l=function(A,t){let e=Array(A);for(let n=0;n<A;n++)e[n]=1+t();return e}(o,A);for(let A=0;A<o;A++)for(let t=0;t<l[A];t++)n.push(r[A]+t);return t?n.map((A=>t[A])):n}function r(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(s(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(i(e,A))}return t.flat()}function l(A){let t=[];for(;;){let e=A();if(!e)break;t.push(e)}return t}function g(A,t,e){let o=Array(A).fill().map((()=>[]));for(let r=0;r<t;r++)n(A,e).forEach(((A,t)=>o[t].push(A)));return o}function s(A,t){let e=1+t(),n=t(),o=l(t);return g(o.length,1+A,t).flatMap(((A,t)=>{let[r,...l]=A;return Array(o[t]).fill().map(((A,t)=>{let o=t*n;return[r+t*e,l.map((A=>A+o))]}))}))}function i(A,t){return g(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var w=A("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");function f(A){return A.toString(16).toUpperCase().padStart(2,"0")}function B(A){return`{${f(A)}}`}function E(A){return[...A].map((A=>A.codePointAt(0)))}function c(A){return String.fromCodePoint(...A)}function a(A,t=B){return A.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u2800\u{E0020}-\u{E007F}])|([\x26\x3C\x3E]))/gu,((A,e,n)=>e?t(e.codePointAt(0)):`&#${n.codePointAt(0)};`))}function C(A){return A.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(A=>B(A.codePointAt(0))))}function Q(A){return/^[\x21-\x7E]+$/gu.test(A)}function p(A,t){let{length:e}=A,n=e-t.length;for(let o=0;0==n&&o<e;o++)n=A[o]-t[o];return n}function D(A){return A[Math.random()*A.length|0]}function d(A,t){if((A=A.slice()).length>t){for(let e=0;e<t;e++){let t=A[e],n=Math.floor(e+Math.random()*(A.length-e));A[e]=A[n],A[n]=t}A=A.slice(0,t)}return A}function u(A,t){let e=[];for(let n of t){let{name:t,norm:o,error:r}=n;"string"!=typeof o&&(o=t);try{let l=A(t);r?e.push({type:"expected error",result:l,...n}):l!=o&&e.push({type:"wrong norm",result:l,...n})}catch(A){r||e.push({type:"unexpected error",result:A.message,...n})}}return e}var M=A("ABMCugDhCCoAOQDlACwAdAAgAC8AIAAuABEAKgARACUEsgNvALYNshvF7FWxVQIlGJ4C4ABI9mVnAG7hCggtcHBwcPBwAmsJ7aJBjGxl96lHXKMATW3t5wBz+QLvyvgAEiwviiAIPnBwcHBwcHBwbWBwugagjgF+1BEreXcWiH9dACbnXUIE9xoq92WlU+Vw7XBnZf4Al0QDQgCWAEgMLAHuBcsDhjj0MQb6AvcA7QShBKIEowSkBKUEpgSnBKgEqQSqBKwErQSuBLAEsgSz+g8FPAGVBT0BlQU+AZUFCSYFCiYFCyYFQgVDBWEGAgtGC0cNKQ05DakNuQ5iDmMOaw5lHMECEhy/AgwLDgDQVhzrESAlBIILh3Q0mtZMBNN/tweezVcukgBxxRoB2Yi8VjnTBh0dnANVKNRZEgIHAAE5o9IADjAmDgUPCo0BAgMAhy9T7A/GOcEeFjYEiwMSfBXkLx8A0F4EnxHrFnIc6BoCNwEBRAUAEDyclamdDM8ATc0ARABlBPcB04RvAzEBXj4ZnQNXJgPKyyEBDwExSQHxLQMAEP9VM2k3khtjHgBIBR8CxwYIK5IAUw64Ae8LBOF3hBpCAOAAwlJSBDgIngB3jQCoAVZWsGVFFYgMrgP6AKwFSAUVEAIBAgYuGY4RJgDj3QJNGYocvgJOAjYHCNBEGAPVCxoTzzEPCEl0bfPuvtUITQDw/wGdAvqZGTs/ACElHwAzAD4pOTZc5AL7CmUCjtcChw4/xG+/AsYBAoQoBXE4cQVDAK1DAvqfodkA1wTxOPUe/ZH7TAAUqRqjTSsC1AV3UwUDNsVtBwEBAQEFAUMArpsC+T8FF6QD7OkE2yuAV1I9NAIFOgVJBKYE2wWs5QAV90mYTp0C9DreQC4KVwnJb/F3hAZzEE0n1xEpDGUB5wFtDh9MCgUjBm0E+x+vGUsP/5XOCNcuDw0fJxUu04CMJCcqtQYfTCY9Dwt/UZoPiwuXChU6lYGAA1MBPyK9Cw8NawifESUK+50OFxF3B2sEB0nMANcHMwtDHWcV5yZCYt4LOzmpBy0bKAvBJuETW3suBgUaUwZ/AVsbMQEBLxmF4lpjXE4QT5EGNQtXI/kU2lBSDVdA6Xh6Gk0HRyXbAsNDokq5UWgexSIoPG8NmC5FUa4IJzw3GYELszzQRt1FQBIEPr89eiJ7TF4EZ7EsYSe9CgEPtwzrfKQBiwlTCeMMoxNjEUk39whrB0tfl1YnRwhTRsdgzAUp0QQlFAMDPQVxCXMHRQPnHF8TYBVbBT+BVgAJAyU3By7lAsFWsgFJBf0PVyAREIJIEg8bCM0ClwO1Jh0AXxVTAEkizQh1lQCRkApTNy79CPlqniOmA5kVGZMRpQfDDokH2RxlFfEdE3D6Xj2GOijV4QmNAacJywGRBRUIOzWNjNIgc2eFi4oYzSCTQXFeLgJjDJcV0UTvh6oCvQ+dEk0BZwGlB2sNMwKpEh8RnRUQxwkdhjY15zQqOlcEgSG1IEMKWQOBbQALWScrDSqbAdUSlAM+NG94IGfdYOhWGC8HSzL3QZIiIwvET/8MzhrzGHRUYBoWB/EEJRslKBxBiQYxA9U1RTp/NCAE7wubCL0JcQB7DtULSQgJGJwKo40CAWO9AeknywOJw7UCocEGaQUHPQCZPbkFqwAXAE8C2QjVADcBAQOJAGsC3wfPAEsHAQC3cwFvA1kbYQFTABcCwQPFCGP9AcdhAiVbBE31DEcBKWlufALD4wKAnGbUBg+KAsACe2cBf1cEN4B5gwPhowATEQENAH0GRQAReQFH3Xz9TAAVdQIRoV0A+QEtADdnBzdzAf8CJRCfAOkBkQtjCdTl5wF/ABtbALUARxMjnQQCCQK7AQ8AZwCxACMBhQB/BYsAKwYFAoF7EQFDY0pdEomTAe0DUQFlAT8Aqwb9v9f7OQlRBJ8IBQIQTRYTAu9gB+czAyMRE/9C9wK+EIehkgMCZLMCYnSNC3/hL40gN1ICoikCaMoRFwJmOwKftjhNPQJmbQJmWAsEoASxAwN/RQN+xA05ODmpB0k5tDpVJx0rVQEDIwUCbE8CMmg4PBsCbfkCbeAbACG8ETFlmSV3EV0VAQ8BmQEQARMAfDcHygy/ATA9I/QAP+cCd2ECdtQPGQFxAnl9dQJ47E8JjgANReANRwkCfHECevobDwkCfTsCfSIFiwVSSDJIrw2VVgKBnwKAMgKANwJ/4BNJikqNRxtJSv4C0TMC0P5LWRkDiIEDiBhE95FkAvLTXTUDA+ADTABMX1cFNQABTX4sTeECi3ECiwrzTRk5DAdPGSUHdZk36QKOaQKOjnLJJ7MCjwsCjo6qKFHmU2cbLzxTBlS3KwKULQKTPgEbAE5VUFXhVgI4LE0px7gzE3iYRW1rBgKX0QLv5FhT2gCLVwKWwQKWrs4A21neWjuzfwBtApbnApaAXHZdAwKZ/QKZllz8XTlLApzNOfQ6zwKcSAKfzQKe6g28AE9BY1xBDwsCniMCnsQA529hZmIhAp8FAqCgAdsCntFRAp6A1yZj+mRZV10CJ+ECJrACoS0CoH4Cow8CofYLJwKmYQKmABsCqDEArwKoJBNormjjADUbGxl7ak5rAwKtFQKs4AKtmQKtNAJXTwJWDgKyEx8ACQMfgAlsyQKy7z8lArMaSW0SbZVtepEDJf8Cto5tcW7CAyl3AriQArl5RwK5XKlwaHETBQK9SwK8DHDIAzJDAr66cjQDM6MCvkxzVHOBKwLD/QLDNnO0dH1nd3USAzzZLwM8zAM98QLFrgLGeQLGQrsHAsibgwLIdgLJgQLJYAJkzwLeBHirk3jgeVdMAgMY1Q1nNAMCYiYaJZVWez0VXsRe7QVDAs+dAs+eYX2FAAQAJUXRAPjfEQLPpQFbABwDTkR+fTcC3FkC27wC0oEDUo4DU5EBMwNVvoC7CQdxMv1IAB+SdyeCToMFMYMAg78C2vkC2hCEQoR7p24DhtcAYQNkQAOGo4sAKwCHAt+XAt7qHaWpAuJh7UYB82IOWQH0zQHzBLkC7CUnAumiqzEC6ysC6xYBK3kB6ykC7rsC686W3Jc1Au5xA4YSmKtxEnHTAvM1AJsDjkgBmcUC90UDkaADkrkC98oC+gsC+JiaTprd7Sdpm1ADnbUC/ywBTQBrn04vn+UDBb8DppwDpwsBA/cDBpyhuqI3BTsDDHsC8gBxNQ0rARNzJSVJBzEfIYUNAUMAJRMDnQE5yRGZNwDFEV9d6eHvAA0BuwULBQMVBQvLFLFDBGsCLRcvWyEnHwc3Uw7PCdEfBQ0fAJMvBymJD/cDKQHPAOkF6wBvPZ9zAWAxMDEwMSwxMDEwMTAxLjEuMTAxMDEwMTAxLDEwMTAxMDEuMS4xMDEwMTAxMDEuMS4xMDEwMSwxMDEwMS4xMDEwMSoxMDEwMS4xMDEwMTAxLjEwMS4xMDEwMTAxMDEwMSwxLDEwMTAxMDFGMSQxWDEgMSQxJDG/MTAxMDEwMWAxAXUBsjEALjEoMSgxAedYAKcDQDYxIjGfMS4xDDEAXjEwMSgxMDEoMTAxJDEwMSoxMDEqMTAxNDEuMUgxPjEoMdMxMjEAPDECbwKcMQQPA7AEwzNSCQkVFAkDdwoZBwYxNygHU64xPDEwMSYxADcAdjEuMS4xMDEkMQBFAGgxRDEwMTAxKDEoMQKpMzI3AAcYEwOdASwDACE8C/c0DwEpPNFZ8ePpABcBwwUmU3N0MwUmABsUsUM08jEuMTAxMDG7MQA2MTAxMDEwMTAxAE0AjDEwMQJ3ArYxLjEuMTAxMDEwMTAxLjG9MQA4MTAxMDEuMTqFOsYxMDEuMTAxMDEuMTAxMDEwMb8xMDGfAOoxMDEsMTAxOsE7AjEuMTAxAL848zsOMTAxMDEwMS4xMDEwMQDXARoxMDEuMTAxMDEwMTAxLjEwMS4xLjEwMTAxFAkA/QFsMTAxszEwMTAxMDE6bTouOis7qDEwMTAxuzEwMTAxMDE6jTvQMTAxJDEwMbsxMDEwMTAxOqE5SgGIMTAxAWUBnjEwMTAxMDEFYTWPNdA13zWYNac16DX3NbQ1wzYENhM10DXfNiA2LzXkNfM2NDZDNfg2BzZINlk2EDYfNmA2bzZgNV8TUzZsNm82bjb7NzoEwjyJNmoCAzcPN1I3QTb8ExITUje7N2IEPATiPJk2VjdLN54FOr9pUyEfQwZDORhDEkM9CydOGTEPQQnNWp8NWoMHVTgjAgDpsQDp4hoFAwEUWwUACQMbAdUA7wXpAG81pQTxKz4AACs+AAA1PgAzKAQxOjUyOzw9JgY9JgAEPSYGOyYnJgIrPA8OAAcIASk4AQYNGyQxNgABAQMCBYcEwfUjJvEBJSAjJgAnIiPv7xgXwyPXGwKhdglf4xT/LxAsKQ1QKQ0ESklEKSYvTjUNDC5LSCkoKQ1IACkuS0QpKCkNAglIMTYpKDMNQikkAAMDKyQDJSQAAwMxJAADMTY3JBEYc04Yc04YFRgVGHNOGHNOGHNOGHNOGBUYFRhzTBhzThhzThhzdHtuc257ent6c2h1aHNoF01oGRh7ensKWbNUugUGARTnywMfIwG3BAsA1QXzAG9bAwoDPgIADSwEpXIJRBjQcAlvXGwJYwAAVAJlCfcDLC4AGQimziTrDxRsXQEHCQBJ4gJxFAHxAAACAwH1dG3tAGkBkADcNw02AgAaAO8MYMdXAAUANqrVCE0AJTUFC/40WgEOgxfFKXYa3/sD/I9uS3VANTQ3XBlcVW2U9A7Kf+wUbeNgVfOQ0jnth1r/AmJwCuJ+bjJCnzyJKwrLaSnI7BZdJ7zYfwhaB6OozdWYNd+TUmHKyyB2bMQ2SXisfTa3xOUxASuPHAEIEGZD42dzXB5cd/21m7UbBZ3kP4J2BnToQQVpWwNKkICH0EYrlFoHExilPTcSHRli97wu3uhz2d3UF52MuJYHtmMBDUkEZT/NWRggi8mXnbae4/TLY3lbWwZC0XZ8sX7jOGTfqWV4zC1WG4u/G6JgRyw7NSQECncFm2VZ2WWpsrV/c9jiJCLgD7vUijJil/9O9/+zyXSYbKDTzMHw3bOpZ3irYJAHu/wW5mk0xPocvChuaeNfuKHezBnavY8z6Zlan5pc7BRttiK8rg6VDl14sKA3+44N/BsR0tFbEFqYoOYhQeDlN2PO4dCKxwCDXdC+X4sXSEcwpiT79T1ntHsfky0r28ufm/V0LuBPgxaj0daKaY5izrD3HRXDJDs1lA/PHgFwjqiQaLDeCILljxnvOl2hSN+PVYpJisd+j/ItP8sTprr6sDPd9qyee80xAyN5fm1g1UQoyuhG58xAxAczRst3ElTC4KiiwiAJub6xNO7v+zfL/AbD/z9e9t0fWmDysNAoF3FHNZEn5IohAlVerw4+3YY6K10zQcCqoWO91PFiJuuq0E0KbTDx0MGHO17ozuYKZBM5cT67k3+ujfXmjkcwE3J3XmOoEoO4OkEYIWy4gyx8c10e4H7Xdl1Ra5vR8PQ7JQgw5XWbxA7RQMA2WMAkDmCEnzLAbX5gBrJSQn1aNrLQA6HsRYqidepmjPNqOTpTPdbgDF/nLY+sJ3JILu7Cjv9vpW0aB9mV2Qh+RDlfc+LPI9oaA76rxPpludJ946MFH+x+wCsQR8jgwJsTI61KqUxKNjsv5LebeOQLJsp0/roSqA1SQa965qqA1r5ZUrQQ24tBXNZCsMzu6HliM4u/M5mC4GRR2YREhJNAlOC2NIvpJw6rz10M9yPkXhLWXKxhsVd6DQtQ6mxBvSIhhXaNHJR+mT2CRXPEOpEe6BiIl2NHTl2urQXXoV8ZZVw/DKVxPbTj2BGJiouL1uIldPYwFWoaIIPp1ATgbrRn5kf/DHv2eVtBqLk3RP/dqxxSvZSCs+z7rSaqLRJ92Xo9qFfk3sikfXK/Ve2RlKC5wBzAyEp7LsZG6rRMtagwiILAYv0oreDHFgbT/sGbRBV1P9IAAkKAJ73ykMpUHJ8fZFwXZPn+AnijupXWm9YM8I4FHSVSXPHyHXrkDwcvHvLBVgcr2Krd2BgDt0xc4KfS0ePIaLXTpZJzcyWiE95aWby+7p5dt84tMGjXbXNQ14tZkt91zHtsnjbt1W05WaWfmIu8tPci3jSYCNBeK23ePlxOSAxtaDu6DuqfhbSc5AcBqaURTB8BauWt2XUi6ea29H5qdJ6+BFgAxhlBKFvjmQoSQ98MubD683kwFPpWDFv9G2Bf9k4R8lmXm+4rvaOLdMgJkj7lG/5FqudOahFDnpiJEoVWyuDQWLXUthXjyZdeV/V8AJAioskQk+xWHcxjAuGj+vqG3/qyX85OhMcM2g2aAQmOWGR2j5JmtjpBILiDvoNSSXxz3YjPvp5upXeBzDCDQG7V84EDs0FzK/B23kn76iSJ6Pc19oGTGBUc9jEWN63UQOGEWb+lMDnyQqh/lLszwm4vo9fBXcMxCLYasLiNI58fTuV/RHDrikYLicm+9P+wReH86kuk/8r4hBHrDrnpHmc9+Uda4PPWuV7l4SNLZG9/UeLslvFbQa3opVzjHEITwIT1XsmxoOO45M773HFCQnc25nssCQ6I9A1FDC8FSmmzlcBpJBmf9gFxkwY+I1nvjFiKv52SU0eyOjaZUmCilv2mTusSYv55bnqcknjsED9jTGqN01XWP6XDtvJvGmpAcvs8aPkkqgU52kFkywMv5aojED3bDX1LoGR2sEcwYcrnW9WRCXN7rLAAQ7rXb+IDmevdbZg+YCMkMn23bPA2J10pjN4RcExiHLLnEEM/Fd6quESnTbzJZOUO9tMduua8Tf264v39ncohsbD6UxB+Nhy4GhQQnJMV4PXmQE5Df1/O9sOn6DZ0QUVlkgv0/CA9bd6S0wTrkPxHRSHrF8ox/2mRh4jLeV2qhm1eALV+Ze3kwL/PR0/GK8hvMlNxqNlUGDzXiKlsXQ3ZPLTsiUt18XtjK1g3u+HXwJDPCu+k2J0qPowRoTIC8HSSraAiZOSRd3hFFAbnG+E9RnLypgK8vTkD1I7+GXSO6qhbSsocZuayTs9Q/CEBvMLF0VNS0ILbMv1WOTz1AqX4Stbzilk3ipADwZHUWUXwRmqiB3MSnPULZJk3vt7SR3sONsAX8sly0E/T+n+JcolcdlYP0h6JdEX+0DqpMqTR4ZD0J0KAGC0bn8DbtFFRnpVtp7uhAUFQ52TtYMYQ3W/TutF1sVQz4SdTE3ev0pc+QmqKSBmtpA52KPSfbUKmauUAYqXftrKx5u7F+HC7Az8zyLss3coybyS6afKHEipvGgNt9T+SV3Jhjvj/R41mLmlCGs9Y9m6GH75LkVXgEafdtm+r3/feRftXo3mXr9BhOtVoXbrWJWTLfeGanamW8XQ+YX4+zCWhvp9zsQ7qN03OVs8OLsCDoJO0LPvcH8P0cLP2F16PogPBIJLwO+Ro7Qm+smIjOFFvsVykm0leU8dlO0EpDuiZaUsfQsD0vqkb1QO3nPo9SDf7+hHnkzRv5sVcuzfFezhleH0YxUb2hUuod0LaMVJ4H8JAAcpNd+87Y1UBfXv7KmchplE");function h(A){return A>>24&255}function F(A){return 16777215&A}const x=new Map(l((()=>{let A=o(M);if(A.length)return A})).flatMap(((A,t)=>A.map((A=>[A,t+1<<24]))))),k=new Set(o(M)),m=new Map,T=new Map;for(let[A,t]of r(M)){if(!k.has(A)&&2==t.length){let[e,n]=t,o=T.get(e);o||(o=new Map,T.set(e,o)),o.set(n,A)}m.set(A,t.reverse())}const I=44032;function S(A){return A>=I&&A<55204}function Y(A,t){if(A>=4352&&A<4371&&t>=4449&&t<4470)return I+588*(A-4352)+28*(t-4449);if(S(A)&&t>4519&&t<4547&&(A-I)%28==0)return A+(t-4519);{let e=T.get(A);return e&&(e=e.get(t),e)?e:-1}}function L(A){let t=[],e=[],n=!1;function o(A){let e=x.get(A);e&&(n=!0,A|=e),t.push(A)}for(let n of A)for(;;){if(n<128)t.push(n);else if(S(n)){let A=n-I,t=A%588/28|0,e=A%28;o(4352+(A/588|0)),o(4449+t),e>0&&o(4519+e)}else{let A=m.get(n);A?e.push(...A):o(n)}if(!e.length)break;n=e.pop()}if(n&&t.length>1){let A=h(t[0]);for(let e=1;e<t.length;e++){let n=h(t[e]);if(0==n||A<=n){A=n;continue}let o=e-1;for(;;){let e=t[o+1];if(t[o+1]=t[o],t[o]=e,!o)break;if(A=h(t[--o]),A<=n)break}A=h(t[e])}}return t}function J(A){return L(A).map(F)}function y(A){return function(A){let t=[],e=[],n=-1,o=0;for(let r of A){let A=h(r),l=F(r);if(-1==n)0==A?n=l:t.push(l);else if(o>0&&o>=A)0==A?(t.push(n,...e),e.length=0,n=l):e.push(l),o=A;else{let r=Y(n,l);r>=0?n=r:0==o&&0==A?(t.push(n),n=l):(e.push(l),o=A)}}return n>=0&&t.push(n,...e),t}(L(A))}const N=o(w).sort(((A,t)=>A-t)),K=new Set(N),U=new Set(o(w)),P=new Map(r(w));function H(){return new Set(o(w,N))}const X=H(),G=H(),V=[["Latin",H()],["Greek",H(),H()],["Cyrillic",H(),H()]],O=new Set(o(w)),b=function(A){let t=o(A).sort(((A,t)=>A-t));return function e(){let n=[];for(;;){let r=o(A,t);if(0==r.length)break;n.push({set:new Set(r),node:e()})}n.sort(((A,t)=>t.set.size-A.set.size));let r=A(),l=r%3;r=r/3|0;let g=!!(1&r);return r>>=1,{branches:n,valid:l,fe0f:g,save:1==r,check:2==r}}()}(w),R=new Set(o(w,N));function z(A){let t=A.lastIndexOf(95);for(;t>0;)if(95!==A[--t])throw new Error("underscore only allowed at start")}function j(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function v(A,t,e,n,o){let r=-1;if(A[0]===t){if(n)throw new Error(`leading ${e}`);r=0}for(;;){let n=A.indexOf(t,r+1);if(-1==n)break;if(r==n-1)throw new Error(`adjacent ${e}`);r=n}if(o&&r==A.length-1)throw new Error(`trailing ${e}`)}function W(A){let t=0;for(;t=A.indexOf(183,t),-1!=t;){if(108!==A[t-1]||108!==A[t+1])throw new Error("ContextO: middle dot");t+=2}}function q(A){for(let t=0;t<V.length;t++){let[e,n,o]=V[t];if(A.some((A=>n.has(A)))){for(let n=t+1;n<V.length;n++){let[t,o]=V[n];if(A.some((A=>o.has(A))))throw new Error(`mixed-script confusable: ${e} + ${t}`)}if(o&&A.every((A=>!n.has(A)||o.has(A))))throw new Error(`whole-script confusable: ${e}`)}}}function Z(A){for(let t=0,e=-1;t<A.length;t++)if(X.has(A[t])){if(0==t)throw new Error("leading combining mark");if(t==e)throw new Error(`adjacent combining marks "${c(A.slice(t-2,t+1))}"`);{let e=A[t-1];if(65039==e||G.has(e))throw new Error("illegal combining mark")}e=t+1}}function $(A){for(let t of A.split(".")){if(!t)throw new Error("Empty label");try{let A=E(t);z(A),j(A),v(A,8217,"apostrophe",!0,!0),W(A),q(A),Z(J(nA(t,(()=>[65039]))))}catch(A){throw new Error(`Invalid label "${t}": ${A.message}`)}}return A}function _(A){return c(y(nA(A,eA)))}function AA(A){return $(_(A))}function tA(A){return c(y(nA(A,(A=>A)))).replace(/[\u{1F1E6}-\u{1F1FF}]{2,}/gu,(A=>[...A].join("​")))}function eA(A){return A.filter((A=>65039!=A))}function nA(A,t){let e=E(A).reverse(),n=[];for(;e.length;){let A=oA(e);if(A)n.push(...t(A));else{let A=e.pop();if(K.has(A))n.push(A);else if(!U.has(A)){let t=P.get(A);if(!t)throw new Error(`Disallowed codepoint: 0x${f(A)}`);n.push(...t)}}}return n}function oA(A,t){let e,n,o=b,r=[],l=A.length;for(t&&(t.length=0);l;){let g=A[--l],s=o.branches.find((A=>A.set.has(g)));if(!s)break;if(o=s.node,o.save)n=g;else if(o.check&&g===n)break;r.push(g),o.fe0f&&(r.push(65039),l>0&&65039==A[l-1]&&l--),o.valid&&(e=rA(r,o),t&&t.push(...A.slice(l).reverse()),A.length=l)}if(!e){let n=A[A.length-1];O.has(n)&&(t&&t.push(n),e=[n],A.pop())}return e}function rA(A,t){let e=A.slice();return 2==t.valid&&e.splice(1,1),e}function lA(){let A=[...O].map((A=>[A]));return function t(e,n,o){if(e.save)o=n[n.length-1];else if(e.check&&o===n[n.length-1])return;e.fe0f&&n.push(65039),e.valid&&A.push(rA(n,e));for(let A of e.branches)for(let e of A.set)t(A.node,[...n,e],o)}(b,[]),A}function gA(A){let t=E(A).reverse(),e=[],n=[];for(;t.length;){let A=oA(t,e);if(A)n.push({type:"emoji",emoji:A,input:e.slice(),cps:eA(A)});else{let A=t.pop();if(46===A)n.push({type:"stop"});else if(K.has(A))G.has(A)?n.push({type:"isolated",cp:A}):n.push({type:"valid",cps:[A]});else if(U.has(A))n.push({type:"ignored",cp:A});else{let t=P.get(A);t?n.push({type:"mapped",cp:A,cps:t.slice()}):n.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<n.length;A++){let e=n[A];if(sA(e.type))if(iA(e.cps)){let e=A+1;for(let A=e;A<n.length;A++){let{type:t,cps:o}=n[A];if(sA(t)){if(!iA(o))break;e=A+1}else if("ignored"!==t)break}t<0&&(t=A);let o=n.slice(t,e),r=o.flatMap((A=>sA(A.type)?A.cps:[])),l=y(r);c(r)===c(l)?A=e-1:(n.splice(t,e-t,{type:"nfc",input:r,cps:l,tokens:wA(o)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return wA(n)}function sA(A){return"valid"===A||"mapped"===A}function iA(A){return A.some((A=>R.has(A)))}function wA(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}function fA(A){return A<26?97+A:22+A}function BA(A,t){let e=A-t;return e<=0?1:e>=26?26:e}function EA(A,t,e){A=Math.floor(A/(e?700:2)),A+=Math.floor(A/t);let n=0;for(;A>455;)A=Math.floor(A/35),n+=36;return n+Math.floor(36*A/(A+38))}const cA=new Set(E("-.0123456789abcdefghijklmnopqrstuvwxyz"));function aA(A){if((A=A.split(".").map((A=>{if(!A)return"";let t=A;try{let A=E(t),e=function(A,t){if(!Array.isArray(A)||!A.every((A=>Number.isSafeInteger(A)&&A>=0&&A<=1114111)))throw new TypeError("expected array of Unicode codepoints");return function(A,t){let e=A.filter((A=>A<128)),n=e.length;if(n==A.length)return A;t&&e.splice(0,0,120,110,45,45),n&&e.push(45);let o=128,r=72,l=0,g=n;for(;g<A.length;){let t=A.reduce(((A,t)=>t>=o&&t<A?t:A),1114111);l+=(t-o)*(g+1);for(let o of A)if(o<t)l++;else if(o==t){let A=l;for(let t=36;;t+=36){let n=BA(t,r),o=A-n;if(o<0)break;let l=36-n;e.push(fA(n+o%l)),A=Math.floor(o/l)}e.push(fA(A)),r=EA(l,g+1,g==n),l=0,g++}l++,o=t+1}return e}(A,t)}(A);for(let A of e)if(!cA.has(A))throw new Error(`invalid ASCII: "${C(String.fromCodePoint(A))}"`);if(e===A){if(t.startsWith("xn--"))throw new Error("punycode literal");if("--"===t.slice(2,4))throw new Error("invalid label extension");if(t.startsWith("-"))throw new Error("leading hyphen");if(t.endsWith("-"))throw new Error("trailing hyphen")}else t="xn--"+String.fromCodePoint(...e);if(t.length>63)throw new Error(`too long: ${t.length} > 63`)}catch(t){throw new Error(`Invalid label "${C(A)}": ${t.message}`)}return t})).join(".")).length>253)throw new Error(`Name too long: ${A.length} > 253`);return A}function CA(A){return A.map(f).join(" ")}function QA(){let A=document.createElement("span");return A.classList.add("arrow"),A.innerHTML="➔",A}function pA(A,t){let e=document.createElement("span");if(8205==A)e.classList.add("mod","zwj"),e.innerHTML="ZWJ";else if(8204==A)e.classList.add("mod","zwj"),e.innerHTML="ZWNJ";else if(65039==A)e.classList.add("mod","dropped","style"),e.innerHTML="FE0F";else if(8419==A)e.classList.add("mod","keycap"),e.innerHTML="Keycap";else if(A>=917536&&A<=917631){A-=917504;let t=String.fromCodePoint(A);127===A?(e.classList.add("mod"),e.innerHTML="TagEnd"):(Q(t)?e.innerHTML=t:(e=document.createElement("code"),e.innerHTML=f(A)),e.classList.add("mod","tag"))}else e.classList.add("raw"),e.innerHTML=t(A);return e}function DA(A,t){let e=document.createElement("div");return e.classList.add("tokens"),t&&(A=A.flatMap((A=>"nfc"===A.type?A.tokens:A))),e.append(...A.flatMap((A=>{let e;if("emoji"===A.type){let n=t?A.input:A.cps;e=document.createElement("a"),e.href=`https://emojipedia.org/${String.fromCodePoint(...A.emoji)}`,e.title=`Emoji\n${CA(n)}`,e.classList.add("glyph"),e.append(...n.map((A=>pA(A,String.fromCodePoint))))}else if("nfc"===A.type){e=document.createElement("div"),e.classList.add("nfc");let t=DA(A.tokens,!1);t.classList.add("before");let n=document.createElement("div");n.classList.add("valid"),n.innerHTML=String.fromCodePoint(...A.cps),n.title=`NFC\n${CA(A.cps)}`,e.append(t,QA(),n)}else if(e=document.createElement("div"),"valid"===A.type)e.classList.add("valid"),e.innerHTML=String.fromCodePoint(...A.cps),e.title=`Valid\n${CA(A.cps)}`;else if("mapped"===A.type){e.classList.add("mapped");let n=document.createElement("span");n.classList.add("before"),n.innerHTML=String.fromCodePoint(A.cp),n.title=`Mapped\n${f(A.cp)}`,e.append(n),t||e.append(QA(),...A.cps.map((A=>{let t=document.createElement("span");return t.innerHTML=String.fromCodePoint(A),t.title=f(A),t})))}else if("ignored"===A.type)e.innerHTML=f(A.cp),e.title=`Ignored\n${f(A.cp)}`,e.classList.add("ignored");else if("disallowed"===A.type)e=pA(A.cp,(A=>{let t=String.fromCodePoint(A);return Q(t)?t:f(A)})),e.classList.add("disallowed"),e.title=`Disallowed\n${f(A.cp)}`;else if("stop"===A.type)e.classList.add("stop"),e.innerHTML=".";else{if("isolated"!==A.type)throw new TypeError(`unknown token type: ${A.type}`);e.classList.add("isolated"),e.innerHTML=String.fromCodePoint(A.cp),e.title=`Valid (Isolated)\n${f(A.cp)}`}return e}))),e}function dA(){let A=document.createElement("style");A.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t\tfont-size: 65%;\n\t\tfont-family: monospace;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #c00;\t\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t}\n\t.tokens .disallowed.raw {\n\t\tfont-size: 65%;\t\t\n\t\tfont-family: monospace;\n\t\tbackground: #800;\n\t}\n\t.tokens .disallowed.mod {\n\t\tborder: 2px solid #800;\n\t\tfont-size: 80%;\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .isolated {\n\t\tborder: 2px solid #87e;\n\t\tborder-radius: 5px;\n\t\tbackground: #ecf;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 5px;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .glyph .mod {\n\t\tbackground: #333;\t\t\n\t}\n\t.tokens .glyph .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .glyph .mod.tag {\n\t\tbackground: #33f;\n\t}\n\t.tokens .glyph .mod.dropped {\n\t\tbackground: #aaa;\t\t\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}",document.body.append(A)}export{p as compare_arrays,aA as dns_from_normalized_ens,DA as dom_from_tokens,tA as ens_beautify,lA as ens_emoji,AA as ens_normalize,_ as ens_normalize_fragment,$ as ens_normalize_post_check,gA as ens_tokenize,a as escape_for_html,C as escape_unicode,E as explode_cp,f as hex_cp,Q as is_printable_ascii,y as nfc,J as nfd,B as quote_cp,D as random_choice,d as random_sample,u as run_tests,c as str_from_cps,dA as use_default_style};
function A(A){return function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let n=e(),r=1,o=[0,1];for(let A=1;A<n;A++)o.push(r+=e());let s=e(),l=t;t+=s;let i=0,w=0;function Q(){return 0==i&&(w=w<<8|A[t++],i=8),w>>--i&1}const E=2**31,B=E>>>1,c=E-1;let f=0;for(let A=0;A<31;A++)f=f<<1|Q();let a=[],C=0,D=E;for(;;){let A=Math.floor(((f-C+1)*r-1)/D),t=0,e=n;for(;e-t>1;){let n=t+e>>>1;A<o[n]?e=n:t=n}if(0==t)break;a.push(t);let s=C+Math.floor(D*o[t]/r),l=C+Math.floor(D*o[t+1]/r)-1;for(;0==((s^l)&B);)f=f<<1&c|Q(),s=s<<1&c,l=l<<1&c|1;for(;s&~l&536870912;)f=f&B|f<<1&c>>>1|Q(),s=s<<1^B,l=(l^B)<<1|B|1;C=s,D=1+l-s}let g=n-4;return a.map((t=>{switch(t-g){case 3:return g+65792+(A[l++]<<16|A[l++]<<8|A[l++]);case 2:return g+256+(A[l++]<<8|A[l++]);case 1:return g+A[l++];default:return t-1}}))}(function(A){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,e)=>t[A.charCodeAt(0)]=e));let e=A.length,n=new Uint8Array(6*e>>3);for(let r=0,o=0,s=0,l=0;r<e;r++)l=l<<6|t[A.charCodeAt(r)],s+=6,s>=8&&(n[o++]=l>>(s-=8));return n}(A)))}function t(A){return 1&A?~A>>1:A>>1}function e(A,t){let e=Array(A);for(let n=0,r=-1;n<A;n++)e[n]=r+=1+t();return e}function n(A,e){let n=Array(A);for(let r=0,o=0;r<A;r++)n[r]=o+=t(e());return n}function r(A,t){let n=e(A(),A),r=A(),o=e(r,A),s=function(A,t){let e=Array(A);for(let n=0;n<A;n++)e[n]=1+t();return e}(r,A);for(let A=0;A<r;A++)for(let t=0;t<s[A];t++)n.push(o[A]+t);return t?n.map((A=>t[A])):n}function o(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(i(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(w(e,A))}return t.flat()}function s(A){let t=[];for(;;){let e=A();if(!e)break;t.push(e)}return t}function l(A,t,e){let r=Array(A).fill().map((()=>[]));for(let o=0;o<t;o++)n(A,e).forEach(((A,t)=>r[t].push(A)));return r}function i(A,t){let e=1+t(),n=t(),r=s(t);return l(r.length,1+A,t).flatMap(((A,t)=>{let[o,...s]=A;return Array(r[t]).fill().map(((A,t)=>{let r=t*n;return[o+t*e,s.map((A=>A+r))]}))}))}function w(A,t){return l(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var Q=A("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");function E(A){return A.toString(16).toUpperCase().padStart(2,"0")}function B(A){return`{${E(A)}}`}function c(A){let t=[];for(let e=0,n=A.length;e<n;){let n=A.codePointAt(e);e+=n<65536?1:2,t.push(n)}return t}function f(A){return String.fromCodePoint(...A)}function a(A,t=B){return A.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u2800\u{E0020}-\u{E007F}])|([\x26\x3C\x3E]))/gu,((A,e,n)=>e?t(e.codePointAt(0)):`&#${n.codePointAt(0)};`))}function C(A){return A.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(A=>B(A.codePointAt(0))))}function D(A){return/^[\x21-\x7E]+$/gu.test(A)}function g(A,t){let{length:e}=A,n=e-t.length;for(let r=0;0==n&&r<e;r++)n=A[r]-t[r];return n}function d(A){return A[Math.random()*A.length|0]}function u(A,t){if((A=A.slice()).length>t){for(let e=0;e<t;e++){let t=A[e],n=Math.floor(e+Math.random()*(A.length-e));A[e]=A[n],A[n]=t}A=A.slice(0,t)}return A}function p(A,t){let e=[];for(let n of t){let{name:t,norm:r,error:o}=n;"string"!=typeof r&&(r=t);try{let s=A(t);o?e.push({type:"expected error",result:s,...n}):s!=r&&e.push({type:"wrong norm",result:s,...n})}catch(A){o||e.push({type:"unexpected error",result:A.message,...n})}}return e}var M=A("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");function h(A){return A>>24&255}function x(A){return 16777215&A}const k=new Map(s((()=>{let A=r(M);if(A.length)return A})).flatMap(((A,t)=>A.map((A=>[A,t+1<<24]))))),F=new Set(r(M)),U=new Map,T=new Map;for(let[A,t]of o(M)){if(!F.has(A)&&2==t.length){let[e,n]=t,r=T.get(e);r||(r=new Map,T.set(e,r)),r.set(n,A)}U.set(A,t.reverse())}const L=44032;function J(A){return A>=L&&A<55204}function m(A,t){if(A>=4352&&A<4371&&t>=4449&&t<4470)return L+588*(A-4352)+28*(t-4449);if(J(A)&&t>4519&&t<4547&&(A-L)%28==0)return A+(t-4519);{let e=T.get(A);return e&&(e=e.get(t),e)?e:-1}}function G(A){let t=[],e=[],n=!1;function r(A){let e=k.get(A);e&&(n=!0,A|=e),t.push(A)}for(let n of A)for(;;){if(n<128)t.push(n);else if(J(n)){let A=n-L,t=A%588/28|0,e=A%28;r(4352+(A/588|0)),r(4449+t),e>0&&r(4519+e)}else{let A=U.get(n);A?e.push(...A):r(n)}if(!e.length)break;n=e.pop()}if(n&&t.length>1){let A=h(t[0]);for(let e=1;e<t.length;e++){let n=h(t[e]);if(0==n||A<=n){A=n;continue}let r=e-1;for(;;){let e=t[r+1];if(t[r+1]=t[r],t[r]=e,!r)break;if(A=h(t[--r]),A<=n)break}A=h(t[e])}}return t}function I(A){return G(A).map(x)}function H(A){return function(A){let t=[],e=[],n=-1,r=0;for(let o of A){let A=h(o),s=x(o);if(-1==n)0==A?n=s:t.push(s);else if(r>0&&r>=A)0==A?(t.push(n,...e),e.length=0,n=s):e.push(s),r=A;else{let o=m(n,s);o>=0?n=o:0==r&&0==A?(t.push(n),n=s):(e.push(s),r=A)}}return n>=0&&t.push(n,...e),t}(G(A))}const V=r(Q).sort(((A,t)=>A-t)),b=new Set(V),K=new Set(r(Q)),N=new Map(o(Q));function P(){return new Set(r(Q,V))}const y=P(),R=P(),X=["Latin","Greek","Cyrillic"].map(((A,t)=>[A,P(),t?P():0])),z=s((()=>{let A=P();if(A.size)return A})),O=new Set(r(Q)),S=function(A){let t=r(A).sort(((A,t)=>A-t));return function e(){let n=[];for(;;){let o=r(A,t);if(0==o.length)break;n.push({set:new Set(o),node:e()})}n.sort(((A,t)=>t.set.size-A.set.size));let o=A(),s=o%3;o=o/3|0;let l=!!(1&o);return o>>=1,{branches:n,valid:s,fe0f:l,save:1==o,check:2==o}}()}(Q),j=P();function Y(A){let t=A.lastIndexOf(95);for(;t>0;)if(95!==A[--t])throw new Error("underscore only allowed at start")}function v(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function Z(A,t,e,n,r){let o=-1;if(A[0]===t){if(n)throw new Error(`leading ${e}`);o=0}for(;;){let n=A.indexOf(t,o+1);if(-1==n)break;if(o==n-1)throw new Error(`adjacent ${e}`);o=n}if(r&&o==A.length-1)throw new Error(`trailing ${e}`)}function W(A){let t=0;for(;t=A.indexOf(183,t),-1!=t;){if(108!==A[t-1]||108!==A[t+1])throw new Error("ContextO: middle dot");t+=2}}function q(A){for(let t=0;t<X.length;t++){let[e,n,r]=X[t];if(A.some((A=>n.has(A)))){for(let n=t+1;n<X.length;n++){let[t,r]=X[n];if(A.some((A=>r.has(A))))throw new Error(`mixed-script confusable: ${e} + ${t}`)}if(r&&A.every((A=>!n.has(A)||r.has(A))))throw new Error(`whole-script confusable: ${e}`);break}}}function $(A){for(let t of z)if(A.some((A=>t.has(A)))){if(!A.every((A=>t.has(A)||65039==A)))throw new Error("excluded script cannot mix");break}}function _(A){for(let t=0,e=-1;t<A.length;t++)if(y.has(A[t])){if(0==t)throw new Error("leading combining mark");if(t==e)throw new Error(`adjacent combining marks "${f(A.slice(t-2,t+1))}"`);{let e=A[t-1];if(65039==e||R.has(e))throw new Error("isolate combining mark")}e=t+1}}function AA(A){for(let t of A.split(".")){if(!t)throw new Error("Empty label");try{let A=c(t);Y(A),v(A),Z(A,8217,"apostrophe",!0,!0),W(A),q(A);let e=I(oA(t,(()=>[65039])));_(e),$(e)}catch(A){throw new Error(`Invalid label "${t}": ${A.message}`)}}return A}function tA(A,t=H){return f(t(oA(A,rA)))}function eA(A){return AA(tA(A))}function nA(A){return f(H(oA(A,(A=>A))))}function rA(A){return A.filter((A=>65039!=A))}function oA(A,t){let e=c(A).reverse(),n=[];for(;e.length;){let A=sA(e);if(A)n.push(...t(A));else{let A=e.pop();if(b.has(A))n.push(A);else{let t=N.get(A);if(t)n.push(...t);else if(!K.has(A))throw new Error(`Disallowed codepoint: 0x${E(A)}`)}}}return n}function sA(A,t){let e,n,r=S,o=[],s=A.length;for(t&&(t.length=0);s;){let l=A[--s],i=r.branches.find((A=>A.set.has(l)));if(!i)break;if(r=i.node,r.save)n=l;else if(r.check&&l===n)break;o.push(l),r.fe0f&&(o.push(65039),s>0&&65039==A[s-1]&&s--),r.valid&&(e=lA(o,r),t&&t.push(...A.slice(s).reverse()),A.length=s)}if(!e){let n=A[A.length-1];O.has(n)&&(t&&t.push(n),e=[n],A.pop())}return e}function lA(A,t){let e=A.slice();return 2==t.valid&&e.splice(1,1),e}function iA(){let A=[...O].map((A=>[A]));return function t(e,n,r){if(e.save)r=n[n.length-1];else if(e.check&&r===n[n.length-1])return;e.fe0f&&n.push(65039),e.valid&&A.push(lA(n,e));for(let A of e.branches)for(let e of A.set)t(A.node,[...n,e],r)}(S,[]),A}function wA(A){let t=c(A).reverse(),e=[],n=[];for(;t.length;){let A=sA(t,e);if(A)n.push({type:"emoji",emoji:A,input:e.slice(),cps:rA(A)});else{let A=t.pop();if(46===A)n.push({type:"stop"});else if(b.has(A))R.has(A)?n.push({type:"isolated",cp:A}):n.push({type:"valid",cps:[A]});else if(K.has(A))n.push({type:"ignored",cp:A});else{let t=N.get(A);t?n.push({type:"mapped",cp:A,cps:t.slice()}):n.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<n.length;A++){let e=n[A];if(QA(e.type))if(EA(e.cps)){let e=A+1;for(let A=e;A<n.length;A++){let{type:t,cps:r}=n[A];if(QA(t)){if(!EA(r))break;e=A+1}else if("ignored"!==t)break}t<0&&(t=A);let r=n.slice(t,e),o=r.flatMap((A=>QA(A.type)?A.cps:[])),s=H(o);f(o)===f(s)?A=e-1:(n.splice(t,e-t,{type:"nfc",input:o,cps:s,tokens:BA(r)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return BA(n)}function QA(A){return"valid"===A||"mapped"===A}function EA(A){return A.some((A=>j.has(A)))}function BA(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}function cA(A){return A<26?97+A:22+A}function fA(A,t){let e=A-t;return e<=0?1:e>=26?26:e}function aA(A,t,e){A=Math.floor(A/(e?700:2)),A+=Math.floor(A/t);let n=0;for(;A>455;)A=Math.floor(A/35),n+=36;return n+Math.floor(36*A/(A+38))}const CA=new Set(c("-.0123456789abcdefghijklmnopqrstuvwxyz"));function DA(A){if((A=A.split(".").map((A=>{if(!A)return"";let t=A;try{let A=c(t),e=function(A,t){if(!Array.isArray(A)||!A.every((A=>Number.isSafeInteger(A)&&A>=0&&A<=1114111)))throw new TypeError("expected array of Unicode codepoints");return function(A,t){let e=A.filter((A=>A<128)),n=e.length;if(n==A.length)return A;t&&e.splice(0,0,120,110,45,45),n&&e.push(45);let r=128,o=72,s=0,l=n;for(;l<A.length;){let t=A.reduce(((A,t)=>t>=r&&t<A?t:A),1114111);s+=(t-r)*(l+1);for(let r of A)if(r<t)s++;else if(r==t){let A=s;for(let t=36;;t+=36){let n=fA(t,o),r=A-n;if(r<0)break;let s=36-n;e.push(cA(n+r%s)),A=Math.floor(r/s)}e.push(cA(A)),o=aA(s,l+1,l==n),s=0,l++}s++,r=t+1}return e}(A,t)}(A);for(let A of e)if(!CA.has(A))throw new Error(`invalid ASCII: "${C(String.fromCodePoint(A))}"`);if(e===A){if(t.startsWith("xn--"))throw new Error("punycode literal");if("--"===t.slice(2,4))throw new Error("invalid label extension");if(t.startsWith("-"))throw new Error("leading hyphen");if(t.endsWith("-"))throw new Error("trailing hyphen")}else t="xn--"+String.fromCodePoint(...e);if(t.length>63)throw new Error(`too long: ${t.length} > 63`)}catch(t){throw new Error(`Invalid label "${C(A)}": ${t.message}`)}return t})).join(".")).length>253)throw new Error(`Name too long: ${A.length} > 253`);return A}function gA(A){return A.map(E).join(" ")}function dA(){let A=document.createElement("span");return A.classList.add("arrow"),A.innerHTML="➔",A}function uA(A){let t=document.createElement("span");if(8205==A)t.classList.add("mod","zwj"),t.innerHTML="ZWJ";else if(8204==A)t.classList.add("mod","zwj"),t.innerHTML="ZWNJ";else if(65039==A)t.classList.add("mod","dropped","style"),t.innerHTML="FE0F";else if(8419==A)t.classList.add("mod","keycap"),t.innerHTML="Keycap";else if(A>=917536&&A<=917631){A-=917504;let e,n=String.fromCodePoint(A);t.classList.add("mod","tag"),127===A?e="End":(e=a(n),e!==n&&t.classList.add("code")),t.innerHTML=`<span class="tag">${e}<sub>🏷️</sub></span>`}else{let e=String.fromCodePoint(A),n=a(e,E);n!==e&&t.classList.add("code"),t.classList.add("raw"),t.innerHTML=n}return t}function pA(A,t){let e=document.createElement("div");return e.classList.add("tokens"),t&&(A=A.flatMap((A=>"nfc"===A.type?A.tokens:A))),e.append(...A.flatMap((A=>{let e;if("emoji"===A.type){let n=t?A.input:A.cps;e=document.createElement("a"),e.href=`https://emojipedia.org/${String.fromCodePoint(...A.emoji)}`,e.title=`Emoji\n${gA(n)}`,e.classList.add("glyph"),e.append(...n.map((A=>uA(A))))}else if("nfc"===A.type){e=document.createElement("div"),e.classList.add("nfc");let t=pA(A.tokens,!1);t.classList.add("before");let n=document.createElement("div");n.classList.add("valid"),n.innerHTML=String.fromCodePoint(...A.cps),n.title=`NFC\n${gA(A.cps)}`,e.append(t,dA(),n)}else if(e=document.createElement("div"),"valid"===A.type)e.classList.add("valid"),e.innerHTML=String.fromCodePoint(...A.cps),e.title=`Valid\n${gA(A.cps)}`;else if("mapped"===A.type){e.classList.add("mapped");let n=document.createElement("span");n.classList.add("before"),n.innerHTML=String.fromCodePoint(A.cp),n.title=`Mapped\n${E(A.cp)}`,e.append(n),t||e.append(dA(),...A.cps.map((A=>{let t=document.createElement("span");return t.innerHTML=String.fromCodePoint(A),t.title=E(A),t})))}else if("ignored"===A.type)e.innerHTML=E(A.cp),e.title=`Ignored\n${E(A.cp)}`,e.classList.add("ignored");else if("disallowed"===A.type)e=uA(A.cp),e.classList.add("disallowed"),e.title=`Disallowed\n${E(A.cp)}`;else if("stop"===A.type)e.classList.add("stop"),e.innerHTML=".";else{if("isolated"!==A.type)throw new TypeError(`unknown token type: ${A.type}`);e.classList.add("isolated"),e.innerHTML=String.fromCodePoint(A.cp),e.title=`Valid (Isolated)\n${E(A.cp)}`}return e}))),e}function MA(){let A=document.createElement("style");A.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t\tfont-size: 70%;\n\t\tfont-family: monospace;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #c00;\t\n\t\tmin-width: 5px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t}\n\t.tokens .disallowed.code {\n\t\tfont-size: 65%;\n\t\tbackground: #800;\n\t}\n\t.tokens .tag sub {\n\t\tfont-size: 50%;\n\t\tcolor: #ccc;\n\t}\n\t.tokens .disallowed.mod {\n\t\tborder: 2px solid #800;\n\t\tfont-size: 80%;\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .isolated {\n\t\tborder: 2px solid #87e;\n\t\tborder-radius: 5px;\n\t\tbackground: #ecf;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 5px;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .glyph .mod {\n\t\tbackground: #333;\t\t\n\t}\n\t.tokens .glyph .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .glyph .mod.tag {\n\t\tbackground: #666;\n\t}\n\t.tokens .glyph .mod.tag sub {\n\t\tdisplay: none;\n\t}\n\t.tokens .glyph .mod.dropped {\n\t\tbackground: #aaa;\t\t\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .code {\n\t\tfont-family: monospace;\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}",document.body.append(A)}export{g as compare_arrays,DA as dns_from_normalized_ens,pA as dom_from_tokens,nA as ens_beautify,iA as ens_emoji,eA as ens_normalize,tA as ens_normalize_fragment,AA as ens_normalize_post_check,wA as ens_tokenize,a as escape_for_html,C as escape_unicode,c as explode_cp,E as hex_cp,D as is_printable_ascii,H as nfc,I as nfd,B as quote_cp,d as random_choice,u as random_sample,p as run_tests,f as str_from_cps,MA as use_default_style};

@@ -1,1 +0,1 @@

function r(r){return[...r].map((r=>r.codePointAt(0)))}function t(r){return r.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(r=>{return`{${t=r.codePointAt(0),t.toString(16).toUpperCase().padStart(2,"0")}}`;var t}))}function e(r){return r<26?97+r:22+r}function n(r,t){let e=r-t;return e<=0?1:e>=26?26:e}function o(r,t,e){r=Math.floor(r/(e?700:2)),r+=Math.floor(r/t);let n=0;for(;r>455;)r=Math.floor(r/35),n+=36;return n+Math.floor(36*r/(r+38))}const i=new Set(r("-.0123456789abcdefghijklmnopqrstuvwxyz"));function l(l){if((l=l.split(".").map((l=>{if(!l)return"";let f=l;try{let l=r(f),h=function(r,t){if(!Array.isArray(r)||!r.every((r=>Number.isSafeInteger(r)&&r>=0&&r<=1114111)))throw new TypeError("expected array of Unicode codepoints");return function(r,t){let i=r.filter((r=>r<128)),l=i.length;if(l==r.length)return r;t&&i.splice(0,0,120,110,45,45),l&&i.push(45);let f=128,h=72,a=0,u=l;for(;u<r.length;){let t=r.reduce(((r,t)=>t>=f&&t<r?t:r),1114111);a+=(t-f)*(u+1);for(let f of r)if(f<t)a++;else if(f==t){let r=a;for(let t=36;;t+=36){let o=n(t,h),l=r-o;if(l<0)break;let f=36-o;i.push(e(o+l%f)),r=Math.floor(l/f)}i.push(e(r)),h=o(a,u+1,u==l),a=0,u++}a++,f=t+1}return i}(r,t)}(l);for(let r of h)if(!i.has(r))throw new Error(`invalid ASCII: "${t(String.fromCodePoint(r))}"`);if(h===l){if(f.startsWith("xn--"))throw new Error("punycode literal");if("--"===f.slice(2,4))throw new Error("invalid label extension");if(f.startsWith("-"))throw new Error("leading hyphen");if(f.endsWith("-"))throw new Error("trailing hyphen")}else f="xn--"+String.fromCodePoint(...h);if(f.length>63)throw new Error(`too long: ${f.length} > 63`)}catch(r){throw new Error(`Invalid label "${t(l)}": ${r.message}`)}return f})).join(".")).length>253)throw new Error(`Name too long: ${l.length} > 253`);return l}export{l as dns_from_normalized_ens};
function r(r){let t=[];for(let e=0,n=r.length;e<n;){let n=r.codePointAt(e);e+=n<65536?1:2,t.push(n)}return t}function t(r){return r.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(r=>{return`{${t=r.codePointAt(0),t.toString(16).toUpperCase().padStart(2,"0")}}`;var t}))}function e(r){return r<26?97+r:22+r}function n(r,t){let e=r-t;return e<=0?1:e>=26?26:e}function o(r,t,e){r=Math.floor(r/(e?700:2)),r+=Math.floor(r/t);let n=0;for(;r>455;)r=Math.floor(r/35),n+=36;return n+Math.floor(36*r/(r+38))}const i=new Set(r("-.0123456789abcdefghijklmnopqrstuvwxyz"));function l(l){if((l=l.split(".").map((l=>{if(!l)return"";let f=l;try{let l=r(f),h=function(r,t){if(!Array.isArray(r)||!r.every((r=>Number.isSafeInteger(r)&&r>=0&&r<=1114111)))throw new TypeError("expected array of Unicode codepoints");return function(r,t){let i=r.filter((r=>r<128)),l=i.length;if(l==r.length)return r;t&&i.splice(0,0,120,110,45,45),l&&i.push(45);let f=128,h=72,a=0,u=l;for(;u<r.length;){let t=r.reduce(((r,t)=>t>=f&&t<r?t:r),1114111);a+=(t-f)*(u+1);for(let f of r)if(f<t)a++;else if(f==t){let r=a;for(let t=36;;t+=36){let o=n(t,h),l=r-o;if(l<0)break;let f=36-o;i.push(e(o+l%f)),r=Math.floor(l/f)}i.push(e(r)),h=o(a,u+1,u==l),a=0,u++}a++,f=t+1}return i}(r,t)}(l);for(let r of h)if(!i.has(r))throw new Error(`invalid ASCII: "${t(String.fromCodePoint(r))}"`);if(h===l){if(f.startsWith("xn--"))throw new Error("punycode literal");if("--"===f.slice(2,4))throw new Error("invalid label extension");if(f.startsWith("-"))throw new Error("leading hyphen");if(f.endsWith("-"))throw new Error("trailing hyphen")}else f="xn--"+String.fromCodePoint(...h);if(f.length>63)throw new Error(`too long: ${f.length} > 63`)}catch(r){throw new Error(`Invalid label "${t(l)}": ${r.message}`)}return f})).join(".")).length>253)throw new Error(`Name too long: ${l.length} > 253`);return l}export{l as dns_from_normalized_ens};

@@ -230,4 +230,4 @@ function decode_arithmetic(bytes) {

// created 2022-09-23T10:53:59.182Z
var r = read_compressed_payload('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');
// created 2022-10-01T22:13:37.621Z
var r = read_compressed_payload('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');

@@ -238,5 +238,16 @@ function hex_cp(cp) {

function explode_cp(s) {
/*
export function explode_cp(s) {
return [...s].map(c => c.codePointAt(0));
}
*/
function explode_cp(s) { // this is about 2x faster
let cps = [];
for (let pos = 0, len = s.length; pos < len; ) {
let cp = s.codePointAt(pos);
pos += cp < 0x10000 ? 1 : 2;
cps.push(cp);
}
return cps;
}

@@ -264,15 +275,20 @@ function str_from_cps(cps) {

const MAPPED = new Map(read_mapped(r));
function read_sorted_valid_set() {
function read_valid_subset() {
return new Set(read_member_array(r, SORTED_VALID));
}
const CM = read_sorted_valid_set();
const ISOLATED = read_sorted_valid_set();
const SCRIPTS = [
['Latin', read_sorted_valid_set()], // latin gets priority because of ascii
['Greek', read_sorted_valid_set(), read_sorted_valid_set()],
['Cyrillic', read_sorted_valid_set(), read_sorted_valid_set()]
];
const CM = read_valid_subset();
const ISOLATED = read_valid_subset();
const SCRIPTS = ['Latin', 'Greek', 'Cyrillic'].map((k, i) => {
// this defines the priority
// order must match make.js
// (script name, script-set, whole-set?)
return [k, read_valid_subset(), i ? read_valid_subset() : 0];
});
const EXCLUDED = read_array_while(() => {
let v = read_valid_subset();
if (v.size) return v;
});
const EMOJI_SOLO = new Set(read_member_array(r));
const EMOJI_ROOT = read_emoji_trie(r);
const NFC_CHECK = new Set(read_member_array(r, SORTED_VALID));
const NFC_CHECK = read_valid_subset();

@@ -334,3 +350,3 @@ const STOP = 0x2E;

if (cps.some(cp => script_set.has(cp))) {
for (let j = i + 1; j < SCRIPTS.length; j++) {
for (let j = i + 1; j < SCRIPTS.length; j++) { // scripts before already had no match
let [name_j, set_j] = SCRIPTS[j];

@@ -343,3 +359,3 @@ if (cps.some(cp => set_j.has(cp))) {

// https://www.unicode.org/reports/tr39/#def_whole_script_confusables
// if every char matches the script is confusable
// if every char matching the script is confusable
if (cps.every(cp => !script_set.has(cp) || whole_set.has(cp))) {

@@ -349,2 +365,3 @@ throw new Error(`whole-script confusable: ${name}`);

}
break;
}

@@ -355,3 +372,16 @@ }

// requires decomposed codepoints
function check_cm(cps) {
function check_excluded_scripts(cps) {
// https://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Exclusion_from_Identifiers
for (let set of EXCLUDED) {
if (cps.some(cp => set.has(cp))) { // first with one match
if (!cps.every(cp => set.has(cp) || cp == FE0F)) { // must match all (or emoji)
throw new Error(`excluded script cannot mix`);
}
break; // pure
}
}
}
// requires decomposed codepoints
function check_combinining_marks(cps) {
for (let i = 0, j = -1; i < cps.length; i++) {

@@ -366,3 +396,3 @@ if (CM.has(cps[i])) {

if (prev == FE0F || ISOLATED.has(prev)) {
throw new Error(`illegal combining mark`);
throw new Error(`isolate combining mark`);
}

@@ -375,2 +405,4 @@ }

// this function only makes sense if the input
// was an output of ens_normalize_fragment
function ens_normalize_post_check(norm) {

@@ -383,8 +415,9 @@ for (let label of norm.split('.')) {

check_label_extension(cps_nfc);
check_surrounding(cps_nfc, 0x2019, 'apostrophe', true, true);
check_middle_dot(cps_nfc);
check_surrounding(cps_nfc, 0x2019, 'apostrophe', true, true); // question: can this be generalized better?
check_middle_dot(cps_nfc); // this a lot of effort for 1 character
check_scripts_latin_like(cps_nfc);
// replace emoji with single character
let cps_nfd = nfd(process(label, () => [FE0F]));
check_cm(cps_nfd);
check_combinining_marks(cps_nfd);
check_excluded_scripts(cps_nfd); // idea: it's probably safe to early terminate if this is pure
} catch (err) {

@@ -397,4 +430,4 @@ throw new Error(`Invalid label "${label}": ${err.message}`);

function ens_normalize_fragment(frag) {
return str_from_cps(nfc(process(frag, filter_fe0f)));
function ens_normalize_fragment(frag, nf = nfc) {
return str_from_cps(nf(process(frag, filter_fe0f)));
}

@@ -407,6 +440,4 @@

// note: does not post_check
// insert 200B between regional indicators so they do not collapse into flags
// alternative solution: only allow valid flags
function ens_beautify(name) {
return str_from_cps(nfc(process(name, x => x))).replace(/[\u{1F1E6}-\u{1F1FF}]{2,}/gu, s => [...s].join('\u200B'));
return str_from_cps(nfc(process(name, x => x)));
}

@@ -421,3 +452,3 @@

let output = [];
while (input.length) {
while (input.length) {
let emoji = consume_emoji_reversed(input);

@@ -430,7 +461,7 @@ if (emoji) {

output.push(cp);
} else if (!IGNORED.has(cp)) {
} else {
let cps = MAPPED.get(cp);
if (cps) {
output.push(...cps);
} else {
} else if (!IGNORED.has(cp)) {
throw new Error(`Disallowed codepoint: 0x${hex_cp(cp)}`);

@@ -437,0 +468,0 @@ }

@@ -1,1 +0,1 @@

function A(A){return 1&A?~A>>1:A>>1}function e(A,e){let t=Array(A);for(let r=0,g=-1;r<A;r++)t[r]=g+=1+e();return t}function t(e,t){let r=Array(e);for(let g=0,o=0;g<e;g++)r[g]=o+=A(t());return r}function r(A,t){let r=e(A(),A),g=A(),o=e(g,A),n=function(A,e){let t=Array(A);for(let r=0;r<A;r++)t[r]=1+e();return t}(g,A);for(let A=0;A<g;A++)for(let e=0;e<n[A];e++)r.push(o[A]+e);return t?r.map((A=>t[A])):r}function g(A,e,r){let g=Array(A).fill().map((()=>[]));for(let o=0;o<e;o++)t(A,r).forEach(((A,e)=>g[e].push(A)));return g}function o(A,e){let t=1+e(),r=e(),o=function(A){let e=[];for(;;){let t=A();if(!t)break;e.push(t)}return e}(e);return g(o.length,1+A,e).flatMap(((A,e)=>{let[g,...n]=A;return Array(o[e]).fill().map(((A,e)=>{let o=e*r;return[g+e*t,n.map((A=>A+o))]}))}))}function n(A,e){return g(1+e(),1+A,e).map((A=>[A[0],A.slice(1)]))}var B=function(A){let e=0;return()=>A[e++]}(function(A){let e=0;function t(){return A[e++]<<8|A[e++]}let r=t(),g=1,o=[0,1];for(let A=1;A<r;A++)o.push(g+=t());let n=t(),B=e;e+=n;let l=0,w=0;function f(){return 0==l&&(w=w<<8|A[e++],l=8),w>>--l&1}const C=2**31,i=C>>>1,Q=C-1;let s=0;for(let A=0;A<31;A++)s=s<<1|f();let c=[],D=0,E=C;for(;;){let A=Math.floor(((s-D+1)*g-1)/E),e=0,t=r;for(;t-e>1;){let r=e+t>>>1;A<o[r]?t=r:e=r}if(0==e)break;c.push(e);let n=D+Math.floor(E*o[e]/g),B=D+Math.floor(E*o[e+1]/g)-1;for(;0==((n^B)&i);)s=s<<1&Q|f(),n=n<<1&Q,B=B<<1&Q|1;for(;n&~B&536870912;)s=s&i|s<<1&Q>>>1|f(),n=n<<1^i,B=(B^i)<<1|i|1;D=n,E=1+B-n}let p=r-4;return c.map((e=>{switch(e-p){case 3:return p+65792+(A[B++]<<16|A[B++]<<8|A[B++]);case 2:return p+256+(A[B++]<<8|A[B++]);case 1:return p+A[B++];default:return e-1}}))}(function(A){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,t)=>e[A.charCodeAt(0)]=t));let t=A.length,r=new Uint8Array(6*t>>3);for(let g=0,o=0,n=0,B=0;g<t;g++)B=B<<6|e[A.charCodeAt(g)],n+=6,n>=8&&(r[o++]=B>>(n-=8));return r}("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")));function l(A){return A.toString(16).toUpperCase().padStart(2,"0")}function w(A){return[...A].map((A=>A.codePointAt(0)))}function f(A){return String.fromCodePoint(...A)}function C(A,e){return w(f(A).normalize(e))}function i(A){return C(A,"NFC")}function Q(A){return C(A,"NFD")}const s=r(B).sort(((A,e)=>A-e)),c=new Set(s),D=new Set(r(B)),E=new Map(function(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(o(t,A))}for(;;){let t=A()-1;if(t<0)break;e.push(n(t,A))}return e.flat()}(B));function p(){return new Set(r(B,s))}const h=p(),a=p(),u=[["Latin",p()],["Greek",p(),p()],["Cyrillic",p(),p()]],F=new Set(r(B)),I=function(A){let e=r(A).sort(((A,e)=>A-e));return function t(){let g=[];for(;;){let o=r(A,e);if(0==o.length)break;g.push({set:new Set(o),node:t()})}g.sort(((A,e)=>e.set.size-A.set.size));let o=A(),n=o%3;o=o/3|0;let B=!!(1&o);return o>>=1,{branches:g,valid:n,fe0f:B,save:1==o,check:2==o}}()}(B),Y=new Set(r(B,s));function M(A){let e=A.lastIndexOf(95);for(;e>0;)if(95!==A[--e])throw new Error("underscore only allowed at start")}function y(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function k(A,e,t,r,g){let o=-1;if(A[0]===e){if(r)throw new Error(`leading ${t}`);o=0}for(;;){let r=A.indexOf(e,o+1);if(-1==r)break;if(o==r-1)throw new Error(`adjacent ${t}`);o=r}if(g&&o==A.length-1)throw new Error(`trailing ${t}`)}function K(A){let e=0;for(;e=A.indexOf(183,e),-1!=e;){if(108!==A[e-1]||108!==A[e+1])throw new Error("ContextO: middle dot");e+=2}}function S(A){for(let e=0;e<u.length;e++){let[t,r,g]=u[e];if(A.some((A=>r.has(A)))){for(let r=e+1;r<u.length;r++){let[e,g]=u[r];if(A.some((A=>g.has(A))))throw new Error(`mixed-script confusable: ${t} + ${e}`)}if(g&&A.every((A=>!r.has(A)||g.has(A))))throw new Error(`whole-script confusable: ${t}`)}}}function N(A){for(let e=0,t=-1;e<A.length;e++)if(h.has(A[e])){if(0==e)throw new Error("leading combining mark");if(e==t)throw new Error(`adjacent combining marks "${f(A.slice(e-2,e+1))}"`);{let t=A[e-1];if(65039==t||a.has(t))throw new Error("illegal combining mark")}t=e+1}}function G(A){for(let e of A.split(".")){if(!e)throw new Error("Empty label");try{let A=w(e);M(A),y(A),k(A,8217,"apostrophe",!0,!0),K(A),S(A),N(Q(O(e,(()=>[65039]))))}catch(A){throw new Error(`Invalid label "${e}": ${A.message}`)}}return A}function d(A){return f(i(O(A,X)))}function J(A){return G(d(A))}function U(A){return f(i(O(A,(A=>A)))).replace(/[\u{1F1E6}-\u{1F1FF}]{2,}/gu,(A=>[...A].join("​")))}function X(A){return A.filter((A=>65039!=A))}function O(A,e){let t=w(A).reverse(),r=[];for(;t.length;){let A=L(t);if(A)r.push(...e(A));else{let A=t.pop();if(c.has(A))r.push(A);else if(!D.has(A)){let e=E.get(A);if(!e)throw new Error(`Disallowed codepoint: 0x${l(A)}`);r.push(...e)}}}return r}function L(A,e){let t,r,g=I,o=[],n=A.length;for(e&&(e.length=0);n;){let B=A[--n],l=g.branches.find((A=>A.set.has(B)));if(!l)break;if(g=l.node,g.save)r=B;else if(g.check&&B===r)break;o.push(B),g.fe0f&&(o.push(65039),n>0&&65039==A[n-1]&&n--),g.valid&&(t=P(o,g),e&&e.push(...A.slice(n).reverse()),A.length=n)}if(!t){let r=A[A.length-1];F.has(r)&&(e&&e.push(r),t=[r],A.pop())}return t}function P(A,e){let t=A.slice();return 2==e.valid&&t.splice(1,1),t}function V(){let A=[...F].map((A=>[A]));return function e(t,r,g){if(t.save)g=r[r.length-1];else if(t.check&&g===r[r.length-1])return;t.fe0f&&r.push(65039),t.valid&&A.push(P(r,t));for(let A of t.branches)for(let t of A.set)e(A.node,[...r,t],g)}(I,[]),A}function q(A){let e=w(A).reverse(),t=[],r=[];for(;e.length;){let A=L(e,t);if(A)r.push({type:"emoji",emoji:A,input:t.slice(),cps:X(A)});else{let A=e.pop();if(46===A)r.push({type:"stop"});else if(c.has(A))a.has(A)?r.push({type:"isolated",cp:A}):r.push({type:"valid",cps:[A]});else if(D.has(A))r.push({type:"ignored",cp:A});else{let e=E.get(A);e?r.push({type:"mapped",cp:A,cps:e.slice()}):r.push({type:"disallowed",cp:A})}}}for(let A=0,e=-1;A<r.length;A++){let t=r[A];if(H(t.type))if(m(t.cps)){let t=A+1;for(let A=t;A<r.length;A++){let{type:e,cps:g}=r[A];if(H(e)){if(!m(g))break;t=A+1}else if("ignored"!==e)break}e<0&&(e=A);let g=r.slice(e,t),o=g.flatMap((A=>H(A.type)?A.cps:[])),n=i(o);f(o)===f(n)?A=t-1:(r.splice(e,t-e,{type:"nfc",input:o,cps:n,tokens:R(g)}),A=e),e=-1}else e=A;else"emoji"===t.type&&(e=-1)}return R(r)}function H(A){return"valid"===A||"mapped"===A}function m(A){return A.some((A=>Y.has(A)))}function R(A){for(let e=0;e<A.length;e++)if("valid"===A[e].type){let t=e+1;for(;t<A.length&&"valid"===A[t].type;)t++;A.splice(e,t-e,{type:"valid",cps:A.slice(e,t).flatMap((A=>A.cps))})}return A}export{U as ens_beautify,V as ens_emoji,J as ens_normalize,d as ens_normalize_fragment,G as ens_normalize_post_check,q as ens_tokenize,i as nfc,Q as nfd};
function A(A){return 1&A?~A>>1:A>>1}function t(A,t){let e=Array(A);for(let r=0,n=-1;r<A;r++)e[r]=n+=1+t();return e}function e(t,e){let r=Array(t);for(let n=0,B=0;n<t;n++)r[n]=B+=A(e());return r}function r(A,e){let r=t(A(),A),n=A(),B=t(n,A),Q=function(A,t){let e=Array(A);for(let r=0;r<A;r++)e[r]=1+t();return e}(n,A);for(let A=0;A<n;A++)for(let t=0;t<Q[A];t++)r.push(B[A]+t);return e?r.map((A=>e[A])):r}function n(A){let t=[];for(;;){let e=A();if(!e)break;t.push(e)}return t}function B(A,t,r){let n=Array(A).fill().map((()=>[]));for(let B=0;B<t;B++)e(A,r).forEach(((A,t)=>n[t].push(A)));return n}function Q(A,t){let e=1+t(),r=t(),Q=n(t);return B(Q.length,1+A,t).flatMap(((A,t)=>{let[n,...B]=A;return Array(Q[t]).fill().map(((A,t)=>{let Q=t*r;return[n+t*e,B.map((A=>A+Q))]}))}))}function w(A,t){return B(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var o=function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let r=e(),n=1,B=[0,1];for(let A=1;A<r;A++)B.push(n+=e());let Q=e(),w=t;t+=Q;let o=0,l=0;function i(){return 0==o&&(l=l<<8|A[t++],o=8),l>>--o&1}const C=2**31,f=C>>>1,E=C-1;let g=0;for(let A=0;A<31;A++)g=g<<1|i();let D=[],s=0,c=C;for(;;){let A=Math.floor(((g-s+1)*n-1)/c),t=0,e=r;for(;e-t>1;){let r=t+e>>>1;A<B[r]?e=r:t=r}if(0==t)break;D.push(t);let Q=s+Math.floor(c*B[t]/n),w=s+Math.floor(c*B[t+1]/n)-1;for(;0==((Q^w)&f);)g=g<<1&E|i(),Q=Q<<1&E,w=w<<1&E|1;for(;Q&~w&536870912;)g=g&f|g<<1&E>>>1|i(),Q=Q<<1^f,w=(w^f)<<1|f|1;s=Q,c=1+w-Q}let h=r-4;return D.map((t=>{switch(t-h){case 3:return h+65792+(A[w++]<<16|A[w++]<<8|A[w++]);case 2:return h+256+(A[w++]<<8|A[w++]);case 1:return h+A[w++];default:return t-1}}))}(function(A){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,e)=>t[A.charCodeAt(0)]=e));let e=A.length,r=new Uint8Array(6*e>>3);for(let n=0,B=0,Q=0,w=0;n<e;n++)w=w<<6|t[A.charCodeAt(n)],Q+=6,Q>=8&&(r[B++]=w>>(Q-=8));return r}("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")));function l(A){return A.toString(16).toUpperCase().padStart(2,"0")}function i(A){let t=[];for(let e=0,r=A.length;e<r;){let r=A.codePointAt(e);e+=r<65536?1:2,t.push(r)}return t}function C(A){return String.fromCodePoint(...A)}function f(A,t){return i(C(A).normalize(t))}function E(A){return f(A,"NFC")}function g(A){return f(A,"NFD")}const D=r(o).sort(((A,t)=>A-t)),s=new Set(D),c=new Set(r(o)),h=new Map(function(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(Q(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(w(e,A))}return t.flat()}(o));function a(){return new Set(r(o,D))}const F=a(),u=a(),U=["Latin","Greek","Cyrillic"].map(((A,t)=>[A,a(),t?a():0])),k=n((()=>{let A=a();if(A.size)return A})),p=new Set(r(o)),I=function(A){let t=r(A).sort(((A,t)=>A-t));return function e(){let n=[];for(;;){let B=r(A,t);if(0==B.length)break;n.push({set:new Set(B),node:e()})}n.sort(((A,t)=>t.set.size-A.set.size));let B=A(),Q=B%3;B=B/3|0;let w=!!(1&B);return B>>=1,{branches:n,valid:Q,fe0f:w,save:1==B,check:2==B}}()}(o),G=a();function V(A){let t=A.lastIndexOf(95);for(;t>0;)if(95!==A[--t])throw new Error("underscore only allowed at start")}function M(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function d(A,t,e,r,n){let B=-1;if(A[0]===t){if(r)throw new Error(`leading ${e}`);B=0}for(;;){let r=A.indexOf(t,B+1);if(-1==r)break;if(B==r-1)throw new Error(`adjacent ${e}`);B=r}if(n&&B==A.length-1)throw new Error(`trailing ${e}`)}function H(A){let t=0;for(;t=A.indexOf(183,t),-1!=t;){if(108!==A[t-1]||108!==A[t+1])throw new Error("ContextO: middle dot");t+=2}}function x(A){for(let t=0;t<U.length;t++){let[e,r,n]=U[t];if(A.some((A=>r.has(A)))){for(let r=t+1;r<U.length;r++){let[t,n]=U[r];if(A.some((A=>n.has(A))))throw new Error(`mixed-script confusable: ${e} + ${t}`)}if(n&&A.every((A=>!r.has(A)||n.has(A))))throw new Error(`whole-script confusable: ${e}`);break}}}function J(A){for(let t of k)if(A.some((A=>t.has(A)))){if(!A.every((A=>t.has(A)||65039==A)))throw new Error("excluded script cannot mix");break}}function L(A){for(let t=0,e=-1;t<A.length;t++)if(F.has(A[t])){if(0==t)throw new Error("leading combining mark");if(t==e)throw new Error(`adjacent combining marks "${C(A.slice(t-2,t+1))}"`);{let e=A[t-1];if(65039==e||u.has(e))throw new Error("isolate combining mark")}e=t+1}}function K(A){for(let t of A.split(".")){if(!t)throw new Error("Empty label");try{let A=i(t);V(A),M(A),d(A,8217,"apostrophe",!0,!0),H(A),x(A);let e=g(O(t,(()=>[65039])));L(e),J(e)}catch(A){throw new Error(`Invalid label "${t}": ${A.message}`)}}return A}function T(A,t=E){return C(t(O(A,P)))}function R(A){return K(T(A))}function Z(A){return C(E(O(A,(A=>A))))}function P(A){return A.filter((A=>65039!=A))}function O(A,t){let e=i(A).reverse(),r=[];for(;e.length;){let A=X(e);if(A)r.push(...t(A));else{let A=e.pop();if(s.has(A))r.push(A);else{let t=h.get(A);if(t)r.push(...t);else if(!c.has(A))throw new Error(`Disallowed codepoint: 0x${l(A)}`)}}}return r}function X(A,t){let e,r,n=I,B=[],Q=A.length;for(t&&(t.length=0);Q;){let w=A[--Q],o=n.branches.find((A=>A.set.has(w)));if(!o)break;if(n=o.node,n.save)r=w;else if(n.check&&w===r)break;B.push(w),n.fe0f&&(B.push(65039),Q>0&&65039==A[Q-1]&&Q--),n.valid&&(e=y(B,n),t&&t.push(...A.slice(Q).reverse()),A.length=Q)}if(!e){let r=A[A.length-1];p.has(r)&&(t&&t.push(r),e=[r],A.pop())}return e}function y(A,t){let e=A.slice();return 2==t.valid&&e.splice(1,1),e}function N(){let A=[...p].map((A=>[A]));return function t(e,r,n){if(e.save)n=r[r.length-1];else if(e.check&&n===r[r.length-1])return;e.fe0f&&r.push(65039),e.valid&&A.push(y(r,e));for(let A of e.branches)for(let e of A.set)t(A.node,[...r,e],n)}(I,[]),A}function b(A){let t=i(A).reverse(),e=[],r=[];for(;t.length;){let A=X(t,e);if(A)r.push({type:"emoji",emoji:A,input:e.slice(),cps:P(A)});else{let A=t.pop();if(46===A)r.push({type:"stop"});else if(s.has(A))u.has(A)?r.push({type:"isolated",cp:A}):r.push({type:"valid",cps:[A]});else if(c.has(A))r.push({type:"ignored",cp:A});else{let t=h.get(A);t?r.push({type:"mapped",cp:A,cps:t.slice()}):r.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<r.length;A++){let e=r[A];if(v(e.type))if(z(e.cps)){let e=A+1;for(let A=e;A<r.length;A++){let{type:t,cps:n}=r[A];if(v(t)){if(!z(n))break;e=A+1}else if("ignored"!==t)break}t<0&&(t=A);let n=r.slice(t,e),B=n.flatMap((A=>v(A.type)?A.cps:[])),Q=E(B);C(B)===C(Q)?A=e-1:(r.splice(t,e-t,{type:"nfc",input:B,cps:Q,tokens:m(n)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return m(r)}function v(A){return"valid"===A||"mapped"===A}function z(A){return A.some((A=>G.has(A)))}function m(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}export{Z as ens_beautify,N as ens_emoji,R as ens_normalize,T as ens_normalize_fragment,K as ens_normalize_post_check,b as ens_tokenize,E as nfc,g as nfd};

@@ -44,8 +44,8 @@ interface DisallowedToken {

export function ens_tokenize(name: string): Token[];
export function ens_emoji(): number[][];
export function ens_normalize_fragment(frag: string): string;
export function ens_normalize_fragment(frag: string, nf?: (cps: number[]) => number[]): string;
export function ens_normalize_post_check(norm: string): string;
export function ens_emoji(): number[][];
export function nfd(cps: number[]): number[];
export function nfc(cps: number[]): number[];
export function nfc(cps: number[]): number[];

@@ -230,4 +230,4 @@ function decode_arithmetic(bytes) {

// created 2022-09-23T10:53:59.182Z
var r$1 = read_compressed_payload('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');
// created 2022-10-01T22:13:37.621Z
var r$1 = read_compressed_payload('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');

@@ -238,5 +238,16 @@ function hex_cp(cp) {

function explode_cp(s) {
/*
export function explode_cp(s) {
return [...s].map(c => c.codePointAt(0));
}
*/
function explode_cp(s) { // this is about 2x faster
let cps = [];
for (let pos = 0, len = s.length; pos < len; ) {
let cp = s.codePointAt(pos);
pos += cp < 0x10000 ? 1 : 2;
cps.push(cp);
}
return cps;
}

@@ -247,3 +258,3 @@ function str_from_cps(cps) {

// created 2022-09-23T10:53:59.215Z
// created 2022-10-01T22:13:37.660Z
var r = read_compressed_payload('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');

@@ -431,15 +442,20 @@

const MAPPED = new Map(read_mapped(r$1));
function read_sorted_valid_set() {
function read_valid_subset() {
return new Set(read_member_array(r$1, SORTED_VALID));
}
const CM = read_sorted_valid_set();
const ISOLATED = read_sorted_valid_set();
const SCRIPTS = [
['Latin', read_sorted_valid_set()], // latin gets priority because of ascii
['Greek', read_sorted_valid_set(), read_sorted_valid_set()],
['Cyrillic', read_sorted_valid_set(), read_sorted_valid_set()]
];
const CM = read_valid_subset();
const ISOLATED = read_valid_subset();
const SCRIPTS = ['Latin', 'Greek', 'Cyrillic'].map((k, i) => {
// this defines the priority
// order must match make.js
// (script name, script-set, whole-set?)
return [k, read_valid_subset(), i ? read_valid_subset() : 0];
});
const EXCLUDED = read_array_while(() => {
let v = read_valid_subset();
if (v.size) return v;
});
const EMOJI_SOLO = new Set(read_member_array(r$1));
const EMOJI_ROOT = read_emoji_trie(r$1);
const NFC_CHECK = new Set(read_member_array(r$1, SORTED_VALID));
const NFC_CHECK = read_valid_subset();

@@ -501,3 +517,3 @@ const STOP = 0x2E;

if (cps.some(cp => script_set.has(cp))) {
for (let j = i + 1; j < SCRIPTS.length; j++) {
for (let j = i + 1; j < SCRIPTS.length; j++) { // scripts before already had no match
let [name_j, set_j] = SCRIPTS[j];

@@ -510,3 +526,3 @@ if (cps.some(cp => set_j.has(cp))) {

// https://www.unicode.org/reports/tr39/#def_whole_script_confusables
// if every char matches the script is confusable
// if every char matching the script is confusable
if (cps.every(cp => !script_set.has(cp) || whole_set.has(cp))) {

@@ -516,2 +532,3 @@ throw new Error(`whole-script confusable: ${name}`);

}
break;
}

@@ -522,3 +539,16 @@ }

// requires decomposed codepoints
function check_cm(cps) {
function check_excluded_scripts(cps) {
// https://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Exclusion_from_Identifiers
for (let set of EXCLUDED) {
if (cps.some(cp => set.has(cp))) { // first with one match
if (!cps.every(cp => set.has(cp) || cp == FE0F)) { // must match all (or emoji)
throw new Error(`excluded script cannot mix`);
}
break; // pure
}
}
}
// requires decomposed codepoints
function check_combinining_marks(cps) {
for (let i = 0, j = -1; i < cps.length; i++) {

@@ -533,3 +563,3 @@ if (CM.has(cps[i])) {

if (prev == FE0F || ISOLATED.has(prev)) {
throw new Error(`illegal combining mark`);
throw new Error(`isolate combining mark`);
}

@@ -542,2 +572,4 @@ }

// this function only makes sense if the input
// was an output of ens_normalize_fragment
function ens_normalize_post_check(norm) {

@@ -550,8 +582,9 @@ for (let label of norm.split('.')) {

check_label_extension(cps_nfc);
check_surrounding(cps_nfc, 0x2019, 'apostrophe', true, true);
check_middle_dot(cps_nfc);
check_surrounding(cps_nfc, 0x2019, 'apostrophe', true, true); // question: can this be generalized better?
check_middle_dot(cps_nfc); // this a lot of effort for 1 character
check_scripts_latin_like(cps_nfc);
// replace emoji with single character
let cps_nfd = nfd(process(label, () => [FE0F]));
check_cm(cps_nfd);
check_combinining_marks(cps_nfd);
check_excluded_scripts(cps_nfd); // idea: it's probably safe to early terminate if this is pure
} catch (err) {

@@ -564,4 +597,4 @@ throw new Error(`Invalid label "${label}": ${err.message}`);

function ens_normalize_fragment(frag) {
return str_from_cps(nfc(process(frag, filter_fe0f)));
function ens_normalize_fragment(frag, nf = nfc) {
return str_from_cps(nf(process(frag, filter_fe0f)));
}

@@ -574,6 +607,4 @@

// note: does not post_check
// insert 200B between regional indicators so they do not collapse into flags
// alternative solution: only allow valid flags
function ens_beautify(name) {
return str_from_cps(nfc(process(name, x => x))).replace(/[\u{1F1E6}-\u{1F1FF}]{2,}/gu, s => [...s].join('\u200B'));
return str_from_cps(nfc(process(name, x => x)));
}

@@ -588,3 +619,3 @@

let output = [];
while (input.length) {
while (input.length) {
let emoji = consume_emoji_reversed(input);

@@ -597,7 +628,7 @@ if (emoji) {

output.push(cp);
} else if (!IGNORED.has(cp)) {
} else {
let cps = MAPPED.get(cp);
if (cps) {
output.push(...cps);
} else {
} else if (!IGNORED.has(cp)) {
throw new Error(`Disallowed codepoint: 0x${hex_cp(cp)}`);

@@ -604,0 +635,0 @@ }

@@ -1,1 +0,1 @@

function A(A){return function(A){let e=0;return()=>A[e++]}(function(A){let e=0;function t(){return A[e++]<<8|A[e++]}let g=t(),B=1,w=[0,1];for(let A=1;A<g;A++)w.push(B+=t());let o=t(),r=e;e+=o;let E=0,Q=0;function C(){return 0==E&&(Q=Q<<8|A[e++],E=8),Q>>--E&1}const D=2**31,n=D>>>1,l=D-1;let M=0;for(let A=0;A<31;A++)M=M<<1|C();let s=[],f=0,c=D;for(;;){let A=Math.floor(((M-f+1)*B-1)/c),e=0,t=g;for(;t-e>1;){let g=e+t>>>1;A<w[g]?t=g:e=g}if(0==e)break;s.push(e);let o=f+Math.floor(c*w[e]/B),r=f+Math.floor(c*w[e+1]/B)-1;for(;0==((o^r)&n);)M=M<<1&l|C(),o=o<<1&l,r=r<<1&l|1;for(;o&~r&536870912;)M=M&n|M<<1&l>>>1|C(),o=o<<1^n,r=(r^n)<<1|n|1;f=o,c=1+r-o}let i=g-4;return s.map((e=>{switch(e-i){case 3:return i+65792+(A[r++]<<16|A[r++]<<8|A[r++]);case 2:return i+256+(A[r++]<<8|A[r++]);case 1:return i+A[r++];default:return e-1}}))}(function(A){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,t)=>e[A.charCodeAt(0)]=t));let t=A.length,g=new Uint8Array(6*t>>3);for(let B=0,w=0,o=0,r=0;B<t;B++)r=r<<6|e[A.charCodeAt(B)],o+=6,o>=8&&(g[w++]=r>>(o-=8));return g}(A)))}function e(A){return 1&A?~A>>1:A>>1}function t(A,e){let t=Array(A);for(let g=0,B=-1;g<A;g++)t[g]=B+=1+e();return t}function g(A,t){let g=Array(A);for(let B=0,w=0;B<A;B++)g[B]=w+=e(t());return g}function B(A,e){let g=t(A(),A),B=A(),w=t(B,A),o=function(A,e){let t=Array(A);for(let g=0;g<A;g++)t[g]=1+e();return t}(B,A);for(let A=0;A<B;A++)for(let e=0;e<o[A];e++)g.push(w[A]+e);return e?g.map((A=>e[A])):g}function w(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(E(t,A))}for(;;){let t=A()-1;if(t<0)break;e.push(Q(t,A))}return e.flat()}function o(A){let e=[];for(;;){let t=A();if(!t)break;e.push(t)}return e}function r(A,e,t){let B=Array(A).fill().map((()=>[]));for(let w=0;w<e;w++)g(A,t).forEach(((A,e)=>B[e].push(A)));return B}function E(A,e){let t=1+e(),g=e(),B=o(e);return r(B.length,1+A,e).flatMap(((A,e)=>{let[w,...o]=A;return Array(B[e]).fill().map(((A,e)=>{let B=e*g;return[w+e*t,o.map((A=>A+B))]}))}))}function Q(A,e){return r(1+e(),1+A,e).map((A=>[A[0],A.slice(1)]))}var C=A("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");function D(A){return A.toString(16).toUpperCase().padStart(2,"0")}function n(A){return[...A].map((A=>A.codePointAt(0)))}function l(A){return String.fromCodePoint(...A)}var M=A("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");function s(A){return A>>24&255}function f(A){return 16777215&A}const c=new Map(o((()=>{let A=B(M);if(A.length)return A})).flatMap(((A,e)=>A.map((A=>[A,e+1<<24]))))),i=new Set(B(M)),u=new Map,h=new Map;for(let[A,e]of w(M)){if(!i.has(A)&&2==e.length){let[t,g]=e,B=h.get(t);B||(B=new Map,h.set(t,B)),B.set(g,A)}u.set(A,e.reverse())}const F=44032;function p(A){return A>=F&&A<55204}function Y(A,e){if(A>=4352&&A<4371&&e>=4449&&e<4470)return F+588*(A-4352)+28*(e-4449);if(p(A)&&e>4519&&e<4547&&(A-F)%28==0)return A+(e-4519);{let t=h.get(A);return t&&(t=t.get(e),t)?t:-1}}function a(A){let e=[],t=[],g=!1;function B(A){let t=c.get(A);t&&(g=!0,A|=t),e.push(A)}for(let g of A)for(;;){if(g<128)e.push(g);else if(p(g)){let A=g-F,e=A%588/28|0,t=A%28;B(4352+(A/588|0)),B(4449+e),t>0&&B(4519+t)}else{let A=u.get(g);A?t.push(...A):B(g)}if(!t.length)break;g=t.pop()}if(g&&e.length>1){let A=s(e[0]);for(let t=1;t<e.length;t++){let g=s(e[t]);if(0==g||A<=g){A=g;continue}let B=t-1;for(;;){let t=e[B+1];if(e[B+1]=e[B],e[B]=t,!B)break;if(A=s(e[--B]),A<=g)break}A=s(e[t])}}return e}function I(A){return a(A).map(f)}function J(A){return function(A){let e=[],t=[],g=-1,B=0;for(let w of A){let A=s(w),o=f(w);if(-1==g)0==A?g=o:e.push(o);else if(B>0&&B>=A)0==A?(e.push(g,...t),t.length=0,g=o):t.push(o),B=A;else{let w=Y(g,o);w>=0?g=w:0==B&&0==A?(e.push(g),g=o):(t.push(o),B=A)}}return g>=0&&e.push(g,...t),e}(a(A))}const S=B(C).sort(((A,e)=>A-e)),T=new Set(S),K=new Set(B(C)),N=new Map(w(C));function k(){return new Set(B(C,S))}const U=k(),x=k(),X=[["Latin",k()],["Greek",k(),k()],["Cyrillic",k(),k()]],G=new Set(B(C)),L=function(A){let e=B(A).sort(((A,e)=>A-e));return function t(){let g=[];for(;;){let w=B(A,e);if(0==w.length)break;g.push({set:new Set(w),node:t()})}g.sort(((A,e)=>e.set.size-A.set.size));let w=A(),o=w%3;w=w/3|0;let r=!!(1&w);return w>>=1,{branches:g,valid:o,fe0f:r,save:1==w,check:2==w}}()}(C),P=new Set(B(C,S));function O(A){let e=A.lastIndexOf(95);for(;e>0;)if(95!==A[--e])throw new Error("underscore only allowed at start")}function y(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function V(A,e,t,g,B){let w=-1;if(A[0]===e){if(g)throw new Error(`leading ${t}`);w=0}for(;;){let g=A.indexOf(e,w+1);if(-1==g)break;if(w==g-1)throw new Error(`adjacent ${t}`);w=g}if(B&&w==A.length-1)throw new Error(`trailing ${t}`)}function H(A){let e=0;for(;e=A.indexOf(183,e),-1!=e;){if(108!==A[e-1]||108!==A[e+1])throw new Error("ContextO: middle dot");e+=2}}function d(A){for(let e=0;e<X.length;e++){let[t,g,B]=X[e];if(A.some((A=>g.has(A)))){for(let g=e+1;g<X.length;g++){let[e,B]=X[g];if(A.some((A=>B.has(A))))throw new Error(`mixed-script confusable: ${t} + ${e}`)}if(B&&A.every((A=>!g.has(A)||B.has(A))))throw new Error(`whole-script confusable: ${t}`)}}}function R(A){for(let e=0,t=-1;e<A.length;e++)if(U.has(A[e])){if(0==e)throw new Error("leading combining mark");if(e==t)throw new Error(`adjacent combining marks "${l(A.slice(e-2,e+1))}"`);{let t=A[e-1];if(65039==t||x.has(t))throw new Error("illegal combining mark")}t=e+1}}function m(A){for(let e of A.split(".")){if(!e)throw new Error("Empty label");try{let A=n(e);O(A),y(A),V(A,8217,"apostrophe",!0,!0),H(A),d(A),R(I(W(e,(()=>[65039]))))}catch(A){throw new Error(`Invalid label "${e}": ${A.message}`)}}return A}function z(A){return l(J(W(A,b)))}function j(A){return m(z(A))}function v(A){return l(J(W(A,(A=>A)))).replace(/[\u{1F1E6}-\u{1F1FF}]{2,}/gu,(A=>[...A].join("​")))}function b(A){return A.filter((A=>65039!=A))}function W(A,e){let t=n(A).reverse(),g=[];for(;t.length;){let A=q(t);if(A)g.push(...e(A));else{let A=t.pop();if(T.has(A))g.push(A);else if(!K.has(A)){let e=N.get(A);if(!e)throw new Error(`Disallowed codepoint: 0x${D(A)}`);g.push(...e)}}}return g}function q(A,e){let t,g,B=L,w=[],o=A.length;for(e&&(e.length=0);o;){let r=A[--o],E=B.branches.find((A=>A.set.has(r)));if(!E)break;if(B=E.node,B.save)g=r;else if(B.check&&r===g)break;w.push(r),B.fe0f&&(w.push(65039),o>0&&65039==A[o-1]&&o--),B.valid&&(t=Z(w,B),e&&e.push(...A.slice(o).reverse()),A.length=o)}if(!t){let g=A[A.length-1];G.has(g)&&(e&&e.push(g),t=[g],A.pop())}return t}function Z(A,e){let t=A.slice();return 2==e.valid&&t.splice(1,1),t}function $(){let A=[...G].map((A=>[A]));return function e(t,g,B){if(t.save)B=g[g.length-1];else if(t.check&&B===g[g.length-1])return;t.fe0f&&g.push(65039),t.valid&&A.push(Z(g,t));for(let A of t.branches)for(let t of A.set)e(A.node,[...g,t],B)}(L,[]),A}function _(A){let e=n(A).reverse(),t=[],g=[];for(;e.length;){let A=q(e,t);if(A)g.push({type:"emoji",emoji:A,input:t.slice(),cps:b(A)});else{let A=e.pop();if(46===A)g.push({type:"stop"});else if(T.has(A))x.has(A)?g.push({type:"isolated",cp:A}):g.push({type:"valid",cps:[A]});else if(K.has(A))g.push({type:"ignored",cp:A});else{let e=N.get(A);e?g.push({type:"mapped",cp:A,cps:e.slice()}):g.push({type:"disallowed",cp:A})}}}for(let A=0,e=-1;A<g.length;A++){let t=g[A];if(AA(t.type))if(eA(t.cps)){let t=A+1;for(let A=t;A<g.length;A++){let{type:e,cps:B}=g[A];if(AA(e)){if(!eA(B))break;t=A+1}else if("ignored"!==e)break}e<0&&(e=A);let B=g.slice(e,t),w=B.flatMap((A=>AA(A.type)?A.cps:[])),o=J(w);l(w)===l(o)?A=t-1:(g.splice(e,t-e,{type:"nfc",input:w,cps:o,tokens:tA(B)}),A=e),e=-1}else e=A;else"emoji"===t.type&&(e=-1)}return tA(g)}function AA(A){return"valid"===A||"mapped"===A}function eA(A){return A.some((A=>P.has(A)))}function tA(A){for(let e=0;e<A.length;e++)if("valid"===A[e].type){let t=e+1;for(;t<A.length&&"valid"===A[t].type;)t++;A.splice(e,t-e,{type:"valid",cps:A.slice(e,t).flatMap((A=>A.cps))})}return A}export{v as ens_beautify,$ as ens_emoji,j as ens_normalize,z as ens_normalize_fragment,m as ens_normalize_post_check,_ as ens_tokenize,J as nfc,I as nfd};
function A(A){return function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let Q=e(),w=1,B=[0,1];for(let A=1;A<Q;A++)B.push(w+=e());let E=e(),r=t;t+=E;let D=0,C=0;function n(){return 0==D&&(C=C<<8|A[t++],D=8),C>>--D&1}const o=2**31,l=o>>>1,s=o-1;let g=0;for(let A=0;A<31;A++)g=g<<1|n();let M=[],i=0,f=o;for(;;){let A=Math.floor(((g-i+1)*w-1)/f),t=0,e=Q;for(;e-t>1;){let Q=t+e>>>1;A<B[Q]?e=Q:t=Q}if(0==t)break;M.push(t);let E=i+Math.floor(f*B[t]/w),r=i+Math.floor(f*B[t+1]/w)-1;for(;0==((E^r)&l);)g=g<<1&s|n(),E=E<<1&s,r=r<<1&s|1;for(;E&~r&536870912;)g=g&l|g<<1&s>>>1|n(),E=E<<1^l,r=(r^l)<<1|l|1;i=E,f=1+r-E}let c=Q-4;return M.map((t=>{switch(t-c){case 3:return c+65792+(A[r++]<<16|A[r++]<<8|A[r++]);case 2:return c+256+(A[r++]<<8|A[r++]);case 1:return c+A[r++];default:return t-1}}))}(function(A){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((A,e)=>t[A.charCodeAt(0)]=e));let e=A.length,Q=new Uint8Array(6*e>>3);for(let w=0,B=0,E=0,r=0;w<e;w++)r=r<<6|t[A.charCodeAt(w)],E+=6,E>=8&&(Q[B++]=r>>(E-=8));return Q}(A)))}function t(A){return 1&A?~A>>1:A>>1}function e(A,t){let e=Array(A);for(let Q=0,w=-1;Q<A;Q++)e[Q]=w+=1+t();return e}function Q(A,e){let Q=Array(A);for(let w=0,B=0;w<A;w++)Q[w]=B+=t(e());return Q}function w(A,t){let Q=e(A(),A),w=A(),B=e(w,A),E=function(A,t){let e=Array(A);for(let Q=0;Q<A;Q++)e[Q]=1+t();return e}(w,A);for(let A=0;A<w;A++)for(let t=0;t<E[A];t++)Q.push(B[A]+t);return t?Q.map((A=>t[A])):Q}function B(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(D(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(C(e,A))}return t.flat()}function E(A){let t=[];for(;;){let e=A();if(!e)break;t.push(e)}return t}function r(A,t,e){let w=Array(A).fill().map((()=>[]));for(let B=0;B<t;B++)Q(A,e).forEach(((A,t)=>w[t].push(A)));return w}function D(A,t){let e=1+t(),Q=t(),w=E(t);return r(w.length,1+A,t).flatMap(((A,t)=>{let[B,...E]=A;return Array(w[t]).fill().map(((A,t)=>{let w=t*Q;return[B+t*e,E.map((A=>A+w))]}))}))}function C(A,t){return r(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var n=A("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");function o(A){return A.toString(16).toUpperCase().padStart(2,"0")}function l(A){let t=[];for(let e=0,Q=A.length;e<Q;){let Q=A.codePointAt(e);e+=Q<65536?1:2,t.push(Q)}return t}function s(A){return String.fromCodePoint(...A)}var g=A("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");function M(A){return A>>24&255}function i(A){return 16777215&A}const f=new Map(E((()=>{let A=w(g);if(A.length)return A})).flatMap(((A,t)=>A.map((A=>[A,t+1<<24]))))),c=new Set(w(g)),F=new Map,h=new Map;for(let[A,t]of B(g)){if(!c.has(A)&&2==t.length){let[e,Q]=t,w=h.get(e);w||(w=new Map,h.set(e,w)),w.set(Q,A)}F.set(A,t.reverse())}const u=44032;function U(A){return A>=u&&A<55204}function x(A,t){if(A>=4352&&A<4371&&t>=4449&&t<4470)return u+588*(A-4352)+28*(t-4449);if(U(A)&&t>4519&&t<4547&&(A-u)%28==0)return A+(t-4519);{let e=h.get(A);return e&&(e=e.get(t),e)?e:-1}}function T(A){let t=[],e=[],Q=!1;function w(A){let e=f.get(A);e&&(Q=!0,A|=e),t.push(A)}for(let Q of A)for(;;){if(Q<128)t.push(Q);else if(U(Q)){let A=Q-u,t=A%588/28|0,e=A%28;w(4352+(A/588|0)),w(4449+t),e>0&&w(4519+e)}else{let A=F.get(Q);A?e.push(...A):w(Q)}if(!e.length)break;Q=e.pop()}if(Q&&t.length>1){let A=M(t[0]);for(let e=1;e<t.length;e++){let Q=M(t[e]);if(0==Q||A<=Q){A=Q;continue}let w=e-1;for(;;){let e=t[w+1];if(t[w+1]=t[w],t[w]=e,!w)break;if(A=M(t[--w]),A<=Q)break}A=M(t[e])}}return t}function k(A){return T(A).map(i)}function a(A){return function(A){let t=[],e=[],Q=-1,w=0;for(let B of A){let A=M(B),E=i(B);if(-1==Q)0==A?Q=E:t.push(E);else if(w>0&&w>=A)0==A?(t.push(Q,...e),e.length=0,Q=E):e.push(E),w=A;else{let B=x(Q,E);B>=0?Q=B:0==w&&0==A?(t.push(Q),Q=E):(e.push(E),w=A)}}return Q>=0&&t.push(Q,...e),t}(T(A))}const J=w(n).sort(((A,t)=>A-t)),p=new Set(J),G=new Set(w(n)),I=new Map(B(n));function V(){return new Set(w(n,J))}const H=V(),L=V(),K=["Latin","Greek","Cyrillic"].map(((A,t)=>[A,V(),t?V():0])),N=E((()=>{let A=V();if(A.size)return A})),d=new Set(w(n)),R=function(A){let t=w(A).sort(((A,t)=>A-t));return function e(){let Q=[];for(;;){let B=w(A,t);if(0==B.length)break;Q.push({set:new Set(B),node:e()})}Q.sort(((A,t)=>t.set.size-A.set.size));let B=A(),E=B%3;B=B/3|0;let r=!!(1&B);return B>>=1,{branches:Q,valid:E,fe0f:r,save:1==B,check:2==B}}()}(n),P=V();function X(A){let t=A.lastIndexOf(95);for(;t>0;)if(95!==A[--t])throw new Error("underscore only allowed at start")}function O(A){if(A.length>=4&&45===A[2]&&45===A[3]&&A.every((A=>A<128)))throw new Error("invalid label extension")}function z(A,t,e,Q,w){let B=-1;if(A[0]===t){if(Q)throw new Error(`leading ${e}`);B=0}for(;;){let Q=A.indexOf(t,B+1);if(-1==Q)break;if(B==Q-1)throw new Error(`adjacent ${e}`);B=Q}if(w&&B==A.length-1)throw new Error(`trailing ${e}`)}function Y(A){let t=0;for(;t=A.indexOf(183,t),-1!=t;){if(108!==A[t-1]||108!==A[t+1])throw new Error("ContextO: middle dot");t+=2}}function b(A){for(let t=0;t<K.length;t++){let[e,Q,w]=K[t];if(A.some((A=>Q.has(A)))){for(let Q=t+1;Q<K.length;Q++){let[t,w]=K[Q];if(A.some((A=>w.has(A))))throw new Error(`mixed-script confusable: ${e} + ${t}`)}if(w&&A.every((A=>!Q.has(A)||w.has(A))))throw new Error(`whole-script confusable: ${e}`);break}}}function j(A){for(let t of N)if(A.some((A=>t.has(A)))){if(!A.every((A=>t.has(A)||65039==A)))throw new Error("excluded script cannot mix");break}}function S(A){for(let t=0,e=-1;t<A.length;t++)if(H.has(A[t])){if(0==t)throw new Error("leading combining mark");if(t==e)throw new Error(`adjacent combining marks "${s(A.slice(t-2,t+1))}"`);{let e=A[t-1];if(65039==e||L.has(e))throw new Error("isolate combining mark")}e=t+1}}function v(A){for(let t of A.split(".")){if(!t)throw new Error("Empty label");try{let A=l(t);X(A),O(A),z(A,8217,"apostrophe",!0,!0),Y(A),b(A);let e=k(q(t,(()=>[65039])));S(e),j(e)}catch(A){throw new Error(`Invalid label "${t}": ${A.message}`)}}return A}function m(A,t=a){return s(t(q(A,W)))}function Z(A){return v(m(A))}function y(A){return s(a(q(A,(A=>A))))}function W(A){return A.filter((A=>65039!=A))}function q(A,t){let e=l(A).reverse(),Q=[];for(;e.length;){let A=$(e);if(A)Q.push(...t(A));else{let A=e.pop();if(p.has(A))Q.push(A);else{let t=I.get(A);if(t)Q.push(...t);else if(!G.has(A))throw new Error(`Disallowed codepoint: 0x${o(A)}`)}}}return Q}function $(A,t){let e,Q,w=R,B=[],E=A.length;for(t&&(t.length=0);E;){let r=A[--E],D=w.branches.find((A=>A.set.has(r)));if(!D)break;if(w=D.node,w.save)Q=r;else if(w.check&&r===Q)break;B.push(r),w.fe0f&&(B.push(65039),E>0&&65039==A[E-1]&&E--),w.valid&&(e=_(B,w),t&&t.push(...A.slice(E).reverse()),A.length=E)}if(!e){let Q=A[A.length-1];d.has(Q)&&(t&&t.push(Q),e=[Q],A.pop())}return e}function _(A,t){let e=A.slice();return 2==t.valid&&e.splice(1,1),e}function AA(){let A=[...d].map((A=>[A]));return function t(e,Q,w){if(e.save)w=Q[Q.length-1];else if(e.check&&w===Q[Q.length-1])return;e.fe0f&&Q.push(65039),e.valid&&A.push(_(Q,e));for(let A of e.branches)for(let e of A.set)t(A.node,[...Q,e],w)}(R,[]),A}function tA(A){let t=l(A).reverse(),e=[],Q=[];for(;t.length;){let A=$(t,e);if(A)Q.push({type:"emoji",emoji:A,input:e.slice(),cps:W(A)});else{let A=t.pop();if(46===A)Q.push({type:"stop"});else if(p.has(A))L.has(A)?Q.push({type:"isolated",cp:A}):Q.push({type:"valid",cps:[A]});else if(G.has(A))Q.push({type:"ignored",cp:A});else{let t=I.get(A);t?Q.push({type:"mapped",cp:A,cps:t.slice()}):Q.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<Q.length;A++){let e=Q[A];if(eA(e.type))if(QA(e.cps)){let e=A+1;for(let A=e;A<Q.length;A++){let{type:t,cps:w}=Q[A];if(eA(t)){if(!QA(w))break;e=A+1}else if("ignored"!==t)break}t<0&&(t=A);let w=Q.slice(t,e),B=w.flatMap((A=>eA(A.type)?A.cps:[])),E=a(B);s(B)===s(E)?A=e-1:(Q.splice(t,e-t,{type:"nfc",input:B,cps:E,tokens:wA(w)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return wA(Q)}function eA(A){return"valid"===A||"mapped"===A}function QA(A){return A.some((A=>P.has(A)))}function wA(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}export{y as ens_beautify,AA as ens_emoji,Z as ens_normalize,m as ens_normalize_fragment,v as ens_normalize_post_check,tA as ens_tokenize,a as nfc,k as nfd};

@@ -1,1 +0,1 @@

function t(t){return t.toString(16).toUpperCase().padStart(2,"0")}function n(t){return/^[\x21-\x7E]+$/gu.test(t)}function e(n){return n.map(t).join(" ")}function o(){let t=document.createElement("span");return t.classList.add("arrow"),t.innerHTML="➔",t}function d(e,o){let d=document.createElement("span");if(8205==e)d.classList.add("mod","zwj"),d.innerHTML="ZWJ";else if(8204==e)d.classList.add("mod","zwj"),d.innerHTML="ZWNJ";else if(65039==e)d.classList.add("mod","dropped","style"),d.innerHTML="FE0F";else if(8419==e)d.classList.add("mod","keycap"),d.innerHTML="Keycap";else if(e>=917536&&e<=917631){e-=917504;let o=String.fromCodePoint(e);127===e?(d.classList.add("mod"),d.innerHTML="TagEnd"):(n(o)?d.innerHTML=o:(d=document.createElement("code"),d.innerHTML=t(e)),d.classList.add("mod","tag"))}else d.classList.add("raw"),d.innerHTML=o(e);return d}function a(s,i){let r=document.createElement("div");return r.classList.add("tokens"),i&&(s=s.flatMap((t=>"nfc"===t.type?t.tokens:t))),r.append(...s.flatMap((s=>{let r;if("emoji"===s.type){let t=i?s.input:s.cps;r=document.createElement("a"),r.href=`https://emojipedia.org/${String.fromCodePoint(...s.emoji)}`,r.title=`Emoji\n${e(t)}`,r.classList.add("glyph"),r.append(...t.map((t=>d(t,String.fromCodePoint))))}else if("nfc"===s.type){r=document.createElement("div"),r.classList.add("nfc");let t=a(s.tokens,!1);t.classList.add("before");let n=document.createElement("div");n.classList.add("valid"),n.innerHTML=String.fromCodePoint(...s.cps),n.title=`NFC\n${e(s.cps)}`,r.append(t,o(),n)}else if(r=document.createElement("div"),"valid"===s.type)r.classList.add("valid"),r.innerHTML=String.fromCodePoint(...s.cps),r.title=`Valid\n${e(s.cps)}`;else if("mapped"===s.type){r.classList.add("mapped");let n=document.createElement("span");n.classList.add("before"),n.innerHTML=String.fromCodePoint(s.cp),n.title=`Mapped\n${t(s.cp)}`,r.append(n),i||r.append(o(),...s.cps.map((n=>{let e=document.createElement("span");return e.innerHTML=String.fromCodePoint(n),e.title=t(n),e})))}else if("ignored"===s.type)r.innerHTML=t(s.cp),r.title=`Ignored\n${t(s.cp)}`,r.classList.add("ignored");else if("disallowed"===s.type)r=d(s.cp,(e=>{let o=String.fromCodePoint(e);return n(o)?o:t(e)})),r.classList.add("disallowed"),r.title=`Disallowed\n${t(s.cp)}`;else if("stop"===s.type)r.classList.add("stop"),r.innerHTML=".";else{if("isolated"!==s.type)throw new TypeError(`unknown token type: ${s.type}`);r.classList.add("isolated"),r.innerHTML=String.fromCodePoint(s.cp),r.title=`Valid (Isolated)\n${t(s.cp)}`}return r}))),r}function s(){let t=document.createElement("style");t.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t\tfont-size: 65%;\n\t\tfont-family: monospace;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #c00;\t\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t}\n\t.tokens .disallowed.raw {\n\t\tfont-size: 65%;\t\t\n\t\tfont-family: monospace;\n\t\tbackground: #800;\n\t}\n\t.tokens .disallowed.mod {\n\t\tborder: 2px solid #800;\n\t\tfont-size: 80%;\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .isolated {\n\t\tborder: 2px solid #87e;\n\t\tborder-radius: 5px;\n\t\tbackground: #ecf;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 5px;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .glyph .mod {\n\t\tbackground: #333;\t\t\n\t}\n\t.tokens .glyph .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .glyph .mod.tag {\n\t\tbackground: #33f;\n\t}\n\t.tokens .glyph .mod.dropped {\n\t\tbackground: #aaa;\t\t\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}",document.body.append(t)}export{a as dom_from_tokens,s as use_default_style};
function t(t){return t.toString(16).toUpperCase().padStart(2,"0")}function n(n){return`{${t(n)}}`}function e(t,e=n){return t.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u2800\u{E0020}-\u{E007F}])|([\x26\x3C\x3E]))/gu,((t,n,o)=>n?e(n.codePointAt(0)):`&#${o.codePointAt(0)};`))}function o(n){return n.map(t).join(" ")}function d(){let t=document.createElement("span");return t.classList.add("arrow"),t.innerHTML="➔",t}function s(n){let o=document.createElement("span");if(8205==n)o.classList.add("mod","zwj"),o.innerHTML="ZWJ";else if(8204==n)o.classList.add("mod","zwj"),o.innerHTML="ZWNJ";else if(65039==n)o.classList.add("mod","dropped","style"),o.innerHTML="FE0F";else if(8419==n)o.classList.add("mod","keycap"),o.innerHTML="Keycap";else if(n>=917536&&n<=917631){n-=917504;let t,d=String.fromCodePoint(n);o.classList.add("mod","tag"),127===n?t="End":(t=e(d),t!==d&&o.classList.add("code")),o.innerHTML=`<span class="tag">${t}<sub>🏷️</sub></span>`}else{let d=String.fromCodePoint(n),s=e(d,t);s!==d&&o.classList.add("code"),o.classList.add("raw"),o.innerHTML=s}return o}function a(n,e){let i=document.createElement("div");return i.classList.add("tokens"),e&&(n=n.flatMap((t=>"nfc"===t.type?t.tokens:t))),i.append(...n.flatMap((n=>{let i;if("emoji"===n.type){let t=e?n.input:n.cps;i=document.createElement("a"),i.href=`https://emojipedia.org/${String.fromCodePoint(...n.emoji)}`,i.title=`Emoji\n${o(t)}`,i.classList.add("glyph"),i.append(...t.map((t=>s(t))))}else if("nfc"===n.type){i=document.createElement("div"),i.classList.add("nfc");let t=a(n.tokens,!1);t.classList.add("before");let e=document.createElement("div");e.classList.add("valid"),e.innerHTML=String.fromCodePoint(...n.cps),e.title=`NFC\n${o(n.cps)}`,i.append(t,d(),e)}else if(i=document.createElement("div"),"valid"===n.type)i.classList.add("valid"),i.innerHTML=String.fromCodePoint(...n.cps),i.title=`Valid\n${o(n.cps)}`;else if("mapped"===n.type){i.classList.add("mapped");let o=document.createElement("span");o.classList.add("before"),o.innerHTML=String.fromCodePoint(n.cp),o.title=`Mapped\n${t(n.cp)}`,i.append(o),e||i.append(d(),...n.cps.map((n=>{let e=document.createElement("span");return e.innerHTML=String.fromCodePoint(n),e.title=t(n),e})))}else if("ignored"===n.type)i.innerHTML=t(n.cp),i.title=`Ignored\n${t(n.cp)}`,i.classList.add("ignored");else if("disallowed"===n.type)i=s(n.cp),i.classList.add("disallowed"),i.title=`Disallowed\n${t(n.cp)}`;else if("stop"===n.type)i.classList.add("stop"),i.innerHTML=".";else{if("isolated"!==n.type)throw new TypeError(`unknown token type: ${n.type}`);i.classList.add("isolated"),i.innerHTML=String.fromCodePoint(n.cp),i.title=`Valid (Isolated)\n${t(n.cp)}`}return i}))),i}function i(){let t=document.createElement("style");t.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t\tfont-size: 70%;\n\t\tfont-family: monospace;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #c00;\t\n\t\tmin-width: 5px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t}\n\t.tokens .disallowed.code {\n\t\tfont-size: 65%;\n\t\tbackground: #800;\n\t}\n\t.tokens .tag sub {\n\t\tfont-size: 50%;\n\t\tcolor: #ccc;\n\t}\n\t.tokens .disallowed.mod {\n\t\tborder: 2px solid #800;\n\t\tfont-size: 80%;\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .isolated {\n\t\tborder: 2px solid #87e;\n\t\tborder-radius: 5px;\n\t\tbackground: #ecf;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 5px;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .glyph .mod {\n\t\tbackground: #333;\t\t\n\t}\n\t.tokens .glyph .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .glyph .mod.tag {\n\t\tbackground: #666;\n\t}\n\t.tokens .glyph .mod.tag sub {\n\t\tdisplay: none;\n\t}\n\t.tokens .glyph .mod.dropped {\n\t\tbackground: #aaa;\t\t\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .code {\n\t\tfont-family: monospace;\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}",document.body.append(t)}export{a as dom_from_tokens,i as use_default_style};
{
"name": "@adraffy/ens-normalize",
"version": "1.6.7",
"version": "1.6.11",
"description": "Compact ES6 Ethereum Name Service (ENS) Name Normalizer",

@@ -39,3 +39,4 @@ "keywords": [

"test": "node test/validate.js",
"build": "rollup -c"
"build": "rollup -c",
"rebuild": "npm run derive && npm run make && npm run validate && npm run test && npm run build"
},

@@ -42,0 +43,0 @@ "devDependencies": {

@@ -9,5 +9,5 @@ # ens-normalize.js

* Minified File Sizes:
* [`22KB`](./dist/index-xnf.min.js) — native `NFC` via [nf-native.js](./src/nf-native.js) using `String.normalize()`
* [`31KB` **Default** ](./dist/index.min.js) — custom `NFC` via [nf.js](./src/nf.js)
* [`38KB`](./dist/all.min.js) *Everything!* — custom `NFC` + [@adraffy/punycode.js](https://github.com/adraffy/punycode.js) + sub-libraries: [dns.js](./src/dns.js), [parts.js](./src/parts.js), [utils.js](./src/utils.js)
* [`23KB`](./dist/index-xnf.min.js) — native `NFC` via [nf-native.js](./src/nf-native.js) using `String.normalize()`
* [`32KB` **Default** ](./dist/index.min.js) — custom `NFC` via [nf.js](./src/nf.js)
* [`39KB`](./dist/all.min.js) *Everything!* — custom `NFC` + [@adraffy/punycode.js](https://github.com/adraffy/punycode.js) + sub-libraries: [dns.js](./src/dns.js), [parts.js](./src/parts.js), [utils.js](./src/utils.js)
* [**Resolver Demo**](https://adraffy.github.io/ens-normalize.js/test/resolver.html)

@@ -40,3 +40,3 @@ * [List of Supported Emoji](https://adraffy.github.io/ens-normalize.js/test/emoji.html)

Normalize name fragments:
Normalize name fragments for [substring search](./test/fragment.js):
```Javascript

@@ -48,3 +48,3 @@ // these fragments fail ens_normalize() due to ens_normalize_post_check() rules

// structural logic is delayed until Post-check:
// positional logic is delayed until Post-check:
let norm_gTLD = ens_normalize_post_check('eth');

@@ -56,3 +56,4 @@ ```

// string -> Token[]
let tokens = ens_tokenize('_R💩\u{FE0F}a\u{FE0F}\u{304}\u{AD}./'); // never throws
// never throws
let tokens = ens_tokenize('_R💩\u{FE0F}a\u{FE0F}\u{304}\u{AD}./');
// [

@@ -115,1 +116,2 @@ // { type: 'isolated', cp: 95 }, // valid w/restrictions

* `npm run build` — create `/dist/`
* `npm run rebuild` — run all the commands above
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc