Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More ā†’
Socket
Sign inDemoInstall
Socket

@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.3.7 to 1.3.9

dist/ens-normalize-uts46.js

9

dist/bidi.js

@@ -122,3 +122,3 @@ function decode_arithmetic(bytes) {

const EN = read_member_set(r);
const ECTOB = read_member_set(r);
const ECTOB = read_member_set(r); // ES, CS, ET, ON, BN
const NSM = read_member_set(r);

@@ -154,8 +154,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -162,0 +159,0 @@ // 6. end with L or EN .. 0+ NSM

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

function A(A,e){let r=Array(A);for(let t=0,w=-1;t<A;t++)r[t]=w+=1+e();return r}function e(e){let r=new Set(A(e(),e)),t=e(),w=A(t,e),n=function(A,e){let r=Array(A);for(let t=0;t<A;t++)r[t]=1+e();return r}(t,e);for(let A=0;A<t;A++)for(let e=0;e<n[A];e++)r.add(w[A]+e);return r}let r=function(A){let e=function(A){let e=0;function r(){return A[e++]<<8|A[e++]}let t=r(),w=1,n=[0,1];for(let A=1;A<t;A++)n.push(w+=r());let B=r(),o=e;e+=B;let g=0,u=0;function Q(){return 0==g&&(u=u<<8|A[e++],g=8),u>>--g&1}const l=2**31,D=l>>>1,C=l-1;let E=0;for(let A=0;A<31;A++)E=E<<1|Q();let F=[],h=0,f=l;for(;;){let A=Math.floor(((E-h+1)*w-1)/f),e=0,r=t;for(;r-e>1;){let t=e+r>>>1;A<n[t]?r=t:e=t}if(0==e)break;F.push(e);let B=h+Math.floor(f*n[e]/w),o=h+Math.floor(f*n[e+1]/w)-1;for(;0==((B^o)&D);)E=E<<1&C|Q(),B=B<<1&C,o=o<<1&C|1;for(;B&~o&536870912;)E=E&D|E<<1&C>>>1|Q(),B=B<<1^D,o=(o^D)<<1|D|1;h=B,f=1+o-B}let c=t-4;return F.map((e=>{switch(e-c){case 3:return c+65792+(A[o++]<<16|A[o++]<<8|A[o++]);case 2:return c+256+(A[o++]<<8|A[o++]);case 1:return c+A[o++];default:return e-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))),r=0;return()=>e[r++]}();const t=e(r),w=e(r),n=e(r),B=e(r),o=e(r),g=e(r);function u(A){return A.some((A=>t.has(A)||n.has(A)))}function Q(A){if(0==A.length)return;let e=A.length-1;if(t.has(A[0])){if(!A.every((A=>t.has(A)||n.has(A)||B.has(A)||o.has(A)||g.has(A))))throw new Error("RTL: disallowed properties");for(;g.has(A[e]);)e--;if(e=A[e],!(t.has(e)||B.has(e)||n.has(e)))throw new Error("RTL: disallowed ending");let r=A.some((A=>B.has(A))),w=A.some((A=>n.has(A)));if(r&&w)throw new Error("RTL: AN+EN")}else{if(!w.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>w.has(A)||B.has(A)||o.has(A)||g.has(A))))throw new Error("LTR: disallowed properties");for(;g.has(A[e]);)e--;if(e=A[e],!w.has(e)&&!B.has(e))throw new Error("LTR: disallowed ending")}}function l(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function D(A){return A.split(".").some((A=>u(l(A))))}function C(A){let e=A.split(".").map(l);if(e.some(u))for(let A of e)try{Q(A)}catch(e){throw new Error(`Disallowed bidi label "${escape_unicode(String.fromCodePoint(...A))}": ${e.message}`)}}export{C as check_bidi,D as is_bidi_domain_name,u as is_bidi_label,Q as validate_bidi_label};
function A(A,e){let r=Array(A);for(let t=0,w=-1;t<A;t++)r[t]=w+=1+e();return r}function e(e){let r=new Set(A(e(),e)),t=e(),w=A(t,e),n=function(A,e){let r=Array(A);for(let t=0;t<A;t++)r[t]=1+e();return r}(t,e);for(let A=0;A<t;A++)for(let e=0;e<n[A];e++)r.add(w[A]+e);return r}let r=function(A){let e=function(A){let e=0;function r(){return A[e++]<<8|A[e++]}let t=r(),w=1,n=[0,1];for(let A=1;A<t;A++)n.push(w+=r());let B=r(),o=e;e+=B;let g=0,u=0;function Q(){return 0==g&&(u=u<<8|A[e++],g=8),u>>--g&1}const l=2**31,D=l>>>1,C=l-1;let E=0;for(let A=0;A<31;A++)E=E<<1|Q();let F=[],h=0,f=l;for(;;){let A=Math.floor(((E-h+1)*w-1)/f),e=0,r=t;for(;r-e>1;){let t=e+r>>>1;A<n[t]?r=t:e=t}if(0==e)break;F.push(e);let B=h+Math.floor(f*n[e]/w),o=h+Math.floor(f*n[e+1]/w)-1;for(;0==((B^o)&D);)E=E<<1&C|Q(),B=B<<1&C,o=o<<1&C|1;for(;B&~o&536870912;)E=E&D|E<<1&C>>>1|Q(),B=B<<1^D,o=(o^D)<<1|D|1;h=B,f=1+o-B}let c=t-4;return F.map((e=>{switch(e-c){case 3:return c+65792+(A[o++]<<16|A[o++]<<8|A[o++]);case 2:return c+256+(A[o++]<<8|A[o++]);case 1:return c+A[o++];default:return e-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))),r=0;return()=>e[r++]}();const t=e(r),w=e(r),n=e(r),B=e(r),o=e(r),g=e(r);function u(A){return A.some((A=>t.has(A)||n.has(A)))}function Q(A){if(0==A.length)return;let e=A.length-1;if(t.has(A[0])){if(!A.every((A=>t.has(A)||n.has(A)||B.has(A)||o.has(A)||g.has(A))))throw new Error("RTL: disallowed properties");for(;g.has(A[e]);)e--;if(e=A[e],!(t.has(e)||B.has(e)||n.has(e)))throw new Error("RTL: disallowed ending");if(A.some((A=>B.has(A)))&&A.some((A=>n.has(A))))throw new Error("RTL: AN+EN")}else{if(!w.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>w.has(A)||B.has(A)||o.has(A)||g.has(A))))throw new Error("LTR: disallowed properties");for(;g.has(A[e]);)e--;if(e=A[e],!w.has(e)&&!B.has(e))throw new Error("LTR: disallowed ending")}}function l(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function D(A){return A.split(".").some((A=>u(l(A))))}function C(A){let e=A.split(".").map(l);if(e.some(u))for(let A of e)try{Q(A)}catch(e){throw new Error(`Disallowed bidi label "${escape_unicode(String.fromCodePoint(...A))}": ${e.message}`)}}export{C as check_bidi,D as is_bidi_domain_name,u as is_bidi_label,Q as validate_bidi_label};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -689,3 +634,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -721,8 +666,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -749,4 +691,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -838,5 +780,5 @@ // apply relative checks

const BUILT = '2021-12-27T05:53:52.428Z';
const BUILT = '2022-01-05T07:15:53.378Z';
const UNICODE = '14.0.0';
const VERSION = '1.3.7';
const VERSION = '1.3.9';
const IDNA = '2003';

@@ -910,7 +852,6 @@ let r = decode_payload(PAYLOAD);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -922,15 +863,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -952,6 +892,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -958,0 +897,0 @@ throw label_error(cps, err.message);

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

function A(A){let w=function(A){let w=0;function Q(){return A[w++]<<8|A[w++]}let B=Q(),C=1,E=[0,1];for(let A=1;A<B;A++)E.push(C+=Q());let e=Q(),t=w;w+=e;let M=0,D=0;function r(){return 0==M&&(D=D<<8|A[w++],M=8),D>>--M&1}const g=2**31,n=g>>>1,c=g-1;let o=0;for(let A=0;A<31;A++)o=o<<1|r();let i=[],l=0,x=g;for(;;){let A=Math.floor(((o-l+1)*C-1)/x),w=0,Q=B;for(;Q-w>1;){let B=w+Q>>>1;A<E[B]?Q=B:w=B}if(0==w)break;i.push(w);let e=l+Math.floor(x*E[w]/C),t=l+Math.floor(x*E[w+1]/C)-1;for(;0==((e^t)&n);)o=o<<1&c|r(),e=e<<1&c,t=t<<1&c|1;for(;e&~t&536870912;)o=o&n|o<<1&c>>>1|r(),e=e<<1^n,t=(t^n)<<1|n|1;l=e,x=1+t-e}let f=B-4;return i.map((w=>{switch(w-f){case 3:return f+65792+(A[t++]<<16|A[t++]<<8|A[t++]);case 2:return f+256+(A[t++]<<8|A[t++]);case 1:return f+A[t++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),Q=0;return()=>w[Q++]}function w(A){return 1&A?~A>>1:A>>1}function Q(A,w){let Q=Array(A);for(let B=0,C=-1;B<A;B++)Q[B]=C+=1+w();return Q}function B(A,Q){let B=Array(A);for(let C=0,E=0;C<A;C++)B[C]=E+=w(Q());return B}function C(A){let w=new Set(Q(A(),A)),B=A(),C=Q(B,A),E=function(A,w){let Q=Array(A);for(let B=0;B<A;B++)Q[B]=1+w();return Q}(B,A);for(let A=0;A<B;A++)for(let Q=0;Q<E[A];Q++)w.add(C[A]+Q);return w}function E(A){let w=[];for(;;){let Q=A();if(0==Q)break;w.push(M(Q,A))}for(;;){let Q=A()-1;if(Q<0)break;w.push(D(Q,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function e(A){let w=[];for(;;){let Q=A();if(0==Q)break;w.push(Q)}return w}function t(A,w,Q,C){let E=Array(A).fill().map((()=>[]));for(let e=0;e<w;e++)B(A,Q).forEach(((A,w)=>E[w].push(C?C[A]:A)));return E}function M(A,w){let Q=1+w(),B=w(),C=e(w);return t(C.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),C[w],Q,B]))}function D(A,w){return t(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function r(A,w){for(let[Q,B,C,E,e]of A){let A=w-Q;if(A<0)break;if(C>0){if(A<E*C&&A%E==0){let w=A/E;return B.map((A=>A+w*e))}}else if(0==A)return B}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function n(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function c(A,w,Q){let B=[],C=[],E=[C];function e(){B.length>0&&(C.push({v:B}),B=[])}for(let t=0;t<A.length;t++){if(w){let[Q,B]=w(A,t);if(Q>0){e(),C.push({e:B,u:A.slice(t,t+Q)}),t+=Q-1;continue}}let M=Q(A[t]);Array.isArray(M)?B.push(...M):(e(),M?C.push(M):(C=[],E.push(C)))}return e(),E}let o=A("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");const i=Array(1+o()).fill().map((()=>C(o))),l=E(o),x=C(o),f=44032;function S(A){return A>=f&&A<55204}function T(A,w){if(A<128)w(A);else if(S(A)){let Q=A-f,B=Q%588/28|0,C=Q%28;w(4352+(Q/588|0)),w(4449+B),C>0&&w(4519+C)}else{let Q=r(l,A);if(Q)for(let A of Q)T(A,w);else w(A)}}function s(A,w){let Q=[];function B(){Q.sort(((A,w)=>A[0]-w[0])).forEach((([A,Q])=>w(A,Q))),Q.length=0}function C(A){let C=1+i.findIndex((w=>w.has(A)));0==C?(B(),w(C,A)):Q.push([C,A])}A.forEach((A=>T(A,C))),B()}let u=A("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");const L=C(u),U=C(u),G=C(u),F=C(u),J=C(u),I=C(u);function R(A){if(0==A.length)return;let w=A.length-1;if(L.has(A[0])){if(!A.every((A=>L.has(A)||G.has(A)||F.has(A)||J.has(A)||I.has(A))))throw new Error("RTL: disallowed properties");for(;I.has(A[w]);)w--;if(w=A[w],!(L.has(w)||F.has(w)||G.has(w)))throw new Error("RTL: disallowed ending");let Q=A.some((A=>F.has(A))),B=A.some((A=>G.has(A)));if(Q&&B)throw new Error("RTL: AN+EN")}else{if(!U.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>U.has(A)||F.has(A)||J.has(A)||I.has(A))))throw new Error("LTR: disallowed properties");for(;I.has(A[w]);)w--;if(w=A[w],!U.has(w)&&!F.has(w))throw new Error("LTR: disallowed ending")}}let N=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const K=C(N),k=C(N),H=C(N),V=C(N),p=C(N),Y=C(N),h=C(N),z="2021-12-27T05:53:52.428Z",a="14.0.0",O="1.3.7",P="2003";let b=A("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");const X=C(b),d=C(b),y=C(b),j=E(b),Z=C(b),m=b()&&function(A){const w=C(A),Q=C(A),B=C(A),E=C(A),M=C(A),D=C(A),r=C(A),g=C(A),n=C(A),c=function(A,w){let Q=[];for(;;){let B=e(A);if(0==B.length)break;let C=1+A();Q.push(...B.reduce(((Q,B)=>t(C,B,A,w).map(((A,w)=>Q[w].concat(8205,A)))),t(C,B.shift(),A,w)))}return new Set(Q.map((A=>String.fromCodePoint(...A))))}(A,[...E,...D].sort(((A,w)=>A-w))),o=65039,i=8419;function l(A,w){let Q=A[w],B=A[w+1];if(g.has(Q)&&B&&r.has(B))return[2,[Q,B]];if(B==o){if(E.has(Q))return[2,[Q]];if(D.has(Q)||M.has(Q))return[2,[Q,o]]}return E.has(Q)||D.has(Q)?[1,[Q]]:void 0}return function(A,C){let E=A[C],e=A.length;if(C+2<=e&&w.has(E)){let Q=A[C+1];if(w.has(Q))return[2,[E,Q]];if(!l(A,C))return[0]}let t=Q.has(E);if(C+2<=e&&t&&A[C+1]==i)return[2,[E,i]];if(C+3<=e&&(t||B.has(E))&&A[C+1]==o&&A[C+2]==i)return[3,t?[E,i]:[E,o,i]];let M=l(A,C);if(!M)return[0];let D=M[0]+C,r=M[1].slice(),g=!1;for(;D+1<e&&8205===A[D];){let w=l(A,D+1);if(!w)break;g=!0,D+=1+w[0],r.push(8205,...w[1])}if(g){let A=String.fromCodePoint(...r);if(!c.has(A.replace(/\u{FE0F}/gu,"")))return M}else if(D+2<e&&n.has(A[D])){let w=D+1;for(;w+1<e&&n.has(A[w]);)w++;if(917631==A[w++])return[w-C,r]}return[D-C,r]}}(b);function v(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],Q=[],B=-1,C=0;return s(A,(function(A,E){if(-1===B)0==A?B=E:w.push(E);else if(C>0&&C>=A)0==A?(w.push(B,...Q),Q.length=0,B=E):Q.push(E),C=A;else{let e=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return f+(588*(A-4352)+28*(w-4449));if(S(A)&&w>4519&&w<4547&&(A-f)%28==0)return A+(w-4519);for(let[Q,B]of l)if(2==B.length&&B[0]==A&&B[1]==w){if(x.has(Q))break;return Q}return-1}(B,E);e>=0?B=e:0==C&&0==A?(w.push(B),B=E):(Q.push(E),C=A)}})),B>=0&&w.push(B),w.push(...Q),w}(w)))}function W(A,w){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${w}`)}function q(A){const w=45;let Q=c(n(A),m,(A=>{if(X.has(A))return;if(y.has(A))return[];if(d.has(A))return[A];let w=r(j,A);if(w)return w;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let Q=v(A);if(Q.length>=4&&Q[2]==w&&Q[3]==w&&120==Q[0]&&110==Q[1]){let w;try{w=function(A){let w=[],Q=A.lastIndexOf(45);for(let B=0;B<Q;B++){let Q=A[B];if(Q>=128)throw new Error("expected ASCII");w.push(Q)}Q++;let B=0,C=128,E=72;for(;Q<A.length;){let e=B;for(let w=1,C=36;;C+=36){if(Q>=A.length)throw new Error("invalid encoding");let e=A[Q++];if(e>=48&&e<=57)e-=22;else{if(!(e>=97&&e<=122))throw new Error(`invalid character ${e}`);e-=97}B+=e*w;const t=C<=E?1:C>=E+26?26:C-E;if(e<t)break;w*=36-t}let t=w.length+1,M=0==e?B/700|0:B-e>>1;M+=M/t|0;let D=0;for(;M>455;D+=36)M=M/35|0;E=D+36*M/(M+38)|0,C+=B/t|0,B%=t,w.splice(B++,0,C)}return w}(Q.slice(4)),[A]=c(w,m,(A=>d.has(A)?[A]:[]));let B=v(A);if(w.length!=B.length||!w.every(((A,w)=>A==B[w])))throw new Error("not normalized")}catch(A){throw W(Q,`punycode: ${A.message}`)}Q=w}let B=A.flatMap((({v:A})=>A??[]));if(Q.length>0){if(Q.length>=4&&Q[2]==w&&Q[3]==w)throw W(Q,"invalid label extension");if(Q[0]==w)throw W(Q,"leading hyphen");if(Q[Q.length-1]==w)throw W(Q,"trailing hyphen");if(Z.has(Q[0]))throw W(Q,"leading combining mark");try{!function(A){for(let w=0,Q=A.length-1;w<=Q;w++){switch(A[w]){case 8204:if(w>0&&K.has(A[w-1]))continue;if(w>0&&w<Q){let B=w-1;for(;B>0&&k.has(A[B]);)B--;if(H.has(A[B])){let B=w+1;for(;B<Q&&k.has(A[B]);)B++;if(V.has(A[B]))continue}}break;case 8205:if(w>0&&K.has(A[w-1]))continue;break;case 183:if(w>0&&w<Q&&108==A[w-1]&&108==A[w+1])continue;break;case 885:if(w<Q&&p.has(A[w+1]))continue;break;case 1523:case 1524:if(w>0&&Y.has(A[w-1]))continue;break;default:continue}throw new Error(`No context for "${g(String.fromCodePoint(A[w]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>h.has(A))))throw new Error("Disallowed katakana")}(B)}catch(A){throw W(Q,A.message)}}return{tokens:A,cps:Q,text:B}}));if(Q.some((A=>A.text.some((A=>L.has(A)||G.has(A))))))for(let{text:A,cps:w}of Q)try{R(A)}catch(A){throw W(w,`bidi: ${A.message}`)}return Q.map((A=>String.fromCodePoint(...A.cps))).join(".")}function $(A){return c(n(A),m,(A=>{if(X.has(A))return{};if(d.has(A))return[A];if(y.has(A))return{i:A};let w=r(j,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{z as BUILT,P as IDNA,a as UNICODE,O as VERSION,q as ens_normalize,$ as ens_tokenize};
function A(A){let w=function(A){let w=0;function Q(){return A[w++]<<8|A[w++]}let B=Q(),C=1,E=[0,1];for(let A=1;A<B;A++)E.push(C+=Q());let t=Q(),e=w;w+=t;let r=0,M=0;function D(){return 0==r&&(M=M<<8|A[w++],r=8),M>>--r&1}const g=2**31,n=g>>>1,o=g-1;let c=0;for(let A=0;A<31;A++)c=c<<1|D();let i=[],l=0,f=g;for(;;){let A=Math.floor(((c-l+1)*C-1)/f),w=0,Q=B;for(;Q-w>1;){let B=w+Q>>>1;A<E[B]?Q=B:w=B}if(0==w)break;i.push(w);let t=l+Math.floor(f*E[w]/C),e=l+Math.floor(f*E[w+1]/C)-1;for(;0==((t^e)&n);)c=c<<1&o|D(),t=t<<1&o,e=e<<1&o|1;for(;t&~e&536870912;)c=c&n|c<<1&o>>>1|D(),t=t<<1^n,e=(e^n)<<1|n|1;l=t,f=1+e-t}let x=B-4;return i.map((w=>{switch(w-x){case 3:return x+65792+(A[e++]<<16|A[e++]<<8|A[e++]);case 2:return x+256+(A[e++]<<8|A[e++]);case 1:return x+A[e++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),Q=0;return()=>w[Q++]}function w(A){return 1&A?~A>>1:A>>1}function Q(A,w){let Q=Array(A);for(let B=0,C=-1;B<A;B++)Q[B]=C+=1+w();return Q}function B(A,Q){let B=Array(A);for(let C=0,E=0;C<A;C++)B[C]=E+=w(Q());return B}function C(A){let w=new Set(Q(A(),A)),B=A(),C=Q(B,A),E=function(A,w){let Q=Array(A);for(let B=0;B<A;B++)Q[B]=1+w();return Q}(B,A);for(let A=0;A<B;A++)for(let Q=0;Q<E[A];Q++)w.add(C[A]+Q);return w}function E(A){let w=[];for(;;){let Q=A();if(0==Q)break;w.push(r(Q,A))}for(;;){let Q=A()-1;if(Q<0)break;w.push(M(Q,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function t(A){let w=[];for(;;){let Q=A();if(0==Q)break;w.push(Q)}return w}function e(A,w,Q,C){let E=Array(A).fill().map((()=>[]));for(let t=0;t<w;t++)B(A,Q).forEach(((A,w)=>E[w].push(C?C[A]:A)));return E}function r(A,w){let Q=1+w(),B=w(),C=t(w);return e(C.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),C[w],Q,B]))}function M(A,w){return e(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function D(A,w,Q){let B={};for(;;){let C=w(A);if(0==C.length)break;let E=1+A(),t=Array(E).fill(B);for(let w of C)t=e(E,w,A,Q).map(((A,w)=>{let Q=t[w],B=String.fromCodePoint(...A),C=Q[B];return C||(C=Q[B]={}),C}));t.forEach((A=>A[""]=1))}return B}function g(A,w){for(let[Q,B,C,E,t]of A){let A=w-Q;if(A<0)break;if(C>0){if(A<E*C&&A%E==0){let w=A/E;return B.map((A=>A+w*t))}}else if(0==A)return B}}function n(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function c(A,w,Q){let B=[],C=[],E=[C];function t(){B.length>0&&(C.push({v:B}),B=[])}for(let e=0;e<A.length;e++){if(w){let[Q,B]=w(A,e);if(Q>0){t(),C.push({e:B,u:A.slice(e,e+Q)}),e+=Q-1;continue}}let r=Q(A[e]);Array.isArray(r)?B.push(...r):(t(),r?C.push(r):(C=[],E.push(C)))}return t(),E}let i=A("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");const l=Array(1+i()).fill().map((()=>C(i))),f=E(i),x=C(i),S=44032;function T(A){return A>=S&&A<55204}function u(A,w){if(A<128)w(A);else if(T(A)){let Q=A-S,B=Q%588/28|0,C=Q%28;w(4352+(Q/588|0)),w(4449+B),C>0&&w(4519+C)}else{let Q=g(f,A);if(Q)for(let A of Q)u(A,w);else w(A)}}function s(A,w){let Q=[];function B(){Q.sort(((A,w)=>A[0]-w[0])).forEach((([A,Q])=>w(A,Q))),Q.length=0}function C(A){let C=1+l.findIndex((w=>w.has(A)));0==C?(B(),w(C,A)):Q.push([C,A])}A.forEach((A=>u(A,C))),B()}let L=A("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");const U=C(L),G=C(L),F=C(L),J=C(L),I=C(L),R=C(L);function N(A){if(0==A.length)return;let w=A.length-1;if(U.has(A[0])){if(!A.every((A=>U.has(A)||F.has(A)||J.has(A)||I.has(A)||R.has(A))))throw new Error("RTL: disallowed properties");for(;R.has(A[w]);)w--;if(w=A[w],!(U.has(w)||J.has(w)||F.has(w)))throw new Error("RTL: disallowed ending");if(A.some((A=>J.has(A)))&&A.some((A=>F.has(A))))throw new Error("RTL: AN+EN")}else{if(!G.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>G.has(A)||J.has(A)||I.has(A)||R.has(A))))throw new Error("LTR: disallowed properties");for(;R.has(A[w]);)w--;if(w=A[w],!G.has(w)&&!J.has(w))throw new Error("LTR: disallowed ending")}}let K=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const k=C(K),H=C(K),V=C(K),p=C(K),Y=C(K),h=C(K),a=C(K),z="2022-01-05T07:15:53.378Z",b="14.0.0",O="1.3.9",P="2003";let d=A("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");const X=C(d),y=C(d),j=C(d),Z=E(d),m=C(d),v=d()&&function(A){const w=C(A),Q=C(A),B=C(A),E=C(A),e=C(A),r=C(A),M=C(A),g=C(A),n=C(A),o=D(A,(A=>Array(A()).fill(1))),c=A()?D(A,t,[...E,...r].sort(((A,w)=>A-w))):1,i=65039,l=8205,f=8419;function x(A,w){if(1===A)return 1;let Q=String.fromCodePoint(...w.filter((A=>A!=i)));return A.hasOwnProperty(Q)?A[Q]:void 0}function S(A,w){let Q=A[w];if(!Q)return;let B=A[w+1];if(g.has(Q)&&B&&M.has(B))return[2,[Q,B]];if(B==i){if(E.has(Q))return[2,[Q]];if(r.has(Q)||e.has(Q))return[2,[Q,i]]}return E.has(Q)||r.has(Q)?[1,[Q]]:void 0}return function(A,C){let E=A[C],t=String.fromCodePoint(E);if(o.hasOwnProperty(t)){let w=o[t],Q=C+1;for(;;){let B=A[Q];if(!B)break;let C=String.fromCodePoint(B);if(!w.hasOwnProperty(C))break;w=w[C],Q++}if(w.hasOwnProperty(""))return[Q-C,A.slice(C,Q)]}let e=A[C+1];if(w.has(E)&&w.has(e))return[2,[E,e]];let r=Q.has(E);if(r&&e===f)return[2,[E,f]];if((r||B.has(E))&&e===i&&A[C+2]===f)return[3,r?[E,f]:[E,i,f]];let M=S(A,C);if(!M)return[0];let[D,g]=M,T=C+D;if(e=A[T],e===l){let w=x(c,g);if(w){let Q,B=[],E=T;for(;A[E++]===l;){let C=S(A,E);if(!C)break;let[t,e]=C;if(w=x(w,e),!w)break;E+=t,1===w?(g.push(l,...e),Q=E):(B.push(l,...e),w.hasOwnProperty("")&&(g.push(...B),B.length=0,Q=E))}if(Q)return[Q-C,g]}}if(n.has(e)){let w=T+1;for(;n.has(A[w]);)w++;if(917631===A[w++])return[w-C,g.concat(A.slice(T,1+w-T))]}return M}}(d);function W(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],Q=[],B=-1,C=0;return s(A,(function(A,E){if(-1===B)0==A?B=E:w.push(E);else if(C>0&&C>=A)0==A?(w.push(B,...Q),Q.length=0,B=E):Q.push(E),C=A;else{let t=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return S+(588*(A-4352)+28*(w-4449));if(T(A)&&w>4519&&w<4547&&(A-S)%28==0)return A+(w-4519);for(let[Q,B]of f)if(2==B.length&&B[0]==A&&B[1]==w){if(x.has(Q))break;return Q}return-1}(B,E);t>=0?B=t:0==C&&0==A?(w.push(B),B=E):(Q.push(E),C=A)}})),B>=0&&w.push(B),w.push(...Q),w}(w)))}function q(A,w){return new Error(`Disallowed label "${n(String.fromCodePoint(...A))}": ${w}`)}function $(A){const w=45;let Q=c(o(A),v,(A=>{if(X.has(A))return;if(j.has(A))return[];if(y.has(A))return[A];let w=g(Z,A);if(w)return w;throw new Error(`Disallowed character "${n(String.fromCodePoint(A))}"`)})).map((A=>{let Q=W(A);if(Q.length>=4&&Q[2]==w&&Q[3]==w&&120==Q[0]&&110==Q[1])try{let w=function(A){let w=[],Q=A.lastIndexOf(45);for(let B=0;B<Q;B++){let Q=A[B];if(Q>=128)throw new Error("expected ASCII");w.push(Q)}Q++;let B=0,C=128,E=72;for(;Q<A.length;){let t=B;for(let w=1,C=36;;C+=36){if(Q>=A.length)throw new Error("invalid encoding");let t=A[Q++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}B+=t*w;const e=C<=E?1:C>=E+26?26:C-E;if(t<e)break;w*=36-e}let e=w.length+1,r=0==t?B/700|0:B-t>>1;r+=r/e|0;let M=0;for(;r>455;M+=36)r=r/35|0;E=M+36*r/(r+38)|0,C+=B/e|0,B%=e,w.splice(B++,0,C)}return w}(Q.slice(4));[A]=c(w,v,(A=>y.has(A)?[A]:[]));let B=W(A);if(w.length!=B.length||!w.every(((A,w)=>A==B[w])))throw new Error("not normalized");Q=w}catch(A){throw q(Q,`punycode: ${A.message}`)}let B=A.flatMap((({v:A})=>A??[65039]));if(Q.length>0){if(Q.length>=4&&Q[2]==w&&Q[3]==w)throw q(Q,"invalid label extension");if(Q[0]==w)throw q(Q,"leading hyphen");if(Q[Q.length-1]==w)throw q(Q,"trailing hyphen");if(m.has(Q[0]))throw q(Q,"leading combining mark");try{!function(A){for(let w=0,Q=A.length-1;w<=Q;w++){switch(A[w]){case 8204:if(w>0&&k.has(A[w-1]))continue;if(w>0&&w<Q){let B=w-1;for(;B>0&&H.has(A[B]);)B--;if(V.has(A[B])){let B=w+1;for(;B<Q&&H.has(A[B]);)B++;if(p.has(A[B]))continue}}break;case 8205:if(w>0&&k.has(A[w-1]))continue;break;case 183:if(w>0&&w<Q&&108==A[w-1]&&108==A[w+1])continue;break;case 885:if(w<Q&&Y.has(A[w+1]))continue;break;case 1523:case 1524:if(w>0&&h.has(A[w-1]))continue;break;default:continue}throw new Error(`No context for "${n(String.fromCodePoint(A[w]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>a.has(A))))throw new Error("Disallowed katakana")}(B)}catch(A){throw q(Q,A.message)}}return{tokens:A,cps:Q,text:B}}));if(Q.some((A=>A.text.some((A=>U.has(A)||F.has(A))))))for(let{text:A,cps:w}of Q)try{N(A)}catch(A){throw q(w,`bidi: ${A.message}`)}return Q.map((A=>String.fromCodePoint(...A.cps))).join(".")}function _(A){return c(o(A),v,(A=>{if(X.has(A))return{};if(y.has(A))return[A];if(j.has(A))return{i:A};let w=g(Z,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{z as BUILT,P as IDNA,b as UNICODE,O as VERSION,$ as ens_normalize,_ as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -689,3 +634,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -721,8 +666,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -749,4 +691,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -838,5 +780,5 @@ // apply relative checks

const BUILT = '2021-12-27T05:53:52.428Z';
const BUILT = '2022-01-05T07:15:53.378Z';
const UNICODE = '14.0.0';
const VERSION = '1.3.7';
const VERSION = '1.3.9';
const IDNA = '2008';

@@ -910,7 +852,6 @@ let r = decode_payload(PAYLOAD);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -922,15 +863,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -952,6 +892,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -958,0 +897,0 @@ throw label_error(cps, err.message);

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

function A(A){let w=function(A){let w=0;function B(){return A[w++]<<8|A[w++]}let g=B(),Q=1,C=[0,1];for(let A=1;A<g;A++)C.push(Q+=B());let t=B(),D=w;w+=t;let E=0,e=0;function r(){return 0==E&&(e=e<<8|A[w++],E=8),e>>--E&1}const n=2**31,o=n>>>1,M=n-1;let c=0;for(let A=0;A<31;A++)c=c<<1|r();let x=[],i=0,F=n;for(;;){let A=Math.floor(((c-i+1)*Q-1)/F),w=0,B=g;for(;B-w>1;){let g=w+B>>>1;A<C[g]?B=g:w=g}if(0==w)break;x.push(w);let t=i+Math.floor(F*C[w]/Q),D=i+Math.floor(F*C[w+1]/Q)-1;for(;0==((t^D)&o);)c=c<<1&M|r(),t=t<<1&M,D=D<<1&M|1;for(;t&~D&536870912;)c=c&o|c<<1&M>>>1|r(),t=t<<1^o,D=(D^o)<<1|o|1;i=t,F=1+D-t}let I=g-4;return x.map((w=>{switch(w-I){case 3:return I+65792+(A[D++]<<16|A[D++]<<8|A[D++]);case 2:return I+256+(A[D++]<<8|A[D++]);case 1:return I+A[D++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),B=0;return()=>w[B++]}function w(A){return 1&A?~A>>1:A>>1}function B(A,w){let B=Array(A);for(let g=0,Q=-1;g<A;g++)B[g]=Q+=1+w();return B}function g(A,B){let g=Array(A);for(let Q=0,C=0;Q<A;Q++)g[Q]=C+=w(B());return g}function Q(A){let w=new Set(B(A(),A)),g=A(),Q=B(g,A),C=function(A,w){let B=Array(A);for(let g=0;g<A;g++)B[g]=1+w();return B}(g,A);for(let A=0;A<g;A++)for(let B=0;B<C[A];B++)w.add(Q[A]+B);return w}function C(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(E(B,A))}for(;;){let B=A()-1;if(B<0)break;w.push(e(B,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function t(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(B)}return w}function D(A,w,B,Q){let C=Array(A).fill().map((()=>[]));for(let t=0;t<w;t++)g(A,B).forEach(((A,w)=>C[w].push(Q?Q[A]:A)));return C}function E(A,w){let B=1+w(),g=w(),Q=t(w);return D(Q.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),Q[w],B,g]))}function e(A,w){return D(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function r(A,w){for(let[B,g,Q,C,t]of A){let A=w-B;if(A<0)break;if(Q>0){if(A<C*Q&&A%C==0){let w=A/C;return g.map((A=>A+w*t))}}else if(0==A)return g}}function n(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function M(A,w,B){let g=[],Q=[],C=[Q];function t(){g.length>0&&(Q.push({v:g}),g=[])}for(let D=0;D<A.length;D++){if(w){let[B,g]=w(A,D);if(B>0){t(),Q.push({e:g,u:A.slice(D,D+B)}),D+=B-1;continue}}let E=B(A[D]);Array.isArray(E)?g.push(...E):(t(),E?Q.push(E):(Q=[],C.push(Q)))}return t(),C}let c=A("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");const x=Array(1+c()).fill().map((()=>Q(c))),i=C(c),F=Q(c),I=44032;function u(A){return A>=I&&A<55204}function l(A,w){if(A<128)w(A);else if(u(A)){let B=A-I,g=B%588/28|0,Q=B%28;w(4352+(B/588|0)),w(4449+g),Q>0&&w(4519+Q)}else{let B=r(i,A);if(B)for(let A of B)l(A,w);else w(A)}}function Y(A,w){let B=[];function g(){B.sort(((A,w)=>A[0]-w[0])).forEach((([A,B])=>w(A,B))),B.length=0}function Q(A){let Q=1+x.findIndex((w=>w.has(A)));0==Q?(g(),w(Q,A)):B.push([Q,A])}A.forEach((A=>l(A,Q))),g()}let T=A("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");const f=Q(T),S=Q(T),s=Q(T),U=Q(T),L=Q(T),K=Q(T);function G(A){if(0==A.length)return;let w=A.length-1;if(f.has(A[0])){if(!A.every((A=>f.has(A)||s.has(A)||U.has(A)||L.has(A)||K.has(A))))throw new Error("RTL: disallowed properties");for(;K.has(A[w]);)w--;if(w=A[w],!(f.has(w)||U.has(w)||s.has(w)))throw new Error("RTL: disallowed ending");let B=A.some((A=>U.has(A))),g=A.some((A=>s.has(A)));if(B&&g)throw new Error("RTL: AN+EN")}else{if(!S.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>S.has(A)||U.has(A)||L.has(A)||K.has(A))))throw new Error("LTR: disallowed properties");for(;K.has(A[w]);)w--;if(w=A[w],!S.has(w)&&!U.has(w))throw new Error("LTR: disallowed ending")}}let h=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const H=Q(h),J=Q(h),k=Q(h),N=Q(h),a=Q(h),P=Q(h),R=Q(h),O="2021-12-27T05:53:52.428Z",X="14.0.0",p="1.3.7",V="2008";let j=A("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");const y=Q(j),z=Q(j),b=Q(j),m=C(j),d=Q(j),Z=j()&&function(A){const w=Q(A),B=Q(A),g=Q(A),C=Q(A),E=Q(A),e=Q(A),r=Q(A),n=Q(A),o=Q(A),M=function(A,w){let B=[];for(;;){let g=t(A);if(0==g.length)break;let Q=1+A();B.push(...g.reduce(((B,g)=>D(Q,g,A,w).map(((A,w)=>B[w].concat(8205,A)))),D(Q,g.shift(),A,w)))}return new Set(B.map((A=>String.fromCodePoint(...A))))}(A,[...C,...e].sort(((A,w)=>A-w))),c=65039,x=8419;function i(A,w){let B=A[w],g=A[w+1];if(n.has(B)&&g&&r.has(g))return[2,[B,g]];if(g==c){if(C.has(B))return[2,[B]];if(e.has(B)||E.has(B))return[2,[B,c]]}return C.has(B)||e.has(B)?[1,[B]]:void 0}return function(A,Q){let C=A[Q],t=A.length;if(Q+2<=t&&w.has(C)){let B=A[Q+1];if(w.has(B))return[2,[C,B]];if(!i(A,Q))return[0]}let D=B.has(C);if(Q+2<=t&&D&&A[Q+1]==x)return[2,[C,x]];if(Q+3<=t&&(D||g.has(C))&&A[Q+1]==c&&A[Q+2]==x)return[3,D?[C,x]:[C,c,x]];let E=i(A,Q);if(!E)return[0];let e=E[0]+Q,r=E[1].slice(),n=!1;for(;e+1<t&&8205===A[e];){let w=i(A,e+1);if(!w)break;n=!0,e+=1+w[0],r.push(8205,...w[1])}if(n){let A=String.fromCodePoint(...r);if(!M.has(A.replace(/\u{FE0F}/gu,"")))return E}else if(e+2<t&&o.has(A[e])){let w=e+1;for(;w+1<t&&o.has(A[w]);)w++;if(917631==A[w++])return[w-Q,r]}return[e-Q,r]}}(j);function W(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],B=[],g=-1,Q=0;return Y(A,(function(A,C){if(-1===g)0==A?g=C:w.push(C);else if(Q>0&&Q>=A)0==A?(w.push(g,...B),B.length=0,g=C):B.push(C),Q=A;else{let t=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return I+(588*(A-4352)+28*(w-4449));if(u(A)&&w>4519&&w<4547&&(A-I)%28==0)return A+(w-4519);for(let[B,g]of i)if(2==g.length&&g[0]==A&&g[1]==w){if(F.has(B))break;return B}return-1}(g,C);t>=0?g=t:0==Q&&0==A?(w.push(g),g=C):(B.push(C),Q=A)}})),g>=0&&w.push(g),w.push(...B),w}(w)))}function v(A,w){return new Error(`Disallowed label "${n(String.fromCodePoint(...A))}": ${w}`)}function q(A){const w=45;let B=M(o(A),Z,(A=>{if(y.has(A))return;if(b.has(A))return[];if(z.has(A))return[A];let w=r(m,A);if(w)return w;throw new Error(`Disallowed character "${n(String.fromCodePoint(A))}"`)})).map((A=>{let B=W(A);if(B.length>=4&&B[2]==w&&B[3]==w&&120==B[0]&&110==B[1]){let w;try{w=function(A){let w=[],B=A.lastIndexOf(45);for(let g=0;g<B;g++){let B=A[g];if(B>=128)throw new Error("expected ASCII");w.push(B)}B++;let g=0,Q=128,C=72;for(;B<A.length;){let t=g;for(let w=1,Q=36;;Q+=36){if(B>=A.length)throw new Error("invalid encoding");let t=A[B++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}g+=t*w;const D=Q<=C?1:Q>=C+26?26:Q-C;if(t<D)break;w*=36-D}let D=w.length+1,E=0==t?g/700|0:g-t>>1;E+=E/D|0;let e=0;for(;E>455;e+=36)E=E/35|0;C=e+36*E/(E+38)|0,Q+=g/D|0,g%=D,w.splice(g++,0,Q)}return w}(B.slice(4)),[A]=M(w,Z,(A=>z.has(A)?[A]:[]));let g=W(A);if(w.length!=g.length||!w.every(((A,w)=>A==g[w])))throw new Error("not normalized")}catch(A){throw v(B,`punycode: ${A.message}`)}B=w}let g=A.flatMap((({v:A})=>A??[]));if(B.length>0){if(B.length>=4&&B[2]==w&&B[3]==w)throw v(B,"invalid label extension");if(B[0]==w)throw v(B,"leading hyphen");if(B[B.length-1]==w)throw v(B,"trailing hyphen");if(d.has(B[0]))throw v(B,"leading combining mark");try{!function(A){for(let w=0,B=A.length-1;w<=B;w++){switch(A[w]){case 8204:if(w>0&&H.has(A[w-1]))continue;if(w>0&&w<B){let g=w-1;for(;g>0&&J.has(A[g]);)g--;if(k.has(A[g])){let g=w+1;for(;g<B&&J.has(A[g]);)g++;if(N.has(A[g]))continue}}break;case 8205:if(w>0&&H.has(A[w-1]))continue;break;case 183:if(w>0&&w<B&&108==A[w-1]&&108==A[w+1])continue;break;case 885:if(w<B&&a.has(A[w+1]))continue;break;case 1523:case 1524:if(w>0&&P.has(A[w-1]))continue;break;default:continue}throw new Error(`No context for "${n(String.fromCodePoint(A[w]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>R.has(A))))throw new Error("Disallowed katakana")}(g)}catch(A){throw v(B,A.message)}}return{tokens:A,cps:B,text:g}}));if(B.some((A=>A.text.some((A=>f.has(A)||s.has(A))))))for(let{text:A,cps:w}of B)try{G(A)}catch(A){throw v(w,`bidi: ${A.message}`)}return B.map((A=>String.fromCodePoint(...A.cps))).join(".")}function $(A){return M(o(A),Z,(A=>{if(y.has(A))return{};if(z.has(A))return[A];if(b.has(A))return{i:A};let w=r(m,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{O as BUILT,V as IDNA,X as UNICODE,p as VERSION,q as ens_normalize,$ as ens_tokenize};
function A(A){let w=function(A){let w=0;function B(){return A[w++]<<8|A[w++]}let g=B(),Q=1,t=[0,1];for(let A=1;A<g;A++)t.push(Q+=B());let C=B(),r=w;w+=C;let e=0,D=0;function E(){return 0==e&&(D=D<<8|A[w++],e=8),D>>--e&1}const n=2**31,o=n>>>1,M=n-1;let c=0;for(let A=0;A<31;A++)c=c<<1|E();let i=[],x=0,F=n;for(;;){let A=Math.floor(((c-x+1)*Q-1)/F),w=0,B=g;for(;B-w>1;){let g=w+B>>>1;A<t[g]?B=g:w=g}if(0==w)break;i.push(w);let C=x+Math.floor(F*t[w]/Q),r=x+Math.floor(F*t[w+1]/Q)-1;for(;0==((C^r)&o);)c=c<<1&M|E(),C=C<<1&M,r=r<<1&M|1;for(;C&~r&536870912;)c=c&o|c<<1&M>>>1|E(),C=C<<1^o,r=(r^o)<<1|o|1;x=C,F=1+r-C}let u=g-4;return i.map((w=>{switch(w-u){case 3:return u+65792+(A[r++]<<16|A[r++]<<8|A[r++]);case 2:return u+256+(A[r++]<<8|A[r++]);case 1:return u+A[r++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),B=0;return()=>w[B++]}function w(A){return 1&A?~A>>1:A>>1}function B(A,w){let B=Array(A);for(let g=0,Q=-1;g<A;g++)B[g]=Q+=1+w();return B}function g(A,B){let g=Array(A);for(let Q=0,t=0;Q<A;Q++)g[Q]=t+=w(B());return g}function Q(A){let w=new Set(B(A(),A)),g=A(),Q=B(g,A),t=function(A,w){let B=Array(A);for(let g=0;g<A;g++)B[g]=1+w();return B}(g,A);for(let A=0;A<g;A++)for(let B=0;B<t[A];B++)w.add(Q[A]+B);return w}function t(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(e(B,A))}for(;;){let B=A()-1;if(B<0)break;w.push(D(B,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function C(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(B)}return w}function r(A,w,B,Q){let t=Array(A).fill().map((()=>[]));for(let C=0;C<w;C++)g(A,B).forEach(((A,w)=>t[w].push(Q?Q[A]:A)));return t}function e(A,w){let B=1+w(),g=w(),Q=C(w);return r(Q.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),Q[w],B,g]))}function D(A,w){return r(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function E(A,w,B){let g={};for(;;){let Q=w(A);if(0==Q.length)break;let t=1+A(),C=Array(t).fill(g);for(let w of Q)C=r(t,w,A,B).map(((A,w)=>{let B=C[w],g=String.fromCodePoint(...A),Q=B[g];return Q||(Q=B[g]={}),Q}));C.forEach((A=>A[""]=1))}return g}function n(A,w){for(let[B,g,Q,t,C]of A){let A=w-B;if(A<0)break;if(Q>0){if(A<t*Q&&A%t==0){let w=A/t;return g.map((A=>A+w*C))}}else if(0==A)return g}}function o(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function M(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function c(A,w,B){let g=[],Q=[],t=[Q];function C(){g.length>0&&(Q.push({v:g}),g=[])}for(let r=0;r<A.length;r++){if(w){let[B,g]=w(A,r);if(B>0){C(),Q.push({e:g,u:A.slice(r,r+B)}),r+=B-1;continue}}let e=B(A[r]);Array.isArray(e)?g.push(...e):(C(),e?Q.push(e):(Q=[],t.push(Q)))}return C(),t}let i=A("ABMCuQDBCCEAOQDaACcAcgAZAC0AFwAtABEAJgAOACUEiQNRALQNRycbxexVsVUCJRieAuAASPZlZwBu4QoILXBwcHDwcAJrCe2iQYxsZfepR1yjAE1t7ecAc/kC78r4ABIsL4ogCD5wcHBwcHBwcG1gcLoGoI4BftQRK3l3Foh/XQAm511CBPcaKvdlpVPlcO1wZ2X+AJdEA0IAlgBIDCwB7gXLA4Y49DEG+gL3BKEEogSjBKQEpQSmBKcEqASpBKoErAStBK4EsASyBLP6DwU8AZUFPQGVBT4BlQUJJgUKJgULJgVCBUMFYQYCC0YLRw0pDTkNqQ25DmIOYw5rDmUcwQISHL8CDAsOANBWHOsRICQEgguHdDSa1kwE03+3B57NVy6SAHHFGgHZiLxWOdMGHR2cA1UoEQIHAAE5o9IADjAmDgUPCo0BAgMAhy9T7BAPwR4WNgSLAxJ8FeQvHwDQXgSfEesWchzoGAI3AQFEBQAQPJyVqZ0MzwBNzQBEAGUE9wHThG8DMQFePhmdA1cmA8rNQEkB8S0DABD/VTNpN5IbYx4ASAUfAscGCCuSAFMOuAHvCwThd4QaQgDgAMJSUgQ4CJ4Ad40AqAFWVrBlRRWIDK4D+gCsBUgFFRACAQIGLhmOESYCTRmKHL4CTgI2BXE4cQVDAK1DAvqfodmRADcE8Tj1Hv2R+0wAFKkaoxW5NmMA8P8BnQL6mRk7PwAhUwAzAD4pOTZc5AL7CmUCjtcChw4/xAM2zwKEKALUBXdTBQM2xW0HAQEBAQUBQwCumwL5PwUXpAPs6QTbK4BXUj00AgU6BUkEpgTbBazlABX3SZhOnQL0Ot5ALgpXCclv8XeEBnMQTSfXESkMZQHnAW0OH0wKBSMGbQT7H68ZSw//lc4I1y4PDR8nFS7TgIwkJyq1Bh9MJj0PC39Rmg+LC5cKFTqVgYADUwE/Ir0LDw1rCJ8RJQr7nQ4XEXcHawQHScwA1wczC0MdZxXnJkJi3gs7OakHLRsoC8Em4RNbey4GBRpTBn8BWxsxAQEvGYXiWmNcThBPkQY1C1cj+RTaUFINV0DpeHoaTQdHJdsCw0OiSrlRaB7FIig8bw2YLkVRrggnPDcZgQuzPNBG3UVAEgQ+vz16IntMXgRnsSxhJ70KAQ+3DOt8pAGLCVMJ4wyjE2MRSTf3CGsHS1+XVidHCFNGx2DMBSnRBCUUAwM9BXEJcwdFA+ccXxNgFVsFP4FWAAkDJTcHLuUCwVayAUkF/Q9XIBEQgkgSDxsIzQKXA7UmHQBfFVMASSLNCHWVAJGQClM3Lv0I+WqeI6YDmRUZkxGlB8MOiQfZHGUV8R0TcPpePYY6KNXhCY0BpwnLAZEFFQg7NY2M0iBzZ4WLihjNIJNBcV4uAmMMlxXRRO+HqgK9D50STQFnAaUHaw0zAqkSHxGdFRDHCR2GNjXnNCo6VwSBIbUgQwpZA4FtAAtZJysNKpsB1RKUAz40b3ggZ91g6FYYLwdLMvdBkiIjC8RP/wzOGvMYdFRgGhYH8QQlGyUoHEGJBjED1TVFOn80IATvC5sIvQlxAHsO1QtJCAkYnAqjjQIBY70B6SfLA4nDtQKhwQZpBQc9AJk9uQWrABcATwLZCNUANwEBA4kAawLfB88ASwcBALdzAW8DWRthAVMAFwLBA8UIY/0Bx2ECJVsETfUMRwEpaW58AsPjAoCcZtQGD4oCwAJ7ZwF/VwQ3gHmDA+GjABMRAQ0AfQZFABF5AUfdfP1MABV1AhGhXQD5AS0AN2cHN3MB/wIlEJ8A6QGRC2MJ1OXnAX8AG1sAtQBHEyOdBAIJArsBDwBnALEAIwGFAH8FiwArBgUCgXsRAUNjSl0SiZMB7QNRAWUBPwCrBv2/1/s5CVEEnwgFAhBNFhMC72AH5zMDIxET/0L3Ar4Qh6GSAwJkswJidI0Lf+EvjSA3UgKiKQJoyhEXAmY7Ap+2OE09AmZtAmZYCwSgBLEDA39FA37EDTk4OakHSTm0OlUnHStVAQMjBQJsTwIyaDg8GwJt+QJt4BsAIbwRMWWZJXcRXRUBDwGZARABEwB8NwfKDL8BMD0j9AA/5wJ3YQJ21A8ZAXECeX11AnjsTwmOAA1F4A1HCQJ8cQJ6+hsPCQJ9OwJ9IgWLBVJIMkivDZVWAoGfAoAyAoA3An/gE0mKSo1HG0lK/gLRMwLQ/ktZGQOIgQOIGET3kWQC8tNdNQMD4ANMAExfVwU1AAFNfixN4QKLcQKLCvNNGTkMB08ZJQd1mTfpAo5pAo6OcsknswKPCwKOjqooUeZTZxsvPFMGVLcrApQtApM+ARsATlVQVeFWAjgsTSnHuDMTeJhFbWsGApfRAu/kWFPaAItXApbBApauzgDbWd5aO7N/AG0ClucCloBcdl0DApn9ApmWXPxdOUsCnM059DrPApxIAp/NAp7qDbwAT0FjXEEPCwKeIwKexADnb2FmYiECnwUCoKAB2wKe0VECnoDXJmP6ZFlXXQIn4QImsAKhLQKgfgKjDwKh9gsnAqZhAqYAGwKoMQCvAqgkE2iuaOMANRsbGXtqTmsDAq0VAqzgAq2ZAq00AldPAlYOArITHwAJAx+ACWzJArLvPyUCsxhHbRJtlW16kQMl/wK2jm1xbsIDKXcCuJACuXlHArlcqXBocRMFAr1LArwMcMgDMkMCvrpyNAMzowK+THNUc4ErAsP9AsM2c7R0fWd3dRIDPNkvAzzMAz3xAsWuAsZ5AsZCuwcCyJuDAsh2AsmBAslgAmTPAt4EeKuTeOB5V0wCAxjVDWc0AwJiJhollVZ7PRVexF7tBUMCz50Cz55hfYUABAAlRdEA+N8RAs+lAVsAHANORH59NwLcWQLbvALSgQNSjgNTkQEzA1W+gLsJB3Ey/UgAH5J3J4JOgwUxgwCDvwLa+QLaEIRChHunbgOG1wBhA2RAA4ajiwArAIcC35cC3uodpakC4mHtRgHzYg5ZAfTNAfMEuQLsJScC6aKrMQLrKwLrFgEreQHrKQLuuwLrzpbclzUC7nEDhhKYq3EScdMC8zUAmwOOSAGZxQL3RQORoAOSuQL3ygL6CwL4mJpOmt3tJ2mbUAOdtQL/LAFNAGufTi+f5QMFvwOmnAOnCwED9wMGnKG6ojcFOwMMewLyAHE1DSsBE3MlJUkHMR8hhQ0BQwAlEwOdATnJEZk3AMURX13p4e8ADQG7BQsFAxUFC8sUsUMEawItFy9bIScfBzdTDs8J0R8FDR8Aky8HKYkP9wMpAc8A6QXrAG89n3MBYDEwMTAxLDEwMTAxMDEuMS4xMDEwMTAxMDEsMTAxMDEwMS4xLjEwMTAxMDEwMS4xLjEwMTAxLDEwMTAxLjEwMTAxKjEwMTAxLjEwMTAxMDEuMTAxLjEwMTAxMDEwMTAxLDEsMTAxMDEwMUYxJDFYMSAxJDEkMb8xMDEwMTAxYDEBdQGyMQAuMSgxKDEB51gApwNANjEiMZ8xLjEMMQBeMTAxKDEwMSgxMDEkMTAxKjEwMSoxMDE0MS4xSDE+MSgx0zEyMQA8MQJvApwxBA8DsATDM1IJCRUUCQN3ChkHBjE3KAdTrjE8MTAxJjEANwB2MS4xLjEwMSQxAEUAaDFEMTAxMDEoMSgxAqkzMjcABxgTA50BLAMAITwL9zQPASk80Vnx4+kAFwHDBSZTc3QzBSYAGxSxQzTyMS4xMDEwMbsxADYxMDEwMTAxMDEATQCMMTAxAncCtjEuMS4xMDEwMTAxMDEuMb0xADgxMDEwMS4xOoU6xjEwMS4xMDEwMS4xMDEwMTAxvzEwMZ8A6jEwMSwxMDE6wTsCMS4xMDEAvzjzOw4xMDEwMTAxLjEwMTAxANcBGjEwMS4xMDEwMTAxMDEuMTAxLjEuMTAxMDEUCQD9AWwxMDGzMTAxMDEwMTptOi46KzuoMTAxMDG7MTAxMDEwMTqNO9AxMDEkMTAxuzEwMTAxMDE6oTlKAYgxMDEBZQGeMTAxMDEwMQVhNY810DXfNZg1pzXoNfc1tDXDNgQ2EzXQNd82IDYvNeQ18zY0NkM1+DYHNkg2WTYQNh82YDZvNmA1XxNTNmw2bzZuNvs3OgTCPIk2agIDNw83UjdBNvwTEhNSN7s3YgQ8BOI8mTZWN0s3ngU6v2lTIR9DBkM5GEMSQz0LJ04ZMQ9BCc1anw1agwdVOCMCAOmxAOniGgUDARRbBQAJAxsB1QDvBekAbzWlBPErPgAAKz4AADU+ADMoBDE6NTI7PD0mBj0mAAQ9JgY7JicmAis8Dw4ABwgBKTgBBg0bJDE2AAEBAwIFhwTB9SMm8QElICMmACciI+/vGBfDI9cbAqF2CV/jFP8vECwpDVApDQRKSUQpJi9ONQ0MLktIKSgpDUgAKS5LRCkoKQ0CCUgxNikoMw1CKSQAAwMrJAMlJAADAzEkAAMxNjckERhzThhzThgVGBUYc04Yc04Yc04Yc04YFRgVGHNMGHNOGHNOGHN0e25zbnt6e3pzaHVoc2gXTWgZGHt6ewpZs1S6BQYBFOfLAx8jAbcECwDVBfMAb1sDCgMHCNBEGAPVCxoTzzEPCEl0bfPuvtUITbpVYVJlxVlu6xi8yukTEkTF+I1Bz4RYE53KIyT5DqAze0PwJQnlNxSS1YcpXV+gDEc/C4oNhoy1Ki91qpqCkt0JC6govLXTaVPJD3AwcKH0Xt5qRPRA5eQ6MH8VyPygTIkcSo7sGVE7g/x/2GhuMYWGguyR28kVFce6ihYPUY3W6nXi+/cnjI84LZxeebblXdW5a64/eDHo767XonxSFZGrp5Lgailtk2xq6j5ycujrl9qokkhmb2lwNH56X+6DnQ2pS+S00ufS1dIKqoNMdSmVRVXuUTS8bAdxZpjBZ3GYbUwUd2Gf7NGiMRzjH9sHUU7IFiCwTVgrpwkZsQzAxyaDuftBHFMUbRZ2SqzQoyN8vokQdZdxrQbnZiew5ZTkws54Niofx8wx3MZWJmmaphy/s3augdBb6bMYJK0V8dEraJiQOltirvSWU9Eyc0xfVhTTKdBbeJpnj+5Oj55jy36RY1GRX1MXuQ6d9K5XaR6kBt5bVdj7wQgTqFSwDbmxadyzHfcLdn0lzacx9l+VnyWca+zvr8ky4UAdX7vzBM0CmNNAMhVgcEwdk04NiGGUFPp2qkZQSAh2t+U/OGae4/9NzQa7denjPny3g473yswQVIQLqQCG5RDqpjP4o/xBLx+i2gGQIKO1b6vMN1LATETLBn6qRF2P9SuRORVQeyyMO0zL0+FDTc/n6Sgc/ifEjrUsjHmIfkDkWG7xk4c3bvXSmCUsWxnTx0Z2CedkEM6ZwrfWZ6xaHbLJTtdymk0w0Yx+ozu5gupZB9TNnG9SKZ0QRO30y3vZq/JiCBMyeKXb7KFzP1Sbjhobjrz4ouE7+f4E+1fsM2CNF+XeR/pHiMOSqRfST7NkOyTnKYRJmzyBN7K/Qg/cLptbCWstC7oKhEBw4gE39yLzFy/H2J7LAGHff6chBHUNw8oBFpyoLqlqf0VApfS05bqP4Nk4YrTmNXHol41ujxa/pPxdkQNuev8181lcbbM+CYhQkf6YvG5pOgQUg2rYPiVOMk0IFziGpe/MYh+hx8RvUqkY5fOn/RLoPlBjGK7EF6C7tiirGnaesifWo3UkZ7YKuBzQ/VY9OCL++CeMyjCgyh9t1k3c84D5s93yf+n6q9itHlOXoY42LHOrx9PekKouVooYd4H7oXv7qndtr7Qxtz6ZFiFehmjQ8TUlBN7gLEy4ldleZoGzXnBYw5UCtayPK2O8nbFIe2WuVQudXSzkxihUyv7/d4Uy+JvXxqUGz7eQSo3+YgzSuhz/oM3SJCyNd6unJIwWI0UpPXmgOscRHl52BSX1ChjrJmd8JF+jxfUnAl/Y1Vl7OOycKSdzZnDNIhhjt0DFpwg2+yqNwuJ+1+AtEvvqO/8maMw655nlQ9/4+C4F7sg+ixD9l2v5t1KsuV3TCUGJL1VvM0WWRKKYTlPbR1uX8OJ6/YWm6YwAPFE0ElXSuTwKdEsVA29ur6n6SurYeHbdJKVmImFDAoCvCIZKT73AAguPi9embsaMrFmiIBdsznlKVEpXJhxFDb73WO1JIlG+3jjreBnY53LHLFlOxSB8uamE3mBo9Hi71J/nL88SKUVr9FiUZDM9i1jV8u/M6C7Aa1STDyVwNoCrdPduWFMUSTEW2ORxNk0KEeWAGigBCZ0uQZWEKUXYSLYQzbw6DbiEye/cz9nLqM2iOzOo+pvFqngmBMGV1SZApeEwBcc0OBUlvG/1tuGhVhBxGwYYtqsLkIiQ8FO+A1211X0QJDn6GHLaXEj8rkw9cIYtXrTmwXtyzcmt/eUoAS/CtdaE8DxJlKaf+XRUpSZrUISDsE3T787UDsFAphCizRPUiSeewa+lq53P71ted+SnbPJX4WY4LIgnp2i4Mtsb3RoH8EvwLyl4ZCEks8KEvQnSm5B+J7KC943c8Nuyc/+oXVr3IBLJVsExQqolVUFA4ycod2Y9nhcfbnu8IU82JpIGcaH39i15p4tt5xscCraP5fD1bm8vJetXWZf6ANxe7mIZe9rS00KAVDBJ9Avm4cTq9LAy1KfFMowSMv8zdHHOpQiCaVLP21ysT5RFdVOF72MfyEK2T3l4t9ilzq7txXCE/dBu8OoLT3Ug+2Exxlg1NCuBbSPYtaHpwzbAu9TPVA/QtpIPuxOpgo3ytxtnAZSIGZ/xOKxTDZAx/xlABsvwB3mNpClAUrj70BlyVbEDpCTlfc7+otbovSbzpKU+/cGaPQ5IilEgwwC/+ZG6dumtH25+bRMaLtGa2VkQd+JU1BSRCKJ8VGbzvw0bX6yG3zh9wtFfgLofG2xZPbz9z+HmAjXaC4P4x4d+xmWjCzwKe19s8x5TeasMAeCcS9JPCC3Z2GZTMLbvRmvV/bctlSf5KUT0sNpYTGYJjzwKr8VXzOBmr9QjTGOg6RbCb3bz+Gz//YK6X9htjxHlDo2KX/BamwU0XkWz5T34wdGnawCFAYSJoFvfe6VluZ4Ftz4Q9epbE3cILgM9J6gatoIwrOrf6E9KeqU0MBH/k4DYy7yI52YBoZR/uzoryViLQ0Gcm5sE/z0+0aIiz0VBjF/AN4y27UV1GzGYcBhdCN+DVLKCLG/PSD4aj3C2bNxJF1ulVxu021HdlUIP0vSIcgUXYXxmhyPknJredXe19NvbQCDQVh/L3SzACD+aHRFbvouhbY2dZLE2TI/twwr70Mx9nTZ06kLSEqf4utlWqEtXnqLB5S9h/3Bw8p/AzfT+fzmT6co=");const x=Array(1+i()).fill().map((()=>Q(i))),F=t(i),u=Q(i),I=44032;function l(A){return A>=I&&A<55204}function f(A,w){if(A<128)w(A);else if(l(A)){let B=A-I,g=B%588/28|0,Q=B%28;w(4352+(B/588|0)),w(4449+g),Q>0&&w(4519+Q)}else{let B=n(F,A);if(B)for(let A of B)f(A,w);else w(A)}}function Y(A,w){let B=[];function g(){B.sort(((A,w)=>A[0]-w[0])).forEach((([A,B])=>w(A,B))),B.length=0}function Q(A){let Q=1+x.findIndex((w=>w.has(A)));0==Q?(g(),w(Q,A)):B.push([Q,A])}A.forEach((A=>f(A,Q))),g()}let T=A("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");const S=Q(T),s=Q(T),U=Q(T),L=Q(T),K=Q(T),G=Q(T);function h(A){if(0==A.length)return;let w=A.length-1;if(S.has(A[0])){if(!A.every((A=>S.has(A)||U.has(A)||L.has(A)||K.has(A)||G.has(A))))throw new Error("RTL: disallowed properties");for(;G.has(A[w]);)w--;if(w=A[w],!(S.has(w)||L.has(w)||U.has(w)))throw new Error("RTL: disallowed ending");if(A.some((A=>L.has(A)))&&A.some((A=>U.has(A))))throw new Error("RTL: AN+EN")}else{if(!s.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>s.has(A)||L.has(A)||K.has(A)||G.has(A))))throw new Error("LTR: disallowed properties");for(;G.has(A[w]);)w--;if(w=A[w],!s.has(w)&&!L.has(w))throw new Error("LTR: disallowed ending")}}let H=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const k=Q(H),J=Q(H),a=Q(H),N=Q(H),P=Q(H),R=Q(H),O=Q(H),X="2022-01-05T07:15:53.378Z",p="14.0.0",V="1.3.9",j="2008";let y=A("AEQDBQK2C9QAywGsAEkBKABxAM0AZwCVADsAZwAnAFsAQABlACwARwAWAE4AGQA1AB4AIwASAE0AFQAjABcALgAoADQAEAAcABYAMwAJAB4ADgATAAwAHAAPABUAFwArADQALwAqADIAEQAtABAAGgAOAA4ADwAaABEAEwAIAAsAFwNVBJ4A1w8WLpPNyxIBLUkJXhMGKAD1AHQzYEUAH20RAVEnA9YBjwFHcjIAFwmcwQDMdMRHEo5P1bwCFAJJogNfRwDCA6cAWnMlIQmHAC8APAGE/RUBXAE1uYQFiQD6PRQDKQUOEgpRGzIKPAUPP8IJBCABLRAfDwAPP0IqBpQiDwrjLA4A5BcjWg8Azxi/VY/PHBEBIgUPDw4gH0zNArgAnwC/Hx83JgT/Xx8fAT9/AA8PJRAILE8PD28Pf38PDx8ADxb/3wM/Cc8vEr8ivwD/DwGiXw4QFr8DvyGvAA8JTy8RIgmPHwMev5kADwPfjxEVb6W/Dv+fFU8wDyAaJAk0CQ0IAhUBKwoYBQwzFR0Yf1VMzAcFAAgqYzo19ggGBAoFAAkIAlmDIALuAQYA+A4KFrcDleIASyqEpZ8O+J0VQRvwEgptAWETfwa7FN1aFsvktL1fC0MfrxBCogAiEAHeUHQBAhxOD9YapjYBWABgANieCgSGbA0gvAY2A/bvqpyEAGByBARiAAAoB4QAIABAApoIVBcAqgDKQCDUCMAuA7YUQAD3MnCoYAAGgh0AHAF8KKwAGgBPAGoBIhveHh0X3hof8QJ4ApcCrjQ2OAMFPAVhBToBezegAGAAPhc2CZYJlyMgVl5SoaDKQ/MAOV3KmuYzABYoACEK8SJfUgBdAKXeACAAPgEElbNoJwgAgQEUwBbAqgAB2r0FYAXlAtCkAsS1AApRIaRqFHgachWINjILAMAoHhQIlABAkNAULi/AACAAAAAyniIA9BVolvFqQAAETqXEaBYaAMxIARKKVgDCKB4UCAJ9BNKQ0BQuB4c56AAAACACNgsFf1a4lvFqQAAETgBBcQw0BwUGApkyApOOQNgCAK5UAWwAphID3ACwcAE/tgoO8CIAApAFQgA2kjkF9s8WA83GAAsDmaIOCjQCjqYCht0/kwM2ngKD9wEkyg4A8OgAigFGAjKSCiaUWgBOAOcKJgAc2b7NEQD5YgsUCxoLGAXWABQAPDASmBB+HkYU5AI2HhXIAAgGAHgAbDqskAWWDayqugEgaIYBdAAKDgDmEABmBAWGme5OrAQkABRwDowAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzICggKhArABJwA1BV4FXbS/BW4FdzlXIlKrNOQ0vxcAAVMCVtdXupx7mGZkof0QGAPKDCr2fCgEqFACWFgCeiCwLAGUqKo6YANKHASIZg4A1gAGsEQ0KAAHLgI+YgBwAWYkdgCIIh4AmgFOvAAsbhwBtMoDPDImSAJYAXReBmoCagD2ThwDLgYKAE5GALAAYgB4ADC6Bgz49B6ShAQADiYALgC4IEwB1gHgDBA2l30JQdjFEGQQYQYDTQ5McT8VEAKxD6sL6hEaDNYq0F+iB/ADWAfwA1gDWAfwB/ADWAfwA1gDWANYA1gcD/Af2MUQZA9NBHIFkwWQBNsIiCZOEYYHLQjXVBJ0IxxMA0oBASMqSSE7mDMQJUdMEU0ICAE2R2ysfT0DTDGwVPqQpwPQMlQ5cQYDHnYSpQAvD3ghNbpOg3pMcaUKUE+zV/cARQYAEqsAEuYASQ0oAFAsBj0ASOM02AATRgBNmwBNygBMXRgASmgG4ABQVwBQjgBQSQASNklnTmwCwzqtP/0KJgmYb8B3UwZCEBwnphD4DDQBtgE8De5L2QTyBjwEyh9+GRoPzpWdCKYt3gzuJuQuooBbI/YqhAXuS/U83gtOUWkPWgtmCeQ6ZIFPAyIBDiKMCt4NOghuEPQKymwN5hFGBzoD1kmbAKYHAgsSHTYVtiYRYq0LCjl4Bvwa9wuQJrATKnr9BdQaIgZOASobAADQLuiFsVoyXB1PYAYECyYjyBSpUCENJkC4eEkaHAcWJaoCkkNxSohRNx6UIfc8Pg1nLhRRfQf2PAYZUAuCPJ9GrEUPEdM+jj1JIkpMLQQ2gCwwJ4wJ0A+GDLp8cwFaCSIJsgxyEzIRGDfGCDoHGi6XJScWCCJGlmCbBPigA/QT0gMMBUAJQgcUA7YcLhMvFSoFDoEl2AL0NtYutAKQVoEBGAXMDyYf4BBRR+EO6gicAmYDhCXsAC4VIgAYIpwIRGQAYI/ZUwYuzAjIam0jdQNoFOhiEXQHkg5YB6gcNBXAHOJwyV4MhgkopLAJXAF2CZoBYATkCAo1XIyhIEJnVItZGJwgYkFAXf0CMgxmFaBEvod5AowPbBIcATYBdAc6DQICeBHuEWwQlgjshgU1tjP5OiYEUCGEIBIKKANQbM8LKCb6DPlqAaQSYwMNND5372esYLclF/4HGjLGQWEh8guTT84MnRrCGENULxnlB8AD9Br0J+tBWAYAA6QEFDpOM+8EvgtqCIwJQABKDqQYB9gYawpyjNEBMowBuJoDWJKEAnCQBjgHDABoDIgFeuYAHgKoCKQABgDQA1gAOgKuB54AGgCGQgE+AygwASLmApADlAgyzAGWMAH0KgQcxAwWAPg4bksCw7ICgGtmowXeWQKPAko2AU4mBAZPSFIDsHLiANwATAYU4EgBFqxLzBvkRAHgcCwAyAD8AAY2BwZCAc4B9G4AuAFgCzIJo7S2AU7qKgCEABZsAdgCigDeADYAgPIBVABOBVr6BdQCUEoBEjIZLFhiAbwDIAE0AQ4AegbMjqbKCCAEbgfUAhAcFeIC7y8HtgIDIuATzkLGAr3fVgAyFwBgDAtgXGE0BzJzXtkCJksAUOYAUEM0mjUxVkk2AacBqikCt/ABbasASP8Ct+4Ct60Ct7ACutvNAtICt9wCt88QAFBCAFA/UpJSgwK3pAK8OQBEAMwBwgOYKFgjTcBVTSgmqQptX0Zh7AynDdVEyTpKE9xgUmAzE8ktuBTCFc8lVxk+Gr0nBiXlVQoPBS3UZjEILTR2F70AQClpg0Jjhx4xCkwc6FOSVPktHACyS6MzsA2tGxZEQQVIde5iKxYPCiMCZIICYkNcTrBcNyECofgCaJkCZgoCn4U4HAwCZjwCZicEbwSAA38UA36TOQc5eBg5gzokJAJsGgIyNzgLAm3IAm2v8IsANGhGLAFoAN8A4gBLBgeZDI4A/wzDAA62AncwAnajQAJ5TEQCeLseXdxFr0b0AnxAAnrJAn0KAnzxSAFIfmQlACwWSVlKXBYYSs0C0QIC0M1LKAOIUAOH50TGkTMC8qJdBAMDr0vPTC4mBNBNTU2wAotAAorZwhwIHkRoBrgCjjgCjl1BmIICjtoCjl15UbVTNgtS1VSGApP8ApMNAOoAHVUfVbBV0QcsHCmWhzLieGdFPDoCl6AC77NYIqkAWiYClpACln2dAKpZrVoKgk4APAKWtgKWT1xFXNICmcwCmWVcy10IGgKcnDnDOp4CnBcCn5wCnrmLAB4QMisQAp3yAp6TALY+YTVh8AKe1AKgbwGqAp6gIAKeT6ZjyWQoJiwCJ7ACJn8CoPwCoE3YAqYwAqXPAqgAAH4Cp/NofWiyAARKah1q0gKs5AKsrwKtaAKtAwJXHgJV3QKx4tgDH09smAKyvg4CsucWbOFtZG1JYAMlzgK2XTxAbpEDKUYCuF8CuUgWArkreHA3cOICvRoDLbMDMhICvolyAwMzcgK+G3Mjc1ACw8wCwwVzg3RMNkZ04QM8qAM8mwM9wALFfQLGSALGEYoCyGpSAshFAslQAskvAmSeAt3TeHpieK95JkvRAxikZwMCYfUZ9JUlewxek168EgLPbALPbTBMVNP0FKAAx64Cz3QBKusDThN+TAYC3CgC24sC0lADUl0DU2ABAgNVjYCKQAHMF+5hRnYAgs+DjgLayALZ34QRhEqnPQOGpgAwA2QPhnJa+gBWAt9mAt65dHgC4jDtFQHzMSgB9JwB8tOIAuv0AulxegAC6voC6uUA+kgBugLuigLrnZarlwQC7kADheGYenDhcaIC8wQAagOOF5mUAvcUA5FvA5KIAveZAvnaAvhnmh2arLw4mx8DnYQC/vsBHAA6nx2ftAMFjgOmawOm2gDSxgMGa6GJogYKAwxKAU4BIAK2A0YAnASAumgGALwEbMASjByCAIQMABicPgSeFxiAAWQoIgCM8NwGAOakCKCSA2ZYA3oARAK+uQRWpMYDAKwFFsAD7iJCQwIdHTvaMjY9NtQ2yTZGNjk28DbdNko2JTcQNxkFbU1fbBZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwppXu4wBM4D8QPmA8IApARQwMAAwASswADsRS4YrQNVBUwFSzFfdDxf7QBYFjOwAI0DzHDMAabsRn9CKygJMBssOzp+ct9vwfYZxyxuAXDXczUcBWQFb8nGyb0I1E7wTwUMPQUFDD0WRwqBXoKQjh2uIhAOIGqyKAoAjMgQAwYSAOVqHiQdPT0oXyxgOyw9KAnGQgpJHaIc10dAX9BTVG9SDzFwWTQAbxBzJF/lOD8gCWygCmcdwBznzAbMAV/OEyQzDg0OAQQEJ36i328/Mk8cybDJsQlqxtDRCmVBjiHSFgCTkqxfGG0+zj0KOJJfkA8iUUxxYDEyWua8FwqC8pJf5g1PDhM4WUhHPAk7SJwxCoaSX34NWCcoHTU2BQqPZvBjCnZkzmAQYDIocwRIYB4+ByAjYLgLB3AValNgUhYGAwRk7GAaYJpggmC4YFBglgR/aGCrAH4GPwUUJD9aMho/Q0yIBg2LAJUBLQ9Kd68AUpKlHSxPHAWeogYeBPARcIrYxgOhYyIBslDHVGlQBumjAcAP8s0LSgU1BBYbDQEsD1EBggJ0A45apg8ABGuIDe6wAQkudJoR8hwFNa1Q8wQVBUpsAP4ARlo9Dx1yhDq+EzoxzsNOAGQZRwoAH0q8AuAgS2wRIgmPHwQeyQB7BKMzDn2mFW+hyE1tYcBqDpA2VSjzSrcOeRIz25NjyLzD9cPcsflfrJCFwF9C4PnxYIEUdPI3YAAQgTkiBsZHm6YLw4yyxmupvjM1Rsz6saExjtWD64gW5YaZEwxUk3qZtsrsZ5egMboqgUPIhixiuh/kR2L812V0VmcNV7ibaqMTCBO0wrEHSSFjXUSQLqXGjcu6xaJvYyoOz8Ce+h4LBCURgA/Qz3CRlP8T3kEHjqBSz9A/30MELVoe926lMl7ox/fnzfa/lcR/CLR8enK8wadg7DgoxHlB8PB8dfvV1cRi3wKGO8QJIsYXC3L0FjAWdnLEjyyuSd/pgvnhyZlm552lTFDiZwonZ/vIJ6Aos/DzqDW4daTS5g9zbinvpgVAobCXyJclKFusuuhMKwjyzGPrauphtKnNc/FzqDkxweYhTnuB0wYE4rKkDq73wkIZhuZDyJQqE7or6oCHDoSWA7kHNvhMtZQZ5Qg9k5rsJBuI+APt/32PSTNUHK2nU9Af4Dk+jnD1DKTwcsS5n0h0kTFjDtgPVpIkNgf2E8pKnfa+1ZANeJ99rdxOsZ87kbXKrnRp2SAr6Kf0FIDSLHOkXRdD4dF7YtOc7cpjYBXviaEvbHXObTeT1YoCyFJ4YkoTQawNr10awrwSpkhDMjJfcarX73vx+eFbeK3rWpk/BZqPITEfrDBiR7wS6KIv9LRab5USpajILCejb+1MWWw+v0bJ1UVB7xYaKsAV2mK9CCt1rrpYK42VLF8y74OutWxWDsOhb4kkpWfahKo6g7qHs1Lc/ou6kANMc+7qw1Po/35R5jW0UZYBAMLX7bsIRJxcQcPvvfjSER24WN6oFg5zG6fBkZaVEhD4lXWP1Bix5Dr/N7h5tq2kAeHbELiuIVccpJRG+eBS5Lceoqoy7RwPoidPxtopoKQy4GTv8LzfES6JsIPpXCCPPP9M5c4pdG+ffo4qmv5XuUCWT1gY2OP27Xk5n6/+1/y4WtBzf0JM5mLhJZ2d4sKDItoJSXA3j4vH7xyBICX8gNmYUYisQR23Sx9Sb3W7Bsw4NieA85jgRLm53AuTN16JQHRtQdY5DEUZrGujL5E9MeGYMc40O78ml375czyGg2ELyskqbnyoV/l5H29xGca7cskmUKhdi6pAXaYHFX73nSBLdTeninOCWaLgOG+XyqvAesshPRlWEpnikpcI0VkO3Qx0mSZHAo7uQVx2hBbvdQL9pYRMcXNxUxzdnDC11r6gPflytg1Z5kIZwxvLsy3oO1ePnSlmb3JvYaos60ODDISW7B/SbSxiZQUVCL+5OlvGqk9EWB9Ejr+0g1DdxOwyq3oEASWP/Hn+apTRLQPETJHUEPZUTvTVv85EnE/OUeAEyT96ayvBzAWGG+LAyZ8ToasFAxtY/KaZxsH10Bmpb94OGPWS+yJFO6wpcaJrr8KXUCtg3pC1Tbf2N1F+3hYNqqA30h3jbSyhuUlg87XkEntavbIQKGd2xEFwhjZjP9MP6Sv1dKFHWTPizgtQsrepg0NW0eUYv+FoClN0lvjLa8naCKaVOxsBfWhu5saI6HpeZ5iW1u8fmmDWY/L4hEKORW0AMh8+tu9DFBtXhSEwrE+Xjk5nQ5i7us+NqqR091ZQpTjpGDo7pxU6I8FrKi6enHLUUB35aCFadMEynpQxV6NHuFzrxhddchZCcEvKyLXftvr2K15XY3XQjv2jHHETeU2Ny3CYzsNjggDLds4msv4J2VTH/m69zHI+Q3+YYQdtwIZTwjcUmlsvcM2NHmR79kwU70G6/B6ZkD/+uzTf1hAjruo5hLTC2F4Zhf856eAsXyQzTiWsdGN1o+L3/VppMd10YJos9B1V5B6GKH2R3JYpIhtU28BPA09B9N4z5/YIywjBmsk8KaWCEeZCp/B64NY0MaqAX6tBFeFbVsSAicmlrs3qhZeJgBYzt9uNOHgbnNB9ojoS3FI0tNHdTFnc7V32/auZTyflO3mvqSHm8AbNsCaJkAYc7w8f5/asTUTFUu26q5nXRpPHqSnFPIfcyUPZxS5K0ipe3BlvF5MAiaj28VCulmIdkbcehCo5x1yOy1JbwaW+rweViwjzQ5JvtTFD/6YiTH7KhApKZXYxS9aCjiKYgyyBh+bbkpg5+5Hqwu8ysdcSK/h3b+K7jhGz3LYHw7W/1TvVXzILYbhw0agnPlUuJ9VHdkbjg1IPhhClMzqQaqNZRLbUfXKsvJHvpHG2UX26atLHVfNJXrKWstO/XYoUkY6lnx1Q9+YlrnFJ+XKsInbLgETZ9HghGXdZOxmQXLn66AQ1UhOD0u9XfGbzh5d9Og1sup9KsC2NPWH9S8MzIqfNIqGZOT8sHybm47xfxZRNh6zmOzRuJNtVaSLQEAy6xhvrSGxowGz+c74KbT3tncTNbOJ2gFYwYRZ7xX1/eLWxv3ZgRx2SGKwjZYDlM9jHch5vTtBHpLQXoweg8DVYv4IiB26/dKd2993gKodpGT7PN7SFOnoK5SqG6Wst06KESAXQZ5EJ8p9oT9aiUIEOYhVFj8jfRl8Zba1Q7LXtpPwX+r9yVHpXiZFKPNtojqck0Nt3EYictILAF0UzcBj3PnwLFAx8tYX2RY9cVGNxJfIQdU/5/9urF0E/UAst8CidenIz3IybkMwFZIJKDQd8C2Opnr0n+G+SA6y2wlc4KL892arnFtMycnKmZsLulvzGA5HnENXsHB7LfgEx2o5GhNOPPSI5h96vBJZM0eCl13ejrw+OleqiLXBLhNl/5SDR/0IMDJnHPkZEQbrnWAKLsDvFW+HjcB2XnFsmsX5b22LJ8QhUzC45H9KeE/4E7HRqiJaES+nSEs/WeUT0LkBHcc3TWqJERUFT0aBuZI9Pu/+ygOKq+Fx2vXtDDEfZD0Lr9bgf/e0bq84eEYPbmMD598I3rPiVdY80qXHKCyewBBpFC2V0LXpLOlKTcRC3PpQjwiNrvno8DtuHcSwlpJ30PDxt63Xapry2PTD7SZrBZc28wWbxIb/CkaLnvTlpOgh3N8z0vtCk7YWfdLKjgpP3jhSKrpPAKbOSumi+iRrgQDwltqOe4OE8icsmkay/gymrv7vUrN3mo0GOCXrh69jcMckhBqWA2PwduMk3thx4M6QfZI0kBtfD9+mfDXYgHhskmHIXUHsMBIh3whzLqY56cH2EX8qGHPBIs8HdEoPj0dj0+u9xvq1YdLnfIF03Gaor0oaIMK/vlkKq6xYdgaIIYcZL2t1BelWDbSY7PYPa1QRdgarb5YlQf1VejbTsEq7jwWQHBC0RIIR6/HvRLeMCfpWFBHv/y2wpzLnZOlQgoJVkrt5E/ln1OB0BzjbQpUuNFH1Yttia+DYDgYbGMgUQnbkkCM7NDHY2RVGcZ2zJRzaVWYWgUmfgVXdCTkxmkWatbUHqKVG0b7YK8Ql9n4vFxeaH+pySzac3VIatu1UZcVbztSExMmOIgFPyFpS4Et2kEM+CW0gLgg6GxhtoNri7dp37sLLCQvNGSRF6qxAfT+NiDTPsDHGalmR0MozNBmFCQXTXwnPoUALQbwiazebTNk4MR4feM1YTX+Fi8Pr5usia+acVeOIEy/HIIKQOHFIpI0oPHVMKWPo+Bsl9yYeFqwMvbJMxegXAv/PIA1KpcPwVWGK78P4V2AU1LP5LShUw/pj1PJ7xvyAqMeEXX7wotX35BkknoiTo0K1vt2RdR2JmjxF5SzwnCCzG5Z6QoGHa2cxutopZMTdRaGv1HeueBpuWaaJjfYGITg5qjuHHKtAczk+wlJmlPyzYrLSLsJlbWWa0+kuzSNf/NyTZR+qGxUhthDpv0ArWwZXGN0TaZVsJTCLFi6A+6UDuJV7bs4wR9II5DKoG8P/VYaSmbpvBOcpGNRD7/2QXbyDu5eIdrc1j7a22ornAqxYijbKBGLn5R9Dem7e16pwfz1bCCtBn9gGy1DSeXxlyK8K4KLHklovmH6kizNbdinMeSa/Mm/Cwr48Dq2nLhbJja9ZiKkQUzv///tBp0U5c/a3LsZIabU4A7CsFbnX/rbvYYBlqTGkohb3m6vSBx46XhezIezkX/Lb8uhTjHDXcnSKYX0i8d5Tcd4zIGFniVBi0o06rKYCRITJrLLP/R0YXVgs/jZHVUhimTsM99GVzOihY91Ru2i9wChs5K8QcSKUTUeG3SEZsEMQM0nEWAi+VwgJA7Ablym5UenHRQgWdBTZ3/+8m6J6oOuQov/q8qvRtq7byIT9unG38oLm+pLDPxhxghdcDQKm94p/o6hQgx0Fm7cTb/xCkMu68U26jscDe/Mw6kc8ZZdWL3YzV4qxWYeKS6gCCcANE2O9LFxjtJqnxCVqP9KscrWUkPhFUHWZGt3AHNnuPAesdS15NphOkMHaQZhi7zPe7u8lR18f55ebXO0v+rRkUVa+FcTifwQXHdGFlU66010pE5p9z0FkI9/lYcfAOS6pnUBKelKf/5EnATf9NbD/15QGFZe1/7ANDhZvcctLudTy+VkFjBUnbF/6A4KPPl3+zmAF114mKl2BGii7CHFVPko1qgW7gCIKfpl3oURXdJZ/QQyqI+xlm1axWO4IoHLAuSckRwMy9DV0FHkAQzllKSILWB9q61h//J90BAxFPWro1pUhhSGfPfynwOmCSQOfjuNY6r5+6HdP66DnI83gNb6EreKwLY6SEYABNtdzaadWBx/jVPWhKheM+FaIrBKl61Dtr1/xNDIB0ogSfbrD3QAUSZh6jzNK5NCDGdSITReViZE8ONJskuC6XDiDJHArGhIiho+S9imN8fe18GHmsKv82zeJ2G1JBWk/bYbu/GaGNFpRHnRtym0ZU48GCDWkI5eOB2HCm3sUUFEstaX9dd3+rIg71yhIR79NckBwpRU7yLhu2AWmuIZuRTx66FqFYAiApj0hIb2PTTxNMjHVadKoGNuNAvbT4nxz8kik5pOrFl8qEkmjmrb8KEvg3OWl8Q54wp3JsSwVU4Z3ErrpLECFgVkHCpKsghsYvlz4jj/EmhwvmaFtAaPUm9PEgtqN8hRhkwlazxA8gBOLfjIFYhV3Kllih3afA81v1xdy2JjhYiQiYEQ+yU0DzYXIGnhcqT0RVe/uiHlh3sgUw5Fc+7pNHsxpL9plTKssCB3GyLhfKi7apaz3WkYNmu8ku1ZfhH4OiVT23k5LS73D4h5RjpCQFvEIo9pks3ntohrX5TuEG4E+sKfW/ac0jPJQ15mDUWETtG4TvLJn4vUIMOQVIlYucsFZNRQZrwvcXpqe0NMDaowmNkngsewxaJHancHim79O5T16Qo3OAptPxd6fhz1bAKZCuY6O+Ohig+7sDzCSKJ1u1KRqB1v8WjE18Qu2iwjPOgFHy5h+gnhuOGPu1x3AI1U6R2+/4cHMZghqBXbOgr9s6146BwRk4TNKAt/4FBTAlcdJF0Mc8peiQPWAR75zdClRAX6dKcNgdwuyji4DdYjzX34KFs+4LxtOFb7l9K8rBMR7Q78d2+GvVIZYEKXp4mtl+teKsvJzIj3mf1w/zcykDgFipsctdfYwY58k+3tNbUAZRdky7QUNBBT+eRo3LcCtCkngpP5Px3O53X+G/T+MuHwqAVlPBED/Xk/Dlf+Pf28EXFM6pErSYp6q6JHLQEPqPJMZFhI5gN5WPEt4kLvFEYT2qhyD7Bjw+uFxh2gOmZvihGpmtTS7Q4jmPD+IFVautIoCL8lmGDbqrqfkZCv9G+ZQSDXCGVaaKfwr8LcQLmxTg1BnnIm73ufg4KHixzyOWpgnhrEGk4I0So7sxDcprJTd2u2FHoOR8q5QjcOiLKr/0zukPmUBkrSXKOFs3s3uPAYhasjwZlR8om6nvn9TJo1J7VCA9dm+W4RaYBgegFIJrLs5+NTOvbyCV1z8sm3ZnG/N3DgUam9c7INe8EKL8ug+20EJ590FYOCU5q13i1rFVcjjIenigfl62+tGb20Qx9HDFkVxr7GqdWYZ/ruCrq6rS6Ub2W/Bpf59d1yGtcmkLpVn2vRke0amTUHsHFwzGtAl4PI6u4K/s8ysYcGDLWPccNHiroFCYqwqFLIBkZDSqPduu4fZFoibluc5TAxFqddGGtu0hzDzoXHaqJVvD4X12BuFQ/mOOqwBScwZY7unMcxWoQIQE/skvguP1K3WrYMKqfo2FTdUxjIu/sMGQulw5kyXbzJ72hqHp12vhTqvCSxACMOr6fLfG4tpIvU87LnjlQ9Syks7/dDhHIevZJX6O3d640QlDdc3OOGn4GB1ulOuyrMFXToujoXZtfuX2imEbfhk03L+5zFO54MDFt14iJAl9fJ1egDUNVs43yMEzeYu+yIJr8F/Y3K0/XrA7LdCaViCGvzSFdvIOGBNyjjV8DcInBXAoAcnxiricmNfeKYKWq3tspq0LDbrWbUhwIBi2hlTxgjJOyelPATW8d68DwsPeTRt+lhnrNgx7YNiTzbVMVeREGDJjIZ5ZbjxUbFo78CZ9KvpTgFNbxNzu5m3VcSLMuHTC6BQTA6Uk1RJw6KkmsutruHNv9Z5Tp4mhayA38dQ+SOOjBs9U65Pju+AHAvJQty6vrP9pcNB7av45nmyU2QArM1ICPqf6UfmFAT10PHsyyx9ACWLiC/8T6SAWjKRwcQvcXBOyh3Ff8EHrk46ZQQwHCYV+t1cJ7BJ3EljqeTh3MJsML0X/DweIJmlxjGJF13p/ei3Yd9EqWhbCm18Zgor3tHARWzJXItK+HqEm95vCtaeVd79eO7SGaDCTmSYAnnbfjq6QUU10nFLZQRfCfnqtrq0+uTBwtp0RFMH/DS+o++pCVy83sZUwE/Xd/x8USrZ2KeRYSyPZOe/8aez1a5NgwExjcPZIYr3fYh8ok1XaQzDHfDmpLwGINzRAQPf0rlpiz71MU4XyOfAdY1x/s7DnUTWdngL0gBiojuVyK2Br55Pc1kOYQsCUyCztZs6PTPMQgHf465sxSnUzIA/Y4E+lnTdPwngsR8CkYkWuWOHHfTeiuKP41glPVS2nJolAt3Cji0UTJZduoCrzG4ugrQTtqZa9XVUSImsxVyDJN0fuVw3WDGDD3txG4Q/vjBu8q6tA");const b=Q(y),z=Q(y),m=Q(y),d=t(y),Z=Q(y),W=y()&&function(A){const w=Q(A),B=Q(A),g=Q(A),t=Q(A),r=Q(A),e=Q(A),D=Q(A),n=Q(A),o=Q(A),M=E(A,(A=>Array(A()).fill(1))),c=A()?E(A,C,[...t,...e].sort(((A,w)=>A-w))):1,i=65039,x=8205,F=8419;function u(A,w){if(1===A)return 1;let B=String.fromCodePoint(...w.filter((A=>A!=i)));return A.hasOwnProperty(B)?A[B]:void 0}function I(A,w){let B=A[w];if(!B)return;let g=A[w+1];if(n.has(B)&&g&&D.has(g))return[2,[B,g]];if(g==i){if(t.has(B))return[2,[B]];if(e.has(B)||r.has(B))return[2,[B,i]]}return t.has(B)||e.has(B)?[1,[B]]:void 0}return function(A,Q){let t=A[Q],C=String.fromCodePoint(t);if(M.hasOwnProperty(C)){let w=M[C],B=Q+1;for(;;){let g=A[B];if(!g)break;let Q=String.fromCodePoint(g);if(!w.hasOwnProperty(Q))break;w=w[Q],B++}if(w.hasOwnProperty(""))return[B-Q,A.slice(Q,B)]}let r=A[Q+1];if(w.has(t)&&w.has(r))return[2,[t,r]];let e=B.has(t);if(e&&r===F)return[2,[t,F]];if((e||g.has(t))&&r===i&&A[Q+2]===F)return[3,e?[t,F]:[t,i,F]];let D=I(A,Q);if(!D)return[0];let[E,n]=D,l=Q+E;if(r=A[l],r===x){let w=u(c,n);if(w){let B,g=[],t=l;for(;A[t++]===x;){let Q=I(A,t);if(!Q)break;let[C,r]=Q;if(w=u(w,r),!w)break;t+=C,1===w?(n.push(x,...r),B=t):(g.push(x,...r),w.hasOwnProperty("")&&(n.push(...g),g.length=0,B=t))}if(B)return[B-Q,n]}}if(o.has(r)){let w=l+1;for(;o.has(A[w]);)w++;if(917631===A[w++])return[w-Q,n.concat(A.slice(l,1+w-l))]}return D}}(y);function v(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],B=[],g=-1,Q=0;return Y(A,(function(A,t){if(-1===g)0==A?g=t:w.push(t);else if(Q>0&&Q>=A)0==A?(w.push(g,...B),B.length=0,g=t):B.push(t),Q=A;else{let C=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return I+(588*(A-4352)+28*(w-4449));if(l(A)&&w>4519&&w<4547&&(A-I)%28==0)return A+(w-4519);for(let[B,g]of F)if(2==g.length&&g[0]==A&&g[1]==w){if(u.has(B))break;return B}return-1}(g,t);C>=0?g=C:0==Q&&0==A?(w.push(g),g=t):(B.push(t),Q=A)}})),g>=0&&w.push(g),w.push(...B),w}(w)))}function q(A,w){return new Error(`Disallowed label "${o(String.fromCodePoint(...A))}": ${w}`)}function $(A){const w=45;let B=c(M(A),W,(A=>{if(b.has(A))return;if(m.has(A))return[];if(z.has(A))return[A];let w=n(d,A);if(w)return w;throw new Error(`Disallowed character "${o(String.fromCodePoint(A))}"`)})).map((A=>{let B=v(A);if(B.length>=4&&B[2]==w&&B[3]==w&&120==B[0]&&110==B[1])try{let w=function(A){let w=[],B=A.lastIndexOf(45);for(let g=0;g<B;g++){let B=A[g];if(B>=128)throw new Error("expected ASCII");w.push(B)}B++;let g=0,Q=128,t=72;for(;B<A.length;){let C=g;for(let w=1,Q=36;;Q+=36){if(B>=A.length)throw new Error("invalid encoding");let C=A[B++];if(C>=48&&C<=57)C-=22;else{if(!(C>=97&&C<=122))throw new Error(`invalid character ${C}`);C-=97}g+=C*w;const r=Q<=t?1:Q>=t+26?26:Q-t;if(C<r)break;w*=36-r}let r=w.length+1,e=0==C?g/700|0:g-C>>1;e+=e/r|0;let D=0;for(;e>455;D+=36)e=e/35|0;t=D+36*e/(e+38)|0,Q+=g/r|0,g%=r,w.splice(g++,0,Q)}return w}(B.slice(4));[A]=c(w,W,(A=>z.has(A)?[A]:[]));let g=v(A);if(w.length!=g.length||!w.every(((A,w)=>A==g[w])))throw new Error("not normalized");B=w}catch(A){throw q(B,`punycode: ${A.message}`)}let g=A.flatMap((({v:A})=>A??[65039]));if(B.length>0){if(B.length>=4&&B[2]==w&&B[3]==w)throw q(B,"invalid label extension");if(B[0]==w)throw q(B,"leading hyphen");if(B[B.length-1]==w)throw q(B,"trailing hyphen");if(Z.has(B[0]))throw q(B,"leading combining mark");try{!function(A){for(let w=0,B=A.length-1;w<=B;w++){switch(A[w]){case 8204:if(w>0&&k.has(A[w-1]))continue;if(w>0&&w<B){let g=w-1;for(;g>0&&J.has(A[g]);)g--;if(a.has(A[g])){let g=w+1;for(;g<B&&J.has(A[g]);)g++;if(N.has(A[g]))continue}}break;case 8205:if(w>0&&k.has(A[w-1]))continue;break;case 183:if(w>0&&w<B&&108==A[w-1]&&108==A[w+1])continue;break;case 885:if(w<B&&P.has(A[w+1]))continue;break;case 1523:case 1524:if(w>0&&R.has(A[w-1]))continue;break;default:continue}throw new Error(`No context for "${o(String.fromCodePoint(A[w]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>O.has(A))))throw new Error("Disallowed katakana")}(g)}catch(A){throw q(B,A.message)}}return{tokens:A,cps:B,text:g}}));if(B.some((A=>A.text.some((A=>S.has(A)||U.has(A))))))for(let{text:A,cps:w}of B)try{h(A)}catch(A){throw q(w,`bidi: ${A.message}`)}return B.map((A=>String.fromCodePoint(...A.cps))).join(".")}function _(A){return c(M(A),W,(A=>{if(b.has(A))return{};if(z.has(A))return[A];if(m.has(A))return{i:A};let w=n(d,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{X as BUILT,j as IDNA,p as UNICODE,V as VERSION,$ as ens_normalize,_ as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -459,5 +361,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -468,5 +375,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -493,18 +407,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -515,55 +442,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -711,3 +656,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -743,8 +688,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -771,4 +713,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -858,3 +800,3 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = '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';

@@ -873,5 +815,5 @@ // this is a polyfill for normalized forms

const BUILT = '2021-12-27T05:53:52.428Z';
const BUILT = '2022-01-05T07:15:53.378Z';
const UNICODE = '14.0.0';
const VERSION = '1.3.7';
const VERSION = '1.3.9';
const IDNA = 'adraffy';

@@ -945,7 +887,6 @@ let r = decode_payload(PAYLOAD);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -957,15 +898,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -987,6 +927,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -993,0 +932,0 @@ throw label_error(cps, err.message);

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

function A(A){let B=function(A){let B=0;function w(){return A[B++]<<8|A[B++]}let Q=w(),E=1,e=[0,1];for(let A=1;A<Q;A++)e.push(E+=w());let t=w(),C=B;B+=t;let M=0,r=0;function n(){return 0==M&&(r=r<<8|A[B++],M=8),r>>--M&1}const D=2**31,g=D>>>1,o=D-1;let c=0;for(let A=0;A<31;A++)c=c<<1|n();let x=[],l=0,i=D;for(;;){let A=Math.floor(((c-l+1)*E-1)/i),B=0,w=Q;for(;w-B>1;){let Q=B+w>>>1;A<e[Q]?w=Q:B=Q}if(0==B)break;x.push(B);let t=l+Math.floor(i*e[B]/E),C=l+Math.floor(i*e[B+1]/E)-1;for(;0==((t^C)&g);)c=c<<1&o|n(),t=t<<1&o,C=C<<1&o|1;for(;t&~C&536870912;)c=c&g|c<<1&o>>>1|n(),t=t<<1^g,C=(C^g)<<1|g|1;l=t,i=1+C-t}let F=Q-4;return x.map((B=>{switch(B-F){case 3:return F+65792+(A[C++]<<16|A[C++]<<8|A[C++]);case 2:return F+256+(A[C++]<<8|A[C++]);case 1:return F+A[C++];default:return B-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>B[w++]}function B(A){return 1&A?~A>>1:A>>1}function w(A,B){let w=Array(A);for(let Q=0,E=-1;Q<A;Q++)w[Q]=E+=1+B();return w}function Q(A,w){let Q=Array(A);for(let E=0,e=0;E<A;E++)Q[E]=e+=B(w());return Q}function E(A){let B=new Set(w(A(),A)),Q=A(),E=w(Q,A),e=function(A,B){let w=Array(A);for(let Q=0;Q<A;Q++)w[Q]=1+B();return w}(Q,A);for(let A=0;A<Q;A++)for(let w=0;w<e[A];w++)B.add(E[A]+w);return B}function e(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(M(w,A))}for(;;){let w=A()-1;if(w<0)break;B.push(r(w,A))}return B.flat().sort(((A,B)=>A[0]-B[0]))}function t(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(w)}return B}function C(A,B,w,E){let e=Array(A).fill().map((()=>[]));for(let t=0;t<B;t++)Q(A,w).forEach(((A,B)=>e[B].push(E?E[A]:A)));return e}function M(A,B){let w=1+B(),Q=B(),E=t(B);return C(E.length,1+A,B).map(((A,B)=>[A[0],A.slice(1),E[B],w,Q]))}function r(A,B){return C(1+B(),1+A,B).map((A=>[A[0],A.slice(1)]))}function n(A,B){for(let[w,Q,E,e,t]of A){let A=B-w;if(A<0)break;if(E>0){if(A<e*E&&A%e==0){let B=A/e;return Q.map((A=>A+B*t))}}else if(0==A)return Q}}function D(A,B){let{length:w}=A,Q=w-B.length;for(let E=0;0==Q&&E<w;E++)Q=A[E]-B[E];return Q}function g(A){return`{${function(A){return A.toString(16).toUpperCase().padStart(2,"0")}(A)}}`}function o(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>g(A.codePointAt(0))))}function c(A,B){return B||(B=g),A.replace(/(?:([\x00-\x20\x7F\xA0\u200C\u200D\s])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((A,w,Q)=>w?B(w.codePointAt(0)):`&#${Q.codePointAt(0)};`))}function x(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function l(A){let B=[],w=A.lastIndexOf(45);for(let Q=0;Q<w;Q++){let w=A[Q];if(w>=128)throw new Error("expected ASCII");B.push(w)}w++;let Q=0,E=128,e=72;for(;w<A.length;){let t=Q;for(let B=1,E=36;;E+=36){if(w>=A.length)throw new Error("invalid encoding");let t=A[w++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}Q+=t*B;const C=E<=e?1:E>=e+26?26:E-e;if(t<C)break;B*=36-C}let C=B.length+1,M=0==t?Q/700|0:Q-t>>1;M+=M/C|0;let r=0;for(;M>455;r+=36)M=M/35|0;e=r+36*M/(M+38)|0,E+=Q/C|0,Q%=C,B.splice(Q++,0,E)}return B}function i(A,B,w){let Q=[],E=[],e=[E];function t(){Q.length>0&&(E.push({v:Q}),Q=[])}for(let C=0;C<A.length;C++){if(B){let[w,Q]=B(A,C);if(w>0){t(),E.push({e:Q,u:A.slice(C,C+w)}),C+=w-1;continue}}let M=w(A[C]);Array.isArray(M)?Q.push(...M):(t(),M?E.push(M):(E=[],e.push(E)))}return t(),e}let F=A("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");const f=Array(1+F()).fill().map((()=>E(F))),S=e(F),u=E(F),U=44032;function s(A){return A>=U&&A<55204}function I(A,B){if(A<128)B(A);else if(s(A)){let w=A-U,Q=w%588/28|0,E=w%28;B(4352+(w/588|0)),B(4449+Q),E>0&&B(4519+E)}else{let w=n(S,A);if(w)for(let A of w)I(A,B);else B(A)}}function k(A,B){let w=[];function Q(){w.sort(((A,B)=>A[0]-B[0])).forEach((([A,w])=>B(A,w))),w.length=0}function E(A){let E=1+f.findIndex((B=>B.has(A)));0==E?(Q(),B(E,A)):w.push([E,A])}A.forEach((A=>I(A,E))),Q()}function T(A){let B=[];return k(A,((A,w)=>B.push(w))),B}function G(A){let B=[],w=[],Q=-1,E=0;return k(A,(function(A,e){if(-1===Q)0==A?Q=e:B.push(e);else if(E>0&&E>=A)0==A?(B.push(Q,...w),w.length=0,Q=e):w.push(e),E=A;else{let t=function(A,B){if(A>=4352&&A<4371&&B>=4449&&B<4470)return U+(588*(A-4352)+28*(B-4449));if(s(A)&&B>4519&&B<4547&&(A-U)%28==0)return A+(B-4519);for(let[w,Q]of S)if(2==Q.length&&Q[0]==A&&Q[1]==B){if(u.has(w))break;return w}return-1}(Q,e);t>=0?Q=t:0==E&&0==A?(B.push(Q),Q=e):(w.push(e),E=A)}})),Q>=0&&B.push(Q),B.push(...w),B}let L=A("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");const R=E(L),N=E(L),h=E(L),J=E(L),H=E(L),Y=E(L);function X(A){if(0==A.length)return;let B=A.length-1;if(R.has(A[0])){if(!A.every((A=>R.has(A)||h.has(A)||J.has(A)||H.has(A)||Y.has(A))))throw new Error("RTL: disallowed properties");for(;Y.has(A[B]);)B--;if(B=A[B],!(R.has(B)||J.has(B)||h.has(B)))throw new Error("RTL: disallowed ending");let w=A.some((A=>J.has(A))),Q=A.some((A=>h.has(A)));if(w&&Q)throw new Error("RTL: AN+EN")}else{if(!N.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>N.has(A)||J.has(A)||H.has(A)||Y.has(A))))throw new Error("LTR: disallowed properties");for(;Y.has(A[B]);)B--;if(B=A[B],!N.has(B)&&!J.has(B))throw new Error("LTR: disallowed ending")}}let d=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const O=E(d),K=E(d),V=E(d),P=E(d),a=E(d),p=E(d),z=E(d);function W(A,B){return x(String.fromCodePoint(...B).normalize(A))}function m(A){return W("NFC",A)}function y(A){return W("NFD",A)}const v="2021-12-27T05:53:52.428Z",j="14.0.0",Z="1.3.7",b="adraffy";let q=A("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");const $=E(q),_=E(q),AA=E(q),BA=e(q),wA=E(q),QA=q()&&function(A){const B=E(A),w=E(A),Q=E(A),e=E(A),M=E(A),r=E(A),n=E(A),D=E(A),g=E(A),o=function(A,B){let w=[];for(;;){let Q=t(A);if(0==Q.length)break;let E=1+A();w.push(...Q.reduce(((w,Q)=>C(E,Q,A,B).map(((A,B)=>w[B].concat(8205,A)))),C(E,Q.shift(),A,B)))}return new Set(w.map((A=>String.fromCodePoint(...A))))}(A,[...e,...r].sort(((A,B)=>A-B))),c=65039,x=8419;function l(A,B){let w=A[B],Q=A[B+1];if(D.has(w)&&Q&&n.has(Q))return[2,[w,Q]];if(Q==c){if(e.has(w))return[2,[w]];if(r.has(w)||M.has(w))return[2,[w,c]]}return e.has(w)||r.has(w)?[1,[w]]:void 0}return function(A,E){let e=A[E],t=A.length;if(E+2<=t&&B.has(e)){let w=A[E+1];if(B.has(w))return[2,[e,w]];if(!l(A,E))return[0]}let C=w.has(e);if(E+2<=t&&C&&A[E+1]==x)return[2,[e,x]];if(E+3<=t&&(C||Q.has(e))&&A[E+1]==c&&A[E+2]==x)return[3,C?[e,x]:[e,c,x]];let M=l(A,E);if(!M)return[0];let r=M[0]+E,n=M[1].slice(),D=!1;for(;r+1<t&&8205===A[r];){let B=l(A,r+1);if(!B)break;D=!0,r+=1+B[0],n.push(8205,...B[1])}if(D){let A=String.fromCodePoint(...n);if(!o.has(A.replace(/\u{FE0F}/gu,"")))return M}else if(r+2<t&&g.has(A[r])){let B=r+1;for(;B+1<t&&g.has(A[B]);)B++;if(917631==A[B++])return[B-E,n]}return[r-E,n]}}(q);function EA(A){return A.flatMap((({e:A,v:B})=>A??G(B)))}function eA(A,B){return new Error(`Disallowed label "${o(String.fromCodePoint(...A))}": ${B}`)}function tA(A){const B=45;let w=i(x(A),QA,(A=>{if($.has(A))return;if(AA.has(A))return[];if(_.has(A))return[A];let B=n(BA,A);if(B)return B;throw new Error(`Disallowed character "${o(String.fromCodePoint(A))}"`)})).map((A=>{let w=EA(A);if(w.length>=4&&w[2]==B&&w[3]==B&&120==w[0]&&110==w[1]){let B;try{B=l(w.slice(4)),[A]=i(B,QA,(A=>_.has(A)?[A]:[]));let Q=EA(A);if(B.length!=Q.length||!B.every(((A,B)=>A==Q[B])))throw new Error("not normalized")}catch(A){throw eA(w,`punycode: ${A.message}`)}w=B}let Q=A.flatMap((({v:A})=>A??[]));if(w.length>0){if(w.length>=4&&w[2]==B&&w[3]==B)throw eA(w,"invalid label extension");if(w[0]==B)throw eA(w,"leading hyphen");if(w[w.length-1]==B)throw eA(w,"trailing hyphen");if(wA.has(w[0]))throw eA(w,"leading combining mark");try{!function(A){for(let B=0,w=A.length-1;B<=w;B++){switch(A[B]){case 8204:if(B>0&&O.has(A[B-1]))continue;if(B>0&&B<w){let Q=B-1;for(;Q>0&&K.has(A[Q]);)Q--;if(V.has(A[Q])){let Q=B+1;for(;Q<w&&K.has(A[Q]);)Q++;if(P.has(A[Q]))continue}}break;case 8205:if(B>0&&O.has(A[B-1]))continue;break;case 183:if(B>0&&B<w&&108==A[B-1]&&108==A[B+1])continue;break;case 885:if(B<w&&a.has(A[B+1]))continue;break;case 1523:case 1524:if(B>0&&p.has(A[B-1]))continue;break;default:continue}throw new Error(`No context for "${o(String.fromCodePoint(A[B]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>z.has(A))))throw new Error("Disallowed katakana")}(Q)}catch(A){throw eA(w,A.message)}}return{tokens:A,cps:w,text:Q}}));if(w.some((A=>A.text.some((A=>R.has(A)||h.has(A))))))for(let{text:A,cps:B}of w)try{X(A)}catch(A){throw eA(B,`bidi: ${A.message}`)}return w.map((A=>String.fromCodePoint(...A.cps))).join(".")}function CA(A){return i(x(A),QA,(A=>{if($.has(A))return{};if(_.has(A))return[A];if(AA.has(A))return{i:A};let B=n(BA,A);return B?{m:B,u:[A]}:{d:A}}))[0]}export{v as BUILT,b as IDNA,j as UNICODE,Z as VERSION,D as compare_arrays,tA as ens_normalize,CA as ens_tokenize,c as escape_name_for_html,o as escape_unicode,G as nfc,m as nfc0,T as nfd,y as nfd0,l as puny_decode,g as quote_cp,i as tokenized_idna};
function A(A){let Q=function(A){let Q=0;function w(){return A[Q++]<<8|A[Q++]}let B=w(),r=1,t=[0,1];for(let A=1;A<B;A++)t.push(r+=w());let E=w(),e=Q;Q+=E;let n=0,C=0;function M(){return 0==n&&(C=C<<8|A[Q++],n=8),C>>--n&1}const D=2**31,g=D>>>1,o=D-1;let c=0;for(let A=0;A<31;A++)c=c<<1|M();let F=[],i=0,f=D;for(;;){let A=Math.floor(((c-i+1)*r-1)/f),Q=0,w=B;for(;w-Q>1;){let B=Q+w>>>1;A<t[B]?w=B:Q=B}if(0==Q)break;F.push(Q);let E=i+Math.floor(f*t[Q]/r),e=i+Math.floor(f*t[Q+1]/r)-1;for(;0==((E^e)&g);)c=c<<1&o|M(),E=E<<1&o,e=e<<1&o|1;for(;E&~e&536870912;)c=c&g|c<<1&o>>>1|M(),E=E<<1^g,e=(e^g)<<1|g|1;i=E,f=1+e-E}let x=B-4;return F.map((Q=>{switch(Q-x){case 3:return x+65792+(A[e++]<<16|A[e++]<<8|A[e++]);case 2:return x+256+(A[e++]<<8|A[e++]);case 1:return x+A[e++];default:return Q-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>Q[w++]}function Q(A){return 1&A?~A>>1:A>>1}function w(A,Q){let w=Array(A);for(let B=0,r=-1;B<A;B++)w[B]=r+=1+Q();return w}function B(A,w){let B=Array(A);for(let r=0,t=0;r<A;r++)B[r]=t+=Q(w());return B}function r(A){let Q=new Set(w(A(),A)),B=A(),r=w(B,A),t=function(A,Q){let w=Array(A);for(let B=0;B<A;B++)w[B]=1+Q();return w}(B,A);for(let A=0;A<B;A++)for(let w=0;w<t[A];w++)Q.add(r[A]+w);return Q}function t(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(n(w,A))}for(;;){let w=A()-1;if(w<0)break;Q.push(C(w,A))}return Q.flat().sort(((A,Q)=>A[0]-Q[0]))}function E(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(w)}return Q}function e(A,Q,w,r){let t=Array(A).fill().map((()=>[]));for(let E=0;E<Q;E++)B(A,w).forEach(((A,Q)=>t[Q].push(r?r[A]:A)));return t}function n(A,Q){let w=1+Q(),B=Q(),r=E(Q);return e(r.length,1+A,Q).map(((A,Q)=>[A[0],A.slice(1),r[Q],w,B]))}function C(A,Q){return e(1+Q(),1+A,Q).map((A=>[A[0],A.slice(1)]))}function M(A,Q,w){let B={};for(;;){let r=Q(A);if(0==r.length)break;let t=1+A(),E=Array(t).fill(B);for(let Q of r)E=e(t,Q,A,w).map(((A,Q)=>{let w=E[Q],B=String.fromCodePoint(...A),r=w[B];return r||(r=w[B]={}),r}));E.forEach((A=>A[""]=1))}return B}function D(A,Q){for(let[w,B,r,t,E]of A){let A=Q-w;if(A<0)break;if(r>0){if(A<t*r&&A%t==0){let Q=A/t;return B.map((A=>A+Q*E))}}else if(0==A)return B}}function g(A,Q){let{length:w}=A,B=w-Q.length;for(let r=0;0==B&&r<w;r++)B=A[r]-Q[r];return B}function o(A){return`{${function(A){return A.toString(16).toUpperCase().padStart(2,"0")}(A)}}`}function c(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>o(A.codePointAt(0))))}function F(A,Q){return Q||(Q=o),A.replace(/(?:([\x00-\x20\x7F\xA0\u200C\u200D\s])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((A,w,B)=>w?Q(w.codePointAt(0)):`&#${B.codePointAt(0)};`))}function i(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function f(A){let Q=[],w=A.lastIndexOf(45);for(let B=0;B<w;B++){let w=A[B];if(w>=128)throw new Error("expected ASCII");Q.push(w)}w++;let B=0,r=128,t=72;for(;w<A.length;){let E=B;for(let Q=1,r=36;;r+=36){if(w>=A.length)throw new Error("invalid encoding");let E=A[w++];if(E>=48&&E<=57)E-=22;else{if(!(E>=97&&E<=122))throw new Error(`invalid character ${E}`);E-=97}B+=E*Q;const e=r<=t?1:r>=t+26?26:r-t;if(E<e)break;Q*=36-e}let e=Q.length+1,n=0==E?B/700|0:B-E>>1;n+=n/e|0;let C=0;for(;n>455;C+=36)n=n/35|0;t=C+36*n/(n+38)|0,r+=B/e|0,B%=e,Q.splice(B++,0,r)}return Q}function x(A,Q,w){let B=[],r=[],t=[r];function E(){B.length>0&&(r.push({v:B}),B=[])}for(let e=0;e<A.length;e++){if(Q){let[w,B]=Q(A,e);if(w>0){E(),r.push({e:B,u:A.slice(e,e+w)}),e+=w-1;continue}}let n=w(A[e]);Array.isArray(n)?B.push(...n):(E(),n?r.push(n):(r=[],t.push(r)))}return E(),t}let l=A("ABMCuQDBCCEAOQDaACcAcgAZAC0AFwAtABEAJgAOACUEiQNRALQNRycbxexVsVUCJRieAuAASPZlZwBu4QoILXBwcHDwcAJrCe2iQYxsZfepR1yjAE1t7ecAc/kC78r4ABIsL4ogCD5wcHBwcHBwcG1gcLoGoI4BftQRK3l3Foh/XQAm511CBPcaKvdlpVPlcO1wZ2X+AJdEA0IAlgBIDCwB7gXLA4Y49DEG+gL3BKEEogSjBKQEpQSmBKcEqASpBKoErAStBK4EsASyBLP6DwU8AZUFPQGVBT4BlQUJJgUKJgULJgVCBUMFYQYCC0YLRw0pDTkNqQ25DmIOYw5rDmUcwQISHL8CDAsOANBWHOsRICQEgguHdDSa1kwE03+3B57NVy6SAHHFGgHZiLxWOdMGHR2cA1UoEQIHAAE5o9IADjAmDgUPCo0BAgMAhy9T7BAPwR4WNgSLAxJ8FeQvHwDQXgSfEesWchzoGAI3AQFEBQAQPJyVqZ0MzwBNzQBEAGUE9wHThG8DMQFePhmdA1cmA8rNQEkB8S0DABD/VTNpN5IbYx4ASAUfAscGCCuSAFMOuAHvCwThd4QaQgDgAMJSUgQ4CJ4Ad40AqAFWVrBlRRWIDK4D+gCsBUgFFRACAQIGLhmOESYCTRmKHL4CTgI2BXE4cQVDAK1DAvqfodmRADcE8Tj1Hv2R+0wAFKkaoxW5NmMA8P8BnQL6mRk7PwAhUwAzAD4pOTZc5AL7CmUCjtcChw4/xAM2zwKEKALUBXdTBQM2xW0HAQEBAQUBQwCumwL5PwUXpAPs6QTbK4BXUj00AgU6BUkEpgTbBazlABX3SZhOnQL0Ot5ALgpXCclv8XeEBnMQTSfXESkMZQHnAW0OH0wKBSMGbQT7H68ZSw//lc4I1y4PDR8nFS7TgIwkJyq1Bh9MJj0PC39Rmg+LC5cKFTqVgYADUwE/Ir0LDw1rCJ8RJQr7nQ4XEXcHawQHScwA1wczC0MdZxXnJkJi3gs7OakHLRsoC8Em4RNbey4GBRpTBn8BWxsxAQEvGYXiWmNcThBPkQY1C1cj+RTaUFINV0DpeHoaTQdHJdsCw0OiSrlRaB7FIig8bw2YLkVRrggnPDcZgQuzPNBG3UVAEgQ+vz16IntMXgRnsSxhJ70KAQ+3DOt8pAGLCVMJ4wyjE2MRSTf3CGsHS1+XVidHCFNGx2DMBSnRBCUUAwM9BXEJcwdFA+ccXxNgFVsFP4FWAAkDJTcHLuUCwVayAUkF/Q9XIBEQgkgSDxsIzQKXA7UmHQBfFVMASSLNCHWVAJGQClM3Lv0I+WqeI6YDmRUZkxGlB8MOiQfZHGUV8R0TcPpePYY6KNXhCY0BpwnLAZEFFQg7NY2M0iBzZ4WLihjNIJNBcV4uAmMMlxXRRO+HqgK9D50STQFnAaUHaw0zAqkSHxGdFRDHCR2GNjXnNCo6VwSBIbUgQwpZA4FtAAtZJysNKpsB1RKUAz40b3ggZ91g6FYYLwdLMvdBkiIjC8RP/wzOGvMYdFRgGhYH8QQlGyUoHEGJBjED1TVFOn80IATvC5sIvQlxAHsO1QtJCAkYnAqjjQIBY70B6SfLA4nDtQKhwQZpBQc9AJk9uQWrABcATwLZCNUANwEBA4kAawLfB88ASwcBALdzAW8DWRthAVMAFwLBA8UIY/0Bx2ECJVsETfUMRwEpaW58AsPjAoCcZtQGD4oCwAJ7ZwF/VwQ3gHmDA+GjABMRAQ0AfQZFABF5AUfdfP1MABV1AhGhXQD5AS0AN2cHN3MB/wIlEJ8A6QGRC2MJ1OXnAX8AG1sAtQBHEyOdBAIJArsBDwBnALEAIwGFAH8FiwArBgUCgXsRAUNjSl0SiZMB7QNRAWUBPwCrBv2/1/s5CVEEnwgFAhBNFhMC72AH5zMDIxET/0L3Ar4Qh6GSAwJkswJidI0Lf+EvjSA3UgKiKQJoyhEXAmY7Ap+2OE09AmZtAmZYCwSgBLEDA39FA37EDTk4OakHSTm0OlUnHStVAQMjBQJsTwIyaDg8GwJt+QJt4BsAIbwRMWWZJXcRXRUBDwGZARABEwB8NwfKDL8BMD0j9AA/5wJ3YQJ21A8ZAXECeX11AnjsTwmOAA1F4A1HCQJ8cQJ6+hsPCQJ9OwJ9IgWLBVJIMkivDZVWAoGfAoAyAoA3An/gE0mKSo1HG0lK/gLRMwLQ/ktZGQOIgQOIGET3kWQC8tNdNQMD4ANMAExfVwU1AAFNfixN4QKLcQKLCvNNGTkMB08ZJQd1mTfpAo5pAo6OcsknswKPCwKOjqooUeZTZxsvPFMGVLcrApQtApM+ARsATlVQVeFWAjgsTSnHuDMTeJhFbWsGApfRAu/kWFPaAItXApbBApauzgDbWd5aO7N/AG0ClucCloBcdl0DApn9ApmWXPxdOUsCnM059DrPApxIAp/NAp7qDbwAT0FjXEEPCwKeIwKexADnb2FmYiECnwUCoKAB2wKe0VECnoDXJmP6ZFlXXQIn4QImsAKhLQKgfgKjDwKh9gsnAqZhAqYAGwKoMQCvAqgkE2iuaOMANRsbGXtqTmsDAq0VAqzgAq2ZAq00AldPAlYOArITHwAJAx+ACWzJArLvPyUCsxhHbRJtlW16kQMl/wK2jm1xbsIDKXcCuJACuXlHArlcqXBocRMFAr1LArwMcMgDMkMCvrpyNAMzowK+THNUc4ErAsP9AsM2c7R0fWd3dRIDPNkvAzzMAz3xAsWuAsZ5AsZCuwcCyJuDAsh2AsmBAslgAmTPAt4EeKuTeOB5V0wCAxjVDWc0AwJiJhollVZ7PRVexF7tBUMCz50Cz55hfYUABAAlRdEA+N8RAs+lAVsAHANORH59NwLcWQLbvALSgQNSjgNTkQEzA1W+gLsJB3Ey/UgAH5J3J4JOgwUxgwCDvwLa+QLaEIRChHunbgOG1wBhA2RAA4ajiwArAIcC35cC3uodpakC4mHtRgHzYg5ZAfTNAfMEuQLsJScC6aKrMQLrKwLrFgEreQHrKQLuuwLrzpbclzUC7nEDhhKYq3EScdMC8zUAmwOOSAGZxQL3RQORoAOSuQL3ygL6CwL4mJpOmt3tJ2mbUAOdtQL/LAFNAGufTi+f5QMFvwOmnAOnCwED9wMGnKG6ojcFOwMMewLyAHE1DSsBE3MlJUkHMR8hhQ0BQwAlEwOdATnJEZk3AMURX13p4e8ADQG7BQsFAxUFC8sUsUMEawItFy9bIScfBzdTDs8J0R8FDR8Aky8HKYkP9wMpAc8A6QXrAG89n3MBYDEwMTAxLDEwMTAxMDEuMS4xMDEwMTAxMDEsMTAxMDEwMS4xLjEwMTAxMDEwMS4xLjEwMTAxLDEwMTAxLjEwMTAxKjEwMTAxLjEwMTAxMDEuMTAxLjEwMTAxMDEwMTAxLDEsMTAxMDEwMUYxJDFYMSAxJDEkMb8xMDEwMTAxYDEBdQGyMQAuMSgxKDEB51gApwNANjEiMZ8xLjEMMQBeMTAxKDEwMSgxMDEkMTAxKjEwMSoxMDE0MS4xSDE+MSgx0zEyMQA8MQJvApwxBA8DsATDM1IJCRUUCQN3ChkHBjE3KAdTrjE8MTAxJjEANwB2MS4xLjEwMSQxAEUAaDFEMTAxMDEoMSgxAqkzMjcABxgTA50BLAMAITwL9zQPASk80Vnx4+kAFwHDBSZTc3QzBSYAGxSxQzTyMS4xMDEwMbsxADYxMDEwMTAxMDEATQCMMTAxAncCtjEuMS4xMDEwMTAxMDEuMb0xADgxMDEwMS4xOoU6xjEwMS4xMDEwMS4xMDEwMTAxvzEwMZ8A6jEwMSwxMDE6wTsCMS4xMDEAvzjzOw4xMDEwMTAxLjEwMTAxANcBGjEwMS4xMDEwMTAxMDEuMTAxLjEuMTAxMDEUCQD9AWwxMDGzMTAxMDEwMTptOi46KzuoMTAxMDG7MTAxMDEwMTqNO9AxMDEkMTAxuzEwMTAxMDE6oTlKAYgxMDEBZQGeMTAxMDEwMQVhNY810DXfNZg1pzXoNfc1tDXDNgQ2EzXQNd82IDYvNeQ18zY0NkM1+DYHNkg2WTYQNh82YDZvNmA1XxNTNmw2bzZuNvs3OgTCPIk2agIDNw83UjdBNvwTEhNSN7s3YgQ8BOI8mTZWN0s3ngU6v2lTIR9DBkM5GEMSQz0LJ04ZMQ9BCc1anw1agwdVOCMCAOmxAOniGgUDARRbBQAJAxsB1QDvBekAbzWlBPErPgAAKz4AADU+ADMoBDE6NTI7PD0mBj0mAAQ9JgY7JicmAis8Dw4ABwgBKTgBBg0bJDE2AAEBAwIFhwTB9SMm8QElICMmACciI+/vGBfDI9cbAqF2CV/jFP8vECwpDVApDQRKSUQpJi9ONQ0MLktIKSgpDUgAKS5LRCkoKQ0CCUgxNikoMw1CKSQAAwMrJAMlJAADAzEkAAMxNjckERhzThhzThgVGBUYc04Yc04Yc04Yc04YFRgVGHNMGHNOGHNOGHN0e25zbnt6e3pzaHVoc2gXTWgZGHt6ewpZs1S6BQYBFOfLAx8jAbcECwDVBfMAb1sDCgMHCNBEGAPVCxoTzzEPCEl0bfPuvtUITbpVYVJlxVlu6xi8yukTEkTF+I1Bz4RYE53KIyT5DqAze0PwJQnlNxSS1YcpXV+gDEc/C4oNhoy1Ki91qpqCkt0JC6govLXTaVPJD3AwcKH0Xt5qRPRA5eQ6MH8VyPygTIkcSo7sGVE7g/x/2GhuMYWGguyR28kVFce6ihYPUY3W6nXi+/cnjI84LZxeebblXdW5a64/eDHo767XonxSFZGrp5Lgailtk2xq6j5ycujrl9qokkhmb2lwNH56X+6DnQ2pS+S00ufS1dIKqoNMdSmVRVXuUTS8bAdxZpjBZ3GYbUwUd2Gf7NGiMRzjH9sHUU7IFiCwTVgrpwkZsQzAxyaDuftBHFMUbRZ2SqzQoyN8vokQdZdxrQbnZiew5ZTkws54Niofx8wx3MZWJmmaphy/s3augdBb6bMYJK0V8dEraJiQOltirvSWU9Eyc0xfVhTTKdBbeJpnj+5Oj55jy36RY1GRX1MXuQ6d9K5XaR6kBt5bVdj7wQgTqFSwDbmxadyzHfcLdn0lzacx9l+VnyWca+zvr8ky4UAdX7vzBM0CmNNAMhVgcEwdk04NiGGUFPp2qkZQSAh2t+U/OGae4/9NzQa7denjPny3g473yswQVIQLqQCG5RDqpjP4o/xBLx+i2gGQIKO1b6vMN1LATETLBn6qRF2P9SuRORVQeyyMO0zL0+FDTc/n6Sgc/ifEjrUsjHmIfkDkWG7xk4c3bvXSmCUsWxnTx0Z2CedkEM6ZwrfWZ6xaHbLJTtdymk0w0Yx+ozu5gupZB9TNnG9SKZ0QRO30y3vZq/JiCBMyeKXb7KFzP1Sbjhobjrz4ouE7+f4E+1fsM2CNF+XeR/pHiMOSqRfST7NkOyTnKYRJmzyBN7K/Qg/cLptbCWstC7oKhEBw4gE39yLzFy/H2J7LAGHff6chBHUNw8oBFpyoLqlqf0VApfS05bqP4Nk4YrTmNXHol41ujxa/pPxdkQNuev8181lcbbM+CYhQkf6YvG5pOgQUg2rYPiVOMk0IFziGpe/MYh+hx8RvUqkY5fOn/RLoPlBjGK7EF6C7tiirGnaesifWo3UkZ7YKuBzQ/VY9OCL++CeMyjCgyh9t1k3c84D5s93yf+n6q9itHlOXoY42LHOrx9PekKouVooYd4H7oXv7qndtr7Qxtz6ZFiFehmjQ8TUlBN7gLEy4ldleZoGzXnBYw5UCtayPK2O8nbFIe2WuVQudXSzkxihUyv7/d4Uy+JvXxqUGz7eQSo3+YgzSuhz/oM3SJCyNd6unJIwWI0UpPXmgOscRHl52BSX1ChjrJmd8JF+jxfUnAl/Y1Vl7OOycKSdzZnDNIhhjt0DFpwg2+yqNwuJ+1+AtEvvqO/8maMw655nlQ9/4+C4F7sg+ixD9l2v5t1KsuV3TCUGJL1VvM0WWRKKYTlPbR1uX8OJ6/YWm6YwAPFE0ElXSuTwKdEsVA29ur6n6SurYeHbdJKVmImFDAoCvCIZKT73AAguPi9embsaMrFmiIBdsznlKVEpXJhxFDb73WO1JIlG+3jjreBnY53LHLFlOxSB8uamE3mBo9Hi71J/nL88SKUVr9FiUZDM9i1jV8u/M6C7Aa1STDyVwNoCrdPduWFMUSTEW2ORxNk0KEeWAGigBCZ0uQZWEKUXYSLYQzbw6DbiEye/cz9nLqM2iOzOo+pvFqngmBMGV1SZApeEwBcc0OBUlvG/1tuGhVhBxGwYYtqsLkIiQ8FO+A1211X0QJDn6GHLaXEj8rkw9cIYtXrTmwXtyzcmt/eUoAS/CtdaE8DxJlKaf+XRUpSZrUISDsE3T787UDsFAphCizRPUiSeewa+lq53P71ted+SnbPJX4WY4LIgnp2i4Mtsb3RoH8EvwLyl4ZCEks8KEvQnSm5B+J7KC943c8Nuyc/+oXVr3IBLJVsExQqolVUFA4ycod2Y9nhcfbnu8IU82JpIGcaH39i15p4tt5xscCraP5fD1bm8vJetXWZf6ANxe7mIZe9rS00KAVDBJ9Avm4cTq9LAy1KfFMowSMv8zdHHOpQiCaVLP21ysT5RFdVOF72MfyEK2T3l4t9ilzq7txXCE/dBu8OoLT3Ug+2Exxlg1NCuBbSPYtaHpwzbAu9TPVA/QtpIPuxOpgo3ytxtnAZSIGZ/xOKxTDZAx/xlABsvwB3mNpClAUrj70BlyVbEDpCTlfc7+otbovSbzpKU+/cGaPQ5IilEgwwC/+ZG6dumtH25+bRMaLtGa2VkQd+JU1BSRCKJ8VGbzvw0bX6yG3zh9wtFfgLofG2xZPbz9z+HmAjXaC4P4x4d+xmWjCzwKe19s8x5TeasMAeCcS9JPCC3Z2GZTMLbvRmvV/bctlSf5KUT0sNpYTGYJjzwKr8VXzOBmr9QjTGOg6RbCb3bz+Gz//YK6X9htjxHlDo2KX/BamwU0XkWz5T34wdGnawCFAYSJoFvfe6VluZ4Ftz4Q9epbE3cILgM9J6gatoIwrOrf6E9KeqU0MBH/k4DYy7yI52YBoZR/uzoryViLQ0Gcm5sE/z0+0aIiz0VBjF/AN4y27UV1GzGYcBhdCN+DVLKCLG/PSD4aj3C2bNxJF1ulVxu021HdlUIP0vSIcgUXYXxmhyPknJredXe19NvbQCDQVh/L3SzACD+aHRFbvouhbY2dZLE2TI/twwr70Mx9nTZ06kLSEqf4utlWqEtXnqLB5S9h/3Bw8p/AzfT+fzmT6co=");const U=Array(1+l()).fill().map((()=>r(l))),S=t(l),L=r(l),s=44032;function u(A){return A>=s&&A<55204}function T(A,Q){if(A<128)Q(A);else if(u(A)){let w=A-s,B=w%588/28|0,r=w%28;Q(4352+(w/588|0)),Q(4449+B),r>0&&Q(4519+r)}else{let w=D(S,A);if(w)for(let A of w)T(A,Q);else Q(A)}}function H(A,Q){let w=[];function B(){w.sort(((A,Q)=>A[0]-Q[0])).forEach((([A,w])=>Q(A,w))),w.length=0}function r(A){let r=1+U.findIndex((Q=>Q.has(A)));0==r?(B(),Q(r,A)):w.push([r,A])}A.forEach((A=>T(A,r))),B()}function I(A){let Q=[];return H(A,((A,w)=>Q.push(w))),Q}function R(A){let Q=[],w=[],B=-1,r=0;return H(A,(function(A,t){if(-1===B)0==A?B=t:Q.push(t);else if(r>0&&r>=A)0==A?(Q.push(B,...w),w.length=0,B=t):w.push(t),r=A;else{let E=function(A,Q){if(A>=4352&&A<4371&&Q>=4449&&Q<4470)return s+(588*(A-4352)+28*(Q-4449));if(u(A)&&Q>4519&&Q<4547&&(A-s)%28==0)return A+(Q-4519);for(let[w,B]of S)if(2==B.length&&B[0]==A&&B[1]==Q){if(L.has(w))break;return w}return-1}(B,t);E>=0?B=E:0==r&&0==A?(Q.push(B),B=t):(w.push(t),r=A)}})),B>=0&&Q.push(B),Q.push(...w),Q}let k=A("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");const J=r(k),N=r(k),Y=r(k),V=r(k),G=r(k),h=r(k);function X(A){if(0==A.length)return;let Q=A.length-1;if(J.has(A[0])){if(!A.every((A=>J.has(A)||Y.has(A)||V.has(A)||G.has(A)||h.has(A))))throw new Error("RTL: disallowed properties");for(;h.has(A[Q]);)Q--;if(Q=A[Q],!(J.has(Q)||V.has(Q)||Y.has(Q)))throw new Error("RTL: disallowed ending");if(A.some((A=>V.has(A)))&&A.some((A=>Y.has(A))))throw new Error("RTL: AN+EN")}else{if(!N.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>N.has(A)||V.has(A)||G.has(A)||h.has(A))))throw new Error("LTR: disallowed properties");for(;h.has(A[Q]);)Q--;if(Q=A[Q],!N.has(Q)&&!V.has(Q))throw new Error("LTR: disallowed ending")}}let d=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const K=r(d),O=r(d),a=r(d),p=r(d),b=r(d),P=r(d),z=r(d);function y(A,Q){return i(String.fromCodePoint(...Q).normalize(A))}function Z(A){return y("NFC",A)}function m(A){return y("NFD",A)}const W="2022-01-05T07:15:53.378Z",j="14.0.0",v="1.3.9",q="adraffy";let $=A("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");const _=r($),AA=r($),QA=r($),wA=t($),BA=r($),rA=$()&&function(A){const Q=r(A),w=r(A),B=r(A),t=r(A),e=r(A),n=r(A),C=r(A),D=r(A),g=r(A),o=M(A,(A=>Array(A()).fill(1))),c=A()?M(A,E,[...t,...n].sort(((A,Q)=>A-Q))):1,F=65039,i=8205,f=8419;function x(A,Q){if(1===A)return 1;let w=String.fromCodePoint(...Q.filter((A=>A!=F)));return A.hasOwnProperty(w)?A[w]:void 0}function l(A,Q){let w=A[Q];if(!w)return;let B=A[Q+1];if(D.has(w)&&B&&C.has(B))return[2,[w,B]];if(B==F){if(t.has(w))return[2,[w]];if(n.has(w)||e.has(w))return[2,[w,F]]}return t.has(w)||n.has(w)?[1,[w]]:void 0}return function(A,r){let t=A[r],E=String.fromCodePoint(t);if(o.hasOwnProperty(E)){let Q=o[E],w=r+1;for(;;){let B=A[w];if(!B)break;let r=String.fromCodePoint(B);if(!Q.hasOwnProperty(r))break;Q=Q[r],w++}if(Q.hasOwnProperty(""))return[w-r,A.slice(r,w)]}let e=A[r+1];if(Q.has(t)&&Q.has(e))return[2,[t,e]];let n=w.has(t);if(n&&e===f)return[2,[t,f]];if((n||B.has(t))&&e===F&&A[r+2]===f)return[3,n?[t,f]:[t,F,f]];let C=l(A,r);if(!C)return[0];let[M,D]=C,U=r+M;if(e=A[U],e===i){let Q=x(c,D);if(Q){let w,B=[],t=U;for(;A[t++]===i;){let r=l(A,t);if(!r)break;let[E,e]=r;if(Q=x(Q,e),!Q)break;t+=E,1===Q?(D.push(i,...e),w=t):(B.push(i,...e),Q.hasOwnProperty("")&&(D.push(...B),B.length=0,w=t))}if(w)return[w-r,D]}}if(g.has(e)){let Q=U+1;for(;g.has(A[Q]);)Q++;if(917631===A[Q++])return[Q-r,D.concat(A.slice(U,1+Q-U))]}return C}}($);function tA(A){return A.flatMap((({e:A,v:Q})=>A??R(Q)))}function EA(A,Q){return new Error(`Disallowed label "${c(String.fromCodePoint(...A))}": ${Q}`)}function eA(A){const Q=45;let w=x(i(A),rA,(A=>{if(_.has(A))return;if(QA.has(A))return[];if(AA.has(A))return[A];let Q=D(wA,A);if(Q)return Q;throw new Error(`Disallowed character "${c(String.fromCodePoint(A))}"`)})).map((A=>{let w=tA(A);if(w.length>=4&&w[2]==Q&&w[3]==Q&&120==w[0]&&110==w[1])try{let Q=f(w.slice(4));[A]=x(Q,rA,(A=>AA.has(A)?[A]:[]));let B=tA(A);if(Q.length!=B.length||!Q.every(((A,Q)=>A==B[Q])))throw new Error("not normalized");w=Q}catch(A){throw EA(w,`punycode: ${A.message}`)}let B=A.flatMap((({v:A})=>A??[65039]));if(w.length>0){if(w.length>=4&&w[2]==Q&&w[3]==Q)throw EA(w,"invalid label extension");if(w[0]==Q)throw EA(w,"leading hyphen");if(w[w.length-1]==Q)throw EA(w,"trailing hyphen");if(BA.has(w[0]))throw EA(w,"leading combining mark");try{!function(A){for(let Q=0,w=A.length-1;Q<=w;Q++){switch(A[Q]){case 8204:if(Q>0&&K.has(A[Q-1]))continue;if(Q>0&&Q<w){let B=Q-1;for(;B>0&&O.has(A[B]);)B--;if(a.has(A[B])){let B=Q+1;for(;B<w&&O.has(A[B]);)B++;if(p.has(A[B]))continue}}break;case 8205:if(Q>0&&K.has(A[Q-1]))continue;break;case 183:if(Q>0&&Q<w&&108==A[Q-1]&&108==A[Q+1])continue;break;case 885:if(Q<w&&b.has(A[Q+1]))continue;break;case 1523:case 1524:if(Q>0&&P.has(A[Q-1]))continue;break;default:continue}throw new Error(`No context for "${c(String.fromCodePoint(A[Q]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>z.has(A))))throw new Error("Disallowed katakana")}(B)}catch(A){throw EA(w,A.message)}}return{tokens:A,cps:w,text:B}}));if(w.some((A=>A.text.some((A=>J.has(A)||Y.has(A))))))for(let{text:A,cps:Q}of w)try{X(A)}catch(A){throw EA(Q,`bidi: ${A.message}`)}return w.map((A=>String.fromCodePoint(...A.cps))).join(".")}function nA(A){return x(i(A),rA,(A=>{if(_.has(A))return{};if(AA.has(A))return[A];if(QA.has(A))return{i:A};let Q=D(wA,A);return Q?{m:Q,u:[A]}:{d:A}}))[0]}export{W as BUILT,q as IDNA,j as UNICODE,v as VERSION,g as compare_arrays,eA as ens_normalize,nA as ens_tokenize,F as escape_name_for_html,c as escape_unicode,R as nfc,Z as nfc0,I as nfd,m as nfd0,f as puny_decode,o as quote_cp,x as tokenized_idna};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -689,3 +634,3 @@ }

const EN = read_member_set(r$1);
const ECTOB = read_member_set(r$1);
const ECTOB = read_member_set(r$1); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$1);

@@ -721,8 +666,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -740,5 +682,5 @@ // 6. end with L or EN .. 0+ NSM

const BUILT = '2021-12-27T05:53:52.428Z';
const BUILT = '2022-01-05T07:15:53.378Z';
const UNICODE = '14.0.0';
const VERSION = '1.3.7';
const VERSION = '1.3.9';
const IDNA = 'ENS0';

@@ -812,7 +754,6 @@ let r = decode_payload(PAYLOAD);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -824,15 +765,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -854,3 +794,2 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO

@@ -857,0 +796,0 @@ // [Validity] 8.) see below

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

function A(A){let w=function(A){let w=0;function B(){return A[w++]<<8|A[w++]}let Q=B(),t=1,C=[0,1];for(let A=1;A<Q;A++)C.push(t+=B());let E=B(),r=w;w+=E;let M=0,e=0;function D(){return 0==M&&(e=e<<8|A[w++],M=8),e>>--M&1}const g=2**31,n=g>>>1,o=g-1;let U=0;for(let A=0;A<31;A++)U=U<<1|D();let c=[],l=0,x=g;for(;;){let A=Math.floor(((U-l+1)*t-1)/x),w=0,B=Q;for(;B-w>1;){let Q=w+B>>>1;A<C[Q]?B=Q:w=Q}if(0==w)break;c.push(w);let E=l+Math.floor(x*C[w]/t),r=l+Math.floor(x*C[w+1]/t)-1;for(;0==((E^r)&n);)U=U<<1&o|D(),E=E<<1&o,r=r<<1&o|1;for(;E&~r&536870912;)U=U&n|U<<1&o>>>1|D(),E=E<<1^n,r=(r^n)<<1|n|1;l=E,x=1+r-E}let u=Q-4;return c.map((w=>{switch(w-u){case 3:return u+65792+(A[r++]<<16|A[r++]<<8|A[r++]);case 2:return u+256+(A[r++]<<8|A[r++]);case 1:return u+A[r++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),B=0;return()=>w[B++]}function w(A){return 1&A?~A>>1:A>>1}function B(A,w){let B=Array(A);for(let Q=0,t=-1;Q<A;Q++)B[Q]=t+=1+w();return B}function Q(A,B){let Q=Array(A);for(let t=0,C=0;t<A;t++)Q[t]=C+=w(B());return Q}function t(A){let w=new Set(B(A(),A)),Q=A(),t=B(Q,A),C=function(A,w){let B=Array(A);for(let Q=0;Q<A;Q++)B[Q]=1+w();return B}(Q,A);for(let A=0;A<Q;A++)for(let B=0;B<C[A];B++)w.add(t[A]+B);return w}function C(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(M(B,A))}for(;;){let B=A()-1;if(B<0)break;w.push(e(B,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function E(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(B)}return w}function r(A,w,B,t){let C=Array(A).fill().map((()=>[]));for(let E=0;E<w;E++)Q(A,B).forEach(((A,w)=>C[w].push(t?t[A]:A)));return C}function M(A,w){let B=1+w(),Q=w(),t=E(w);return r(t.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),t[w],B,Q]))}function e(A,w){return r(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function D(A,w){for(let[B,Q,t,C,E]of A){let A=w-B;if(A<0)break;if(t>0){if(A<C*t&&A%C==0){let w=A/C;return Q.map((A=>A+w*E))}}else if(0==A)return Q}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function n(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function o(A,w,B){let Q=[],t=[],C=[t];function E(){Q.length>0&&(t.push({v:Q}),Q=[])}for(let r=0;r<A.length;r++){if(w){let[B,Q]=w(A,r);if(B>0){E(),t.push({e:Q,u:A.slice(r,r+B)}),r+=B-1;continue}}let M=B(A[r]);Array.isArray(M)?Q.push(...M):(E(),M?t.push(M):(t=[],C.push(t)))}return E(),C}let U=A("ABMCuQDBCCEAOQDaACcAcgAZAC0AFwAtABEAJgAOACUEiQNRALQNRycbxexVsVUCJRieAuAASPZlZwBu4QoILXBwcHDwcAJrCe2iQYxsZfepR1yjAE1t7ecAc/kC78r4ABIsL4ogCD5wcHBwcHBwcG1gcLoGoI4BftQRK3l3Foh/XQAm511CBPcaKvdlpVPlcO1wZ2X+AJdEA0IAlgBIDCwB7gXLA4Y49DEG+gL3BKEEogSjBKQEpQSmBKcEqASpBKoErAStBK4EsASyBLP6DwU8AZUFPQGVBT4BlQUJJgUKJgULJgVCBUMFYQYCC0YLRw0pDTkNqQ25DmIOYw5rDmUcwQISHL8CDAsOANBWHOsRICQEgguHdDSa1kwE03+3B57NVy6SAHHFGgHZiLxWOdMGHR2cA1UoEQIHAAE5o9IADjAmDgUPCo0BAgMAhy9T7BAPwR4WNgSLAxJ8FeQvHwDQXgSfEesWchzoGAI3AQFEBQAQPJyVqZ0MzwBNzQBEAGUE9wHThG8DMQFePhmdA1cmA8rNQEkB8S0DABD/VTNpN5IbYx4ASAUfAscGCCuSAFMOuAHvCwThd4QaQgDgAMJSUgQ4CJ4Ad40AqAFWVrBlRRWIDK4D+gCsBUgFFRACAQIGLhmOESYCTRmKHL4CTgI2BXE4cQVDAK1DAvqfodmRADcE8Tj1Hv2R+0wAFKkaoxW5NmMA8P8BnQL6mRk7PwAhUwAzAD4pOTZc5AL7CmUCjtcChw4/xAM2zwKEKALUBXdTBQM2xW0HAQEBAQUBQwCumwL5PwUXpAPs6QTbK4BXUj00AgU6BUkEpgTbBazlABX3SZhOnQL0Ot5ALgpXCclv8XeEBnMQTSfXESkMZQHnAW0OH0wKBSMGbQT7H68ZSw//lc4I1y4PDR8nFS7TgIwkJyq1Bh9MJj0PC39Rmg+LC5cKFTqVgYADUwE/Ir0LDw1rCJ8RJQr7nQ4XEXcHawQHScwA1wczC0MdZxXnJkJi3gs7OakHLRsoC8Em4RNbey4GBRpTBn8BWxsxAQEvGYXiWmNcThBPkQY1C1cj+RTaUFINV0DpeHoaTQdHJdsCw0OiSrlRaB7FIig8bw2YLkVRrggnPDcZgQuzPNBG3UVAEgQ+vz16IntMXgRnsSxhJ70KAQ+3DOt8pAGLCVMJ4wyjE2MRSTf3CGsHS1+XVidHCFNGx2DMBSnRBCUUAwM9BXEJcwdFA+ccXxNgFVsFP4FWAAkDJTcHLuUCwVayAUkF/Q9XIBEQgkgSDxsIzQKXA7UmHQBfFVMASSLNCHWVAJGQClM3Lv0I+WqeI6YDmRUZkxGlB8MOiQfZHGUV8R0TcPpePYY6KNXhCY0BpwnLAZEFFQg7NY2M0iBzZ4WLihjNIJNBcV4uAmMMlxXRRO+HqgK9D50STQFnAaUHaw0zAqkSHxGdFRDHCR2GNjXnNCo6VwSBIbUgQwpZA4FtAAtZJysNKpsB1RKUAz40b3ggZ91g6FYYLwdLMvdBkiIjC8RP/wzOGvMYdFRgGhYH8QQlGyUoHEGJBjED1TVFOn80IATvC5sIvQlxAHsO1QtJCAkYnAqjjQIBY70B6SfLA4nDtQKhwQZpBQc9AJk9uQWrABcATwLZCNUANwEBA4kAawLfB88ASwcBALdzAW8DWRthAVMAFwLBA8UIY/0Bx2ECJVsETfUMRwEpaW58AsPjAoCcZtQGD4oCwAJ7ZwF/VwQ3gHmDA+GjABMRAQ0AfQZFABF5AUfdfP1MABV1AhGhXQD5AS0AN2cHN3MB/wIlEJ8A6QGRC2MJ1OXnAX8AG1sAtQBHEyOdBAIJArsBDwBnALEAIwGFAH8FiwArBgUCgXsRAUNjSl0SiZMB7QNRAWUBPwCrBv2/1/s5CVEEnwgFAhBNFhMC72AH5zMDIxET/0L3Ar4Qh6GSAwJkswJidI0Lf+EvjSA3UgKiKQJoyhEXAmY7Ap+2OE09AmZtAmZYCwSgBLEDA39FA37EDTk4OakHSTm0OlUnHStVAQMjBQJsTwIyaDg8GwJt+QJt4BsAIbwRMWWZJXcRXRUBDwGZARABEwB8NwfKDL8BMD0j9AA/5wJ3YQJ21A8ZAXECeX11AnjsTwmOAA1F4A1HCQJ8cQJ6+hsPCQJ9OwJ9IgWLBVJIMkivDZVWAoGfAoAyAoA3An/gE0mKSo1HG0lK/gLRMwLQ/ktZGQOIgQOIGET3kWQC8tNdNQMD4ANMAExfVwU1AAFNfixN4QKLcQKLCvNNGTkMB08ZJQd1mTfpAo5pAo6OcsknswKPCwKOjqooUeZTZxsvPFMGVLcrApQtApM+ARsATlVQVeFWAjgsTSnHuDMTeJhFbWsGApfRAu/kWFPaAItXApbBApauzgDbWd5aO7N/AG0ClucCloBcdl0DApn9ApmWXPxdOUsCnM059DrPApxIAp/NAp7qDbwAT0FjXEEPCwKeIwKexADnb2FmYiECnwUCoKAB2wKe0VECnoDXJmP6ZFlXXQIn4QImsAKhLQKgfgKjDwKh9gsnAqZhAqYAGwKoMQCvAqgkE2iuaOMANRsbGXtqTmsDAq0VAqzgAq2ZAq00AldPAlYOArITHwAJAx+ACWzJArLvPyUCsxhHbRJtlW16kQMl/wK2jm1xbsIDKXcCuJACuXlHArlcqXBocRMFAr1LArwMcMgDMkMCvrpyNAMzowK+THNUc4ErAsP9AsM2c7R0fWd3dRIDPNkvAzzMAz3xAsWuAsZ5AsZCuwcCyJuDAsh2AsmBAslgAmTPAt4EeKuTeOB5V0wCAxjVDWc0AwJiJhollVZ7PRVexF7tBUMCz50Cz55hfYUABAAlRdEA+N8RAs+lAVsAHANORH59NwLcWQLbvALSgQNSjgNTkQEzA1W+gLsJB3Ey/UgAH5J3J4JOgwUxgwCDvwLa+QLaEIRChHunbgOG1wBhA2RAA4ajiwArAIcC35cC3uodpakC4mHtRgHzYg5ZAfTNAfMEuQLsJScC6aKrMQLrKwLrFgEreQHrKQLuuwLrzpbclzUC7nEDhhKYq3EScdMC8zUAmwOOSAGZxQL3RQORoAOSuQL3ygL6CwL4mJpOmt3tJ2mbUAOdtQL/LAFNAGufTi+f5QMFvwOmnAOnCwED9wMGnKG6ojcFOwMMewLyAHE1DSsBE3MlJUkHMR8hhQ0BQwAlEwOdATnJEZk3AMURX13p4e8ADQG7BQsFAxUFC8sUsUMEawItFy9bIScfBzdTDs8J0R8FDR8Aky8HKYkP9wMpAc8A6QXrAG89n3MBYDEwMTAxLDEwMTAxMDEuMS4xMDEwMTAxMDEsMTAxMDEwMS4xLjEwMTAxMDEwMS4xLjEwMTAxLDEwMTAxLjEwMTAxKjEwMTAxLjEwMTAxMDEuMTAxLjEwMTAxMDEwMTAxLDEsMTAxMDEwMUYxJDFYMSAxJDEkMb8xMDEwMTAxYDEBdQGyMQAuMSgxKDEB51gApwNANjEiMZ8xLjEMMQBeMTAxKDEwMSgxMDEkMTAxKjEwMSoxMDE0MS4xSDE+MSgx0zEyMQA8MQJvApwxBA8DsATDM1IJCRUUCQN3ChkHBjE3KAdTrjE8MTAxJjEANwB2MS4xLjEwMSQxAEUAaDFEMTAxMDEoMSgxAqkzMjcABxgTA50BLAMAITwL9zQPASk80Vnx4+kAFwHDBSZTc3QzBSYAGxSxQzTyMS4xMDEwMbsxADYxMDEwMTAxMDEATQCMMTAxAncCtjEuMS4xMDEwMTAxMDEuMb0xADgxMDEwMS4xOoU6xjEwMS4xMDEwMS4xMDEwMTAxvzEwMZ8A6jEwMSwxMDE6wTsCMS4xMDEAvzjzOw4xMDEwMTAxLjEwMTAxANcBGjEwMS4xMDEwMTAxMDEuMTAxLjEuMTAxMDEUCQD9AWwxMDGzMTAxMDEwMTptOi46KzuoMTAxMDG7MTAxMDEwMTqNO9AxMDEkMTAxuzEwMTAxMDE6oTlKAYgxMDEBZQGeMTAxMDEwMQVhNY810DXfNZg1pzXoNfc1tDXDNgQ2EzXQNd82IDYvNeQ18zY0NkM1+DYHNkg2WTYQNh82YDZvNmA1XxNTNmw2bzZuNvs3OgTCPIk2agIDNw83UjdBNvwTEhNSN7s3YgQ8BOI8mTZWN0s3ngU6v2lTIR9DBkM5GEMSQz0LJ04ZMQ9BCc1anw1agwdVOCMCAOmxAOniGgUDARRbBQAJAxsB1QDvBekAbzWlBPErPgAAKz4AADU+ADMoBDE6NTI7PD0mBj0mAAQ9JgY7JicmAis8Dw4ABwgBKTgBBg0bJDE2AAEBAwIFhwTB9SMm8QElICMmACciI+/vGBfDI9cbAqF2CV/jFP8vECwpDVApDQRKSUQpJi9ONQ0MLktIKSgpDUgAKS5LRCkoKQ0CCUgxNikoMw1CKSQAAwMrJAMlJAADAzEkAAMxNjckERhzThhzThgVGBUYc04Yc04Yc04Yc04YFRgVGHNMGHNOGHNOGHN0e25zbnt6e3pzaHVoc2gXTWgZGHt6ewpZs1S6BQYBFOfLAx8jAbcECwDVBfMAb1sDCgMHCNBEGAPVCxoTzzEPCEl0bfPuvtUITbpVYVJlxVlu6xi8yukTEkTF+I1Bz4RYE53KIyT5DqAze0PwJQnlNxSS1YcpXV+gDEc/C4oNhoy1Ki91qpqCkt0JC6govLXTaVPJD3AwcKH0Xt5qRPRA5eQ6MH8VyPygTIkcSo7sGVE7g/x/2GhuMYWGguyR28kVFce6ihYPUY3W6nXi+/cnjI84LZxeebblXdW5a64/eDHo767XonxSFZGrp5Lgailtk2xq6j5ycujrl9qokkhmb2lwNH56X+6DnQ2pS+S00ufS1dIKqoNMdSmVRVXuUTS8bAdxZpjBZ3GYbUwUd2Gf7NGiMRzjH9sHUU7IFiCwTVgrpwkZsQzAxyaDuftBHFMUbRZ2SqzQoyN8vokQdZdxrQbnZiew5ZTkws54Niofx8wx3MZWJmmaphy/s3augdBb6bMYJK0V8dEraJiQOltirvSWU9Eyc0xfVhTTKdBbeJpnj+5Oj55jy36RY1GRX1MXuQ6d9K5XaR6kBt5bVdj7wQgTqFSwDbmxadyzHfcLdn0lzacx9l+VnyWca+zvr8ky4UAdX7vzBM0CmNNAMhVgcEwdk04NiGGUFPp2qkZQSAh2t+U/OGae4/9NzQa7denjPny3g473yswQVIQLqQCG5RDqpjP4o/xBLx+i2gGQIKO1b6vMN1LATETLBn6qRF2P9SuRORVQeyyMO0zL0+FDTc/n6Sgc/ifEjrUsjHmIfkDkWG7xk4c3bvXSmCUsWxnTx0Z2CedkEM6ZwrfWZ6xaHbLJTtdymk0w0Yx+ozu5gupZB9TNnG9SKZ0QRO30y3vZq/JiCBMyeKXb7KFzP1Sbjhobjrz4ouE7+f4E+1fsM2CNF+XeR/pHiMOSqRfST7NkOyTnKYRJmzyBN7K/Qg/cLptbCWstC7oKhEBw4gE39yLzFy/H2J7LAGHff6chBHUNw8oBFpyoLqlqf0VApfS05bqP4Nk4YrTmNXHol41ujxa/pPxdkQNuev8181lcbbM+CYhQkf6YvG5pOgQUg2rYPiVOMk0IFziGpe/MYh+hx8RvUqkY5fOn/RLoPlBjGK7EF6C7tiirGnaesifWo3UkZ7YKuBzQ/VY9OCL++CeMyjCgyh9t1k3c84D5s93yf+n6q9itHlOXoY42LHOrx9PekKouVooYd4H7oXv7qndtr7Qxtz6ZFiFehmjQ8TUlBN7gLEy4ldleZoGzXnBYw5UCtayPK2O8nbFIe2WuVQudXSzkxihUyv7/d4Uy+JvXxqUGz7eQSo3+YgzSuhz/oM3SJCyNd6unJIwWI0UpPXmgOscRHl52BSX1ChjrJmd8JF+jxfUnAl/Y1Vl7OOycKSdzZnDNIhhjt0DFpwg2+yqNwuJ+1+AtEvvqO/8maMw655nlQ9/4+C4F7sg+ixD9l2v5t1KsuV3TCUGJL1VvM0WWRKKYTlPbR1uX8OJ6/YWm6YwAPFE0ElXSuTwKdEsVA29ur6n6SurYeHbdJKVmImFDAoCvCIZKT73AAguPi9embsaMrFmiIBdsznlKVEpXJhxFDb73WO1JIlG+3jjreBnY53LHLFlOxSB8uamE3mBo9Hi71J/nL88SKUVr9FiUZDM9i1jV8u/M6C7Aa1STDyVwNoCrdPduWFMUSTEW2ORxNk0KEeWAGigBCZ0uQZWEKUXYSLYQzbw6DbiEye/cz9nLqM2iOzOo+pvFqngmBMGV1SZApeEwBcc0OBUlvG/1tuGhVhBxGwYYtqsLkIiQ8FO+A1211X0QJDn6GHLaXEj8rkw9cIYtXrTmwXtyzcmt/eUoAS/CtdaE8DxJlKaf+XRUpSZrUISDsE3T787UDsFAphCizRPUiSeewa+lq53P71ted+SnbPJX4WY4LIgnp2i4Mtsb3RoH8EvwLyl4ZCEks8KEvQnSm5B+J7KC943c8Nuyc/+oXVr3IBLJVsExQqolVUFA4ycod2Y9nhcfbnu8IU82JpIGcaH39i15p4tt5xscCraP5fD1bm8vJetXWZf6ANxe7mIZe9rS00KAVDBJ9Avm4cTq9LAy1KfFMowSMv8zdHHOpQiCaVLP21ysT5RFdVOF72MfyEK2T3l4t9ilzq7txXCE/dBu8OoLT3Ug+2Exxlg1NCuBbSPYtaHpwzbAu9TPVA/QtpIPuxOpgo3ytxtnAZSIGZ/xOKxTDZAx/xlABsvwB3mNpClAUrj70BlyVbEDpCTlfc7+otbovSbzpKU+/cGaPQ5IilEgwwC/+ZG6dumtH25+bRMaLtGa2VkQd+JU1BSRCKJ8VGbzvw0bX6yG3zh9wtFfgLofG2xZPbz9z+HmAjXaC4P4x4d+xmWjCzwKe19s8x5TeasMAeCcS9JPCC3Z2GZTMLbvRmvV/bctlSf5KUT0sNpYTGYJjzwKr8VXzOBmr9QjTGOg6RbCb3bz+Gz//YK6X9htjxHlDo2KX/BamwU0XkWz5T34wdGnawCFAYSJoFvfe6VluZ4Ftz4Q9epbE3cILgM9J6gatoIwrOrf6E9KeqU0MBH/k4DYy7yI52YBoZR/uzoryViLQ0Gcm5sE/z0+0aIiz0VBjF/AN4y27UV1GzGYcBhdCN+DVLKCLG/PSD4aj3C2bNxJF1ulVxu021HdlUIP0vSIcgUXYXxmhyPknJredXe19NvbQCDQVh/L3SzACD+aHRFbvouhbY2dZLE2TI/twwr70Mx9nTZ06kLSEqf4utlWqEtXnqLB5S9h/3Bw8p/AzfT+fzmT6co=");const c=Array(1+U()).fill().map((()=>t(U))),l=C(U),x=t(U),u=44032;function i(A){return A>=u&&A<55204}function f(A,w){if(A<128)w(A);else if(i(A)){let B=A-u,Q=B%588/28|0,t=B%28;w(4352+(B/588|0)),w(4449+Q),t>0&&w(4519+t)}else{let B=D(l,A);if(B)for(let A of B)f(A,w);else w(A)}}function s(A,w){let B=[];function Q(){B.sort(((A,w)=>A[0]-w[0])).forEach((([A,B])=>w(A,B))),B.length=0}function t(A){let t=1+c.findIndex((w=>w.has(A)));0==t?(Q(),w(t,A)):B.push([t,A])}A.forEach((A=>f(A,t))),Q()}let I=A("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");const F=t(I),T=t(I),G=t(I),S=t(I),L=t(I),K=t(I);function N(A){if(0==A.length)return;let w=A.length-1;if(F.has(A[0])){if(!A.every((A=>F.has(A)||G.has(A)||S.has(A)||L.has(A)||K.has(A))))throw new Error("RTL: disallowed properties");for(;K.has(A[w]);)w--;if(w=A[w],!(F.has(w)||S.has(w)||G.has(w)))throw new Error("RTL: disallowed ending");let B=A.some((A=>S.has(A))),Q=A.some((A=>G.has(A)));if(B&&Q)throw new Error("RTL: AN+EN")}else{if(!T.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>T.has(A)||S.has(A)||L.has(A)||K.has(A))))throw new Error("LTR: disallowed properties");for(;K.has(A[w]);)w--;if(w=A[w],!T.has(w)&&!S.has(w))throw new Error("LTR: disallowed ending")}}const R="2021-12-27T05:53:52.428Z",J="14.0.0",k="1.3.7",H="ENS0";let h=A("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");const Y=t(h),O=t(h),b=t(h),V=C(h),P=t(h),X=h()&&function(A){const w=t(A),B=t(A),Q=t(A),C=t(A),M=t(A),e=t(A),D=t(A),g=t(A),n=t(A),o=function(A,w){let B=[];for(;;){let Q=E(A);if(0==Q.length)break;let t=1+A();B.push(...Q.reduce(((B,Q)=>r(t,Q,A,w).map(((A,w)=>B[w].concat(8205,A)))),r(t,Q.shift(),A,w)))}return new Set(B.map((A=>String.fromCodePoint(...A))))}(A,[...C,...e].sort(((A,w)=>A-w))),U=65039,c=8419;function l(A,w){let B=A[w],Q=A[w+1];if(g.has(B)&&Q&&D.has(Q))return[2,[B,Q]];if(Q==U){if(C.has(B))return[2,[B]];if(e.has(B)||M.has(B))return[2,[B,U]]}return C.has(B)||e.has(B)?[1,[B]]:void 0}return function(A,t){let C=A[t],E=A.length;if(t+2<=E&&w.has(C)){let B=A[t+1];if(w.has(B))return[2,[C,B]];if(!l(A,t))return[0]}let r=B.has(C);if(t+2<=E&&r&&A[t+1]==c)return[2,[C,c]];if(t+3<=E&&(r||Q.has(C))&&A[t+1]==U&&A[t+2]==c)return[3,r?[C,c]:[C,U,c]];let M=l(A,t);if(!M)return[0];let e=M[0]+t,D=M[1].slice(),g=!1;for(;e+1<E&&8205===A[e];){let w=l(A,e+1);if(!w)break;g=!0,e+=1+w[0],D.push(8205,...w[1])}if(g){let A=String.fromCodePoint(...D);if(!o.has(A.replace(/\u{FE0F}/gu,"")))return M}else if(e+2<E&&n.has(A[e])){let w=e+1;for(;w+1<E&&n.has(A[w]);)w++;if(917631==A[w++])return[w-t,D]}return[e-t,D]}}(h);function Z(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],B=[],Q=-1,t=0;return s(A,(function(A,C){if(-1===Q)0==A?Q=C:w.push(C);else if(t>0&&t>=A)0==A?(w.push(Q,...B),B.length=0,Q=C):B.push(C),t=A;else{let E=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return u+(588*(A-4352)+28*(w-4449));if(i(A)&&w>4519&&w<4547&&(A-u)%28==0)return A+(w-4519);for(let[B,Q]of l)if(2==Q.length&&Q[0]==A&&Q[1]==w){if(x.has(B))break;return B}return-1}(Q,C);E>=0?Q=E:0==t&&0==A?(w.push(Q),Q=C):(B.push(C),t=A)}})),Q>=0&&w.push(Q),w.push(...B),w}(w)))}function z(A,w){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${w}`)}function d(A){const w=45;let B=o(n(A),X,(A=>{if(Y.has(A))return;if(b.has(A))return[];if(O.has(A))return[A];let w=D(V,A);if(w)return w;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let B=Z(A);if(B.length>=4&&B[2]==w&&B[3]==w&&120==B[0]&&110==B[1]){let w;try{w=function(A){let w=[],B=A.lastIndexOf(45);for(let Q=0;Q<B;Q++){let B=A[Q];if(B>=128)throw new Error("expected ASCII");w.push(B)}B++;let Q=0,t=128,C=72;for(;B<A.length;){let E=Q;for(let w=1,t=36;;t+=36){if(B>=A.length)throw new Error("invalid encoding");let E=A[B++];if(E>=48&&E<=57)E-=22;else{if(!(E>=97&&E<=122))throw new Error(`invalid character ${E}`);E-=97}Q+=E*w;const r=t<=C?1:t>=C+26?26:t-C;if(E<r)break;w*=36-r}let r=w.length+1,M=0==E?Q/700|0:Q-E>>1;M+=M/r|0;let e=0;for(;M>455;e+=36)M=M/35|0;C=e+36*M/(M+38)|0,t+=Q/r|0,Q%=r,w.splice(Q++,0,t)}return w}(B.slice(4)),[A]=o(w,X,(A=>O.has(A)?[A]:[]));let Q=Z(A);if(w.length!=Q.length||!w.every(((A,w)=>A==Q[w])))throw new Error("not normalized")}catch(A){throw z(B,`punycode: ${A.message}`)}B=w}let Q=A.flatMap((({v:A})=>A??[]));if(B.length>0){if(B.length>=4&&B[2]==w&&B[3]==w)throw z(B,"invalid label extension");if(B[0]==w)throw z(B,"leading hyphen");if(B[B.length-1]==w)throw z(B,"trailing hyphen");if(P.has(B[0]))throw z(B,"leading combining mark")}return{tokens:A,cps:B,text:Q}}));if(B.some((A=>A.text.some((A=>F.has(A)||G.has(A))))))for(let{text:A,cps:w}of B)try{N(A)}catch(A){throw z(w,`bidi: ${A.message}`)}return B.map((A=>String.fromCodePoint(...A.cps))).join(".")}function y(A){return o(n(A),X,(A=>{if(Y.has(A))return{};if(O.has(A))return[A];if(b.has(A))return{i:A};let w=D(V,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{R as BUILT,H as IDNA,J as UNICODE,k as VERSION,d as ens_normalize,y as ens_tokenize};
function A(A){let w=function(A){let w=0;function B(){return A[w++]<<8|A[w++]}let Q=B(),t=1,r=[0,1];for(let A=1;A<Q;A++)r.push(t+=B());let C=B(),e=w;w+=C;let E=0,M=0;function D(){return 0==E&&(M=M<<8|A[w++],E=8),M>>--E&1}const g=2**31,n=g>>>1,o=g-1;let l=0;for(let A=0;A<31;A++)l=l<<1|D();let c=[],i=0,U=g;for(;;){let A=Math.floor(((l-i+1)*t-1)/U),w=0,B=Q;for(;B-w>1;){let Q=w+B>>>1;A<r[Q]?B=Q:w=Q}if(0==w)break;c.push(w);let C=i+Math.floor(U*r[w]/t),e=i+Math.floor(U*r[w+1]/t)-1;for(;0==((C^e)&n);)l=l<<1&o|D(),C=C<<1&o,e=e<<1&o|1;for(;C&~e&536870912;)l=l&n|l<<1&o>>>1|D(),C=C<<1^n,e=(e^n)<<1|n|1;i=C,U=1+e-C}let x=Q-4;return c.map((w=>{switch(w-x){case 3:return x+65792+(A[e++]<<16|A[e++]<<8|A[e++]);case 2:return x+256+(A[e++]<<8|A[e++]);case 1:return x+A[e++];default:return w-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),B=0;return()=>w[B++]}function w(A){return 1&A?~A>>1:A>>1}function B(A,w){let B=Array(A);for(let Q=0,t=-1;Q<A;Q++)B[Q]=t+=1+w();return B}function Q(A,B){let Q=Array(A);for(let t=0,r=0;t<A;t++)Q[t]=r+=w(B());return Q}function t(A){let w=new Set(B(A(),A)),Q=A(),t=B(Q,A),r=function(A,w){let B=Array(A);for(let Q=0;Q<A;Q++)B[Q]=1+w();return B}(Q,A);for(let A=0;A<Q;A++)for(let B=0;B<r[A];B++)w.add(t[A]+B);return w}function r(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(E(B,A))}for(;;){let B=A()-1;if(B<0)break;w.push(M(B,A))}return w.flat().sort(((A,w)=>A[0]-w[0]))}function C(A){let w=[];for(;;){let B=A();if(0==B)break;w.push(B)}return w}function e(A,w,B,t){let r=Array(A).fill().map((()=>[]));for(let C=0;C<w;C++)Q(A,B).forEach(((A,w)=>r[w].push(t?t[A]:A)));return r}function E(A,w){let B=1+w(),Q=w(),t=C(w);return e(t.length,1+A,w).map(((A,w)=>[A[0],A.slice(1),t[w],B,Q]))}function M(A,w){return e(1+w(),1+A,w).map((A=>[A[0],A.slice(1)]))}function D(A,w,B){let Q={};for(;;){let t=w(A);if(0==t.length)break;let r=1+A(),C=Array(r).fill(Q);for(let w of t)C=e(r,w,A,B).map(((A,w)=>{let B=C[w],Q=String.fromCodePoint(...A),t=B[Q];return t||(t=B[Q]={}),t}));C.forEach((A=>A[""]=1))}return Q}function g(A,w){for(let[B,Q,t,r,C]of A){let A=w-B;if(A<0)break;if(t>0){if(A<r*t&&A%r==0){let w=A/r;return Q.map((A=>A+w*C))}}else if(0==A)return Q}}function n(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${w=A.codePointAt(0),w.toString(16).toUpperCase().padStart(2,"0")}}`;var w}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function l(A,w,B){let Q=[],t=[],r=[t];function C(){Q.length>0&&(t.push({v:Q}),Q=[])}for(let e=0;e<A.length;e++){if(w){let[B,Q]=w(A,e);if(B>0){C(),t.push({e:Q,u:A.slice(e,e+B)}),e+=B-1;continue}}let E=B(A[e]);Array.isArray(E)?Q.push(...E):(C(),E?t.push(E):(t=[],r.push(t)))}return C(),r}let c=A("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");const i=Array(1+c()).fill().map((()=>t(c))),U=r(c),x=t(c),f=44032;function u(A){return A>=f&&A<55204}function I(A,w){if(A<128)w(A);else if(u(A)){let B=A-f,Q=B%588/28|0,t=B%28;w(4352+(B/588|0)),w(4449+Q),t>0&&w(4519+t)}else{let B=g(U,A);if(B)for(let A of B)I(A,w);else w(A)}}function s(A,w){let B=[];function Q(){B.sort(((A,w)=>A[0]-w[0])).forEach((([A,B])=>w(A,B))),B.length=0}function t(A){let t=1+i.findIndex((w=>w.has(A)));0==t?(Q(),w(t,A)):B.push([t,A])}A.forEach((A=>I(A,t))),Q()}let F=A("ACUAAQDpAIEAfgBLAFkAawBgADAAVQAmACMAIgAlACAAPQAXABMAFQAOAA0ADAATABIAEgAPABEACwAMAAwAFAAlAA4CiAD2AAMEfQRvDCAA6xbF2ewNxQcEpzEwUhdEIQ4MFPFdAQR+Xghu/sUJhTcAxgAjDIIT11i1UgSFFg5DORgJEggA8l1t/b8GgzAAwgAECncPWK5LBIPsVokBEm8EjVUKOSQHJQoSRAAkpU4lim0AaUYDM38ErACLsk0bwwE9Py5BYQFLAfUFWXmEMgEEQlUcDdxTNj3nMabMOtteTE7wrBKhLiUA8HAuAPZKIwPMS5cW4WkBPiA9AKFuMnGFBgKIGAkPEAICHRQQGRAAWAgAGCY2AV4+HA4+By4BCA4OI0IXAgIaFiELCt72BhR4WAC0AEQCQgLeyQ4dAQs6OQo9Pg4eH4lDGN5VrgAeDh4wDkUlAh4sAgwCAg8NFgAeVCqOBxMZTm4C7AM6BA5lDjQhjj4LAQ4HFn4GBg4dIwAeCQcuIxMRAhsmDoEeGY4WHRkODB6ufj0uEAQMHAAuEm4jBwAeqR0C304J7k4DDg6uIt4BHjAOFQGhni4hKxbeA94hzgAuCW5OEZ6O3gcfAAAQXn40JiAANBIYGBgYGgEVFANZAN4VACAODgPOB/4eVAgODI6l3g8evhVuKC4G3gr+3v7eAJ8xaoQEDxUHDgILBgBXBxchNAFdNxI3ACQGChYOFg4aCZ70BBMHIyzewwQWNDgJPA4LDhCFQRieVWsAGw0uRCASIgQOBxEYUyqCDxlMSDdZCwsPAgQDfAICBhIAFQgUDwIBEg0WERARCQ0xCAYMJwQEAwJ5TaJBAw0BJQEXLw45KRYW1gO0AAEAaklS1AUcGTMlHwAyERcXFxcA3gsKGBsKpb4PF7wVYBwPAPwSKf7c/twFvADjBN8+AQMAA34ADpgelQ9gBRwYYgLm2WYCr9PLGBAJzhANkwEBZU0AcmA8UgHw1AIsBJ8CuREAEAVbADUN4E45AeJxUvNSfwK0AOB9Bl1loWFBA3QYGBgYChoNDlwFIYoDANxjAOdXAMYA2gDfYwGgAzQB6QAzACJ4BL8PPhcAyYhoAKEBMQFUACzlXkPODDwAAzsRChOJRRjAVa4AW09gAAYaAdRQsm8MAndjAC4uCIcD9wTsCFObqROxVN4azu4OThg91H4Cu14+Hg4uAD5yA0j+3v7e/t7+3v7e/t7+3v7e/t7+3v7e/t4A0Pzs/t7+3gIADg4AhG8GAKAAMQFSRzw3tAIeFQABKyA1CkIDArZSNxYGADJxFeAM7kwEnod/ygAbEhkPHAIlEhkTHBEWIxlvEic5XmJrmgYHEHhnxxmTgt4PaXlhsZIQPA4SE81ODwW9wQY9BKBNMI86Q38/5DoAYUwBZXtFAdEsUJZzaW8HCL0B3wBh7A4qGWkkVCMJDh0QPD0eAx4lukgZTkBLLjdyAbYCkyAgWHm8HxsuFBMAGxt4pgHuCv3PAShNdLQIMAATfSQXFEtbDFHyBDQFaQqLAR0AZXkalBkSJQUxFESLGQmmT841T0vm4HcFCA8AdjhaLwBBStseAz1L7BFBDgEVA3YGnBk+BD3oAJoEwlILFppOCwIeDBUQzntD+oaxJbOqEsPmVoztmeEOgU272aOQMCbwOpB/Ypso4k/TTLW0oWpP3Rz3gHw2yY1UgZPtktnZk107pZPg3CQ+O2NJZ4RdQ8VrO8v8sA5Nf64eb7biK378+U434pbsbN5D/nUXJvQoZ2tsF7kCJBqxJCTNIptt2KVrMk9oCmdP0yza2mLjtAXAvD9RwvMgHNASOAHQHieInuWJb1575ohdCFscyN5HjENm6r3fmapvd12TrCubUm7XFYfHvmy8dSIQOESuJavaW0D8rbUXGUc7rPRuiWRnOFLlYcrqLc3LiwzjN7uzF6ECR7SY0Tzdx+FJN5Dl8dSD9VRuo2SKneiXQYjuXJ70nT50AuF9I7taX6vp5rEML9UbCTMpLStDd8XHbeVYsjSuXkuxcXDGzy11XOqM4/Ld+ZRABTvb0FzlY8mXbveszS4/glZhNu5eLJmy5AooQTWVutjvuWDrsDkUZ9am2TOeKMG8TLHRwjVBB4FhPtiujqXvesGvWwQ1w3s89y+jX47rIhp+El9c2QFM4BVQggIR28OeFU3V5TjwdLSSW8/9MAJ+qPuP74Iy+oDcIeIjgCJGHt52YnnwJV5+xKR+HjQws+fTAiOhcOW+zy609VzzQk+y0A7kdHdBBsXBB36UOFdzdYujG5PO1IXoFWrs3trl6gV4JKHvTsSvFdHz22LQv21L1uh45KVqrt+uUQyVd6ulDXkU/TOXxUk+HcujwWsIGjbyNKggFFDe5Mc4eHSKGezjtMlWeigB0nB6+8BrawOjtBF04xeKukf+o037M7ExZxCAGsVZ0PpTtc1TJlHhU+eUkh3LpBhTs2XCQewf98wydOE14KvF948SMOcIGmBFbIJR1V45meM46ACb1xWIaoJ3MkVdmkp7LuDsLQXzO742rKyrd/KspPEmjyviR3dNO/MNxJTes46EMlMdsAMMLPebHcs5hRcRuz1/3OWqWFHqsh7caP90rBA5z+0izaxZSEowxCpGcXJQmNX9ZRy7Wv2wppZZq5X96vy3Rhy6NkxfjqH4/xB5uK7Icux88zxeKS7HmRvYcD8R+lFRBO5I2hpXjDgvpLU+7LiZ7rsriL2IYSB5FoDZgc0aM7b51cp3qP5LO1LVPlSZunn1e/++/NlO4eEbUxhPePIEkeDKLV5SOXSS+SdvvpIbWH7fhP2kZRVCfvWrXrTny8dF2vD0/c17qfSxPu4hBzxzYL0X0HiW3j4APx7arPhNWGGOMWyuGGwuycrdUX3N1O3MCM+qWMORw+vbHSf7dxpmse8hGZvWaY9vtOvMRlFdhveoSnJLhb63k7kZxhLgSnbSVrw4SgaQmAVbn9aMlXJUuAW5/7DeZtB3AXYZJsC8u7TQ3U6MRQH3W0Y+TbKy23n6WDnjFbCNWCdxG69uYaQ65G91unS+/VBV5ogka0CGR7Pv1YajbSPKr+opmKCb8f/fHsNZ6yFhw4UYHSVjedw+2yeZ5IuZ6t35SPLGkb2zQC2XtoVv4vfHXPMH9GXD0mvawBsT2wVm/NdfNcvMGrXSpnK8FBBUUazjP+S4U5ffPk0rTU/FefFYW+Y2Ir95i4j0HghljDTPXjDwRIS9jeeG8RSNJV1X7TJVb/w2cACSCwugUvUcxGm9OQL9SDI=");const T=t(F),S=t(F),G=t(F),L=t(F),K=t(F),N=t(F);function R(A){if(0==A.length)return;let w=A.length-1;if(T.has(A[0])){if(!A.every((A=>T.has(A)||G.has(A)||L.has(A)||K.has(A)||N.has(A))))throw new Error("RTL: disallowed properties");for(;N.has(A[w]);)w--;if(w=A[w],!(T.has(w)||L.has(w)||G.has(w)))throw new Error("RTL: disallowed ending");if(A.some((A=>L.has(A)))&&A.some((A=>G.has(A))))throw new Error("RTL: AN+EN")}else{if(!S.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>S.has(A)||L.has(A)||K.has(A)||N.has(A))))throw new Error("LTR: disallowed properties");for(;N.has(A[w]);)w--;if(w=A[w],!S.has(w)&&!L.has(w))throw new Error("LTR: disallowed ending")}}const J="2022-01-05T07:15:53.378Z",k="14.0.0",H="1.3.9",h="ENS0";let Y=A("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");const O=t(Y),b=t(Y),V=t(Y),P=r(Y),X=t(Y),Z=Y()&&function(A){const w=t(A),B=t(A),Q=t(A),r=t(A),e=t(A),E=t(A),M=t(A),g=t(A),n=t(A),o=D(A,(A=>Array(A()).fill(1))),l=A()?D(A,C,[...r,...E].sort(((A,w)=>A-w))):1,c=65039,i=8205,U=8419;function x(A,w){if(1===A)return 1;let B=String.fromCodePoint(...w.filter((A=>A!=c)));return A.hasOwnProperty(B)?A[B]:void 0}function f(A,w){let B=A[w];if(!B)return;let Q=A[w+1];if(g.has(B)&&Q&&M.has(Q))return[2,[B,Q]];if(Q==c){if(r.has(B))return[2,[B]];if(E.has(B)||e.has(B))return[2,[B,c]]}return r.has(B)||E.has(B)?[1,[B]]:void 0}return function(A,t){let r=A[t],C=String.fromCodePoint(r);if(o.hasOwnProperty(C)){let w=o[C],B=t+1;for(;;){let Q=A[B];if(!Q)break;let t=String.fromCodePoint(Q);if(!w.hasOwnProperty(t))break;w=w[t],B++}if(w.hasOwnProperty(""))return[B-t,A.slice(t,B)]}let e=A[t+1];if(w.has(r)&&w.has(e))return[2,[r,e]];let E=B.has(r);if(E&&e===U)return[2,[r,U]];if((E||Q.has(r))&&e===c&&A[t+2]===U)return[3,E?[r,U]:[r,c,U]];let M=f(A,t);if(!M)return[0];let[D,g]=M,u=t+D;if(e=A[u],e===i){let w=x(l,g);if(w){let B,Q=[],r=u;for(;A[r++]===i;){let t=f(A,r);if(!t)break;let[C,e]=t;if(w=x(w,e),!w)break;r+=C,1===w?(g.push(i,...e),B=r):(Q.push(i,...e),w.hasOwnProperty("")&&(g.push(...Q),Q.length=0,B=r))}if(B)return[B-t,g]}}if(n.has(e)){let w=u+1;for(;n.has(A[w]);)w++;if(917631===A[w++])return[w-t,g.concat(A.slice(u,1+w-u))]}return M}}(Y);function z(A){return A.flatMap((({e:A,v:w})=>A??function(A){let w=[],B=[],Q=-1,t=0;return s(A,(function(A,r){if(-1===Q)0==A?Q=r:w.push(r);else if(t>0&&t>=A)0==A?(w.push(Q,...B),B.length=0,Q=r):B.push(r),t=A;else{let C=function(A,w){if(A>=4352&&A<4371&&w>=4449&&w<4470)return f+(588*(A-4352)+28*(w-4449));if(u(A)&&w>4519&&w<4547&&(A-f)%28==0)return A+(w-4519);for(let[B,Q]of U)if(2==Q.length&&Q[0]==A&&Q[1]==w){if(x.has(B))break;return B}return-1}(Q,r);C>=0?Q=C:0==t&&0==A?(w.push(Q),Q=r):(B.push(r),t=A)}})),Q>=0&&w.push(Q),w.push(...B),w}(w)))}function d(A,w){return new Error(`Disallowed label "${n(String.fromCodePoint(...A))}": ${w}`)}function a(A){const w=45;let B=l(o(A),Z,(A=>{if(O.has(A))return;if(V.has(A))return[];if(b.has(A))return[A];let w=g(P,A);if(w)return w;throw new Error(`Disallowed character "${n(String.fromCodePoint(A))}"`)})).map((A=>{let B=z(A);if(B.length>=4&&B[2]==w&&B[3]==w&&120==B[0]&&110==B[1])try{let w=function(A){let w=[],B=A.lastIndexOf(45);for(let Q=0;Q<B;Q++){let B=A[Q];if(B>=128)throw new Error("expected ASCII");w.push(B)}B++;let Q=0,t=128,r=72;for(;B<A.length;){let C=Q;for(let w=1,t=36;;t+=36){if(B>=A.length)throw new Error("invalid encoding");let C=A[B++];if(C>=48&&C<=57)C-=22;else{if(!(C>=97&&C<=122))throw new Error(`invalid character ${C}`);C-=97}Q+=C*w;const e=t<=r?1:t>=r+26?26:t-r;if(C<e)break;w*=36-e}let e=w.length+1,E=0==C?Q/700|0:Q-C>>1;E+=E/e|0;let M=0;for(;E>455;M+=36)E=E/35|0;r=M+36*E/(E+38)|0,t+=Q/e|0,Q%=e,w.splice(Q++,0,t)}return w}(B.slice(4));[A]=l(w,Z,(A=>b.has(A)?[A]:[]));let Q=z(A);if(w.length!=Q.length||!w.every(((A,w)=>A==Q[w])))throw new Error("not normalized");B=w}catch(A){throw d(B,`punycode: ${A.message}`)}let Q=A.flatMap((({v:A})=>A??[65039]));if(B.length>0){if(B.length>=4&&B[2]==w&&B[3]==w)throw d(B,"invalid label extension");if(B[0]==w)throw d(B,"leading hyphen");if(B[B.length-1]==w)throw d(B,"trailing hyphen");if(X.has(B[0]))throw d(B,"leading combining mark")}return{tokens:A,cps:B,text:Q}}));if(B.some((A=>A.text.some((A=>T.has(A)||G.has(A))))))for(let{text:A,cps:w}of B)try{R(A)}catch(A){throw d(w,`bidi: ${A.message}`)}return B.map((A=>String.fromCodePoint(...A.cps))).join(".")}function y(A){return l(o(A),Z,(A=>{if(O.has(A))return{};if(b.has(A))return[A];if(V.has(A))return{i:A};let w=g(P,A);return w?{m:w,u:[A]}:{d:A}}))[0]}export{J as BUILT,h as IDNA,k as UNICODE,H as VERSION,a as ens_normalize,y as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -689,3 +634,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -721,8 +666,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -749,4 +691,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -836,7 +778,7 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = 'AA4AFQAyAB0ADAAQAAoADgAJAAYADQCFABMABwDA/QQA8NwPGSY8GXQegwLODADknOjpQwsWCBMDFiERPwQEAoYD0AIBTwC8YMC0gQoCTQ0JGuv1SCYgWQoAZsQEAKdGCQMBBQwOCQILBiAVBScAlADGCwDFSgMIZSYTpRlnSv0/FAwABAIGBAATe0AD4gAhJQAAHgUVBQUFBQABF2VI/DQNSzsBJK4SAADy8QglE9EAy4E3qggOxQsACBIBATUMRjkMJgAAy61tFRDkFqVeAVkNAW4K5yIACAIM/xZUAM2hWbt2CEAMf8nzHIOMa2zrt2AYbuxMow3TQYJkPeEDpO+hAwd1n55c92pt2kANhtW2rIDAaGoY1furjDSKrZGBpzbzu7q5g/Hg3ZGj1aoOYNaaNvfnWjvWFpX9gnfo+WKXaCZ06oujHi5O7ueeq8d3nLXTm6r1pBuAyX7jr2A=';
const BUILT = '2021-12-27T05:53:52.428Z';
const BUILT = '2022-01-05T07:15:53.378Z';
const UNICODE = '14.0.0';
const VERSION = '1.3.7';
const VERSION = '1.3.9';
const IDNA = 'uts51';

@@ -910,7 +852,6 @@ let r = decode_payload(PAYLOAD);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -922,15 +863,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -952,6 +892,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -958,0 +897,0 @@ throw label_error(cps, err.message);

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

function A(A){let e=function(A){let e=0;function t(){return A[e++]<<8|A[e++]}let w=t(),B=1,r=[0,1];for(let A=1;A<w;A++)r.push(B+=t());let E=t(),Q=e;e+=E;let n=0,D=0;function M(){return 0==n&&(D=D<<8|A[e++],n=8),D>>--n&1}const g=2**31,o=g>>>1,C=g-1;let f=0;for(let A=0;A<31;A++)f=f<<1|M();let c=[],i=0,x=g;for(;;){let A=Math.floor(((f-i+1)*B-1)/x),e=0,t=w;for(;t-e>1;){let w=e+t>>>1;A<r[w]?t=w:e=w}if(0==e)break;c.push(e);let E=i+Math.floor(x*r[e]/B),Q=i+Math.floor(x*r[e+1]/B)-1;for(;0==((E^Q)&o);)f=f<<1&C|M(),E=E<<1&C,Q=Q<<1&C|1;for(;E&~Q&536870912;)f=f&o|f<<1&C>>>1|M(),E=E<<1^o,Q=(Q^o)<<1|o|1;i=E,x=1+Q-E}let l=w-4;return c.map((e=>{switch(e-l){case 3:return l+65792+(A[Q++]<<16|A[Q++]<<8|A[Q++]);case 2:return l+256+(A[Q++]<<8|A[Q++]);case 1:return l+A[Q++];default:return e-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),t=0;return()=>e[t++]}function e(A){return 1&A?~A>>1:A>>1}function t(A,e){let t=Array(A);for(let w=0,B=-1;w<A;w++)t[w]=B+=1+e();return t}function w(A,t){let w=Array(A);for(let B=0,r=0;B<A;B++)w[B]=r+=e(t());return w}function B(A){let e=new Set(t(A(),A)),w=A(),B=t(w,A),r=function(A,e){let t=Array(A);for(let w=0;w<A;w++)t[w]=1+e();return t}(w,A);for(let A=0;A<w;A++)for(let t=0;t<r[A];t++)e.add(B[A]+t);return e}function r(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(n(t,A))}for(;;){let t=A()-1;if(t<0)break;e.push(D(t,A))}return e.flat().sort(((A,e)=>A[0]-e[0]))}function E(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(t)}return e}function Q(A,e,t,B){let r=Array(A).fill().map((()=>[]));for(let E=0;E<e;E++)w(A,t).forEach(((A,e)=>r[e].push(B?B[A]:A)));return r}function n(A,e){let t=1+e(),w=e(),B=E(e);return Q(B.length,1+A,e).map(((A,e)=>[A[0],A.slice(1),B[e],t,w]))}function D(A,e){return Q(1+e(),1+A,e).map((A=>[A[0],A.slice(1)]))}function M(A,e){for(let[t,w,B,r,E]of A){let A=e-t;if(A<0)break;if(B>0){if(A<r*B&&A%r==0){let e=A/r;return w.map((A=>A+e*E))}}else if(0==A)return w}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${e=A.codePointAt(0),e.toString(16).toUpperCase().padStart(2,"0")}}`;var e}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function C(A,e,t){let w=[],B=[],r=[B];function E(){w.length>0&&(B.push({v:w}),w=[])}for(let Q=0;Q<A.length;Q++){if(e){let[t,w]=e(A,Q);if(t>0){E(),B.push({e:w,u:A.slice(Q,Q+t)}),Q+=t-1;continue}}let n=t(A[Q]);Array.isArray(n)?w.push(...n):(E(),n?B.push(n):(B=[],r.push(B)))}return E(),r}let f=A("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");const c=Array(1+f()).fill().map((()=>B(f))),i=r(f),x=B(f),l=44032;function u(A){return A>=l&&A<55204}function s(A,e){if(A<128)e(A);else if(u(A)){let t=A-l,w=t%588/28|0,B=t%28;e(4352+(t/588|0)),e(4449+w),B>0&&e(4519+B)}else{let t=M(i,A);if(t)for(let A of t)s(A,e);else e(A)}}function S(A,e){let t=[];function w(){t.sort(((A,e)=>A[0]-e[0])).forEach((([A,t])=>e(A,t))),t.length=0}function B(A){let B=1+c.findIndex((e=>e.has(A)));0==B?(w(),e(B,A)):t.push([B,A])}A.forEach((A=>s(A,B))),w()}let T=A("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");const F=B(T),U=B(T),L=B(T),R=B(T),I=B(T),X=B(T);function J(A){if(0==A.length)return;let e=A.length-1;if(F.has(A[0])){if(!A.every((A=>F.has(A)||L.has(A)||R.has(A)||I.has(A)||X.has(A))))throw new Error("RTL: disallowed properties");for(;X.has(A[e]);)e--;if(e=A[e],!(F.has(e)||R.has(e)||L.has(e)))throw new Error("RTL: disallowed ending");let t=A.some((A=>R.has(A))),w=A.some((A=>L.has(A)));if(t&&w)throw new Error("RTL: AN+EN")}else{if(!U.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>U.has(A)||R.has(A)||I.has(A)||X.has(A))))throw new Error("LTR: disallowed properties");for(;X.has(A[e]);)e--;if(e=A[e],!U.has(e)&&!R.has(e))throw new Error("LTR: disallowed ending")}}let N=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const H=B(N),a=B(N),h=B(N),V=B(N),G=B(N),k=B(N),K=B(N),P="2021-12-27T05:53:52.428Z",Y="14.0.0",z="1.3.7",d="uts51";let O=A("ABcKngFnA9oADwBBABMAEgB0AB4ADQAaAAYACAAEAAYACAAIAAEAKQEbAKoABwKE/PsA8NMGEB0zEGseesUDANuT3+A6Ag0KDRgINgJ9A8cBRgC8V7ereAECRAQAEeLsPx0gUAEAXbsAnj0AAwUAAhcMHgCLAL0CAMVBXB0KnBBeQfQ2CwMKcjfZABgcABUMDlw/8ysEQjIbpQkA8uglCsgAy3guoQW8Av8JASwDPTADJfcAy6RkDAfbDZxVAVAEZQHeGQz/DUsDVQQ5ADECDQISAg0C1QNVBD0DVQAxAhECEgITA5s2NTYDVav3JwDNNxMHOTsBAJ2ZCzcPnwvfFYEENwMtCHgv0QAoyQcZB0IETwS4N/1XGwVz2ZXBAEURAPUHsjf9VxsFc9mVwQBFEQD1B+YDPwHcAFYfN/1XCwVzAIPBAEURAPUH5qADVQQ5AnsAMQX7BfoF+wX6BfsF+gX7BfoF+wX6BfsF+gX7BfoF+wX6BfsF+gX7BfoF+wX6BfsF+gX7BfoF+wX6BfsDVQQ5AntLA1UEOQJ7ADEDmwNVBDkCewIv9wEHAB8BAJ3HNw+fC98VAnuBHzf9VxsFcwCDwQBFEQD1B7I3/VcbBXMAg8EARREA9QeyN/1XGwVzAIPBAEURAPUHsjf9VxsFcwCDwQBFEQD1B7I3/VcbBXMAg8EARREA9QeyN/1XGwVzAIPBAEURAPUHsjf9VxsFcwCDwQBFEQD1B7I3/VcbBXMAg8EARREA9QeyN/1XGwVzAIPBAEURAPUHsjf9VxsFcwCDwQBFEQD1B+YfN/1XCwVzAIPBAEURAPUHsjf9VwsFcwCDwQBFEQD1B7I3/VcLBXMAg8EARREA9QeyN/1XCwVzAIPBAEURAPUHsjf9VwsFcwCDwQBFEQD1B+YACaUCewmnAn0PJPzvOi8hxF03szeKQfMEwcehOOiM2/wFpnrNqeZtDRqHMYsaaB5fZsGGqJlXxLLQ7XS4cHw1ljaMIexBUQLFe1gJU9RHw6/rle3yCg3CoIKaZ7QdEEFkzlnlkbmg1/jl4CDXx1uq5ilRx09+CuEXGiV1hHqmR9BumJcJh+2+J5gKkTDVoroY7nPmNwLo0tTa+EwktC6tntElJDvbkflOlzoBKiT4vsJI8KSZp6Opvqhpr3XeFF/Ppe5Bs0qZScc4r63J87T9BnAxZ9khENVk5gdw15HWL/iuiWxyfH7euFTOv5HmITMAcHubRZ0UE+IE1GDRoUBP+/OedR2DIWVXSzyfBkDv300xtE694mu4TIj3JaAPkeh1saYX8YB/XfxXxjr/fCaoLhQh4yzeF4z3A3GfvfD/jXV6szEfd29uoFbtixAIJiheqtl2okurqe1hzdDqx1GCXXAnYS0X+2i3jQNbC1IrN+m1qjD6NfvrqzeCBejtEla7mDD+hEXgJyJ8KvXUbVu99dJetRIfpx7iLCL04Zi3sL+nDf0q58IyCbBDdhH2BqEr9UPD/19wzg9pskzvKFMlVbdsakBtqAmAgZmlLp6432hs+IphBK86vs3jQTiPbdAroFQuNlKcod5/px70hcb8bJYMN6+NqZlOvJblFNwIGUGO4YDILpf8cEJDdMXmZapd0N3natX6W/bBpjvfT4udSo5kPHjxHwfR+9ZP/HrKINRxn4FTltI6VOBwKWKNXBH1Hgg1RPhOXtcg25tJg1f0JYLfi5BeAF8q5KT1gMpc2D/u1BIgCHtmbzkckf6IoPOLTuNQTvAgWGz8VqlMtx5nVFZgglWZtff2pHBwDc6fcO15fMvML5uuHi/IwaQW5R7Yw/iOPlsQbRDVkmKAKQvT9HzJUYy6/lm5BGQ9k0iW++1rjfHgrer1zaWD/9qZWee8Ay/JfuvXxSTujaXi/mpkOaG8gP+dTjatKDc6pitNDC3rDq513o/pT8y872hz5RPifcpHvwlPALvYH2ZvsShOQqJvsBW+U8ubV9TPDPX9EQZKRCWFHjn0UsEkYK+pdlEHQ/faaerHJZLnjLKHANTGZBQz7Ub/vQYMK4jEzaB5OmI+m/XHSSPyLPSpnJwFU+G3Vqy8vtSeK+9b896t0xEOS/td8lkN36MfqSHC3QqAOw7X3cDSBT6QmyUBNnQPn2gdTWTcCCwm+zktaW0s1YVW/VANEgg9xLTOlZaFZqNyRTsyRBBiSbL8ZlhqFgqrmrB6dTqcCF8wqvVB1m1Q00akEx+TZtNNDWKULjq3m3Z/i+0/nxrhbqvp/6iY9hkvQXf3UTQQ8rjngn6v6SY+yHq/CTpxqBl7ji/yybcLvZ3JU0YYEaG14YfKcuRUcZ8vPdpiJQXbtx9S1P24pBF2ltCd3SPF24IbDnJ0AbS+KXFKK+/gXHP8hu1MQ0N6EZ8cpnq4f1I4qzsBt2oAvL6CKJ3HDIghV8RVUnFCEGsTb5EmXZDg2j2LymkE4b4oZ3T6Xxvo1diEKvKP3TPZA6kIPxS1X6xBqbhmBEf25lIQyrsVdMQMPhW+1+SBmijQVCTS/WA92ntoKvua90NOAZ+mMIFaJJyKyacNnSfluD3Y31ivZQzoJEVAgDIo55UxxKEmSXPMRLCvyDKGg67Wu5BmK1Kp3gTiJZ2WlZkb6w8aa1CgsuRfni/luFHVSeTMe6LY/Tr7c00WtxQZRYinlMCh46XjessUwIYlzuxtgbLeQ6VWCeG6AsHQgCzlKogzdS9xgA==");const b=B(O),Z=B(O),j=B(O),m=r(O),p=B(O),y=O()&&function(A){const e=B(A),t=B(A),w=B(A),r=B(A),n=B(A),D=B(A),M=B(A),g=B(A),o=B(A),C=function(A,e){let t=[];for(;;){let w=E(A);if(0==w.length)break;let B=1+A();t.push(...w.reduce(((t,w)=>Q(B,w,A,e).map(((A,e)=>t[e].concat(8205,A)))),Q(B,w.shift(),A,e)))}return new Set(t.map((A=>String.fromCodePoint(...A))))}(A,[...r,...D].sort(((A,e)=>A-e))),f=65039,c=8419;function i(A,e){let t=A[e],w=A[e+1];if(g.has(t)&&w&&M.has(w))return[2,[t,w]];if(w==f){if(r.has(t))return[2,[t]];if(D.has(t)||n.has(t))return[2,[t,f]]}return r.has(t)||D.has(t)?[1,[t]]:void 0}return function(A,B){let r=A[B],E=A.length;if(B+2<=E&&e.has(r)){let t=A[B+1];if(e.has(t))return[2,[r,t]];if(!i(A,B))return[0]}let Q=t.has(r);if(B+2<=E&&Q&&A[B+1]==c)return[2,[r,c]];if(B+3<=E&&(Q||w.has(r))&&A[B+1]==f&&A[B+2]==c)return[3,Q?[r,c]:[r,f,c]];let n=i(A,B);if(!n)return[0];let D=n[0]+B,M=n[1].slice(),g=!1;for(;D+1<E&&8205===A[D];){let e=i(A,D+1);if(!e)break;g=!0,D+=1+e[0],M.push(8205,...e[1])}if(g){let A=String.fromCodePoint(...M);if(!C.has(A.replace(/\u{FE0F}/gu,"")))return n}else if(D+2<E&&o.has(A[D])){let e=D+1;for(;e+1<E&&o.has(A[e]);)e++;if(917631==A[e++])return[e-B,M]}return[D-B,M]}}(O);function v(A){return A.flatMap((({e:A,v:e})=>A??function(A){let e=[],t=[],w=-1,B=0;return S(A,(function(A,r){if(-1===w)0==A?w=r:e.push(r);else if(B>0&&B>=A)0==A?(e.push(w,...t),t.length=0,w=r):t.push(r),B=A;else{let E=function(A,e){if(A>=4352&&A<4371&&e>=4449&&e<4470)return l+(588*(A-4352)+28*(e-4449));if(u(A)&&e>4519&&e<4547&&(A-l)%28==0)return A+(e-4519);for(let[t,w]of i)if(2==w.length&&w[0]==A&&w[1]==e){if(x.has(t))break;return t}return-1}(w,r);E>=0?w=E:0==B&&0==A?(e.push(w),w=r):(t.push(r),B=A)}})),w>=0&&e.push(w),e.push(...t),e}(e)))}function W(A,e){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${e}`)}function q(A){const e=45;let t=C(o(A),y,(A=>{if(b.has(A))return;if(j.has(A))return[];if(Z.has(A))return[A];let e=M(m,A);if(e)return e;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let t=v(A);if(t.length>=4&&t[2]==e&&t[3]==e&&120==t[0]&&110==t[1]){let e;try{e=function(A){let e=[],t=A.lastIndexOf(45);for(let w=0;w<t;w++){let t=A[w];if(t>=128)throw new Error("expected ASCII");e.push(t)}t++;let w=0,B=128,r=72;for(;t<A.length;){let E=w;for(let e=1,B=36;;B+=36){if(t>=A.length)throw new Error("invalid encoding");let E=A[t++];if(E>=48&&E<=57)E-=22;else{if(!(E>=97&&E<=122))throw new Error(`invalid character ${E}`);E-=97}w+=E*e;const Q=B<=r?1:B>=r+26?26:B-r;if(E<Q)break;e*=36-Q}let Q=e.length+1,n=0==E?w/700|0:w-E>>1;n+=n/Q|0;let D=0;for(;n>455;D+=36)n=n/35|0;r=D+36*n/(n+38)|0,B+=w/Q|0,w%=Q,e.splice(w++,0,B)}return e}(t.slice(4)),[A]=C(e,y,(A=>Z.has(A)?[A]:[]));let w=v(A);if(e.length!=w.length||!e.every(((A,e)=>A==w[e])))throw new Error("not normalized")}catch(A){throw W(t,`punycode: ${A.message}`)}t=e}let w=A.flatMap((({v:A})=>A??[]));if(t.length>0){if(t.length>=4&&t[2]==e&&t[3]==e)throw W(t,"invalid label extension");if(t[0]==e)throw W(t,"leading hyphen");if(t[t.length-1]==e)throw W(t,"trailing hyphen");if(p.has(t[0]))throw W(t,"leading combining mark");try{!function(A){for(let e=0,t=A.length-1;e<=t;e++){switch(A[e]){case 8204:if(e>0&&H.has(A[e-1]))continue;if(e>0&&e<t){let w=e-1;for(;w>0&&a.has(A[w]);)w--;if(h.has(A[w])){let w=e+1;for(;w<t&&a.has(A[w]);)w++;if(V.has(A[w]))continue}}break;case 8205:if(e>0&&H.has(A[e-1]))continue;break;case 183:if(e>0&&e<t&&108==A[e-1]&&108==A[e+1])continue;break;case 885:if(e<t&&G.has(A[e+1]))continue;break;case 1523:case 1524:if(e>0&&k.has(A[e-1]))continue;break;default:continue}throw new Error(`No context for "${g(String.fromCodePoint(A[e]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>K.has(A))))throw new Error("Disallowed katakana")}(w)}catch(A){throw W(t,A.message)}}return{tokens:A,cps:t,text:w}}));if(t.some((A=>A.text.some((A=>F.has(A)||L.has(A))))))for(let{text:A,cps:e}of t)try{J(A)}catch(A){throw W(e,`bidi: ${A.message}`)}return t.map((A=>String.fromCodePoint(...A.cps))).join(".")}function $(A){return C(o(A),y,(A=>{if(b.has(A))return{};if(Z.has(A))return[A];if(j.has(A))return{i:A};let e=M(m,A);return e?{m:e,u:[A]}:{d:A}}))[0]}export{P as BUILT,d as IDNA,Y as UNICODE,z as VERSION,q as ens_normalize,$ as ens_tokenize};
function A(A){let e=function(A){let e=0;function t(){return A[e++]<<8|A[e++]}let r=t(),w=1,n=[0,1];for(let A=1;A<r;A++)n.push(w+=t());let E=t(),B=e;e+=E;let Q=0,M=0;function o(){return 0==Q&&(M=M<<8|A[e++],Q=8),M>>--Q&1}const D=2**31,i=D>>>1,g=D-1;let C=0;for(let A=0;A<31;A++)C=C<<1|o();let f=[],c=0,l=D;for(;;){let A=Math.floor(((C-c+1)*w-1)/l),e=0,t=r;for(;t-e>1;){let r=e+t>>>1;A<n[r]?t=r:e=r}if(0==e)break;f.push(e);let E=c+Math.floor(l*n[e]/w),B=c+Math.floor(l*n[e+1]/w)-1;for(;0==((E^B)&i);)C=C<<1&g|o(),E=E<<1&g,B=B<<1&g|1;for(;E&~B&536870912;)C=C&i|C<<1&g>>>1|o(),E=E<<1^i,B=(B^i)<<1|i|1;c=E,l=1+B-E}let u=r-4;return f.map((e=>{switch(e-u){case 3:return u+65792+(A[B++]<<16|A[B++]<<8|A[B++]);case 2:return u+256+(A[B++]<<8|A[B++]);case 1:return u+A[B++];default:return e-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),t=0;return()=>e[t++]}function e(A){return 1&A?~A>>1:A>>1}function t(A,e){let t=Array(A);for(let r=0,w=-1;r<A;r++)t[r]=w+=1+e();return t}function r(A,t){let r=Array(A);for(let w=0,n=0;w<A;w++)r[w]=n+=e(t());return r}function w(A){let e=new Set(t(A(),A)),r=A(),w=t(r,A),n=function(A,e){let t=Array(A);for(let r=0;r<A;r++)t[r]=1+e();return t}(r,A);for(let A=0;A<r;A++)for(let t=0;t<n[A];t++)e.add(w[A]+t);return e}function n(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(Q(t,A))}for(;;){let t=A()-1;if(t<0)break;e.push(M(t,A))}return e.flat().sort(((A,e)=>A[0]-e[0]))}function E(A){let e=[];for(;;){let t=A();if(0==t)break;e.push(t)}return e}function B(A,e,t,w){let n=Array(A).fill().map((()=>[]));for(let E=0;E<e;E++)r(A,t).forEach(((A,e)=>n[e].push(w?w[A]:A)));return n}function Q(A,e){let t=1+e(),r=e(),w=E(e);return B(w.length,1+A,e).map(((A,e)=>[A[0],A.slice(1),w[e],t,r]))}function M(A,e){return B(1+e(),1+A,e).map((A=>[A[0],A.slice(1)]))}function o(A,e,t){let r={};for(;;){let w=e(A);if(0==w.length)break;let n=1+A(),E=Array(n).fill(r);for(let e of w)E=B(n,e,A,t).map(((A,e)=>{let t=E[e],r=String.fromCodePoint(...A),w=t[r];return w||(w=t[r]={}),w}));E.forEach((A=>A[""]=1))}return r}function D(A,e){for(let[t,r,w,n,E]of A){let A=e-t;if(A<0)break;if(w>0){if(A<n*w&&A%n==0){let e=A/n;return r.map((A=>A+e*E))}}else if(0==A)return r}}function i(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${e=A.codePointAt(0),e.toString(16).toUpperCase().padStart(2,"0")}}`;var e}))}function g(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function C(A,e,t){let r=[],w=[],n=[w];function E(){r.length>0&&(w.push({v:r}),r=[])}for(let B=0;B<A.length;B++){if(e){let[t,r]=e(A,B);if(t>0){E(),w.push({e:r,u:A.slice(B,B+t)}),B+=t-1;continue}}let Q=t(A[B]);Array.isArray(Q)?r.push(...Q):(E(),Q?w.push(Q):(w=[],n.push(w)))}return E(),n}let f=A("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");const c=Array(1+f()).fill().map((()=>w(f))),l=n(f),u=w(f),x=44032;function S(A){return A>=x&&A<55204}function T(A,e){if(A<128)e(A);else if(S(A)){let t=A-x,r=t%588/28|0,w=t%28;e(4352+(t/588|0)),e(4449+r),w>0&&e(4519+w)}else{let t=D(l,A);if(t)for(let A of t)T(A,e);else e(A)}}function F(A,e){let t=[];function r(){t.sort(((A,e)=>A[0]-e[0])).forEach((([A,t])=>e(A,t))),t.length=0}function w(A){let w=1+c.findIndex((e=>e.has(A)));0==w?(r(),e(w,A)):t.push([w,A])}A.forEach((A=>T(A,w))),r()}let s=A("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");const L=w(s),U=w(s),a=w(s),G=w(s),I=w(s),R=w(s);function J(A){if(0==A.length)return;let e=A.length-1;if(L.has(A[0])){if(!A.every((A=>L.has(A)||a.has(A)||G.has(A)||I.has(A)||R.has(A))))throw new Error("RTL: disallowed properties");for(;R.has(A[e]);)e--;if(e=A[e],!(L.has(e)||G.has(e)||a.has(e)))throw new Error("RTL: disallowed ending");if(A.some((A=>G.has(A)))&&A.some((A=>a.has(A))))throw new Error("RTL: AN+EN")}else{if(!U.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>U.has(A)||G.has(A)||I.has(A)||R.has(A))))throw new Error("LTR: disallowed properties");for(;R.has(A[e]);)e--;if(e=A[e],!U.has(e)&&!G.has(e))throw new Error("LTR: disallowed ending")}}let h=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const N=w(h),k=w(h),H=w(h),Y=w(h),O=w(h),X=w(h),d=w(h),K="2022-01-05T07:15:53.378Z",V="14.0.0",z="1.3.9",b="uts51";let P=A("AA4AFQAyAB0ADAAQAAoADgAJAAYADQCFABMABwDA/QQA8NwPGSY8GXQegwLODADknOjpQwsWCBMDFiERPwQEAoYD0AIBTwC8YMC0gQoCTQ0JGuv1SCYgWQoAZsQEAKdGCQMBBQwOCQILBiAVBScAlADGCwDFSgMIZSYTpRlnSv0/FAwABAIGBAATe0AD4gAhJQAAHgUVBQUFBQABF2VI/DQNSzsBJK4SAADy8QglE9EAy4E3qggOxQsACBIBATUMRjkMJgAAy61tFRDkFqVeAVkNAW4K5yIACAIM/xZUAM2hWbt2CEAMf8nzHIOMa2zrt2AYbuxMow3TQYJkPeEDpO+hAwd1n55c92pt2kANhtW2rIDAaGoY1furjDSKrZGBpzbzu7q5g/Hg3ZGj1aoOYNaaNvfnWjvWFpX9gnfo+WKXaCZ06oujHi5O7ueeq8d3nLXTm6r1pBuAyX7jr2A=");const j=w(P),p=w(P),y=w(P),Z=n(P),m=w(P),W=P()&&function(A){const e=w(A),t=w(A),r=w(A),n=w(A),B=w(A),Q=w(A),M=w(A),D=w(A),i=w(A),g=o(A,(A=>Array(A()).fill(1))),C=A()?o(A,E,[...n,...Q].sort(((A,e)=>A-e))):1,f=65039,c=8205,l=8419;function u(A,e){if(1===A)return 1;let t=String.fromCodePoint(...e.filter((A=>A!=f)));return A.hasOwnProperty(t)?A[t]:void 0}function x(A,e){let t=A[e];if(!t)return;let r=A[e+1];if(D.has(t)&&r&&M.has(r))return[2,[t,r]];if(r==f){if(n.has(t))return[2,[t]];if(Q.has(t)||B.has(t))return[2,[t,f]]}return n.has(t)||Q.has(t)?[1,[t]]:void 0}return function(A,w){let n=A[w],E=String.fromCodePoint(n);if(g.hasOwnProperty(E)){let e=g[E],t=w+1;for(;;){let r=A[t];if(!r)break;let w=String.fromCodePoint(r);if(!e.hasOwnProperty(w))break;e=e[w],t++}if(e.hasOwnProperty(""))return[t-w,A.slice(w,t)]}let B=A[w+1];if(e.has(n)&&e.has(B))return[2,[n,B]];let Q=t.has(n);if(Q&&B===l)return[2,[n,l]];if((Q||r.has(n))&&B===f&&A[w+2]===l)return[3,Q?[n,l]:[n,f,l]];let M=x(A,w);if(!M)return[0];let[o,D]=M,S=w+o;if(B=A[S],B===c){let e=u(C,D);if(e){let t,r=[],n=S;for(;A[n++]===c;){let w=x(A,n);if(!w)break;let[E,B]=w;if(e=u(e,B),!e)break;n+=E,1===e?(D.push(c,...B),t=n):(r.push(c,...B),e.hasOwnProperty("")&&(D.push(...r),r.length=0,t=n))}if(t)return[t-w,D]}}if(i.has(B)){let e=S+1;for(;i.has(A[e]);)e++;if(917631===A[e++])return[e-w,D.concat(A.slice(S,1+e-S))]}return M}}(P);function v(A){return A.flatMap((({e:A,v:e})=>A??function(A){let e=[],t=[],r=-1,w=0;return F(A,(function(A,n){if(-1===r)0==A?r=n:e.push(n);else if(w>0&&w>=A)0==A?(e.push(r,...t),t.length=0,r=n):t.push(n),w=A;else{let E=function(A,e){if(A>=4352&&A<4371&&e>=4449&&e<4470)return x+(588*(A-4352)+28*(e-4449));if(S(A)&&e>4519&&e<4547&&(A-x)%28==0)return A+(e-4519);for(let[t,r]of l)if(2==r.length&&r[0]==A&&r[1]==e){if(u.has(t))break;return t}return-1}(r,n);E>=0?r=E:0==w&&0==A?(e.push(r),r=n):(t.push(n),w=A)}})),r>=0&&e.push(r),e.push(...t),e}(e)))}function q(A,e){return new Error(`Disallowed label "${i(String.fromCodePoint(...A))}": ${e}`)}function $(A){const e=45;let t=C(g(A),W,(A=>{if(j.has(A))return;if(y.has(A))return[];if(p.has(A))return[A];let e=D(Z,A);if(e)return e;throw new Error(`Disallowed character "${i(String.fromCodePoint(A))}"`)})).map((A=>{let t=v(A);if(t.length>=4&&t[2]==e&&t[3]==e&&120==t[0]&&110==t[1])try{let e=function(A){let e=[],t=A.lastIndexOf(45);for(let r=0;r<t;r++){let t=A[r];if(t>=128)throw new Error("expected ASCII");e.push(t)}t++;let r=0,w=128,n=72;for(;t<A.length;){let E=r;for(let e=1,w=36;;w+=36){if(t>=A.length)throw new Error("invalid encoding");let E=A[t++];if(E>=48&&E<=57)E-=22;else{if(!(E>=97&&E<=122))throw new Error(`invalid character ${E}`);E-=97}r+=E*e;const B=w<=n?1:w>=n+26?26:w-n;if(E<B)break;e*=36-B}let B=e.length+1,Q=0==E?r/700|0:r-E>>1;Q+=Q/B|0;let M=0;for(;Q>455;M+=36)Q=Q/35|0;n=M+36*Q/(Q+38)|0,w+=r/B|0,r%=B,e.splice(r++,0,w)}return e}(t.slice(4));[A]=C(e,W,(A=>p.has(A)?[A]:[]));let r=v(A);if(e.length!=r.length||!e.every(((A,e)=>A==r[e])))throw new Error("not normalized");t=e}catch(A){throw q(t,`punycode: ${A.message}`)}let r=A.flatMap((({v:A})=>A??[65039]));if(t.length>0){if(t.length>=4&&t[2]==e&&t[3]==e)throw q(t,"invalid label extension");if(t[0]==e)throw q(t,"leading hyphen");if(t[t.length-1]==e)throw q(t,"trailing hyphen");if(m.has(t[0]))throw q(t,"leading combining mark");try{!function(A){for(let e=0,t=A.length-1;e<=t;e++){switch(A[e]){case 8204:if(e>0&&N.has(A[e-1]))continue;if(e>0&&e<t){let r=e-1;for(;r>0&&k.has(A[r]);)r--;if(H.has(A[r])){let r=e+1;for(;r<t&&k.has(A[r]);)r++;if(Y.has(A[r]))continue}}break;case 8205:if(e>0&&N.has(A[e-1]))continue;break;case 183:if(e>0&&e<t&&108==A[e-1]&&108==A[e+1])continue;break;case 885:if(e<t&&O.has(A[e+1]))continue;break;case 1523:case 1524:if(e>0&&X.has(A[e-1]))continue;break;default:continue}throw new Error(`No context for "${i(String.fromCodePoint(A[e]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>d.has(A))))throw new Error("Disallowed katakana")}(r)}catch(A){throw q(t,A.message)}}return{tokens:A,cps:t,text:r}}));if(t.some((A=>A.text.some((A=>L.has(A)||a.has(A))))))for(let{text:A,cps:e}of t)try{J(A)}catch(A){throw q(e,`bidi: ${A.message}`)}return t.map((A=>String.fromCodePoint(...A.cps))).join(".")}function _(A){return C(g(A),W,(A=>{if(j.has(A))return{};if(p.has(A))return[A];if(y.has(A))return{i:A};let e=D(Z,A);return e?{m:e,u:[A]}:{d:A}}))[0]}export{K as BUILT,b as IDNA,V as UNICODE,z as VERSION,$ as ens_normalize,_ as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -693,4 +638,4 @@ }

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -780,5 +725,5 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = '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';
// built: 2021-12-27T05:53:52.428Z
// built: 2022-01-05T07:15:53.378Z
let r = decode_payload(PAYLOAD);

@@ -851,7 +796,6 @@ const STOP = read_member_set(r);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -863,15 +807,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -893,6 +836,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -899,0 +841,0 @@ throw label_error(cps, err.message);

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

function A(A){let B=function(A){let B=0;function w(){return A[B++]<<8|A[B++]}let E=w(),Q=1,M=[0,1];for(let A=1;A<E;A++)M.push(Q+=w());let t=w(),C=B;B+=t;let e=0,n=0;function r(){return 0==e&&(n=n<<8|A[B++],e=8),n>>--e&1}const D=2**31,g=D>>>1,o=D-1;let c=0;for(let A=0;A<31;A++)c=c<<1|r();let i=[],l=0,x=D;for(;;){let A=Math.floor(((c-l+1)*Q-1)/x),B=0,w=E;for(;w-B>1;){let E=B+w>>>1;A<M[E]?w=E:B=E}if(0==B)break;i.push(B);let t=l+Math.floor(x*M[B]/Q),C=l+Math.floor(x*M[B+1]/Q)-1;for(;0==((t^C)&g);)c=c<<1&o|r(),t=t<<1&o,C=C<<1&o|1;for(;t&~C&536870912;)c=c&g|c<<1&o>>>1|r(),t=t<<1^g,C=(C^g)<<1|g|1;l=t,x=1+C-t}let F=E-4;return i.map((B=>{switch(B-F){case 3:return F+65792+(A[C++]<<16|A[C++]<<8|A[C++]);case 2:return F+256+(A[C++]<<8|A[C++]);case 1:return F+A[C++];default:return B-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>B[w++]}function B(A){return 1&A?~A>>1:A>>1}function w(A,B){let w=Array(A);for(let E=0,Q=-1;E<A;E++)w[E]=Q+=1+B();return w}function E(A,w){let E=Array(A);for(let Q=0,M=0;Q<A;Q++)E[Q]=M+=B(w());return E}function Q(A){let B=new Set(w(A(),A)),E=A(),Q=w(E,A),M=function(A,B){let w=Array(A);for(let E=0;E<A;E++)w[E]=1+B();return w}(E,A);for(let A=0;A<E;A++)for(let w=0;w<M[A];w++)B.add(Q[A]+w);return B}function M(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(e(w,A))}for(;;){let w=A()-1;if(w<0)break;B.push(n(w,A))}return B.flat().sort(((A,B)=>A[0]-B[0]))}function t(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(w)}return B}function C(A,B,w,Q){let M=Array(A).fill().map((()=>[]));for(let t=0;t<B;t++)E(A,w).forEach(((A,B)=>M[B].push(Q?Q[A]:A)));return M}function e(A,B){let w=1+B(),E=B(),Q=t(B);return C(Q.length,1+A,B).map(((A,B)=>[A[0],A.slice(1),Q[B],w,E]))}function n(A,B){return C(1+B(),1+A,B).map((A=>[A[0],A.slice(1)]))}function r(A,B){for(let[w,E,Q,M,t]of A){let A=B-w;if(A<0)break;if(Q>0){if(A<M*Q&&A%M==0){let B=A/M;return E.map((A=>A+B*t))}}else if(0==A)return E}}function D(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${B=A.codePointAt(0),B.toString(16).toUpperCase().padStart(2,"0")}}`;var B}))}function g(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function o(A,B,w){let E=[],Q=[],M=[Q];function t(){E.length>0&&(Q.push({v:E}),E=[])}for(let C=0;C<A.length;C++){if(B){let[w,E]=B(A,C);if(w>0){t(),Q.push({e:E,u:A.slice(C,C+w)}),C+=w-1;continue}}let e=w(A[C]);Array.isArray(e)?E.push(...e):(t(),e?Q.push(e):(Q=[],M.push(Q)))}return t(),M}let c=A("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");const i=Array(1+c()).fill().map((()=>Q(c))),l=M(c),x=Q(c),F=44032;function f(A){return A>=F&&A<55204}function S(A,B){if(A<128)B(A);else if(f(A)){let w=A-F,E=w%588/28|0,Q=w%28;B(4352+(w/588|0)),B(4449+E),Q>0&&B(4519+Q)}else{let w=r(l,A);if(w)for(let A of w)S(A,B);else B(A)}}function U(A,B){let w=[];function E(){w.sort(((A,B)=>A[0]-B[0])).forEach((([A,w])=>B(A,w))),w.length=0}function Q(A){let Q=1+i.findIndex((B=>B.has(A)));0==Q?(E(),B(Q,A)):w.push([Q,A])}A.forEach((A=>S(A,Q))),E()}let k=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const T=Q(k),G=Q(k),s=Q(k),I=Q(k),N=Q(k),u=Q(k),L=Q(k);let R=A("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");const J=Q(R),K=Q(R),Y=Q(R),H=M(R),X=Q(R),h=R()&&function(A){const B=Q(A),w=Q(A),E=Q(A),M=Q(A),e=Q(A),n=Q(A),r=Q(A),D=Q(A),g=Q(A),o=function(A,B){let w=[];for(;;){let E=t(A);if(0==E.length)break;let Q=1+A();w.push(...E.reduce(((w,E)=>C(Q,E,A,B).map(((A,B)=>w[B].concat(8205,A)))),C(Q,E.shift(),A,B)))}return new Set(w.map((A=>String.fromCodePoint(...A))))}(A,[...M,...n].sort(((A,B)=>A-B))),c=65039,i=8419;function l(A,B){let w=A[B],E=A[B+1];if(D.has(w)&&E&&r.has(E))return[2,[w,E]];if(E==c){if(M.has(w))return[2,[w]];if(n.has(w)||e.has(w))return[2,[w,c]]}return M.has(w)||n.has(w)?[1,[w]]:void 0}return function(A,Q){let M=A[Q],t=A.length;if(Q+2<=t&&B.has(M)){let w=A[Q+1];if(B.has(w))return[2,[M,w]];if(!l(A,Q))return[0]}let C=w.has(M);if(Q+2<=t&&C&&A[Q+1]==i)return[2,[M,i]];if(Q+3<=t&&(C||E.has(M))&&A[Q+1]==c&&A[Q+2]==i)return[3,C?[M,i]:[M,c,i]];let e=l(A,Q);if(!e)return[0];let n=e[0]+Q,r=e[1].slice(),D=!1;for(;n+1<t&&8205===A[n];){let B=l(A,n+1);if(!B)break;D=!0,n+=1+B[0],r.push(8205,...B[1])}if(D){let A=String.fromCodePoint(...r);if(!o.has(A.replace(/\u{FE0F}/gu,"")))return e}else if(n+2<t&&g.has(A[n])){let B=n+1;for(;B+1<t&&g.has(A[B]);)B++;if(917631==A[B++])return[B-Q,r]}return[n-Q,r]}}(R);function V(A){return A.flatMap((({e:A,v:B})=>A??function(A){let B=[],w=[],E=-1,Q=0;return U(A,(function(A,M){if(-1===E)0==A?E=M:B.push(M);else if(Q>0&&Q>=A)0==A?(B.push(E,...w),w.length=0,E=M):w.push(M),Q=A;else{let t=function(A,B){if(A>=4352&&A<4371&&B>=4449&&B<4470)return F+(588*(A-4352)+28*(B-4449));if(f(A)&&B>4519&&B<4547&&(A-F)%28==0)return A+(B-4519);for(let[w,E]of l)if(2==E.length&&E[0]==A&&E[1]==B){if(x.has(w))break;return w}return-1}(E,M);t>=0?E=t:0==Q&&0==A?(B.push(E),E=M):(w.push(M),Q=A)}})),E>=0&&B.push(E),B.push(...w),B}(B)))}function O(A,B){return new Error(`Disallowed label "${D(String.fromCodePoint(...A))}": ${B}`)}function d(A){const B=45;return o(g(A),h,(A=>{if(J.has(A))return;if(Y.has(A))return[];if(K.has(A))return[A];let B=r(H,A);if(B)return B;throw new Error(`Disallowed character "${D(String.fromCodePoint(A))}"`)})).map((A=>{let w=V(A);if(w.length>=4&&w[2]==B&&w[3]==B&&120==w[0]&&110==w[1]){let B;try{B=function(A){let B=[],w=A.lastIndexOf(45);for(let E=0;E<w;E++){let w=A[E];if(w>=128)throw new Error("expected ASCII");B.push(w)}w++;let E=0,Q=128,M=72;for(;w<A.length;){let t=E;for(let B=1,Q=36;;Q+=36){if(w>=A.length)throw new Error("invalid encoding");let t=A[w++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}E+=t*B;const C=Q<=M?1:Q>=M+26?26:Q-M;if(t<C)break;B*=36-C}let C=B.length+1,e=0==t?E/700|0:E-t>>1;e+=e/C|0;let n=0;for(;e>455;n+=36)e=e/35|0;M=n+36*e/(e+38)|0,Q+=E/C|0,E%=C,B.splice(E++,0,Q)}return B}(w.slice(4)),[A]=o(B,h,(A=>K.has(A)?[A]:[]));let E=V(A);if(B.length!=E.length||!B.every(((A,B)=>A==E[B])))throw new Error("not normalized")}catch(A){throw O(w,`punycode: ${A.message}`)}w=B}let E=A.flatMap((({v:A})=>A??[]));if(w.length>0){if(w.length>=4&&w[2]==B&&w[3]==B)throw O(w,"invalid label extension");if(w[0]==B)throw O(w,"leading hyphen");if(w[w.length-1]==B)throw O(w,"trailing hyphen");if(X.has(w[0]))throw O(w,"leading combining mark");try{!function(A){for(let B=0,w=A.length-1;B<=w;B++){switch(A[B]){case 8204:if(B>0&&T.has(A[B-1]))continue;if(B>0&&B<w){let E=B-1;for(;E>0&&G.has(A[E]);)E--;if(s.has(A[E])){let E=B+1;for(;E<w&&G.has(A[E]);)E++;if(I.has(A[E]))continue}}break;case 8205:if(B>0&&T.has(A[B-1]))continue;break;case 183:if(B>0&&B<w&&108==A[B-1]&&108==A[B+1])continue;break;case 885:if(B<w&&N.has(A[B+1]))continue;break;case 1523:case 1524:if(B>0&&u.has(A[B-1]))continue;break;default:continue}throw new Error(`No context for "${D(String.fromCodePoint(A[B]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>L.has(A))))throw new Error("Disallowed katakana")}(E)}catch(A){throw O(w,A.message)}}return{tokens:A,cps:w,text:E}})).map((A=>String.fromCodePoint(...A.cps))).join(".")}function p(A){return o(g(A),h,(A=>{if(J.has(A))return{};if(K.has(A))return[A];if(Y.has(A))return{i:A};let B=r(H,A);return B?{m:B,u:[A]}:{d:A}}))[0]}export{d as ens_normalize,p as ens_tokenize};
function A(A){let Q=function(A){let Q=0;function w(){return A[Q++]<<8|A[Q++]}let B=w(),E=1,r=[0,1];for(let A=1;A<B;A++)r.push(E+=w());let t=w(),e=Q;Q+=t;let M=0,C=0;function n(){return 0==M&&(C=C<<8|A[Q++],M=8),C>>--M&1}const D=2**31,c=D>>>1,g=D-1;let i=0;for(let A=0;A<31;A++)i=i<<1|n();let o=[],f=0,F=D;for(;;){let A=Math.floor(((i-f+1)*E-1)/F),Q=0,w=B;for(;w-Q>1;){let B=Q+w>>>1;A<r[B]?w=B:Q=B}if(0==Q)break;o.push(Q);let t=f+Math.floor(F*r[Q]/E),e=f+Math.floor(F*r[Q+1]/E)-1;for(;0==((t^e)&c);)i=i<<1&g|n(),t=t<<1&g,e=e<<1&g|1;for(;t&~e&536870912;)i=i&c|i<<1&g>>>1|n(),t=t<<1^c,e=(e^c)<<1|c|1;f=t,F=1+e-t}let x=B-4;return o.map((Q=>{switch(Q-x){case 3:return x+65792+(A[e++]<<16|A[e++]<<8|A[e++]);case 2:return x+256+(A[e++]<<8|A[e++]);case 1:return x+A[e++];default:return Q-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>Q[w++]}function Q(A){return 1&A?~A>>1:A>>1}function w(A,Q){let w=Array(A);for(let B=0,E=-1;B<A;B++)w[B]=E+=1+Q();return w}function B(A,w){let B=Array(A);for(let E=0,r=0;E<A;E++)B[E]=r+=Q(w());return B}function E(A){let Q=new Set(w(A(),A)),B=A(),E=w(B,A),r=function(A,Q){let w=Array(A);for(let B=0;B<A;B++)w[B]=1+Q();return w}(B,A);for(let A=0;A<B;A++)for(let w=0;w<r[A];w++)Q.add(E[A]+w);return Q}function r(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(M(w,A))}for(;;){let w=A()-1;if(w<0)break;Q.push(C(w,A))}return Q.flat().sort(((A,Q)=>A[0]-Q[0]))}function t(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(w)}return Q}function e(A,Q,w,E){let r=Array(A).fill().map((()=>[]));for(let t=0;t<Q;t++)B(A,w).forEach(((A,Q)=>r[Q].push(E?E[A]:A)));return r}function M(A,Q){let w=1+Q(),B=Q(),E=t(Q);return e(E.length,1+A,Q).map(((A,Q)=>[A[0],A.slice(1),E[Q],w,B]))}function C(A,Q){return e(1+Q(),1+A,Q).map((A=>[A[0],A.slice(1)]))}function n(A,Q,w){let B={};for(;;){let E=Q(A);if(0==E.length)break;let r=1+A(),t=Array(r).fill(B);for(let Q of E)t=e(r,Q,A,w).map(((A,Q)=>{let w=t[Q],B=String.fromCodePoint(...A),E=w[B];return E||(E=w[B]={}),E}));t.forEach((A=>A[""]=1))}return B}function D(A,Q){for(let[w,B,E,r,t]of A){let A=Q-w;if(A<0)break;if(E>0){if(A<r*E&&A%r==0){let Q=A/r;return B.map((A=>A+Q*t))}}else if(0==A)return B}}function c(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${Q=A.codePointAt(0),Q.toString(16).toUpperCase().padStart(2,"0")}}`;var Q}))}function g(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function i(A,Q,w){let B=[],E=[],r=[E];function t(){B.length>0&&(E.push({v:B}),B=[])}for(let e=0;e<A.length;e++){if(Q){let[w,B]=Q(A,e);if(w>0){t(),E.push({e:B,u:A.slice(e,e+w)}),e+=w-1;continue}}let M=w(A[e]);Array.isArray(M)?B.push(...M):(t(),M?E.push(M):(E=[],r.push(E)))}return t(),r}let o=A("ABMCuQDBCCEAOQDaACcAcgAZAC0AFwAtABEAJgAOACUEiQNRALQNRycbxexVsVUCJRieAuAASPZlZwBu4QoILXBwcHDwcAJrCe2iQYxsZfepR1yjAE1t7ecAc/kC78r4ABIsL4ogCD5wcHBwcHBwcG1gcLoGoI4BftQRK3l3Foh/XQAm511CBPcaKvdlpVPlcO1wZ2X+AJdEA0IAlgBIDCwB7gXLA4Y49DEG+gL3BKEEogSjBKQEpQSmBKcEqASpBKoErAStBK4EsASyBLP6DwU8AZUFPQGVBT4BlQUJJgUKJgULJgVCBUMFYQYCC0YLRw0pDTkNqQ25DmIOYw5rDmUcwQISHL8CDAsOANBWHOsRICQEgguHdDSa1kwE03+3B57NVy6SAHHFGgHZiLxWOdMGHR2cA1UoEQIHAAE5o9IADjAmDgUPCo0BAgMAhy9T7BAPwR4WNgSLAxJ8FeQvHwDQXgSfEesWchzoGAI3AQFEBQAQPJyVqZ0MzwBNzQBEAGUE9wHThG8DMQFePhmdA1cmA8rNQEkB8S0DABD/VTNpN5IbYx4ASAUfAscGCCuSAFMOuAHvCwThd4QaQgDgAMJSUgQ4CJ4Ad40AqAFWVrBlRRWIDK4D+gCsBUgFFRACAQIGLhmOESYCTRmKHL4CTgI2BXE4cQVDAK1DAvqfodmRADcE8Tj1Hv2R+0wAFKkaoxW5NmMA8P8BnQL6mRk7PwAhUwAzAD4pOTZc5AL7CmUCjtcChw4/xAM2zwKEKALUBXdTBQM2xW0HAQEBAQUBQwCumwL5PwUXpAPs6QTbK4BXUj00AgU6BUkEpgTbBazlABX3SZhOnQL0Ot5ALgpXCclv8XeEBnMQTSfXESkMZQHnAW0OH0wKBSMGbQT7H68ZSw//lc4I1y4PDR8nFS7TgIwkJyq1Bh9MJj0PC39Rmg+LC5cKFTqVgYADUwE/Ir0LDw1rCJ8RJQr7nQ4XEXcHawQHScwA1wczC0MdZxXnJkJi3gs7OakHLRsoC8Em4RNbey4GBRpTBn8BWxsxAQEvGYXiWmNcThBPkQY1C1cj+RTaUFINV0DpeHoaTQdHJdsCw0OiSrlRaB7FIig8bw2YLkVRrggnPDcZgQuzPNBG3UVAEgQ+vz16IntMXgRnsSxhJ70KAQ+3DOt8pAGLCVMJ4wyjE2MRSTf3CGsHS1+XVidHCFNGx2DMBSnRBCUUAwM9BXEJcwdFA+ccXxNgFVsFP4FWAAkDJTcHLuUCwVayAUkF/Q9XIBEQgkgSDxsIzQKXA7UmHQBfFVMASSLNCHWVAJGQClM3Lv0I+WqeI6YDmRUZkxGlB8MOiQfZHGUV8R0TcPpePYY6KNXhCY0BpwnLAZEFFQg7NY2M0iBzZ4WLihjNIJNBcV4uAmMMlxXRRO+HqgK9D50STQFnAaUHaw0zAqkSHxGdFRDHCR2GNjXnNCo6VwSBIbUgQwpZA4FtAAtZJysNKpsB1RKUAz40b3ggZ91g6FYYLwdLMvdBkiIjC8RP/wzOGvMYdFRgGhYH8QQlGyUoHEGJBjED1TVFOn80IATvC5sIvQlxAHsO1QtJCAkYnAqjjQIBY70B6SfLA4nDtQKhwQZpBQc9AJk9uQWrABcATwLZCNUANwEBA4kAawLfB88ASwcBALdzAW8DWRthAVMAFwLBA8UIY/0Bx2ECJVsETfUMRwEpaW58AsPjAoCcZtQGD4oCwAJ7ZwF/VwQ3gHmDA+GjABMRAQ0AfQZFABF5AUfdfP1MABV1AhGhXQD5AS0AN2cHN3MB/wIlEJ8A6QGRC2MJ1OXnAX8AG1sAtQBHEyOdBAIJArsBDwBnALEAIwGFAH8FiwArBgUCgXsRAUNjSl0SiZMB7QNRAWUBPwCrBv2/1/s5CVEEnwgFAhBNFhMC72AH5zMDIxET/0L3Ar4Qh6GSAwJkswJidI0Lf+EvjSA3UgKiKQJoyhEXAmY7Ap+2OE09AmZtAmZYCwSgBLEDA39FA37EDTk4OakHSTm0OlUnHStVAQMjBQJsTwIyaDg8GwJt+QJt4BsAIbwRMWWZJXcRXRUBDwGZARABEwB8NwfKDL8BMD0j9AA/5wJ3YQJ21A8ZAXECeX11AnjsTwmOAA1F4A1HCQJ8cQJ6+hsPCQJ9OwJ9IgWLBVJIMkivDZVWAoGfAoAyAoA3An/gE0mKSo1HG0lK/gLRMwLQ/ktZGQOIgQOIGET3kWQC8tNdNQMD4ANMAExfVwU1AAFNfixN4QKLcQKLCvNNGTkMB08ZJQd1mTfpAo5pAo6OcsknswKPCwKOjqooUeZTZxsvPFMGVLcrApQtApM+ARsATlVQVeFWAjgsTSnHuDMTeJhFbWsGApfRAu/kWFPaAItXApbBApauzgDbWd5aO7N/AG0ClucCloBcdl0DApn9ApmWXPxdOUsCnM059DrPApxIAp/NAp7qDbwAT0FjXEEPCwKeIwKexADnb2FmYiECnwUCoKAB2wKe0VECnoDXJmP6ZFlXXQIn4QImsAKhLQKgfgKjDwKh9gsnAqZhAqYAGwKoMQCvAqgkE2iuaOMANRsbGXtqTmsDAq0VAqzgAq2ZAq00AldPAlYOArITHwAJAx+ACWzJArLvPyUCsxhHbRJtlW16kQMl/wK2jm1xbsIDKXcCuJACuXlHArlcqXBocRMFAr1LArwMcMgDMkMCvrpyNAMzowK+THNUc4ErAsP9AsM2c7R0fWd3dRIDPNkvAzzMAz3xAsWuAsZ5AsZCuwcCyJuDAsh2AsmBAslgAmTPAt4EeKuTeOB5V0wCAxjVDWc0AwJiJhollVZ7PRVexF7tBUMCz50Cz55hfYUABAAlRdEA+N8RAs+lAVsAHANORH59NwLcWQLbvALSgQNSjgNTkQEzA1W+gLsJB3Ey/UgAH5J3J4JOgwUxgwCDvwLa+QLaEIRChHunbgOG1wBhA2RAA4ajiwArAIcC35cC3uodpakC4mHtRgHzYg5ZAfTNAfMEuQLsJScC6aKrMQLrKwLrFgEreQHrKQLuuwLrzpbclzUC7nEDhhKYq3EScdMC8zUAmwOOSAGZxQL3RQORoAOSuQL3ygL6CwL4mJpOmt3tJ2mbUAOdtQL/LAFNAGufTi+f5QMFvwOmnAOnCwED9wMGnKG6ojcFOwMMewLyAHE1DSsBE3MlJUkHMR8hhQ0BQwAlEwOdATnJEZk3AMURX13p4e8ADQG7BQsFAxUFC8sUsUMEawItFy9bIScfBzdTDs8J0R8FDR8Aky8HKYkP9wMpAc8A6QXrAG89n3MBYDEwMTAxLDEwMTAxMDEuMS4xMDEwMTAxMDEsMTAxMDEwMS4xLjEwMTAxMDEwMS4xLjEwMTAxLDEwMTAxLjEwMTAxKjEwMTAxLjEwMTAxMDEuMTAxLjEwMTAxMDEwMTAxLDEsMTAxMDEwMUYxJDFYMSAxJDEkMb8xMDEwMTAxYDEBdQGyMQAuMSgxKDEB51gApwNANjEiMZ8xLjEMMQBeMTAxKDEwMSgxMDEkMTAxKjEwMSoxMDE0MS4xSDE+MSgx0zEyMQA8MQJvApwxBA8DsATDM1IJCRUUCQN3ChkHBjE3KAdTrjE8MTAxJjEANwB2MS4xLjEwMSQxAEUAaDFEMTAxMDEoMSgxAqkzMjcABxgTA50BLAMAITwL9zQPASk80Vnx4+kAFwHDBSZTc3QzBSYAGxSxQzTyMS4xMDEwMbsxADYxMDEwMTAxMDEATQCMMTAxAncCtjEuMS4xMDEwMTAxMDEuMb0xADgxMDEwMS4xOoU6xjEwMS4xMDEwMS4xMDEwMTAxvzEwMZ8A6jEwMSwxMDE6wTsCMS4xMDEAvzjzOw4xMDEwMTAxLjEwMTAxANcBGjEwMS4xMDEwMTAxMDEuMTAxLjEuMTAxMDEUCQD9AWwxMDGzMTAxMDEwMTptOi46KzuoMTAxMDG7MTAxMDEwMTqNO9AxMDEkMTAxuzEwMTAxMDE6oTlKAYgxMDEBZQGeMTAxMDEwMQVhNY810DXfNZg1pzXoNfc1tDXDNgQ2EzXQNd82IDYvNeQ18zY0NkM1+DYHNkg2WTYQNh82YDZvNmA1XxNTNmw2bzZuNvs3OgTCPIk2agIDNw83UjdBNvwTEhNSN7s3YgQ8BOI8mTZWN0s3ngU6v2lTIR9DBkM5GEMSQz0LJ04ZMQ9BCc1anw1agwdVOCMCAOmxAOniGgUDARRbBQAJAxsB1QDvBekAbzWlBPErPgAAKz4AADU+ADMoBDE6NTI7PD0mBj0mAAQ9JgY7JicmAis8Dw4ABwgBKTgBBg0bJDE2AAEBAwIFhwTB9SMm8QElICMmACciI+/vGBfDI9cbAqF2CV/jFP8vECwpDVApDQRKSUQpJi9ONQ0MLktIKSgpDUgAKS5LRCkoKQ0CCUgxNikoMw1CKSQAAwMrJAMlJAADAzEkAAMxNjckERhzThhzThgVGBUYc04Yc04Yc04Yc04YFRgVGHNMGHNOGHNOGHN0e25zbnt6e3pzaHVoc2gXTWgZGHt6ewpZs1S6BQYBFOfLAx8jAbcECwDVBfMAb1sDCgMHCNBEGAPVCxoTzzEPCEl0bfPuvtUITbpVYVJlxVlu6xi8yukTEkTF+I1Bz4RYE53KIyT5DqAze0PwJQnlNxSS1YcpXV+gDEc/C4oNhoy1Ki91qpqCkt0JC6govLXTaVPJD3AwcKH0Xt5qRPRA5eQ6MH8VyPygTIkcSo7sGVE7g/x/2GhuMYWGguyR28kVFce6ihYPUY3W6nXi+/cnjI84LZxeebblXdW5a64/eDHo767XonxSFZGrp5Lgailtk2xq6j5ycujrl9qokkhmb2lwNH56X+6DnQ2pS+S00ufS1dIKqoNMdSmVRVXuUTS8bAdxZpjBZ3GYbUwUd2Gf7NGiMRzjH9sHUU7IFiCwTVgrpwkZsQzAxyaDuftBHFMUbRZ2SqzQoyN8vokQdZdxrQbnZiew5ZTkws54Niofx8wx3MZWJmmaphy/s3augdBb6bMYJK0V8dEraJiQOltirvSWU9Eyc0xfVhTTKdBbeJpnj+5Oj55jy36RY1GRX1MXuQ6d9K5XaR6kBt5bVdj7wQgTqFSwDbmxadyzHfcLdn0lzacx9l+VnyWca+zvr8ky4UAdX7vzBM0CmNNAMhVgcEwdk04NiGGUFPp2qkZQSAh2t+U/OGae4/9NzQa7denjPny3g473yswQVIQLqQCG5RDqpjP4o/xBLx+i2gGQIKO1b6vMN1LATETLBn6qRF2P9SuRORVQeyyMO0zL0+FDTc/n6Sgc/ifEjrUsjHmIfkDkWG7xk4c3bvXSmCUsWxnTx0Z2CedkEM6ZwrfWZ6xaHbLJTtdymk0w0Yx+ozu5gupZB9TNnG9SKZ0QRO30y3vZq/JiCBMyeKXb7KFzP1Sbjhobjrz4ouE7+f4E+1fsM2CNF+XeR/pHiMOSqRfST7NkOyTnKYRJmzyBN7K/Qg/cLptbCWstC7oKhEBw4gE39yLzFy/H2J7LAGHff6chBHUNw8oBFpyoLqlqf0VApfS05bqP4Nk4YrTmNXHol41ujxa/pPxdkQNuev8181lcbbM+CYhQkf6YvG5pOgQUg2rYPiVOMk0IFziGpe/MYh+hx8RvUqkY5fOn/RLoPlBjGK7EF6C7tiirGnaesifWo3UkZ7YKuBzQ/VY9OCL++CeMyjCgyh9t1k3c84D5s93yf+n6q9itHlOXoY42LHOrx9PekKouVooYd4H7oXv7qndtr7Qxtz6ZFiFehmjQ8TUlBN7gLEy4ldleZoGzXnBYw5UCtayPK2O8nbFIe2WuVQudXSzkxihUyv7/d4Uy+JvXxqUGz7eQSo3+YgzSuhz/oM3SJCyNd6unJIwWI0UpPXmgOscRHl52BSX1ChjrJmd8JF+jxfUnAl/Y1Vl7OOycKSdzZnDNIhhjt0DFpwg2+yqNwuJ+1+AtEvvqO/8maMw655nlQ9/4+C4F7sg+ixD9l2v5t1KsuV3TCUGJL1VvM0WWRKKYTlPbR1uX8OJ6/YWm6YwAPFE0ElXSuTwKdEsVA29ur6n6SurYeHbdJKVmImFDAoCvCIZKT73AAguPi9embsaMrFmiIBdsznlKVEpXJhxFDb73WO1JIlG+3jjreBnY53LHLFlOxSB8uamE3mBo9Hi71J/nL88SKUVr9FiUZDM9i1jV8u/M6C7Aa1STDyVwNoCrdPduWFMUSTEW2ORxNk0KEeWAGigBCZ0uQZWEKUXYSLYQzbw6DbiEye/cz9nLqM2iOzOo+pvFqngmBMGV1SZApeEwBcc0OBUlvG/1tuGhVhBxGwYYtqsLkIiQ8FO+A1211X0QJDn6GHLaXEj8rkw9cIYtXrTmwXtyzcmt/eUoAS/CtdaE8DxJlKaf+XRUpSZrUISDsE3T787UDsFAphCizRPUiSeewa+lq53P71ted+SnbPJX4WY4LIgnp2i4Mtsb3RoH8EvwLyl4ZCEks8KEvQnSm5B+J7KC943c8Nuyc/+oXVr3IBLJVsExQqolVUFA4ycod2Y9nhcfbnu8IU82JpIGcaH39i15p4tt5xscCraP5fD1bm8vJetXWZf6ANxe7mIZe9rS00KAVDBJ9Avm4cTq9LAy1KfFMowSMv8zdHHOpQiCaVLP21ysT5RFdVOF72MfyEK2T3l4t9ilzq7txXCE/dBu8OoLT3Ug+2Exxlg1NCuBbSPYtaHpwzbAu9TPVA/QtpIPuxOpgo3ytxtnAZSIGZ/xOKxTDZAx/xlABsvwB3mNpClAUrj70BlyVbEDpCTlfc7+otbovSbzpKU+/cGaPQ5IilEgwwC/+ZG6dumtH25+bRMaLtGa2VkQd+JU1BSRCKJ8VGbzvw0bX6yG3zh9wtFfgLofG2xZPbz9z+HmAjXaC4P4x4d+xmWjCzwKe19s8x5TeasMAeCcS9JPCC3Z2GZTMLbvRmvV/bctlSf5KUT0sNpYTGYJjzwKr8VXzOBmr9QjTGOg6RbCb3bz+Gz//YK6X9htjxHlDo2KX/BamwU0XkWz5T34wdGnawCFAYSJoFvfe6VluZ4Ftz4Q9epbE3cILgM9J6gatoIwrOrf6E9KeqU0MBH/k4DYy7yI52YBoZR/uzoryViLQ0Gcm5sE/z0+0aIiz0VBjF/AN4y27UV1GzGYcBhdCN+DVLKCLG/PSD4aj3C2bNxJF1ulVxu021HdlUIP0vSIcgUXYXxmhyPknJredXe19NvbQCDQVh/L3SzACD+aHRFbvouhbY2dZLE2TI/twwr70Mx9nTZ06kLSEqf4utlWqEtXnqLB5S9h/3Bw8p/AzfT+fzmT6co=");const f=Array(1+o()).fill().map((()=>E(o))),F=r(o),x=E(o),l=44032;function U(A){return A>=l&&A<55204}function S(A,Q){if(A<128)Q(A);else if(U(A)){let w=A-l,B=w%588/28|0,E=w%28;Q(4352+(w/588|0)),Q(4449+B),E>0&&Q(4519+E)}else{let w=D(F,A);if(w)for(let A of w)S(A,Q);else Q(A)}}function L(A,Q){let w=[];function B(){w.sort(((A,Q)=>A[0]-Q[0])).forEach((([A,w])=>Q(A,w))),w.length=0}function E(A){let E=1+f.findIndex((Q=>Q.has(A)));0==E?(B(),Q(E,A)):w.push([E,A])}A.forEach((A=>S(A,E))),B()}let s=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const T=E(s),u=E(s),H=E(s),k=E(s),J=E(s),R=E(s),N=E(s);let I=A("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");const V=E(I),Y=E(I),G=E(I),K=r(I),X=E(I),h=I()&&function(A){const Q=E(A),w=E(A),B=E(A),r=E(A),e=E(A),M=E(A),C=E(A),D=E(A),c=E(A),g=n(A,(A=>Array(A()).fill(1))),i=A()?n(A,t,[...r,...M].sort(((A,Q)=>A-Q))):1,o=65039,f=8205,F=8419;function x(A,Q){if(1===A)return 1;let w=String.fromCodePoint(...Q.filter((A=>A!=o)));return A.hasOwnProperty(w)?A[w]:void 0}function l(A,Q){let w=A[Q];if(!w)return;let B=A[Q+1];if(D.has(w)&&B&&C.has(B))return[2,[w,B]];if(B==o){if(r.has(w))return[2,[w]];if(M.has(w)||e.has(w))return[2,[w,o]]}return r.has(w)||M.has(w)?[1,[w]]:void 0}return function(A,E){let r=A[E],t=String.fromCodePoint(r);if(g.hasOwnProperty(t)){let Q=g[t],w=E+1;for(;;){let B=A[w];if(!B)break;let E=String.fromCodePoint(B);if(!Q.hasOwnProperty(E))break;Q=Q[E],w++}if(Q.hasOwnProperty(""))return[w-E,A.slice(E,w)]}let e=A[E+1];if(Q.has(r)&&Q.has(e))return[2,[r,e]];let M=w.has(r);if(M&&e===F)return[2,[r,F]];if((M||B.has(r))&&e===o&&A[E+2]===F)return[3,M?[r,F]:[r,o,F]];let C=l(A,E);if(!C)return[0];let[n,D]=C,U=E+n;if(e=A[U],e===f){let Q=x(i,D);if(Q){let w,B=[],r=U;for(;A[r++]===f;){let E=l(A,r);if(!E)break;let[t,e]=E;if(Q=x(Q,e),!Q)break;r+=t,1===Q?(D.push(f,...e),w=r):(B.push(f,...e),Q.hasOwnProperty("")&&(D.push(...B),B.length=0,w=r))}if(w)return[w-E,D]}}if(c.has(e)){let Q=U+1;for(;c.has(A[Q]);)Q++;if(917631===A[Q++])return[Q-E,D.concat(A.slice(U,1+Q-U))]}return C}}(I);function d(A){return A.flatMap((({e:A,v:Q})=>A??function(A){let Q=[],w=[],B=-1,E=0;return L(A,(function(A,r){if(-1===B)0==A?B=r:Q.push(r);else if(E>0&&E>=A)0==A?(Q.push(B,...w),w.length=0,B=r):w.push(r),E=A;else{let t=function(A,Q){if(A>=4352&&A<4371&&Q>=4449&&Q<4470)return l+(588*(A-4352)+28*(Q-4449));if(U(A)&&Q>4519&&Q<4547&&(A-l)%28==0)return A+(Q-4519);for(let[w,B]of F)if(2==B.length&&B[0]==A&&B[1]==Q){if(x.has(w))break;return w}return-1}(B,r);t>=0?B=t:0==E&&0==A?(Q.push(B),B=r):(w.push(r),E=A)}})),B>=0&&Q.push(B),Q.push(...w),Q}(Q)))}function p(A,Q){return new Error(`Disallowed label "${c(String.fromCodePoint(...A))}": ${Q}`)}function a(A){const Q=45;return i(g(A),h,(A=>{if(V.has(A))return;if(G.has(A))return[];if(Y.has(A))return[A];let Q=D(K,A);if(Q)return Q;throw new Error(`Disallowed character "${c(String.fromCodePoint(A))}"`)})).map((A=>{let w=d(A);if(w.length>=4&&w[2]==Q&&w[3]==Q&&120==w[0]&&110==w[1])try{let Q=function(A){let Q=[],w=A.lastIndexOf(45);for(let B=0;B<w;B++){let w=A[B];if(w>=128)throw new Error("expected ASCII");Q.push(w)}w++;let B=0,E=128,r=72;for(;w<A.length;){let t=B;for(let Q=1,E=36;;E+=36){if(w>=A.length)throw new Error("invalid encoding");let t=A[w++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}B+=t*Q;const e=E<=r?1:E>=r+26?26:E-r;if(t<e)break;Q*=36-e}let e=Q.length+1,M=0==t?B/700|0:B-t>>1;M+=M/e|0;let C=0;for(;M>455;C+=36)M=M/35|0;r=C+36*M/(M+38)|0,E+=B/e|0,B%=e,Q.splice(B++,0,E)}return Q}(w.slice(4));[A]=i(Q,h,(A=>Y.has(A)?[A]:[]));let B=d(A);if(Q.length!=B.length||!Q.every(((A,Q)=>A==B[Q])))throw new Error("not normalized");w=Q}catch(A){throw p(w,`punycode: ${A.message}`)}let B=A.flatMap((({v:A})=>A??[65039]));if(w.length>0){if(w.length>=4&&w[2]==Q&&w[3]==Q)throw p(w,"invalid label extension");if(w[0]==Q)throw p(w,"leading hyphen");if(w[w.length-1]==Q)throw p(w,"trailing hyphen");if(X.has(w[0]))throw p(w,"leading combining mark");try{!function(A){for(let Q=0,w=A.length-1;Q<=w;Q++){switch(A[Q]){case 8204:if(Q>0&&T.has(A[Q-1]))continue;if(Q>0&&Q<w){let B=Q-1;for(;B>0&&u.has(A[B]);)B--;if(H.has(A[B])){let B=Q+1;for(;B<w&&u.has(A[B]);)B++;if(k.has(A[B]))continue}}break;case 8205:if(Q>0&&T.has(A[Q-1]))continue;break;case 183:if(Q>0&&Q<w&&108==A[Q-1]&&108==A[Q+1])continue;break;case 885:if(Q<w&&J.has(A[Q+1]))continue;break;case 1523:case 1524:if(Q>0&&R.has(A[Q-1]))continue;break;default:continue}throw new Error(`No context for "${c(String.fromCodePoint(A[Q]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>N.has(A))))throw new Error("Disallowed katakana")}(B)}catch(A){throw p(w,A.message)}}return{tokens:A,cps:w,text:B}})).map((A=>String.fromCodePoint(...A.cps))).join(".")}function b(A){return i(g(A),h,(A=>{if(V.has(A))return{};if(Y.has(A))return[A];if(G.has(A))return{i:A};let Q=D(K,A);return Q?{m:Q,u:[A]}:{d:A}}))[0]}export{a as ens_normalize,b as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -578,4 +523,4 @@ }

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -665,5 +610,5 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = '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';
// built: 2021-12-27T05:53:52.428Z
// built: 2022-01-05T07:15:53.378Z
let r = decode_payload(PAYLOAD);

@@ -736,7 +681,6 @@ const STOP = read_member_set(r);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -748,15 +692,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -778,6 +721,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -784,0 +726,0 @@ throw label_error(cps, err.message);

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

function A(A){let B=function(A){let B=0;function t(){return A[B++]<<8|A[B++]}let e=t(),r=1,Q=[0,1];for(let A=1;A<e;A++)Q.push(r+=t());let n=t(),E=B;B+=n;let w=0,C=0;function o(){return 0==w&&(C=C<<8|A[B++],w=8),C>>--w&1}const i=2**31,g=i>>>1,l=i-1;let c=0;for(let A=0;A<31;A++)c=c<<1|o();let f=[],D=0,F=i;for(;;){let A=Math.floor(((c-D+1)*r-1)/F),B=0,t=e;for(;t-B>1;){let e=B+t>>>1;A<Q[e]?t=e:B=e}if(0==B)break;f.push(B);let n=D+Math.floor(F*Q[B]/r),E=D+Math.floor(F*Q[B+1]/r)-1;for(;0==((n^E)&g);)c=c<<1&l|o(),n=n<<1&l,E=E<<1&l|1;for(;n&~E&536870912;)c=c&g|c<<1&l>>>1|o(),n=n<<1^g,E=(E^g)<<1|g|1;D=n,F=1+E-n}let M=e-4;return f.map((B=>{switch(B-M){case 3:return M+65792+(A[E++]<<16|A[E++]<<8|A[E++]);case 2:return M+256+(A[E++]<<8|A[E++]);case 1:return M+A[E++];default:return B-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),t=0;return()=>B[t++]}function B(A){return 1&A?~A>>1:A>>1}function t(A,B){let t=Array(A);for(let e=0,r=-1;e<A;e++)t[e]=r+=1+B();return t}function e(A,t){let e=Array(A);for(let r=0,Q=0;r<A;r++)e[r]=Q+=B(t());return e}function r(A){let B=new Set(t(A(),A)),e=A(),r=t(e,A),Q=function(A,B){let t=Array(A);for(let e=0;e<A;e++)t[e]=1+B();return t}(e,A);for(let A=0;A<e;A++)for(let t=0;t<Q[A];t++)B.add(r[A]+t);return B}function Q(A){let B=[];for(;;){let t=A();if(0==t)break;B.push(t)}return B}function n(A,B,t,r){let Q=Array(A).fill().map((()=>[]));for(let n=0;n<B;n++)e(A,t).forEach(((A,B)=>Q[B].push(r?r[A]:A)));return Q}function E(A,B){let t=1+B(),e=B(),r=Q(B);return n(r.length,1+A,B).map(((A,B)=>[A[0],A.slice(1),r[B],t,e]))}function w(A,B){return n(1+B(),1+A,B).map((A=>[A[0],A.slice(1)]))}function C(A,B){for(let[t,e,r,Q,n]of A){let A=B-t;if(A<0)break;if(r>0){if(A<Q*r&&A%Q==0){let B=A/Q;return e.map((A=>A+B*n))}}else if(0==A)return e}}function o(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${B=A.codePointAt(0),B.toString(16).toUpperCase().padStart(2,"0")}}`;var B}))}function i(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function g(A,B,t){let e=[],r=[],Q=[r];function n(){e.length>0&&(r.push({v:e}),e=[])}for(let E=0;E<A.length;E++){if(B){let[t,e]=B(A,E);if(t>0){n(),r.push({e:e,u:A.slice(E,E+t)}),E+=t-1;continue}}let w=t(A[E]);Array.isArray(w)?e.push(...w):(n(),w?r.push(w):(r=[],Q.push(r)))}return n(),Q}let l=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const c=r(l),f=r(l),D=r(l),F=r(l),M=r(l),k=r(l),I=r(l);let x=A("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");const u=r(x),S=r(x),G=r(x),h=function(A){let B=[];for(;;){let t=A();if(0==t)break;B.push(E(t,A))}for(;;){let t=A()-1;if(t<0)break;B.push(w(t,A))}return B.flat().sort(((A,B)=>A[0]-B[0]))}(x),s=r(x),U=x()&&function(A){const B=r(A),t=r(A),e=r(A),E=r(A),w=r(A),C=r(A),o=r(A),i=r(A),g=r(A),l=function(A,B){let t=[];for(;;){let e=Q(A);if(0==e.length)break;let r=1+A();t.push(...e.reduce(((t,e)=>n(r,e,A,B).map(((A,B)=>t[B].concat(8205,A)))),n(r,e.shift(),A,B)))}return new Set(t.map((A=>String.fromCodePoint(...A))))}(A,[...E,...C].sort(((A,B)=>A-B))),c=65039,f=8419;function D(A,B){let t=A[B],e=A[B+1];if(i.has(t)&&e&&o.has(e))return[2,[t,e]];if(e==c){if(E.has(t))return[2,[t]];if(C.has(t)||w.has(t))return[2,[t,c]]}return E.has(t)||C.has(t)?[1,[t]]:void 0}return function(A,r){let Q=A[r],n=A.length;if(r+2<=n&&B.has(Q)){let t=A[r+1];if(B.has(t))return[2,[Q,t]];if(!D(A,r))return[0]}let E=t.has(Q);if(r+2<=n&&E&&A[r+1]==f)return[2,[Q,f]];if(r+3<=n&&(E||e.has(Q))&&A[r+1]==c&&A[r+2]==f)return[3,E?[Q,f]:[Q,c,f]];let w=D(A,r);if(!w)return[0];let C=w[0]+r,o=w[1].slice(),i=!1;for(;C+1<n&&8205===A[C];){let B=D(A,C+1);if(!B)break;i=!0,C+=1+B[0],o.push(8205,...B[1])}if(i){let A=String.fromCodePoint(...o);if(!l.has(A.replace(/\u{FE0F}/gu,"")))return w}else if(C+2<n&&g.has(A[C])){let B=C+1;for(;B+1<n&&g.has(A[B]);)B++;if(917631==A[B++])return[B-r,o]}return[C-r,o]}}(x);function R(A){return A.flatMap((({e:A,v:B})=>A??function(A,B){return i(String.fromCodePoint(...B).normalize("NFC"))}(0,B)))}function Y(A,B){return new Error(`Disallowed label "${o(String.fromCodePoint(...A))}": ${B}`)}function N(A){const B=45;return g(i(A),U,(A=>{if(u.has(A))return;if(G.has(A))return[];if(S.has(A))return[A];let B=C(h,A);if(B)return B;throw new Error(`Disallowed character "${o(String.fromCodePoint(A))}"`)})).map((A=>{let t=R(A);if(t.length>=4&&t[2]==B&&t[3]==B&&120==t[0]&&110==t[1]){let B;try{B=function(A){let B=[],t=A.lastIndexOf(45);for(let e=0;e<t;e++){let t=A[e];if(t>=128)throw new Error("expected ASCII");B.push(t)}t++;let e=0,r=128,Q=72;for(;t<A.length;){let n=e;for(let B=1,r=36;;r+=36){if(t>=A.length)throw new Error("invalid encoding");let n=A[t++];if(n>=48&&n<=57)n-=22;else{if(!(n>=97&&n<=122))throw new Error(`invalid character ${n}`);n-=97}e+=n*B;const E=r<=Q?1:r>=Q+26?26:r-Q;if(n<E)break;B*=36-E}let E=B.length+1,w=0==n?e/700|0:e-n>>1;w+=w/E|0;let C=0;for(;w>455;C+=36)w=w/35|0;Q=C+36*w/(w+38)|0,r+=e/E|0,e%=E,B.splice(e++,0,r)}return B}(t.slice(4)),[A]=g(B,U,(A=>S.has(A)?[A]:[]));let e=R(A);if(B.length!=e.length||!B.every(((A,B)=>A==e[B])))throw new Error("not normalized")}catch(A){throw Y(t,`punycode: ${A.message}`)}t=B}let e=A.flatMap((({v:A})=>A??[]));if(t.length>0){if(t.length>=4&&t[2]==B&&t[3]==B)throw Y(t,"invalid label extension");if(t[0]==B)throw Y(t,"leading hyphen");if(t[t.length-1]==B)throw Y(t,"trailing hyphen");if(s.has(t[0]))throw Y(t,"leading combining mark");try{!function(A){for(let B=0,t=A.length-1;B<=t;B++){switch(A[B]){case 8204:if(B>0&&c.has(A[B-1]))continue;if(B>0&&B<t){let e=B-1;for(;e>0&&f.has(A[e]);)e--;if(D.has(A[e])){let e=B+1;for(;e<t&&f.has(A[e]);)e++;if(F.has(A[e]))continue}}break;case 8205:if(B>0&&c.has(A[B-1]))continue;break;case 183:if(B>0&&B<t&&108==A[B-1]&&108==A[B+1])continue;break;case 885:if(B<t&&M.has(A[B+1]))continue;break;case 1523:case 1524:if(B>0&&k.has(A[B-1]))continue;break;default:continue}throw new Error(`No context for "${o(String.fromCodePoint(A[B]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>I.has(A))))throw new Error("Disallowed katakana")}(e)}catch(A){throw Y(t,A.message)}}return{tokens:A,cps:t,text:e}})).map((A=>String.fromCodePoint(...A.cps))).join(".")}function X(A){return g(i(A),U,(A=>{if(u.has(A))return{};if(S.has(A))return[A];if(G.has(A))return{i:A};let B=C(h,A);return B?{m:B,u:[A]}:{d:A}}))[0]}export{N as ens_normalize,X as ens_tokenize};
function A(A){let r=function(A){let r=0;function Q(){return A[r++]<<8|A[r++]}let t=Q(),e=1,B=[0,1];for(let A=1;A<t;A++)B.push(e+=Q());let n=Q(),w=r;r+=n;let i=0,E=0;function f(){return 0==i&&(E=E<<8|A[r++],i=8),E>>--i&1}const C=2**31,o=C>>>1,F=C-1;let l=0;for(let A=0;A<31;A++)l=l<<1|f();let c=[],D=0,g=C;for(;;){let A=Math.floor(((l-D+1)*e-1)/g),r=0,Q=t;for(;Q-r>1;){let t=r+Q>>>1;A<B[t]?Q=t:r=t}if(0==r)break;c.push(r);let n=D+Math.floor(g*B[r]/e),w=D+Math.floor(g*B[r+1]/e)-1;for(;0==((n^w)&o);)l=l<<1&F|f(),n=n<<1&F,w=w<<1&F|1;for(;n&~w&536870912;)l=l&o|l<<1&F>>>1|f(),n=n<<1^o,w=(w^o)<<1|o|1;D=n,g=1+w-n}let U=t-4;return c.map((r=>{switch(r-U){case 3:return U+65792+(A[w++]<<16|A[w++]<<8|A[w++]);case 2:return U+256+(A[w++]<<8|A[w++]);case 1:return U+A[w++];default:return r-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),Q=0;return()=>r[Q++]}function r(A){return 1&A?~A>>1:A>>1}function Q(A,r){let Q=Array(A);for(let t=0,e=-1;t<A;t++)Q[t]=e+=1+r();return Q}function t(A,Q){let t=Array(A);for(let e=0,B=0;e<A;e++)t[e]=B+=r(Q());return t}function e(A){let r=new Set(Q(A(),A)),t=A(),e=Q(t,A),B=function(A,r){let Q=Array(A);for(let t=0;t<A;t++)Q[t]=1+r();return Q}(t,A);for(let A=0;A<t;A++)for(let Q=0;Q<B[A];Q++)r.add(e[A]+Q);return r}function B(A){let r=[];for(;;){let Q=A();if(0==Q)break;r.push(Q)}return r}function n(A,r,Q,e){let B=Array(A).fill().map((()=>[]));for(let n=0;n<r;n++)t(A,Q).forEach(((A,r)=>B[r].push(e?e[A]:A)));return B}function w(A,r){let Q=1+r(),t=r(),e=B(r);return n(e.length,1+A,r).map(((A,r)=>[A[0],A.slice(1),e[r],Q,t]))}function i(A,r){return n(1+r(),1+A,r).map((A=>[A[0],A.slice(1)]))}function E(A,r,Q){let t={};for(;;){let e=r(A);if(0==e.length)break;let B=1+A(),w=Array(B).fill(t);for(let r of e)w=n(B,r,A,Q).map(((A,r)=>{let Q=w[r],t=String.fromCodePoint(...A),e=Q[t];return e||(e=Q[t]={}),e}));w.forEach((A=>A[""]=1))}return t}function f(A,r){for(let[Q,t,e,B,n]of A){let A=r-Q;if(A<0)break;if(e>0){if(A<B*e&&A%B==0){let r=A/B;return t.map((A=>A+r*n))}}else if(0==A)return t}}function C(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${r=A.codePointAt(0),r.toString(16).toUpperCase().padStart(2,"0")}}`;var r}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function F(A,r,Q){let t=[],e=[],B=[e];function n(){t.length>0&&(e.push({v:t}),t=[])}for(let w=0;w<A.length;w++){if(r){let[Q,t]=r(A,w);if(Q>0){n(),e.push({e:t,u:A.slice(w,w+Q)}),w+=Q-1;continue}}let i=Q(A[w]);Array.isArray(i)?t.push(...i):(n(),i?e.push(i):(e=[],B.push(e)))}return n(),B}let l=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const c=e(l),D=e(l),g=e(l),U=e(l),u=e(l),s=e(l),M=e(l);let H=A("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");const L=e(H),k=e(H),S=e(H),x=function(A){let r=[];for(;;){let Q=A();if(0==Q)break;r.push(w(Q,A))}for(;;){let Q=A()-1;if(Q<0)break;r.push(i(Q,A))}return r.flat().sort(((A,r)=>A[0]-r[0]))}(H),Y=e(H),I=H()&&function(A){const r=e(A),Q=e(A),t=e(A),n=e(A),w=e(A),i=e(A),f=e(A),C=e(A),o=e(A),F=E(A,(A=>Array(A()).fill(1))),l=A()?E(A,B,[...n,...i].sort(((A,r)=>A-r))):1,c=65039,D=8205,g=8419;function U(A,r){if(1===A)return 1;let Q=String.fromCodePoint(...r.filter((A=>A!=c)));return A.hasOwnProperty(Q)?A[Q]:void 0}function u(A,r){let Q=A[r];if(!Q)return;let t=A[r+1];if(C.has(Q)&&t&&f.has(t))return[2,[Q,t]];if(t==c){if(n.has(Q))return[2,[Q]];if(i.has(Q)||w.has(Q))return[2,[Q,c]]}return n.has(Q)||i.has(Q)?[1,[Q]]:void 0}return function(A,e){let B=A[e],n=String.fromCodePoint(B);if(F.hasOwnProperty(n)){let r=F[n],Q=e+1;for(;;){let t=A[Q];if(!t)break;let e=String.fromCodePoint(t);if(!r.hasOwnProperty(e))break;r=r[e],Q++}if(r.hasOwnProperty(""))return[Q-e,A.slice(e,Q)]}let w=A[e+1];if(r.has(B)&&r.has(w))return[2,[B,w]];let i=Q.has(B);if(i&&w===g)return[2,[B,g]];if((i||t.has(B))&&w===c&&A[e+2]===g)return[3,i?[B,g]:[B,c,g]];let E=u(A,e);if(!E)return[0];let[f,C]=E,s=e+f;if(w=A[s],w===D){let r=U(l,C);if(r){let Q,t=[],B=s;for(;A[B++]===D;){let e=u(A,B);if(!e)break;let[n,w]=e;if(r=U(r,w),!r)break;B+=n,1===r?(C.push(D,...w),Q=B):(t.push(D,...w),r.hasOwnProperty("")&&(C.push(...t),t.length=0,Q=B))}if(Q)return[Q-e,C]}}if(o.has(w)){let r=s+1;for(;o.has(A[r]);)r++;if(917631===A[r++])return[r-e,C.concat(A.slice(s,1+r-s))]}return E}}(H);function R(A){return A.flatMap((({e:A,v:r})=>A??function(A,r){return o(String.fromCodePoint(...r).normalize("NFC"))}(0,r)))}function V(A,r){return new Error(`Disallowed label "${C(String.fromCodePoint(...A))}": ${r}`)}function h(A){const r=45;return F(o(A),I,(A=>{if(L.has(A))return;if(S.has(A))return[];if(k.has(A))return[A];let r=f(x,A);if(r)return r;throw new Error(`Disallowed character "${C(String.fromCodePoint(A))}"`)})).map((A=>{let Q=R(A);if(Q.length>=4&&Q[2]==r&&Q[3]==r&&120==Q[0]&&110==Q[1])try{let r=function(A){let r=[],Q=A.lastIndexOf(45);for(let t=0;t<Q;t++){let Q=A[t];if(Q>=128)throw new Error("expected ASCII");r.push(Q)}Q++;let t=0,e=128,B=72;for(;Q<A.length;){let n=t;for(let r=1,e=36;;e+=36){if(Q>=A.length)throw new Error("invalid encoding");let n=A[Q++];if(n>=48&&n<=57)n-=22;else{if(!(n>=97&&n<=122))throw new Error(`invalid character ${n}`);n-=97}t+=n*r;const w=e<=B?1:e>=B+26?26:e-B;if(n<w)break;r*=36-w}let w=r.length+1,i=0==n?t/700|0:t-n>>1;i+=i/w|0;let E=0;for(;i>455;E+=36)i=i/35|0;B=E+36*i/(i+38)|0,e+=t/w|0,t%=w,r.splice(t++,0,e)}return r}(Q.slice(4));[A]=F(r,I,(A=>k.has(A)?[A]:[]));let t=R(A);if(r.length!=t.length||!r.every(((A,r)=>A==t[r])))throw new Error("not normalized");Q=r}catch(A){throw V(Q,`punycode: ${A.message}`)}let t=A.flatMap((({v:A})=>A??[65039]));if(Q.length>0){if(Q.length>=4&&Q[2]==r&&Q[3]==r)throw V(Q,"invalid label extension");if(Q[0]==r)throw V(Q,"leading hyphen");if(Q[Q.length-1]==r)throw V(Q,"trailing hyphen");if(Y.has(Q[0]))throw V(Q,"leading combining mark");try{!function(A){for(let r=0,Q=A.length-1;r<=Q;r++){switch(A[r]){case 8204:if(r>0&&c.has(A[r-1]))continue;if(r>0&&r<Q){let t=r-1;for(;t>0&&D.has(A[t]);)t--;if(g.has(A[t])){let t=r+1;for(;t<Q&&D.has(A[t]);)t++;if(U.has(A[t]))continue}}break;case 8205:if(r>0&&c.has(A[r-1]))continue;break;case 183:if(r>0&&r<Q&&108==A[r-1]&&108==A[r+1])continue;break;case 885:if(r<Q&&u.has(A[r+1]))continue;break;case 1523:case 1524:if(r>0&&s.has(A[r-1]))continue;break;default:continue}throw new Error(`No context for "${C(String.fromCodePoint(A[r]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>M.has(A))))throw new Error("Disallowed katakana")}(t)}catch(A){throw V(Q,A.message)}}return{tokens:A,cps:Q,text:t}})).map((A=>String.fromCodePoint(...A.cps))).join(".")}function J(A){return F(o(A),I,(A=>{if(L.has(A))return{};if(k.has(A))return[A];if(S.has(A))return{i:A};let r=f(x,A);return r?{m:r,u:[A]}:{d:A}}))[0]}export{h as ens_normalize,J as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -574,3 +519,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -606,8 +551,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -634,4 +576,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -721,5 +663,5 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = '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';
// built: 2021-12-27T05:53:52.428Z
// built: 2022-01-05T07:15:53.378Z
let r = decode_payload(PAYLOAD);

@@ -792,7 +734,6 @@ const STOP = read_member_set(r);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -804,15 +745,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -834,6 +774,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -840,0 +779,0 @@ throw label_error(cps, err.message);

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

function A(A){let B=function(A){let B=0;function e(){return A[B++]<<8|A[B++]}let t=e(),Q=1,r=[0,1];for(let A=1;A<t;A++)r.push(Q+=e());let w=e(),E=B;B+=w;let n=0,C=0;function g(){return 0==n&&(C=C<<8|A[B++],n=8),C>>--n&1}const o=2**31,i=o>>>1,l=o-1;let D=0;for(let A=0;A<31;A++)D=D<<1|g();let c=[],F=0,f=o;for(;;){let A=Math.floor(((D-F+1)*Q-1)/f),B=0,e=t;for(;e-B>1;){let t=B+e>>>1;A<r[t]?e=t:B=t}if(0==B)break;c.push(B);let w=F+Math.floor(f*r[B]/Q),E=F+Math.floor(f*r[B+1]/Q)-1;for(;0==((w^E)&i);)D=D<<1&l|g(),w=w<<1&l,E=E<<1&l|1;for(;w&~E&536870912;)D=D&i|D<<1&l>>>1|g(),w=w<<1^i,E=(E^i)<<1|i|1;F=w,f=1+E-w}let M=t-4;return c.map((B=>{switch(B-M){case 3:return M+65792+(A[E++]<<16|A[E++]<<8|A[E++]);case 2:return M+256+(A[E++]<<8|A[E++]);case 1:return M+A[E++];default:return B-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),e=0;return()=>B[e++]}function B(A){return 1&A?~A>>1:A>>1}function e(A,B){let e=Array(A);for(let t=0,Q=-1;t<A;t++)e[t]=Q+=1+B();return e}function t(A,e){let t=Array(A);for(let Q=0,r=0;Q<A;Q++)t[Q]=r+=B(e());return t}function Q(A){let B=new Set(e(A(),A)),t=A(),Q=e(t,A),r=function(A,B){let e=Array(A);for(let t=0;t<A;t++)e[t]=1+B();return e}(t,A);for(let A=0;A<t;A++)for(let e=0;e<r[A];e++)B.add(Q[A]+e);return B}function r(A){let B=[];for(;;){let e=A();if(0==e)break;B.push(e)}return B}function w(A,B,e,Q){let r=Array(A).fill().map((()=>[]));for(let w=0;w<B;w++)t(A,e).forEach(((A,B)=>r[B].push(Q?Q[A]:A)));return r}function E(A,B){let e=1+B(),t=B(),Q=r(B);return w(Q.length,1+A,B).map(((A,B)=>[A[0],A.slice(1),Q[B],e,t]))}function n(A,B){return w(1+B(),1+A,B).map((A=>[A[0],A.slice(1)]))}function C(A,B){for(let[e,t,Q,r,w]of A){let A=B-e;if(A<0)break;if(Q>0){if(A<r*Q&&A%r==0){let B=A/r;return t.map((A=>A+B*w))}}else if(0==A)return t}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${B=A.codePointAt(0),B.toString(16).toUpperCase().padStart(2,"0")}}`;var B}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function i(A,B,e){let t=[],Q=[],r=[Q];function w(){t.length>0&&(Q.push({v:t}),t=[])}for(let E=0;E<A.length;E++){if(B){let[e,t]=B(A,E);if(e>0){w(),Q.push({e:t,u:A.slice(E,E+e)}),E+=e-1;continue}}let n=e(A[E]);Array.isArray(n)?t.push(...n):(w(),n?Q.push(n):(Q=[],r.push(Q)))}return w(),r}let l=A("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");const D=Q(l),c=Q(l),F=Q(l),f=Q(l),M=Q(l),k=Q(l);function I(A){if(0==A.length)return;let B=A.length-1;if(D.has(A[0])){if(!A.every((A=>D.has(A)||F.has(A)||f.has(A)||M.has(A)||k.has(A))))throw new Error("RTL: disallowed properties");for(;k.has(A[B]);)B--;if(B=A[B],!(D.has(B)||f.has(B)||F.has(B)))throw new Error("RTL: disallowed ending");let e=A.some((A=>f.has(A))),t=A.some((A=>F.has(A)));if(e&&t)throw new Error("RTL: AN+EN")}else{if(!c.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>c.has(A)||f.has(A)||M.has(A)||k.has(A))))throw new Error("LTR: disallowed properties");for(;k.has(A[B]);)B--;if(B=A[B],!c.has(B)&&!f.has(B))throw new Error("LTR: disallowed ending")}}let h=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const u=Q(h),S=Q(h),x=Q(h),s=Q(h),G=Q(h),U=Q(h),R=Q(h);let d=A("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");const X=Q(d),Y=Q(d),H=Q(d),N=function(A){let B=[];for(;;){let e=A();if(0==e)break;B.push(E(e,A))}for(;;){let e=A()-1;if(e<0)break;B.push(n(e,A))}return B.flat().sort(((A,B)=>A[0]-B[0]))}(d),P=Q(d),L=d()&&function(A){const B=Q(A),e=Q(A),t=Q(A),E=Q(A),n=Q(A),C=Q(A),g=Q(A),o=Q(A),i=Q(A),l=function(A,B){let e=[];for(;;){let t=r(A);if(0==t.length)break;let Q=1+A();e.push(...t.reduce(((e,t)=>w(Q,t,A,B).map(((A,B)=>e[B].concat(8205,A)))),w(Q,t.shift(),A,B)))}return new Set(e.map((A=>String.fromCodePoint(...A))))}(A,[...E,...C].sort(((A,B)=>A-B))),D=65039,c=8419;function F(A,B){let e=A[B],t=A[B+1];if(o.has(e)&&t&&g.has(t))return[2,[e,t]];if(t==D){if(E.has(e))return[2,[e]];if(C.has(e)||n.has(e))return[2,[e,D]]}return E.has(e)||C.has(e)?[1,[e]]:void 0}return function(A,Q){let r=A[Q],w=A.length;if(Q+2<=w&&B.has(r)){let e=A[Q+1];if(B.has(e))return[2,[r,e]];if(!F(A,Q))return[0]}let E=e.has(r);if(Q+2<=w&&E&&A[Q+1]==c)return[2,[r,c]];if(Q+3<=w&&(E||t.has(r))&&A[Q+1]==D&&A[Q+2]==c)return[3,E?[r,c]:[r,D,c]];let n=F(A,Q);if(!n)return[0];let C=n[0]+Q,g=n[1].slice(),o=!1;for(;C+1<w&&8205===A[C];){let B=F(A,C+1);if(!B)break;o=!0,C+=1+B[0],g.push(8205,...B[1])}if(o){let A=String.fromCodePoint(...g);if(!l.has(A.replace(/\u{FE0F}/gu,"")))return n}else if(C+2<w&&i.has(A[C])){let B=C+1;for(;B+1<w&&i.has(A[B]);)B++;if(917631==A[B++])return[B-Q,g]}return[C-Q,g]}}(d);function O(A){return A.flatMap((({e:A,v:B})=>A??function(A,B){return o(String.fromCodePoint(...B).normalize("NFC"))}(0,B)))}function J(A,B){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${B}`)}function a(A){const B=45;let e=i(o(A),L,(A=>{if(X.has(A))return;if(H.has(A))return[];if(Y.has(A))return[A];let B=C(N,A);if(B)return B;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let e=O(A);if(e.length>=4&&e[2]==B&&e[3]==B&&120==e[0]&&110==e[1]){let B;try{B=function(A){let B=[],e=A.lastIndexOf(45);for(let t=0;t<e;t++){let e=A[t];if(e>=128)throw new Error("expected ASCII");B.push(e)}e++;let t=0,Q=128,r=72;for(;e<A.length;){let w=t;for(let B=1,Q=36;;Q+=36){if(e>=A.length)throw new Error("invalid encoding");let w=A[e++];if(w>=48&&w<=57)w-=22;else{if(!(w>=97&&w<=122))throw new Error(`invalid character ${w}`);w-=97}t+=w*B;const E=Q<=r?1:Q>=r+26?26:Q-r;if(w<E)break;B*=36-E}let E=B.length+1,n=0==w?t/700|0:t-w>>1;n+=n/E|0;let C=0;for(;n>455;C+=36)n=n/35|0;r=C+36*n/(n+38)|0,Q+=t/E|0,t%=E,B.splice(t++,0,Q)}return B}(e.slice(4)),[A]=i(B,L,(A=>Y.has(A)?[A]:[]));let t=O(A);if(B.length!=t.length||!B.every(((A,B)=>A==t[B])))throw new Error("not normalized")}catch(A){throw J(e,`punycode: ${A.message}`)}e=B}let t=A.flatMap((({v:A})=>A??[]));if(e.length>0){if(e.length>=4&&e[2]==B&&e[3]==B)throw J(e,"invalid label extension");if(e[0]==B)throw J(e,"leading hyphen");if(e[e.length-1]==B)throw J(e,"trailing hyphen");if(P.has(e[0]))throw J(e,"leading combining mark");try{!function(A){for(let B=0,e=A.length-1;B<=e;B++){switch(A[B]){case 8204:if(B>0&&u.has(A[B-1]))continue;if(B>0&&B<e){let t=B-1;for(;t>0&&S.has(A[t]);)t--;if(x.has(A[t])){let t=B+1;for(;t<e&&S.has(A[t]);)t++;if(s.has(A[t]))continue}}break;case 8205:if(B>0&&u.has(A[B-1]))continue;break;case 183:if(B>0&&B<e&&108==A[B-1]&&108==A[B+1])continue;break;case 885:if(B<e&&G.has(A[B+1]))continue;break;case 1523:case 1524:if(B>0&&U.has(A[B-1]))continue;break;default:continue}throw new Error(`No context for "${g(String.fromCodePoint(A[B]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>R.has(A))))throw new Error("Disallowed katakana")}(t)}catch(A){throw J(e,A.message)}}return{tokens:A,cps:e,text:t}}));if(e.some((A=>A.text.some((A=>D.has(A)||F.has(A))))))for(let{text:A,cps:B}of e)try{I(A)}catch(A){throw J(B,`bidi: ${A.message}`)}return e.map((A=>String.fromCodePoint(...A.cps))).join(".")}function V(A){return i(o(A),L,(A=>{if(X.has(A))return{};if(Y.has(A))return[A];if(H.has(A))return{i:A};let B=C(N,A);return B?{m:B,u:[A]}:{d:A}}))[0]}export{a as ens_normalize,V as ens_tokenize};
function A(A){let Q=function(A){let Q=0;function r(){return A[Q++]<<8|A[Q++]}let t=r(),e=1,B=[0,1];for(let A=1;A<t;A++)B.push(e+=r());let w=r(),n=Q;Q+=w;let E=0,C=0;function i(){return 0==E&&(C=C<<8|A[Q++],E=8),C>>--E&1}const F=2**31,o=F>>>1,f=F-1;let g=0;for(let A=0;A<31;A++)g=g<<1|i();let D=[],l=0,c=F;for(;;){let A=Math.floor(((g-l+1)*e-1)/c),Q=0,r=t;for(;r-Q>1;){let t=Q+r>>>1;A<B[t]?r=t:Q=t}if(0==Q)break;D.push(Q);let w=l+Math.floor(c*B[Q]/e),n=l+Math.floor(c*B[Q+1]/e)-1;for(;0==((w^n)&o);)g=g<<1&f|i(),w=w<<1&f,n=n<<1&f|1;for(;w&~n&536870912;)g=g&o|g<<1&f>>>1|i(),w=w<<1^o,n=(n^o)<<1|o|1;l=w,c=1+n-w}let U=t-4;return D.map((Q=>{switch(Q-U){case 3:return U+65792+(A[n++]<<16|A[n++]<<8|A[n++]);case 2:return U+256+(A[n++]<<8|A[n++]);case 1:return U+A[n++];default:return Q-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),r=0;return()=>Q[r++]}function Q(A){return 1&A?~A>>1:A>>1}function r(A,Q){let r=Array(A);for(let t=0,e=-1;t<A;t++)r[t]=e+=1+Q();return r}function t(A,r){let t=Array(A);for(let e=0,B=0;e<A;e++)t[e]=B+=Q(r());return t}function e(A){let Q=new Set(r(A(),A)),t=A(),e=r(t,A),B=function(A,Q){let r=Array(A);for(let t=0;t<A;t++)r[t]=1+Q();return r}(t,A);for(let A=0;A<t;A++)for(let r=0;r<B[A];r++)Q.add(e[A]+r);return Q}function B(A){let Q=[];for(;;){let r=A();if(0==r)break;Q.push(r)}return Q}function w(A,Q,r,e){let B=Array(A).fill().map((()=>[]));for(let w=0;w<Q;w++)t(A,r).forEach(((A,Q)=>B[Q].push(e?e[A]:A)));return B}function n(A,Q){let r=1+Q(),t=Q(),e=B(Q);return w(e.length,1+A,Q).map(((A,Q)=>[A[0],A.slice(1),e[Q],r,t]))}function E(A,Q){return w(1+Q(),1+A,Q).map((A=>[A[0],A.slice(1)]))}function C(A,Q,r){let t={};for(;;){let e=Q(A);if(0==e.length)break;let B=1+A(),n=Array(B).fill(t);for(let Q of e)n=w(B,Q,A,r).map(((A,Q)=>{let r=n[Q],t=String.fromCodePoint(...A),e=r[t];return e||(e=r[t]={}),e}));n.forEach((A=>A[""]=1))}return t}function i(A,Q){for(let[r,t,e,B,w]of A){let A=Q-r;if(A<0)break;if(e>0){if(A<B*e&&A%B==0){let Q=A/B;return t.map((A=>A+Q*w))}}else if(0==A)return t}}function F(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${Q=A.codePointAt(0),Q.toString(16).toUpperCase().padStart(2,"0")}}`;var Q}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function f(A,Q,r){let t=[],e=[],B=[e];function w(){t.length>0&&(e.push({v:t}),t=[])}for(let n=0;n<A.length;n++){if(Q){let[r,t]=Q(A,n);if(r>0){w(),e.push({e:t,u:A.slice(n,n+r)}),n+=r-1;continue}}let E=r(A[n]);Array.isArray(E)?t.push(...E):(w(),E?e.push(E):(e=[],B.push(e)))}return w(),B}let g=A("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");const D=e(g),l=e(g),c=e(g),U=e(g),u=e(g),M=e(g);function s(A){if(0==A.length)return;let Q=A.length-1;if(D.has(A[0])){if(!A.every((A=>D.has(A)||c.has(A)||U.has(A)||u.has(A)||M.has(A))))throw new Error("RTL: disallowed properties");for(;M.has(A[Q]);)Q--;if(Q=A[Q],!(D.has(Q)||U.has(Q)||c.has(Q)))throw new Error("RTL: disallowed ending");if(A.some((A=>U.has(A)))&&A.some((A=>c.has(A))))throw new Error("RTL: AN+EN")}else{if(!l.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>l.has(A)||U.has(A)||u.has(A)||M.has(A))))throw new Error("LTR: disallowed properties");for(;M.has(A[Q]);)Q--;if(Q=A[Q],!l.has(Q)&&!U.has(Q))throw new Error("LTR: disallowed ending")}}let L=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const H=e(L),S=e(L),k=e(L),x=e(L),I=e(L),h=e(L),R=e(L);let Y=A("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");const V=e(Y),d=e(Y),X=e(Y),J=function(A){let Q=[];for(;;){let r=A();if(0==r)break;Q.push(n(r,A))}for(;;){let r=A()-1;if(r<0)break;Q.push(E(r,A))}return Q.flat().sort(((A,Q)=>A[0]-Q[0]))}(Y),N=e(Y),a=Y()&&function(A){const Q=e(A),r=e(A),t=e(A),w=e(A),n=e(A),E=e(A),i=e(A),F=e(A),o=e(A),f=C(A,(A=>Array(A()).fill(1))),g=A()?C(A,B,[...w,...E].sort(((A,Q)=>A-Q))):1,D=65039,l=8205,c=8419;function U(A,Q){if(1===A)return 1;let r=String.fromCodePoint(...Q.filter((A=>A!=D)));return A.hasOwnProperty(r)?A[r]:void 0}function u(A,Q){let r=A[Q];if(!r)return;let t=A[Q+1];if(F.has(r)&&t&&i.has(t))return[2,[r,t]];if(t==D){if(w.has(r))return[2,[r]];if(E.has(r)||n.has(r))return[2,[r,D]]}return w.has(r)||E.has(r)?[1,[r]]:void 0}return function(A,e){let B=A[e],w=String.fromCodePoint(B);if(f.hasOwnProperty(w)){let Q=f[w],r=e+1;for(;;){let t=A[r];if(!t)break;let e=String.fromCodePoint(t);if(!Q.hasOwnProperty(e))break;Q=Q[e],r++}if(Q.hasOwnProperty(""))return[r-e,A.slice(e,r)]}let n=A[e+1];if(Q.has(B)&&Q.has(n))return[2,[B,n]];let E=r.has(B);if(E&&n===c)return[2,[B,c]];if((E||t.has(B))&&n===D&&A[e+2]===c)return[3,E?[B,c]:[B,D,c]];let C=u(A,e);if(!C)return[0];let[i,F]=C,M=e+i;if(n=A[M],n===l){let Q=U(g,F);if(Q){let r,t=[],B=M;for(;A[B++]===l;){let e=u(A,B);if(!e)break;let[w,n]=e;if(Q=U(Q,n),!Q)break;B+=w,1===Q?(F.push(l,...n),r=B):(t.push(l,...n),Q.hasOwnProperty("")&&(F.push(...t),t.length=0,r=B))}if(r)return[r-e,F]}}if(o.has(n)){let Q=M+1;for(;o.has(A[Q]);)Q++;if(917631===A[Q++])return[Q-e,F.concat(A.slice(M,1+Q-M))]}return C}}(Y);function G(A){return A.flatMap((({e:A,v:Q})=>A??function(A,Q){return o(String.fromCodePoint(...Q).normalize("NFC"))}(0,Q)))}function T(A,Q){return new Error(`Disallowed label "${F(String.fromCodePoint(...A))}": ${Q}`)}function p(A){const Q=45;let r=f(o(A),a,(A=>{if(V.has(A))return;if(X.has(A))return[];if(d.has(A))return[A];let Q=i(J,A);if(Q)return Q;throw new Error(`Disallowed character "${F(String.fromCodePoint(A))}"`)})).map((A=>{let r=G(A);if(r.length>=4&&r[2]==Q&&r[3]==Q&&120==r[0]&&110==r[1])try{let Q=function(A){let Q=[],r=A.lastIndexOf(45);for(let t=0;t<r;t++){let r=A[t];if(r>=128)throw new Error("expected ASCII");Q.push(r)}r++;let t=0,e=128,B=72;for(;r<A.length;){let w=t;for(let Q=1,e=36;;e+=36){if(r>=A.length)throw new Error("invalid encoding");let w=A[r++];if(w>=48&&w<=57)w-=22;else{if(!(w>=97&&w<=122))throw new Error(`invalid character ${w}`);w-=97}t+=w*Q;const n=e<=B?1:e>=B+26?26:e-B;if(w<n)break;Q*=36-n}let n=Q.length+1,E=0==w?t/700|0:t-w>>1;E+=E/n|0;let C=0;for(;E>455;C+=36)E=E/35|0;B=C+36*E/(E+38)|0,e+=t/n|0,t%=n,Q.splice(t++,0,e)}return Q}(r.slice(4));[A]=f(Q,a,(A=>d.has(A)?[A]:[]));let t=G(A);if(Q.length!=t.length||!Q.every(((A,Q)=>A==t[Q])))throw new Error("not normalized");r=Q}catch(A){throw T(r,`punycode: ${A.message}`)}let t=A.flatMap((({v:A})=>A??[65039]));if(r.length>0){if(r.length>=4&&r[2]==Q&&r[3]==Q)throw T(r,"invalid label extension");if(r[0]==Q)throw T(r,"leading hyphen");if(r[r.length-1]==Q)throw T(r,"trailing hyphen");if(N.has(r[0]))throw T(r,"leading combining mark");try{!function(A){for(let Q=0,r=A.length-1;Q<=r;Q++){switch(A[Q]){case 8204:if(Q>0&&H.has(A[Q-1]))continue;if(Q>0&&Q<r){let t=Q-1;for(;t>0&&S.has(A[t]);)t--;if(k.has(A[t])){let t=Q+1;for(;t<r&&S.has(A[t]);)t++;if(x.has(A[t]))continue}}break;case 8205:if(Q>0&&H.has(A[Q-1]))continue;break;case 183:if(Q>0&&Q<r&&108==A[Q-1]&&108==A[Q+1])continue;break;case 885:if(Q<r&&I.has(A[Q+1]))continue;break;case 1523:case 1524:if(Q>0&&h.has(A[Q-1]))continue;break;default:continue}throw new Error(`No context for "${F(String.fromCodePoint(A[Q]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>R.has(A))))throw new Error("Disallowed katakana")}(t)}catch(A){throw T(r,A.message)}}return{tokens:A,cps:r,text:t}}));if(r.some((A=>A.text.some((A=>D.has(A)||c.has(A))))))for(let{text:A,cps:Q}of r)try{s(A)}catch(A){throw T(Q,`bidi: ${A.message}`)}return r.map((A=>String.fromCodePoint(...A.cps))).join(".")}function W(A){return f(o(A),a,(A=>{if(V.has(A))return{};if(d.has(A))return[A];if(X.has(A))return{i:A};let Q=i(J,A);return Q?{m:Q,u:[A]}:{d:A}}))[0]}export{p as ens_normalize,W as ens_tokenize};

@@ -176,123 +176,25 @@ function decode_arithmetic(bytes) {

function read_zwj_seqs(next, lookup) {
let seqs = [];
// abc => {a:{b:{c:{'':1}}}}
function read_tree(next, read_lens, lookup) {
let root = {};
while (true) {
let lens = read_zero_terminated_array(next);
let lens = read_lens(next); // should return array of positive integers
if (lens.length == 0) break;
let n = 1 + next();
seqs.push(...lens.reduce(
(m, w) => read_transposed(n, w, next, lookup).map((v, i) => m[i].concat(0x200D, v)),
read_transposed(n, lens.shift(), next, lookup)
));
}
return new Set(seqs.map(v => String.fromCodePoint(...v)));
}
/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
let nodes = Array(n).fill(root);
for (let w of lens) {
nodes = read_transposed(n, w, next, lookup).map((v, i) => {
let parent = nodes[i];
let key = String.fromCodePoint(...v);
let child = parent[key];
if (!child) child = parent[key] = {};
return child;
});
}
m.push(v);
// mark nodes as terminating
nodes.forEach(x => x[''] = 1);
}
return m;
return root;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -443,5 +345,10 @@ for (let [x, ys, n, dx, dy] of table) {

const TAG_SPEC = read_member_set(r);
const ZWJ_SEQS = read_zwj_seqs(r, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b));
//const TAG_SPEC_VALID = read_member_function(r);
// read whitelist for exact sequences
const SEQ_ROOT = read_tree(r, x => Array(x()).fill(1));
// read whitelist for zwj sequences (optional)
const ZWJ_ANY = 1;
const ZWJ_ROOT = r() ? read_tree(r, read_zero_terminated_array, [...STYLE_DROP, ...STYLE_OPT].sort((a, b) => a - b)) : ZWJ_ANY;
const FE0F = 0xFE0F;

@@ -452,5 +359,12 @@ const ZWJ = 0x200D;

function follow_zwj(parent, cps) {
if (parent === ZWJ_ANY) return ZWJ_ANY;
let key = String.fromCodePoint(...cps.filter(cp => cp != FE0F));
if (parent.hasOwnProperty(key)) return parent[key];
}
function find_emoji_chr_mod_pre(cps, pos) {
let cp = cps[pos];
let cp2 = cps[pos+1]; // out of bounds, but unassigned
if (!cp) return;
let cp2 = cps[pos+1];
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier

@@ -477,18 +391,31 @@ if (MODIFIER_BASE.has(cp) && cp2 && MODIFIER.has(cp2)) {

return function(cps, pos) {
let cp = cps[pos];
let len = cps.length;
// note: this doesn't use any bound checks
return function(cps, pos0) {
let cp0 = cps[pos0];
// check whitelist for a match
let seq_key = String.fromCodePoint(cp0);
if (SEQ_ROOT.hasOwnProperty(seq_key)) { // potential match
let node = SEQ_ROOT[seq_key];
let pos = pos0 + 1; // check remaining chars
while (true) {
let cp = cps[pos];
if (!cp) break; // end of string
let key = String.fromCodePoint(cp);
if (!node.hasOwnProperty(key)) break; // no more possibilities
node = node[key];
pos++;
}
if (node.hasOwnProperty('')) { // this was a terminator
return [pos - pos0, cps.slice(pos0, pos)];
}
}
let cp1 = cps[pos0+1];
// [ED-14] emoji flag sequence
// https://www.unicode.org/reports/tr51/#def_emoji_flag_sequence
// A sequence of two Regional Indicator characters, where the corresponding ASCII characters are valid region sequences as specified
if (pos+2 <= len && REGIONAL.has(cp)) {
if (REGIONAL.has(cp0) && REGIONAL.has(cp1)) {
// emoji_flag_sequence := regional_indicator regional_indicator
let cp2 = cps[pos+1];
if (REGIONAL.has(cp2)) {
return [2, [cp, cp2]];
} else if (!find_emoji_chr_mod_pre(cps, pos)) {
// A singleton Regional Indicator character is not a well-formed emoji flag sequence.
//throw new Error(`Invalid Emoji: ${cp}`);
return [0];
}
return [2, [cp0, cp1]];
}

@@ -499,55 +426,73 @@ // [ED-14c] emoji keycap sequence

// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
let keycap_og = KEYCAP_DROP.has(cp);
if (pos+2 <= len && keycap_og && cps[pos+1] == KEYCAP_END) {
return [2, [cp, KEYCAP_END]];
} else if (pos+3 <= len && (keycap_og || KEYCAP_REQ.has(cp)) && cps[pos+1] == FE0F && cps[pos+2] == KEYCAP_END) {
return [3, keycap_og ? [cp, KEYCAP_END] : [cp, FE0F, KEYCAP_END]];
let keycap_og = KEYCAP_DROP.has(cp0);
if (keycap_og && cp1 === KEYCAP_END) {
return [2, [cp0, KEYCAP_END]];
} else if ((keycap_og || KEYCAP_REQ.has(cp0)) && cp1 === FE0F && cps[pos0+2] === KEYCAP_END) {
return [3, keycap_og ? [cp0, KEYCAP_END] : [cp0, FE0F, KEYCAP_END]];
}
// [ED-15] emoji core sequence
// emoji_core_sequence := emoji_character | emoji_presentation_sequence | emoji_keycap_sequence | emoji_modifier_sequence | emoji_flag_sequence
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// emoji_core_sequence := emoji_keycap_sequence | emoji_flag_sequence | chr_mod_pre
// chr_mod_pre = emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
//
// we've handed keycap and flag already
let emoji0 = find_emoji_chr_mod_pre(cps, pos0); // chr_mod_pre?
if (!emoji0) return [0]; // nope
// [ED-17] emoji sequence
// emoji_sequence := emoji_core_sequence | emoji_zwj_sequence | emoji_tag_sequence
let emoji0 = find_emoji_chr_mod_pre(cps, pos);
if (!emoji0) return [0];
let pos2 = emoji0[0] + pos;
let stack = emoji0[1].slice(); // make a copy
let zwj = false;
while (pos2+1 < len && cps[pos2] === ZWJ) {
let emoji = find_emoji_chr_mod_pre(cps, pos2 + 1);
if (!emoji) break;
zwj = true;
pos2 += 1 + emoji[0];
stack.push(ZWJ, ...emoji[1]);
}
if (zwj) {
// the emoji sequence must be a member of ZWJ_SEQS
let s = String.fromCodePoint(...stack);
if (!ZWJ_SEQS.has(s.replace(/\u{FE0F}/gu, ''))) {
//throw new Error(`Invalid Emoji Sequence: ${escape_unicode(s)}`);
return emoji0;
}
} else {
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (pos2+2 < len && TAG_SPEC.has(cps[pos2])) {
let pos3 = pos2 + 1;
while (pos3+1 < len && TAG_SPEC.has(cps[pos3])) pos3++;
if (cps[pos3++] == TAG_END) {
//stack.push(...cps.slice(pos2, pos3 - pos2).filter(TAG_SPEC_VALID));
return [pos3 - pos, stack];
// emoji_sequence := chr_mod_pre | emoji_zwj_sequence | emoji_tag_sequence
let [n0, v0] = emoji0;
let pos1 = pos0 + n0;
cp1 = cps[pos1]; // the character following the emoji
if (cp1 === ZWJ) { // maybe...
// [ED-16] emoji zwj sequence
// emoji_zwj_sequence := emoji_zwj_element ( \x{200d} emoji_zwj_element )+
// [ED-15a] emoji zwj element
// emoji_zwj_element := emoji_character | emoji_presentation_sequence | emoji_modifier_sequence
let node = follow_zwj(ZWJ_ROOT, v0);
if (node) { // whitelist or disabled
let queue = [];
let pos = pos1;
let pos_last;
while (cps[pos++] === ZWJ) { // zwj?
let emoji = find_emoji_chr_mod_pre(cps, pos); // zwj+emoji?
if (!emoji) break;
let [n, v] = emoji;
node = follow_zwj(node, v); // traverse the tree
if (!node) break;
pos += n;
if (node === ZWJ_ANY) {
v0.push(ZWJ, ...v);
pos_last = pos;
} else {
queue.push(ZWJ, ...v); // save chars that dont form a complete sequence yet
if (node.hasOwnProperty('')) { // this is a valid sequence
v0.push(...queue); // drain queue
queue.length = 0;
pos_last = pos;
}
}
}
if (pos_last) {
// if set, v0 correponds to the longest zwj sequence
// that matches the whitelist
return [pos_last - pos0, v0];
}
}
}
return [pos2 - pos, stack];
// [ED-14a] emoji tag sequence (ETS)
// https://www.unicode.org/reports/tr51/#def_emoji_tag_sequence
// A sequence of the following form:
// emoji_tag_sequence := tag_base tag_spec tag_end
// tag_base := emoji_character
// | emoji_modifier_sequence => emoji_modifier_base emoji_modifier
// | emoji_presentation_sequence => emoji_character \x{FE0F}
// tag_spec := [\x{E0020}-\x{E007E}]+
// tag_end := \x{E007F}
if (TAG_SPEC.has(cp1)) {
let pos = pos1 + 1;
while (TAG_SPEC.has(cps[pos])) pos++;
if (cps[pos++] === TAG_END) {
return [pos - pos0, v0.concat(cps.slice(pos1, 1 + pos - pos1))];
}
}
return emoji0;
};

@@ -689,3 +634,3 @@ }

const EN = read_member_set(r$2);
const ECTOB = read_member_set(r$2);
const ECTOB = read_member_set(r$2); // ES, CS, ET, ON, BN
const NSM = read_member_set(r$2);

@@ -721,8 +666,5 @@

// 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
let en = cps.some(cp => EN.has(cp));
let an = cps.some(cp => AN.has(cp));
if (en && an) throw new Error(`RTL: AN+EN`);
if (cps.some(cp => EN.has(cp)) && cps.some(cp => AN.has(cp))) throw new Error(`RTL: AN+EN`);
} else if (L.has(cps[0])) { // LTR
// 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
// 5. In an LTR label, only characters with the Bidi properties L, EN, ES, CS, ET, ON, BN, or NSM are allowed.
if (!cps.every(cp => L.has(cp) || EN.has(cp) || ECTOB.has(cp) || NSM.has(cp))) throw new Error(`LTR: disallowed properties`);

@@ -749,4 +691,4 @@ // 6. end with L or EN .. 0+ NSM

// chunks is a list of textual code-points
// chunks can be empty and contain empty lists
// cps is a list of codepoints
// could be empty
function validate_context(cps) {

@@ -836,5 +778,5 @@ // apply relative checks

var PAYLOAD = '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';
var PAYLOAD = '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';
// built: 2021-12-27T05:53:52.428Z
// built: 2022-01-05T07:15:53.378Z
let r = decode_payload(PAYLOAD);

@@ -907,7 +849,6 @@ const STOP = read_member_set(r);

if (cps[0] == 0x78 && cps[1] == 0x6E) { // "xn--"
let cps_decoded;
try {
// Attempt to convert the rest of the label to Unicode according to Punycode [RFC3492].
// If that conversion fails, record that there was an error, and continue with the next label.
cps_decoded = puny_decode(cps.slice(4));
let cps_decoded = puny_decode(cps.slice(4));
// With either Transitional or Nontransitional Processing, sources already in Punycode are validated without mapping.

@@ -919,15 +860,14 @@ // In particular, Punycode containing Deviation characters, such as href="xn--fu-hia.de" (for fuƟ.de) is not remapped.

if (cps_decoded.length != expected.length || !cps_decoded.every((x, i) => x == expected[i])) throw new Error('not normalized');
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
} catch (err) {
throw label_error(cps, `punycode: ${err.message}`);
}
// Otherwise replace the original label in the string by the results of the conversion.
cps = cps_decoded;
// warning: this could be empty
// warning: this could be "**--"
}
}
// flatten textual part of token to a single list of code-points
// emoji should be invisible to context and bidi rules
// could replace emoji w/a generic character
let text = tokens.flatMap(({v}) => v ?? []);
// emoji are replaced by FE0F (which is NSM)
let text = tokens.flatMap(({v}) => v ?? [0xFE0F]);
if (cps.length > 0) {

@@ -949,6 +889,5 @@ // [Validity] 1.) The label must be in Unicode Normalization Form NFC.

// [Validity] 7.) If CheckJoiners, the label must satisify the ContextJ rules
// this also does ContextO
/*CONTEXT*/
try {
validate_context(text);
validate_context(text); // this also does ContextO
} catch (err) {

@@ -955,0 +894,0 @@ throw label_error(cps, err.message);

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

function A(A){let B=function(A){let B=0;function w(){return A[B++]<<8|A[B++]}let Q=w(),E=1,e=[0,1];for(let A=1;A<Q;A++)e.push(E+=w());let C=w(),t=B;B+=C;let M=0,D=0;function r(){return 0==M&&(D=D<<8|A[B++],M=8),D>>--M&1}const g=2**31,n=g>>>1,o=g-1;let c=0;for(let A=0;A<31;A++)c=c<<1|r();let l=[],x=0,i=g;for(;;){let A=Math.floor(((c-x+1)*E-1)/i),B=0,w=Q;for(;w-B>1;){let Q=B+w>>>1;A<e[Q]?w=Q:B=Q}if(0==B)break;l.push(B);let C=x+Math.floor(i*e[B]/E),t=x+Math.floor(i*e[B+1]/E)-1;for(;0==((C^t)&n);)c=c<<1&o|r(),C=C<<1&o,t=t<<1&o|1;for(;C&~t&536870912;)c=c&n|c<<1&o>>>1|r(),C=C<<1^n,t=(t^n)<<1|n|1;x=C,i=1+t-C}let F=Q-4;return l.map((B=>{switch(B-F){case 3:return F+65792+(A[t++]<<16|A[t++]<<8|A[t++]);case 2:return F+256+(A[t++]<<8|A[t++]);case 1:return F+A[t++];default:return B-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>B[w++]}function B(A){return 1&A?~A>>1:A>>1}function w(A,B){let w=Array(A);for(let Q=0,E=-1;Q<A;Q++)w[Q]=E+=1+B();return w}function Q(A,w){let Q=Array(A);for(let E=0,e=0;E<A;E++)Q[E]=e+=B(w());return Q}function E(A){let B=new Set(w(A(),A)),Q=A(),E=w(Q,A),e=function(A,B){let w=Array(A);for(let Q=0;Q<A;Q++)w[Q]=1+B();return w}(Q,A);for(let A=0;A<Q;A++)for(let w=0;w<e[A];w++)B.add(E[A]+w);return B}function e(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(M(w,A))}for(;;){let w=A()-1;if(w<0)break;B.push(D(w,A))}return B.flat().sort(((A,B)=>A[0]-B[0]))}function C(A){let B=[];for(;;){let w=A();if(0==w)break;B.push(w)}return B}function t(A,B,w,E){let e=Array(A).fill().map((()=>[]));for(let C=0;C<B;C++)Q(A,w).forEach(((A,B)=>e[B].push(E?E[A]:A)));return e}function M(A,B){let w=1+B(),Q=B(),E=C(B);return t(E.length,1+A,B).map(((A,B)=>[A[0],A.slice(1),E[B],w,Q]))}function D(A,B){return t(1+B(),1+A,B).map((A=>[A[0],A.slice(1)]))}function r(A,B){for(let[w,Q,E,e,C]of A){let A=B-w;if(A<0)break;if(E>0){if(A<e*E&&A%e==0){let B=A/e;return Q.map((A=>A+B*C))}}else if(0==A)return Q}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${B=A.codePointAt(0),B.toString(16).toUpperCase().padStart(2,"0")}}`;var B}))}function n(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function o(A,B,w){let Q=[],E=[],e=[E];function C(){Q.length>0&&(E.push({v:Q}),Q=[])}for(let t=0;t<A.length;t++){if(B){let[w,Q]=B(A,t);if(w>0){C(),E.push({e:Q,u:A.slice(t,t+w)}),t+=w-1;continue}}let M=w(A[t]);Array.isArray(M)?Q.push(...M):(C(),M?E.push(M):(E=[],e.push(E)))}return C(),e}let c=A("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");const l=Array(1+c()).fill().map((()=>E(c))),x=e(c),i=E(c),F=44032;function S(A){return A>=F&&A<55204}function f(A,B){if(A<128)B(A);else if(S(A)){let w=A-F,Q=w%588/28|0,E=w%28;B(4352+(w/588|0)),B(4449+Q),E>0&&B(4519+E)}else{let w=r(x,A);if(w)for(let A of w)f(A,B);else B(A)}}function U(A,B){let w=[];function Q(){w.sort(((A,B)=>A[0]-B[0])).forEach((([A,w])=>B(A,w))),w.length=0}function E(A){let E=1+l.findIndex((B=>B.has(A)));0==E?(Q(),B(E,A)):w.push([E,A])}A.forEach((A=>f(A,E))),Q()}let I=A("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");const k=E(I),s=E(I),G=E(I),T=E(I),u=E(I),L=E(I);function R(A){if(0==A.length)return;let B=A.length-1;if(k.has(A[0])){if(!A.every((A=>k.has(A)||G.has(A)||T.has(A)||u.has(A)||L.has(A))))throw new Error("RTL: disallowed properties");for(;L.has(A[B]);)B--;if(B=A[B],!(k.has(B)||T.has(B)||G.has(B)))throw new Error("RTL: disallowed ending");let w=A.some((A=>T.has(A))),Q=A.some((A=>G.has(A)));if(w&&Q)throw new Error("RTL: AN+EN")}else{if(!s.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>s.has(A)||T.has(A)||u.has(A)||L.has(A))))throw new Error("LTR: disallowed properties");for(;L.has(A[B]);)B--;if(B=A[B],!s.has(B)&&!T.has(B))throw new Error("LTR: disallowed ending")}}let N=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const h=E(N),J=E(N),H=E(N),Y=E(N),X=E(N),O=E(N),K=E(N);let d=A("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");const V=E(d),P=E(d),p=E(d),z=e(d),a=E(d),W=d()&&function(A){const B=E(A),w=E(A),Q=E(A),e=E(A),M=E(A),D=E(A),r=E(A),g=E(A),n=E(A),o=function(A,B){let w=[];for(;;){let Q=C(A);if(0==Q.length)break;let E=1+A();w.push(...Q.reduce(((w,Q)=>t(E,Q,A,B).map(((A,B)=>w[B].concat(8205,A)))),t(E,Q.shift(),A,B)))}return new Set(w.map((A=>String.fromCodePoint(...A))))}(A,[...e,...D].sort(((A,B)=>A-B))),c=65039,l=8419;function x(A,B){let w=A[B],Q=A[B+1];if(g.has(w)&&Q&&r.has(Q))return[2,[w,Q]];if(Q==c){if(e.has(w))return[2,[w]];if(D.has(w)||M.has(w))return[2,[w,c]]}return e.has(w)||D.has(w)?[1,[w]]:void 0}return function(A,E){let e=A[E],C=A.length;if(E+2<=C&&B.has(e)){let w=A[E+1];if(B.has(w))return[2,[e,w]];if(!x(A,E))return[0]}let t=w.has(e);if(E+2<=C&&t&&A[E+1]==l)return[2,[e,l]];if(E+3<=C&&(t||Q.has(e))&&A[E+1]==c&&A[E+2]==l)return[3,t?[e,l]:[e,c,l]];let M=x(A,E);if(!M)return[0];let D=M[0]+E,r=M[1].slice(),g=!1;for(;D+1<C&&8205===A[D];){let B=x(A,D+1);if(!B)break;g=!0,D+=1+B[0],r.push(8205,...B[1])}if(g){let A=String.fromCodePoint(...r);if(!o.has(A.replace(/\u{FE0F}/gu,"")))return M}else if(D+2<C&&n.has(A[D])){let B=D+1;for(;B+1<C&&n.has(A[B]);)B++;if(917631==A[B++])return[B-E,r]}return[D-E,r]}}(d);function m(A){return A.flatMap((({e:A,v:B})=>A??function(A){let B=[],w=[],Q=-1,E=0;return U(A,(function(A,e){if(-1===Q)0==A?Q=e:B.push(e);else if(E>0&&E>=A)0==A?(B.push(Q,...w),w.length=0,Q=e):w.push(e),E=A;else{let C=function(A,B){if(A>=4352&&A<4371&&B>=4449&&B<4470)return F+(588*(A-4352)+28*(B-4449));if(S(A)&&B>4519&&B<4547&&(A-F)%28==0)return A+(B-4519);for(let[w,Q]of x)if(2==Q.length&&Q[0]==A&&Q[1]==B){if(i.has(w))break;return w}return-1}(Q,e);C>=0?Q=C:0==E&&0==A?(B.push(Q),Q=e):(w.push(e),E=A)}})),Q>=0&&B.push(Q),B.push(...w),B}(B)))}function y(A,B){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${B}`)}function v(A){const B=45;let w=o(n(A),W,(A=>{if(V.has(A))return;if(p.has(A))return[];if(P.has(A))return[A];let B=r(z,A);if(B)return B;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let w=m(A);if(w.length>=4&&w[2]==B&&w[3]==B&&120==w[0]&&110==w[1]){let B;try{B=function(A){let B=[],w=A.lastIndexOf(45);for(let Q=0;Q<w;Q++){let w=A[Q];if(w>=128)throw new Error("expected ASCII");B.push(w)}w++;let Q=0,E=128,e=72;for(;w<A.length;){let C=Q;for(let B=1,E=36;;E+=36){if(w>=A.length)throw new Error("invalid encoding");let C=A[w++];if(C>=48&&C<=57)C-=22;else{if(!(C>=97&&C<=122))throw new Error(`invalid character ${C}`);C-=97}Q+=C*B;const t=E<=e?1:E>=e+26?26:E-e;if(C<t)break;B*=36-t}let t=B.length+1,M=0==C?Q/700|0:Q-C>>1;M+=M/t|0;let D=0;for(;M>455;D+=36)M=M/35|0;e=D+36*M/(M+38)|0,E+=Q/t|0,Q%=t,B.splice(Q++,0,E)}return B}(w.slice(4)),[A]=o(B,W,(A=>P.has(A)?[A]:[]));let Q=m(A);if(B.length!=Q.length||!B.every(((A,B)=>A==Q[B])))throw new Error("not normalized")}catch(A){throw y(w,`punycode: ${A.message}`)}w=B}let Q=A.flatMap((({v:A})=>A??[]));if(w.length>0){if(w.length>=4&&w[2]==B&&w[3]==B)throw y(w,"invalid label extension");if(w[0]==B)throw y(w,"leading hyphen");if(w[w.length-1]==B)throw y(w,"trailing hyphen");if(a.has(w[0]))throw y(w,"leading combining mark");try{!function(A){for(let B=0,w=A.length-1;B<=w;B++){switch(A[B]){case 8204:if(B>0&&h.has(A[B-1]))continue;if(B>0&&B<w){let Q=B-1;for(;Q>0&&J.has(A[Q]);)Q--;if(H.has(A[Q])){let Q=B+1;for(;Q<w&&J.has(A[Q]);)Q++;if(Y.has(A[Q]))continue}}break;case 8205:if(B>0&&h.has(A[B-1]))continue;break;case 183:if(B>0&&B<w&&108==A[B-1]&&108==A[B+1])continue;break;case 885:if(B<w&&X.has(A[B+1]))continue;break;case 1523:case 1524:if(B>0&&O.has(A[B-1]))continue;break;default:continue}throw new Error(`No context for "${g(String.fromCodePoint(A[B]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>K.has(A))))throw new Error("Disallowed katakana")}(Q)}catch(A){throw y(w,A.message)}}return{tokens:A,cps:w,text:Q}}));if(w.some((A=>A.text.some((A=>k.has(A)||G.has(A))))))for(let{text:A,cps:B}of w)try{R(A)}catch(A){throw y(B,`bidi: ${A.message}`)}return w.map((A=>String.fromCodePoint(...A.cps))).join(".")}function j(A){return o(n(A),W,(A=>{if(V.has(A))return{};if(P.has(A))return[A];if(p.has(A))return{i:A};let B=r(z,A);return B?{m:B,u:[A]}:{d:A}}))[0]}export{v as ens_normalize,j as ens_tokenize};
function A(A){let Q=function(A){let Q=0;function w(){return A[Q++]<<8|A[Q++]}let B=w(),E=1,r=[0,1];for(let A=1;A<B;A++)r.push(E+=w());let t=w(),e=Q;Q+=t;let C=0,M=0;function D(){return 0==C&&(M=M<<8|A[Q++],C=8),M>>--C&1}const n=2**31,g=n>>>1,o=n-1;let F=0;for(let A=0;A<31;A++)F=F<<1|D();let c=[],i=0,x=n;for(;;){let A=Math.floor(((F-i+1)*E-1)/x),Q=0,w=B;for(;w-Q>1;){let B=Q+w>>>1;A<r[B]?w=B:Q=B}if(0==Q)break;c.push(Q);let t=i+Math.floor(x*r[Q]/E),e=i+Math.floor(x*r[Q+1]/E)-1;for(;0==((t^e)&g);)F=F<<1&o|D(),t=t<<1&o,e=e<<1&o|1;for(;t&~e&536870912;)F=F&g|F<<1&o>>>1|D(),t=t<<1^g,e=(e^g)<<1|g|1;i=t,x=1+e-t}let f=B-4;return c.map((Q=>{switch(Q-f){case 3:return f+65792+(A[e++]<<16|A[e++]<<8|A[e++]);case 2:return f+256+(A[e++]<<8|A[e++]);case 1:return f+A[e++];default:return Q-1}}))}(Uint8Array.from(atob(A),(A=>A.charCodeAt(0)))),w=0;return()=>Q[w++]}function Q(A){return 1&A?~A>>1:A>>1}function w(A,Q){let w=Array(A);for(let B=0,E=-1;B<A;B++)w[B]=E+=1+Q();return w}function B(A,w){let B=Array(A);for(let E=0,r=0;E<A;E++)B[E]=r+=Q(w());return B}function E(A){let Q=new Set(w(A(),A)),B=A(),E=w(B,A),r=function(A,Q){let w=Array(A);for(let B=0;B<A;B++)w[B]=1+Q();return w}(B,A);for(let A=0;A<B;A++)for(let w=0;w<r[A];w++)Q.add(E[A]+w);return Q}function r(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(C(w,A))}for(;;){let w=A()-1;if(w<0)break;Q.push(M(w,A))}return Q.flat().sort(((A,Q)=>A[0]-Q[0]))}function t(A){let Q=[];for(;;){let w=A();if(0==w)break;Q.push(w)}return Q}function e(A,Q,w,E){let r=Array(A).fill().map((()=>[]));for(let t=0;t<Q;t++)B(A,w).forEach(((A,Q)=>r[Q].push(E?E[A]:A)));return r}function C(A,Q){let w=1+Q(),B=Q(),E=t(Q);return e(E.length,1+A,Q).map(((A,Q)=>[A[0],A.slice(1),E[Q],w,B]))}function M(A,Q){return e(1+Q(),1+A,Q).map((A=>[A[0],A.slice(1)]))}function D(A,Q,w){let B={};for(;;){let E=Q(A);if(0==E.length)break;let r=1+A(),t=Array(r).fill(B);for(let Q of E)t=e(r,Q,A,w).map(((A,Q)=>{let w=t[Q],B=String.fromCodePoint(...A),E=w[B];return E||(E=w[B]={}),E}));t.forEach((A=>A[""]=1))}return B}function n(A,Q){for(let[w,B,E,r,t]of A){let A=Q-w;if(A<0)break;if(E>0){if(A<r*E&&A%r==0){let Q=A/r;return B.map((A=>A+Q*t))}}else if(0==A)return B}}function g(A){return A.replace(/[^\x20-\x21\x23-\x7E]/gu,(A=>{return`{${Q=A.codePointAt(0),Q.toString(16).toUpperCase().padStart(2,"0")}}`;var Q}))}function o(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function F(A,Q,w){let B=[],E=[],r=[E];function t(){B.length>0&&(E.push({v:B}),B=[])}for(let e=0;e<A.length;e++){if(Q){let[w,B]=Q(A,e);if(w>0){t(),E.push({e:B,u:A.slice(e,e+w)}),e+=w-1;continue}}let C=w(A[e]);Array.isArray(C)?B.push(...C):(t(),C?E.push(C):(E=[],r.push(E)))}return t(),r}let c=A("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");const i=Array(1+c()).fill().map((()=>E(c))),x=r(c),f=E(c),l=44032;function U(A){return A>=l&&A<55204}function S(A,Q){if(A<128)Q(A);else if(U(A)){let w=A-l,B=w%588/28|0,E=w%28;Q(4352+(w/588|0)),Q(4449+B),E>0&&Q(4519+E)}else{let w=n(x,A);if(w)for(let A of w)S(A,Q);else Q(A)}}function L(A,Q){let w=[];function B(){w.sort(((A,Q)=>A[0]-Q[0])).forEach((([A,w])=>Q(A,w))),w.length=0}function E(A){let E=1+i.findIndex((Q=>Q.has(A)));0==E?(B(),Q(E,A)):w.push([E,A])}A.forEach((A=>S(A,E))),B()}let s=A("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");const u=E(s),T=E(s),H=E(s),I=E(s),R=E(s),k=E(s);function J(A){if(0==A.length)return;let Q=A.length-1;if(u.has(A[0])){if(!A.every((A=>u.has(A)||H.has(A)||I.has(A)||R.has(A)||k.has(A))))throw new Error("RTL: disallowed properties");for(;k.has(A[Q]);)Q--;if(Q=A[Q],!(u.has(Q)||I.has(Q)||H.has(Q)))throw new Error("RTL: disallowed ending");if(A.some((A=>I.has(A)))&&A.some((A=>H.has(A))))throw new Error("RTL: AN+EN")}else{if(!T.has(A[0]))throw new Error("unknown direction");if(!A.every((A=>T.has(A)||I.has(A)||R.has(A)||k.has(A))))throw new Error("LTR: disallowed properties");for(;k.has(A[Q]);)Q--;if(Q=A[Q],!T.has(Q)&&!I.has(Q))throw new Error("LTR: disallowed ending")}}let N=A("ABIAAQB6AEAAOAAoACYAHwAiABgAFgAOAAsACwAMAY8AfgADApQhCD9xcXFxcXFxcW5hcbsGoY8Bf9URLHl4F4mAXgAn6F1DBPgbACv4ZqZU5nHucWhm/wCYRQRDAJcASQwtAe8FzAOHOfQyBvsC+GifBANGRZDdAC4CJSwCIi8GFTgCJSwmLyQpNix4JTpMcXV+rQEGGggji3raLA6mlfECCAxleXQSxKUjTyElAibgTiIC0gHv1AZQBLNgQ6JNVpJS9wlNAHRfAXiOWADp7D9QqYZpggAHGwscRNcB8gB0/yE9LHw3ZzYcITAjCk8BAlASEDEWAjEMCTgFzVsHDywSYVMEXgVBSgCFDAQFAckCphERETMDM2uMA88yLkEnJgYTLi6LB7kBPw0nVwsQ4gE7YHTHG0MAJpANNxIqJ15uH1IFEQDKAm4FfB2eATAAeIwtpywlOBhEJwRXng4sHLli4Q5IYl7584oYIwciAIlLCW1CAFQULjWxMQNQS/8RUSEBKAMWiQavLFEEUAT7AK0E1WULFc3RYR4GDAkRFRAxEhEDAQEABx8IASgjAAJR4QwFEpUiGzjHDw5ylPEUpACEAX4jBRwWExgAGwkSAkFoCRgIAA5XWI6qYXEEjBQARAEhDhAt2CcBFwASAEoTJBMCNQUSphsCAEEXDnKU8Q4OA70WBRQQHmoJLG5nEwoIDmNYjqphcQSGGgBJASASEDPYKA9QDyQSCgQMShMjAxQGAzUCcRkkAIsAuokwVSwLAmIGPhgnKACLCRkAEicBAQbgO8+xBTABBxcQJgAEQDf6MASDMBD0HwwoDAsu9wDA6hMtcgxWABIITU3k0SHxGPGp8QBhA+dvYj7xAEEFTY2l8Q8x0RWBKEEG8QtKx0dLASBJGLFQ8QBfWx4AFKXRDyrPFXMcIgEPEjzcS9Wn/KALJxnXU2YJOBWKOmP82gdIgmNcRsDi+p7FBLYbwm9Uzs1RfCbNpY30PNDOtZBhbqPBybOPeWa7oi+ySNuja7E79Fz+oJqkWRGdXLqRl46pfoUDu0uKXTiGuFf3GtJzAXtJmxI3V8am/mpQnjfi99U7ZkojTh6fKYexodlCUm8Nn5tkJXqdPwxaQiU29Pa8nQxhFccS0ZzA2p+XNo3r68FBGjQNasxwtQH/0ELiOQLNuyc0YqOxCPnfFsvASXVP7enrn5p48UHDGS6NU/kYR37WSJ7+CN+nV4NqWlRTc/nQOuWoDD2Cnkn26E21fE+79xMXG2voqdtyef5eUY6MOoAAPIvdUDW+i16JSxe2+srXAYVvzbE8SKhyxzjFf2rMlgMycfXR8nl6/xF97xDwBSNLExVnK4YUGbAMpgGeHD0vHVXsIK20HyDdJQ9a5Uhwta5o+Tw/HpthmalqVX7v90SgUzjZaEahH3JPOhT8k+LFPClF+c5gMeKg");const Y=E(N),V=E(N),G=E(N),h=E(N),X=E(N),d=E(N),K=E(N);let O=A("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");const p=E(O),a=E(O),b=E(O),P=r(O),z=E(O),y=O()&&function(A){const Q=E(A),w=E(A),B=E(A),r=E(A),e=E(A),C=E(A),M=E(A),n=E(A),g=E(A),o=D(A,(A=>Array(A()).fill(1))),F=A()?D(A,t,[...r,...C].sort(((A,Q)=>A-Q))):1,c=65039,i=8205,x=8419;function f(A,Q){if(1===A)return 1;let w=String.fromCodePoint(...Q.filter((A=>A!=c)));return A.hasOwnProperty(w)?A[w]:void 0}function l(A,Q){let w=A[Q];if(!w)return;let B=A[Q+1];if(n.has(w)&&B&&M.has(B))return[2,[w,B]];if(B==c){if(r.has(w))return[2,[w]];if(C.has(w)||e.has(w))return[2,[w,c]]}return r.has(w)||C.has(w)?[1,[w]]:void 0}return function(A,E){let r=A[E],t=String.fromCodePoint(r);if(o.hasOwnProperty(t)){let Q=o[t],w=E+1;for(;;){let B=A[w];if(!B)break;let E=String.fromCodePoint(B);if(!Q.hasOwnProperty(E))break;Q=Q[E],w++}if(Q.hasOwnProperty(""))return[w-E,A.slice(E,w)]}let e=A[E+1];if(Q.has(r)&&Q.has(e))return[2,[r,e]];let C=w.has(r);if(C&&e===x)return[2,[r,x]];if((C||B.has(r))&&e===c&&A[E+2]===x)return[3,C?[r,x]:[r,c,x]];let M=l(A,E);if(!M)return[0];let[D,n]=M,U=E+D;if(e=A[U],e===i){let Q=f(F,n);if(Q){let w,B=[],r=U;for(;A[r++]===i;){let E=l(A,r);if(!E)break;let[t,e]=E;if(Q=f(Q,e),!Q)break;r+=t,1===Q?(n.push(i,...e),w=r):(B.push(i,...e),Q.hasOwnProperty("")&&(n.push(...B),B.length=0,w=r))}if(w)return[w-E,n]}}if(g.has(e)){let Q=U+1;for(;g.has(A[Q]);)Q++;if(917631===A[Q++])return[Q-E,n.concat(A.slice(U,1+Q-U))]}return M}}(O);function Z(A){return A.flatMap((({e:A,v:Q})=>A??function(A){let Q=[],w=[],B=-1,E=0;return L(A,(function(A,r){if(-1===B)0==A?B=r:Q.push(r);else if(E>0&&E>=A)0==A?(Q.push(B,...w),w.length=0,B=r):w.push(r),E=A;else{let t=function(A,Q){if(A>=4352&&A<4371&&Q>=4449&&Q<4470)return l+(588*(A-4352)+28*(Q-4449));if(U(A)&&Q>4519&&Q<4547&&(A-l)%28==0)return A+(Q-4519);for(let[w,B]of x)if(2==B.length&&B[0]==A&&B[1]==Q){if(f.has(w))break;return w}return-1}(B,r);t>=0?B=t:0==E&&0==A?(Q.push(B),B=r):(w.push(r),E=A)}})),B>=0&&Q.push(B),Q.push(...w),Q}(Q)))}function m(A,Q){return new Error(`Disallowed label "${g(String.fromCodePoint(...A))}": ${Q}`)}function W(A){const Q=45;let w=F(o(A),y,(A=>{if(p.has(A))return;if(b.has(A))return[];if(a.has(A))return[A];let Q=n(P,A);if(Q)return Q;throw new Error(`Disallowed character "${g(String.fromCodePoint(A))}"`)})).map((A=>{let w=Z(A);if(w.length>=4&&w[2]==Q&&w[3]==Q&&120==w[0]&&110==w[1])try{let Q=function(A){let Q=[],w=A.lastIndexOf(45);for(let B=0;B<w;B++){let w=A[B];if(w>=128)throw new Error("expected ASCII");Q.push(w)}w++;let B=0,E=128,r=72;for(;w<A.length;){let t=B;for(let Q=1,E=36;;E+=36){if(w>=A.length)throw new Error("invalid encoding");let t=A[w++];if(t>=48&&t<=57)t-=22;else{if(!(t>=97&&t<=122))throw new Error(`invalid character ${t}`);t-=97}B+=t*Q;const e=E<=r?1:E>=r+26?26:E-r;if(t<e)break;Q*=36-e}let e=Q.length+1,C=0==t?B/700|0:B-t>>1;C+=C/e|0;let M=0;for(;C>455;M+=36)C=C/35|0;r=M+36*C/(C+38)|0,E+=B/e|0,B%=e,Q.splice(B++,0,E)}return Q}(w.slice(4));[A]=F(Q,y,(A=>a.has(A)?[A]:[]));let B=Z(A);if(Q.length!=B.length||!Q.every(((A,Q)=>A==B[Q])))throw new Error("not normalized");w=Q}catch(A){throw m(w,`punycode: ${A.message}`)}let B=A.flatMap((({v:A})=>A??[65039]));if(w.length>0){if(w.length>=4&&w[2]==Q&&w[3]==Q)throw m(w,"invalid label extension");if(w[0]==Q)throw m(w,"leading hyphen");if(w[w.length-1]==Q)throw m(w,"trailing hyphen");if(z.has(w[0]))throw m(w,"leading combining mark");try{!function(A){for(let Q=0,w=A.length-1;Q<=w;Q++){switch(A[Q]){case 8204:if(Q>0&&Y.has(A[Q-1]))continue;if(Q>0&&Q<w){let B=Q-1;for(;B>0&&V.has(A[B]);)B--;if(G.has(A[B])){let B=Q+1;for(;B<w&&V.has(A[B]);)B++;if(h.has(A[B]))continue}}break;case 8205:if(Q>0&&Y.has(A[Q-1]))continue;break;case 183:if(Q>0&&Q<w&&108==A[Q-1]&&108==A[Q+1])continue;break;case 885:if(Q<w&&X.has(A[Q+1]))continue;break;case 1523:case 1524:if(Q>0&&d.has(A[Q-1]))continue;break;default:continue}throw new Error(`No context for "${g(String.fromCodePoint(A[Q]))}"`)}if(A.some((A=>A>=1632&&A<=1641))&&A.some((A=>A>=1776&&A<=1785)))throw new Error("Disallowed arabic-indic digit mixture");if(A.includes(12539)&&!A.some((A=>K.has(A))))throw new Error("Disallowed katakana")}(B)}catch(A){throw m(w,A.message)}}return{tokens:A,cps:w,text:B}}));if(w.some((A=>A.text.some((A=>u.has(A)||H.has(A))))))for(let{text:A,cps:Q}of w)try{J(A)}catch(A){throw m(Q,`bidi: ${A.message}`)}return w.map((A=>String.fromCodePoint(...A.cps))).join(".")}function j(A){return F(o(A),y,(A=>{if(p.has(A))return{};if(a.has(A))return[A];if(b.has(A))return{i:A};let Q=n(P,A);return Q?{m:Q,u:[A]}:{d:A}}))[0]}export{W as ens_normalize,j as ens_tokenize};

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

function explode_cp(s) {
if (typeof s != 'string') throw new TypeError(`expected string`);
return [...s].map(c => c.codePointAt(0));
}
function decode_arithmetic(bytes) {

@@ -176,109 +181,2 @@ let pos = 0;

/*
/*
function read_ys_transposed1(n, w, next) {
if (w == 0) return [];
let m = [read_deltas(n, next)];
for (let j = 1; j < w; j++) {
let v = Array(n);
let prev = m[j - 1];
for (let i = 0; i < n; i++) {
v[i] = prev[i] + signed(next());
}
m.push(v);
}
return m;
}
function read_replacement_table1(w, next) {
let n = 1 + next();
let vX = read_ascending(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i])])
}
function read_linear_table1(w, next) {
let dx = 1 + next();
let dy = next();
let n = 1 + next();
let vX = read_ascending(n, next);
let vN = read_counts(n, next);
let mY = read_ys_transposed(n, w, next);
return vX.map((x, i) => [x, mY.map(v => v[i]), vN[i], dx, dy]);
}
export function read_zwj_emoji(next) {
let buckets = [];
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o ZWJ
let p = 1 + next(); // bit positions of zwj
let z = []; // position of zwj
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(0x200D)); // insert zwj
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let b of z) {
let bucket = buckets[b];
if (!bucket) buckets[b] = bucket = [];
bucket.push(...m);
}
}
return buckets;
}
export function read_emoji(next, sep) {
let ret = {};
for (let k = next(); k > 0; k--) {
let n = 1 + next(); // group size
let w = 1 + next(); // group width w/o sep
let p = 1 + next(); // bit positions of sep
let z = []; // position of sep
let m = []; // emoji vectors
for (let i = 0; i < n; i++) m.push([]);
for (let i = 0; i < w; i++) {
if (p & (1 << (i - 1))) {
w++; // increase width
z.push(i); // remember position
m.forEach(v => v.push(sep)); // insert
} else {
read_deltas(n, next).forEach((x, i) => m[i].push(x));
}
}
for (let v of m) {
let bucket = ret[v[0]];
if (!bucket) bucket = ret[v[0]] = [];
bucket.push(v.slice(1));
}
}
for (let bucket of Object.values(ret)) {
bucket.sort((a, b) => b.length - a.length);
}
return ret;
}
export function read_member_function(r) {
let table = read_member_table(r);
return cp => lookup_member(table, cp);
}
export function lookup_member(table, cp) {
for (let [x, n] of table) {
let d = cp - x;
if (d < 0) break;
if (d < n) return true;
}
return false;
}
*/
function lookup_mapped(table, cp) {

@@ -385,3 +283,3 @@ for (let [x, ys, n, dx, dy] of table) {

function nfd$1(cps) {
function nfd$2(cps) {
let ret = [];

@@ -392,3 +290,3 @@ decomposer(cps, (_, cp) => ret.push(cp));

function nfc$1(cps) {
function nfc$2(cps) {
let ret = [];

@@ -433,7 +331,2 @@ let stack = [];

function explode_cp(s) {
if (typeof s != 'string') throw new TypeError(`expected string`);
return [...s].map(c => c.codePointAt(0));
}
// this is a polyfill for normalized forms

@@ -448,5 +341,13 @@ // it exists because the ES6 implementation fails many tests

function nfc(cps) { return norm('NFC', cps); }
function nfd(cps) { return norm('NFD', cps); }
function nfc$1(cps) { return norm('NFC', cps); }
function nfd$1(cps) { return norm('NFD', cps); }
export { nfc$1 as nfc_adraffy, nfc as nfc_default, nfd$1 as nfd_adraffy, nfd as nfd_default };
// these use strings
function nfc(s) {
return String.fromCodePoint(...nfc(explode_cp(s)));
}
function nfd(s) {
return String.fromCodePoint(...nfd(explode_cp(s)));
}
export { nfc, nfc$2 as nfc_adraffy, nfc$1 as nfc_default, nfd, nfd$2 as nfd_adraffy, nfd$1 as nfd_default };

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

function A(A){return 1&A?~A>>1:A>>1}function M(A,M){let w=Array(A);for(let t=0,E=-1;t<A;t++)w[t]=E+=1+M();return w}function w(M,w){let t=Array(M);for(let E=0,Q=0;E<M;E++)t[E]=Q+=A(w());return t}function t(A){let w=new Set(M(A(),A)),t=A(),E=M(t,A),Q=function(A,M){let w=Array(A);for(let t=0;t<A;t++)w[t]=1+M();return w}(t,A);for(let A=0;A<t;A++)for(let M=0;M<Q[A];M++)w.add(E[A]+M);return w}function E(A,M,t,E){let Q=Array(A).fill().map((()=>[]));for(let B=0;B<M;B++)w(A,t).forEach(((A,M)=>Q[M].push(E?E[A]:A)));return Q}function Q(A,M){let w=1+M(),t=M(),Q=function(A){let M=[];for(;;){let w=A();if(0==w)break;M.push(w)}return M}(M);return E(Q.length,1+A,M).map(((A,M)=>[A[0],A.slice(1),Q[M],w,t]))}function B(A,M){return E(1+M(),1+A,M).map((A=>[A[0],A.slice(1)]))}let n=function(A){let M=function(A){let M=0;function w(){return A[M++]<<8|A[M++]}let t=w(),E=1,Q=[0,1];for(let A=1;A<t;A++)Q.push(E+=w());let B=w(),n=M;M+=B;let e=0,D=0;function r(){return 0==e&&(D=D<<8|A[M++],e=8),D>>--e&1}const x=2**31,C=x>>>1,c=x-1;let T=0;for(let A=0;A<31;A++)T=T<<1|r();let o=[],f=0,u=x;for(;;){let A=Math.floor(((T-f+1)*E-1)/u),M=0,w=t;for(;w-M>1;){let t=M+w>>>1;A<Q[t]?w=t:M=t}if(0==M)break;o.push(M);let B=f+Math.floor(u*Q[M]/E),n=f+Math.floor(u*Q[M+1]/E)-1;for(;0==((B^n)&C);)T=T<<1&c|r(),B=B<<1&c,n=n<<1&c|1;for(;B&~n&536870912;)T=T&C|T<<1&c>>>1|r(),B=B<<1^C,n=(n^C)<<1|C|1;f=B,u=1+n-B}let g=t-4;return o.map((M=>{switch(M-g){case 3:return g+65792+(A[n++]<<16|A[n++]<<8|A[n++]);case 2:return g+256+(A[n++]<<8|A[n++]);case 1:return g+A[n++];default:return M-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))),w=0;return()=>M[w++]}();const e=Array(1+n()).fill().map((()=>t(n))),D=function(A){let M=[];for(;;){let w=A();if(0==w)break;M.push(Q(w,A))}for(;;){let w=A()-1;if(w<0)break;M.push(B(w,A))}return M.flat().sort(((A,M)=>A[0]-M[0]))}(n),r=t(n),x=44032;function C(A){return A>=x&&A<55204}function c(A,M){if(A<128)M(A);else if(C(A)){let w=A-x,t=w%588/28|0,E=w%28;M(4352+(w/588|0)),M(4449+t),E>0&&M(4519+E)}else{let w=function(A,M){for(let[w,t,E,Q,B]of A){let A=M-w;if(A<0)break;if(E>0){if(A<Q*E&&A%Q==0){let M=A/Q;return t.map((A=>A+M*B))}}else if(0==A)return t}}(D,A);if(w)for(let A of w)c(A,M);else M(A)}}function T(A,M){let w=[];function t(){w.sort(((A,M)=>A[0]-M[0])).forEach((([A,w])=>M(A,w))),w.length=0}function E(A){let E=1+e.findIndex((M=>M.has(A)));0==E?(t(),M(E,A)):w.push([E,A])}A.forEach((A=>c(A,E))),t()}function o(A){let M=[];return T(A,((A,w)=>M.push(w))),M}function f(A){let M=[],w=[],t=-1,E=0;return T(A,(function(A,Q){if(-1===t)0==A?t=Q:M.push(Q);else if(E>0&&E>=A)0==A?(M.push(t,...w),w.length=0,t=Q):w.push(Q),E=A;else{let B=function(A,M){if(A>=4352&&A<4371&&M>=4449&&M<4470)return x+(588*(A-4352)+28*(M-4449));if(C(A)&&M>4519&&M<4547&&(A-x)%28==0)return A+(M-4519);for(let[w,t]of D)if(2==t.length&&t[0]==A&&t[1]==M){if(r.has(w))break;return w}return-1}(t,Q);B>=0?t=B:0==E&&0==A?(M.push(t),t=Q):(w.push(Q),E=A)}})),t>=0&&M.push(t),M.push(...w),M}function u(A,M){return function(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}(String.fromCodePoint(...M).normalize(A))}function g(A){return u("NFC",A)}function l(A){return u("NFD",A)}export{f as nfc_adraffy,g as nfc_default,o as nfd_adraffy,l as nfd_default};
function A(A){if("string"!=typeof A)throw new TypeError("expected string");return[...A].map((A=>A.codePointAt(0)))}function M(A){return 1&A?~A>>1:A>>1}function w(A,M){let w=Array(A);for(let t=0,E=-1;t<A;t++)w[t]=E+=1+M();return w}function t(A,w){let t=Array(A);for(let E=0,n=0;E<A;E++)t[E]=n+=M(w());return t}function E(A){let M=new Set(w(A(),A)),t=A(),E=w(t,A),n=function(A,M){let w=Array(A);for(let t=0;t<A;t++)w[t]=1+M();return w}(t,A);for(let A=0;A<t;A++)for(let w=0;w<n[A];w++)M.add(E[A]+w);return M}function n(A,M,w,E){let n=Array(A).fill().map((()=>[]));for(let Q=0;Q<M;Q++)t(A,w).forEach(((A,M)=>n[M].push(E?E[A]:A)));return n}function Q(A,M){let w=1+M(),t=M(),E=function(A){let M=[];for(;;){let w=A();if(0==w)break;M.push(w)}return M}(M);return n(E.length,1+A,M).map(((A,M)=>[A[0],A.slice(1),E[M],w,t]))}function B(A,M){return n(1+M(),1+A,M).map((A=>[A[0],A.slice(1)]))}let e=function(A){let M=function(A){let M=0;function w(){return A[M++]<<8|A[M++]}let t=w(),E=1,n=[0,1];for(let A=1;A<t;A++)n.push(E+=w());let Q=w(),B=M;M+=Q;let e=0,r=0;function D(){return 0==e&&(r=r<<8|A[M++],e=8),r>>--e&1}const x=2**31,C=x>>>1,c=x-1;let o=0;for(let A=0;A<31;A++)o=o<<1|D();let T=[],f=0,u=x;for(;;){let A=Math.floor(((o-f+1)*E-1)/u),M=0,w=t;for(;w-M>1;){let t=M+w>>>1;A<n[t]?w=t:M=t}if(0==M)break;T.push(M);let Q=f+Math.floor(u*n[M]/E),B=f+Math.floor(u*n[M+1]/E)-1;for(;0==((Q^B)&C);)o=o<<1&c|D(),Q=Q<<1&c,B=B<<1&c|1;for(;Q&~B&536870912;)o=o&C|o<<1&c>>>1|D(),Q=Q<<1^C,B=(B^C)<<1|C|1;f=Q,u=1+B-Q}let g=t-4;return T.map((M=>{switch(M-g){case 3:return g+65792+(A[B++]<<16|A[B++]<<8|A[B++]);case 2:return g+256+(A[B++]<<8|A[B++]);case 1:return g+A[B++];default:return M-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))),w=0;return()=>M[w++]}();const r=Array(1+e()).fill().map((()=>E(e))),D=function(A){let M=[];for(;;){let w=A();if(0==w)break;M.push(Q(w,A))}for(;;){let w=A()-1;if(w<0)break;M.push(B(w,A))}return M.flat().sort(((A,M)=>A[0]-M[0]))}(e),x=E(e),C=44032;function c(A){return A>=C&&A<55204}function o(A,M){if(A<128)M(A);else if(c(A)){let w=A-C,t=w%588/28|0,E=w%28;M(4352+(w/588|0)),M(4449+t),E>0&&M(4519+E)}else{let w=function(A,M){for(let[w,t,E,n,Q]of A){let A=M-w;if(A<0)break;if(E>0){if(A<n*E&&A%n==0){let M=A/n;return t.map((A=>A+M*Q))}}else if(0==A)return t}}(D,A);if(w)for(let A of w)o(A,M);else M(A)}}function T(A,M){let w=[];function t(){w.sort(((A,M)=>A[0]-M[0])).forEach((([A,w])=>M(A,w))),w.length=0}function E(A){let E=1+r.findIndex((M=>M.has(A)));0==E?(t(),M(E,A)):w.push([E,A])}A.forEach((A=>o(A,E))),t()}function f(A){let M=[];return T(A,((A,w)=>M.push(w))),M}function u(A){let M=[],w=[],t=-1,E=0;return T(A,(function(A,n){if(-1===t)0==A?t=n:M.push(n);else if(E>0&&E>=A)0==A?(M.push(t,...w),w.length=0,t=n):w.push(n),E=A;else{let Q=function(A,M){if(A>=4352&&A<4371&&M>=4449&&M<4470)return C+(588*(A-4352)+28*(M-4449));if(c(A)&&M>4519&&M<4547&&(A-C)%28==0)return A+(M-4519);for(let[w,t]of D)if(2==t.length&&t[0]==A&&t[1]==M){if(x.has(w))break;return w}return-1}(t,n);Q>=0?t=Q:0==E&&0==A?(M.push(t),t=n):(w.push(n),E=A)}})),t>=0&&M.push(t),M.push(...w),M}function g(M,w){return A(String.fromCodePoint(...w).normalize(M))}function S(A){return g("NFC",A)}function l(A){return g("NFD",A)}function i(M){return String.fromCodePoint(...i(A(M)))}function L(M){return String.fromCodePoint(...L(A(M)))}export{i as nfc,u as nfc_adraffy,S as nfc_default,L as nfd,f as nfd_adraffy,l as nfd_default};

@@ -11,2 +11,6 @@ function hex_cp(cp) {

function is_printable_ascii(s) {
return /^[\x21-\x25\x27-\x3B\x3D\x3F-\x7E]+$/gu.test(s);
}
function escape_name_for_html(s, quoter) {

@@ -17,3 +21,3 @@ // printable w/o:

if (!quoter) quoter = quote_cp;
return s.replace(/(?:([\x00-\x20\x7F\xA0\u200C\u200D\s])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,
return s.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u{E0020}-\u{E007F}])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,
(_, a, b) => a ? quoter(a.codePointAt(0)) : `&#${b.codePointAt(0)};`);

@@ -50,18 +54,31 @@ }

let span = document.createElement('span');
span.classList.add('mod');
if (cp == 0x200D) {
span.classList.add('zwj');
span.classList.add('mod', 'zwj');
span.innerHTML = 'ZWJ';
} else if (cp == 0xFE0F) {
span.classList.add('dropped', 'style');
span.classList.add('mod', 'dropped', 'style');
span.innerHTML = 'FE0F';
} else if (cp == 0x20E3) {
span.classList.add('keycap');
span.classList.add('mod', 'keycap');
span.innerHTML = 'Keycap';
} else if (!e.includes(cp)) {
} else if (cp >= 0xE0020 && cp <= 0xE007F) {
cp -= 0xE0000;
let ch = String.fromCodePoint(cp);
if (cp === 0x7F) {
span.classList.add('mod');
span.innerHTML = 'TagEnd';
} else {
span = document.createElement('code');
if (is_printable_ascii(ch)) {
span.innerHTML = ch;
} else {
span.innerHTML = hex_cp(cp);
}
span.classList.add('mod', 'tag');
}
} else if (!e.includes(cp)) {
span = document.createElement('code');
span.classList.add('dropped');
span.classList.add('mod', 'dropped');
span.innerHTML = hex_cp(cp);
} else {
span.classList.remove('mod');
span.classList.add('emoji');

@@ -129,2 +146,3 @@ span.innerHTML = String.fromCodePoint(cp);

border: 2px solid #0a0;
line-break: anywhere;
}

@@ -151,3 +169,2 @@ .tokens .ignored {

font-weight: bold;
background: #ffa;
}

@@ -169,2 +186,5 @@ .tokens .glyph {

}
.tokens .mod.tag {
background: #33f;
}
.tokens .mod.dropped {

@@ -171,0 +191,0 @@ background: #aaa;

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

function t(t){return t.toString(16).toUpperCase().padStart(2,"0")}function n(n){return`{${t(n)}}`}function o(...o){return e=String.fromCodePoint(...o),(d=n=>8204==n?'<span class="mod zwj">ZWNJ</span>':8205==n?'<span class="mod zwj">ZWJ</span>':`<code>${t(n)}</code>`)||(d=n),e.replace(/(?:([\x00-\x20\x7F\xA0\u200C\u200D\s])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((t,n,o)=>n?d(n.codePointAt(0)):`&#${o.codePointAt(0)};`));var e,d}function e(n){return`Hex: 0x${t(n)}\nDec: ${n}`}function d(n,d=!0){let r=document.createElement("div");return r.classList.add("tokens"),r.append(...n.flatMap((({v:n,m:r,i:a,d:p,e:s,u:i})=>{let c;if(s){let n=d?s:i;c=document.createElement("a"),c.href=`https://emojipedia.org/${String.fromCodePoint(...n)}`,c.classList.add("glyph");for(let o of n){let n=document.createElement("span");n.classList.add("mod"),8205==o?(n.classList.add("zwj"),n.innerHTML="ZWJ"):65039==o?(n.classList.add("dropped","style"),n.innerHTML="FE0F"):8419==o?(n.classList.add("keycap"),n.innerHTML="Keycap"):s.includes(o)?(n.classList.remove("mod"),n.classList.add("emoji"),n.innerHTML=String.fromCodePoint(o)):(n=document.createElement("code"),n.classList.add("dropped"),n.innerHTML=t(o)),c.append(n)}}else if(c=document.createElement("div"),n)c.innerHTML=o(...n),c.classList.add("valid");else if(r){c.classList.add("mapped");for(let t of d?r:i){let n=document.createElement("span");n.innerHTML=o(t),n.title=e(t),c.append(n)}}else a?(c=document.createElement("code"),c.innerHTML=t(a),c.title=e(a),c.classList.add("ignored")):void 0!==p?(c.classList.add("disallowed"),c.innerHTML=o(p),c.title=e(p)):(c.classList.add("stop"),c.innerHTML=".");return c}))),r}function r(){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}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #f66;\t\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 {\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\tbackground: #ffa;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 0.5rem;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tbackground: #333;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .mod.dropped {\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens code {\n\t\tfont-size: 90%;\n\t\tpadding: 2px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t\tbackground: rgba(0, 0, 0, .3);\n\t\talign-self: center;\n\t}",document.body.append(t)}export{d as dom_from_tokens,r as use_default_style};
function t(t){return t.toString(16).toUpperCase().padStart(2,"0")}function n(n){return`{${t(n)}}`}function e(...e){return o=String.fromCodePoint(...e),(d=n=>8204==n?'<span class="mod zwj">ZWNJ</span>':8205==n?'<span class="mod zwj">ZWJ</span>':`<code>${t(n)}</code>`)||(d=n),o.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u{E0020}-\u{E007F}])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((t,n,e)=>n?d(n.codePointAt(0)):`&#${e.codePointAt(0)};`));var o,d}function o(n){return`Hex: 0x${t(n)}\nDec: ${n}`}function d(n,d=!0){let r=document.createElement("div");return r.classList.add("tokens"),r.append(...n.flatMap((({v:n,m:r,i:a,d:i,e:s,u:p})=>{let l;if(s){let n=d?s:p;l=document.createElement("a"),l.href=`https://emojipedia.org/${String.fromCodePoint(...n)}`,l.classList.add("glyph");for(let e of n){let n=document.createElement("span");if(8205==e)n.classList.add("mod","zwj"),n.innerHTML="ZWJ";else if(65039==e)n.classList.add("mod","dropped","style"),n.innerHTML="FE0F";else if(8419==e)n.classList.add("mod","keycap"),n.innerHTML="Keycap";else if(e>=917536&&e<=917631){e-=917504;let o=String.fromCodePoint(e);127===e?(n.classList.add("mod"),n.innerHTML="TagEnd"):(n=document.createElement("code"),/^[\x21-\x25\x27-\x3B\x3D\x3F-\x7E]+$/gu.test(o)?n.innerHTML=o:n.innerHTML=t(e),n.classList.add("mod","tag"))}else s.includes(e)?(n.classList.add("emoji"),n.innerHTML=String.fromCodePoint(e)):(n=document.createElement("code"),n.classList.add("mod","dropped"),n.innerHTML=t(e));l.append(n)}}else if(l=document.createElement("div"),n)l.innerHTML=e(...n),l.classList.add("valid");else if(r){l.classList.add("mapped");for(let t of d?r:p){let n=document.createElement("span");n.innerHTML=e(t),n.title=o(t),l.append(n)}}else a?(l=document.createElement("code"),l.innerHTML=t(a),l.title=o(a),l.classList.add("ignored")):void 0!==i?(l.classList.add("disallowed"),l.innerHTML=e(i),l.title=o(i)):(l.classList.add("stop"),l.innerHTML=".");return l}))),r}function r(){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}\n\t.tokens .disallowed {\n\t\tbackground: #f66;\t\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 {\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 .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 0.5rem;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tbackground: #333;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .mod.tag {\n\t\tbackground: #33f;\n\t}\n\t.tokens .mod.dropped {\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens code {\n\t\tfont-size: 90%;\n\t\tpadding: 2px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t\tbackground: rgba(0, 0, 0, .3);\n\t\talign-self: center;\n\t}",document.body.append(t)}export{d as dom_from_tokens,r as use_default_style};
{
"name": "@adraffy/ens-normalize",
"version": "1.3.7",
"version": "1.3.9",
"description": "Compact ES6 Ethereum Name Service (ENS) Name Normalizer",

@@ -9,2 +9,3 @@ "keywords": [

"UTS-46",
"UTS-51",
"IDNA"

@@ -11,0 +12,0 @@ ],

# ens-normalize.js
1-file, 1-function, 1-argument, 0-dependancy Compact ES6 Ethereum Name Service (ENS) Name Normalizer.
* <span style="color:#f88">Currently using experimental ideas!</span>
* Uses Unicode v14.0.0
* Uses [UTS-46](https://unicode.org/reports/tr46/) w/IDNA2008
* Uses [UTS-51](https://unicode.org/reports/tr51/)
* Handles [`ContextJ`](https://datatracker.ietf.org/doc/html/rfc5892#appendix-A.1)
* Handles [`ContextO`](https://datatracker.ietf.org/doc/html/rfc5892#appendix-A.3)
* Uses Unicode v14.0.0 + [UTS-51](https://unicode.org/reports/tr51/) + [UTS-46](https://unicode.org/reports/tr46/) w/IDNA2008
* Handles [`ContextJ/ContextO`](https://github.com/adraffy/ens-normalize.js/blob/main/build/context.js)
* Handles [`CheckBidi`](https://github.com/adraffy/ens-normalize.js/blob/main/build/bidi.js)
* Passes **100%** [IDNATestV2](https://adraffy.github.io/ens-normalize.js/test/report-idna.html) (Using `uts46` Payload)
* Handles [Emoji ZWJ Sequences](https://unicode.org/emoji/charts/emoji-zwj-sequences.html)
* Passes **100%** [Emoji Sequences](https://adraffy.github.io/ens-normalize.js/test/report-emoji.html) (Using `uts51` Payload)
* Passes **100%** [NormalizationTests](https://adraffy.github.io/ens-normalize.js/test/report-nf.html)
* Handles [Punycode](https://datatracker.ietf.org/doc/html/rfc3492), adapted from [mathiasbynens/punycode.js](https://github.com/mathiasbynens/punycode.js)
---
* [Demo: Resolver](https://adraffy.github.io/ens-normalize.js/test/resolver.html)
* [Demo: Display Name](https://adraffy.github.io/ens-normalize.js/test/display.html)
* ~~Passes **100%** [IDNATestV2](https://adraffy.github.io/ens-normalize.js/test/report-idna.html)~~ (This test is IDNA2003)
* Passes **100%** [NormalizationTests](https://adraffy.github.io/ens-normalize.js/test/report-nf.html)
* Dynamic Report: [Emoji](https://adraffy.github.io/ens-normalize.js/test/report-emoji.html)
* Generated Report vs `eth-ens-namehash` [Latest version](https://adraffy.github.io/ens-normalize.js/test/output/ens3.html) ā€¢ [Prior (IDNA2003)](https://adraffy.github.io/ens-normalize.js/test/output/ens.html)

@@ -30,5 +26,4 @@

// single-function one-argument API
// - ens_normalize(string): string
let normalized = ens_normalize('šŸš“ā€ā™‚ļø.eth'); // throws if error
// Primary API: string -> string
let normalized = ens_normalize('šŸš“ā€ā™‚ļø.eth'); // throws
// ready for namehash

@@ -48,4 +43,41 @@

```
---
Instead of exposing an IDNA-like API (`is_valid()`, `get_mapped()`, etc.), this library converts names to tokens for use in providing a better UX for end-users. Also, see: <b>parts.js</b> submodule below.
```JavaScript
// Secondary API: string -> [{tokens,...}]
// turn a name into a list of tokens
let tokens = ens_tokenize('RšŸ’©\uFE0Fa\xAD./'); // never throws
// [
// {m: [0x72], u:[0x52]}, // mapped u:"R" -> m:"r"
// {e: [0x1F4A9], u:[0x1F4A9,0xFE0F]}, // emoji: u:"šŸ’©" -> e:"šŸ’©"
// {v: [0x61]}, // valid: "a"
// {i: 0xAD}, // ignored: \xAD
// {}, // stop: "."
// {d: 0x2F} // disallowed: "/"
// ]
```
### Independent submodules:
```Javascript
// Unicode Normalized Forms
// see: build/nf.js (algo)
// see: build/lib-nf.js (api)
// see: https://adraffy.github.io/ens-normalize.js/test/report-nf.html
import {nfc, nfd} from 'dist/nf.min.js';
// {nfc,nfd}(string): string
// CheckBidi
// see: build/bidi.js (algo)
// see: build/lib-bidi.js (api)
// see: https://www.rfc-editor.org/rfc/rfc5893.html#section-2
import {check_bidi, is_bidi_domain_name} from 'dist/bidi.min.js';
// is_bidi_domain_name(string): bool
// check_bidi(string) throws
// Parts -- generate HTML from parsed tokens
// see: build/lib-parts.js (api)
// see: https://adraffy.github.io/ens-normalize.js/test/report-emoji.html
import {dom_from_tokens, use_default_style} from 'dist/parts.min.js';
// use_default_style(); installs a stylesheet
// DOMNode.append(dom_from_tokens(ens_tokenize('raffy.eth')));
```
## Building

@@ -56,5 +88,5 @@

* Run `node build/unicode.js parse` to parse those files into JSON files.
* Run `node build/build-tables.js` to extract the necessary tables as JSON and generate compressed tables as binary.
* Run `node build/build-tables.js all` to build compressed rule payloads.
* Run `npm run test-source` to test `build/lib-normalize.js`.
* Run `npm run build ` or `node build/build.js` to inject the compressed tables into the source template and create the normal and minified `dist/` files.
* Run `npm run build ` or `node build/build.js all` to inject the compressed tables into the source template and create the readable and minified `dist/` files.
* Run `npm run test-build` to test `dist/ens-normalize.js`.
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