From 532d765215dd2c7b64201588acc28ba7f7e28318 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 29 Jul 2020 21:09:19 +0300 Subject: [PATCH 001/245] Update thepiratebay_-_add_a_sortable_Ratio_column.user.js - fix #10 - changed to fixed 1 decimal length (from round-to-1-decimal digit ), in order the column to align properly - removed the tableSorter require as the result table is now already sortable --- ...ebay_-_add_a_sortable_Ratio_column.user.js | 73 ++++++------------- 1 file changed, 23 insertions(+), 50 deletions(-) diff --git a/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js b/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js index bd0dd85..c89bf97 100644 --- a/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js +++ b/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js @@ -1,72 +1,45 @@ // ==UserScript== // @name thepiratebay - add a sortable Ratio column // @namespace darkred -// @version 1.2.3 -// @date 2018.2.27 +// @date 2020.7.29 // @description Adds a sortable "Ratio" column // @author darkred // @license MIT -// @include https://thepiratebay.org/search/* -// @include https://thepiratebay.org/browse/* -// @include https://thepiratebay.org/recent -// @include https://thepiratebay.org/user/* -// @include https://thepiratebay.org/tv/ -// @include https://thepiratebay.org/music -// @include https://thepiratebay.org/top +// @include https://thepiratebay.org/search.php* // @grant none -// @require https://greasyfork.org/scripts/5844-tablesorter/code/TableSorter.js +// @require https://code.jquery.com/jquery-3.5.1.min.js // This userscript uses jQuery and it's plugin "tablesorter" (forked by Rob Garrison (Mottie)) http://mottie.github.io/tablesorter/docs/index.html // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== +// For the sortable Ratio column function appendColumn() { - var tbl = document.getElementById('searchResult'); - var newCell; - var tr = tbl.tHead.children[0], - th = document.createElement('th'); - // th.innerHTML = 'Ratio'; - th.innerHTML = 'Rt'; - th.className = 'ratioCol'; - tr.appendChild(th); - var m, n, ratio; - for (var i = 1; i < tbl.rows.length; i++) { - m = tbl.rows[i].cells[5].innerHTML; // Retrieve the content of the cell of the SE column and store it to variable m - n = tbl.rows[i].cells[6].innerHTML; // Retrieve the content of the cell of the LE column and store it to variable n - ratio = m/n; - if (m > 0 && n === 0){ - ratio=m; - } - if (m === 0 && n === 0){ + var se, le, ratio; + if (document.querySelector('span.list-header:nth-child(7)')){ + document.querySelector('span.list-header:nth-child(7)').insertAdjacentHTML('afterend', ''); + } + var entries = document.querySelectorAll('li.list-entry > span:nth-child(7)'); + for (var i = 0; i < entries.length; i++) { + se = parseInt(entries[i].previousElementSibling.innerHTML); // Retrieve the content of the cell of the SE column and store it to variable se + le = parseInt(entries[i].innerHTML); // Retrieve the content of the cell of the LE column and store it to variable le + if (se > 0 && le === 0){ + ratio = se; + } else if (se === 0 || le === 0){ ratio = 0; + } else { + ratio = se/le; } - newCell = tbl.rows[i].insertCell(-1); - newCell.innerHTML = (Math.round(100 * ratio) / 100); - + // ratio = (Math.round(10 * ratio) / 10); + ratio = ratio.toFixed(1); + entries[i].insertAdjacentHTML('afterend', '' + ratio + ''); + entries[i].nextSibling.className = 'list-item item-ratio'; + $('.item-ratio').css('text-align', 'right'); } } - - -function sorting() { - $('table#searchResult').tablesorter({ - headers: { - 0: {sorter: false}, - 1: {sorter: false}, - 2: {sorter: false}, - 3: {sorter: false}, - 4: {sorter: false}, - 5: {sorter: false}, - 6: {sorter: false}, - 7: {sorter: true} - } - }); -} -// - appendColumn(); -sorting(); // Select all Ratio values (=all last cells of all rows) an align to the text -$('td:last-child').css('text-align', 'right'); +$('.list-item:last-child').css('text-align', 'right'); From f981e0bfa708e18e31820d084ea67dd22f386ef8 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 01:00:43 +0300 Subject: [PATCH 002/245] GreasyFork Bullshit Filter (and for TS Citrus Gfork) - update for Forum new layout (per https://greasyfork.org/en/scripts/12179-greasyfork-bull-filter/discussions/54989) --- .../GreasyFork_Bullshit_Filter.user.js | 20 +++++++++---------- ...lshit_Filter_-_for_TS_Citrus_Gfork.user.js | 20 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js index abfaad2..7416749 100644 --- a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js +++ b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter // @namespace darkred -// @version 2019.12.5 +// @version 2020.30.7 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter/large.png -// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\d+)|forum\/(discussion\/|profile|messages)).*$/ +// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|discussions|users).*$/ +// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\S+)\/(discussions\/|users|messages)).*$/ // @grant none // This is a modified version of this script (http://userscripts-mirror.org/scripts/show/97145) by kuehlschrank. // Thanks a lot to: @@ -46,7 +46,7 @@ .filter-on, .filter-off { display: block; - width: 97px; + width: 100px; } .filter-switches a { @@ -72,20 +72,20 @@ } `; - const isOnForum = window.location.href.includes('forum'); + const isOnForum = window.location.href.includes('discussions'); const site = {}; if (isOnForum) { - site.css = '.ItemDiscussion.filtered { display: none; } .filter-on, .filter-off { color: black; } ' + commonCss; - site.cssDebug = '.ItemDiscussion.filtered { background-color: khaki; } ' + commonCss; - site.filterStatusLocation = '.PanelColumn'; - site.itemsToCheck = '.ItemDiscussion'; + site.css = '.discussion-list-item.filtered { display: none; } .filter-on, .filter-off { color: black; } ' + commonCss; + site.cssDebug = '.discussion-list-item.filtered { background-color: khaki; } ' + commonCss; + site.filterStatusLocation = '.list-option-groups'; + site.itemsToCheck = '.discussion-list-item'; site.itemType = 'discussions'; site.removeFilter = function(el) { el.classList.remove('filtered'); }; site.applyFilter = function(el, activeFilter) { - const temp = el.children[1].firstElementChild.innerText; + const temp = el.children[1].innerText; if (temp && temp.match(activeFilter)) { el.classList.add('filtered'); return true; diff --git a/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js b/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js index 81fd44c..d05eaa3 100644 --- a/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js +++ b/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter - for TS Citrus Gfork // @namespace darkred -// @version 2019.12.5 +// @version 2020.30.7 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/large.png -// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\d+)|forum\/(discussion\/|profile|messages)).*$/ +// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|discussions|users).*$/ +// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\S+)\/(discussions\/|users|messages)).*$/ // @grant none // @run-at document-idle // This is a modified version of this script (http://userscripts-mirror.org/scripts/show/97145) by kuehlschrank. @@ -73,27 +73,27 @@ } `; - const isOnForum = window.location.href.includes('forum'); + const isOnForum = window.location.href.includes('discussions'); const site = {}; if (isOnForum) { - site.css = '.ItemDiscussion.filtered { display: none; } .filter-on, .filter-off { color: black; } ' + commonCss; - site.cssDebug = '.ItemDiscussion.filtered { background-color: khaki !important; } ' + commonCss; - site.filterStatusLocation = '#Head'; - site.itemsToCheck = '.ItemDiscussion'; + site.css = '.discussion-list-item.filtered { display: none; } .filter-on, .filter-off { color: black; } ' + commonCss; + site.cssDebug = '.discussion-list-item.filtered { background-color: khaki !important; } ' + commonCss; + site.filterStatusLocation = '#main-header'; + site.itemsToCheck = '.discussion-list-item'; site.itemType = 'discussions'; site.removeFilter = function(el) { el.classList.remove('filtered'); }; site.applyFilter = function(el, activeFilter) { - let temp = el.children[1].firstElementChild.innerText; + let temp = el.children[1].innerText; if(temp && temp.match(activeFilter)) { el.classList.add('filtered'); return true; } return false; }; - } else { + } else { // Is in script listings site.css = 'tr.filtered, li.filtered { display: none; } ' + commonCss; site.cssDebug = 'tr.filtered td, li.filtered { background-color: khaki !important; } ' + commonCss; site.filterStatusLocation = '#main-header'; From 7a3758b6c69a57fc1f181d15508c7553b58e813f Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 02:13:41 +0300 Subject: [PATCH 003/245] GreasyFork Bullshit Filter (and for TS Citrus Gfork) Improved the include and exclude regex --- .../GreasyFork_Bullshit_Filter.user.js | 6 +++--- ...GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js index 7416749..016e3f1 100644 --- a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js +++ b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter // @namespace darkred -// @version 2020.30.7 +// @version 2020.30.7.1 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter/large.png -// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|discussions|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\S+)\/(discussions\/|users|messages)).*$/ +// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|discussions|users).*$/ +// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts\/[0-9]+.*|users\/.*\/conversations.*)$/ // @grant none // This is a modified version of this script (http://userscripts-mirror.org/scripts/show/97145) by kuehlschrank. // Thanks a lot to: diff --git a/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js b/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js index d05eaa3..7d5cf1f 100644 --- a/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js +++ b/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter - for TS Citrus Gfork // @namespace darkred -// @version 2020.30.7 +// @version 2020.30.7.1 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork/large.png -// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|forum|discussions|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)((scripts\/\S+)\/(discussions\/|users|messages)).*$/ +// @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|discussions|users).*$/ +// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts\/[0-9]+.*|users\/.*\/conversations.*)$/ // @grant none // @run-at document-idle // This is a modified version of this script (http://userscripts-mirror.org/scripts/show/97145) by kuehlschrank. From 81b3d7fc084ce91be796e67443552dd4eef68048 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 11:08:40 +0300 Subject: [PATCH 004/245] Update GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js Update for the new site redesign --- ...r_button_in_Greasyfork_profile_pages_-_for_Cik.user.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js index dae8ca2..b97a52a 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js @@ -2,7 +2,7 @@ // @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork // @namespace darkred // @license MIT -// @version 2020.7.2 +// @version 2020.7.30 // @description It adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). // @author darkred // @include https://greasyfork.org/*/users/* @@ -27,6 +27,7 @@ if (yourProfileNameElement !== null) { var targetProfileNameElement = document.querySelector('.text-content > h2'); if (targetProfileNameElement !== null) { var targetProfileName = targetProfileNameElement.firstChild.textContent.replace('\'s Profile', ''); // the .firstChild is for mods profile pages, e.g. https://greasyfork.org/en/users/1-jasonbarnabe , https://greasyfork.org/en/users/2159-woxxom + var sendMessageToTargetURL = document.querySelector('#about-user > p > a').href; } if (window.location.href.indexOf('users') !== -1 // if current URL is a profile page && yourProfileName !== targetProfileName) { // ... and this profile page is not yours @@ -39,9 +40,10 @@ if (window.location.href.indexOf('users') !== -1 // if current URL is a profile a.setAttribute('src', 'data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAATABcDAREAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAICf/EACgQAAEEAQMCBQUAAAAAAAAAAAECAwQFEQAGEgcIEyEiMUEUNmGl4//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDof1i6ryOlkCHIi0YvlvJdccjpl+A4203x5OAcFFQHMZx7A59skAMDvnyfsj9t/DQPnS/fUnqDtxyxmVQpJbb5YdgGT462jxSoBZ4p4qIWDxIyMjPn5ADTuZg3ibzZN1R0c+7kVf1q0twoy3gh1QZDZcCQfTkFWD5K4lPzoAqDXblqLJq7r+kVoxuFDiXA85AkOQ0KBBKm43h+lR/KylOfSkYGA0f2x0s6m2demdVz6gzLt+W1Gsm1oeCFNM+/IAqwQpPL5450DBoLQWg//9k='); a.id = 'pmButton'; a.title = 'Send PM to ' + targetProfileName; - var lang = String(window.location).match(/^https:\/\/greasyfork\.org\/([a-zA-Z-]+)\/.*$/)[1]; + // var lang = String(window.location).match(/^https:\/\/greasyfork\.org\/([a-zA-Z-]+)\/.*$/)[1]; document.getElementById('pmButton').addEventListener('click', function() { - window.open('https://greasyfork.org/' + lang + '/forum/messages/add', '_self'); + // window.open('https://greasyfork.org/' + lang + '/forum/messages/add', '_self'); + window.open(sendMessageToTargetURL); }); } From dbd2932e3b6eb911d03da2abbbee76ea1e77cdaf Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 13:27:33 +0300 Subject: [PATCH 005/245] Update thepiratebay_helper.user.js - fixed appendColumn() (removed no longer needed tableSorter require) - fixed script Settings creation position - fixed convertDates() (now the site's only date format) is YYYY-MM-DD) --- .../thepiratebay_helper.user.js | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/thepiratebay_helper/thepiratebay_helper.user.js b/thepiratebay_helper/thepiratebay_helper.user.js index 5b2b0a1..ad78c2b 100644 --- a/thepiratebay_helper/thepiratebay_helper.user.js +++ b/thepiratebay_helper/thepiratebay_helper.user.js @@ -1,8 +1,8 @@ // ==UserScript== // @name thepiratebay helper // @namespace darkred -// @version 0.9.6n -// @date 2018.5.4 +// @version 0.9.7 +// @date 2020.7.30 // @description Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether // @authors emptyparad0x, darkred // @license MIT @@ -12,7 +12,6 @@ // @require https://greasyfork.org/scripts/28536-gm-config/code/GM_config.js // @require https://cdnjs.cloudflare.com/ajax/libs/keypress/2.1.4/keypress.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js -// @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.28.5/js/jquery.tablesorter.min.js // @run-at document-idle // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== @@ -20,12 +19,12 @@ /* global GM_config, moment */ - +/* if (document.querySelector('.viewswitch > a:nth-child(1)') && document.querySelector('.viewswitch > a:nth-child(1)').outerHTML.indexOf('Single') !== -1 ) { $('body').append(`
In order thepiratebay helper to work, please switch the view mode of the search results to single-line (click: 'Single' in the table header, and then reload the page (F5))
`); throw new Error('Not in single-line view mode. The usercript exits.'); } - +*/ @@ -64,12 +63,12 @@ GM_config.init('TPB Helper settings',{ keepNonTrustedWithComments: {label: '...when toggle, include those non-trusted which have comments:', type: 'checkbox', default: true}, relativeDates: {label: 'Display torrent timestamps in relative format:', type: 'checkbox', default: true}, swapVerifiedIconsWithComments: {label: 'Swap the verified icons with the Comments icon:', type: 'checkbox', default: true}, - sortableRtColumn: {label: 'Add a sortable Ratio column?', type: 'checkbox', default: true} + RtColumn: {label: 'Add a Ratio column?', type: 'checkbox', default: true} },{ save: function(){location.reload();} }); -$('body').append(`
TPB Helper settings
`); +$('footer').append(`
TPB Helper settings
`); $('#TimeChangerConfig').click(function(){GM_config.open();}).css({'cursor': 'pointer'}); // var timezone = GM_config.get('timezone'); @@ -77,7 +76,7 @@ var tpboffset = GM_config.get('tpboffset'); var enhanceVisibility = GM_config.get('enhanceVisibility'); var keepNonTrustedWithComments = GM_config.get('keepNonTrustedWithComments'); var relativeDates = GM_config.get('relativeDates'); -var sortableRtColumn = GM_config.get('sortableRtColumn'); +var RtColumn = GM_config.get('RtColumn'); var swapVerifiedIconsWithCommentsChoice = GM_config.get('swapVerifiedIconsWithComments'); @@ -85,13 +84,13 @@ var swapVerifiedIconsWithCommentsChoice = GM_config.get('swapVerifiedIconsWithCo -// For the sortable Ratio column +// For the Ratio column function appendColumn() { var se, le, ratio; - if (document.querySelector('.header > th:nth-child(7)')){ - document.querySelector('.header > th:nth-child(7)').insertAdjacentHTML('afterend', 'Rt'); + if (document.querySelector('span.list-header:nth-child(7)')){ + document.querySelector('span.list-header:nth-child(7)').insertAdjacentHTML('afterend', ''); } - var entries = document.querySelectorAll('#searchResult > tbody:nth-child(2) > tr > td:nth-child(7)'); + var entries = document.querySelectorAll('li.list-entry > span:nth-child(7)'); for (var i = 0; i < entries.length; i++) { se = parseInt(entries[i].previousElementSibling.innerHTML); // Retrieve the content of the cell of the SE column and store it to variable se le = parseInt(entries[i].innerHTML); // Retrieve the content of the cell of the LE column and store it to variable le @@ -102,29 +101,20 @@ function appendColumn() { } else { ratio = se/le; } - ratio = (Math.round(10 * ratio) / 10); - entries[i].insertAdjacentHTML('afterend', '' + ratio + ''); - entries[i].nextSibling.className = 'ratioCol'; - $('.ratioCol').css('text-align', 'right'); - } - - $('table#searchResult').tablesorter({ - headers: { - 0: {sorter: false}, - 1: {sorter: false}, - 2: {sorter: false}, - 3: {sorter: false}, - 4: {sorter: false}, - 5: {sorter: false}, - 6: {sorter: false}, - 7: {sorter: true} - } - }); + // ratio = (Math.round(10 * ratio) / 10); + ratio = ratio.toFixed(1); + entries[i].insertAdjacentHTML('afterend', '' + ratio + ''); + entries[i].nextSibling.className = 'list-item item-ratio'; + $('.item-ratio').css('text-align', 'right'); + } } -if (sortableRtColumn === true) { +if (RtColumn === true) { appendColumn(); + $('.list-item:last-child').css('text-align', 'right'); // Select all Ratio values (=all last cells of all rows) and align them to the right + + } @@ -349,9 +339,12 @@ function highlight() { +// 2020-07-30 + function convertDates() { // alert(); - var dates = document.querySelectorAll('#searchResult > tbody > tr > td:nth-child(3)'); + // var dates = document.querySelectorAll('#searchResult > tbody > tr > td:nth-child(3)'); + var dates = document.querySelectorAll('#st > span.list-item.item-uploaded'); for (var i = 0; i < dates.length; i++) { if (dates[i].title === '' ) { // if it's the 1st time the function is called var initial = dates[i].innerHTML.replace(/ /g, ' ').replace(/<\/?b>/g, ''); @@ -364,6 +357,7 @@ function convertDates() { // then they are displayed in relative format (in bold) i.e. already in GMT+1 // instead of like this e.g. "Today 22:10", i.e. GMT, therefore it needs to be converted to GMT+1 // 1 min ago + /* if (temp.indexOf('mins ago') !== -1 || temp.indexOf('min ago') !== -1) { temp = moment().subtract(parseInt(temp), 'minutes'); dates[i].setAttribute('relative', 'true'); @@ -403,9 +397,13 @@ function convertDates() { dates[i].setAttribute('minus1day', 'true'); } + */ + + temp = moment(temp, 'YYYY-MM-DD', true); dates[i].innerHTML = temp.fromNow(); - dates[i].title = temp.format('MM-DD-YYYY HH:mm'); + // dates[i].title = temp.format('MM-DD-YYYY HH:mm'); + dates[i].title = temp.format('YYYY-MM-DD'); } From 2a6113b46f65904377bac59700c7890655cda169 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 13:46:23 +0300 Subject: [PATCH 006/245] Update thepiratebay_helper.user.js - fixed non-verified/without-comments torrent hiding/highlighting --- .../thepiratebay_helper.user.js | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/thepiratebay_helper/thepiratebay_helper.user.js b/thepiratebay_helper/thepiratebay_helper.user.js index ad78c2b..6362e88 100644 --- a/thepiratebay_helper/thepiratebay_helper.user.js +++ b/thepiratebay_helper/thepiratebay_helper.user.js @@ -222,9 +222,10 @@ function toggleHide() { function getAllTableLines(){ if ( ($('#searchResult > tbody > tr:last-child td a:last-child img').attr('alt') === 'Next')) { // if there's a Next button, i.e. the search results are multi plage - return $('table#searchResult tbody tr').not('#searchResult > tbody > tr:last-child'); // then ignore the last row of the table (the navigation links) + // return $('table#searchResult tbody tr').not('#searchResult > tbody > tr:last-child'); // then ignore the last row of the table (the navigation links) } else { - return $('table#searchResult tbody tr'); + // return $('table#searchResult tbody tr'); + return $('#torrents > .list-entry'); } } @@ -236,9 +237,9 @@ function swapVerifiedIconsWithComments(){ // in order to swap the verified icons position with that of the comments $( '[title ~= "comments."]' ).each(function() { - if (($(this).parent().parent().html().indexOf('title="VIP"') > -1) || - ($(this).parent().parent().html().indexOf('title="Trusted"') > -1) || - ($(this).parent().parent().html().indexOf('title="Moderator"') > -1) || + if (($(this).parent().parent().html().indexOf('alt="VIP"') > -1) || + ($(this).parent().parent().html().indexOf('alt="Trusted"') > -1) || + ($(this).parent().parent().html().indexOf('alt="Super Mod"') > -1) || ($(this).parent().parent().html().indexOf('Helper') > -1) ) { $(this).parent().children().last().insertBefore($(this)); } @@ -246,7 +247,7 @@ function swapVerifiedIconsWithComments(){ // // in order to move the verified icons before each uploader handle - // $('img[title="VIP"], img[title="Trusted"], img[title="Moderator"], img[title="Helper"]').each(function() { + // $('img[alt="VIP"], img[alt="Trusted"], img[alt="Super Mod"], img[alt="Helper"]').each(function() { // $(this).insertBefore($(this).parent().parent().parent().parent().children().last().children().first()); // // $(this).insertAfter($(this).parent().parent().parent().parent().children().last().children().first()); // }); @@ -257,9 +258,9 @@ function swapVerifiedIconsWithComments(){ // function restoreCommentIconsPosition(){ // $( '[title ~= "comments."]' ).each(function() { -// if (($(this).prev().html().indexOf('title="VIP"') > -1) || -// ($(this).prev().html().indexOf('title="Trusted"') > -1) || -// ($(this).prev().html().indexOf('title="Moderator"') > -1) || +// if (($(this).prev().html().indexOf('alt="VIP"') > -1) || +// ($(this).prev().html().indexOf('alt="Trusted"') > -1) || +// ($(this).prev().html().indexOf('alt="Super Mod"') > -1) || // ($(this).prev().html().indexOf('Helper') > -1) ) { // $(this).prev().insertAfter($(this)); // } @@ -272,8 +273,8 @@ function swapVerifiedIconsWithComments(){ function hideNonTrusted() { $(getAllTableLines()).each(function() { - if ( ($(this).html().indexOf('title="VIP"') === -1) && - ($(this).html().indexOf('title="Trusted"') === -1) && ($(this).html().indexOf('title="Moderator"') === -1) && + if (($(this).html().indexOf('alt="VIP"') === -1) && + ($(this).html().indexOf('alt="Trusted"') === -1) && ($(this).html().indexOf('alt="Super Mod"') === -1) && ($(this).html().indexOf('Helper') === -1) ){ $(this).hide(); counter++; @@ -286,9 +287,9 @@ function hideNonTrusted() { function hideNonTrustedAndWithoutComments() { $(getAllTableLines()).each(function() { - if (($(this).html().indexOf('title="VIP"') === -1) && - ($(this).html().indexOf('title="Trusted"') === -1) && - ($(this).html().indexOf('title="Moderator"') === -1) && + if (($(this).html().indexOf('alt="VIP"') === -1) && + ($(this).html().indexOf('alt="Trusted"') === -1) && + ($(this).html().indexOf('alt="Super Mod"') === -1) && ($(this).html().indexOf('Helper') === -1) && ($(this).html().indexOf('icon_comment.gif') === -1) ){ $(this).hide(); @@ -306,15 +307,15 @@ function highlight() { // $('table#searchResult tbody tr').each(function() { $(getAllTableLines()).each(function() { - if ($(this).html().indexOf('title="VIP"') > -1) { + if ($(this).html().indexOf('alt="VIP"') > -1) { $(this).css({ 'background-color': '#CFFECD' }); - } else if ($(this).html().indexOf('title="Trusted"') > -1) { + } else if ($(this).html().indexOf('alt="Trusted"') > -1) { $(this).css({ 'background-color': '#F9D5DB' }); // (initially it was FECDFE) and then FECDD9 - } else if ($(this).html().indexOf('title="Moderator"') > -1) { + } else if ($(this).html().indexOf('alt="Super Mod"') > -1) { $(this).css({ 'background-color': '#DCDCDC' }); From ef369d24814e4c981ace636f435427ba82e47f10 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 18:32:46 +0300 Subject: [PATCH 007/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 49 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 27 +++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..f50b7a0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,49 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + + + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..e4fa6f0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,27 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + + + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 9bd0e1f82f3fb7110ef9c6f8764491d8f06c08a8 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 18:36:18 +0300 Subject: [PATCH 008/245] Delete ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index ca2da6f..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file From 01c14956bf7ff0e442a5db09c8572d66bad0b876 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 19:47:20 +0300 Subject: [PATCH 009/245] Update thepiratebay_helper.user.js - updated the convertDatesInTorrentPage() and convertDates() for the current TPB layout - disabled 'TPB Timezone offset' and 'swapVerifiedIconsWithComments' features for the time being, as currently the site doesn't use timezones in timestamps nor allow commenting in torrent pages --- .../thepiratebay_helper.user.js | 103 +++++++----------- 1 file changed, 37 insertions(+), 66 deletions(-) diff --git a/thepiratebay_helper/thepiratebay_helper.user.js b/thepiratebay_helper/thepiratebay_helper.user.js index 6362e88..ab32b75 100644 --- a/thepiratebay_helper/thepiratebay_helper.user.js +++ b/thepiratebay_helper/thepiratebay_helper.user.js @@ -6,7 +6,7 @@ // @description Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether // @authors emptyparad0x, darkred // @license MIT -// @include /^https?://thepiratebay\.(org|se|gd|la|mn|vg)/(search|browse|user|recent|torrent|tv|music|top).*$/ +// @include /^https?://thepiratebay\.(org|se|gd|la|mn|vg)/(search|browse|user|recent|torrent|description\.php|tv|music|top).*$/ // @grant none // @require https://code.jquery.com/jquery-3.2.0.min.js // @require https://greasyfork.org/scripts/28536-gm-config/code/GM_config.js @@ -58,11 +58,11 @@ $('#main-content').css({ 'overflow': 'visible' }); // Override the default rule //GM_config stuff GM_config.init('TPB Helper settings',{ // timezone: {label: 'Text for Timezone:', type: 'text', cols: 10, default: 'EST'}, - tpboffset: {label: 'TPB Timezone offset : (GMT+1) +', type: 'int', default: 0}, // Initially it was: tpboffset: { label: 'TPB Timezone: GMT+', type: 'int', default: 1 }, + // tpboffset: {label: 'TPB Timezone offset : (GMT+1) +', type: 'int', default: 0}, // Initially it was: tpboffset: { label: 'TPB Timezone: GMT+', type: 'int', default: 1 }, enhanceVisibility: {label: 'Show all / Highlight trusted / Hide non-trusted:', section: ['Extras'], type: 'select', options: ['Show all', 'Highlight','Hide'], default: 'Show all'}, keepNonTrustedWithComments: {label: '...when toggle, include those non-trusted which have comments:', type: 'checkbox', default: true}, relativeDates: {label: 'Display torrent timestamps in relative format:', type: 'checkbox', default: true}, - swapVerifiedIconsWithComments: {label: 'Swap the verified icons with the Comments icon:', type: 'checkbox', default: true}, + // swapVerifiedIconsWithComments: {label: 'Swap the verified icons with the Comments icon:', type: 'checkbox', default: true}, RtColumn: {label: 'Add a Ratio column?', type: 'checkbox', default: true} },{ save: function(){location.reload();} @@ -72,12 +72,12 @@ $('footer').append(`
TPB Helper settings dd:nth-child(2)'); + + var torrentTimestamp = document.querySelector('#uld'); var initial = torrentTimestamp.innerHTML; - torrentTimestamp.innerHTML = moment(initial, 'YYYY-MM-DD HH:mm:ss').add(tpboffset + 1, 'hour').fromNow(); - torrentTimestamp.title = initial; + var today = moment().format('YYYY-MM-DD'); + + if (initial === today) { + torrentTimestamp.title = initial; + torrentTimestamp.innerHTML = 'Today'; + } else { + torrentTimestamp.innerHTML = moment(initial, 'YYYY-MM-DD', true).fromNow(); + torrentTimestamp.title = initial; + } + - // FOR THE COMMENT TIMESTAMPS + // FOR THE COMMENT TIMESTAMPS ----> Currently as of 7/30/20 "Currently, you can't comments in TPB torrents. (https://pirates-forum.org/Thread-TPB-comments-new-account?pid=301381#pid301381) " var dates = document.querySelectorAll('#comments > div[id^="comment-"] > p'); for (var i = 0; i < dates.length; i++) { // example: 2016-11-23 17:53 CET var currentElement = dates[i].childNodes[2]; initial = currentElement.nodeValue.trim().replace('at ', '').slice(0, -1); - currentElement.nodeValue = ' ' + moment(initial, 'YYYY-MM-DD HH:mm zz').add(tpboffset + 1, 'hour').fromNow(); currentElement.parentElement.title = initial; } From 050d16c8cab482f2a429500888f2e676b357ac05 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 19:58:57 +0300 Subject: [PATCH 010/245] Update thepiratebay_helper.user.js --- thepiratebay_helper/thepiratebay_helper.user.js | 1 - 1 file changed, 1 deletion(-) diff --git a/thepiratebay_helper/thepiratebay_helper.user.js b/thepiratebay_helper/thepiratebay_helper.user.js index ab32b75..f7e3941 100644 --- a/thepiratebay_helper/thepiratebay_helper.user.js +++ b/thepiratebay_helper/thepiratebay_helper.user.js @@ -1,7 +1,6 @@ // ==UserScript== // @name thepiratebay helper // @namespace darkred -// @version 0.9.7 // @date 2020.7.30 // @description Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether // @authors emptyparad0x, darkred From a9a2f6d8ef2284415b5b828c0609c614c6dc0623 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 20:06:00 +0300 Subject: [PATCH 011/245] Changed the meta date to version (required for Greasyfork versioning) --- .../thepiratebay_-_add_a_sortable_Ratio_column.user.js | 4 ++-- thepiratebay_helper/thepiratebay_helper.user.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js b/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js index c89bf97..216e08a 100644 --- a/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js +++ b/thepiratebay_-_add_a_sortable_Ratio_column/thepiratebay_-_add_a_sortable_Ratio_column.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name thepiratebay - add a sortable Ratio column // @namespace darkred -// @date 2020.7.29 +// @version 2020.7.29 // @description Adds a sortable "Ratio" column // @author darkred // @license MIT @@ -41,5 +41,5 @@ function appendColumn() { appendColumn(); -// Select all Ratio values (=all last cells of all rows) an align to the text +// Select all 'ULed by' values (=all last cells of all rows) and align them to the right $('.list-item:last-child').css('text-align', 'right'); diff --git a/thepiratebay_helper/thepiratebay_helper.user.js b/thepiratebay_helper/thepiratebay_helper.user.js index f7e3941..73558c9 100644 --- a/thepiratebay_helper/thepiratebay_helper.user.js +++ b/thepiratebay_helper/thepiratebay_helper.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name thepiratebay helper // @namespace darkred -// @date 2020.7.30 +// @version 2020.7.30 // @description Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether // @authors emptyparad0x, darkred // @license MIT From c116b6e97502d1cf9a2f4777a89ae54976d55f56 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 20:09:18 +0300 Subject: [PATCH 012/245] Update Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js Added favicon --- ...ate_timestamps_and_add_link_to_the_FB_comments_area.user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js index 2fee0de..56d4852 100644 --- a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js +++ b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js @@ -2,7 +2,7 @@ // @name Blabbermouth - generate timestamps and add link to the fb comments area // @namespace darkred // @version 1.1.1 -// @date 2020.04.01 +// @date 2020.7.30 // @description Generates missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area // @author darkred // @license MIT @@ -12,6 +12,7 @@ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js // @supportURL https://github.com/darkred/Userscripts/issues +// @icon https://www.blabbermouth.net/assets/favicon-309148577f1b67c003487c069cccf8731e6f68e4d847c5576d6f5453b083c27a.png // ==/UserScript== From 60e70e1f6af253cd1229fc1ec70621010c7c2056 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 30 Jul 2020 23:54:27 +0300 Subject: [PATCH 013/245] GreasyFork Bullshit Filter (and for TS Citrus Gfork) - script feedback pages should not be matched in the exclude rule --- .../GreasyFork_Bullshit_Filter.user.js | 6 +++--- ...GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js index 016e3f1..435d561 100644 --- a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js +++ b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter // @namespace darkred -// @version 2020.30.7.1 +// @version 2020.7.31 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter/large.png // @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|discussions|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts\/[0-9]+.*|users\/.*\/conversations.*)$/ +// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts\/[0-9]+.*(? Date: Sun, 9 Aug 2020 22:02:37 +0300 Subject: [PATCH 014/245] Update README.md Tampermonkey and Violentmonkey are only supported. Greasemonkey -any version- is not supported. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c46247..48d66da 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ This repo contains my userscripts. +The scripts work and are tested with Tampermonkey and Violentmonkey. +Greasemonkey -any version- is not supported (the scripts might work, but are not tested). + ### Userscripts - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area @@ -29,7 +32,7 @@ This repo contains my userscripts. - [ProtonMail - remove forced signature](https://github.com/darkred/Userscripts/tree/master/ProtonMail_-_remove_forced_signature#readme) - Removes the forced ProtonMail signature from the 'New message' textboxes - [RARBG - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/RARBG_-_convert_torrent_timestamps_to_relative_format#readme) - Convert torrent upload timestamps to local timezone or to relative format. - [RARBG - various tweaks](https://github.com/darkred/Userscripts/tree/master/RARBG_-_various_tweaks#readme) - Rearranges various entries, displays in bold the various rating values, properly renames a few entries and use decimal rating for the users' ratings -- [RARBG - torrent and magnet links](https://github.com/darkred/Userscripts/tree/master/RARBG_-_torrent_and_magnet_links#readme) - Adds a column in search results for direct torrent or magnet link downloading. +- [RARBG - torrent and magnet links](https://github.com/darkred/Userscripts/tree/master/RARBG_-_torrent_and_magnet_links#readme) - Adds a column in search results for direct torrent or magnet link downloading. - [Reddit Infinite Scrolling](https://github.com/darkred/Userscripts/tree/master/Reddit_Infinite_Scrolling#readme) - Adds infinite scrolling to subreddits and to comments. - [Rotten Tomatoes Decimal Rating](https://github.com/darkred/Userscripts/tree/master/Rotten_Tomatoes_Decimal_Rating#readme) - Changes base-5 Rating of Rotten Tomatoes to base-10. - [StackExchange sites - convert dates to local timezone](https://github.com/darkred/Userscripts/tree/master/StackExchange_sites_-_convert_dates_to_local_timezone#readme) - Converts dates to your local timezone. From df592e27c34b38d6447dab25c5a870d11a5d56a3 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 9 Aug 2020 23:05:53 +0300 Subject: [PATCH 015/245] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 48d66da..58a1cf0 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This repo contains my userscripts. -The scripts work and are tested with Tampermonkey and Violentmonkey. +The scripts are tested to work with Tampermonkey and Violentmonkey. Greasemonkey -any version- is not supported (the scripts might work, but are not tested). ### Userscripts From 0392c2c3e915d3d9bf2575e585ac4d748bb86bb7 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 25 Aug 2020 18:56:43 +0300 Subject: [PATCH 016/245] (Firefox for desktop - list bugs -- all versions): MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced $.getJSON with GM_xmlhttpRequest because of “No 'Access-Control-Allow-Origin' header is present on the requested resource” error --- ...top_-_list_fixed_bugs_in_Mercurial.user.js | 257 +++++++------ ...ugs_in_Mercurial_as_sortable_table.user.js | 353 ++++++++--------- ...ugs_in_Mercurial_as_sortable_table.user.js | 358 +++++++++--------- 3 files changed, 496 insertions(+), 472 deletions(-) diff --git a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js index fe51b36..a1cc5f0 100644 --- a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js +++ b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js @@ -1,15 +1,16 @@ // ==UserScript== // @name Firefox for desktop - list fixed bugs in Mercurial // @namespace darkred -// @version 4.2.8 -// @description It generates a list of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs +// @version 4.2.9 +// @date 2020.8.25 +// @description Lists fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs // @authors darkred, johnp // @license MIT -// @date 2018.5.13 // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL // @grant GM_getResourceText // @grant GM_addStyle +// @grant GM_xmlhttpRequest // @grant GM_setClipboard // @require https://code.jquery.com/jquery-2.1.4.min.js // @require https://code.jquery.com/ui/1.11.4/jquery-ui.min.js @@ -31,7 +32,7 @@ -/* eslint-disable no-console, indent, no-mixed-spaces-and-tabs, complexity */ +/* eslint-disable no-console, complexity */ var silent = false; @@ -126,112 +127,120 @@ String.prototype.escapeHTML = function() { time('MozillaMercurial-REST'); -$.getJSON(rest_url, function(data) { - timeEnd('MozillaMercurial-REST'); - data.bugs.sort(function(a, b) { - return (a.product + ': ' + a.component + ': ' + a.summary).localeCompare(b.product + ': ' + b.component + ': ' + b.summary); // had to change '>' with '.localeCompare' because the sorting wasn't applied when run with Tampermonkey - }); - $.each(data.bugs, function(index) { - let bug = data.bugs[index]; - // process bug (let "shorthands" just to simplify things during refactoring) - let status = bug.status; - if (bug.resolution !== '') {status += ' ' + bug.resolution;} - let product = bug.product; - let component = bug.component; - let platform = bug.platform; - if (platform === 'Unspecified') { - platform = 'Uns'; - } - if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { - platform += '/' + bug.op_sys; - } - let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; - // todo: message??? - - log('----------------------------------------------------------------------------------------------------------------------------------'); - log((index + 1) + '/' + numBugs); // Progression counter - log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); - - if (isRelevant(bug)) { - // add html code for this bug - // console.log(typeof bug.summary) - bugsComplete.push('#' - + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' - + bug.id - + '' - + ' (' + product + ': ' + component + ') ' - + bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '
'); - } - counter++; // increase counter - // remove processed bug from bugIds - let i = bugIds.indexOf(bug.id); - if (i !== -1) {bugIds[i] = null;} - }); - log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); - - // process remaining bugs one-by-one - time('MozillaMercurial-missing'); - $.each(bugIds, function(index) { - let id = bugIds[index]; - if (id !== null) { - time('Requesting missing bug ' + id); - let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, - function(json) { - // I've not end up here yet, so cry if we do - console.error('Request for bug ' + id + ' succeeded unexpectedly!'); +GM_xmlhttpRequest({ + method: 'GET', + url: rest_url, + onload: function(response) { + + var data = JSON.parse(response.responseText); + + timeEnd('MozillaMercurial-REST'); + data.bugs.sort(function(a, b) { + return (a.product + ': ' + a.component + ': ' + a.summary).localeCompare(b.product + ': ' + b.component + ': ' + b.summary); // had to change '>' with '.localeCompare' because the sorting wasn't applied when run with Tampermonkey + }); + $.each(data.bugs, function(index) { + let bug = data.bugs[index]; + // process bug (let "shorthands" just to simplify things during refactoring) + let status = bug.status; + if (bug.resolution !== '') {status += ' ' + bug.resolution;} + let product = bug.product; + let component = bug.component; + let platform = bug.platform; + if (platform === 'Unspecified') { + platform = 'Uns'; + } + if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { + platform += '/' + bug.op_sys; + } + let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; + // todo: message??? + + log('----------------------------------------------------------------------------------------------------------------------------------'); + log((index + 1) + '/' + numBugs); // Progression counter + log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); + + if (isRelevant(bug)) { + // add html code for this bug + // console.log(typeof bug.summary) + bugsComplete.push('#' + + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' + + bug.id + + '' + + ' (' + product + ': ' + component + ') ' + + bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '
'); + } + counter++; // increase counter + // remove processed bug from bugIds + let i = bugIds.indexOf(bug.id); + if (i !== -1) {bugIds[i] = null;} + }); + log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); + + // process remaining bugs one-by-one + time('MozillaMercurial-missing'); + $.each(bugIds, function(index) { + let id = bugIds[index]; + if (id !== null) { + time('Requesting missing bug ' + id); + let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, + function(json) { + // I've not end up here yet, so cry if we do + console.error('Request for bug ' + id + ' succeeded unexpectedly!'); + timeEnd('Requesting missing bug ' + id); + console.error(json); + }); + // Actually, we usually get an '401 Authorization Required' error + promise.fail(function(req, status, error) { timeEnd('Requesting missing bug ' + id); - console.error(json); - }); - // Actually, we usually get an '401 Authorization Required' error - promise.fail(function(req, status, error) { - timeEnd('Requesting missing bug ' + id); - if (error === 'Authorization Required') { - log('Bug ' + id + ' requires authorization!'); - log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); - let text = ' requires authorization!
'; - - bugsComplete.push('#' - + id + '' + text); - } else { - console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); - } - }); - requests.push(promise); - } - }); - // wait for all requests to be settled, then join them together - // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed - $.when.apply($, $.map(requests, function(p) { - return p.then(null, function() { - return $.Deferred().resolveWith(this, arguments); + if (error === 'Authorization Required') { + log('Bug ' + id + ' requires authorization!'); + log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); + let text = ' requires authorization!
'; + + bugsComplete.push('#' + + id + '' + text); + } else { + console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); + } + }); + requests.push(promise); + } }); - })).always(function() { - timeEnd('MozillaMercurial-missing'); - // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below - var docu = ''; - docu = bugsComplete.join(''); - - var div = document.createElement('div'); - $('div.page_footer').append(div); - div.id = 'dialog'; - // GM_setClipboard (docu); // This line stores the list content HTML code to clipboard (aimed for MozillaZine daily "The Official Win32 xxxxxxx builds" maintainer) - // docu = '
' + docu + '
'; - docu = '
' + docu + '
'; - div.innerHTML = docu; - $('#dialog').hide(); - - $(function() { - $('#dialog').dialog({ - title: 'List of recently fixed bugs of Firefox for Desktop (' + bugsComplete.length + ')', - width: '1350px' + // wait for all requests to be settled, then join them together + // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed + $.when.apply($, $.map(requests, function(p) { + return p.then(null, function() { + return $.Deferred().resolveWith(this, arguments); }); + })).always(function() { + timeEnd('MozillaMercurial-missing'); + // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below + var docu = ''; + docu = bugsComplete.join(''); + + var div = document.createElement('div'); + $('div.page_footer').append(div); + div.id = 'dialog'; + // GM_setClipboard (docu); // This line stores the list content HTML code to clipboard (aimed for MozillaZine daily "The Official Win32 xxxxxxx builds" maintainer) + // docu = '
' + docu + '
'; + docu = '
' + docu + '
'; + div.innerHTML = docu; + $('#dialog').hide(); + + $(function() { + $('#dialog').dialog({ + title: 'List of recently fixed bugs of Firefox for Desktop (' + bugsComplete.length + ')', + width: '1350px' + }); + }); + + log('ALL IS DONE'); + timeEnd('MozillaMercurial'); }); - log('ALL IS DONE'); - timeEnd('MozillaMercurial'); - }); + } }); function isRelevant(bug) { @@ -246,29 +255,29 @@ function isRelevant(bug) { return false; } - if ( bug.product && - bug.product !== 'Add-on SDK' && - bug.product !== 'Cloud Services' && - bug.product !== 'Core' && - bug.product !== 'Firefox' && - bug.product !== 'Hello (Loop)' && - bug.product !== 'Toolkit') { + if ( bug.product && + bug.product !== 'Add-on SDK' && + bug.product !== 'Cloud Services' && + bug.product !== 'Core' && + bug.product !== 'Firefox' && + bug.product !== 'Hello (Loop)' && + bug.product !== 'Toolkit') { log(' IRRELEVANT because of it\'s Product --> ' + bug.product); return false; } - if (bug.component && bug.component === 'AutoConfig' || - bug.component === 'Build Config' || - bug.component === 'DMD' || - bug.component === 'Embedding: GRE Core' || - bug.component === 'Embedding: Mac' || - bug.component === 'Embedding: MFC Embed' || - bug.component === 'Embedding: Packaging' || - bug.component === 'Hardware Abstraction Layer' || - bug.component === 'mach' || - bug.component === 'Nanojit' || - bug.component === 'QuickLaunch' || - bug.component === 'Widget: Gonk') { + if (bug.component && bug.component === 'AutoConfig'|| + bug.component === 'Build Config' || + bug.component === 'DMD' || + bug.component === 'Embedding: GRE Core' || + bug.component === 'Embedding: Mac' || + bug.component === 'Embedding: MFC Embed' || + bug.component === 'Embedding: Packaging' || + bug.component === 'Hardware Abstraction Layer' || + bug.component === 'mach' || + bug.component === 'Nanojit' || + bug.component === 'QuickLaunch' || + bug.component === 'Widget: Gonk') { log(' IRRELEVANT because of it\'s Component --> ' + bug.component); return false; diff --git a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js index d7fac7b..342e87a 100644 --- a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js +++ b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js @@ -1,15 +1,16 @@ // ==UserScript== // @name Firefox for desktop - list fixed bugs in Mercurial as sortable table // @namespace darkred -// @version 5.5.9.1 -// @description It generates a sortable table list of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs +// @version 5.5.9.2 +// @date 2020.8.25 +// @description Lists (as sortable table) fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs // @authors darkred, johnp // @license MIT -// @date 2018.5.16 // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL // @grant GM_getResourceText // @grant GM_addStyle +// @grant GM_xmlhttpRequest // @require https://code.jquery.com/jquery-2.1.4.min.js // @require https://code.jquery.com/ui/1.11.4/jquery-ui.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.24.3/js/jquery.tablesorter.min.js @@ -31,7 +32,6 @@ // ==/UserScript== -/* esli nt-disable no-console, indent, no-mixed-spaces-and-tabs, complexity */ /* eslint-disable no-console, complexity */ /* global jstz, moment */ @@ -209,230 +209,237 @@ time('MozillaMercurial-REST'); -$.getJSON(rest_url, function(data) { - timeEnd('MozillaMercurial-REST'); - $.each(data.bugs, function(index) { - let bug = data.bugs[index]; - // process bug (let "shorthands" just to simplify things during refactoring) - let status = bug.status; - if (bug.resolution !== '') {status += ' ' + bug.resolution;} - let product = bug.product; - let component = bug.component; - let platform = bug.platform; - if (platform === 'Unspecified') { - platform = 'Uns'; - } - if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { - platform += '/' + bug.op_sys; - } - let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; - // todo: message??? - +GM_xmlhttpRequest({ + method: 'GET', + url: rest_url, + onload: function(response) { + var data = JSON.parse(response.responseText); + timeEnd('MozillaMercurial-REST'); + $.each(data.bugs, function(index) { + let bug = data.bugs[index]; + // process bug (let "shorthands" just to simplify things during refactoring) + let status = bug.status; + if (bug.resolution !== '') {status += ' ' + bug.resolution;} + let product = bug.product; + let component = bug.component; + let platform = bug.platform; + if (platform === 'Unspecified') { + platform = 'Uns'; + } + if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { + platform += '/' + bug.op_sys; + } + let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; + // todo: message??? - // 2015-11-09T14:40:41Z - function toRelativeTime(time, zone) { - var format2 = ('YYYY-MM-DD HH:mm:ss Z'); - return moment(time, format2).tz(zone).fromNow(); - } - - - function getLocalTimezone(){ - var tz = jstz.determine(); // Determines the time zone of the browser client - return tz.name(); // Returns the name of the time zone eg "Europe/Berlin" - } + // 2015-11-09T14:40:41Z + function toRelativeTime(time, zone) { + var format2 = ('YYYY-MM-DD HH:mm:ss Z'); + return moment(time, format2).tz(zone).fromNow(); + } - var changetime; - var localTimezone = getLocalTimezone(); - if (bug.last_change_time !== '') { - var temp = toRelativeTime(bug.last_change_time, localTimezone); - if (temp.match(/(an?) .*/)) { - changetime = temp.replace(/an?/, 1); - } else { - changetime = temp; + function getLocalTimezone(){ + var tz = jstz.determine(); // Determines the time zone of the browser client + return tz.name(); // Returns the name of the time zone eg "Europe/Berlin" } - // changetime - } else { - changetime = ''; - } + var changetime; + var localTimezone = getLocalTimezone(); + + if (bug.last_change_time !== '') { + var temp = toRelativeTime(bug.last_change_time, localTimezone); + if (temp.match(/(an?) .*/)) { + changetime = temp.replace(/an?/, 1); + } else { + changetime = temp; + } + // changetime + } else { + changetime = ''; + } - log('----------------------------------------------------------------------------------------------------------------------------------'); - log((index + 1) + '/' + numBugs); // Progression counter - log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); - if (isRelevant(bug)) { - // add html code for this bug - bugsComplete.push('' - + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' - + bug.id - + '' - + '(' + product + ': ' + component + ') ' - + ''+bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '' - + '' + changetime + ''); // previously had a
at the end; - } - counter++; // increase counter - // remove processed bug from bugIds - let i = bugIds.indexOf(bug.id); - if (i !== -1) {bugIds[i] = null;} - }); - log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); + log('----------------------------------------------------------------------------------------------------------------------------------'); + log((index + 1) + '/' + numBugs); // Progression counter + log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); - // process remaining bugs one-by-one - time('MozillaMercurial-missing'); - $.each(bugIds, function(index) { - let id = bugIds[index]; - if (id !== null) { - time('Requesting missing bug ' + id); - let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, - function(json) { - // I've not end up here yet, so cry if we do - console.error('Request for bug ' + id + ' succeeded unexpectedly!'); + if (isRelevant(bug)) { + // add html code for this bug + bugsComplete.push('' + + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' + + bug.id + + '' + + '(' + product + ': ' + component + ') ' + + ''+bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '' + + '' + changetime + ''); // previously had a
at the end; + } + counter++; // increase counter + // remove processed bug from bugIds + let i = bugIds.indexOf(bug.id); + if (i !== -1) {bugIds[i] = null;} + }); + log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); + + + + + // process remaining bugs one-by-one + time('MozillaMercurial-missing'); + $.each(bugIds, function(index) { + let id = bugIds[index]; + if (id !== null) { + time('Requesting missing bug ' + id); + let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, + function(json) { + // I've not end up here yet, so cry if we do + console.error('Request for bug ' + id + ' succeeded unexpectedly!'); + timeEnd('Requesting missing bug ' + id); + console.error(json); + }); + // Actually, we usually get an '401 Authorization Required' error + promise.fail(function(req, status, error) { timeEnd('Requesting missing bug ' + id); - console.error(json); + if (error === 'Authorization Required') { + // log("Bug " + id + " requires authorization!"); + log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); + let text = ' requires authorization!
'; + + bugsComplete.push('#' + + id + '' + text); + } else { + console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); + } }); - // Actually, we usually get an '401 Authorization Required' error - promise.fail(function(req, status, error) { - timeEnd('Requesting missing bug ' + id); - if (error === 'Authorization Required') { - // log("Bug " + id + " requires authorization!"); - log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); - let text = ' requires authorization!
'; - - bugsComplete.push('#' - + id + '' + text); - } else { - console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); - } - }); - requests.push(promise); - } - }); - // wait for all requests to be settled, then join them together - // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed - $.when.apply($, $.map(requests, function(p) { - return p.then(null, function() { - return $.Deferred().resolveWith(this, arguments); + requests.push(promise); + } }); - })).always(function() { - timeEnd('MozillaMercurial-missing'); - // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below - var docu = ''; - docu = bugsComplete.join(''); - docu = ' ' + - '' + - '' + - '' + // '' + - '' + - '' + // '' + - '' + - '' + docu + '
BugNoProduct/ComponentProduct/Component_________SummaryModified
Modified__
'; - - - - - var div = document.createElement('div'); - $('div.page_footer').append(div); - div.id = 'dialog'; - docu = '
' + docu + '
'; - div.innerHTML = docu; - $('#dialog').hide(); - - $(function() { - $('#dialog').dialog({ - title: 'List of fixed bugs of Firefox for desktop (' + bugsComplete.length + ')', - width: '1350px' + // wait for all requests to be settled, then join them together + // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed + $.when.apply($, $.map(requests, function(p) { + return p.then(null, function() { + return $.Deferred().resolveWith(this, arguments); + }); + })).always(function() { + timeEnd('MozillaMercurial-missing'); + // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below + var docu = ''; + docu = bugsComplete.join(''); + docu = ' ' + + '' + + '' + + '' + // '' + + '' + + '' + // '' + + '' + + '' + docu + '
BugNoProduct/ComponentProduct/Component_________SummaryModified
Modified__
'; + + + + + var div = document.createElement('div'); + $('div.page_footer').append(div); + div.id = 'dialog'; + docu = '
' + docu + '
'; + div.innerHTML = docu; + $('#dialog').hide(); + + $(function() { + $('#dialog').dialog({ + title: 'List of fixed bugs of Firefox for desktop (' + bugsComplete.length + ')', + width: '1350px' + }); }); - }); - - // THE CUSTOM PARSER MUST BE PUT BEFORE '$('#tbl').tablesorter ( {'' or else it wont work !!!! - // add parser through the tablesorter addParser method (for the "Last modified" column) - $.tablesorter.addParser({ - // set a unique id - id: 'dates', - is: function(s) { - return false; // return false so this parser is not auto detected - }, - format: function(s) { - // format your data for normalization - if (s !== ''){ - var number1, number2; + // THE CUSTOM PARSER MUST BE PUT BEFORE '$('#tbl').tablesorter ( {'' or else it wont work !!!! + // add parser through the tablesorter addParser method (for the "Last modified" column) + $.tablesorter.addParser({ + // set a unique id + id: 'dates', + is: function(s) { + return false; // return false so this parser is not auto detected + }, + format: function(s) { // format your data for normalization - number1 = Number((/(.{1,2}) .*/).exec(s)[1]); + if (s !== ''){ + var number1, number2; + // format your data for normalization + number1 = Number((/(.{1,2}) .*/).exec(s)[1]); - if (s.match(/A few seconds ago/)) { number2 = 0;} - else if (s.match(/(.*)seconds?.*/)) { number2 = 1;} - else if (s.match(/(.*)minutes?.*/)) {number2 = 60;} - else if (s.match(/(.*)hours?.*/)) { number2 = 3600;} - else if (s.match(/(.*)days?.*/)) { number2 = 86400;} - else if (s.match(/(.*)months?.*/)) { number2 = 30 * 86400;} - else if (s.match(/(.*)years?.*/)) {number2 = 365 * 30 * 86400;} - return number1 * number2; - } - }, - // set type, either numeric or text - type: 'numeric' - }); + if (s.match(/A few seconds ago/)) { number2 = 0;} + else if (s.match(/(.*)seconds?.*/)) { number2 = 1;} + else if (s.match(/(.*)minutes?.*/)) {number2 = 60;} + else if (s.match(/(.*)hours?.*/)) { number2 = 3600;} + else if (s.match(/(.*)days?.*/)) { number2 = 86400;} + else if (s.match(/(.*)months?.*/)) { number2 = 30 * 86400;} + else if (s.match(/(.*)years?.*/)) {number2 = 365 * 30 * 86400;} + return number1 * number2; + } + }, + // set type, either numeric or text + type: 'numeric' + }); - // make table sortable - $('#tbl').tablesorter({ - cssAsc: 'up', - cssDesc: 'down', - sortList: [[3, 0],[1, 0],[2, 0]], // in order the table to be sorted by default by column 3 'Modified', then by column 1 'Product/Component' and then by column 2 'Summary' - headers: {3: {sorter: 'dates'}}, - initialized: function() { - var mytable = document.getElementById('tbl'); - for (let i = 2, j = mytable.rows.length + 1; i < j; i++) { - if (mytable.rows[i].cells[3].innerHTML !== mytable.rows[i - 1].cells[3].innerHTML) { - for (let k = 0; k < 4; k++) { - mytable.rows[i - 1].cells[k].style.borderBottom = '1px black dotted'; + + // make table sortable + $('#tbl').tablesorter({ + cssAsc: 'up', + cssDesc: 'down', + sortList: [[3, 0],[1, 0],[2, 0]], // in order the table to be sorted by default by column 3 'Modified', then by column 1 'Product/Component' and then by column 2 'Summary' + headers: {3: {sorter: 'dates'}}, + initialized: function() { + var mytable = document.getElementById('tbl'); + for (let i = 2, j = mytable.rows.length + 1; i < j; i++) { + if (mytable.rows[i].cells[3].innerHTML !== mytable.rows[i - 1].cells[3].innerHTML) { + for (let k = 0; k < 4; k++) { + mytable.rows[i - 1].cells[k].style.borderBottom = '1px black dotted'; + } } } } - } - }); + }); - log('ALL IS DONE'); - timeEnd('MozillaMercurial'); + log('ALL IS DONE'); + timeEnd('MozillaMercurial'); - }); + }); + } }); diff --git a/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js b/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js index d98e104..7772092 100644 --- a/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js +++ b/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js @@ -1,15 +1,16 @@ // ==UserScript== // @name Firefox for desktop - list modified bugs in Mercurial as sortable table // @namespace darkred -// @version 5.5.9.1 -// @description It generates a sortable table list of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs +// @version 5.5.9.2 +// @date 2020.8.25 +// @description Lists (as sortable table) bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs // @authors darkred, johnp // @license MIT -// @date 2018.5.16 // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL // @grant GM_getResourceText // @grant GM_addStyle +// @grant GM_xmlhttpRequest // @require https://code.jquery.com/jquery-2.1.4.min.js // @require https://code.jquery.com/ui/1.11.4/jquery-ui.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.24.3/js/jquery.tablesorter.min.js @@ -31,7 +32,7 @@ // ==/UserScript== -/* eslint-disable no-console, indent, no-mixed-spaces-and-tabs, complexity */ +/* eslint-disable no-console, complexity */ /* global jstz, moment */ @@ -182,233 +183,240 @@ time('MozillaMercurial-REST'); -$.getJSON(rest_url, function(data) { - timeEnd('MozillaMercurial-REST'); - $.each(data.bugs, function(index) { - let bug = data.bugs[index]; - // process bug (let "shorthands" just to simplify things during refactoring) - let status = bug.status; - if (bug.resolution !== '') {status += ' ' + bug.resolution;} - let product = bug.product; - let component = bug.component; - let platform = bug.platform; - if (platform === 'Unspecified') { - platform = 'Uns'; - } - if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { - platform += '/' + bug.op_sys; - } - let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; - // todo: message??? +GM_xmlhttpRequest({ + method: 'GET', + url: rest_url, + onload: function(response) { + var data = JSON.parse(response.responseText); + timeEnd('MozillaMercurial-REST'); + $.each(data.bugs, function(index) { + let bug = data.bugs[index]; + // process bug (let "shorthands" just to simplify things during refactoring) + let status = bug.status; + if (bug.resolution !== '') {status += ' ' + bug.resolution;} + let product = bug.product; + let component = bug.component; + let platform = bug.platform; + if (platform === 'Unspecified') { + platform = 'Uns'; + } + if (bug.op_sys !== '' && bug.op_sys !== 'Unspecified') { + platform += '/' + bug.op_sys; + } + let whiteboard = bug.whiteboard === '' ? '[]' : bug.whiteboard; + // todo: message??? - // 2015-11-09T14:40:41Z - function toRelativeTime(time, zone) { - var format2 = ('YYYY-MM-DD HH:mm:ss Z'); - return moment(time, format2).tz(zone).fromNow(); - } - function getLocalTimezone(){ - var tz = jstz.determine(); // Determines the time zone of the browser client - return tz.name(); // Returns the name of the time zone eg "Europe/Berlin" - } + // 2015-11-09T14:40:41Z + function toRelativeTime(time, zone) { + var format2 = ('YYYY-MM-DD HH:mm:ss Z'); + return moment(time, format2).tz(zone).fromNow(); + } + function getLocalTimezone(){ + var tz = jstz.determine(); // Determines the time zone of the browser client + return tz.name(); // Returns the name of the time zone eg "Europe/Berlin" + } - var changetime; - var localTimezone = getLocalTimezone(); - if (bug.last_change_time !== '') { - var temp = toRelativeTime(bug.last_change_time, localTimezone); - if (temp.match(/(an?) .*/)) { - changetime = temp.replace(/an?/, 1); - } else { - changetime = temp; - } - // changetime - } else { - changetime = ''; - } + var changetime; + var localTimezone = getLocalTimezone(); + if (bug.last_change_time !== '') { + var temp = toRelativeTime(bug.last_change_time, localTimezone); + if (temp.match(/(an?) .*/)) { + changetime = temp.replace(/an?/, 1); + } else { + changetime = temp; + } + // changetime + } else { + changetime = ''; + } - log('----------------------------------------------------------------------------------------------------------------------------------'); - log((index + 1) + '/' + numBugs); // Progression counter - log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); - if (isRelevant(bug)) { - // add html code for this bug - bugsComplete.push('' - + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' - + bug.id - + '' - + '(' + product + ': ' + component + ') ' - + ''+bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '' - + '' + changetime + '' - + '' + status + ''); // previously had a
at the end; - } - counter++; // increase counter - // remove processed bug from bugIds - let i = bugIds.indexOf(bug.id); - if (i !== -1) {bugIds[i] = null;} - }); - log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); + log('----------------------------------------------------------------------------------------------------------------------------------'); + log((index + 1) + '/' + numBugs); // Progression counter + log('BugNo: ' + bug.id + '\nTitle: ' + bug.summary + '\nStatus: ' + status + '\nProduct: ' + product + '\nComponent: ' + component + '\nPlatform: ' + platform + '\nWhiteboard: ' + whiteboard); + if (isRelevant(bug)) { + // add html code for this bug + bugsComplete.push('' + + 'https://bugzilla.mozilla.org/show_bug.cgi?id='+ bug.id + '"' + ' title="' + bug.id + ' - ' + bug.summary + '">#' + + bug.id + + '' + + '(' + product + ': ' + component + ') ' + + ''+bug.summary.escapeHTML() + ' [' + platform + ']' + whiteboard.escapeHTML() + '' + + '' + changetime + '' + + '' + status + ''); // previously had a
at the end; + } + counter++; // increase counter + // remove processed bug from bugIds + let i = bugIds.indexOf(bug.id); + if (i !== -1) {bugIds[i] = null;} + }); + log('==============\nReceived ' + counter + ' of ' + numBugs + ' bugs.'); + + + + + // process remaining bugs one-by-one + time('MozillaMercurial-missing'); + $.each(bugIds, function(index) { + let id = bugIds[index]; + if (id !== null) { + time('Requesting missing bug ' + id); + let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, + function(json) { + // I've not end up here yet, so cry if we do + console.error('Request for bug ' + id + ' succeeded unexpectedly!'); + timeEnd('Requesting missing bug ' + id); + console.error(json); + }); + // Actually, we usually get an '401 Authorization Required' error + promise.fail(function(req, status, error) { + timeEnd('Requesting missing bug ' + id); + if (error === 'Authorization Required') { + // log("Bug " + id + " requires authorization!"); + log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); + let text = ' requires authorization!
'; - // process remaining bugs one-by-one - time('MozillaMercurial-missing'); - $.each(bugIds, function(index) { - let id = bugIds[index]; - if (id !== null) { - time('Requesting missing bug ' + id); - let promise = $.getJSON('https://bugzilla.mozilla.org/rest/bug/' + id, - function(json) { - // I've not end up here yet, so cry if we do - console.error('Request for bug ' + id + ' succeeded unexpectedly!'); - timeEnd('Requesting missing bug ' + id); - console.error(json); + bugsComplete.push('#' + + id + '' + text); + } else { + console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); + } }); - // Actually, we usually get an '401 Authorization Required' error - promise.fail(function(req, status, error) { - timeEnd('Requesting missing bug ' + id); - if (error === 'Authorization Required') { - - // log("Bug " + id + " requires authorization!"); - log('https://bugzilla.mozilla.org/show_bug.cgi?id=' + id + ' requires authorization!'); - let text = ' requires authorization!
'; - - bugsComplete.push('#' - + id + '' + text); - } else { - console.error('Unexpected error encountered (Bug' + id + '): ' + status + ' ' + error); - } - }); - requests.push(promise); - } - }); - // wait for all requests to be settled, then join them together - // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed - $.when.apply($, $.map(requests, function(p) { - return p.then(null, function() { - return $.Deferred().resolveWith(this, arguments); + requests.push(promise); + } }); - })).always(function() { - timeEnd('MozillaMercurial-missing'); - // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below - var docu = ''; - docu = bugsComplete.join(''); - docu = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + docu + '
BugNoProduct/ComponentSummaryModified___Status____________
'; - - - - - var div = document.createElement('div'); - $('div.page_footer').append(div); - div.id = 'dialog'; - docu = '
' + docu + '
'; - div.innerHTML = docu; - $('#dialog').hide(); - - $(function() { - $('#dialog').dialog({ - title: 'List of modified bugs of Firefox for desktop (' + bugsComplete.length + ')', - width: '1350px' + // wait for all requests to be settled, then join them together + // Source: https://stackoverflow.com/questions/19177087/deferred-how-to-detect-when-every-promise-has-been-executed + $.when.apply($, $.map(requests, function(p) { + return p.then(null, function() { + return $.Deferred().resolveWith(this, arguments); + }); + })).always(function() { + timeEnd('MozillaMercurial-missing'); + // Variable that will contain all values of the bugsComplete array, and will be displayed in the 'dialog' below + var docu = ''; + docu = bugsComplete.join(''); + docu = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + docu + '
BugNoProduct/ComponentSummaryModified___Status____________
'; + + + + + var div = document.createElement('div'); + $('div.page_footer').append(div); + div.id = 'dialog'; + docu = '
' + docu + '
'; + div.innerHTML = docu; + $('#dialog').hide(); + + $(function() { + $('#dialog').dialog({ + title: 'List of modified bugs of Firefox for desktop (' + bugsComplete.length + ')', + width: '1350px' + }); }); - }); - - // THE CUSTOM PARSER MUST BE PUT BEFORE '$('#tbl').tablesorter ( {'' or else it wont work !!!! - // add parser through the tablesorter addParser method (for the "Last modified" column) - $.tablesorter.addParser({ - // set a unique id - id: 'dates', - is: function(s) { - return false; // return false so this parser is not auto detected - }, - format: function(s) { - // format your data for normalization - if (s !== ''){ - var number1, number2; + // THE CUSTOM PARSER MUST BE PUT BEFORE '$('#tbl').tablesorter ( {'' or else it wont work !!!! + // add parser through the tablesorter addParser method (for the "Last modified" column) + $.tablesorter.addParser({ + // set a unique id + id: 'dates', + is: function(s) { + return false; // return false so this parser is not auto detected + }, + format: function(s) { // format your data for normalization - number1 = Number((/(.{1,2}) .*/).exec(s)[1]); + if (s !== ''){ + var number1, number2; + // format your data for normalization + number1 = Number((/(.{1,2}) .*/).exec(s)[1]); - if (s.match(/A few seconds ago/)) { number2 = 0;} - else if (s.match(/(.*)seconds?.*/)) { number2 = 1;} - else if (s.match(/(.*)minutes?.*/)) {number2 = 60;} - else if (s.match(/(.*)hours?.*/)) { number2 = 3600;} - else if (s.match(/(.*)days?.*/)) { number2 = 86400;} - else if (s.match(/(.*)months?.*/)) { number2 = 30 * 86400;} - else if (s.match(/(.*)years?.*/)) {number2 = 365 * 30 * 86400;} - return number1 * number2; - } - }, - // set type, either numeric or text - type: 'numeric' - }); + if (s.match(/A few seconds ago/)) { number2 = 0;} + else if (s.match(/(.*)seconds?.*/)) { number2 = 1;} + else if (s.match(/(.*)minutes?.*/)) {number2 = 60;} + else if (s.match(/(.*)hours?.*/)) { number2 = 3600;} + else if (s.match(/(.*)days?.*/)) { number2 = 86400;} + else if (s.match(/(.*)months?.*/)) { number2 = 30 * 86400;} + else if (s.match(/(.*)years?.*/)) {number2 = 365 * 30 * 86400;} + return number1 * number2; + } + }, + // set type, either numeric or text + type: 'numeric' + }); - // make table sortable - $('#tbl').tablesorter({ - cssAsc: 'up', - cssDesc: 'down', - sortList: [[3, 0],[1, 0],[2, 0]], // in order the table to be sorted by default by column 3 'Modified', then by column 1 'Product/Component' and then by column 2 'Summary' - headers: {3: {sorter: 'dates'}}, - initialized: function() { - var mytable = document.getElementById('tbl'); - for (var i = 2, j = mytable.rows.length + 1; i < j; i++) { - if (mytable.rows[i].cells[3].innerHTML !== mytable.rows[i - 1].cells[3].innerHTML) { - for (var k = 0; k < 5; k++) { - mytable.rows[i - 1].cells[k].style.borderBottom = '1px black dotted'; + + // make table sortable + $('#tbl').tablesorter({ + cssAsc: 'up', + cssDesc: 'down', + sortList: [[3, 0],[1, 0],[2, 0]], // in order the table to be sorted by default by column 3 'Modified', then by column 1 'Product/Component' and then by column 2 'Summary' + headers: {3: {sorter: 'dates'}}, + initialized: function() { + var mytable = document.getElementById('tbl'); + for (var i = 2, j = mytable.rows.length + 1; i < j; i++) { + if (mytable.rows[i].cells[3].innerHTML !== mytable.rows[i - 1].cells[3].innerHTML) { + for (var k = 0; k < 5; k++) { + mytable.rows[i - 1].cells[k].style.borderBottom = '1px black dotted'; + } } } } - } - }); + }); - log('ALL IS DONE'); - timeEnd('MozillaMercurial'); + log('ALL IS DONE'); + timeEnd('MozillaMercurial'); - }); + }); + } }); From 80db3a485aa05a434d0e80bc5171d6bbc75fa4d5 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 25 Aug 2020 19:05:35 +0300 Subject: [PATCH 017/245] Minor edits in metadata --- BugMeNot/BugMeNot.user.js | 2 +- ...top_-_list_fixed_bugs_in_Mercurial.user.js | 2 +- ...ugs_in_Mercurial_as_sortable_table.user.js | 2 +- ...ugs_in_Mercurial_as_sortable_table.user.js | 2 +- ...Greasyfork_profile_pages_-_for_Cik.user.js | 36 +++++++++---------- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/BugMeNot/BugMeNot.user.js b/BugMeNot/BugMeNot.user.js index cd828ae..56044fa 100644 --- a/BugMeNot/BugMeNot.user.js +++ b/BugMeNot/BugMeNot.user.js @@ -2,7 +2,7 @@ // @name BugMeNot // @namespace darkred // @version 2017.12.15 -// @description It integrates BugMeNot into any login form (it retrieves all matching logins from bugmenot.com and autofills the login form) +// @description Integrates BugMeNot into any login form (it retrieves all matching logins from bugmenot.com and autofills the login form) // @authors hosts, Matt McCarthy, darkred // @license MIT // @include http://* diff --git a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js index a1cc5f0..8b4bfec 100644 --- a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js +++ b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial.user.js @@ -4,7 +4,7 @@ // @version 4.2.9 // @date 2020.8.25 // @description Lists fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs -// @authors darkred, johnp +// @author darkred, johnp // @license MIT // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL diff --git a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js index 342e87a..3c616ce 100644 --- a/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js +++ b/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table.user.js @@ -4,7 +4,7 @@ // @version 5.5.9.2 // @date 2020.8.25 // @description Lists (as sortable table) fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs -// @authors darkred, johnp +// @author darkred, johnp // @license MIT // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL diff --git a/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js b/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js index 7772092..f66838a 100644 --- a/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js +++ b/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table.user.js @@ -4,7 +4,7 @@ // @version 5.5.9.2 // @date 2020.8.25 // @description Lists (as sortable table) bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs -// @authors darkred, johnp +// @author darkred, johnp // @license MIT // @include /^https?:\/\/hg\.mozilla\.org.*pushloghtml.*/ // @grant GM_getResourceURL diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js index b97a52a..deb240e 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js @@ -1,22 +1,22 @@ // ==UserScript== -// @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork -// @namespace darkred -// @license MIT -// @version 2020.7.30 -// @description It adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). -// @author darkred -// @include https://greasyfork.org/*/users/* -// @include https://greasyfork.org/*/forum/messages/add -// @include https://sleazyfork.org/*/users/* -// @include https://sleazyfork.org/*/forum/messages/add -// @require https://greasyfork.org/scripts/24818-bililiterange/code/bililiteRange.js -// @require https://code.jquery.com/jquery-3.1.1.min.js -// @require https://greasyfork.org/scripts/24819-jquery-simulate/code/jquery-simulate.js -// @require https://greasyfork.org/scripts/24820-jquery-simulate-ext/code/jquery-simulate-ext.js -// @require https://greasyfork.org/scripts/24822-jquery-simulate-key-sequence-js/code/jquerysimulatekey-sequencejs.js -// @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js -// @run-at document-idle -// @grant none +// @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork +// @namespace darkred +// @version 2020.7.30 +// @description Adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). +// @author darkred +// @license MIT +// @include https://greasyfork.org/*/users/* +// @include https://greasyfork.org/*/forum/messages/add +// @include https://sleazyfork.org/*/users/* +// @include https://sleazyfork.org/*/forum/messages/add +// @require https://greasyfork.org/scripts/24818-bililiterange/code/bililiteRange.js +// @require https://code.jquery.com/jquery-3.1.1.min.js +// @require https://greasyfork.org/scripts/24819-jquery-simulate/code/jquery-simulate.js +// @require https://greasyfork.org/scripts/24820-jquery-simulate-ext/code/jquery-simulate-ext.js +// @require https://greasyfork.org/scripts/24822-jquery-simulate-key-sequence-js/code/jquerysimulatekey-sequencejs.js +// @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js +// @run-at document-idle +// @grant none // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== From 186fdb35d04cb6485d44c894279615cf695202fd Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 2 Sep 2020 19:40:19 +0300 Subject: [PATCH 018/245] Update RARBG_-_convert_torrent_timestamps_to_relative_format.user.js Make the news timestamps in relative format in main homepage and in /viewnews pages . (per https://greasyfork.org/en/scripts/23493-rarbg-torrent-and-magnet-links/discussions/16187#comment-156602, thanks to Kxmode) --- ...rent_timestamps_to_relative_format.user.js | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 15b1742..7e8a720 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,14 +1,16 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.05.02 +// @version 2020.09.02 // @description Converts torrent upload timestamps to relative format // @author darkred +// @contributor Kxmode // @license MIT -// @include /^(https?:)?\/\/(www\.)?(proxy|unblocked)?rarbg((2018|2019|2020|2021)?|access(ed)?|cdn|core|data|enter|get|go|index|mirror(ed)?|p2p|prox(ied|ies|y)|prx|to(r|rrents)?|unblock(ed)?|way|web)\.(to|com|org|is)\/(torrents\.php.*|catalog\/.*|s\/.*|tv\/.*|top10)$/ +// @include /^(https?:)?\/\/(www\.)?(proxy|unblocked)?rarbg((2018|2019|2020|2021)?|access(ed)?|cdn|core|data|enter|get|go|index|mirror(ed)?|p2p|prox(ied|ies|y)|prx|to(r|rrents)?|unblock(ed)?|way|web)\.(to|com|org|is)\/((index\d{2}|torrents)\.php.*|torrent|catalog\/.*|s\/.*|tv\/.*|top10|viewnews)/ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.0/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.28/moment-timezone-with-data-10-year-range.min.js +// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== @@ -72,6 +74,18 @@ function convertToLocalTimezone(timestamps) { } -// const timestamps = document.querySelectorAll('tr.lista2 td:nth-child(3)'); -const timestamps = document.querySelectorAll('td[width="150px"]'); -convertToLocalTimezone(timestamps); + +let timestamps; +if (/index\d{2}|viewnews/.test(window.location.href)){ + + document.arrive('#top_news #newsRight > table:first-child', function() { + timestamps = document.querySelectorAll('span[class^="font-weight:300"]'); + convertToLocalTimezone(timestamps); + }); + +} else { + + timestamps = document.querySelectorAll('td[width="150px"]'); + convertToLocalTimezone(timestamps); + +} From cf5850e491d731c1d913da1e7de36e013085035a Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 2 Sep 2020 19:40:53 +0300 Subject: [PATCH 019/245] Update RARBG_-_torrent_and_magnet_links.user.js Addd lx19990999 as contributor --- .../RARBG_-_torrent_and_magnet_links.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js index b8fc8cc..8eaa831 100644 --- a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js +++ b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js @@ -4,7 +4,7 @@ // @version 2020.02.02 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred -// @contributor sxe, dandyclubs +// @contributor sxe, dandyclubs, lx19990999 // @license MIT // @include /^(https?:)?\/\/(www\.)?(proxy|unblocked)?rarbg((2018|2019|2020|2021)?|access(ed)?|cdn|core|data|enter|get|go|index|mirror(ed)?|p2p|prox(ied|ies|y)|prx|to(r|rrents)?|unblock(ed)?|way|web)\.(to|com|org|is)\/(torrents\.php.*|catalog\/.*|s\/.*|tv\/.*|top10)$/ // @grant none From e309bfca60002247d6edf177c6a29ace97bb71d7 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 5 Sep 2020 19:26:35 +0300 Subject: [PATCH 020/245] Revert "Update RARBG_-_convert_torrent_timestamps_to_relative_format.user.js" This reverts commit 186fdb35d04cb6485d44c894279615cf695202fd. --- ...rent_timestamps_to_relative_format.user.js | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 7e8a720..15b1742 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,16 +1,14 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.09.02 +// @version 2020.05.02 // @description Converts torrent upload timestamps to relative format // @author darkred -// @contributor Kxmode // @license MIT -// @include /^(https?:)?\/\/(www\.)?(proxy|unblocked)?rarbg((2018|2019|2020|2021)?|access(ed)?|cdn|core|data|enter|get|go|index|mirror(ed)?|p2p|prox(ied|ies|y)|prx|to(r|rrents)?|unblock(ed)?|way|web)\.(to|com|org|is)\/((index\d{2}|torrents)\.php.*|torrent|catalog\/.*|s\/.*|tv\/.*|top10|viewnews)/ +// @include /^(https?:)?\/\/(www\.)?(proxy|unblocked)?rarbg((2018|2019|2020|2021)?|access(ed)?|cdn|core|data|enter|get|go|index|mirror(ed)?|p2p|prox(ied|ies|y)|prx|to(r|rrents)?|unblock(ed)?|way|web)\.(to|com|org|is)\/(torrents\.php.*|catalog\/.*|s\/.*|tv\/.*|top10)$/ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.0/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.28/moment-timezone-with-data-10-year-range.min.js -// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== @@ -74,18 +72,6 @@ function convertToLocalTimezone(timestamps) { } - -let timestamps; -if (/index\d{2}|viewnews/.test(window.location.href)){ - - document.arrive('#top_news #newsRight > table:first-child', function() { - timestamps = document.querySelectorAll('span[class^="font-weight:300"]'); - convertToLocalTimezone(timestamps); - }); - -} else { - - timestamps = document.querySelectorAll('td[width="150px"]'); - convertToLocalTimezone(timestamps); - -} +// const timestamps = document.querySelectorAll('tr.lista2 td:nth-child(3)'); +const timestamps = document.querySelectorAll('td[width="150px"]'); +convertToLocalTimezone(timestamps); From 11b9aa3035da6756a86b3cc63fcde1082c6dde56 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 5 Sep 2020 23:32:10 +0300 Subject: [PATCH 021/245] Update RARBG_-_convert_torrent_timestamps_to_relative_format.user.js --- ...ARBG_-_convert_torrent_timestamps_to_relative_format.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 15b1742..0b03d26 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.05.02 +// @version 2020.09.02 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT From af2cc130052ccd78c05d5a9ce6ce6d4aeb45c276 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 21 Sep 2020 20:05:06 +0300 Subject: [PATCH 022/245] Update Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables.user.js Added Search filter (mouseover below a column header to reveal the search input, case insensitive) --- ...s_column_split_and_sortable_tables.user.js | 89 +++++++++++++++++-- 1 file changed, 83 insertions(+), 6 deletions(-) diff --git a/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables.user.js b/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables.user.js index 48575a7..ea51d4e 100644 --- a/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables.user.js +++ b/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables.user.js @@ -1,16 +1,18 @@ // ==UserScript== // @name Metal Archives discography pages - Reviews column split and sortable tables // @namespace darkred -// @version 2.0.7 -// @date 2019.10.27 +// @version 2.1.0 +// @date 2020.9.20 // @description Splits the Reviews column into Reviews(count) and Ratings and makes the tables in all discography tabs sortable. // @author RobG, Brock Adams, Mottie, darkred // @license MIT // @include /^https?:\/\/www\.metal-archives\.com/bands?/.*$/ // @grant GM_addStyle -// @require https://code.jquery.com/jquery-1.11.1.min.js +// @require https://code.jquery.com/jquery-3.5.1.min.js // @require https://greasyfork.org/scripts/12036-mutation-summary/code/Mutation%20Summary.js -// @require https://greasyfork.org/scripts/5844-tablesorter/code/TableSorter.js +// @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js +// @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.widgets.min.js +// @require https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/extras/jquery.tablesorter.pager.min.js // // This userscript uses jQuery v1.11.1, // the jQuery plugin 'tablesorter' (forked by Rob Garrison (Mottie)) http://mottie.github.io/tablesorter/docs/index.html , @@ -43,6 +45,68 @@ thead th.down { .discog th:nth-last-child(1){ width: 35px; } +.tablesorter .filtered { + display: none; +} + + + +/* All of the following css is already contained within each theme file; modify it as desired */ +/* filter row */ +.tablesorter-filter-row td { + background: #000; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} + +/* hidden filter row */ +.tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-filter { + width: 95%; + height: inherit; + margin: 4px; + padding: 4px; + background-color: #1b0b0b; + color: #c2b8af; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} + `; $('head').append(stylesheet); @@ -107,13 +171,26 @@ function appendColumn(jNode) { } } + + // TODO: are you login? Then header0: sorter: false + let login; + // if login form doesn't exist (=you have login), then disable sorting (NOT filtering too) on column 0 ("Edit/Tools") + $('#login_form > div > button').length === 0 ? login = false : login = true; + // STEP 3: MAKE THE DISCOGRAPHY TABLE SORTABLE (using the jQuery plugin "tablesorter") $(tbl).tablesorter ( { cssAsc: 'up', cssDesc: 'down', - // headers: { + headers: { // 0: {sorter: false} - // } + 0: { sorter: login, + filter: login} + }, + widgets: ['filter'], + ignoreCase: true, + widgetOptions : { + filter_hideFilters : true, + }, } ); } From 5e14b4f69407280f5858959cca1febad02a37bc4 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 1 Nov 2020 19:46:31 +0200 Subject: [PATCH 023/245] Update RARBG_-_convert_torrent_timestamps_to_relative_format.user.js The RARBG server timezone has been changed to 'Etc/GMT-1' (+01:00 +01:00 (=no DST)) --- ...G_-_convert_torrent_timestamps_to_relative_format.user.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 0b03d26..8c0e092 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.09.02 +// @version 2020.11.01 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -22,7 +22,8 @@ // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) -const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) From a10475bdd3b5774b1dc7e456cae5ed78d0600589 Mon Sep 17 00:00:00 2001 From: Kid <44045911+kidonng@users.noreply.github.com> Date: Tue, 17 Nov 2020 14:46:50 +0800 Subject: [PATCH 024/245] Fix a broken link and style --- .../README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GitHub_Confirmations_before_submitting_issues_and_comments/README.md b/GitHub_Confirmations_before_submitting_issues_and_comments/README.md index b7a07e9..3c78fa0 100644 --- a/GitHub_Confirmations_before_submitting_issues_and_comments/README.md +++ b/GitHub_Confirmations_before_submitting_issues_and_comments/README.md @@ -12,4 +12,5 @@ i.e. it applies in these 3 cases: - when attempting to submit a new comment (while having focus in the new comment textarea) via Ctrl+Enter
-Thanks to trespassersW for his help [here](https://greasyfork.org/en/forum/discussion/comment/25063/#Comment_25063). + +Thanks to trespassersW for his help [here](https://greasyfork.org/en/discussions/development/55889-script-for-creating-a-confirmation-popup-when-submitting-closing-an-issue-via-ctrl-enter-in-github#comment-145065). From 2ecd2cf7a3f704be7db4bcb154ac328844656414 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 30 Nov 2020 21:22:30 +0200 Subject: [PATCH 025/245] Update ProtonMail_-_remove_forced_signature.user.js Removed support for beta.protonmail.com for the time being because of https://github.com/darkred/Userscripts/issues/13 --- .../ProtonMail_-_remove_forced_signature.user.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index 06791db..4f675c0 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -1,12 +1,11 @@ // ==UserScript== // @name ProtonMail - remove forced signature // @namespace darkred -// @version 2020.06.29 +// @version 2020.30.11 // @description Removes the forced ProtonMail signature from the 'New message' textboxes // @author darkred // @license MIT // @include https://mail.protonmail.com/* -// @include https://beta.protonmail.com/* // @grant none // @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js // @supportURL https://github.com/darkred/Userscripts/issues From 4dabca1fae564bea8b0f41e93d935d6f91c776d1 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 1 Dec 2020 00:45:06 +0200 Subject: [PATCH 026/245] Update ProtonMail_-_remove_forced_signature.user.js Fix https://github.com/darkred/Userscripts/issues/13 --- ...otonMail_-_remove_forced_signature.user.js | 52 +++++++++++++++++-- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index 4f675c0..4d357e2 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -1,20 +1,62 @@ // ==UserScript== // @name ProtonMail - remove forced signature // @namespace darkred -// @version 2020.30.11 +// @version 2020.12.01 // @description Removes the forced ProtonMail signature from the 'New message' textboxes // @author darkred // @license MIT // @include https://mail.protonmail.com/* +// @include https://beta.protonmail.com/* // @grant none // @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js // @supportURL https://github.com/darkred/Userscripts/issues // @icon https://protonmail.com/images/favicon.ico // ==/UserScript== +const isInBeta = window.location.href.includes('beta'); + +var elementToWatch; +isInBeta? elementToWatch = '.squireIframe' : elementToWatch = '.squireToolbar-row-1'; + + // wait for the formatting toolbar element to be created -document.arrive('.squireToolbar-row-1', function () { - let editorIframe = document.querySelector('.squireIframe').contentDocument; - editorIframe.querySelector('.protonmail_signature_block').remove(); // remove the signature element - editorIframe.querySelector('body > div:last-child').remove(); // remove (the element that contains a) leftover newline (
) +document.arrive(elementToWatch, function () { + + // debugger + + let iframe; + + + + if (!isInBeta) { + + iframe = document.querySelector('.squireIframe').contentDocument; + iframe.querySelector('.protonmail_signature_block').remove(); // remove the signature element + iframe.querySelector('body > div:last-child').remove(); // remove (the element that contains a) leftover newline (
) + + } else { + + iframe = this.contentDocument; + + // Setup the config + const config = { + childList: true, + subtree: true + }; + + const callback = function callback(mutationList, observer) { + mutationList.forEach( (mutation) => { + mutation.addedNodes.forEach( (node) => { + if (node.className === 'protonmail_signature_block') { + node.remove(); + observer.disconnect(); + }}); + + }); + }; + + // Watch the iframe for changes + const observer = new MutationObserver(callback); + observer.observe(iframe, config); + } }); From f70520da944c2d39a52dadc1cfd62d66b741a93c Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 4 Dec 2020 19:51:47 +0200 Subject: [PATCH 027/245] Update RARBG_-_various_tweaks.user.js - maintain newlines and commas in retrieved IMDb summaries from rarbg pages - don't reuse irrelevant existing/previously stored RT plot - fix for adding retrieved RT Critics Consensus (in search-by-imdb-id pages) when no RT row is present --- .../RARBG_-_various_tweaks.user.js | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index f9f41d3..d28b5d0 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2020.05.30.1 +// @version 2020.12.04 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -100,15 +100,15 @@ if (!isOnTorrentListPage) { var runtime = runtimeNode.next().html(); var summaryNode = $(".header2:contains('IMDb Summary:')"); if (runtime !== undefined) { - summaryNode.next().text(function( index, string ) { - return string + ' ( ' + runtime + ' )'; - }); + summaryNode.next().text( + summaryNode.next()[0].innerText + ' ( ' + runtime + ' )' + ); } // remove all '|' from the IMDb Summary text - $(".header2:contains('IMDb Summary:')").next().text(function( index,string ) { - return string.replace(/\|/g,''); + summaryNode.next().text(function( index,string ) { + return string.replace(/\|/g,','); }); @@ -260,10 +260,13 @@ if (!isOnTorrentListPage) { let imdbPlot = $(container).find(".header2:contains('Plot:')").filter(function() { // https://stackoverflow.com/questions/8978411/jquery-ajax-findp-in-responsetext return $(this).text() === "Plot:"; // https://stackoverflow.com/questions/15364298/select-element-by-exact-match-of-its-content/18462522 - }).next().html(); + }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element if (imdbPlot !== undefined){ imdbPlot = removePipesLinebreaks(imdbPlot); // remove all '|', and replace all newlines with spaces sessionStorage.setItem("imdbPlot", imdbPlot); + } else { // never actually needed: all Recommended movies have IMDb plot + sessionStorage.removeItem("imdbPlot"); + imdbPlot = ''; } let rtPlot = $(container).find(".header2:contains('Rotten Plot:')").next().html(); @@ -271,6 +274,9 @@ if (!isOnTorrentListPage) { if (rtPlot !== undefined){ rtPlot = removePipesLinebreaks(rtPlot); sessionStorage.setItem("rtPlot", rtPlot); + } else { + sessionStorage.removeItem("rtPlot"); + rtPlot = ''; } window.location.href = links[i].href; // https://www.w3schools.com/howto/howto_js_redirect_webpage.asp @@ -288,7 +294,7 @@ if (!isOnTorrentListPage) { function removePipesLinebreaks(s){ if (s) { - return s.replace(/\|/g,'').replace(/
/g,' '); + return s.replace(/\|/g,',').replace(/\n/g,' '); } } @@ -303,12 +309,12 @@ function makeBold(s, regex){ const isOnSearchbyIMDbIdPage = window.location.href.includes('/torrents.php?imdb='); let imdbPlotStored = sessionStorage.getItem("imdbPlot"); -if (imdbPlotStored === "undefined") { +if (imdbPlotStored === undefined) { sessionStorage.removeItem("imdbPlot"); imdbPlotStored = ''; } let rtPlotStored = sessionStorage.getItem("rtPlot"); -if (rtPlotStored === "undefined") { +if (rtPlotStored === undefined) { sessionStorage.removeItem("rtPlot"); rtPlotStored = ''; } @@ -344,9 +350,17 @@ if (isOnSearchbyIMDbIdPage) { imdbPlotStored = removePipesLinebreaks(imdbPlotStored); $(imdbRatingElement).next().after("IMDb Summary: " + imdbPlotStored + '
'); // https://stackoverflow.com/questions/6617829/insertadjacenthtml-in-jquery + + // Example list page with all possible rows: https://rarbgproxy.org/torrents.php?imdb=tt6146586 i.e. + // IMDb Rating: 7.4/10 + // IMDb Summary: + // RT Critics Avg: + // RT Tomatometer: + // RT Critics Consensus: + if (rtPlotStored) { rtPlotStored = removePipesLinebreaks(rtPlotStored); - let rtRatingElement = $("b:contains('RT Critics Avg:')") || $("b:contains('RT Tomatometer:')"); + let rtRatingElement = $("b:contains('RT Critics Avg:'), b:contains('RT Tomatometer:'), b:contains('IMDb Summary:')").last() ; // alternative selector for when no RT row is present, e.g. https://rarbgproxy.org/torrents.php?imdb=tt11057644 var br = ''; if ($("b:contains('RT Tomatometer:')").length !== 0){ br = '
'; @@ -355,7 +369,7 @@ if (isOnSearchbyIMDbIdPage) { } - // new xhr for when plot is not already retrieved (=when opening a link from the Recomended area in a new tab) + // new xhr for when plot is not already retrieved (=when opening a link from the Recommended area in a new tab) } else if (document.querySelector('.lista2t').rows.length > 1) { // if searchbyIMDbResultsTableLength has results let tLink = document.querySelector('.lista2t').rows[1].cells[1].children[0].href; // the URL in the results table first row @@ -369,7 +383,7 @@ if (isOnSearchbyIMDbIdPage) { let imdbPlot = $(container).find(".header2:contains('Plot:')").filter(function() { // https://stackoverflow.com/questions/8978411/jquery-ajax-findp-in-responsetext return $(this).text() === "Plot:"; // https://stackoverflow.com/questions/15364298/select-element-by-exact-match-of-its-content/18462522 (in order to only select IMDb's plain "Plot", not "Rotten Plot", too ) - }).next().html(); + }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element imdbPlot = removePipesLinebreaks(imdbPlot); sessionStorage.setItem("imdbPlot", imdbPlot); @@ -381,7 +395,7 @@ if (isOnSearchbyIMDbIdPage) { $(imdbRatingElement).next().after("IMDb Summary: " + imdbPlot + '
'); if (!rtPlotStored) { - let rtRatingElement = $("b:contains('RT Critics Avg:')") || $("b:contains('RT Tomatometer:')"); + let rtRatingElement = $("b:contains('RT Critics Avg:'), b:contains('RT Tomatometer:'), b:contains('IMDb Summary:')").last() ; // if no RT row is present var br = ''; if ($("b:contains('RT Tomatometer:')").length !== 0){ br = '
'; From 2b70a9aea7997663d38432c86ebc715baa312acb Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 8 Dec 2020 00:01:30 +0200 Subject: [PATCH 028/245] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index e4fa6f0..972827f 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -11,6 +11,7 @@ assignees: '' When making feature requests: - Be as specific as possible, don't make me have to guess what you want. +- Before you request to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. --> From 5f87a3947076c1885d70e704650ec82f1f4d8d63 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 15 Jan 2021 17:11:24 +0200 Subject: [PATCH 029/245] Update Google_youtube_search_link.user.js Updated the menuContainer selector (per https://greasyfork.org/en/scripts/24895-google-youtube-search-link/discussions/72966) --- Google_youtube_search_link/Google_youtube_search_link.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Google_youtube_search_link/Google_youtube_search_link.user.js b/Google_youtube_search_link/Google_youtube_search_link.user.js index b7657a1..d6db69f 100644 --- a/Google_youtube_search_link/Google_youtube_search_link.user.js +++ b/Google_youtube_search_link/Google_youtube_search_link.user.js @@ -4,7 +4,7 @@ // @author wOxxOm, darkred // @license MIT // @description Adds a YouTube search link next to the Videos link (e.g. Web, Images, Videos, YouTube, News, Maps, Shopping, ...) -// @version 2019.11.1 +// @version 2021.1.15 // @include https://www.google.com/* // @include /https?:\/\/(www\.)?google\.(com|(?:com?\.)?\w\w)\/.*/ // @grant none @@ -24,7 +24,7 @@ function process(mutations) { if (!menu) return; - var menuContainer = menu.querySelector('.hdtb-imb').parentNode; + var menuContainer = menu.querySelector('#hdtb-msb-vis').parentNode; if (!youtube) { var q = '', From 54f7dfcc24c9d6ad9a429f8fe99c180a98ff3a49 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 15 Jan 2021 18:35:09 +0200 Subject: [PATCH 030/245] Update GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js Updated the script for the new GreasyFork layout: - simplified the script - commented out all no longer needed 'require' scripts, as well as every no longer needed functionality (watch for page changes / for element creation, and simulated keypresses functionality) --- ...Greasyfork_profile_pages_-_for_Cik.user.js | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js index deb240e..0a3761f 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork // @namespace darkred -// @version 2020.7.30 +// @version 2021.1.15 // @description Adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). // @author darkred // @license MIT @@ -9,16 +9,23 @@ // @include https://greasyfork.org/*/forum/messages/add // @include https://sleazyfork.org/*/users/* // @include https://sleazyfork.org/*/forum/messages/add +// @run-at document-idle +// @grant none +// @supportURL https://github.com/darkred/Userscripts/issues +// ==/UserScript== + + +/* + +No longer needed '@require' scripts in the new GreasyFork layout + // @require https://greasyfork.org/scripts/24818-bililiterange/code/bililiteRange.js // @require https://code.jquery.com/jquery-3.1.1.min.js // @require https://greasyfork.org/scripts/24819-jquery-simulate/code/jquery-simulate.js // @require https://greasyfork.org/scripts/24820-jquery-simulate-ext/code/jquery-simulate-ext.js // @require https://greasyfork.org/scripts/24822-jquery-simulate-key-sequence-js/code/jquerysimulatekey-sequencejs.js // @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js -// @run-at document-idle -// @grant none -// @supportURL https://github.com/darkred/Userscripts/issues -// ==/UserScript== +*/ var yourProfileNameElement = document.querySelector('.user-profile-link > a:nth-child(1)'); if (yourProfileNameElement !== null) { @@ -31,22 +38,30 @@ if (targetProfileNameElement !== null) { } if (window.location.href.indexOf('users') !== -1 // if current URL is a profile page && yourProfileName !== targetProfileName) { // ... and this profile page is not yours - sessionStorage.setItem('recipient', targetProfileName); // store in sessionStorage the profileName (it will be inserted in the 'Recipients' textbox ) -after you press the button- - var a = document.createElement('input'); + // sessionStorage.setItem('recipient', targetProfileName); // store in sessionStorage the profileName (it will be inserted in the 'Recipients' textbox ) -after you press the button- + var a = document.createElement('a'); targetProfileNameElement.appendChild(a); a.style.padding = '0px 12px'; - a.setAttribute('type', 'image'); + // a.setAttribute('type', 'image'); + var img = document.createElement('img'); + a.appendChild(img); // http://i.imgur.com/ZU0xS0c.jpg - a.setAttribute('src', 'data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAATABcDAREAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAICf/EACgQAAEEAQMCBQUAAAAAAAAAAAECAwQFEQAGEgcIEyEiMUEUNmGl4//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDof1i6ryOlkCHIi0YvlvJdccjpl+A4203x5OAcFFQHMZx7A59skAMDvnyfsj9t/DQPnS/fUnqDtxyxmVQpJbb5YdgGT462jxSoBZ4p4qIWDxIyMjPn5ADTuZg3ibzZN1R0c+7kVf1q0twoy3gh1QZDZcCQfTkFWD5K4lPzoAqDXblqLJq7r+kVoxuFDiXA85AkOQ0KBBKm43h+lR/KylOfSkYGA0f2x0s6m2demdVz6gzLt+W1Gsm1oeCFNM+/IAqwQpPL5450DBoLQWg//9k='); - a.id = 'pmButton'; + img.setAttribute('src', 'data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAATABcDAREAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAICf/EACgQAAEEAQMCBQUAAAAAAAAAAAECAwQFEQAGEgcIEyEiMUEUNmGl4//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDof1i6ryOlkCHIi0YvlvJdccjpl+A4203x5OAcFFQHMZx7A59skAMDvnyfsj9t/DQPnS/fUnqDtxyxmVQpJbb5YdgGT462jxSoBZ4p4qIWDxIyMjPn5ADTuZg3ibzZN1R0c+7kVf1q0twoy3gh1QZDZcCQfTkFWD5K4lPzoAqDXblqLJq7r+kVoxuFDiXA85AkOQ0KBBKm43h+lR/KylOfSkYGA0f2x0s6m2demdVz6gzLt+W1Gsm1oeCFNM+/IAqwQpPL5450DBoLQWg//9k='); + // a.id = 'pmButton'; a.title = 'Send PM to ' + targetProfileName; + a.href = sendMessageToTargetURL; + a.target = '_blank'; + // a.preventDefault; // var lang = String(window.location).match(/^https:\/\/greasyfork\.org\/([a-zA-Z-]+)\/.*$/)[1]; + /* document.getElementById('pmButton').addEventListener('click', function() { // window.open('https://greasyfork.org/' + lang + '/forum/messages/add', '_self'); window.open(sendMessageToTargetURL); }); + */ } +/* if (window.location.href.indexOf('messages') !== -1) { // if current URL is a 'send PM' page document.querySelector('#token-input-Form_To').focus(); document.querySelector('#token-input-Form_To').style.width = 'auto'; @@ -67,3 +82,4 @@ function triggerMouseEvent (node, eventType) { clickEvent.initEvent (eventType, true, true); node.dispatchEvent (clickEvent); } +*/ \ No newline at end of file From 502ffce272d1d7caf90143bcfcdbca58c68a740a Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 16 Jan 2021 00:03:18 +0200 Subject: [PATCH 031/245] Update GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js Open "Create a new conversation" page instead of view your recent conversation with member --- ...Greasyfork_profile_pages_-_for_Cik.user.js | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js index 0a3761f..ac80864 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork // @namespace darkred -// @version 2021.1.15 +// @version 2021.1.16 // @description Adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). // @author darkred // @license MIT @@ -30,53 +30,65 @@ No longer needed '@require' scripts in the new GreasyFork layout var yourProfileNameElement = document.querySelector('.user-profile-link > a:nth-child(1)'); if (yourProfileNameElement !== null) { var yourProfileName = yourProfileNameElement.innerHTML; + var yourProfileURL = yourProfileNameElement.href; + // https://greasyfork.org/en/users/2160-darkred + // https://greasyfork.org/en/users/2160-darkred/conversations/new + var yourCreateNewConversationURL = yourProfileURL + '/conversations/new' ; } + var targetProfileNameElement = document.querySelector('.text-content > h2'); if (targetProfileNameElement !== null) { - var targetProfileName = targetProfileNameElement.firstChild.textContent.replace('\'s Profile', ''); // the .firstChild is for mods profile pages, e.g. https://greasyfork.org/en/users/1-jasonbarnabe , https://greasyfork.org/en/users/2159-woxxom - var sendMessageToTargetURL = document.querySelector('#about-user > p > a').href; + // var targetProfileName = targetProfileNameElement.firstChild.textContent.replace('\'s Profile', ''); // the .firstChild is for mods profile pages, e.g. https://greasyfork.org/en/users/1-jasonbarnabe , https://greasyfork.org/en/users/2159-woxxom + var targetProfileName = targetProfileNameElement.firstChild.textContent; // the .firstChild is for mods profile pages, e.g. https://greasyfork.org/en/users/1-jasonbarnabe , https://greasyfork.org/en/users/2159-woxxom } + + if (window.location.href.indexOf('users') !== -1 // if current URL is a profile page - && yourProfileName !== targetProfileName) { // ... and this profile page is not yours - // sessionStorage.setItem('recipient', targetProfileName); // store in sessionStorage the profileName (it will be inserted in the 'Recipients' textbox ) -after you press the button- + && yourProfileName !== targetProfileName // ... and this profile page is not yours + && window.location.href !== yourProfileURL + '/conversations' // ... and this profile page is not your conversations page + && window.location.href.indexOf('conversations/new') === -1) { // .. and this page is not a 'Create a new conversation' page + sessionStorage.setItem('recipient', targetProfileName); // store in sessionStorage the profileName (it will be inserted in the 'Recipients' textbox ) -after you press the button- var a = document.createElement('a'); targetProfileNameElement.appendChild(a); a.style.padding = '0px 12px'; - // a.setAttribute('type', 'image'); var img = document.createElement('img'); a.appendChild(img); // http://i.imgur.com/ZU0xS0c.jpg img.setAttribute('src', 'data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAATABcDAREAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAICf/EACgQAAEEAQMCBQUAAAAAAAAAAAECAwQFEQAGEgcIEyEiMUEUNmGl4//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDof1i6ryOlkCHIi0YvlvJdccjpl+A4203x5OAcFFQHMZx7A59skAMDvnyfsj9t/DQPnS/fUnqDtxyxmVQpJbb5YdgGT462jxSoBZ4p4qIWDxIyMjPn5ADTuZg3ibzZN1R0c+7kVf1q0twoy3gh1QZDZcCQfTkFWD5K4lPzoAqDXblqLJq7r+kVoxuFDiXA85AkOQ0KBBKm43h+lR/KylOfSkYGA0f2x0s6m2demdVz6gzLt+W1Gsm1oeCFNM+/IAqwQpPL5450DBoLQWg//9k='); - // a.id = 'pmButton'; + a.id = 'pmButton'; a.title = 'Send PM to ' + targetProfileName; - a.href = sendMessageToTargetURL; - a.target = '_blank'; - // a.preventDefault; + a.href = 'javascript:void(0)'; // var lang = String(window.location).match(/^https:\/\/greasyfork\.org\/([a-zA-Z-]+)\/.*$/)[1]; - /* + document.getElementById('pmButton').addEventListener('click', function() { - // window.open('https://greasyfork.org/' + lang + '/forum/messages/add', '_self'); - window.open(sendMessageToTargetURL); + window.open(yourCreateNewConversationURL, '_self'); // force open link in same tab + // window.open(sendMessageToTargetURL, '_blank'); // force open link in new tab }); - */ + } -/* -if (window.location.href.indexOf('messages') !== -1) { // if current URL is a 'send PM' page - document.querySelector('#token-input-Form_To').focus(); - document.querySelector('#token-input-Form_To').style.width = 'auto'; +// if (window.location.href.indexOf('messages') !== -1) { // if current URL is a 'send PM' page +if (window.location.href.indexOf('conversations/new') !== -1) { // if current URL is a 'Create a new conversation' page + + const bodyTextarea = document.querySelector('#conversation_messages_attributes_0_content'); + bodyTextarea.focus(); - // document.querySelector('#token-input-Form_To').value = sessionStorage.getItem('recipient'); + const userInput = document.querySelector('#conversation_user_input'); var recipient = sessionStorage.getItem('recipient'); - $('#token-input-Form_To').simulate('key-sequence', { sequence: recipient, delay: 1 }); + if (recipient !== 'undefined') { + userInput.value = recipient; + } + /* document.arrive('.token-input-selected-dropdown-item', function () { triggerMouseEvent (document.querySelector('.token-input-selected-dropdown-item'), 'mousedown'); }); + */ } +/* function triggerMouseEvent (node, eventType) { var clickEvent = document.createEvent ('MouseEvents'); clickEvent.initEvent (eventType, true, true); From 40cab3d45d5aed4b94b4126750f4baa5f0d51496 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 20:18:44 +0200 Subject: [PATCH 032/245] (1337X - convert torrent timestamps to relative format) Initial publish --- ...rent_timestamps_to_relative_format.user.js | 98 +++++++++++++++++++ .../README.md | 13 +++ ...nt-timezone-with-data-10-year-range.min.js | 1 + .../moment.min.js | 2 + 4 files changed, 114 insertions(+) create mode 100644 1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js create mode 100644 1337X_-_convert_torrent_timestamps_to_relative_format/README.md create mode 100644 1337X_-_convert_torrent_timestamps_to_relative_format/moment-timezone-with-data-10-year-range.min.js create mode 100644 1337X_-_convert_torrent_timestamps_to_relative_format/moment.min.js diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js new file mode 100644 index 0000000..8d1ccd2 --- /dev/null +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -0,0 +1,98 @@ +// ==UserScript== +// @name 1337X - convert torrent timestamps to relative format +// @namespace darkred +// @version 2020.12.07 +// @description Converts torrent upload timestamps to relative format +// @author darkred +// @license MIT +// @include /^https?://1337x\.to/(home|search|sort-search|trending|cat|top-100).*$/ +// @grant none +// @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js +// @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data-10-year-range.min.js +// @supportURL https://github.com/darkred/Userscripts/issues +// ==/UserScript== + +'use strict'; +/* global moment */ + + + + + +// 11:59am ---> h:hha +// 10am Oct. 30th ---> haA MMM. Do +// 11pm Nov. 4th +// Oct. 31st '20 + + + +// Based on the timestamp on the footer of each RARBG page --> "Sat, 01 May 2020 20:14:56 +0200", +// the script takes that the server time is GMT+2 and that it doesn't take DST. +// Also, the script uses the 'moment-timezone' library as it takes DST offsets into account when converting the timestamps to user/local timezone. + +// This is no typo: +// const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) +// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) + +const serverTimezone = 'Etc/GMT-1'; + +const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) +alert(localTimezone) + +// const format = 'MM/DD/YYYY HH:mm:ss'; +// const format = 'YYYY-MM-DD HH:mm:ss'; +moment.locale('en'); +const format = ['h:mma', 'ha MMM. Do', 'MMM. Do \'YY']; + +// Customize the strings in the locale to display "1 minute ago" instead of "a minute ago" (https://github.com/moment/moment/issues/3764#issuecomment-279928245) +moment.updateLocale('en', { + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'seconds', + m: '1 minute', + mm: '%d minutes', + h: '1 hour', + hh: '%d hours', + d: '1 day', + dd: '%d days', + M: '1 month', + MM: '%d months', + y: '1 year', + yy: '%d years' + } +}); + + +function convertToLocalTimezone(timestamps) { + for (let i = 0; i < timestamps.length; i++) { + let initialTimestamp = timestamps[i].textContent; + if (moment(initialTimestamp, format, true).isValid()) { // As of moment.js v2.3.0, you may specify a boolean for the last argument to make Moment use strict parsing. Strict parsing requires that the format and input match exactly, including delimeters. + let convertedToLocalTimezone = moment.tz(initialTimestamp, format, serverTimezone).tz(localTimezone); + timestamps[i].textContent = convertedToLocalTimezone.fromNow(); + + // TODO + // timestamps[i].title = convertedToLocalTimezone.format(format); // <-- not working because you use MULTIPLE FORMATS !! + // timestamps[i].title = convertedToLocalTimezone.format(format[0]) || convertedToLocalTimezone.format(format[1]) || convertedToLocalTimezone.format(format[2]) ; // <-- not working because you use MULTIPLE FORMATS !! + timestamps[i].title = initialTimestamp; + // timestamps[i].title = convertedToLocalTimezone.toISOString(); // Display timestamps in tooltips in ISO 8601 format, combining date and time (https://stackoverflow.com/questions/25725019/how-do-i-format-a-date-as-iso-8601-in-moment-js/) + // timestamps[i].title = convertedToLocalTimezone.format(); + } + } + + // TODO + /* + // recalculate the relative times every 10 sec + (function(){ + for (let i = 0; i < timestamps.length; i++) { + timestamps[i].textContent = moment(timestamps[i].title).fromNow(); + } + setTimeout(arguments.callee, 1 * 60 * 1000); + })(); + */ + +} + +// const timestamps = document.querySelectorAll('tr.lista2 td:nth-child(3)'); +const timestamps = document.querySelectorAll('tbody .coll-date'); +convertToLocalTimezone(timestamps); diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/README.md b/1337X_-_convert_torrent_timestamps_to_relative_format/README.md new file mode 100644 index 0000000..51f4f19 --- /dev/null +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/README.md @@ -0,0 +1,13 @@ +This script applies to 1337X torrent lists. +- it converts torrent timestamps to relative format in local timezone. Also, it recalculates them every 10 seconds. +- The initial timestamps are still available as tooltips (on mouse hover), also converted to local timezone. + +It uses [moment.js](http://momentjs.com/) and [moment-timezone.js](http://momentjs.com/timezone/). + +Screenshot comparison: +Initial: +![](https://i.imgur.com/ZcEdXNI.jpg) +With the script: +![](https://i.imgur.com/1I027xL.jpg) + +[Hosted in GitHub](https://github.com/darkred/Userscripts) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/moment-timezone-with-data-10-year-range.min.js b/1337X_-_convert_torrent_timestamps_to_relative_format/moment-timezone-with-data-10-year-range.min.js new file mode 100644 index 0000000..5173d52 --- /dev/null +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/moment-timezone-with-data-10-year-range.min.js @@ -0,0 +1 @@ +!function(a,i){"use strict";"object"==typeof module&&module.exports?module.exports=i(require("moment")):"function"==typeof define&&define.amd?define(["moment"],i):i(a.moment)}(this,function(c){"use strict";void 0===c.version&&c.default&&(c=c.default);var i,A={},n={},t={},s={},u={};c&&"string"==typeof c.version||O("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/");var a=c.version.split("."),e=+a[0],r=+a[1];function m(a){return 96= 2.6.0. You are using Moment.js "+c.version+". See momentjs.com"),M.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var i,e=+a,r=this.untils;for(i=0;i= 2.9.0. You are using Moment.js "+c.version+"."),c.defaultZone=a?_(a):null,c};var G=c.momentProperties;return"[object Array]"===Object.prototype.toString.call(G)?(G.push("_z"),G.push("_a")):G&&(G._z=null),B({version:"2020a",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Nairobi|EAT|-30|0||47e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET|-20|0||15e6","Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101|1O9e0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5","Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|","Africa/Windhoek|CAT WAT|-20 -10|0101010|1Oc00 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|HST HDT|a0 90|01010101010101010101010|1O100 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1O0X0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Fortaleza|-03|30|0||34e5","America/Asuncion|-03 -04|30 40|01010101010101010101010|1O6r0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0|28e5","America/Panama|EST|50|0||15e5","America/Mexico_City|CST CDT|60 50|01010101010101010101010|1Oc80 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Managua|CST|60|0||22e5","America/La_Paz|-04|40|0||19e5","America/Lima|-05|50|0||11e6","America/Denver|MST MDT|70 60|01010101010101010101010|1O0V0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Campo_Grande|-03 -04|30 40|0101010101|1NTf0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|CST EST|60 50|01|1NKU0|63e4","America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5","America/Chicago|CST CDT|60 50|01010101010101010101010|1O0U0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT|70 60|01010101010101010101010|1Oc90 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Phoenix|MST|70|0||42e5","America/Whitehorse|PST PDT MST|80 70 70|010101010102|1O0W0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|23e3","America/New_York|EST EDT|50 40|01010101010101010101010|1O0T0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1O0W0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Fort_Nelson|PST MST|80 70|01|1O0W0|39e2","America/Halifax|AST ADT|40 30|01010101010101010101010|1O0S0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Godthab|-03 -02|30 20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Grand_Turk|EST EDT AST|50 40 40|0121010101010101010|1O0T0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Havana|CST CDT|50 40|01010101010101010101010|1O0R0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Miquelon|-03 -02|30 20|01010101010101010101010|1O0R0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Montevideo|-02 -03|20 30|01|1O0Q0|17e5","America/Noronha|-02|20|0||30e2","America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1O0T0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","Antarctica/Palmer|-03 -04|30 40|010|1QSr0 Ap0|40","America/Santiago|-03 -04|30 40|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|62e5","America/Sao_Paulo|-02 -03|20 30|0101010101|1NTe0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1O0Ru 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+08 +11|-80 -b0|010|1RWg0 3m10|10","Asia/Bangkok|+07|-70|0||15e6","Asia/Vladivostok|+10|-a0|0||60e4","Pacific/Bougainville|+11|-b0|0||18e4","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|14e5","Asia/Baghdad|+03|-30|0||66e5","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Asia/Dhaka|+06|-60|0||16e6","Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e5","Asia/Kamchatka|+12|-c0|0||18e4","Asia/Baku|+04 +05|-40 -50|010|1O9c0 1o00|27e5","Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1O9a0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Kuala_Lumpur|+08|-80|0||71e5","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+08 +09|-80 -90|01|1QyG0|33e4","Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|26e5","Asia/Yakutsk|+09|-90|0||28e4","Asia/Dubai|+04|-40|0||39e5","Asia/Famagusta|EET EEST +03|-20 -30 -30|0101201010101010101010|1O9d0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1O8K0 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0|18e5","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3","Europe/Istanbul|EET EEST +03|-20 -30 -30|01012|1O9d0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1O8o0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+0430|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Kathmandu|+0545|-5J|0||12e5","Asia/Magadan|+10 +11|-a0 -b0|01|1QJQ0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PST|-80|0||24e6","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Asia/Novosibirsk|+06 +07|-60 -70|01|1Rmk0|15e5","Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5","Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4","Asia/Rangoon|+0630|-6u|0||48e5","Asia/Sakhalin|+10 +11|-a0 -b0|01|1QyE0|58e4","Asia/Seoul|KST|-90|0||23e6","Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1O6ku 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0|14e6","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+06 +07|-60 -70|01|1QXU0|10e5","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Atlantic/Cape_Verde|-01|10|0||50e4","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1ObQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1ObQu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|+0845|-8J|0||368","Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1ObP0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|-05 -06|50 60|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Etc/GMT-1|+01|-10|0||","Pacific/Fakaofo|+13|-d0|0||483","Pacific/Kiritimati|+14|-e0|0||51e2","Etc/GMT-2|+02|-20|0||","Pacific/Tahiti|-10|a0|0||18e4","Pacific/Niue|-11|b0|0||12e2","Etc/GMT+12|-12|c0|0||","Pacific/Galapagos|-06|60|0||25e3","Etc/GMT+7|-07|70|0||","Pacific/Pitcairn|-08|80|0||56","Pacific/Gambier|-09|90|0||125","Etc/UTC|UTC|0|0||","Europe/Ulyanovsk|+03 +04|-30 -40|01|1QyL0|13e5","Europe/London|GMT BST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1O9c0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Moscow|MSK|-30|0||16e6","Europe/Saratov|+03 +04|-30 -40|01|1Sfz0|","Europe/Volgograd|+03 +04|-30 -40|01|1WQL0|10e5","Pacific/Honolulu|HST|a0|0||37e4","MET|MET MEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|600","Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|37e3","Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1NF20 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0|88e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Marquesas|-0930|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|25e4","Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Algiers|Africa/Tunis","Africa/Cairo|Africa/Tripoli","Africa/Cairo|Egypt","Africa/Cairo|Europe/Kaliningrad","Africa/Cairo|Libya","Africa/Casablanca|Africa/El_Aaiun","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Ndjamena","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Juba","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Campo_Grande|America/Cuiaba","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Beulah","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Chihuahua|America/Mazatlan","America/Chihuahua|Mexico/BajaSur","America/Denver|America/Boise","America/Denver|America/Cambridge_Bay","America/Denver|America/Edmonton","America/Denver|America/Inuvik","America/Denver|America/Ojinaga","America/Denver|America/Shiprock","America/Denver|America/Yellowknife","America/Denver|Canada/Mountain","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Fortaleza|America/Araguaina","America/Fortaleza|America/Argentina/Buenos_Aires","America/Fortaleza|America/Argentina/Catamarca","America/Fortaleza|America/Argentina/ComodRivadavia","America/Fortaleza|America/Argentina/Cordoba","America/Fortaleza|America/Argentina/Jujuy","America/Fortaleza|America/Argentina/La_Rioja","America/Fortaleza|America/Argentina/Mendoza","America/Fortaleza|America/Argentina/Rio_Gallegos","America/Fortaleza|America/Argentina/Salta","America/Fortaleza|America/Argentina/San_Juan","America/Fortaleza|America/Argentina/San_Luis","America/Fortaleza|America/Argentina/Tucuman","America/Fortaleza|America/Argentina/Ushuaia","America/Fortaleza|America/Bahia","America/Fortaleza|America/Belem","America/Fortaleza|America/Buenos_Aires","America/Fortaleza|America/Catamarca","America/Fortaleza|America/Cayenne","America/Fortaleza|America/Cordoba","America/Fortaleza|America/Jujuy","America/Fortaleza|America/Maceio","America/Fortaleza|America/Mendoza","America/Fortaleza|America/Paramaribo","America/Fortaleza|America/Recife","America/Fortaleza|America/Rosario","America/Fortaleza|America/Santarem","America/Fortaleza|Antarctica/Rothera","America/Fortaleza|Atlantic/Stanley","America/Fortaleza|Etc/GMT+3","America/Godthab|America/Nuuk","America/Halifax|America/Glace_Bay","America/Halifax|America/Goose_Bay","America/Halifax|America/Moncton","America/Halifax|America/Thule","America/Halifax|Atlantic/Bermuda","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/La_Paz|America/Boa_Vista","America/La_Paz|America/Guyana","America/La_Paz|America/Manaus","America/La_Paz|America/Porto_Velho","America/La_Paz|Brazil/West","America/La_Paz|Etc/GMT+4","America/Lima|America/Bogota","America/Lima|America/Eirunepe","America/Lima|America/Guayaquil","America/Lima|America/Porto_Acre","America/Lima|America/Rio_Branco","America/Lima|Brazil/Acre","America/Lima|Etc/GMT+5","America/Los_Angeles|America/Ensenada","America/Los_Angeles|America/Santa_Isabel","America/Los_Angeles|America/Tijuana","America/Los_Angeles|America/Vancouver","America/Los_Angeles|Canada/Pacific","America/Los_Angeles|Mexico/BajaNorte","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Managua|America/Belize","America/Managua|America/Costa_Rica","America/Managua|America/El_Salvador","America/Managua|America/Guatemala","America/Managua|America/Regina","America/Managua|America/Swift_Current","America/Managua|America/Tegucigalpa","America/Managua|Canada/Saskatchewan","America/Mexico_City|America/Bahia_Banderas","America/Mexico_City|America/Merida","America/Mexico_City|America/Monterrey","America/Mexico_City|Mexico/General","America/New_York|America/Detroit","America/New_York|America/Fort_Wayne","America/New_York|America/Indiana/Indianapolis","America/New_York|America/Indiana/Marengo","America/New_York|America/Indiana/Petersburg","America/New_York|America/Indiana/Vevay","America/New_York|America/Indiana/Vincennes","America/New_York|America/Indiana/Winamac","America/New_York|America/Indianapolis","America/New_York|America/Iqaluit","America/New_York|America/Kentucky/Louisville","America/New_York|America/Kentucky/Monticello","America/New_York|America/Louisville","America/New_York|America/Montreal","America/New_York|America/Nassau","America/New_York|America/Nipigon","America/New_York|America/Pangnirtung","America/New_York|America/Thunder_Bay","America/New_York|America/Toronto","America/New_York|Canada/Eastern","America/New_York|EST5EDT","America/New_York|US/East-Indiana","America/New_York|US/Eastern","America/New_York|US/Michigan","America/Noronha|Atlantic/South_Georgia","America/Noronha|Brazil/DeNoronha","America/Noronha|Etc/GMT+2","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|America/Jamaica","America/Panama|EST","America/Panama|Jamaica","America/Phoenix|America/Creston","America/Phoenix|America/Dawson_Creek","America/Phoenix|America/Hermosillo","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Santiago|Chile/Continental","America/Santo_Domingo|America/Anguilla","America/Santo_Domingo|America/Antigua","America/Santo_Domingo|America/Aruba","America/Santo_Domingo|America/Barbados","America/Santo_Domingo|America/Blanc-Sablon","America/Santo_Domingo|America/Curacao","America/Santo_Domingo|America/Dominica","America/Santo_Domingo|America/Grenada","America/Santo_Domingo|America/Guadeloupe","America/Santo_Domingo|America/Kralendijk","America/Santo_Domingo|America/Lower_Princes","America/Santo_Domingo|America/Marigot","America/Santo_Domingo|America/Martinique","America/Santo_Domingo|America/Montserrat","America/Santo_Domingo|America/Port_of_Spain","America/Santo_Domingo|America/Puerto_Rico","America/Santo_Domingo|America/St_Barthelemy","America/Santo_Domingo|America/St_Kitts","America/Santo_Domingo|America/St_Lucia","America/Santo_Domingo|America/St_Thomas","America/Santo_Domingo|America/St_Vincent","America/Santo_Domingo|America/Tortola","America/Santo_Domingo|America/Virgin","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Whitehorse|America/Dawson","America/Whitehorse|Canada/Yukon","Antarctica/Palmer|America/Punta_Arenas","Asia/Baghdad|Antarctica/Syowa","Asia/Baghdad|Asia/Aden","Asia/Baghdad|Asia/Bahrain","Asia/Baghdad|Asia/Kuwait","Asia/Baghdad|Asia/Qatar","Asia/Baghdad|Asia/Riyadh","Asia/Baghdad|Etc/GMT-3","Asia/Baghdad|Europe/Kirov","Asia/Baghdad|Europe/Minsk","Asia/Bangkok|Antarctica/Davis","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Krasnoyarsk","Asia/Bangkok|Asia/Novokuznetsk","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Etc/GMT-7","Asia/Bangkok|Indian/Christmas","Asia/Dhaka|Antarctica/Vostok","Asia/Dhaka|Asia/Almaty","Asia/Dhaka|Asia/Bishkek","Asia/Dhaka|Asia/Dacca","Asia/Dhaka|Asia/Kashgar","Asia/Dhaka|Asia/Omsk","Asia/Dhaka|Asia/Qostanay","Asia/Dhaka|Asia/Thimbu","Asia/Dhaka|Asia/Thimphu","Asia/Dhaka|Asia/Urumqi","Asia/Dhaka|Etc/GMT-6","Asia/Dhaka|Indian/Chagos","Asia/Dubai|Asia/Muscat","Asia/Dubai|Asia/Tbilisi","Asia/Dubai|Asia/Yerevan","Asia/Dubai|Etc/GMT-4","Asia/Dubai|Europe/Samara","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Mauritius","Asia/Dubai|Indian/Reunion","Asia/Gaza|Asia/Hebron","Asia/Hong_Kong|Hongkong","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kamchatka|Asia/Anadyr","Asia/Kamchatka|Etc/GMT-12","Asia/Kamchatka|Kwajalein","Asia/Kamchatka|Pacific/Funafuti","Asia/Kamchatka|Pacific/Kwajalein","Asia/Kamchatka|Pacific/Majuro","Asia/Kamchatka|Pacific/Nauru","Asia/Kamchatka|Pacific/Tarawa","Asia/Kamchatka|Pacific/Wake","Asia/Kamchatka|Pacific/Wallis","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Brunei","Asia/Kuala_Lumpur|Asia/Irkutsk","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Etc/GMT-8","Asia/Kuala_Lumpur|Singapore","Asia/Makassar|Asia/Ujung_Pandang","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|Asia/Macao","Asia/Shanghai|Asia/Macau","Asia/Shanghai|Asia/Taipei","Asia/Shanghai|PRC","Asia/Shanghai|ROC","Asia/Tashkent|Antarctica/Mawson","Asia/Tashkent|Asia/Aqtau","Asia/Tashkent|Asia/Aqtobe","Asia/Tashkent|Asia/Ashgabat","Asia/Tashkent|Asia/Ashkhabad","Asia/Tashkent|Asia/Atyrau","Asia/Tashkent|Asia/Dushanbe","Asia/Tashkent|Asia/Oral","Asia/Tashkent|Asia/Samarkand","Asia/Tashkent|Asia/Yekaterinburg","Asia/Tashkent|Etc/GMT-5","Asia/Tashkent|Indian/Kerguelen","Asia/Tashkent|Indian/Maldives","Asia/Tehran|Iran","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Choibalsan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Vladivostok|Antarctica/DumontDUrville","Asia/Vladivostok|Asia/Ust-Nera","Asia/Vladivostok|Etc/GMT-10","Asia/Vladivostok|Pacific/Chuuk","Asia/Vladivostok|Pacific/Port_Moresby","Asia/Vladivostok|Pacific/Truk","Asia/Vladivostok|Pacific/Yap","Asia/Yakutsk|Asia/Dili","Asia/Yakutsk|Asia/Khandyga","Asia/Yakutsk|Etc/GMT-9","Asia/Yakutsk|Pacific/Palau","Atlantic/Azores|America/Scoresbysund","Atlantic/Cape_Verde|Etc/GMT+1","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/Lord_Howe|Australia/LHI","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/Currie","Australia/Sydney|Australia/Hobart","Australia/Sydney|Australia/Melbourne","Australia/Sydney|Australia/NSW","Australia/Sydney|Australia/Tasmania","Australia/Sydney|Australia/Victoria","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|Asia/Nicosia","Europe/Athens|EET","Europe/Athens|Europe/Bucharest","Europe/Athens|Europe/Helsinki","Europe/Athens|Europe/Kiev","Europe/Athens|Europe/Mariehamn","Europe/Athens|Europe/Nicosia","Europe/Athens|Europe/Riga","Europe/Athens|Europe/Sofia","Europe/Athens|Europe/Tallinn","Europe/Athens|Europe/Uzhgorod","Europe/Athens|Europe/Vilnius","Europe/Athens|Europe/Zaporozhye","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Atlantic/Canary","Europe/Lisbon|Atlantic/Faeroe","Europe/Lisbon|Atlantic/Faroe","Europe/Lisbon|Atlantic/Madeira","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|Europe/Simferopol","Europe/Moscow|W-SU","Europe/Paris|Africa/Ceuta","Europe/Paris|Arctic/Longyearbyen","Europe/Paris|Atlantic/Jan_Mayen","Europe/Paris|CET","Europe/Paris|Europe/Amsterdam","Europe/Paris|Europe/Andorra","Europe/Paris|Europe/Belgrade","Europe/Paris|Europe/Berlin","Europe/Paris|Europe/Bratislava","Europe/Paris|Europe/Brussels","Europe/Paris|Europe/Budapest","Europe/Paris|Europe/Busingen","Europe/Paris|Europe/Copenhagen","Europe/Paris|Europe/Gibraltar","Europe/Paris|Europe/Ljubljana","Europe/Paris|Europe/Luxembourg","Europe/Paris|Europe/Madrid","Europe/Paris|Europe/Malta","Europe/Paris|Europe/Monaco","Europe/Paris|Europe/Oslo","Europe/Paris|Europe/Podgorica","Europe/Paris|Europe/Prague","Europe/Paris|Europe/Rome","Europe/Paris|Europe/San_Marino","Europe/Paris|Europe/Sarajevo","Europe/Paris|Europe/Skopje","Europe/Paris|Europe/Stockholm","Europe/Paris|Europe/Tirane","Europe/Paris|Europe/Vaduz","Europe/Paris|Europe/Vatican","Europe/Paris|Europe/Vienna","Europe/Paris|Europe/Warsaw","Europe/Paris|Europe/Zagreb","Europe/Paris|Europe/Zurich","Europe/Paris|Poland","Europe/Ulyanovsk|Europe/Astrakhan","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Bougainville|Antarctica/Macquarie","Pacific/Bougainville|Asia/Srednekolymsk","Pacific/Bougainville|Etc/GMT-11","Pacific/Bougainville|Pacific/Efate","Pacific/Bougainville|Pacific/Guadalcanal","Pacific/Bougainville|Pacific/Kosrae","Pacific/Bougainville|Pacific/Noumea","Pacific/Bougainville|Pacific/Pohnpei","Pacific/Bougainville|Pacific/Ponape","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Fakaofo|Etc/GMT-13","Pacific/Fakaofo|Pacific/Enderbury","Pacific/Galapagos|Etc/GMT+6","Pacific/Gambier|Etc/GMT+9","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kiritimati|Etc/GMT-14","Pacific/Niue|Etc/GMT+11","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pitcairn|Etc/GMT+8","Pacific/Tahiti|Etc/GMT+10","Pacific/Tahiti|Pacific/Rarotonga"],countries:["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Port_of_Spain America/Antigua","AI|America/Port_of_Spain America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla","AW|America/Curacao America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Port_of_Spain America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Brunei","BO|America/La_Paz","BQ|America/Curacao America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson","CC|Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Curacao","CX|Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Copenhagen","DM|America/Port_of_Spain America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Port_of_Spain America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London Europe/Guernsey","GH|Africa/Accra","GI|Europe/Gibraltar","GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Port_of_Spain America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Port_of_Spain America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Port_of_Spain America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Port_of_Spain America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Majuro Pacific/Kwajalein","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Port_of_Spain America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas","MY|Asia/Kuala_Lumpur Asia/Kuching","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Amsterdam","NO|Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Oslo Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Curacao America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Indian/Reunion Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Port_of_Spain","TV|Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway","US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Port_of_Spain America/St_Vincent","VE|America/Caracas","VG|America/Port_of_Spain America/Tortola","VI|America/Port_of_Spain America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}),c}); diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/moment.min.js b/1337X_-_convert_torrent_timestamps_to_relative_format/moment.min.js new file mode 100644 index 0000000..57cd2d4 --- /dev/null +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/moment.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function f(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(m(e,t))return;return 1}function r(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function a(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){for(var n=[],s=0;s>>0,s=0;sFe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:o}}function Ae(e,t,n){var s,i,r=Ge(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+je(i=e.year()-1,t,n):a>je(e.year(),t,n)?(s=a-je(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function je(e,t,n){var s=Ge(e,t,n),i=Ge(e+1,t,n);return(Fe(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Z(e)});function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),ge(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:y(n).invalidWeekday=e}),ge(["d","e","E"],function(e,t,n,s){t[s]=Z(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$e="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),qe=de,Be=de,Je=de;function Qe(){function e(e,t){return t.length-e.length}for(var t,n,s,i,r=[],a=[],o=[],u=[],l=0;l<7;l++)t=_([2e3,1]).day(l),n=me(this.weekdaysMin(t,"")),s=me(this.weekdaysShort(t,"")),i=me(this.weekdays(t,"")),r.push(n),a.push(s),o.push(i),u.push(n),u.push(s),u.push(i);r.sort(e),a.sort(e),o.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Xe),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),L("hour","h"),A("hour",13),ce("a",et),ce("A",et),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],Me),ye(["k","kk"],function(e,t,n){var s=Z(e);t[Me]=24===s?0:s}),ye(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ye(["h","hh"],function(e,t,n){t[Me]=Z(e),y(n).bigHour=!0}),ye("hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s)),y(n).bigHour=!0}),ye("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i)),y(n).bigHour=!0}),ye("Hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s))}),ye("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i))});var tt=z("Hours",!0);var nt,st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Te,monthsShort:Ne,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return nt}function ut(t){var e;if(void 0===it[t]&&"undefined"!=typeof module&&module&&module.exports)try{e=nt._abbr,require("./locale/"+t),lt(e)}catch(e){it[t]=null}return it[t]}function lt(e,t){var n;return e&&((n=r(t)?dt(e):ht(e,t))?nt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),nt._abbr}function ht(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ut(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new x(b(s,t)),rt[e]&&rt[e].forEach(function(e){ht(e.name,e.config)}),lt(e),it[e]}function dt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return nt;if(!o(e)){if(t=ut(e))return t;e=[e]}return ot(e)}function ct(e){var t,n=e._a;return n&&-2===y(e).overflow&&(t=n[ve]<0||11xe(n[pe],n[ve])?ke:n[Me]<0||24je(n,r,a)?y(e)._overflowWeeks=!0:null!=u?y(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[pe]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=St(e._a[pe],s[pe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(y(e)._overflowDayOfYear=!0),n=Ve(r,0,e._dayOfYear),e._a[ve]=n.getUTCMonth(),e._a[ke]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=u[t]=s[t];for(;t<7;t++)e._a[t]=u[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Me]&&0===e._a[De]&&0===e._a[Se]&&0===e._a[Ye]&&(e._nextDay=!0,e._a[Me]=0),e._d=(e._useUTC?Ve:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,u),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Me]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(y(e).weekdayMismatch=!0)}}function Ot(e){if(e._f!==f.ISO_8601)if(e._f!==f.RFC_2822){e._a=[],y(e).empty=!0;for(var t,n,s,i,r,a,o,u=""+e._i,l=u.length,h=0,d=H(e._f,e._locale).match(N)||[],c=0;cn.valueOf():n.valueOf()"}),pn.toJSON=function(){return this.isValid()?this.toISOString():null},pn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pn.unix=function(){return Math.floor(this.valueOf()/1e3)},pn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pn.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pn.isLocal=function(){return!!this.isValid()&&!this._isUTC},pn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pn.isUtc=At,pn.isUTC=At,pn.zoneAbbr=function(){return this._isUTC?"UTC":""},pn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pn.dates=n("dates accessor is deprecated. Use date instead.",fn),pn.months=n("months accessor is deprecated. Use month instead",Ue),pn.years=n("years accessor is deprecated. Use year instead",Le),pn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),(t=bt(t))._a?(e=(t._isUTC?_:Tt)(t._a),this._isDSTShifted=this.isValid()&&0 Date: Fri, 22 Jan 2021 20:19:06 +0200 Subject: [PATCH 033/245] Update README.md --- .../README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md b/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md index 6025950..ffac51b 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md @@ -1,8 +1,17 @@ -This script applies to RARBG torrent lists. +This script applies to RARBG lists: +- it converts torrent timestamps to relative format in local timezone. Also, it recalculates them every 10 seconds. +- The initial timestamps are still available as tooltips (on mouse hover), also converted to local timezone. -It converts torrent timestamps to relative format in local timezone. Also, it recalculates them every 10 seconds. +Note: there's a timestamp on the footer of each RARBG page e.g. `Mon, 02 Nov 2020 12:23:26 +0100`. +Based on that, the script takes that for the server the UTC/UTC DST offsets are `+01:00 +01:00` (=no DST), +therefore the timezone in the above case `GMT-1`. -It uses [moment.js](http://momentjs.com/), [moment-timezone.js](http://momentjs.com/timezone/) and [jsTimezoneDetect](https://bitbucket.org/pellepim/jstimezonedetect) +Examples: + +> +01:00 +01:00 (=no DST) ---> 'Etc/GMT-1'; +> +02:00 +02:00 (=no DST) ---> 'Etc/GMT-2'; + +It uses [moment.js](http://momentjs.com/) and [moment-timezone.js](http://momentjs.com/timezone/). Screenshot comparison: Initial: From ca71143340ce47bfb06a0ef007cb960c5eb6507f Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 20:59:58 +0200 Subject: [PATCH 034/245] (GreasyFork - add a 'send PM to user' button in Greasyfork profile page) - renamed script --- ..._user_button_in_Greasyfork_profile_pages.user.js | 4 ++-- .../README.md | 0 .../ZU0xS0c.jpg | Bin 3 files changed, 2 insertions(+), 2 deletions(-) rename GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js => GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js (98%) rename {GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik => GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages}/README.md (100%) rename {GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik => GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages}/ZU0xS0c.jpg (100%) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js similarity index 98% rename from GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js rename to GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js index ac80864..14cb720 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js @@ -1,8 +1,8 @@ // ==UserScript== -// @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork +// @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages // @namespace darkred // @version 2021.1.16 -// @description Adds a 'send PM to user' button in Greasyfork profile pages (it now works even without Citrus GFork). +// @description Adds a 'send PM to user' button in Greasyfork profile pages (also compatible with Citrus GFork). // @author darkred // @license MIT // @include https://greasyfork.org/*/users/* diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/README.md b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md similarity index 100% rename from GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/README.md rename to GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/ZU0xS0c.jpg b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/ZU0xS0c.jpg similarity index 100% rename from GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/ZU0xS0c.jpg rename to GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/ZU0xS0c.jpg From d475cd12b58dd8b79af3c826101eb330666d7d91 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 21:01:33 +0200 Subject: [PATCH 035/245] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 58a1cf0..3e674c8 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not ### Userscripts +- [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/blob/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area - [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot/README.md) - It fetches logins from bugmenot.com and autofills the login form. - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. @@ -15,7 +16,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [Firefox for desktop - list modified bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table#readme) - Generates lists of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs. - [GitHub - Confirmations before submitting issues and comments](https://github.com/darkred/Userscripts/tree/master/GitHub_Confirmations_before_submitting_issues_and_comments#readme) - Creates a confirmation popup whenever attempting to create an issue or post comment via Ctrl+Enter in GitHub. - [Google youtube search link](https://github.com/darkred/Userscripts/tree/master/Google_youtube_search_link) - Adds a Youtube search link next to the Videos link (e.g. Web, Images, Videos, Youtube, News, Maps, Shopping, ...) -- [GreasyFork - add a 'send PM to user' button in Greasyfork profile pages - for Citrus GFork](https://github.com/darkred/Userscripts/blob/master/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages_-_for_Cik/README.md#readme) - Adds a 'send PM to user' button in Greasyfork profile pages (Also, it works even with Citrus GFork disabled). +- [GreasyFork - add a 'send PM to user' button in Greasyfork profile pages](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages#readme) - Adds a 'send PM to user' button in Greasyfork profile pages (also compatible with Citrus GFork). - [GreasyFork - filter discussions on scripts by review type and author](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_filter_discussions_on_scripts_by_review_type_and_author#readme) - Filters discussions on scripts by review type and author via filter buttons, a hoverable dropdown menu or an autocomplete searchbox. - [GreasyFork - filter libraries in profiles](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_filter_libraries_in_profiles#readme) - Filters libraries in GreasyFork profiles. - [GreasyFork Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. From 7961971d17ff35aaeb82226ce192ad99548741ee Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 21:02:32 +0200 Subject: [PATCH 036/245] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3e674c8..ee915b6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not ### Userscripts -- [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/blob/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format +- [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area - [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot/README.md) - It fetches logins from bugmenot.com and autofills the login form. - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. @@ -41,7 +41,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [thepiratebay - add a sortable Ratio column](https://github.com/darkred/Userscripts/tree/master/thepiratebay_-_add_a_sortable_Ratio_column#readme) - Adds a sortable "Ratio" column. - [thepiratebay helper](https://github.com/darkred/Userscripts/tree/master/thepiratebay_helper#readme) - Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether. - [Twitter - add unread notifications count in the tab title](https://github.com/darkred/Userscripts/tree/master/Twitter_-_add_unread_notifications_count_in_the_tab_title#readme) - Adds unread notifications count in the tab title. -- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/blob/master/userstyles.org_css_highlighter/README.md) - Formats and highlights CSS code shown after [Show CSS] clicking *(It's modified version of https://greasyfork.org/en/scripts/41-userstyles-org-css-highlighter (by trespassersW) in order to work with the new userstyles.org layout)*. +- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/tree/master/userstyles.org_css_highlighter/README.md) - Formats and highlights CSS code shown after [Show CSS] clicking *(It's modified version of https://greasyfork.org/en/scripts/41-userstyles-org-css-highlighter (by trespassersW) in order to work with the new userstyles.org layout)*. - [Userstyles Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/Userstyles_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. ## External profiles From e726b39378de00577d6cbde560c6efac6965f583 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 21:41:11 +0200 Subject: [PATCH 037/245] Update GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js Simplified the script: now simply using URL pattern with query string: `?other_user=target_username` --- ...button_in_Greasyfork_profile_pages.user.js | 55 ++----------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js index 14cb720..2c4fb41 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name GreasyFork - add a 'send PM to user' button in Greasyfork profile pages // @namespace darkred -// @version 2021.1.16 +// @version 2021.1.22 // @description Adds a 'send PM to user' button in Greasyfork profile pages (also compatible with Citrus GFork). // @author darkred // @license MIT @@ -15,24 +15,13 @@ // ==/UserScript== -/* - -No longer needed '@require' scripts in the new GreasyFork layout - -// @require https://greasyfork.org/scripts/24818-bililiterange/code/bililiteRange.js -// @require https://code.jquery.com/jquery-3.1.1.min.js -// @require https://greasyfork.org/scripts/24819-jquery-simulate/code/jquery-simulate.js -// @require https://greasyfork.org/scripts/24820-jquery-simulate-ext/code/jquery-simulate-ext.js -// @require https://greasyfork.org/scripts/24822-jquery-simulate-key-sequence-js/code/jquerysimulatekey-sequencejs.js -// @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js -*/ - var yourProfileNameElement = document.querySelector('.user-profile-link > a:nth-child(1)'); if (yourProfileNameElement !== null) { var yourProfileName = yourProfileNameElement.innerHTML; var yourProfileURL = yourProfileNameElement.href; // https://greasyfork.org/en/users/2160-darkred // https://greasyfork.org/en/users/2160-darkred/conversations/new + // https://greasyfork.org/en/users/2160-darkred/conversations/new?other_user=JasonBarnabe var yourCreateNewConversationURL = yourProfileURL + '/conversations/new' ; } @@ -57,41 +46,7 @@ if (window.location.href.indexOf('users') !== -1 // if current URL is a profile img.setAttribute('src', 'data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAATABcDAREAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABwAICf/EACgQAAEEAQMCBQUAAAAAAAAAAAECAwQFEQAGEgcIEyEiMUEUNmGl4//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDof1i6ryOlkCHIi0YvlvJdccjpl+A4203x5OAcFFQHMZx7A59skAMDvnyfsj9t/DQPnS/fUnqDtxyxmVQpJbb5YdgGT462jxSoBZ4p4qIWDxIyMjPn5ADTuZg3ibzZN1R0c+7kVf1q0twoy3gh1QZDZcCQfTkFWD5K4lPzoAqDXblqLJq7r+kVoxuFDiXA85AkOQ0KBBKm43h+lR/KylOfSkYGA0f2x0s6m2demdVz6gzLt+W1Gsm1oeCFNM+/IAqwQpPL5450DBoLQWg//9k='); a.id = 'pmButton'; a.title = 'Send PM to ' + targetProfileName; - a.href = 'javascript:void(0)'; - // var lang = String(window.location).match(/^https:\/\/greasyfork\.org\/([a-zA-Z-]+)\/.*$/)[1]; - - document.getElementById('pmButton').addEventListener('click', function() { - window.open(yourCreateNewConversationURL, '_self'); // force open link in same tab - // window.open(sendMessageToTargetURL, '_blank'); // force open link in new tab - }); - -} - -// if (window.location.href.indexOf('messages') !== -1) { // if current URL is a 'send PM' page -if (window.location.href.indexOf('conversations/new') !== -1) { // if current URL is a 'Create a new conversation' page - - const bodyTextarea = document.querySelector('#conversation_messages_attributes_0_content'); - bodyTextarea.focus(); - - const userInput = document.querySelector('#conversation_user_input'); - var recipient = sessionStorage.getItem('recipient'); - if (recipient !== 'undefined') { - userInput.value = recipient; - } - - /* - document.arrive('.token-input-selected-dropdown-item', function () { - triggerMouseEvent (document.querySelector('.token-input-selected-dropdown-item'), 'mousedown'); - }); - */ - -} - - -/* -function triggerMouseEvent (node, eventType) { - var clickEvent = document.createEvent ('MouseEvents'); - clickEvent.initEvent (eventType, true, true); - node.dispatchEvent (clickEvent); + // var yourCreateNewConversationURL = yourProfileURL + '/conversations/new' ; + // https://greasyfork.org/en/users/2160-darkred/conversations/new?other_user=JasonBarnabe + a.href = yourCreateNewConversationURL + '?other_user=' + targetProfileName; } -*/ \ No newline at end of file From 19dfbe020421711039fc0774b862f7c3e4d3dfe2 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 22 Jan 2021 22:02:18 +0200 Subject: [PATCH 038/245] Update README.md --- .../README.md | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md index a01e4e6..fb06b0a 100644 --- a/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md +++ b/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages/README.md @@ -1,33 +1,28 @@ By default you may send a pm via a user's forum profile page (e.g. see link 1). With this script you may also send a pm via user's Greasyfork profile page (e.g. see link 2). + ``` -Forum profile: https://greasyfork.org/en/forum/profile/324/darkred -Greasyfork profile: https://greasyfork.org/en/users/2160-darkred +Forum profile: https://greasyfork.org/en/forum/profile/1/JasonBarnabe +Greasyfork profile: https://greasyfork.org/en/users/1-jasonbarnabe ``` example: -![](https://i.imgur.com/LUN73U5.gif) - -*Notes: the button doesn't appear in your own Greasyfork profile page, -and it only works when you are logged in, for obvious reasons -Also, it works even with Citrus GFork disabled.*. -
+![](https://i.imgur.com/0pe0Ce2.jpg) -**Update 11/12/2016**: -The script was not working ok (because you have to simulate a keypress sequence -with a delay between each press- -in order the username to be "typed" in the autocomplete popup, and so the script to be able to click it, to select it). -I fixed it, but, in order to manage sending this simulated keypress sequence ( 1-line in the script! - line 47) -I have to use the following `require`'s : -- `jQuery`, -- 1 from [bililiteRange](https://github.com/dwachss/bililiteRange), -- 1 from [jquery-simulate](https://github.com/jquery/jquery-simulate) (by jQuery), and -- 2 from [jquery-simulate-ext](https://github.com/j-ulrich/jquery-simulate-ext) . +How it works: -The fact that these `require`'s are needed in order by the `jquery-simulate-ext` plugin to work, -is documented here: [https://github.com/j-ulrich/jquery-simulate-ext#usage](https://github.com/j-ulrich/jquery-simulate-ext#usage). +- By clicking the script's PM icon, the script always gets you to a "Create a new conversation" page (`https://greasyfork.org/en/users/your_username/conversations/new?other_user=target_username`). +- In contrast, by clicking the the site's built-in"Send message" link: + - if you haven't sent any PM before, +it gets you to a "Create a new conversation (`https://greasyfork.org/en/users/your_username/conversations/new?other_user=target_username`) + - if you have send PMs before, +it gets you to a "Conversation with user" page (`https://greasyfork.org/en/users/your_username/conversations/___`) +where all your previous PMs are displayed in the same page, +and you have to scroll down to reach the "Post Reply" form. -And, I also use [arrive.js](https://github.com/uzairfarooq/arrive) in the script. +Notes: -
+- the button doesn't appear in your own Greasyfork profile page, and it only works when you are logged in, for obvious reasons, +- it is compatible with Citrus GFork. -[Hosted in GitHub](https://github.com/darkred/Userscripts) +[Hosted in GitHub](https://github.com/darkred/Userscripts) \ No newline at end of file From 2369289f8ab3bf95c94c3bd5eaec9ec1d75ff5f4 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 24 Jan 2021 23:14:11 +0200 Subject: [PATCH 039/245] Update Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js Now the script also works in paginated pages in 'News' category --- ...d_add_link_to_the_FB_comments_area.user.js | 64 +++++++++++++------ 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js index 56d4852..fec9b28 100644 --- a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js +++ b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js @@ -1,8 +1,8 @@ // ==UserScript== // @name Blabbermouth - generate timestamps and add link to the fb comments area // @namespace darkred -// @version 1.1.1 -// @date 2020.7.30 +// @version 1.2 +// @date 2021.1.24 // @description Generates missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area // @author darkred // @license MIT @@ -77,31 +77,36 @@ if ( let callback = (entries, observer) => { entries.forEach(entry => { - if (entry.isIntersecting && !entry.target.classList.contains('in-viewport') ) { - entry.target.classList.add('in-viewport'); - var xhr = new XMLHttpRequest(); - var url = entry.target.parentElement.parentElement.firstElementChild.firstElementChild.href; - xhr.open('GET', url, true); // XMLHttpRequest.open(method, url, async) - xhr.onload = function () { + if (!entry.target.classList.contains('done')){ - let container = document.implementation.createHTMLDocument().documentElement; - container.innerHTML = xhr.responseText; - let publishedTimestamp = container.querySelector( - 'meta[property="article:published_time"]' - ).content; + if (entry.isIntersecting && !entry.target.classList.contains('in-viewport') ) { + entry.target.classList.add('in-viewport'); - convertToLocalTimezone(publishedTimestamp); + var xhr = new XMLHttpRequest(); + var url = entry.target.parentElement.parentElement.firstElementChild.firstElementChild.href; + xhr.open('GET', url, true); // XMLHttpRequest.open(method, url, async) + xhr.onload = function () { - entry.target.textContent = publishedTimeLTZ; - entry.target.title = publishedTimeLTZtitle; + let container = document.implementation.createHTMLDocument().documentElement; + container.innerHTML = xhr.responseText; - recalc(entry.target, 'YYYY-MM-DD HH:mm:ss'); + let publishedTimestamp = container.querySelector( + 'meta[property="article:published_time"]' + ).content; - }; - xhr.send(); + convertToLocalTimezone(publishedTimestamp); + entry.target.textContent = publishedTimeLTZ; + entry.target.title = publishedTimeLTZtitle; + + entry.target.classList.add('done'); + + recalc(entry.target, 'YYYY-MM-DD HH:mm:ss'); + }; + xhr.send(); + } } }); }; @@ -114,6 +119,27 @@ if ( }); + // ---------------------------------------- + // Watch for pagination events (when new '.article' children are added inside the '.infinite_scroll' element) + const targetNode2 = document.querySelector('.infinite_scroll'); + const config2 = { attributes: false, childList: true, subtree: false }; + + const callback2 = function(mutationsList, observer2) { + for(const mutation of mutationsList) { + if (mutation.type === 'childList') { + var allTimestamps = document.querySelectorAll('span.date-time'); + allTimestamps.forEach((element) => { + observer.observe(element); + }); + } + } + }; + + const observer2 = new MutationObserver(callback2); + observer2.observe(targetNode2, config2); + // ---------------------------------------- + + } else if (window.location.href.includes('blabbermouth.net/news/')) { if ( document.querySelector('meta[property="article:published_time"]') !== From bbc73a380d1918feefb2b8b5e4c8b072d5934d54 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 26 Jan 2021 16:53:34 +0200 Subject: [PATCH 040/245] Update README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/README.md b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/README.md index daec69d..5ddf36c 100644 --- a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/README.md +++ b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/README.md @@ -20,6 +20,7 @@ with **the comment count from that fb iframe** 1 (i.e. `6 Comments`, As you scroll down each page, it retrieves the relevant target news page in the background in order to get the relevant `published_time` data from the page, and then generates timestamps (like before) in relative format. + Since v1.2 now the script also works in paginated news pages.   1 Compatibility note regarding that feature: From 812824ba891192e013712ebb84b21f8c7c2f7230 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 26 Jan 2021 16:54:07 +0200 Subject: [PATCH 041/245] 1337x - torrent and magnet links Initial publish --- .../1337x_-_torrent_and_magnet_links.user.js | 179 ++++++++++++++++++ 1337x_-_torrent_and_magnet_links/README.md | 11 ++ 2 files changed, 190 insertions(+) create mode 100644 1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js create mode 100644 1337x_-_torrent_and_magnet_links/README.md diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js new file mode 100644 index 0000000..d5e74fb --- /dev/null +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -0,0 +1,179 @@ +// ==UserScript== +// @name 1337x - torrent and magnet links +// @namespace darkred +// @version 2021.1.26 +// @description Adds a column with torrent and magnet links in RARBG lists +// @author darkred +// @contributor NotNeo +// @license MIT +// @include /^https?://1337x\.(to|st|ws|eu|se|is|gd|unblocked.dk)/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)(\/.+)?$/ +// @grant GM_addStyle +// @run-at document-idle +// ==/UserScript== + + +// Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . + + + +GM_addStyle(` + + main.container, div.container { + /* max-width: 1600px; */ + max-width: 1450px; + } + + .xhrMagnetLink, .xhrDownloadLink { + /* padding: 0px 1px 0px 1px; */ + } + + .coll-1b { + /* padding: 10px 8px 10px 8px !important; */ + /* display: flex; */ + /* align: center; */ + /* width: 52px; */ + /* min-height: 37px; */ + /* text-align: center; */ + /* vertical-align: middle; */ + /* box-sizing: border-box; */ + } + + .list-dl-button-magnet > i.flaticon-magnet { + font-size: 13px; + color: #da3a04 + } + + .list-dl-button > i.flaticon-torrent-download { + font-size: 13px; + color: #89ad19; + } + + table.table-list td.dl-buttons { + border-left: 1px solid #f6f6f6; + padding-left: 2.5px; + padding-right: 2.5px; + text-align: center !important; + position: relative; + display: inline-block !important; + /* width: 50px; */ + width: 52px; + } + + td.dl-buttons > a, + td.dl-buttons > a:hover, + td.dl-buttons > a:visited, + td.dl-buttons > a:link, + td.dl-buttons > a:active { + color: inherit; + text-decoration: none; + cursor: pointer; + display: inline-block !important; + /* margin: 0 1.5px; */ + margin: 0 2px; + } + + table.table-list td.coll-2 { + /* border-left: 1px solid silver; */ + border-left: 1px solid #f6f6f6; + } + + +`); + + +function appendColumn(elem) { + + const title = 'ML DL'; + + let entries = elem.querySelectorAll('.table-list > thead > tr > th:nth-child(1), .table-list > tbody > tr > td:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended + + entries[0].insertAdjacentHTML('afterend', `` + title + ``); // creation of the extra column + for (let i = 1; i < entries.length; i++) { + entries[i].insertAdjacentHTML('afterend', `` + title + ``); + } + + + let header = elem.querySelector('.table-list > thead > tr > th:nth-child(2)'); // the first cell (the header cell) of the new column + header.innerHTML = title; + header.setAttribute('align', 'center'); + header.setAttribute('class', 'coll-1b'); + + let cells = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(2)'); // the rest cells of the new column + for (let i = 0; i < cells.length; i++) { + cells[i].classList.add('coll-1b'); + cells[i].classList.add('dl-buttons'); + } + + + let newColumn = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(2)'); // new column + let oldColumn = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(1)'); // old column + + + for (let i = 0; i < newColumn.length; i++) { + + let href = oldColumn[i].firstElementChild.nextElementSibling.href; + + newColumn[i].innerHTML = ''; + + newColumn[i].innerHTML += ''; + + + } + +} + + + +function addClickListeners(links, type){ + + for(let i = 0; i < links.length; i++) { + + links[i].addEventListener('click', function(event){ + + let href = this.getAttribute('href'); + if (href === 'javascript:void(0)') { + let tLink = this.getAttribute('data-href'); + + var xhr = new XMLHttpRequest(); + xhr.open('GET', tLink, true); // XMLHttpRequest.open(method, url, async) + xhr.onload = function () { + + let container = document.implementation.createHTMLDocument().documentElement; + container.innerHTML = xhr.responseText; + + let retrievedLink; + if (type === 'ml'){ + retrievedLink = container.querySelector('a[href^="magnet:"]'); // the 'magnet link' element in the retrieved page + } else { + retrievedLink = container.querySelector('.dropdown-menu > li > a'); // the 'download link' element in the retrieved page + } + + + if (retrievedLink) { + // links[i].setAttribute('href', retrievedLink.href); + links[i].setAttribute('href', retrievedLink.href.replace('http:', 'https:')); // the links are http and as such are blocked in Chrome + links[i].click(); + } + + + }; + xhr.send(); + + } + + }, false); + + } + +} + + + +function createColumn(element){ + appendColumn(element); + addClickListeners(element.querySelectorAll('.xhrMagnetLink'), 'ml' ); + addClickListeners(element.querySelectorAll('.xhrDownloadLink'), 'dl' ); +} + + +createColumn(document); // the initial column 'Files' after of which the extra column will be appended); diff --git a/1337x_-_torrent_and_magnet_links/README.md b/1337x_-_torrent_and_magnet_links/README.md new file mode 100644 index 0000000..3ff0759 --- /dev/null +++ b/1337x_-_torrent_and_magnet_links/README.md @@ -0,0 +1,11 @@ +Adds a column with torrent and magnet links in 1337x lists: +![](https://i.imgur.com/S4nzRP8.jpg) + +Notes: + +- The script generates all links via XHR: + - The DL/ML links will have: + - initially, as its destination (`href`) a: `javascript:void(0)`, + - as tooltip: "`DL/ML via XHR`". + - As you click a DL/ML icon, the relevant target page will be retrieved via XHR in the background (so, after clicking an icon, it will now have the magnet link). +- Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . From 5e445a43164b90d4a209cdfd68f52c914ad7bcd2 Mon Sep 17 00:00:00 2001 From: PoorPockets McNewHold Date: Wed, 27 Jan 2021 10:36:41 +0100 Subject: [PATCH 042/245] Correct BugMeNot userscript README.md link. As opposed to all the the other links, this one linked straight onto the actual README.md file, instead of the repo folder of the script. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee915b6..0fd57ea 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area -- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot/README.md) - It fetches logins from bugmenot.com and autofills the login form. +- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - It fetches logins from bugmenot.com and autofills the login form. - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. - [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. - [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. From d51ecbda781a60ff6a64c105c9c7402054f7e610 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 11:53:07 +0200 Subject: [PATCH 043/245] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fd57ea..a785287 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [thepiratebay - add a sortable Ratio column](https://github.com/darkred/Userscripts/tree/master/thepiratebay_-_add_a_sortable_Ratio_column#readme) - Adds a sortable "Ratio" column. - [thepiratebay helper](https://github.com/darkred/Userscripts/tree/master/thepiratebay_helper#readme) - Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether. - [Twitter - add unread notifications count in the tab title](https://github.com/darkred/Userscripts/tree/master/Twitter_-_add_unread_notifications_count_in_the_tab_title#readme) - Adds unread notifications count in the tab title. -- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/tree/master/userstyles.org_css_highlighter/README.md) - Formats and highlights CSS code shown after [Show CSS] clicking *(It's modified version of https://greasyfork.org/en/scripts/41-userstyles-org-css-highlighter (by trespassersW) in order to work with the new userstyles.org layout)*. +- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/tree/master/userstyles.org_css_highlighter#readme) - Formats and highlights CSS code shown after [Show CSS] clicking *(It's modified version of https://greasyfork.org/en/scripts/41-userstyles-org-css-highlighter (by trespassersW) in order to work with the new userstyles.org layout)*. - [Userstyles Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/Userstyles_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. ## External profiles From c242bd4ba3dfd0446ddb4280739828f768c29407 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 13:25:29 +0200 Subject: [PATCH 044/245] Update 1337x_-_torrent_and_magnet_links.user.js Properly escape the include rule --- .../1337x_-_torrent_and_magnet_links.user.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index d5e74fb..ff79130 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,18 +1,17 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.26 +// @version 2021.1.27 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?://1337x\.(to|st|ws|eu|se|is|gd|unblocked.dk)/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)(\/.+)?$/ +// @include /^https?:\/\/1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/(.+\/)?$/ // @grant GM_addStyle // @run-at document-idle -// ==/UserScript== - - +// // Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . +// ==/UserScript== From 19f8db6210aa47402431a6cecfee0197a49e3fed Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 19:36:25 +0200 Subject: [PATCH 045/245] Update 1337x_-_torrent_and_magnet_links.user.js - CSS improvements - changed column title in lowercase --- .../1337x_-_torrent_and_magnet_links.user.js | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index ff79130..b29ee3b 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.27 +// @version 2021.1.27.1 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo @@ -26,17 +26,6 @@ GM_addStyle(` /* padding: 0px 1px 0px 1px; */ } - .coll-1b { - /* padding: 10px 8px 10px 8px !important; */ - /* display: flex; */ - /* align: center; */ - /* width: 52px; */ - /* min-height: 37px; */ - /* text-align: center; */ - /* vertical-align: middle; */ - /* box-sizing: border-box; */ - } - .list-dl-button-magnet > i.flaticon-magnet { font-size: 13px; color: #da3a04 @@ -71,18 +60,20 @@ GM_addStyle(` margin: 0 2px; } - table.table-list td.coll-2 { - /* border-left: 1px solid silver; */ - border-left: 1px solid #f6f6f6; + table.table-list td.coll-1b { + border-right: 1px solid silver; } + .table-list > thead > tr > th:nth-child(2), .table-list > thead > tr > td:nth-child(2) { + text-align: center; + } `); function appendColumn(elem) { - const title = 'ML DL'; + const title = 'ml dl'; let entries = elem.querySelectorAll('.table-list > thead > tr > th:nth-child(1), .table-list > tbody > tr > td:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended @@ -94,7 +85,6 @@ function appendColumn(elem) { let header = elem.querySelector('.table-list > thead > tr > th:nth-child(2)'); // the first cell (the header cell) of the new column header.innerHTML = title; - header.setAttribute('align', 'center'); header.setAttribute('class', 'coll-1b'); let cells = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(2)'); // the rest cells of the new column From cec3aae68349ef4791211e5f423d2a3f20febb60 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 19:44:12 +0200 Subject: [PATCH 046/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index b29ee3b..20c30bc 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -6,7 +6,7 @@ // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?:\/\/1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/(.+\/)?$/ +// @include /^https?:\/\/1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant GM_addStyle // @run-at document-idle // From abcc13a1de4e72749e98f4cc5a92082bee174a0f Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 19:44:35 +0200 Subject: [PATCH 047/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 20c30bc..dc85061 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.27.1 +// @version 2021.1.27.2 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo From a33cea7b5626e71394949a4578734245b5135b3a Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 19:55:36 +0200 Subject: [PATCH 048/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index dc85061..3d4bf76 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.27.2 +// @version 2021.1.27.3 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo @@ -102,9 +102,9 @@ function appendColumn(elem) { let href = oldColumn[i].firstElementChild.nextElementSibling.href; - newColumn[i].innerHTML = ''; + newColumn[i].innerHTML = ''; - newColumn[i].innerHTML += ''; + newColumn[i].innerHTML += ''; } From 5ad0ef5d6ba75f2c931312fcaa640ce8cc5828d9 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Jan 2021 22:23:35 +0200 Subject: [PATCH 049/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 3d4bf76..fde80c8 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.27.3 +// @version 2021.1.27.4 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo @@ -22,16 +22,12 @@ GM_addStyle(` max-width: 1450px; } - .xhrMagnetLink, .xhrDownloadLink { - /* padding: 0px 1px 0px 1px; */ - } - - .list-dl-button-magnet > i.flaticon-magnet { + .list-button-magnet > i.flaticon-magnet { font-size: 13px; color: #da3a04 } - .list-dl-button > i.flaticon-torrent-download { + .list-button-dl > i.flaticon-torrent-download { font-size: 13px; color: #89ad19; } @@ -64,7 +60,8 @@ GM_addStyle(` border-right: 1px solid silver; } - .table-list > thead > tr > th:nth-child(2), .table-list > thead > tr > td:nth-child(2) { + .table-list > thead > tr > th:nth-child(2), + .table-list > thead > tr > td:nth-child(2) { text-align: center; } @@ -102,9 +99,9 @@ function appendColumn(elem) { let href = oldColumn[i].firstElementChild.nextElementSibling.href; - newColumn[i].innerHTML = ''; + newColumn[i].innerHTML = ''; - newColumn[i].innerHTML += ''; + newColumn[i].innerHTML += ''; } From 9751193b3412c19a5e33e5c7f4742aa150e9f6ad Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 28 Jan 2021 12:59:14 +0200 Subject: [PATCH 050/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index fde80c8..9747676 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.27.4 +// @version 2021.1.28 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo @@ -157,8 +157,8 @@ function addClickListeners(links, type){ function createColumn(element){ appendColumn(element); - addClickListeners(element.querySelectorAll('.xhrMagnetLink'), 'ml' ); - addClickListeners(element.querySelectorAll('.xhrDownloadLink'), 'dl' ); + addClickListeners(element.querySelectorAll('.list-button-magnet'), 'ml' ); + addClickListeners(element.querySelectorAll('.list-button-dl'), 'dl' ); } From 2ab4d239c28f38e5d3a453d97f4df779f3473d28 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 30 Jan 2021 16:02:00 +0200 Subject: [PATCH 051/245] Update 1337X_-_convert_torrent_timestamps_to_relative_format.user.js --- ...37X_-_convert_torrent_timestamps_to_relative_format.user.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index 8d1ccd2..a859fb7 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.12.07 +// @version 2021.1.30 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -37,7 +37,6 @@ const serverTimezone = 'Etc/GMT-1'; const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) -alert(localTimezone) // const format = 'MM/DD/YYYY HH:mm:ss'; // const format = 'YYYY-MM-DD HH:mm:ss'; From e81d0b719a486eb923d81d740189fd26632faf1c Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Feb 2021 13:40:30 +0200 Subject: [PATCH 052/245] Added x1337x domains in the include rule ( official mirrors list: https://1337x.to/about ) --- ...7X_-_convert_torrent_timestamps_to_relative_format.user.js | 4 +++- .../1337x_-_torrent_and_magnet_links.user.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index a859fb7..0020820 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -5,13 +5,15 @@ // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT -// @include /^https?://1337x\.to/(home|search|sort-search|trending|cat|top-100).*$/ +// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data-10-year-range.min.js // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== +// Official mirrors list: https://1337x.to/about + 'use strict'; /* global moment */ diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 9747676..79a6dc3 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -6,13 +6,14 @@ // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?:\/\/1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant GM_addStyle // @run-at document-idle // // Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . // ==/UserScript== +// Official mirrors list: https://1337x.to/about GM_addStyle(` From f3e84fac05666abc274a1e89813bf3330cef230c Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Feb 2021 18:28:46 +0200 Subject: [PATCH 053/245] Update RARBG_-_convert_torrent_timestamps_to_relative_format.user.js --- ...G_-_convert_torrent_timestamps_to_relative_format.user.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 8c0e092..7c67f8b 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -63,12 +63,13 @@ function convertToLocalTimezone(timestamps) { } } - // recalculate the relative times every 10 sec + // recalculate the relative dates every 1 min (function(){ for (let i = 0; i < timestamps.length; i++) { timestamps[i].textContent = moment(timestamps[i].title).fromNow(); } - setTimeout(arguments.callee, 1 * 60 * 1000); + // setTimeout(arguments.callee, 10 * 1000); // 10 * 1000 msec = 10 sec = 1/6 min + setTimeout(arguments.callee, 60 * 1000); // 60 * 1000 msec = 1 min })(); } From b478fa8601afc58b1d9153d6d61adac6da978e18 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Feb 2021 18:31:46 +0200 Subject: [PATCH 054/245] Update 1337X_-_convert_torrent_timestamps_to_relative_format.user.js - now the tooltip is converted to local timezone - added recalc every 1 min (per https://github.com/darkred/Userscripts/issues/11#issuecomment-771366786) --- ...rent_timestamps_to_relative_format.user.js | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index 0020820..f17ac9a 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.1.30 +// @version 2021.2.2 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -44,6 +44,8 @@ const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 ( // const format = 'YYYY-MM-DD HH:mm:ss'; moment.locale('en'); const format = ['h:mma', 'ha MMM. Do', 'MMM. Do \'YY']; +const formatTooltip1 = 'h:mma'; // the 1st element of the above array. +const formatTooltip2 = 'ha MMM. Do'; // the 2st element of the array (there can be no 3rd format, e.g. Oct. 31st '20 is only date, not time ). // Customize the strings in the locale to display "1 minute ago" instead of "a minute ago" (https://github.com/moment/moment/issues/3764#issuecomment-279928245) moment.updateLocale('en', { @@ -72,25 +74,33 @@ function convertToLocalTimezone(timestamps) { let convertedToLocalTimezone = moment.tz(initialTimestamp, format, serverTimezone).tz(localTimezone); timestamps[i].textContent = convertedToLocalTimezone.fromNow(); - // TODO - // timestamps[i].title = convertedToLocalTimezone.format(format); // <-- not working because you use MULTIPLE FORMATS !! - // timestamps[i].title = convertedToLocalTimezone.format(format[0]) || convertedToLocalTimezone.format(format[1]) || convertedToLocalTimezone.format(format[2]) ; // <-- not working because you use MULTIPLE FORMATS !! - timestamps[i].title = initialTimestamp; - // timestamps[i].title = convertedToLocalTimezone.toISOString(); // Display timestamps in tooltips in ISO 8601 format, combining date and time (https://stackoverflow.com/questions/25725019/how-do-i-format-a-date-as-iso-8601-in-moment-js/) - // timestamps[i].title = convertedToLocalTimezone.format(); + // timestamps[i].title = initialTimestamp; + if (moment(initialTimestamp, formatTooltip1, true).isValid()) { + timestamps[i].title = convertedToLocalTimezone.format(formatTooltip1); + } else if (moment(initialTimestamp, formatTooltip2, true).isValid()) { + timestamps[i].title = convertedToLocalTimezone.format(formatTooltip2); + // timestamps[i].title = convertedToLocalTimezone.toISOString(); // Display timestamps in tooltips in ISO 8601 format, combining date and time (https://stackoverflow.com/questions/25725019/how-do-i-format-a-date-as-iso-8601-in-moment-js/) + } } } - // TODO - /* - // recalculate the relative times every 10 sec + + // recalculate the relative dates every 1 min (function(){ for (let i = 0; i < timestamps.length; i++) { - timestamps[i].textContent = moment(timestamps[i].title).fromNow(); + // timestamps[i].textContent = moment(timestamps[i].title).fromNow(); + + if (timestamps[i].title !== '') { + let tooltipValue = timestamps[i].title; + let convertedToLocalTimezone = moment(tooltipValue, format); // no need to reconvert, it's already in local timezone + timestamps[i].textContent = convertedToLocalTimezone.fromNow(); + } + } - setTimeout(arguments.callee, 1 * 60 * 1000); + // setTimeout(arguments.callee, 10 * 1000); // 10 sec + setTimeout(arguments.callee, 60 * 1000); // 1 min = 60 * 1000 msec })(); - */ + } From d386c00bb6784d46a22391fce6e45f91aa3c0e15 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 4 Feb 2021 22:32:37 +0200 Subject: [PATCH 055/245] Update Google_youtube_search_link.user.js Updated the menu and menuContainer selectors after the site's new HTML changes. --- .../Google_youtube_search_link.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Google_youtube_search_link/Google_youtube_search_link.user.js b/Google_youtube_search_link/Google_youtube_search_link.user.js index d6db69f..c70b423 100644 --- a/Google_youtube_search_link/Google_youtube_search_link.user.js +++ b/Google_youtube_search_link/Google_youtube_search_link.user.js @@ -4,7 +4,7 @@ // @author wOxxOm, darkred // @license MIT // @description Adds a YouTube search link next to the Videos link (e.g. Web, Images, Videos, YouTube, News, Maps, Shopping, ...) -// @version 2021.1.15 +// @version 2021.2.4 // @include https://www.google.com/* // @include /https?:\/\/(www\.)?google\.(com|(?:com?\.)?\w\w)\/.*/ // @grant none @@ -20,11 +20,11 @@ function process(mutations) { if (youtube) return; - var menu = document.querySelector('#hdtb-msb'); // selector for the element that contains all the links (Web, Images, Videos, News, Maps, Shopping, ...) + var menu = document.querySelector('#hdtb'); // selector for the element that contains all the links (Web, Images, Videos, News, Maps, Shopping, ...) if (!menu) return; - var menuContainer = menu.querySelector('#hdtb-msb-vis').parentNode; + var menuContainer = menu.querySelector('#hdtb-msb').parentNode; if (!youtube) { var q = '', From c3464453e778f43ef1924f0a638db09bcd1b7fbe Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 4 Feb 2021 23:32:36 +0200 Subject: [PATCH 056/245] Update 1337X_-_convert_torrent_timestamps_to_relative_format.user.js --- ...7X_-_convert_torrent_timestamps_to_relative_format.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index f17ac9a..319260e 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -97,8 +97,8 @@ function convertToLocalTimezone(timestamps) { } } - // setTimeout(arguments.callee, 10 * 1000); // 10 sec - setTimeout(arguments.callee, 60 * 1000); // 1 min = 60 * 1000 msec + // setTimeout(arguments.callee, 10 * 1000); // 10 * 1000 msec = 10 sec = 1/6 min + setTimeout(arguments.callee, 60 * 1000); // 60 * 1000 msec = 1 min })(); From b6d4384eac821e334b16f8ae25670b975e6b540e Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 4 Feb 2021 23:32:41 +0200 Subject: [PATCH 057/245] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a785287..fc6ef04 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area -- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - It fetches logins from bugmenot.com and autofills the login form. +- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - Fetches logins from bugmenot.com and autofills the login form. - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. - [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. - [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. @@ -37,7 +37,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [Reddit Infinite Scrolling](https://github.com/darkred/Userscripts/tree/master/Reddit_Infinite_Scrolling#readme) - Adds infinite scrolling to subreddits and to comments. - [Rotten Tomatoes Decimal Rating](https://github.com/darkred/Userscripts/tree/master/Rotten_Tomatoes_Decimal_Rating#readme) - Changes base-5 Rating of Rotten Tomatoes to base-10. - [StackExchange sites - convert dates to local timezone](https://github.com/darkred/Userscripts/tree/master/StackExchange_sites_-_convert_dates_to_local_timezone#readme) - Converts dates to your local timezone. -- [SunXDCC - normalize values](https://github.com/darkred/Userscripts/tree/master/SunXDCC_-_normalize_values#readme) - It converts the values: in the 'Record' column from B/s to kB/s, and in the 'Size' column from e.g. G to GB. Also adds a space between the value and the unit, in both cases. +- [SunXDCC - normalize values](https://github.com/darkred/Userscripts/tree/master/SunXDCC_-_normalize_values#readme) - Converts the values: in the 'Record' column from B/s to kB/s, and in the 'Size' column from e.g. G to GB. Also adds a space between the value and the unit, in both cases. - [thepiratebay - add a sortable Ratio column](https://github.com/darkred/Userscripts/tree/master/thepiratebay_-_add_a_sortable_Ratio_column#readme) - Adds a sortable "Ratio" column. - [thepiratebay helper](https://github.com/darkred/Userscripts/tree/master/thepiratebay_helper#readme) - Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether. - [Twitter - add unread notifications count in the tab title](https://github.com/darkred/Userscripts/tree/master/Twitter_-_add_unread_notifications_count_in_the_tab_title#readme) - Adds unread notifications count in the tab title. From d682b52ef8c18a5387b7afc46b9c5923f32cf242 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 4 Feb 2021 23:52:25 +0200 Subject: [PATCH 058/245] Update Google_youtube_search_link.user.js Had missed two selectors that needed update --- .../Google_youtube_search_link.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Google_youtube_search_link/Google_youtube_search_link.user.js b/Google_youtube_search_link/Google_youtube_search_link.user.js index c70b423..61cdb3a 100644 --- a/Google_youtube_search_link/Google_youtube_search_link.user.js +++ b/Google_youtube_search_link/Google_youtube_search_link.user.js @@ -4,7 +4,7 @@ // @author wOxxOm, darkred // @license MIT // @description Adds a YouTube search link next to the Videos link (e.g. Web, Images, Videos, YouTube, News, Maps, Shopping, ...) -// @version 2021.2.4 +// @version 2021.2.4.1 // @include https://www.google.com/* // @include /https?:\/\/(www\.)?google\.(com|(?:com?\.)?\w\w)\/.*/ // @grant none @@ -66,8 +66,8 @@ function process(mutations) { `; var text = ''; var node = document.querySelector(`a[href*='tbm=vid']`); // selector for the 'Videos' link (works in any Google search page language) From 0dbbbe7649b1caa41430e171ab750ee166024312 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 5 Feb 2021 17:16:21 +0200 Subject: [PATCH 059/245] Update Google_youtube_search_link.user.js --- Google_youtube_search_link/Google_youtube_search_link.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Google_youtube_search_link/Google_youtube_search_link.user.js b/Google_youtube_search_link/Google_youtube_search_link.user.js index 61cdb3a..4c13778 100644 --- a/Google_youtube_search_link/Google_youtube_search_link.user.js +++ b/Google_youtube_search_link/Google_youtube_search_link.user.js @@ -4,7 +4,7 @@ // @author wOxxOm, darkred // @license MIT // @description Adds a YouTube search link next to the Videos link (e.g. Web, Images, Videos, YouTube, News, Maps, Shopping, ...) -// @version 2021.2.4.1 +// @version 2021.2.5 // @include https://www.google.com/* // @include /https?:\/\/(www\.)?google\.(com|(?:com?\.)?\w\w)\/.*/ // @grant none @@ -65,7 +65,7 @@ function process(mutations) { `; - var text = ''; - var node = document.querySelector(`a[href*='tbm=vid']`); // selector for the 'Videos' link (works in any Google search page language) + // var node = document.querySelector(`a[href*='tbm=vid']`); + var selectedTabElement = document.querySelector('div.hdtb-mitem.hdtb-msel'); // Unfortunately NOT WORKING when the 'Images' tab is selected + if (selectedTabElement.textContent === 'All' || selectedTabElement.textContent === 'News'){ + var node = document.querySelector(`a[href*='tbm=vid']`); // selector for the 'Videos' link (works in any Google search page language) + } else if (selectedTabElement.textContent === 'Videos'){ + node = selectedTabElement.firstElementChild; + } + // node.parentElement.insertAdjacentHTML('afterend', text); // insert the YouTube link } From 5820d55920e7aff7cdd45616ce4fe167a6977ee4 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 13 Feb 2021 18:50:14 +0200 Subject: [PATCH 063/245] Update README.md --- Google_youtube_search_link/README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Google_youtube_search_link/README.md b/Google_youtube_search_link/README.md index ac822ff..09b6fe2 100644 --- a/Google_youtube_search_link/README.md +++ b/Google_youtube_search_link/README.md @@ -11,7 +11,7 @@ _It doesn't rearrange the rest links (see note)._ i.e. if you type something in google search that looks like you're searching for _images_, -the links will become: +the links will become [2] : `All | Images | Videos | YouTube | etc` If it looks like you're looking for _videos_, the links will become: @@ -29,8 +29,10 @@ And, if you type a _book_ title then the links will become:
-_Note: The initial script was offering:_ -- _either (by default) to re-arrange links so that the Images, Videos, Youtube links to always be on 2nd, 3rd, 4th places, -which was breaking the Google's default tabs order (which takes into account the kind of search criteria that you have entered) -and is removed in this fork._ -- _or to add the YouTube link after all existing links, to the right (with some spacing in between)._ +_Notes:_ +1. The initial script was offering: + - either (by default) to re-arrange links so that the Images, Videos, Youtube links to always be on 2nd, 3rd, 4th places, +_which was breaking the Google's default tabs order (which takes into account the kind of search criteria that you have entered) and is removed in this fork._ + - or to add the YouTube link after all existing links, to the right (with some spacing in between). +2. The script currently no longer works when you are in the 'Images' tab, because the selectors are changed. [TODO] +*see https://github.com/darkred/Userscripts/issues/20#issuecomment-778643921* \ No newline at end of file From 0e1b1af0605906085adfd505f3160d6a211325e3 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 13 Feb 2021 22:23:22 +0200 Subject: [PATCH 064/245] Update Google_youtube_search_link.user.js Better fix for #20 (previous version didn't work in localized google pages). Now it also works in 'Images' tab again --- .../Google_youtube_search_link.user.js | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/Google_youtube_search_link/Google_youtube_search_link.user.js b/Google_youtube_search_link/Google_youtube_search_link.user.js index 490f98f..6931a43 100644 --- a/Google_youtube_search_link/Google_youtube_search_link.user.js +++ b/Google_youtube_search_link/Google_youtube_search_link.user.js @@ -4,7 +4,7 @@ // @author wOxxOm, darkred // @license MIT // @description Adds a YouTube search link next to the Videos link (e.g. Web, Images, Videos, YouTube, News, Maps, Shopping, ...) -// @version 2021.2.13 +// @version 2021.2.13.1 // @include https://www.google.com/* // @include /https?:\/\/(www\.)?google\.(com|(?:com?\.)?\w\w)\/.*/ // @grant none @@ -20,12 +20,13 @@ function process(mutations) { if (youtube) return; - var menu = document.querySelector('#hdtb'); // selector for the element that contains all the links (Web, Images, Videos, News, Maps, Shopping, ...) - // TODO: var menu = document.querySelector('#hdtb, .ndYZfc'); // TODO .ndYZfc is for when Images tab is selected + // var menu = document.querySelector('#hdtb'); // selector for the element that contains all the links (Web, Images, Videos, News, Maps, Shopping, ...) + var menu = document.querySelector('#hdtb, .ndYZfc'); // .ndYZfc is for when Images tab is selected if (!menu) return; - var menuContainer = menu.querySelector('#hdtb-msb').parentNode; + // var menuContainer = menu.querySelector('#hdtb-msb').parentNode; + var menuContainer = menu.querySelector('#hdtb-msb, .tAcEof').parentNode; // .tAcEof is for when Images tab is selected if (!youtube) { var q = '', @@ -71,24 +72,17 @@ function process(mutations) { '' + svg + 'YouTube' + ''; - // var node = document.querySelector(`a[href*='tbm=vid']`); - var selectedTabElement = document.querySelector('div.hdtb-mitem.hdtb-msel'); // Unfortunately NOT WORKING when the 'Images' tab is selected - if (selectedTabElement.textContent === 'All' || selectedTabElement.textContent === 'News'){ - var node = document.querySelector(`a[href*='tbm=vid']`); // selector for the 'Videos' link (works in any Google search page language) - } else if (selectedTabElement.textContent === 'Videos'){ - node = selectedTabElement.firstElementChild; - } - // + 'href="https://www.youtube.com/results?search_query=' + q + '">' + svg + 'YouTube'; + // select the 'Videos' tab svg icon by its path[d] attribute + node = document.querySelector('path[d^="M10 16.5l6-4.5-6-4.5"]').closest('span'); + } + node.parentElement.insertAdjacentHTML('afterend', text); // insert the YouTube link } From 36b96f162d3138d8eeb07749bec99d3705e8502e Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 14 Feb 2021 01:45:41 +0200 Subject: [PATCH 065/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 43 +++++----------------------- 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f50b7a0..0768c46 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -8,42 +8,13 @@ assignees: '' --- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. From 89f894a760f9c06c1df6f6ee2314ef6cfd56363a Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 14 Feb 2021 12:01:30 +0200 Subject: [PATCH 066/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0768c46..e13bd4e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,11 +10,12 @@ assignees: '' From da2bb722f139ca6c30edb7cac700bb044fa5cd7d Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 14 Feb 2021 12:05:35 +0200 Subject: [PATCH 067/245] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 972827f..f4e36fb 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -10,19 +10,7 @@ assignees: '' - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From 5641e1a6ec0ab812172eaae9da6d54593d138eb3 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 15 Feb 2021 18:54:35 +0200 Subject: [PATCH 068/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e13bd4e..8fc8a3d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -15,7 +15,7 @@ Thanks for reporting a bug! ⛰ 3. Be as specific as possible, I need to know where to look. Provide STR (steps to reproduce) if needed. 4. Include a full URL where the bug appears. 5. Include a screenshot/gif if necessary. -6. Include name and version of your browser and script manager. +6. Include name and version of your browser and script manager (Greasemonkey is not supported). Issues without enough details and URL/screenshot if necessary will be closed. --> From 351c31be0f6ba88ec376adb50d7f6ac625327444 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 15 Feb 2021 19:18:46 +0200 Subject: [PATCH 069/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8fc8a3d..29f66c4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -15,7 +15,8 @@ Thanks for reporting a bug! ⛰ 3. Be as specific as possible, I need to know where to look. Provide STR (steps to reproduce) if needed. 4. Include a full URL where the bug appears. 5. Include a screenshot/gif if necessary. -6. Include name and version of your browser and script manager (Greasemonkey is not supported). +6. Include name and version of your browser and script manager +(Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). Issues without enough details and URL/screenshot if necessary will be closed. --> From d370bfee0a4c7fc2fd2e7b5ad2e2a7924170158a Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 16 Feb 2021 15:26:38 +0200 Subject: [PATCH 070/245] Update ProtonMail_-_remove_forced_signature.user.js Fix #22 --- .../ProtonMail_-_remove_forced_signature.user.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index 4d357e2..19a7f24 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -7,6 +7,7 @@ // @license MIT // @include https://mail.protonmail.com/* // @include https://beta.protonmail.com/* +// @include https://protonirockerxow.onion/* // @grant none // @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js // @supportURL https://github.com/darkred/Userscripts/issues From aeab14f72dab54a0ae816bd379d83bfdf2abdf8d Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 16 Feb 2021 16:27:20 +0200 Subject: [PATCH 071/245] Update ProtonMail_-_remove_forced_signature.user.js Version bump --- .../ProtonMail_-_remove_forced_signature.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index 19a7f24..f0d0ffe 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name ProtonMail - remove forced signature // @namespace darkred -// @version 2020.12.01 +// @version 2021.2.16 // @description Removes the forced ProtonMail signature from the 'New message' textboxes // @author darkred // @license MIT From bab7f185218555ddc460de9085aafa6c62efc53a Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Mar 2021 16:05:39 +0200 Subject: [PATCH 072/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 29f66c4..9206371 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -14,9 +14,9 @@ Thanks for reporting a bug! ⛰ 2. Make sure the bug is caused by the userscript. Try disabling the other userscripts (and extensions) first. 3. Be as specific as possible, I need to know where to look. Provide STR (steps to reproduce) if needed. 4. Include a full URL where the bug appears. -5. Include a screenshot/gif if necessary. +5. Include a screenshot/gif so I can help you better. 6. Include name and version of your browser and script manager (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). -Issues without enough details and URL/screenshot if necessary will be closed. +If I can't see the issue nor can replicate it easily, I can't help. --> From 5c0fc3147124262789c57a58c21bc747e7387a73 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Mar 2021 16:10:39 +0200 Subject: [PATCH 073/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9206371..c2f383a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,13 +10,12 @@ assignees: '' From 1f05f54c398904856ba9d519c999d3965a962e86 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 2 Mar 2021 16:11:27 +0200 Subject: [PATCH 074/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c2f383a..00dc8e4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -15,7 +15,7 @@ Thanks for reporting a bug! ⛰ 3. Be as specific as possible, I need to know where to look. 4. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. 5. Include a screenshot/gif so I can help you better. -6. Include name and version of your browser and script manager. (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). +6. Include name and version of your browser and script manager (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). If I can't see the issue nor can replicate it easily, I can't help. --> From 554789978fb679f3b851f645981ac8f61d5631e7 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 8 Mar 2021 16:17:59 +0200 Subject: [PATCH 075/245] (Markdown toolbar for GreasyFork) Initial Commit --- .../Markdown_toolbar_for_GreasyFork.user.js | 315 ++++++++++++++++++ Markdown_toolbar_for_GreasyFork/README.md | 29 ++ 2 files changed, 344 insertions(+) create mode 100644 Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js create mode 100644 Markdown_toolbar_for_GreasyFork/README.md diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js new file mode 100644 index 0000000..d89e610 --- /dev/null +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -0,0 +1,315 @@ +// ==UserScript== +// @name Markdown toolbar for GreasyFork +// @name:ru Markdown-тулбар для GreasyFork +// @name:zh-CN GreasyFork markdown +// @author wOxxOm, darkred +// @contributor JixunMoe +// @license MIT License +// @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown +// @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown +// @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 +// @icon https://raw.githubusercontent.com/dcurtis/markdown-mark/master/png/66x40-solid.png +// @namespace wOxxOm.scripts +// @version 2.0.0 +// @include https://greasyfork.org/*discussions/* +// @include https://greasyfork.org/*scripts/*/versions/new* +// @include https://greasyfork.org/*script_versions/new* +// @include https://greasyfork.org/*/conversations/* +// @include https://greasyfork.org/en/users/edit +// @run-at document-start +// @grant GM_addStyle +// ==/UserScript== + +/* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */ + + +// @include https://forum.userstyles.org/discussion/* +// @include https://forum.userstyles.org/post/discussion* +// @include https://forum.userstyles.org/messages/* +// @include https://forum.userstyles.org/messages/add* +// @include https://forum.userstyles.org/*/editdiscussion/* + +var inForum = location.href.indexOf('/discussions') > 0; + +window.addEventListener('DOMContentLoaded', function(e) { + if (inForum){ + addFeatures(document.querySelector('.label-note > input').parentNode.appendChild(document.createElement('br'))); + } + else { + + if (nn = document.querySelectorAll('input[value="markdown"]')) + for (var n, i=0; (i or
. + if (inForum) { + if ((n.localName == 'label' && n.querySelector('input[value="Markdown"], input[value="Html"], input[value="markdown"], input[value="html"]')) + || (n = n.querySelector('input[value="Markdown"], input[value="markdown"]') || n.querySelector('input[value="Html"], input[value="html"]'))) + return addFeatures(n.closest('label')); + } else { + if (((n.localName == 'input') && (n.value.toLowerCase() == 'Markdown')) + || (n = n.querySelector('input[value="Markdown"], input[value="markdown"]'))) { + if (location.href.indexOf('/script_versions/')) + n.click(); + return addFeatures(n.parentNode.appendChild(document.createElement('br'))); + } + } + } + } + }).observe(document, {subtree:true, childList:true}); +}); + + + + + +function addFeatures(n) { + + if (!n){ + return; + } + +/* + if (!inForum) { +*/ + var form = n.closest('form'); + // span.current > a.write-tab + // var form = n.querySelector('form'); + if (form.action.indexOf('/edit') < 0) { + n.click(); + } + + n.parentNode.textAreaNode = form.querySelector('textarea.TextBox, textarea.previewable'); + // add formatting help tooltips (the '(?)' ) + n.previousElementSibling.insertAdjacentHTML('beforeend', + ' (?)'); + n.insertAdjacentHTML('beforeend', + ' (?)'); + // if (location.href.indexOf('/forum/messages/') > -1) + if (location.href.indexOf('/conversations/') > -1) + GM_addStyle('#ConversationForm label { display:inline-block; margin-right:2ex }\ + #ConversationForm .TextBox { margin-top:0 }'); + + +/* + + } else { // if not in forum +*/ + for (var wrapper=n; wrapper = wrapper.parentNode; ) + // if (t = wrapper.querySelector('textarea[id*="additional-info"]')) { + if (t = wrapper.querySelector('textarea[id*="additional-info"], textarea[id*="conversation_messages_attributes_0_content"], textarea[id*="discussion_comments_attributes_0_text"], textarea[id*="comment_text"], textarea[id*="user_profile"]')) { + n.parentNode.textAreaNode = t; + break; + } + GM_addStyle('\ + .Button {\ + display: inline-block;\ + cursor: pointer;\ + margin: 0px;\ + font-size: 12px;\ + line-height: 1;\ + font-weight: bold;\ + padding: 4px 6px;\ + background: -moz-linear-gradient(center bottom , #CCC 0%, #FAFAFA 100%) repeat scroll 0% 0% #F8F8F8;\ + border: 1px solid #999;\ + border-radius: 2px;\ + white-space: nowrap;\ + text-shadow: 0px 1px 0px #FFF;\ + box-shadow: 0px 1px 0px #FFF inset, 0px -1px 2px #BBB inset;\ + color: #333;}' + ); + + // } + + + + + // add buttons + // console.log(n); + // debugger + btnMake(n, ''+__('B')+'', __('Bold'), '**'); + btnMake(n, ''+__('I')+'', __('Italic'), '*'); + btnMake(n, ''+__('U')+'', __('Underline'), '',''); + btnMake(n, ''+__('S')+'', __('Strikethrough'), '',''); + btnMake(n, '<br>', __('Force line break'), '
','', true); + btnMake(n, '---', __('Horizontal line'), '\n\n---\n\n', '', true); + btnMake(n, __('URL'), __('Add URL to selected text'), + function(e) { + try {edWrapInTag('[', ']('+prompt(__('URL')+':')+')', edInit(e.target))} + catch(ex) {} + }); + btnMake(n, __('Image (https)'), __('Convert selected https://url to inline image'), '!['+__('image')+'](', ')'); + if (inForum) + btnMake(n, __('Table'), __('Insert table template'), __('\n| head1 | head2 |\n|-------|-------|\n| cell1 | cell2 |\n| cell3 | cell4 |\n'), '', true); + btnMake(n, __('Code'), __('Apply CODE markdown to selected text'), + function(e){ + var ed = edInit(e.target); + if (ed.sel.indexOf('\n') < 0) + edWrapInTag('`', '`', ed); + else + edWrapInTag(((ed.sel1==0) || (ed.text.charAt(ed.sel1-1) == '\n') ? '' : '\n') + '```' + (ed.sel.charAt(0) == '\n' ? '' : '\n'), + (ed.sel.substr(-1) == '\n' ? '' : '\n') + '```' + (ed.text.substr(ed.sel2,1) == '\n' ? '' : '\n'), + ed); + }); + + + + + var previewTab = document.querySelector('span > a.preview-tab > span'); + if (previewTab){ + previewTab.onclick = function(){ + document.querySelectorAll('.Button').forEach(element => element.style.display = 'none'); + }; + } + + var writeTab = document.querySelector('span > a.write-tab > span'); + if (writeTab){ + writeTab.onclick = function(){ + document.querySelectorAll('.Button').forEach(element => element.style.display = 'inline-block'); + }; + } + + + + +} + + + + +function btnMake(afterNode, label, title, tag1_or_cb, tag2, noWrap) { + var a = document.createElement('a'); + a.className = 'Button'; + a.innerHTML = label; + a.title = title; + // if (inForum) + // a.style.setProperty('float','right'); + a.addEventListener('click', + typeof(tag1_or_cb) == 'function' ? tag1_or_cb : // if + noWrap ? function(e){edInsertText(tag1_or_cb, edInit(e.target))} : // else if + function(e){edWrapInTag(tag1_or_cb, tag2, edInit(e.target))} // else + ); + var nparent = afterNode.parentNode; + console.log(nparent) + // a.textAreaNode = nparent.textAreaNode ; + a.textAreaNode = nparent.parentNode.querySelector('textArea'); + // console.log(a.textAreaNode) + // inForum ? nparent.insertBefore(a, nparent.firstElementChild) : nparent.appendChild(a); + // nparent.insertBefore(a, nparent.firstElementChild) + nparent.appendChild(a); +} + + + + +function edInit(btn) { + var ed = {node: btn.textAreaNode || btn.parentNode.textAreaNode}; + ed.sel1 = ed.node.selectionStart; + ed.sel2 = ed.node.selectionEnd, + ed.text = ed.node.value; + ed.sel = ed.text.substring(ed.sel1, ed.sel2); + return ed; +} + +function edWrapInTag(tag1, tag2, ed) { + ed.node.value = ed.text.substr(0, ed.sel1) + tag1 + ed.sel + (tag2?tag2:tag1) + ed.text.substr(ed.sel2); + ed.node.setSelectionRange(ed.sel1 + tag1.length, ed.sel1 + tag1.length + ed.sel.length); + ed.node.focus(); +} + +function edInsertText(text, ed) { + ed.node.value = ed.text.substr(0, ed.sel2) + text + ed.text.substr(ed.sel2); + ed.node.setSelectionRange(ed.sel2 + text.length, ed.sel2 + text.length); + ed.node.focus(); +} + +var __ = (function (l, langs) { + var lang = langs[l] || langs[l.replace(/-.+/, '')]; + return lang ? function (text) { return lang[text] || text; } + : function (text) { return text }; // No matching language, fallback to english +})(location.pathname.match(/^\/(.+?)\//)[1], { + // Can be full name, or just the beginning part. + 'zh-CN': { + 'Bold': '粗体', + 'Italic': '斜体', + 'Underline': '下划线', + 'Strikethrough': '删除线', + 'Force line break': '强制换行', + 'Horizontal line': '水平分割线', + 'URL': '链接', + 'Add URL to selected text': '为所选文字添加链接', + 'Image (https)': '图片 (https)', + 'Convert selected https://url to inline image': '将所选地址转换为行内图片', + 'image': '图片描述', // Default image alt value + 'Table': '表格', + 'Insert table template': '插入表格模板', + 'Code': '代码', + 'Apply CODE markdown to selected text': '将选中代码围起来', + + '\n| head1 | head2 |\n|-------|-------|\n| cell1 | cell2 |\n| cell3 | cell4 |\n': + '\n| 表头 1 | 表头 2 |\n|-------|-------|\n| 表格 1 | 表格 2 |\n| 表格 3 | 表格 4 |\n' + }, + 'ru': { + 'B': 'Ж', + 'I': 'К', + 'U': 'Ч', + 'S': 'П', + 'Bold': 'Жирный', + 'Italic': 'Курсив', + 'Underline': 'Подчеркнутый', + 'Strikethrough': 'Перечеркнутый', + 'Force line break': 'Новая строка', + 'Horizontal line': 'Горизонтальная линия', + 'URL': 'ссылка', + 'Add URL to selected text': 'Добавить ссылку к выделенному тексту', + 'Image (https)': 'Картинка (https)', + 'Convert selected https://url to inline image': 'Преобразовать выделенный https:// адрес в картинку', + 'image': 'картинка', // Default image alt value + 'Table': 'Таблица', + 'Insert table template': 'Вставить шаблон таблицы', + 'Code': 'Код', + 'Apply CODE markdown to selected text': 'Пометить выделенный фрагмент как программный код', + + '\n| head1 | head2 |\n|-------|-------|\n| cell1 | cell2 |\n| cell3 | cell4 |\n': + '\n| заголовок1 | заголовок2 |\n|-------|-------|\n| ячейка1 | ячейка2 |\n| ячейка3 | ячейка4 |\n' + }, + 'fr': { + 'B': 'G', + 'I': 'I', + 'U': 'S', + 'S': 'B', + 'Bold': 'Gras', + 'Italic': 'Italique', + 'Underline': 'Souligné', + 'Strikethrough': 'Barré', + 'Force line break': 'Forcer le saut de ligne', + 'Horizontal line': 'Ligne horizontale', + 'URL': 'URL', + 'Add URL to selected text': 'Ajouter URL au texte sélectionné', + 'Image (https)': 'Image (https)', + 'Convert selected https://url to inline image': 'Convertir https://url sélectionnés en images', + 'image': 'image', // Default image alt value + 'Table': 'Tableau', + 'Insert table template': 'Insérer un modèle de table', + 'Code': 'Code', + 'Apply CODE markdown to selected text': 'Appliquer CODE markdown au texte sélectionné', + + '\n| head1 | head2 |\n|-------|-------|\n| cell1 | cell2 |\n| cell3 | cell4 |\n': + '\n| En-tête 1 | En-tête 2 |\n|-------|-------|\n| cellule 1 | cellule 2 |\n| cellule 3 | cellule 4 |\n' + } +}); diff --git a/Markdown_toolbar_for_GreasyFork/README.md b/Markdown_toolbar_for_GreasyFork/README.md new file mode 100644 index 0000000..04961c0 --- /dev/null +++ b/Markdown_toolbar_for_GreasyFork/README.md @@ -0,0 +1,29 @@ +The script is a modified version of by wOxxOm, to work with the new GF layout. +Thanks to wOxxOm for offering the initial versions. + +* Common formatting buttons (markdown only) +* (forum) HTML & markdown formatting help links +* CODE markdown button that wraps selected text in \` or \``` if multiple lines are selected. +* MARKDOWN format by default for new comments - also can be set in your profile settings. + +Tested on Chrome/Firefox with Tampermonkey/Violentmonkey *(Greasemonkey is not supported)*. + +Screenshots: + +
+Forum + +![](https://i.imgur.com/lxFoQBs.jpg) ![](https://i.imgur.com/9CLLAzV.jpg) +
+ +
+Publish script | Info + +![](https://i.imgur.com/9CLLAzV.jpg) +
+ +
+Conversations/pm + +![](https://i.imgur.com/VZ4clqQ.jpg) +
\ No newline at end of file From 857d6d0f999c3dc74ce8b336086a427aba8419b8 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 8 Mar 2021 18:53:05 +0200 Subject: [PATCH 076/245] Update Instagram_-_visible_images_counter.user.js Better support for History API navigation --- ...Instagram_-_visible_images_counter.user.js | 79 ++++++++++++++++--- 1 file changed, 66 insertions(+), 13 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 47fc51e..378547a 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2019.4.28 +// @version 2021.3.8 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -80,6 +80,11 @@ function createDiv() { function createObserver() { + var thePics = document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'); + if (!thePics){ + return; + } + hrefselems.length = 0; // empty the array (see https://stackoverflow.com/a/1232046, method #2) hrefs.length = 0; /// --------------------------------- @@ -90,9 +95,11 @@ function createObserver() { div.innerHTML = showCounter(); // On each infinite scrolling event, re-calculate counter } // }).observe(document.querySelector('._havey'), // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) - }).observe(document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'), // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) - { - // attributes: true, + // }).observe(document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'), // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) + }); + + observer.observe(thePics, // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) + { // attributes: true, childList: true, // characterData: true, // subtree: true, @@ -111,16 +118,21 @@ var observer; // var avatarSelector = 'span[style="width: 152px; height: 152px;"]'; // the profile's photo/avatar element // var avatarSelector = '._mainc'; // the profile's bio area element // var avatarSelector = 'h1.notranslate'; // the profile name element -var avatarSelector = 'h1.rhpdm'; // the profile name element +// var avatarSelector = 'h1.rhpdm'; // the profile name element +// var avatarSelector = 'span.-nal3'; // the 'posts' count element, e.g. 683 posts +// var avatarSelector = 'ul.k9GMp'; // the profile's 3 counters container element +var avatarSelector = '.nZSzR'; // the profile's username container element // var avatarSelector = 'main > article > header > section > div._ienqf > div > button'; // the 3-dots icon // var avatarSelector = 'div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'; // the 3-dots icon -if (document.querySelector(avatarSelector)) { - createDiv(); - createObserver(); +if (document.querySelector(avatarSelector) ) { + if (!document.querySelector('.counter')){ + createDiv(); + createObserver(); + } } else { console.log('ERROR: Cannot create the Counter element, the avatarSelector element ( ' + avatarSelector + ' ) doesn\'t exist !!'); } @@ -129,15 +141,56 @@ if (document.querySelector(avatarSelector)) { document.arrive(avatarSelector, function() { // the avatar in the profile page createDiv(); createObserver(); + alert() }); +function removeCounter(){ + div.remove(); + hrefselems.length = 0; // empty the array (see https://stackoverflow.com/a/1232046, method #2) + hrefs.length = 0; + observer.disconnect(); + // if (observer) { + // observer.disconnect(); + // } +} + + document.leave(avatarSelector, function() { - if (!document.querySelector('h1.notranslate')){ - div.remove(); - hrefselems.length = 0; // empty the array (see https://stackoverflow.com/a/1232046, method #2) - hrefs.length = 0; - observer.disconnect(); + if (!document.querySelector(avatarSelector)){ + removeCounter(); } }); + + +// when navigating using the browser's back/forth +window.addEventListener('popstate', function (event) { + // alert() + removeCounter(); + console.log('COUNTER IS REMOVED'); + + // TODO + // createDiv(); + // createObserver(); + + hrefselems = []; + hrefs = []; + total = ''; + + +}); + + +// when navigating from a profile to another via searchbox // history API) +// https://stackoverflow.com/questions/56760727/how-to-observe-a-change-in-the-url-using-javascript +(function(){ + var rs = history.pushState; + history.pushState = function(){ + rs.apply(history, arguments); // preserve normal functionality + console.log("navigating", arguments); // do something extra here; raise an event + // alert('ALERTI') + removeCounter(); + }; +}()); + From 8fad517f6a63897ab1a6ab27c0ce5c4a7cbea758 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 8 Mar 2021 20:05:39 +0200 Subject: [PATCH 077/245] (Markdown toolbar for GreasyFork) --- Markdown_toolbar_for_GreasyFork/66x40-solid.png | Bin 0 -> 403 bytes .../Markdown_toolbar_for_GreasyFork.user.js | 16 ++++++++++------ Markdown_toolbar_for_GreasyFork/README.md | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 Markdown_toolbar_for_GreasyFork/66x40-solid.png diff --git a/Markdown_toolbar_for_GreasyFork/66x40-solid.png b/Markdown_toolbar_for_GreasyFork/66x40-solid.png new file mode 100644 index 0000000000000000000000000000000000000000..579b9e0a8cbaa36c0caf792f1bf548f187963dc5 GIT binary patch literal 403 zcmV;E0c`$>P)1FuoEM!%ls>YidC<~jcStSvi*6#qNh3ddvgK=kqe?c4 zZX?3>&$e>|7L`&IT}N~<-!lvSV4-JeBEm%z!9*8Ds)%sh$j=@TDI>zx&;E(8{Qo2V xNBkx~Ne+p`9%5elA7?Pxez!ydZ`p4$p8&9I4%PoXws`;m002ovPDHLkV1g#!t=Rwo literal 0 HcmV?d00001 diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index d89e610..fdeca89 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -2,33 +2,37 @@ // @name Markdown toolbar for GreasyFork // @name:ru Markdown-тулбар для GreasyFork // @name:zh-CN GreasyFork markdown -// @author wOxxOm, darkred -// @contributor JixunMoe -// @license MIT License +// @namespace darkred +// @version 2.0.0 // @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown // @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown // @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 +// @author wOxxOm, darkred +// @contributor JixunMoe +// @license MIT // @icon https://raw.githubusercontent.com/dcurtis/markdown-mark/master/png/66x40-solid.png -// @namespace wOxxOm.scripts -// @version 2.0.0 // @include https://greasyfork.org/*discussions/* // @include https://greasyfork.org/*scripts/*/versions/new* // @include https://greasyfork.org/*script_versions/new* // @include https://greasyfork.org/*/conversations/* // @include https://greasyfork.org/en/users/edit -// @run-at document-start // @grant GM_addStyle +// @run-at document-start +// @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== /* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */ +// Previous inclure rules - kept for reference // @include https://forum.userstyles.org/discussion/* // @include https://forum.userstyles.org/post/discussion* // @include https://forum.userstyles.org/messages/* // @include https://forum.userstyles.org/messages/add* // @include https://forum.userstyles.org/*/editdiscussion/* + + var inForum = location.href.indexOf('/discussions') > 0; window.addEventListener('DOMContentLoaded', function(e) { diff --git a/Markdown_toolbar_for_GreasyFork/README.md b/Markdown_toolbar_for_GreasyFork/README.md index 04961c0..55a668e 100644 --- a/Markdown_toolbar_for_GreasyFork/README.md +++ b/Markdown_toolbar_for_GreasyFork/README.md @@ -19,7 +19,7 @@ Screenshots:
Publish script | Info -![](https://i.imgur.com/9CLLAzV.jpg) +![](https://i.imgur.com/poPEKZ3.jpg)
From ed6c8384d08e5051c8c21d75a3af1bb01640da24 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 8 Mar 2021 20:09:40 +0200 Subject: [PATCH 078/245] Update Markdown_toolbar_for_GreasyFork.user.js --- .../Markdown_toolbar_for_GreasyFork.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index fdeca89..a995c34 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -18,7 +18,7 @@ // @include https://greasyfork.org/en/users/edit // @grant GM_addStyle // @run-at document-start -// @supportURL https://github.com/darkred/Userscripts/issues +// @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== /* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */ From 01d4b5bbf216d78e13d54e7afa9cd05c77a8cb56 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 9 Mar 2021 23:25:31 +0200 Subject: [PATCH 079/245] Update Markdown_toolbar_for_GreasyFork.user.js - Updates for #23 - removed stray log lines --- .../Markdown_toolbar_for_GreasyFork.user.js | 65 +++++++++++-------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index a995c34..44c0465 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -3,7 +3,7 @@ // @name:ru Markdown-тулбар для GreasyFork // @name:zh-CN GreasyFork markdown // @namespace darkred -// @version 2.0.0 +// @version 2.0.1 // @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown // @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown // @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 @@ -13,6 +13,7 @@ // @icon https://raw.githubusercontent.com/dcurtis/markdown-mark/master/png/66x40-solid.png // @include https://greasyfork.org/*discussions/* // @include https://greasyfork.org/*scripts/*/versions/new* +// @include https://greasyfork.org/*scripts/*/feedback* // @include https://greasyfork.org/*script_versions/new* // @include https://greasyfork.org/*/conversations/* // @include https://greasyfork.org/en/users/edit @@ -24,12 +25,15 @@ /* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */ -// Previous inclure rules - kept for reference -// @include https://forum.userstyles.org/discussion/* -// @include https://forum.userstyles.org/post/discussion* -// @include https://forum.userstyles.org/messages/* -// @include https://forum.userstyles.org/messages/add* -// @include https://forum.userstyles.org/*/editdiscussion/* +// Example URLS to test: +// https://greasyfork.org/en/discussions/new +// https://greasyfork.org/en/scripts/422887-markdown-toolbar-for-greasyfork/discussions/78139 +// https://greasyfork.org/en/scripts/23493/versions/new +// https://greasyfork.org/en/scripts/422445-github-watcher/feedback +// https://greasyfork.org/en/users/2160-darkred/conversations/new +// https://greasyfork.org/en/users/edit + + @@ -37,7 +41,9 @@ var inForum = location.href.indexOf('/discussions') > 0; window.addEventListener('DOMContentLoaded', function(e) { if (inForum){ - addFeatures(document.querySelector('.label-note > input').parentNode.appendChild(document.createElement('br'))); + var refElement = document.querySelector('div > div > .label-note') || document.querySelector('.label-note'); + addFeatures(refElement.insertAdjacentHTML('beforeend','
')); + addFeatures(refElement); } else { @@ -76,6 +82,10 @@ window.addEventListener('DOMContentLoaded', function(e) { +function insertAfter(referenceNode, newNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); +} + function addFeatures(n) { @@ -85,29 +95,29 @@ function addFeatures(n) { } /* - if (!inForum) { + if (inForum) { */ var form = n.closest('form'); + // console.log(form) // span.current > a.write-tab // var form = n.querySelector('form'); if (form.action.indexOf('/edit') < 0) { n.click(); } - n.parentNode.textAreaNode = form.querySelector('textarea.TextBox, textarea.previewable'); + n.parentNode.textAreaNode = form.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea'); // add formatting help tooltips (the '(?)' ) - n.previousElementSibling.insertAdjacentHTML('beforeend', - ' (?)'); - n.insertAdjacentHTML('beforeend', - ' (?)'); - // if (location.href.indexOf('/forum/messages/') > -1) - if (location.href.indexOf('/conversations/') > -1) - GM_addStyle('#ConversationForm label { display:inline-block; margin-right:2ex }\ - #ConversationForm .TextBox { margin-top:0 }'); + 'time (datetime, pubdate), u, ul, var">?' ; /* @@ -144,7 +154,6 @@ function addFeatures(n) { // add buttons - // console.log(n); // debugger btnMake(n, ''+__('B')+'', __('Bold'), '**'); btnMake(n, ''+__('I')+'', __('Italic'), '*'); @@ -208,13 +217,17 @@ function btnMake(afterNode, label, title, tag1_or_cb, tag2, noWrap) { noWrap ? function(e){edInsertText(tag1_or_cb, edInit(e.target))} : // else if function(e){edWrapInTag(tag1_or_cb, tag2, edInit(e.target))} // else ); + + /* INITIAL var nparent = afterNode.parentNode; - console.log(nparent) - // a.textAreaNode = nparent.textAreaNode ; - a.textAreaNode = nparent.parentNode.querySelector('textArea'); - // console.log(a.textAreaNode) - // inForum ? nparent.insertBefore(a, nparent.firstElementChild) : nparent.appendChild(a); - // nparent.insertBefore(a, nparent.firstElementChild) + a.textAreaNode = nparent.textAreaNode; + inForum ? nparent.insertBefore(a, nparent.firstElementChild) : nparent.appendChild(a); + */ + + var nparent; + inForum ? nparent = afterNode : nparent = afterNode.parentNode; + a.textAreaNode = nparent.textAreaNode || nparent.parentNode.querySelector('textArea');; + // a.textAreaNode = nparent.textAreaNode || nparent.closest('textArea'); nparent.appendChild(a); } From 1cbe0273e59ba32e491aa38c8b882adf66ae81c5 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 10 Mar 2021 11:27:07 +0200 Subject: [PATCH 080/245] Update Instagram_-_visible_images_counter.user.js Removed a stray alert() --- .../Instagram_-_visible_images_counter.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 378547a..78698f1 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.3.8 +// @version 2021.3.10 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -141,7 +141,7 @@ if (document.querySelector(avatarSelector) ) { document.arrive(avatarSelector, function() { // the avatar in the profile page createDiv(); createObserver(); - alert() + // alert() }); @@ -189,7 +189,7 @@ window.addEventListener('popstate', function (event) { history.pushState = function(){ rs.apply(history, arguments); // preserve normal functionality console.log("navigating", arguments); // do something extra here; raise an event - // alert('ALERTI') + // alert() removeCounter(); }; }()); From 2759c7984ff2642c965d5eb6893aad3446663588 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 10 Mar 2021 11:27:07 +0200 Subject: [PATCH 081/245] Removed a stray alert(), fix #24. --- .../Instagram_-_visible_images_counter.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 378547a..78698f1 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.3.8 +// @version 2021.3.10 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -141,7 +141,7 @@ if (document.querySelector(avatarSelector) ) { document.arrive(avatarSelector, function() { // the avatar in the profile page createDiv(); createObserver(); - alert() + // alert() }); @@ -189,7 +189,7 @@ window.addEventListener('popstate', function (event) { history.pushState = function(){ rs.apply(history, arguments); // preserve normal functionality console.log("navigating", arguments); // do something extra here; raise an event - // alert('ALERTI') + // alert() removeCounter(); }; }()); From 56f7a39d70639edcabf04878180e49e0190cdade Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 10 Mar 2021 18:43:07 +0200 Subject: [PATCH 082/245] Update Markdown_toolbar_for_GreasyFork.user.js --- .../Markdown_toolbar_for_GreasyFork.user.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index 44c0465..4101e83 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -118,6 +118,12 @@ function addFeatures(n) { 'h1, h2, h3, h4, h5, h6, hr, i, ins, img (alt, height, src (https), width), kbd, li, mark, ol, p, pre, q (cite), '+ 'rp, rt, ruby, s, samp, small, span, strike, strong, tt, table, tbody, tfoot, thead, td, th, tr, sub, sup, '+ 'time (datetime, pubdate), u, ul, var">?' ; + n.insertAdjacentHTML('beforeend', + ' (?)'); + // if (location.href.indexOf('/forum/messages/') > -1) + if (location.href.indexOf('/conversations/') > -1) + GM_addStyle('#ConversationForm label { display:inline-block; margin-right:2ex }\ + #ConversationForm .TextBox { margin-top:0 }'); /* From 34b7e7a67b188f8ce5ea76672175cab2512b1c84 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 10 Mar 2021 22:28:17 +0200 Subject: [PATCH 083/245] Update Markdown_toolbar_for_GreasyFork.user.js --- .../Markdown_toolbar_for_GreasyFork.user.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index 4101e83..a6c7f17 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -3,7 +3,7 @@ // @name:ru Markdown-тулбар для GreasyFork // @name:zh-CN GreasyFork markdown // @namespace darkred -// @version 2.0.1 +// @version 2.0.2 // @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown // @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown // @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 @@ -41,7 +41,7 @@ var inForum = location.href.indexOf('/discussions') > 0; window.addEventListener('DOMContentLoaded', function(e) { if (inForum){ - var refElement = document.querySelector('div > div > .label-note') || document.querySelector('.label-note'); + var refElement = document.querySelector('input[value] + .label-note') || document.querySelector('.form-control + .label-note') || document.querySelector('form .label-note') || document.querySelector('div > div > .form-control + .label-note') addFeatures(refElement.insertAdjacentHTML('beforeend','
')); addFeatures(refElement); } @@ -109,7 +109,7 @@ function addFeatures(n) { // add formatting help tooltips (the '(?)' ) // .querySelector('input[value="html').firstElementChild - +/* // n.previousElementSibling.insertAdjacentHTML('beforeend', // n.querySelector('input[value="html"]').nextSibling.insertAdjacentHTML('beforeend', const newContent = document.createElement('a'); @@ -124,7 +124,7 @@ function addFeatures(n) { if (location.href.indexOf('/conversations/') > -1) GM_addStyle('#ConversationForm label { display:inline-block; margin-right:2ex }\ #ConversationForm .TextBox { margin-top:0 }'); - +*/ /* From 7cebffa3e20fb5f2dc4dbaa3bb16e4fe4b4a6061 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 11 Mar 2021 20:02:03 +0200 Subject: [PATCH 084/245] Update Instagram_-_visible_images_counter.user.js - avoid NaN in counter - fix for https://github.com/darkred/Userscripts/issues/24#issuecomment-796407167 - updated/improved pics selector --- ...Instagram_-_visible_images_counter.user.js | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 78698f1..9cdd432 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.3.10 +// @version 2021.3.11 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -57,6 +57,9 @@ function showCounter() { var visibleCount = hrefs.length; var visiblePercent = ((visibleCount / total) * 100).toFixed(1); // Visible images count as percentage + if (isNaN(visiblePercent)) { + visiblePercent = 0 ; // avoid NaN + } var counter = visibleCount + ' / ' + totalString + ' that is ' + visiblePercent + '%'; return counter; @@ -80,7 +83,8 @@ function createDiv() { function createObserver() { - var thePics = document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'); + // var thePics = document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'); + var thePics = document.querySelector('div[style^="flex-direction: column;"], div[style|="padding-top: 0px;"]'); // the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) --> https://stackoverflow.com/a/5110337 ("wildcard * in CSS") starting (^=) with x and ending (|=) with y if (!thePics){ return; } @@ -90,7 +94,7 @@ function createObserver() { /// --------------------------------- /// mutation observer -monitors the Posts grid for infinite scrolling event-. /// --------------------------------- - observer = new MutationObserver(function() { + observer = new MutationObserver(function() { // --> Callback function to execute when mutations are observed if (div.innerHTML.indexOf(total + ' / ' + total) === -1) { div.innerHTML = showCounter(); // On each infinite scrolling event, re-calculate counter } @@ -98,7 +102,7 @@ function createObserver() { // }).observe(document.querySelector('div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'), // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) }); - observer.observe(thePics, // target of the observer: the "pics" area element, with rows that contain 3 pics each (watching for 'row' element additions) + observer.observe(thePics, // target of the observer { // attributes: true, childList: true, // characterData: true, @@ -150,6 +154,7 @@ function removeCounter(){ div.remove(); hrefselems.length = 0; // empty the array (see https://stackoverflow.com/a/1232046, method #2) hrefs.length = 0; + total = ''; observer.disconnect(); // if (observer) { // observer.disconnect(); @@ -174,11 +179,6 @@ window.addEventListener('popstate', function (event) { // createDiv(); // createObserver(); - hrefselems = []; - hrefs = []; - total = ''; - - }); @@ -186,11 +186,13 @@ window.addEventListener('popstate', function (event) { // https://stackoverflow.com/questions/56760727/how-to-observe-a-change-in-the-url-using-javascript (function(){ var rs = history.pushState; - history.pushState = function(){ - rs.apply(history, arguments); // preserve normal functionality - console.log("navigating", arguments); // do something extra here; raise an event - // alert() - removeCounter(); + history.pushState = function(state, title, url){ + if ( !url.includes('/following/') && !url.includes('/followers/') && !url.includes('/p/') ){ // avoid all possible in-page/popup "pages" (a profile's following/followers, and posts -opened by clicking on a thumb-) + rs.apply(history, arguments); // preserve normal functionality + console.log('navigating', arguments); // do something extra here; raise an event + removeCounter(); + // alert() + } }; }()); From f85e4f9aa20682f087177066e140d7dfa660ab03 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 12 Mar 2021 23:51:16 +0200 Subject: [PATCH 085/245] Update Markdown_toolbar_for_GreasyFork.user.js - Full fix for https://github.com/darkred/Userscripts/issues/23#issuecomment-794589057 - Various improvements - Removed no longer relevant code --- .../Markdown_toolbar_for_GreasyFork.user.js | 150 +++++++++--------- 1 file changed, 79 insertions(+), 71 deletions(-) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index a6c7f17..8dd0c90 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -3,7 +3,7 @@ // @name:ru Markdown-тулбар для GreasyFork // @name:zh-CN GreasyFork markdown // @namespace darkred -// @version 2.0.2 +// @version 2.0.3 // @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown // @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown // @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 @@ -38,46 +38,53 @@ var inForum = location.href.indexOf('/discussions') > 0; +var inPostNewScriptVer = location.href.indexOf('/versions/new') > 0; + + +// Native $("selector:contains('text')"); https://github.com/nefe/You-Dont-Need-jQuery#1.12 +function contains(selector, text) { + var elements = document.querySelectorAll(selector); + return Array.from(elements).filter(function(element) { + return RegExp(text).test(element.textContent); + }); +} + window.addEventListener('DOMContentLoaded', function(e) { + + var refElements = contains('.label-note', '(See allowed code)' ); + if (inForum){ - var refElement = document.querySelector('input[value] + .label-note') || document.querySelector('.form-control + .label-note') || document.querySelector('form .label-note') || document.querySelector('div > div > .form-control + .label-note') - addFeatures(refElement.insertAdjacentHTML('beforeend','
')); - addFeatures(refElement); - } - else { - if (nn = document.querySelectorAll('input[value="markdown"]')) - for (var n, i=0; (i {element.insertAdjacentHTML('beforeend','
'); addFeatures(element); }); - // addFeatures(document.querySelector('.form-control')); } + else { // not in Forum + + // multiple textareas + if (inPostNewScriptVer) { + refElements = contains('.label-note', '(See allowed code)' ); + refElements.forEach(element => { addFeatures(element.appendChild(document.createElement('br'))); }); + + } else { // every other page - new MutationObserver(function(mutations) { - for (var i=0, ml=mutations.length, m; (i or
. - if (inForum) { - if ((n.localName == 'label' && n.querySelector('input[value="Markdown"], input[value="Html"], input[value="markdown"], input[value="html"]')) - || (n = n.querySelector('input[value="Markdown"], input[value="markdown"]') || n.querySelector('input[value="Html"], input[value="html"]'))) - return addFeatures(n.closest('label')); - } else { - if (((n.localName == 'input') && (n.value.toLowerCase() == 'Markdown')) - || (n = n.querySelector('input[value="Markdown"], input[value="markdown"]'))) { - if (location.href.indexOf('/script_versions/')) - n.click(); - return addFeatures(n.parentNode.appendChild(document.createElement('br'))); - } + + if (nn = document.querySelectorAll('input[value="markdown"]')) { + for (var n, i=0; (i a.write-tab - // var form = n.querySelector('form'); - if (form.action.indexOf('/edit') < 0) { - n.click(); - } + var form = n.closest('form'); + if (form.action.indexOf('/edit') < 0) { + n.click(); + } + + + + + + if (inPostNewScriptVer) { + n.parentNode.textAreaNode = n.parentNode.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea'); + } else { n.parentNode.textAreaNode = form.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea'); + + } + + // ------------------------------------------------------------------ + + + // console.log(form.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea')); + // console.log(form) + // console.log(form.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea')); +//THIS // n.parentNode.textAreaNode = form.querySelector('textarea.TextBox, textarea.previewable, div.previewable textarea'); // add formatting help tooltips (the '(?)' ) // .querySelector('input[value="html').firstElementChild @@ -125,18 +144,10 @@ function addFeatures(n) { GM_addStyle('#ConversationForm label { display:inline-block; margin-right:2ex }\ #ConversationForm .TextBox { margin-top:0 }'); */ +// ------------------------------------------------------------------ -/* - } else { // if not in forum -*/ - for (var wrapper=n; wrapper = wrapper.parentNode; ) - // if (t = wrapper.querySelector('textarea[id*="additional-info"]')) { - if (t = wrapper.querySelector('textarea[id*="additional-info"], textarea[id*="conversation_messages_attributes_0_content"], textarea[id*="discussion_comments_attributes_0_text"], textarea[id*="comment_text"], textarea[id*="user_profile"]')) { - n.parentNode.textAreaNode = t; - break; - } - GM_addStyle('\ + GM_addStyle('\ .Button {\ display: inline-block;\ cursor: pointer;\ @@ -152,9 +163,9 @@ function addFeatures(n) { text-shadow: 0px 1px 0px #FFF;\ box-shadow: 0px 1px 0px #FFF inset, 0px -1px 2px #BBB inset;\ color: #333;}' - ); + ); + - // } @@ -189,19 +200,22 @@ function addFeatures(n) { - var previewTab = document.querySelector('span > a.preview-tab > span'); - if (previewTab){ - previewTab.onclick = function(){ - document.querySelectorAll('.Button').forEach(element => element.style.display = 'none'); - }; - } - var writeTab = document.querySelector('span > a.write-tab > span'); - if (writeTab){ - writeTab.onclick = function(){ - document.querySelectorAll('.Button').forEach(element => element.style.display = 'inline-block'); - }; - } + var allPreviewTabs = contains('.preview-tab', 'Preview' ); + allPreviewTabs.forEach(element => { element.onclick = function(event) { + let target = event.target; // delegation: where was the click? + if (target.tagName !== 'A' && target.tagName !== 'SPAN') {return} + // console.log(element.closest('.label-note') ) + form.querySelectorAll('.Button').forEach(element2 => element2.style.display = 'none'); + } } ); + + var allWriteTabs = contains('.write-tab', 'Write' ); + allWriteTabs.forEach(element => { element.onclick = function(event) { + let target = event.target; // where was the click? + if (target.tagName !== 'A' && target.tagName !== 'SPAN') {return} + form.querySelectorAll('.Button').forEach(element2 => element2.style.display = 'inline-block'); + } }); + @@ -224,16 +238,10 @@ function btnMake(afterNode, label, title, tag1_or_cb, tag2, noWrap) { function(e){edWrapInTag(tag1_or_cb, tag2, edInit(e.target))} // else ); - /* INITIAL - var nparent = afterNode.parentNode; - a.textAreaNode = nparent.textAreaNode; - inForum ? nparent.insertBefore(a, nparent.firstElementChild) : nparent.appendChild(a); - */ var nparent; inForum ? nparent = afterNode : nparent = afterNode.parentNode; a.textAreaNode = nparent.textAreaNode || nparent.parentNode.querySelector('textArea');; - // a.textAreaNode = nparent.textAreaNode || nparent.closest('textArea'); nparent.appendChild(a); } From 8876afa60a0854aa9a3a9d89d04abef78a3644cd Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 14 Mar 2021 11:55:00 +0200 Subject: [PATCH 086/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 00dc8e4..5a45b1a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -14,8 +14,9 @@ Thanks for reporting a bug! ⛰ 2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first. 3. Be as specific as possible, I need to know where to look. 4. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. -5. Include a screenshot/gif so I can help you better. -6. Include name and version of your browser and script manager (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). +List any errors displayed in Console. +5. Include a screenshot/gif in so I can help you better. +6. Include name and version of your browser and script manager (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). If I can't see the issue nor can replicate it easily, I can't help. --> From e564af684b7490975d68c09b05d44391923a1ce5 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 14 Mar 2021 18:16:29 +0200 Subject: [PATCH 087/245] Update Markdown_toolbar_for_GreasyFork.user.js - Fixed functionality for all locales (no longer searching for specific EN string ), per https://greasyfork.org/en/scripts/422887-markdown-toolbar-for-greasyfork/discussions/78319#comment-190701 --- .../Markdown_toolbar_for_GreasyFork.user.js | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js index 8dd0c90..e8b43ac 100644 --- a/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js +++ b/Markdown_toolbar_for_GreasyFork/Markdown_toolbar_for_GreasyFork.user.js @@ -3,7 +3,7 @@ // @name:ru Markdown-тулбар для GreasyFork // @name:zh-CN GreasyFork markdown // @namespace darkred -// @version 2.0.3 +// @version 2.0.4 // @description Select Markdown format by default, add help links, add toolbar formatting buttons for markdown // @description:ru Включает формат Markdown по умолчанию, добавляет справочные ссылки по форматам, добавляет панель кнопок форматирования markdown // @description:zh-CN 在论坛默认使用 Markdown 格式,添加格式帮助链接及 Markdown 工具栏 @@ -16,14 +16,12 @@ // @include https://greasyfork.org/*scripts/*/feedback* // @include https://greasyfork.org/*script_versions/new* // @include https://greasyfork.org/*/conversations/* -// @include https://greasyfork.org/en/users/edit +// @include https://greasyfork.org/*/users/edit // @grant GM_addStyle // @run-at document-start // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== -/* jshint lastsemic:true, multistr:true, laxbreak:true, -W030, -W041, -W084 */ - // Example URLS to test: // https://greasyfork.org/en/discussions/new @@ -52,7 +50,19 @@ function contains(selector, text) { window.addEventListener('DOMContentLoaded', function(e) { - var refElements = contains('.label-note', '(See allowed code)' ); + // var refElements = contains('.label-note', '(See allowed code)' ); + var refElements = document.querySelectorAll(` + input[name="authenticity_token"] + .label-note, + + label[for="script-version-additional-info-0"] + .label-note, + label[for="changelog"] + .label-note, + + label[for="conversation_messages_attributes_0_content"] + .label-note, + + label[for="user_profile"] + .label-note, + + form > .label-note + `); if (inForum){ @@ -61,9 +71,9 @@ window.addEventListener('DOMContentLoaded', function(e) { } else { // not in Forum - // multiple textareas + // This page has 2 non-code textareas: 'Additional info' and 'Changelog' if (inPostNewScriptVer) { - refElements = contains('.label-note', '(See allowed code)' ); + refElements.forEach(element => { addFeatures(element.appendChild(document.createElement('br'))); }); } else { // every other page @@ -89,10 +99,6 @@ window.addEventListener('DOMContentLoaded', function(e) { -function insertAfter(referenceNode, newNode) { - referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); -} - function addFeatures(n) { From 2bf2871b95f5b9190026bb83ab4f38426018d118 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 15 Mar 2021 19:56:47 +0200 Subject: [PATCH 088/245] Update Rotten_Tomatoes_Decimal_Rating.user.js Update for the recent RT layout changes --- .../Rotten_Tomatoes_Decimal_Rating.user.js | 83 +++++++++++++++---- 1 file changed, 65 insertions(+), 18 deletions(-) diff --git a/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js b/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js index 4692dde..5465a45 100644 --- a/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js +++ b/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Rotten Tomatoes Decimal Rating // @namespace darkred -// @version 5.0.1 +// @version 6.0 // @description Changes base-5 Rating of Rotten Tomatoes to base-10 // @author wOxxOm, darkred // @license MIT @@ -17,24 +17,66 @@ -const buttonSeeScoreDetails = document.querySelector('.mop-ratings-wrap__score-detail-container'); +function modifyaudienceScoreStars(audienceScoreStars){ + if (!audienceScoreStars.textContent.includes('NaN') && audienceScoreStars.textContent.includes('out of 5') ) { + audienceScoreStars.textContent = audienceScoreStars.textContent.replace('out of 5',''); + audienceScoreStars.textContent *= 2; + audienceScoreStars.textContent += ' out of 10'; + } +} + function audienceScorex2(){ - // 'See Score Details' | 'Audience Score' > Avg rating" score --> Multiply x2 - let audienceScoreStars = document.querySelector('span.js-audience-score-info'); - audienceScoreStars.textContent = audienceScoreStars.textContent.replace('/5',''); - audienceScoreStars.textContent *= 2; - audienceScoreStars.textContent += '/10'; + + // 'Score Details' card | 'AUDIENCE' > average rating" score --> Multiply x2 + let audienceScoreStars = document.querySelector('score-details-audience').shadowRoot.querySelector('star-rating').shadowRoot.querySelector('.average-stars'); + modifyaudienceScoreStars(audienceScoreStars); + + + // Select the node that will be observed for mutations + const targetNode = audienceScoreStars; + + // Options for the observer (which mutations to observe) + const config = { // attributes: true , + childList: true , + // subtree: true, + // characterData: true + }; + + + // Callback function to execute when mutations are observed + const callback = mutations => { + + mutations.forEach(function(mutation) { + + observer.disconnect(); + modifyaudienceScoreStars(audienceScoreStars); + + }); + + }; + + // Create an observer instance linked to the callback function + const observer = new MutationObserver(callback); + + // Start observing the target node for configured mutations + observer.observe(targetNode, config); + } -buttonSeeScoreDetails.addEventListener('click', function(){ +let scoreBoard = document.querySelector('score-board'); + + +scoreBoard.onclick = function(event) { + + // let target = event.target; audienceScorex2(); - let buttonVerifiedAudience = document.querySelector('div.score-detail__info-wrap-section:nth-child(2) > nav:nth-child(2) > button:nth-child(1)'); - let buttonAllAudience = document.querySelector('div.score-detail__info-wrap-section:nth-child(2) > nav:nth-child(2) > button:nth-child(2)'); + let buttonVerifiedAudience = document.querySelector('#mainColumn > overlay-base > score-details > score-details-audience > filter-chip:nth-child(2)'); + let buttonAllAudience = document.querySelector('#mainColumn > overlay-base > score-details > score-details-audience > filter-chip:nth-child(3)'); [ buttonVerifiedAudience, buttonAllAudience ].forEach(function(element) { if (element) { element.addEventListener('click', function() { @@ -46,28 +88,33 @@ buttonSeeScoreDetails.addEventListener('click', function(){ // the '?' buttons for the two descriptive texts - let buttonQuestionmarkTomatometer = document.querySelector('.score-detail__help--tomatometer'); - let buttonQuestionmarkAudienceScore = document.querySelector('.score-detail__help--audience-score'); + let buttonQuestionmarkTomatometer = document.querySelector('#mainColumn > overlay-base > score-details > score-details-critics > tool-tip'); + let buttonQuestionmarkAudienceScore = document.querySelector('#mainColumn > overlay-base > score-details > score-details-audience > tool-tip'); buttonQuestionmarkTomatometer.addEventListener('click', function(){ - let descriptiveTextTomatometer = document.querySelector('.score-detail__tooltip-content > p:nth-child(1)'); - // "TOMATOMETER" descriptive text - Append '(=6 stars or higher)' - descriptiveTextTomatometer.innerHTML = descriptiveTextTomatometer.innerHTML.replace('review', 'review (=6 stars or higher)'); + let descriptiveTextTomatometer = document.querySelector('#mainColumn > overlay-base > score-details > score-details-critics > tool-tip').shadowRoot.querySelector('.description'); + if (!descriptiveTextTomatometer.textContent.includes('review (=6 stars or higher)')) { + descriptiveTextTomatometer.innerHTML = descriptiveTextTomatometer.innerHTML.replace('review', 'review (=6 stars or higher)'); + } }); buttonQuestionmarkAudienceScore.addEventListener('click', function(){ - let descriptiveTextAudienceScode = document.querySelector('.score-detail__tooltip-content'); - // "AUDIENCE SCORE" descriptive text - Modify '3.5 stars or higher' to '7 stars or higher' + let descriptiveTextAudienceScode = document.querySelector('#mainColumn > overlay-base > score-details > score-details-audience > tool-tip').shadowRoot.querySelector('.description'); + /* descriptiveTextAudienceScode.innerHTML = descriptiveTextAudienceScode.innerHTML.replace(/([\d.]+)( stars)/g, function (m, s1, s2) { return 2 * s1 + s2; }); + */ + if (!descriptiveTextAudienceScode.textContent.includes('7 stars or higher')) { + descriptiveTextAudienceScode.textContent = descriptiveTextAudienceScode.textContent.replace('3.5 stars or higher', '7 stars or higher'); + } }); -}); +}; From b39b04a8923df3433fb087003cc245841f2decab Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 26 Mar 2021 20:44:25 +0200 Subject: [PATCH 089/245] Update README.md --- .../README.md | 1 - README.md | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/KAT_-_add_APPROVE_ALL_and_APPROVE_SELECTED_buttons_to_Feedback_popup/README.md b/KAT_-_add_APPROVE_ALL_and_APPROVE_SELECTED_buttons_to_Feedback_popup/README.md index 351db6c..2d7111f 100644 --- a/KAT_-_add_APPROVE_ALL_and_APPROVE_SELECTED_buttons_to_Feedback_popup/README.md +++ b/KAT_-_add_APPROVE_ALL_and_APPROVE_SELECTED_buttons_to_Feedback_popup/README.md @@ -5,5 +5,4 @@ _(by default it only has `DISCARD SELECTED`)_ _Note: You may uncomment lines 59, 76 and/or 94 to also close the popup after approving all/selected torrents._ -
Thanks to wOxxOm for his help in [here](http://stackoverflow.com/questions/34072802/insertbefore-enclosed-in-addeventlistener-click-and-called-via-mutationobserv). \ No newline at end of file diff --git a/README.md b/README.md index fc6ef04..ea09f5d 100644 --- a/README.md +++ b/README.md @@ -9,18 +9,16 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area -- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - Fetches logins from bugmenot.com and autofills the login form. - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. -- [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. -- [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. -- [Firefox for desktop - list modified bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table#readme) - Generates lists of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs. +- 'Firefox for desktop' variations: + - [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. + - [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. + - [Firefox for desktop - list modified bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table#readme) - Generates lists of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs. - [GitHub - Confirmations before submitting issues and comments](https://github.com/darkred/Userscripts/tree/master/GitHub_Confirmations_before_submitting_issues_and_comments#readme) - Creates a confirmation popup whenever attempting to create an issue or post comment via Ctrl+Enter in GitHub. -- [Google youtube search link](https://github.com/darkred/Userscripts/tree/master/Google_youtube_search_link) - Adds a Youtube search link next to the Videos link (e.g. Web, Images, Videos, Youtube, News, Maps, Shopping, ...) - [GreasyFork - add a 'send PM to user' button in Greasyfork profile pages](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_add_a_send_PM_to_user_button_in_Greasyfork_profile_pages#readme) - Adds a 'send PM to user' button in Greasyfork profile pages (also compatible with Citrus GFork). - [GreasyFork - filter discussions on scripts by review type and author](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_filter_discussions_on_scripts_by_review_type_and_author#readme) - Filters discussions on scripts by review type and author via filter buttons, a hoverable dropdown menu or an autocomplete searchbox. - [GreasyFork - filter libraries in profiles](https://github.com/darkred/Userscripts/tree/master/GreasyFork_-_filter_libraries_in_profiles#readme) - Filters libraries in GreasyFork profiles. -- [GreasyFork Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. -- [GreasyFork Bullshit Filter (compatible with Citrus GFork)](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter_(compatible_with_Citrus_GFork)#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. +networks as well as scripts that use "foreign" characters in descriptions. - [IMDb user reviews pages - ten star ratings](https://github.com/darkred/Userscripts/tree/master/IMDb_user_reviews_pages_-_ten_star_ratings#readme) In IMDb user reviews pages, display the ratings with 10 stars, instead of just 1. - [Instagram - visible images counter](https://github.com/darkred/Userscripts/tree/master/Instagram_-_visible_images_counter#readme) - Shows (in instagram profile pages) - how many images out of total (as a number and as a percentage) - are currently visible, as you scroll down the page. - [ixIRC - sortable search results](https://github.com/darkred/Userscripts/tree/master/ixIRC_-_sortable_search_results#readme) - Makes the search results sortable. @@ -29,20 +27,28 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [Metal Archives discography pages - Reviews column split and sortable tables](https://github.com/darkred/Userscripts/tree/master/Metal_Archives_discography_pages_-_Reviews_column_split_and_sortable_tables#readme) - Splits the Reviews column into Reviews(count) - and Ratings and makes the tables in all discography tabs sortable. - [mozillaZine Forums - insert titles to bug links](https://github.com/darkred/Userscripts/tree/master/mozillaZine_Forums_-_insert_titles_to_bug_links#readme) - Inserts titles to bug links that are plain URLs, in forums.mozillazine.org. - [OpenSubtitles - direct download links](https://github.com/darkred/Userscripts/tree/master/OpenSubtitles_-_direct_download_links#readme) - Converts the subtitles download links to direct ones, in order to avoid the redirection to download pages that display ads. -- [OpenUserJS Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/OpenUserJS_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. - [ProtonMail - remove forced signature](https://github.com/darkred/Userscripts/tree/master/ProtonMail_-_remove_forced_signature#readme) - Removes the forced ProtonMail signature from the 'New message' textboxes - [RARBG - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/RARBG_-_convert_torrent_timestamps_to_relative_format#readme) - Convert torrent upload timestamps to local timezone or to relative format. - [RARBG - various tweaks](https://github.com/darkred/Userscripts/tree/master/RARBG_-_various_tweaks#readme) - Rearranges various entries, displays in bold the various rating values, properly renames a few entries and use decimal rating for the users' ratings - [RARBG - torrent and magnet links](https://github.com/darkred/Userscripts/tree/master/RARBG_-_torrent_and_magnet_links#readme) - Adds a column in search results for direct torrent or magnet link downloading. - [Reddit Infinite Scrolling](https://github.com/darkred/Userscripts/tree/master/Reddit_Infinite_Scrolling#readme) - Adds infinite scrolling to subreddits and to comments. -- [Rotten Tomatoes Decimal Rating](https://github.com/darkred/Userscripts/tree/master/Rotten_Tomatoes_Decimal_Rating#readme) - Changes base-5 Rating of Rotten Tomatoes to base-10. - [StackExchange sites - convert dates to local timezone](https://github.com/darkred/Userscripts/tree/master/StackExchange_sites_-_convert_dates_to_local_timezone#readme) - Converts dates to your local timezone. - [SunXDCC - normalize values](https://github.com/darkred/Userscripts/tree/master/SunXDCC_-_normalize_values#readme) - Converts the values: in the 'Record' column from B/s to kB/s, and in the 'Size' column from e.g. G to GB. Also adds a space between the value and the unit, in both cases. - [thepiratebay - add a sortable Ratio column](https://github.com/darkred/Userscripts/tree/master/thepiratebay_-_add_a_sortable_Ratio_column#readme) - Adds a sortable "Ratio" column. -- [thepiratebay helper](https://github.com/darkred/Userscripts/tree/master/thepiratebay_helper#readme) - Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether. - [Twitter - add unread notifications count in the tab title](https://github.com/darkred/Userscripts/tree/master/Twitter_-_add_unread_notifications_count_in_the_tab_title#readme) - Adds unread notifications count in the tab title. -- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/tree/master/userstyles.org_css_highlighter#readme) - Formats and highlights CSS code shown after [Show CSS] clicking *(It's modified version of https://greasyfork.org/en/scripts/41-userstyles-org-css-highlighter (by trespassersW) in order to work with the new userstyles.org layout)*. -- [Userstyles Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/Userstyles_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. + +### Userscripts (forks) + +- [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - Fetches logins from bugmenot.com and autofills the login form. *(original by hosts)* +- [Google youtube search link](https://github.com/darkred/Userscripts/tree/master/Google_youtube_search_link) - Adds a Youtube search link next to the Videos link (e.g. Web, Images, Videos, Youtube, News, Maps, Shopping, ...) *(original by wOxxOm)* +- 'GreasyFork Bullshit Filter' variations: *(original by kuehlschrank)* + - [GreasyFork Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. + - [GreasyFork Bullshit Filter (compatible with Citrus GFork)](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter_(compatible_with_Citrus_GFork)#readme) - Hides scripts for popular browser games and social + - [OpenUserJS Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/OpenUserJS_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. + - [Userstyles Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/Userstyles_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. +- [Rotten Tomatoes Decimal Rating](https://github.com/darkred/Userscripts/tree/master/Rotten_Tomatoes_Decimal_Rating#readme) - Changes base-5 Rating of Rotten Tomatoes to base-10. *(initially by wOxxOm)* +- [thepiratebay helper](https://github.com/darkred/Userscripts/tree/master/thepiratebay_helper#readme) - Converts dates to local timezone on thepiratebay and optionally either highlight VIP/Trusted/Moderator/Helper torrents or hide non verified torrents altogether. *(original by emptyparad0x )* +- [userstyles.org css highlighter](https://github.com/darkred/Userscripts/tree/master/userstyles.org_css_highlighter#readme) - Formats and highlights CSS code shown after [Show CSS] clicking *(original by trespassersW)*. ## External profiles From c54ead1affd71768a95902c8053f39bde7b0aeaf Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 26 Mar 2021 23:50:41 +0200 Subject: [PATCH 090/245] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ea09f5d..59502a1 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. -- 'Firefox for desktop' variations: +- 'Firefox for desktop' : - [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. - [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. - [Firefox for desktop - list modified bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table#readme) - Generates lists of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs. @@ -41,8 +41,8 @@ networks as well as scripts that use "foreign" characters in descriptions. - [BugMeNot](https://github.com/darkred/Userscripts/tree/master/BugMeNot#readme) - Fetches logins from bugmenot.com and autofills the login form. *(original by hosts)* - [Google youtube search link](https://github.com/darkred/Userscripts/tree/master/Google_youtube_search_link) - Adds a Youtube search link next to the Videos link (e.g. Web, Images, Videos, Youtube, News, Maps, Shopping, ...) *(original by wOxxOm)* -- 'GreasyFork Bullshit Filter' variations: *(original by kuehlschrank)* - - [GreasyFork Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. +- [GreasyFork Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. *(original by kuehlschrank)* +& my additional versions: - [GreasyFork Bullshit Filter (compatible with Citrus GFork)](https://github.com/darkred/Userscripts/tree/master/GreasyFork_Bullshit_Filter_(compatible_with_Citrus_GFork)#readme) - Hides scripts for popular browser games and social - [OpenUserJS Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/OpenUserJS_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. - [Userstyles Bullshit Filter](https://github.com/darkred/Userscripts/tree/master/Userstyles_Bullshit_Filter#readme) - Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. From c905fdcb7a341a412ac13a16c85be776766bed72 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 27 Mar 2021 15:33:14 +0200 Subject: [PATCH 091/245] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 59502a1..3a73f8c 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Greasemonkey -any version- is not supported (the scripts might work, but are not - [1337X - convert torrent timestamps to relative format](https://github.com/darkred/Userscripts/tree/master/1337X_-_convert_torrent_timestamps_to_relative_format#readme) - Converts torrent upload timestamps to relative format - [Blabbermouth - generate timestamps and add link to the fb comments area](https://github.com/darkred/Userscripts/tree/master/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area#readme) - (blabbermouth cd/dvd reviews and news pages) Generates the missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area - [Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles](https://github.com/darkred/Userscripts/tree/master/Bugzilla_-_reveal_the_Depends%2C_Blocks%2C_See_Also_and_Duplicates_bug_titles#readme) - Reveals the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts. -- 'Firefox for desktop' : - - [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. +- [Firefox for desktop - list fixed bugs in Mercurial](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial#readme) - Generates lists of fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. +& the additional versions: - [Firefox for desktop - list fixed bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_fixed_bugs_in_Mercurial_as_sortable_table#readme) - Generates a list of recently fixed bugs related to Firefox for desktop in Mozilla Mercurial pushlogs. - [Firefox for desktop - list modified bugs in Mercurial as sortable table](https://github.com/darkred/Userscripts/tree/master/Firefox_for_desktop_-_list_modified_bugs_in_Mercurial_as_sortable_table#readme) - Generates lists of bugs related to Firefox for desktop for which patches have landed in Mozilla Mercurial pushlogs. - [GitHub - Confirmations before submitting issues and comments](https://github.com/darkred/Userscripts/tree/master/GitHub_Confirmations_before_submitting_issues_and_comments#readme) - Creates a confirmation popup whenever attempting to create an issue or post comment via Ctrl+Enter in GitHub. From 5620ed8a147f8eafcac1f73b6da62b955c669010 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 28 Mar 2021 19:32:54 +0300 Subject: [PATCH 092/245] Timezone change due to DST --- ..._-_convert_torrent_timestamps_to_relative_format.user.js | 6 +++--- .../README.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 7c67f8b..b913b5d 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2020.11.01 +// @version 2021.3.28 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -22,8 +22,8 @@ // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) -// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) -const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) +const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +// const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md b/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md index 99ca2fe..b5ee053 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/README.md @@ -2,9 +2,9 @@ This script applies to RARBG lists: - it converts torrent timestamps to relative format in local timezone. Also, it recalculates them every 1 min. - The initial timestamps are still available as tooltips (on mouse hover), also converted to local timezone. -Note: there's a timestamp on the footer of each RARBG page e.g. `Mon, 02 Nov 2020 12:23:26 +0100`. -Based on that, the script takes that for the server the UTC/UTC DST offsets are `+01:00 +01:00` (=no DST), -therefore the timezone in the above case `GMT-1`. +Note: there's a timestamp on the footer of each RARBG page e.g. `Sun, 28 Mar 2021 18:26:22 +0200`. +Based on that, the script takes that for the server the UTC/UTC DST offsets are `+02:00 +02:00` (=no DST), +therefore the timezone in the above case `GMT-2`. Examples: From 7f8b9d46641c997e1b897a55dc0667bef2b1c800 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 28 Mar 2021 19:52:40 +0300 Subject: [PATCH 093/245] Timezone change due to DST --- ..._-_convert_torrent_timestamps_to_relative_format.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index 319260e..9ca67b2 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.2.2 +// @version 2021.3.28 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -34,9 +34,9 @@ // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) -// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) -const serverTimezone = 'Etc/GMT-1'; +// const serverTimezone = 'Etc/GMT-1'; const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) From 559421698e9ddb034f622f216cedc95798c20aa1 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 31 Mar 2021 13:45:56 +0300 Subject: [PATCH 094/245] Corrected the exclude rule --- GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js | 4 ++-- .../GreasyFork_Bullshit_Filter_-_for_TS_Citrus_Gfork.user.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js index 435d561..2b460d6 100644 --- a/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js +++ b/GreasyFork_Bullshit_Filter/GreasyFork_Bullshit_Filter.user.js @@ -1,13 +1,13 @@ // ==UserScript== // @name GreasyFork Bullshit Filter // @namespace darkred -// @version 2020.7.31 +// @version 2021.3.31 // @description Hides scripts for popular browser games and social networks as well as scripts that use "foreign" characters in descriptions. Applies to posts in Forum too. // @author kuehlschrank, darkred, valacar, Graphen // @license MIT // @icon https://raw.githubusercontent.com/darkred/Userscripts/master/GreasyFork_Bullshit_Filter/large.png // @include /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts|discussions|users).*$/ -// @exclude /^https:\/\/(greasy|sleazy)fork\.org\/(.*\/)?(scripts\/[0-9]+.*(? Date: Wed, 31 Mar 2021 20:23:51 +0300 Subject: [PATCH 095/245] Update Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js - Changed the timezone from -03:53 to -03:47 --- ..._timestamps_and_add_link_to_the_FB_comments_area.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js index fec9b28..357a4aa 100644 --- a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js +++ b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js @@ -1,8 +1,8 @@ // ==UserScript== // @name Blabbermouth - generate timestamps and add link to the fb comments area // @namespace darkred -// @version 1.2 -// @date 2021.1.24 +// @version 1.2.1 +// @date 2021.3.31 // @description Generates missing timestamps or converts the existing ones in relative format, and adds link to the fb comments area // @author darkred // @license MIT @@ -45,7 +45,7 @@ function convertToLocalTimezone(timestamp) { let initialTimestamp = timestamp; if (moment(initialTimestamp, moment.ISO_8601, true).isValid()) { // let convertedToLocalTimezone = moment(initialTimestamp.replace('Z','') + '-05:00', 'YYYY-MM-DDTHH:mm:ssZ'); // the server's timezone is GMT-5 - let convertedToLocalTimezone = moment(initialTimestamp.replace('Z','') + '-03:53', 'YYYY-MM-DDTHH:mm:ssZ'); // the server's timezone is GMT-4 plus 7 min, in order to sync with the relevant post timestamps in both Twitter and FB blabbbermouth pages + let convertedToLocalTimezone = moment(initialTimestamp.replace('Z','') + '-03:47', 'YYYY-MM-DDTHH:mm:ssZ'); // the server's timezone is GMT-4 plus 13 min, in order to sync with the relevant post timestamps in both Facebook and Twitter(TW is 1 min later than FB) blabbbermouth pages publishedTimeLTZ = convertedToLocalTimezone.fromNow(); let format = 'YYYY-MM-DD HH:mm:ss'; publishedTimeLTZtitle = convertedToLocalTimezone.format(format); From 37bddddc9ba094f1a09c632edc9dba5e4742e4ff Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 6 Apr 2021 20:17:42 +0300 Subject: [PATCH 096/245] .eslintrc.js updated + added 'clean-regex' eslint plugin --- .eslintrc.js | 28 +- node_modules/.package-lock.json | 38 + .../eslint-plugin-clean-regex/CHANGELOG.md | 111 + .../eslint-plugin-clean-regex/LICENSE | 21 + .../eslint-plugin-clean-regex/README.md | 165 ++ .../dist/ast-util.js | 1335 +++++++++++ .../dist/char-util.js | 145 ++ .../eslint-plugin-clean-regex/dist/configs.js | 40 + .../eslint-plugin-clean-regex/dist/fa-util.js | 57 + .../eslint-plugin-clean-regex/dist/format.js | 81 + .../eslint-plugin-clean-regex/dist/index.js | 72 + .../dist/rules-util.js | 234 ++ .../dist/rules/confusing-quantifier.js | 28 + .../rules/consistent-match-all-characters.js | 117 + .../dist/rules/disjoint-alternatives.js | 138 ++ .../dist/rules/identity-escape.js | 282 +++ .../dist/rules/no-constant-capturing-group.js | 52 + .../dist/rules/no-empty-alternative.js | 32 + .../dist/rules/no-empty-backreference.js | 29 + .../dist/rules/no-empty-lookaround.js | 30 + .../dist/rules/no-lazy-ends.js | 56 + .../dist/rules/no-obscure-range.js | 46 + .../dist/rules/no-octal-escape.js | 27 + .../dist/rules/no-optional-assertion.js | 73 + .../no-potentially-empty-backreference.js | 27 + .../rules/no-trivially-nested-lookaround.js | 82 + .../rules/no-trivially-nested-quantifier.js | 117 + .../dist/rules/no-unnecessary-assertions.js | 120 + .../rules/no-unnecessary-character-class.js | 109 + .../dist/rules/no-unnecessary-flag.js | 101 + .../dist/rules/no-unnecessary-group.js | 94 + .../dist/rules/no-unnecessary-lazy.js | 43 + .../dist/rules/no-unnecessary-quantifier.js | 38 + .../dist/rules/no-zero-quantifier.js | 32 + .../rules/optimal-concatenation-quantifier.js | 212 ++ .../rules/optimal-lookaround-quantifier.js | 88 + .../dist/rules/optimized-character-class.js | 96 + .../dist/rules/prefer-character-class.js | 302 +++ .../dist/rules/prefer-predefined-assertion.js | 113 + .../rules/prefer-predefined-character-set.js | 104 + .../rules/prefer-predefined-quantifiers.js | 36 + .../dist/rules/simple-constant-quantifier.js | 30 + .../dist/rules/sort-flags.js | 38 + .../eslint-plugin-clean-regex/dist/util.js | 20 + .../eslint-plugin-clean-regex/package.json | 67 + node_modules/refa/CHANGELOG.md | 213 ++ node_modules/refa/LICENSE | 21 + node_modules/refa/README.md | 296 +++ node_modules/refa/index.d.ts | 1524 ++++++++++++ node_modules/refa/index.js | 1 + node_modules/refa/package.json | 70 + node_modules/regexpp/LICENSE | 21 + node_modules/regexpp/README.md | 178 ++ node_modules/regexpp/index.d.ts | 247 ++ node_modules/regexpp/index.js | 2085 +++++++++++++++++ node_modules/regexpp/index.js.map | 1 + node_modules/regexpp/index.mjs | 2076 ++++++++++++++++ node_modules/regexpp/index.mjs.map | 1 + node_modules/regexpp/package.json | 84 + package-lock.json | 67 + package.json | 5 + 61 files changed, 11991 insertions(+), 5 deletions(-) create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/eslint-plugin-clean-regex/CHANGELOG.md create mode 100644 node_modules/eslint-plugin-clean-regex/LICENSE create mode 100644 node_modules/eslint-plugin-clean-regex/README.md create mode 100644 node_modules/eslint-plugin-clean-regex/dist/ast-util.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/char-util.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/configs.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/fa-util.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/format.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/index.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules-util.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js create mode 100644 node_modules/eslint-plugin-clean-regex/dist/util.js create mode 100644 node_modules/eslint-plugin-clean-regex/package.json create mode 100644 node_modules/refa/CHANGELOG.md create mode 100644 node_modules/refa/LICENSE create mode 100644 node_modules/refa/README.md create mode 100644 node_modules/refa/index.d.ts create mode 100644 node_modules/refa/index.js create mode 100644 node_modules/refa/package.json create mode 100644 node_modules/regexpp/LICENSE create mode 100644 node_modules/regexpp/README.md create mode 100644 node_modules/regexpp/index.d.ts create mode 100644 node_modules/regexpp/index.js create mode 100644 node_modules/regexpp/index.js.map create mode 100644 node_modules/regexpp/index.mjs create mode 100644 node_modules/regexpp/index.mjs.map create mode 100644 node_modules/regexpp/package.json create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.eslintrc.js b/.eslintrc.js index 079d09a..7da537a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,21 +4,33 @@ module.exports = { "es6": true, "greasemonkey": true, "jquery": true, - "node": true, + // "node": true }, - "extends": "eslint:recommended", + // "extends": "eslint:all", + // "extends": "eslint:recommended", + "extends": [ + // "eslint:all", + "eslint:recommended", + "plugin:clean-regex/recommended" + ], + "plugins": [ + "clean-regex" + ], "parserOptions": { - "ecmaVersion": 10, + "ecmaVersion": 12, "sourceType": "script", "ecmaFeatures": { "globalReturn ": true, "impliedStrict": true, + // "jsx": true, }, }, "rules": { "complexity": ["warn", 20], "eqeqeq": "warn", "func-style": "off", + // "indent": ["warn","tab" ], + // "indent": ["warn","tab", { "SwitchCase": 1 } ], "indent": ["warn","tab", { "ignoreComments": true, "SwitchCase": 1 } ], "linebreak-style": ["warn","unix"], "max-len": "off", @@ -31,6 +43,7 @@ module.exports = { "no-magic-numbers": "off", "no-misleading-character-class": "warn", "no-mixed-spaces-and-tabs": "warn", + // "no-var": "off", "no-multiple-empty-lines": "off", "no-tabs": "off", "no-unused-labels": "warn", @@ -39,9 +52,14 @@ module.exports = { "padded-blocks": "off", "quotes": ["warn", "single", { "allowTemplateLiterals": true }] , "require-jsdoc": "off", + "require-unicode-regexp": "off", "semi": ["warn","always"], + // "strict": ["error", "global"], "space-before-function-paren": "off", - "unicode-bom": ["warn", "never"] + // "space-in-parens": ["warn", "always"], + "unicode-bom": ["warn", "never"], + + }, + "reportUnusedDisableDirectives": true - } }; diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..a59e9f5 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,38 @@ +{ + "name": "Userscripts", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/eslint-plugin-clean-regex": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", + "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "dependencies": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + } + } +} diff --git a/node_modules/eslint-plugin-clean-regex/CHANGELOG.md b/node_modules/eslint-plugin-clean-regex/CHANGELOG.md new file mode 100644 index 0000000..780f46a --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/CHANGELOG.md @@ -0,0 +1,111 @@ +# Changelog + + +## 0.5.1 (2021-03-25) + +Lots of minor fixes and improvements. + +### Added + +- Contributing guide and issue templates + +### Changed + +- `no-trivially-nested-quantifier`: Improved the condition that decides whether quantifiers are trivially nested. The rule will now be able to detect more cases. +- Improved many functions that analyse the RegExp AST. +- Updated to latest refa version. + +### Fixed + +- Some typos. + + +## 0.5.0 (2020-10-26) + +I ❤️ Typescript + Prettier!
+The whole project is now implemented in Typescript and uses Prettier for formatting. + +### Added + +- `no-obscure-range`: A new rule to report most likely unintended ranges in character classes due to unescaped `-`s. +- `no-empty-alternative`: A new rule to detect empty alternatives in groups and patterns that are likely a mistake. +- `prefer-predefined-assertion`: This will suggest predefined assertions (`\b\B^$`) if a lookaround behaves like one. +- `disjoint-alternatives`: A new rule to report disjoint alternatives to prevent mistakes and exponential backtracking. +- `no-trivially-nested-quantifier`: A new rule to fix trivially quantifiers. + +### Changed + +- `no-unnecessary-group`: New option to allow non-capturing groups that wrap the whole regex. +- `prefer-character-class`: The rule is now also active inside lookarounds, will reorder alternatives, and more aggressively merge into existing character classes. +- `no-unnecessary-lazy`: It can now analyse single-character quantifiers. +- `prefer-predefined-character-set`: It will now leave `0-9` as is. +- `optimal-concatenation-quantifier`: It can now merge characters and quantifiers. +- New rules table in README. +- Better error messages for a lot of rules. + +### Fixed + +- `no-empty-lookaround` didn't handle backreferences correctly. +- Many, many typos and other mistakes in the docs. + + +## 0.4.0 (2020-05-05) + +Clean regex now uses [refa](https://github.com/RunDevelopment/refa), a library for NFA and DFA operations and converting JS RegExp to NFA. +Right now, this plugin only really uses the `CharSet` API but implementing more complex rules is now possible! + +### Added + +- `no-unnecessary-assertions`: A new rule to report trivially accepting/rejecting assertions. +- `simple-constant-quantifier`: A new rule to simplify constant quantifiers with use the range syntax (e.g. `a{2,2}`). +- Added changelog. + +### Changed + +- `optimized-character-class`: Improved reporting and fixing thanks to a new implementation based on refa's character sets. + + +## 0.3.0 (2020-04-05) + +### Added + +- `no-lazy-ends`: A new rule to report lazy quantifiers at the end of the expression tree. +- `no-unnecessary-lazy`: A new rule to report and fix unnecessary lazy modifiers. +- `no-empty-backreference`: A new rule to report backreferences that will always be replaced with the empty string. +- `no-potentially-empty-backreference`: A new rule to report backreferences that might be replaced with the empty string only sometimes. + +### Fixed + +- `no-empty-backreference` didn't handle lookbehinds correctly ([#17](https://github.com/RunDevelopment/eslint-plugin-clean-regex/issues/17)) + +### Removed + +- `no-early-backreference`: Use `no-empty-backreference` instead. + + +## 0.2.2 (2020-04-01) + +### Fixed + +- Fixed examples in `README.md`. + + +## 0.2.1 (2020-04-01) + +### Fixed + +- Fixed examples in `README.md`. + + +## 0.2.0 (2020-04-01) + +### Changed + +- `no-constant-capturing-group` will now ignore non-empty constant capturing groups by default. +- Added more documentation to almost every rule. All rules are now documented. +- `README.md` now includes a small "Highlights" section. + + +## 0.1.0 (2020-03-22) + +Initial release diff --git a/node_modules/eslint-plugin-clean-regex/LICENSE b/node_modules/eslint-plugin-clean-regex/LICENSE new file mode 100644 index 0000000..25db79d --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Michael Schmidt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/eslint-plugin-clean-regex/README.md b/node_modules/eslint-plugin-clean-regex/README.md new file mode 100644 index 0000000..94e14b8 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/README.md @@ -0,0 +1,165 @@ +# eslint-plugin-clean-regex + +[![Actions Status](https://github.com/RunDevelopment/eslint-plugin-clean-regex/workflows/Node.js%20CI/badge.svg)](https://github.com/RunDevelopment/eslint-plugin-clean-regex/actions) + +An ESLint plugin for writing better regular expressions. + + +## About + +This is an [ESLint](http://eslint.org) plugin to lint JavaScript regular expressions. Its goal is to help both beginners and experts to write better regular expressions by pointing out errors and suggesting improvements. + +The plugin offers rules for possible errors, best practices, and coding style in regular expressions. + +Right now, this project is still young (and many rules are opinionated). Feel free to open an issue if you think rules are too strict/lax/inflexible. Suggestions and feature requests are welcome as well! + + +## Getting started + +You'll need to install [ESLint](http://eslint.org) and `eslint-plugin-clean-regex`: + +``` +$ npm i eslint eslint-plugin-clean-regex --save-dev +``` + +**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-clean-regex` globally. + +Add `clean-regex` to the plugins section of your `.eslintrc` configuration file (you can omit the `eslint-plugin-` prefix) and configure the rules you want: + +```json +{ + "plugins": [ + "clean-regex" + ], + "rules": { + "clean-regex/rule-name": 2 + } +} +``` + +You can also use the _recommended_ config: + +```json +{ + "plugins": [ + "clean-regex" + ], + "extends": [ + "plugin:clean-regex/recommended" + ] +} +``` + +The setting of every rule in the _recommended_ config can be found in the table below. + + +## Highlights + +Some highlights of the working and working-together of rules in the _recommended_ config. + +### Optimize character classes + +Before: + +```js +- /[0-9]/i +- /[^\s]/ +- /[a-fA-F0-9]/i +- /[a-zA-Z0-9_-]/ +- /[a-z\d\w]/ +- /[\S\d]/ +- /[\w\p{ASCII}]/u +``` + +After: + +```js +- /\d/ +- /\S/ +- /[a-f0-9]/i +- /[\w-]/ +- /\w/ +- /\S/ +- /\p{ASCII}/u +``` + +### Simplify patterns + +Before: + +```js +- /(?:\w|\d)+/ +- /(?:a|(b)|c|(?:d)|(?:ee)){0,}/ +- /(? +### Problems + +| | Rule | Description | +| :--- | :--- | :--- | +| | [confusing-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/confusing-quantifier.md) | Warn about confusing quantifiers. | +| | [disjoint-alternatives](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/disjoint-alternatives.md) | Disallow different alternatives that can match the same words. | +| | [no-empty-alternative](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-alternative.md) | Disallow alternatives without elements. | +| | [no-empty-backreference](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-backreference.md) | Disallow backreferences that will always be replaced with the empty string. | +| | [no-empty-lookaround](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-lookaround.md) | Disallow lookarounds that can match the empty string. | +| | [no-lazy-ends](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-lazy-ends.md) | Disallow lazy quantifiers at the end of an expression. | +| | [no-obscure-range](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-obscure-range.md) | Disallow obscure ranges in character classes. | +| | [no-octal-escape](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-octal-escape.md) | Disallow octal escapes outside of character classes. | +| | [no-optional-assertion](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-optional-assertion.md) | Disallow optional assertions. | +| | [no-potentially-empty-backreference](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-potentially-empty-backreference.md) | Disallow backreferences that reference a group that might not be matched. | +| | [no-unnecessary-assertions](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-assertions.md) | Disallow assertions that are known to always accept (or reject). | +| :wrench: | [no-zero-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-zero-quantifier.md) | Disallow quantifiers with a maximum of 0. | +| | [optimal-lookaround-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimal-lookaround-quantifier.md) | Disallows the alternatives of lookarounds that end with a non-constant quantifier. | + +### Suggestions + +| | Rule | Description | +| :--- | :--- | :--- | +| :wrench: | [consistent-match-all-characters](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/consistent-match-all-characters.md) | Use one character class consistently whenever all characters have to be matched. | +| :wrench: | [identity-escape](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/identity-escape.md) | How to handle identity escapes. | +| | [no-constant-capturing-group](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-constant-capturing-group.md) | Disallow capturing groups that can match only one word. | +| :wrench: | [no-trivially-nested-lookaround](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-trivially-nested-lookaround.md) | Disallow lookarounds that only contain another assertion. | +| :wrench: | [no-trivially-nested-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-trivially-nested-quantifier.md) | Disallow nested quantifiers that can be rewritten as one quantifier. | +| :wrench: | [no-unnecessary-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-character-class.md) | Disallow unnecessary character classes. | +| :wrench: | [no-unnecessary-flag](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-flag.md) | Disallow unnecessary regex flags. | +| :wrench: | [no-unnecessary-group](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-group.md) | Disallow unnecessary non-capturing groups. | +| :wrench: | [no-unnecessary-lazy](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-lazy.md) | Disallow unnecessarily lazy quantifiers. | +| :wrench: | [no-unnecessary-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-quantifier.md) | Disallow unnecessary quantifiers. | +| :wrench: | [optimal-concatenation-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimal-concatenation-quantifier.md) | Use optimal quantifiers for concatenated quantified characters. | +| :wrench: | [optimized-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimized-character-class.md) | Disallows unnecessary elements in character classes. | +| :wrench: | [prefer-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-character-class.md) | Prefer character classes wherever possible instead of alternations. | +| :wrench: | [prefer-predefined-assertion](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-assertion.md) | Prefer predefined assertions over equivalent lookarounds. | +| :wrench: | [prefer-predefined-character-set](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-character-set.md) | Prefer predefined character sets instead of their more verbose form. | +| :wrench: | [prefer-predefined-quantifiers](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-quantifiers.md) | Prefer predefined quantifiers (+*?) instead of their more verbose form. | +| :wrench: | [simple-constant-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/simple-constant-quantifier.md) | Prefer simple constant quantifiers over the range form. | +| :wrench: | [sort-flags](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/sort-flags.md) | Requires the regex flags to be sorted. | + diff --git a/node_modules/eslint-plugin-clean-regex/dist/ast-util.js b/node_modules/eslint-plugin-clean-regex/dist/ast-util.js new file mode 100644 index 0000000..547c8b2 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/ast-util.js @@ -0,0 +1,1335 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getParentPrefixAndSuffix = exports.underAStar = exports.effectiveQuantifierMax = exports.getSingleConsumedChar = exports.getFirstCharAfter = exports.getFirstConsumedCharAfter = exports.followPaths = exports.getFirstCharConsumedBy = exports.getLengthRange = exports.hasAssertionWithDirection = exports.assertionKindToMatchingDirection = exports.invertMatchingDirection = exports.matchingDirection = exports.getQuantifierRaw = exports.backreferenceAlwaysAfterGroup = exports.isEmptyBackreference = exports.elementsToCharacterClass = exports.negateCharacterSetRaw = exports.quantAdd = exports.quantToString = exports.nodeAt = exports.isEscapeSequence = exports.isHexadecimalEscapeSequence = exports.isControlEscapeSequence = exports.isOctalEscapeSequence = exports.minimalHexEscape = exports.getPattern = exports.getCapturingGroupNumber = exports.areEqual = exports.hasCapturingGroup = exports.hasSomeDescendant = exports.hasSomeAncestor = exports.isPotentiallyEmpty = exports.isEmpty = exports.isPotentiallyZeroLength = exports.isZeroLength = exports.getConstant = void 0; +const refa_1 = require("refa"); +const regexpp_1 = require("regexpp"); +const char_util_1 = require("./char-util"); +const util_1 = require("./util"); +function getConstant(node, flags) { + switch (node.type) { + case "Alternative": { + let word = ""; + for (const element of node.elements) { + const elementResult = getConstant(element, flags); + if (elementResult === false) { + return false; + } + else { + word += elementResult.word; + } + } + return { word }; + } + case "Assertion": + case "Flags": { + return { word: "" }; + } + case "Backreference": { + if (isEmptyBackreference(node)) { + return { word: "" }; + } + else { + return getConstant(node.resolved, flags); + } + } + case "CapturingGroup": + case "Group": + case "Pattern": { + if (node.alternatives.length == 0) { + return { word: "" }; + } + else if (node.alternatives.length == 1) { + return getConstant(node.alternatives[0], flags); + } + else { + let word = false; + for (const alt of node.alternatives) { + const altResult = getConstant(alt, flags); + if (altResult === false) { + return false; + } + else if (word === false) { + word = altResult.word; + } + else if (word !== altResult.word) { + return false; + } + } + return word === false ? false : { word }; + } + } + case "Character": { + const string = String.fromCodePoint(node.value); + if (flags.ignoreCase && string.toLowerCase() !== string.toUpperCase()) { + return false; + } + return { word: string }; + } + case "CharacterClass": { + if (node.negate) { + return false; + } + let word = false; + for (const element of node.elements) { + const elementResult = getConstant(element, flags); + if (elementResult === false) { + return false; + } + else if (word === false) { + word = elementResult.word; + } + else if (word !== elementResult.word) { + return false; + } + } + return word === false ? false : { word }; + } + case "CharacterClassRange": { + return node.min.value == node.max.value && getConstant(node.min, flags); + } + case "CharacterSet": { + return false; + } + case "Quantifier": { + if (node.max === 0) { + return { word: "" }; + } + const elementResult = getConstant(node.element, flags); + if (elementResult !== false) { + if (elementResult.word === "") { + return elementResult; + } + else if (node.min === node.max) { + let word = ""; + for (let i = node.min; i > 0; i--) { + word += elementResult.word; + } + return { word }; + } + } + return false; + } + case "RegExpLiteral": { + return getConstant(node.pattern, flags); + } + default: + return false; + } +} +exports.getConstant = getConstant; +function isZeroLength(element) { + if (Array.isArray(element)) { + return element.every(a => isZeroLength(a)); + } + switch (element.type) { + case "Alternative": + return element.elements.every(e => isZeroLength(e)); + case "Assertion": + return true; + case "Character": + case "CharacterClass": + case "CharacterSet": + return false; + case "Quantifier": + return element.max === 0 || isZeroLength(element.element); + case "Backreference": + return isEmptyBackreference(element); + case "CapturingGroup": + case "Group": + return isZeroLength(element.alternatives); + default: + throw util_1.assertNever(element); + } +} +exports.isZeroLength = isZeroLength; +function isPotentiallyZeroLength(element) { + if (Array.isArray(element)) { + return element.some(a => isPotentiallyZeroLength(a)); + } + switch (element.type) { + case "Alternative": + return element.elements.every(e => isPotentiallyZeroLength(e)); + case "Assertion": + return true; + case "Backreference": + if (isEmptyBackreference(element)) { + return true; + } + return isPotentiallyZeroLength(element.resolved); + case "Character": + case "CharacterClass": + case "CharacterSet": + return false; + case "CapturingGroup": + case "Group": + return isPotentiallyZeroLength(element.alternatives); + case "Quantifier": + return element.min === 0 || isPotentiallyZeroLength(element.element); + default: + throw util_1.assertNever(element); + } +} +exports.isPotentiallyZeroLength = isPotentiallyZeroLength; +function isEmpty(element) { + if (Array.isArray(element)) { + return element.every(isEmpty); + } + switch (element.type) { + case "Alternative": + return element.elements.every(isEmpty); + case "Assertion": + if (element.kind === "lookahead" || element.kind === "lookbehind") { + if (!element.negate && isPotentiallyEmpty(element.alternatives)) { + return true; + } + } + return false; + case "Backreference": + if (isEmptyBackreference(element)) { + return true; + } + return isEmpty(element.resolved); + case "Character": + case "CharacterClass": + case "CharacterSet": + return false; + case "CapturingGroup": + case "Group": + return isEmpty(element.alternatives); + case "Quantifier": + return element.max === 0 || isEmpty(element.element); + default: + throw util_1.assertNever(element); + } +} +exports.isEmpty = isEmpty; +function isPotentiallyEmpty(element, options = {}) { + if (Array.isArray(element)) { + return element.some(a => isPotentiallyEmpty(a, options)); + } + switch (element.type) { + case "Alternative": + return element.elements.every(e => isPotentiallyEmpty(e, options)); + case "Assertion": + if (element.kind === "lookahead" || element.kind === "lookbehind") { + if (!element.negate && isPotentiallyEmpty(element.alternatives, options)) { + return true; + } + } + return false; + case "Backreference": + if (isEmptyBackreference(element)) { + return true; + } + if (options.backreferencesAreNonEmpty) { + return false; + } + else { + return !backreferenceAlwaysAfterGroup(element) || isPotentiallyEmpty(element.resolved, options); + } + case "Character": + case "CharacterClass": + case "CharacterSet": + return false; + case "CapturingGroup": + case "Group": + return isPotentiallyEmpty(element.alternatives, options); + case "Quantifier": + return element.min === 0 || isPotentiallyEmpty(element.element, options); + default: + throw util_1.assertNever(element); + } +} +exports.isPotentiallyEmpty = isPotentiallyEmpty; +function hasSomeAncestor(node, conditionFn) { + let parent = node.parent; + while (parent) { + if (conditionFn(parent)) { + return true; + } + parent = parent.parent; + } + return false; +} +exports.hasSomeAncestor = hasSomeAncestor; +function hasSomeDescendant(node, conditionFn, descentConditionFn) { + if (conditionFn(node)) { + return true; + } + if (descentConditionFn && !descentConditionFn(node)) { + return false; + } + switch (node.type) { + case "Alternative": + return node.elements.some(e => hasSomeDescendant(e, conditionFn, descentConditionFn)); + case "Assertion": + if (node.kind === "lookahead" || node.kind === "lookbehind") { + return node.alternatives.some(a => hasSomeDescendant(a, conditionFn, descentConditionFn)); + } + return false; + case "CapturingGroup": + case "Group": + case "Pattern": + return node.alternatives.some(a => hasSomeDescendant(a, conditionFn, descentConditionFn)); + case "CharacterClass": + return node.elements.some(e => hasSomeDescendant(e, conditionFn, descentConditionFn)); + case "CharacterClassRange": + return (hasSomeDescendant(node.min, conditionFn, descentConditionFn) || + hasSomeDescendant(node.max, conditionFn, descentConditionFn)); + case "Quantifier": + return hasSomeDescendant(node.element, conditionFn, descentConditionFn); + case "RegExpLiteral": + return (hasSomeDescendant(node.pattern, conditionFn, descentConditionFn) || + hasSomeDescendant(node.flags, conditionFn, descentConditionFn)); + } + return false; +} +exports.hasSomeDescendant = hasSomeDescendant; +function hasCapturingGroup(node) { + return hasSomeDescendant(node, d => d.type === "CapturingGroup"); +} +exports.hasCapturingGroup = hasCapturingGroup; +function areEqual(x, y) { + if (x == y) { + return true; + } + if (!x || !y || x.type != y.type) { + return false; + } + function manyAreEqual(a, b) { + if (a.length !== b.length) { + return false; + } + for (let i = 0; i < a.length; i++) { + if (!areEqual(a[i], b[i])) { + return false; + } + } + return true; + } + function alternativesAreEqual(a, b) { + return manyAreEqual(a.alternatives, b.alternatives); + } + switch (x.type) { + case "Alternative": { + const other = y; + return manyAreEqual(x.elements, other.elements); + } + case "Assertion": { + const other = y; + if (x.kind === other.kind) { + if (x.kind === "lookahead" || x.kind === "lookbehind") { + const otherLookaround = y; + return x.negate === otherLookaround.negate && alternativesAreEqual(x, otherLookaround); + } + else { + return x.raw === other.raw; + } + } + return false; + } + case "Backreference": { + const other = y; + return areEqual(x.resolved, other.resolved); + } + case "CapturingGroup": { + const other = y; + const p1 = getPattern(x); + const p2 = getPattern(other); + if (p1 && p2) { + const n1 = getCapturingGroupNumber(p1, x); + const n2 = getCapturingGroupNumber(p2, other); + if (n1 && n2) { + return n1 === n2 && alternativesAreEqual(x, other); + } + } + return false; + } + case "Character": { + const other = y; + return x.value === other.value; + } + case "CharacterClass": { + const other = y; + return x.negate === other.negate && manyAreEqual(x.elements, other.elements); + } + case "CharacterClassRange": { + const other = y; + return areEqual(x.min, other.min) && areEqual(x.max, other.max); + } + case "CharacterSet": { + const other = y; + if (x.kind === "property" && other.kind === "property") { + return x.negate === other.negate && x.key === other.key; + } + else { + return x.raw === other.raw; + } + } + case "Flags": { + const other = y; + return (x.dotAll === other.dotAll && + x.global === other.global && + x.ignoreCase === other.ignoreCase && + x.multiline === other.multiline && + x.sticky === other.sticky && + x.unicode === other.unicode); + } + case "Group": + case "Pattern": { + const other = y; + return alternativesAreEqual(x, other); + } + case "Quantifier": { + const other = y; + return (x.min === other.min && + x.max === other.max && + x.greedy === other.greedy && + areEqual(x.element, other.element)); + } + case "RegExpLiteral": { + const other = y; + return areEqual(x.flags, other.flags) && areEqual(x.pattern, other.pattern); + } + default: + throw util_1.assertNever(x); + } +} +exports.areEqual = areEqual; +function getCapturingGroupNumber(pattern, group) { + let found = 0; + try { + regexpp_1.visitRegExpAST(pattern, { + onCapturingGroupEnter(node) { + found++; + if (node === group) { + throw new Error(); + } + }, + }); + return null; + } + catch (error) { + return found; + } +} +exports.getCapturingGroupNumber = getCapturingGroupNumber; +function getPattern(node) { + switch (node.type) { + case "Pattern": + return node; + case "RegExpLiteral": + return node.pattern; + case "Flags": + return node.parent ? node.parent.pattern : null; + default: + return getPattern(node.parent); + } +} +exports.getPattern = getPattern; +function minimalHexEscape(codePoint) { + if (codePoint <= 0xff) { + return "\\x" + codePoint.toString(16).padStart(2, "0"); + } + else if (codePoint <= 0xffff) { + return "\\u" + codePoint.toString(16).padStart(4, "0"); + } + else { + return "\\u{" + codePoint.toString(16) + "}"; + } +} +exports.minimalHexEscape = minimalHexEscape; +function isOctalEscapeSequence(node) { + return /^\\[0-7]+$/.test(node.raw); +} +exports.isOctalEscapeSequence = isOctalEscapeSequence; +function isControlEscapeSequence(node) { + return /^\\c[A-Za-z]$/.test(node.raw); +} +exports.isControlEscapeSequence = isControlEscapeSequence; +function isHexadecimalEscapeSequence(node) { + return /^\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\})$/.test(node.raw); +} +exports.isHexadecimalEscapeSequence = isHexadecimalEscapeSequence; +function isEscapeSequence(node) { + return (isOctalEscapeSequence(node) || + isHexadecimalEscapeSequence(node) || + isControlEscapeSequence(node) || + /^\\[fnrtv]$/.test(node.raw)); +} +exports.isEscapeSequence = isEscapeSequence; +function nodeAt(root, index) { + if (index < root.start || root.end >= index) { + return undefined; + } + if (root.start == index) { + return root; + } + switch (root.type) { + case "Assertion": + case "CapturingGroup": + case "Group": + case "Pattern": + if (root.type === "Assertion" && !(root.kind === "lookahead" || root.kind === "lookbehind")) { + break; + } + for (const alt of root.alternatives) { + if (alt.end >= index) { + break; + } + const result = nodeAt(alt, index); + if (result) { + return result; + } + } + break; + case "Quantifier": { + const res = nodeAt(root.element, index); + if (res) { + return res; + } + break; + } + case "RegExpLiteral": { + let res = nodeAt(root.flags, index); + if (res) { + return res; + } + res = nodeAt(root.pattern, index); + if (res) { + return res; + } + break; + } + default: + break; + } + return root; +} +exports.nodeAt = nodeAt; +function quantToString(quant) { + if (quant.max < quant.min || + quant.min < 0 || + !Number.isInteger(quant.min) || + !(Number.isInteger(quant.max) || quant.max === Infinity)) { + throw new Error(`Invalid quantifier { min: ${quant.min}, max: ${quant.max} }`); + } + let value; + if (quant.min === 0 && quant.max === 1) { + value = "?"; + } + else if (quant.min === 0 && quant.max === Infinity) { + value = "*"; + } + else if (quant.min === 1 && quant.max === Infinity) { + value = "+"; + } + else if (quant.min === quant.max) { + value = `{${quant.min}}`; + } + else if (quant.max === Infinity) { + value = `{${quant.min},}`; + } + else { + value = `{${quant.min},${quant.max}}`; + } + if (!quant.greedy) { + return value + "?"; + } + else { + return value; + } +} +exports.quantToString = quantToString; +function quantAdd(quant, other) { + var _a; + if (typeof other === "number") { + return { + min: quant.min + other, + max: quant.max + other, + greedy: quant.greedy, + }; + } + else { + if (quant.greedy === other.greedy || quant.greedy === undefined || other.greedy === undefined) { + return { + min: quant.min + other.min, + max: quant.max + other.max, + greedy: (_a = quant.greedy) !== null && _a !== void 0 ? _a : other.greedy, + }; + } + else { + throw Error("The `greedy` property of the given quants is not compatible."); + } + } +} +exports.quantAdd = quantAdd; +function negateCharacterSetRaw(charSet) { + let type = charSet.raw[1]; + if (type.toLowerCase() === type) { + type = type.toUpperCase(); + } + else { + type = type.toLowerCase(); + } + return `\\${type}${charSet.raw.substr(2)}`; +} +exports.negateCharacterSetRaw = negateCharacterSetRaw; +function elementsToCharacterClass(elements, negate = false) { + let result = ""; + elements.forEach((e, i) => { + switch (e.type) { + case "Character": + if (e.raw === "-") { + if (i === 0 || i === elements.length - 1) { + result += "-"; + } + else { + result += "\\-"; + } + } + else if (e.raw === "^") { + if (i === 0) { + result += "\\^"; + } + else { + result += "^"; + } + } + else if (e.raw === "]") { + result += "\\]"; + } + else { + result += e.raw; + } + break; + case "CharacterClassRange": + if (e.min.raw === "^" && i === 0) { + result += "\\^-" + e.max.raw; + } + else { + result += e.min.raw + "-" + e.max.raw; + } + break; + case "CharacterSet": + result += e.raw; + break; + default: + throw util_1.assertNever(e); + } + }); + return "[" + (negate ? "^" : "") + result + "]"; +} +exports.elementsToCharacterClass = elementsToCharacterClass; +function isEmptyBackreference(backreference) { + const group = backreference.resolved; + if (hasSomeAncestor(backreference, a => a === group)) { + return true; + } + if (isZeroLength(group)) { + return true; + } + function findBackreference(node) { + const parent = node.parent; + switch (parent.type) { + case "Alternative": { + const index = parent.elements.indexOf(node); + let next; + if (matchingDirection(node) === "ltr") { + next = parent.elements.slice(index + 1); + } + else { + next = parent.elements.slice(0, index); + } + if (next.some(e => hasSomeDescendant(e, d => d === backreference))) { + return true; + } + const parentParent = parent.parent; + if (parentParent.type === "Pattern") { + return false; + } + else { + return findBackreference(parentParent); + } + } + case "Quantifier": + return findBackreference(parent); + default: + throw new Error("What happened?"); + } + } + return !findBackreference(group); +} +exports.isEmptyBackreference = isEmptyBackreference; +function backreferenceAlwaysAfterGroup(backreference) { + const group = backreference.resolved; + if (hasSomeAncestor(backreference, a => a === group)) { + return false; + } + function findBackreference(node) { + const parent = node.parent; + switch (parent.type) { + case "Alternative": { + const index = parent.elements.indexOf(node); + let next; + if (matchingDirection(node) === "ltr") { + next = parent.elements.slice(index + 1); + } + else { + next = parent.elements.slice(0, index); + } + if (next.some(e => hasSomeDescendant(e, d => d === backreference))) { + return true; + } + const parentParent = parent.parent; + if (parentParent.type === "Pattern") { + return false; + } + else { + if (parentParent.alternatives.length > 1) { + return false; + } + return findBackreference(parentParent); + } + } + case "Quantifier": + if (parent.min === 0) { + return false; + } + return findBackreference(parent); + default: + throw new Error("What happened?"); + } + } + return findBackreference(group); +} +exports.backreferenceAlwaysAfterGroup = backreferenceAlwaysAfterGroup; +function getQuantifierRaw(quantifier) { + return quantifier.raw.substr(quantifier.element.end - quantifier.start); +} +exports.getQuantifierRaw = getQuantifierRaw; +function matchingDirection(node) { + let closestLookaround; + hasSomeAncestor(node, a => { + if (a.type === "Assertion") { + closestLookaround = a; + return true; + } + return false; + }); + if (closestLookaround !== undefined && closestLookaround.kind === "lookbehind") { + return "rtl"; + } + return "ltr"; +} +exports.matchingDirection = matchingDirection; +function invertMatchingDirection(direction) { + return direction === "ltr" || direction === "lookahead" ? "rtl" : "ltr"; +} +exports.invertMatchingDirection = invertMatchingDirection; +function assertionKindToMatchingDirection(kind) { + return kind === "end" || kind === "lookahead" ? "ltr" : "rtl"; +} +exports.assertionKindToMatchingDirection = assertionKindToMatchingDirection; +function hasAssertionWithDirection(element, direction) { + return hasSomeDescendant(element, d => { + if (d.type === "Assertion") { + if (d.kind === "word") { + return true; + } + if (isPotentiallyEmpty(element)) { + return false; + } + if (direction === "lookahead" || direction === "ltr") { + return d.kind === "lookahead" || d.kind === "end"; + } + else { + return d.kind === "lookbehind" || d.kind === "start"; + } + } + return false; + }); +} +exports.hasAssertionWithDirection = hasAssertionWithDirection; +function getLengthRange(element) { + if (Array.isArray(element)) { + let min = Infinity; + let max = 0; + for (const e of element) { + const eRange = getLengthRange(e); + if (eRange) { + min = Math.min(min, eRange.min); + max = Math.max(max, eRange.max); + } + } + if (min > max) { + return undefined; + } + else { + return { min, max }; + } + } + switch (element.type) { + case "Assertion": + return { min: 0, max: 0 }; + case "Character": + case "CharacterClass": + case "CharacterSet": + return { min: 1, max: 1 }; + case "Quantifier": { + if (element.max === 0) { + return { min: 0, max: 0 }; + } + const elementRange = getLengthRange(element.element); + if (!elementRange) { + return element.min === 0 ? { min: 0, max: 0 } : undefined; + } + if (elementRange.max === 0) { + return { min: 0, max: 0 }; + } + elementRange.min *= element.min; + elementRange.max *= element.max; + return elementRange; + } + case "Alternative": { + let min = 0; + let max = 0; + for (const e of element.elements) { + const eRange = getLengthRange(e); + if (!eRange) { + return undefined; + } + min += eRange.min; + max += eRange.max; + } + return { min, max }; + } + case "CapturingGroup": + case "Group": + return getLengthRange(element.alternatives); + case "Backreference": { + if (isEmptyBackreference(element)) { + return { min: 0, max: 0 }; + } + const resolvedRange = getLengthRange(element.resolved); + if (!resolvedRange) { + return backreferenceAlwaysAfterGroup(element) ? undefined : { min: 0, max: 0 }; + } + if (resolvedRange.min > 0 && !backreferenceAlwaysAfterGroup(element)) { + resolvedRange.min = 0; + } + return resolvedRange; + } + default: + throw util_1.assertNever(element); + } +} +exports.getLengthRange = getLengthRange; +function getFirstCharConsumedBy(element, direction, flags) { + if (Array.isArray(element)) { + return firstConsumedCharUnion(element.map(e => getFirstCharConsumedBy(e, direction, flags)), flags); + } + switch (element.type) { + case "Assertion": + switch (element.kind) { + case "word": + return misdirectedAssertion(); + case "end": + case "start": + if (assertionKindToMatchingDirection(element.kind) === direction) { + if (flags.multiline) { + return lineAssertion(); + } + else { + return edgeAssertion(); + } + } + else { + return misdirectedAssertion(); + } + case "lookahead": + case "lookbehind": + if (assertionKindToMatchingDirection(element.kind) === direction) { + if (element.negate) { + if (hasSomeDescendant(element, d => d !== element && d.type === "Assertion")) { + return misdirectedAssertion(); + } + const firstChar = getFirstCharConsumedBy(element.alternatives, direction, flags); + const range = getLengthRange(element.alternatives); + if (firstChar.empty || !range) { + return { char: char_util_1.emptyCharSet(flags), empty: false, exact: true }; + } + if (!firstChar.exact || range.max !== 1) { + return misdirectedAssertion(); + } + else { + return emptyWord({ char: firstChar.char.negate(), edge: true, exact: true }); + } + } + else { + const firstChar = getFirstCharConsumedBy(element.alternatives, direction, flags); + return emptyWord(firstConsumedToLook(firstChar)); + } + } + else { + return misdirectedAssertion(); + } + default: + throw util_1.assertNever(element); + } + case "Character": + case "CharacterSet": + case "CharacterClass": + return { char: char_util_1.toCharSet(element, flags), empty: false, exact: true }; + case "Quantifier": { + if (element.max === 0) { + return emptyWord(); + } + const firstChar = getFirstCharConsumedBy(element.element, direction, flags); + if (element.min === 0) { + return firstConsumedCharUnion([emptyWord(), firstChar], flags); + } + else { + return firstChar; + } + } + case "Alternative": { + let elements = element.elements; + if (direction === "rtl") { + elements = [...elements]; + elements.reverse(); + } + return firstConsumedCharConcat((function* () { + for (const e of elements) { + yield getFirstCharConsumedBy(e, direction, flags); + } + })(), flags); + } + case "CapturingGroup": + case "Group": + return getFirstCharConsumedBy(element.alternatives, direction, flags); + case "Backreference": { + if (isEmptyBackreference(element)) { + return emptyWord(); + } + const resolvedChar = getFirstCharConsumedBy(element.resolved, direction, flags); + resolvedChar.exact = resolvedChar.exact && resolvedChar.char.size <= 1; + if (backreferenceAlwaysAfterGroup(element)) { + return resolvedChar; + } + else { + return firstConsumedCharUnion([resolvedChar, emptyWord()], flags); + } + } + default: + throw util_1.assertNever(element); + } + function misdirectedAssertion() { + return emptyWord({ + char: char_util_1.allCharSet(flags), + edge: true, + exact: false, + }); + } + function edgeAssertion() { + return emptyWord(firstLookCharEdgeAccepting(flags)); + } + function lineAssertion() { + return emptyWord({ + char: char_util_1.lineTerminatorCharSet(flags), + edge: true, + exact: true, + }); + } + function emptyWord(look) { + return firstConsumedCharEmptyWord(flags, look); + } +} +exports.getFirstCharConsumedBy = getFirstCharConsumedBy; +function firstLookCharTriviallyAccepting(flags) { + return { char: char_util_1.allCharSet(flags), edge: true, exact: true }; +} +function firstLookCharEdgeAccepting(flags) { + return { char: char_util_1.emptyCharSet(flags), edge: true, exact: true }; +} +function firstConsumedCharEmptyWord(flags, look) { + return { + char: char_util_1.emptyCharSet(flags), + empty: true, + exact: true, + look: look !== null && look !== void 0 ? look : firstLookCharTriviallyAccepting(flags), + }; +} +class CharUnion { + constructor(char) { + this.char = char; + this.exact = true; + } + add(char, exact) { + if (this.exact && !exact && !this.char.isSupersetOf(char)) { + this.exact = false; + } + else if (!this.exact && exact && char.isSupersetOf(this.char)) { + this.exact = true; + } + this.char = this.char.union(char); + } + static emptyFromFlags(flags) { + return new CharUnion(char_util_1.emptyCharSet(flags)); + } + static emptyFromMaximum(maximum) { + return new CharUnion(refa_1.CharSet.empty(maximum)); + } +} +function firstConsumedCharUnion(iter, flags) { + const union = CharUnion.emptyFromFlags(flags); + const looks = []; + for (const itemChar of iter) { + union.add(itemChar.char, itemChar.exact); + if (itemChar.empty) { + looks.push(itemChar.look); + } + } + if (looks.length > 0) { + const lookUnion = CharUnion.emptyFromFlags(flags); + let edge = false; + for (const look of looks) { + lookUnion.add(look.char, look.exact); + edge = edge || look.edge; + } + return { + char: union.char, + exact: union.exact, + empty: true, + look: { char: lookUnion.char, exact: lookUnion.exact, edge }, + }; + } + else { + return { char: union.char, exact: union.exact, empty: false }; + } +} +function firstConsumedCharConcat(iter, flags) { + const union = CharUnion.emptyFromFlags(flags); + let look = firstLookCharTriviallyAccepting(flags); + for (const item of iter) { + union.add(item.char.intersect(look.char), look.exact && item.exact); + if (item.empty) { + const charIntersection = look.char.intersect(item.look.char); + look = { + char: charIntersection, + exact: (look.exact && item.look.exact) || charIntersection.isEmpty, + edge: look.edge && item.look.edge, + }; + } + else { + return { char: union.char, exact: union.exact, empty: false }; + } + } + return { char: union.char, exact: union.exact, empty: true, look }; +} +function firstConsumedToLook(first) { + if (first.empty) { + const union = CharUnion.emptyFromMaximum(first.char.maximum); + union.add(first.char, first.exact); + union.add(first.look.char, first.look.exact); + return { + char: union.char, + exact: union.exact, + edge: first.look.edge, + }; + } + else { + return { + char: first.char, + exact: first.exact, + edge: false, + }; + } +} +function followPaths(start, startMode, initialState, operations, direction) { + function opEnter(element, state, direction) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + state = (_b = (_a = operations.enter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : state; + const continueInto = (_d = (_c = operations.continueInto) === null || _c === void 0 ? void 0 : _c.call(operations, element, state, direction)) !== null && _d !== void 0 ? _d : true; + if (continueInto) { + switch (element.type) { + case "Assertion": { + if (element.kind === "lookahead" || element.kind === "lookbehind") { + const assertionDirection = assertionKindToMatchingDirection(element.kind); + const assertion = operations.join(element.alternatives.map(a => enterAlternative(a, operations.fork(state, direction), assertionDirection)), assertionDirection); + state = (_f = (_e = operations.endPath) === null || _e === void 0 ? void 0 : _e.call(operations, state, assertionDirection, "assertion")) !== null && _f !== void 0 ? _f : state; + state = (_h = (_g = operations.assert) === null || _g === void 0 ? void 0 : _g.call(operations, state, direction, assertion, assertionDirection)) !== null && _h !== void 0 ? _h : state; + } + break; + } + case "Group": + case "CapturingGroup": { + state = operations.join(element.alternatives.map(a => enterAlternative(a, operations.fork(state, direction), direction)), direction); + break; + } + case "Quantifier": { + if (element.max === 0) { + } + else if (element.min === 0) { + state = operations.join([state, opEnter(element.element, operations.fork(state, direction), direction)], direction); + } + else { + state = opEnter(element.element, state, direction); + } + break; + } + } + } + state = (_k = (_j = operations.leave) === null || _j === void 0 ? void 0 : _j.call(operations, element, state, direction)) !== null && _k !== void 0 ? _k : state; + return state; + } + function enterAlternative(alternative, state, direction) { + var _a, _b; + let i = direction === "ltr" ? 0 : alternative.elements.length - 1; + const increment = direction === "ltr" ? +1 : -1; + let element; + for (; (element = alternative.elements[i]); i += increment) { + state = opEnter(element, state, direction); + const continueAfter = (_b = (_a = operations.continueAfter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : true; + if (!continueAfter) { + break; + } + } + return state; + } + function opNext(element, state, direction) { + var _a, _b; + function getNextElement(element) { + var _a, _b; + const parent = element.parent; + if (parent.type === "CharacterClass" || parent.type === "CharacterClassRange") { + throw new Error("The given element cannot be part of a character class."); + } + const continuePath = (_b = (_a = operations.continueAfter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : true; + if (!continuePath) { + return false; + } + if (parent.type === "Quantifier") { + if (parent.max <= 1) { + return getNextElement(parent); + } + else { + return [parent, getNextElement(parent)]; + } + } + else { + const nextIndex = parent.elements.indexOf(element) + (direction === "ltr" ? +1 : -1); + const nextElement = parent.elements[nextIndex]; + if (nextElement) { + return nextElement; + } + else { + const parentParent = parent.parent; + if (parentParent.type === "Pattern") { + return "pattern"; + } + else if (parentParent.type === "Assertion") { + return "assertion"; + } + else if (parentParent.type === "CapturingGroup" || parentParent.type === "Group") { + return getNextElement(parentParent); + } + throw util_1.assertNever(parentParent); + } + } + } + while (true) { + let after = getNextElement(element); + while (Array.isArray(after)) { + const [quant, other] = after; + state = operations.join([state, opEnter(quant, operations.fork(state, direction), direction)], direction); + after = other; + } + if (after === false) { + return state; + } + else if (after === "assertion" || after === "pattern") { + state = (_b = (_a = operations.endPath) === null || _a === void 0 ? void 0 : _a.call(operations, state, direction, after)) !== null && _b !== void 0 ? _b : state; + return state; + } + else { + state = opEnter(after, state, direction); + element = after; + } + } + } + if (!direction) { + direction = matchingDirection(start); + } + if (startMode === "enter") { + initialState = opEnter(start, initialState, direction); + } + return opNext(start, initialState, direction); +} +exports.followPaths = followPaths; +function getFirstConsumedCharAfter(afterThis, direction, flags) { + const result = followPaths(afterThis, "next", { char: firstConsumedCharEmptyWord(flags), elements: [] }, { + fork(state) { + return state; + }, + join(states) { + const elements = new Set(); + states.forEach(s => s.elements.forEach(e => elements.add(e))); + return { + char: firstConsumedCharUnion(states.map(s => s.char), flags), + elements: [...elements], + }; + }, + enter(element, state, direction) { + const first = getFirstCharConsumedBy(element, direction, flags); + return { + char: firstConsumedCharConcat([state.char, first], flags), + elements: [...state.elements, element], + }; + }, + continueInto() { + return false; + }, + continueAfter(_, state) { + return state.char.empty; + }, + }, direction); + return { char: result.char, elements: result.elements }; +} +exports.getFirstConsumedCharAfter = getFirstConsumedCharAfter; +function getFirstCharAfter(afterThis, direction, flags) { + const result = getFirstConsumedCharAfter(afterThis, direction, flags); + return { char: firstConsumedToLook(result.char), elements: [...result.elements] }; +} +exports.getFirstCharAfter = getFirstCharAfter; +function getSingleConsumedChar(element, ignoreAssertions, flags) { + if (Array.isArray(element)) { + let empty = false; + const union = CharUnion.emptyFromFlags(flags); + for (const a of element) { + const single = getSingleConsumedChar(a, ignoreAssertions, flags); + empty = empty || single.empty; + union.add(single.char, single.exact); + } + return { char: union.char, exact: union.exact, empty }; + } + function multipleChars() { + return { char: char_util_1.emptyCharSet(flags), exact: true, empty: false }; + } + function zeroChars() { + return { char: char_util_1.emptyCharSet(flags), exact: true, empty: true }; + } + switch (element.type) { + case "Alternative": { + let nonEmptyResult = undefined; + const emptyUnion = CharUnion.emptyFromFlags(flags); + for (const e of element.elements) { + const single = getSingleConsumedChar(e, ignoreAssertions, flags); + if (nonEmptyResult === undefined) { + if (single.empty) { + emptyUnion.add(single.char, single.exact); + } + else { + nonEmptyResult = single; + } + } + else { + if (single.empty) { + } + else { + return multipleChars(); + } + } + } + if (nonEmptyResult) { + return nonEmptyResult; + } + else { + return { char: emptyUnion.char, exact: emptyUnion.exact, empty: true }; + } + } + case "Assertion": { + return { char: char_util_1.emptyCharSet(flags), exact: false, empty: ignoreAssertions }; + } + case "Character": + case "CharacterClass": + case "CharacterSet": { + return { char: char_util_1.toCharSet(element, flags), exact: true, empty: false }; + } + case "CapturingGroup": + case "Group": { + return getSingleConsumedChar(element.alternatives, ignoreAssertions, flags); + } + case "Backreference": { + if (isEmptyBackreference(element)) { + return zeroChars(); + } + const resolvedSingle = getSingleConsumedChar(element.resolved, ignoreAssertions, flags); + resolvedSingle.exact = resolvedSingle.exact && resolvedSingle.char.size <= 1; + resolvedSingle.empty = resolvedSingle.empty || !backreferenceAlwaysAfterGroup(element); + return resolvedSingle; + } + case "Quantifier": { + if (element.max === 0) { + return zeroChars(); + } + const single = getSingleConsumedChar(element.element, ignoreAssertions, flags); + if (!single.empty) { + if (element.min === 0) { + single.empty = true; + } + else if (element.min >= 2) { + return multipleChars(); + } + } + return single; + } + default: + throw util_1.assertNever(element); + } +} +exports.getSingleConsumedChar = getSingleConsumedChar; +function effectiveQuantifierMax(node) { + if (node == null) { + return 1; + } + else { + const parent = effectiveQuantifierMax(node.parent); + if (node.type === "Quantifier") { + if (node.max === 0 || parent === 0) { + return 0; + } + else { + return parent * node.max; + } + } + else { + return parent; + } + } +} +exports.effectiveQuantifierMax = effectiveQuantifierMax; +function underAStar(node) { + return effectiveQuantifierMax(node) > 20; +} +exports.underAStar = underAStar; +function getParentPrefixAndSuffix(parent) { + switch (parent.type) { + case "Assertion": + return ["(?" + (parent.kind === "lookahead" ? "" : "<") + (parent.negate ? "!" : "="), ")"]; + case "CapturingGroup": + if (parent.name !== null) { + return ["(?<" + parent.name + ">", ")"]; + } + else { + return ["(", ")"]; + } + case "Group": + return ["(?:", ")"]; + case "Pattern": + return ["", ""]; + default: + throw util_1.assertNever(parent); + } +} +exports.getParentPrefixAndSuffix = getParentPrefixAndSuffix; diff --git a/node_modules/eslint-plugin-clean-regex/dist/char-util.js b/node_modules/eslint-plugin-clean-regex/dist/char-util.js new file mode 100644 index 0000000..f355385 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/char-util.js @@ -0,0 +1,145 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isMatchNone = exports.isMatchAll = exports.wordCharSet = exports.lineTerminatorCharSet = exports.allCharSet = exports.emptyCharSet = exports.toCharSet = void 0; +const refa_1 = require("refa"); +const util_1 = require("./util"); +function toCharSet(elements, flags) { + if (Array.isArray(elements)) { + return refa_1.JS.createCharSet(elements.map(e => { + switch (e.type) { + case "Character": + return e.value; + case "CharacterClassRange": + return { min: e.min.value, max: e.max.value }; + case "CharacterSet": + return e; + default: + throw util_1.assertNever(e); + } + }), flags); + } + else { + switch (elements.type) { + case "Character": { + return refa_1.JS.createCharSet([elements.value], flags); + } + case "CharacterClass": { + const chars = toCharSet(elements.elements, flags); + if (elements.negate) { + return chars.negate(); + } + return chars; + } + case "CharacterSet": { + return refa_1.JS.createCharSet([elements], flags); + } + default: + throw util_1.assertNever(elements); + } + } +} +exports.toCharSet = toCharSet; +const EMPTY_UTF16_CHARSET = refa_1.CharSet.empty(0xffff); +const EMPTY_UNICODE_CHARSET = refa_1.CharSet.empty(0x10ffff); +function emptyCharSet(flags) { + if (flags.unicode) { + return EMPTY_UNICODE_CHARSET; + } + else { + return EMPTY_UTF16_CHARSET; + } +} +exports.emptyCharSet = emptyCharSet; +const ALL_UTF16_CHARSET = refa_1.CharSet.all(0xffff); +const ALL_UNICODE_CHARSET = refa_1.CharSet.all(0x10ffff); +function allCharSet(flags) { + if (flags.unicode) { + return ALL_UNICODE_CHARSET; + } + else { + return ALL_UTF16_CHARSET; + } +} +exports.allCharSet = allCharSet; +const LINE_TERMINATOR_UTF16_CHARSET = refa_1.JS.createCharSet([{ kind: "any" }], { unicode: false }).negate(); +const LINE_TERMINATOR_UNICODE_CHARSET = refa_1.JS.createCharSet([{ kind: "any" }], { unicode: true }).negate(); +function lineTerminatorCharSet(flags) { + if (flags.unicode) { + return LINE_TERMINATOR_UNICODE_CHARSET; + } + else { + return LINE_TERMINATOR_UTF16_CHARSET; + } +} +exports.lineTerminatorCharSet = lineTerminatorCharSet; +const WORD_UTF16_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { unicode: false }); +const WORD_UNICODE_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { unicode: true, ignoreCase: false }); +const WORD_UNICODE_IGNORE_CASE_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { + unicode: true, + ignoreCase: true, +}); +function wordCharSet(flags) { + if (flags.unicode) { + if (flags.ignoreCase) { + return WORD_UNICODE_IGNORE_CASE_CHARSET; + } + else { + return WORD_UNICODE_CHARSET; + } + } + else { + return WORD_UTF16_CHARSET; + } +} +exports.wordCharSet = wordCharSet; +function isMatchAll(char, flags) { + if (char.type === "CharacterSet") { + if (char.kind === "property") { + return refa_1.JS.createCharSet([char], flags).isAll; + } + else if (char.kind === "any") { + return !!flags.dotAll; + } + else { + return false; + } + } + else { + if (char.negate && char.elements.length === 0) { + return true; + } + else { + if (char.negate) { + return toCharSet(char.elements, flags).isEmpty; + } + else { + return toCharSet(char.elements, flags).isAll; + } + } + } +} +exports.isMatchAll = isMatchAll; +function isMatchNone(char, flags) { + if (char.type === "CharacterSet") { + if (char.kind === "property") { + return refa_1.JS.createCharSet([char], flags).isEmpty; + } + else { + return false; + } + } + else { + if (!char.negate && char.elements.length === 0) { + return true; + } + else { + if (char.negate) { + return toCharSet(char.elements, flags).isAll; + } + else { + return toCharSet(char.elements, flags).isEmpty; + } + } + } +} +exports.isMatchNone = isMatchNone; diff --git a/node_modules/eslint-plugin-clean-regex/dist/configs.js b/node_modules/eslint-plugin-clean-regex/dist/configs.js new file mode 100644 index 0000000..0d369e6 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/configs.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = { + recommended: { + plugins: ["clean-regex"], + rules: { + "clean-regex/confusing-quantifier": "warn", + "clean-regex/consistent-match-all-characters": "warn", + "clean-regex/disjoint-alternatives": "warn", + "clean-regex/identity-escape": "warn", + "clean-regex/no-constant-capturing-group": "warn", + "clean-regex/no-empty-alternative": "warn", + "clean-regex/no-empty-backreference": "error", + "clean-regex/no-empty-lookaround": "error", + "clean-regex/no-lazy-ends": "warn", + "clean-regex/no-obscure-range": "error", + "clean-regex/no-octal-escape": "error", + "clean-regex/no-optional-assertion": "error", + "clean-regex/no-potentially-empty-backreference": "warn", + "clean-regex/no-trivially-nested-lookaround": "warn", + "clean-regex/no-trivially-nested-quantifier": "warn", + "clean-regex/no-unnecessary-assertions": "error", + "clean-regex/no-unnecessary-character-class": "warn", + "clean-regex/no-unnecessary-flag": "warn", + "clean-regex/no-unnecessary-group": "warn", + "clean-regex/no-unnecessary-lazy": "warn", + "clean-regex/no-unnecessary-quantifier": "warn", + "clean-regex/no-zero-quantifier": "error", + "clean-regex/optimal-concatenation-quantifier": "warn", + "clean-regex/optimal-lookaround-quantifier": "warn", + "clean-regex/optimized-character-class": "warn", + "clean-regex/prefer-character-class": "warn", + "clean-regex/prefer-predefined-assertion": "warn", + "clean-regex/prefer-predefined-character-set": "warn", + "clean-regex/prefer-predefined-quantifiers": "warn", + "clean-regex/simple-constant-quantifier": "warn", + "clean-regex/sort-flags": "warn", + }, + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/fa-util.js b/node_modules/eslint-plugin-clean-regex/dist/fa-util.js new file mode 100644 index 0000000..62473e4 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/fa-util.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.nfaUnionAll = exports.nfaIsSubsetOf = exports.nfaIsSupersetOf = exports.nfaEquals = void 0; +const refa_1 = require("refa"); +function nfaEquals(a, b) { + if (a.isEmpty || b.isEmpty) { + return a.isEmpty === b.isEmpty; + } + if (a.options.maxCharacter !== b.options.maxCharacter) { + return false; + } + const { maxCharacter } = a.options; + const x = a.nodes; + const y = b.nodes; + if (x.finals.has(x.initial) !== y.finals.has(y.initial)) { + return false; + } + function unionAll(iter) { + let total = undefined; + for (const item of iter) { + if (total === undefined) { + total = item; + } + else { + total = total.union(item); + } + } + return total || refa_1.CharSet.empty(maxCharacter); + } + if (!unionAll(x.initial.out.values()).equals(unionAll(y.initial.out.values()))) { + return false; + } + const aDfa = refa_1.DFA.fromFA(a); + aDfa.minimize(); + const bDfa = refa_1.DFA.fromFA(b); + bDfa.minimize(); + return aDfa.structurallyEqual(bDfa); +} +exports.nfaEquals = nfaEquals; +function nfaIsSupersetOf(superset, subset) { + const union = superset.copy(); + union.union(subset); + return nfaEquals(union, superset); +} +exports.nfaIsSupersetOf = nfaIsSupersetOf; +function nfaIsSubsetOf(subset, superset) { + return nfaIsSupersetOf(superset, subset); +} +exports.nfaIsSubsetOf = nfaIsSubsetOf; +function nfaUnionAll(nfas, options) { + const total = refa_1.NFA.empty(options); + for (const nfa of nfas) { + total.union(nfa); + } + return total; +} +exports.nfaUnionAll = nfaUnionAll; diff --git a/node_modules/eslint-plugin-clean-regex/dist/format.js b/node_modules/eslint-plugin-clean-regex/dist/format.js new file mode 100644 index 0000000..6a34e4c --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/format.js @@ -0,0 +1,81 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.many = exports.mentionCharElement = exports.mention = exports.toRegExpString = exports.shorten = void 0; +const refa_1 = require("refa"); +const util_1 = require("./util"); +const ast_util_1 = require("./ast-util"); +function shorten(string, maxLength, position) { + if (string.length <= maxLength) { + return string; + } + else { + maxLength--; + if (position === "end" || position == undefined) { + return string.substr(0, maxLength) + "…"; + } + else if (position === "start") { + return "…" + string.substr(string.length - maxLength, maxLength); + } + else if (position === "center") { + const start = maxLength >>> 1; + const end = start + (maxLength % 2); + return string.substr(0, start) + "…" + string.substr(string.length - end, end); + } + else { + throw new Error("Invalid position."); + } + } +} +exports.shorten = shorten; +function toRegExpString(value) { + if ("toRegex" in value) { + const re = value.toRegex(); + const literal = refa_1.JS.toLiteral(re); + return toRegExpString(literal); + } + else { + return `/${value.source}/${value.flags}`; + } +} +exports.toRegExpString = toRegExpString; +function mention(node) { + return "`" + (typeof node === "string" ? node : node.raw) + "`"; +} +exports.mention = mention; +function mentionCharElement(element) { + switch (element.type) { + case "Character": + return `${mention(element)} (${ast_util_1.minimalHexEscape(element.value)})`; + case "CharacterClassRange": + return `${mention(element)} (${ast_util_1.minimalHexEscape(element.min.value)}-${ast_util_1.minimalHexEscape(element.max.value)})`; + case "CharacterSet": + switch (element.kind) { + case "digit": + return `${mention(element)} ([${element.negate ? "^" : ""}0-9])`; + case "word": + return `${mention(element)} ([${element.negate ? "^" : ""}0-9A-Za-z_])`; + default: + return mention(element); + } + default: + throw util_1.assertNever(element); + } +} +exports.mentionCharElement = mentionCharElement; +function many(count, unit, unitPlural) { + if (!unitPlural) { + if (unit.length > 1 && unit[unit.length - 1] === "y") { + unitPlural = unit.substr(0, unit.length - 1) + "ies"; + } + else { + unitPlural = unit + "s"; + } + } + if (count === 1) { + return "1 " + unit; + } + else { + return count + " " + unitPlural; + } +} +exports.many = many; diff --git a/node_modules/eslint-plugin-clean-regex/dist/index.js b/node_modules/eslint-plugin-clean-regex/dist/index.js new file mode 100644 index 0000000..c336228 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/index.js @@ -0,0 +1,72 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.rules = exports.configs = void 0; +const configs_1 = __importDefault(require("./configs")); +const confusing_quantifier_1 = __importDefault(require("./rules/confusing-quantifier")); +const consistent_match_all_characters_1 = __importDefault(require("./rules/consistent-match-all-characters")); +const disjoint_alternatives_1 = __importDefault(require("./rules/disjoint-alternatives")); +const identity_escape_1 = __importDefault(require("./rules/identity-escape")); +const no_constant_capturing_group_1 = __importDefault(require("./rules/no-constant-capturing-group")); +const no_empty_alternative_1 = __importDefault(require("./rules/no-empty-alternative")); +const no_empty_backreference_1 = __importDefault(require("./rules/no-empty-backreference")); +const no_empty_lookaround_1 = __importDefault(require("./rules/no-empty-lookaround")); +const no_lazy_ends_1 = __importDefault(require("./rules/no-lazy-ends")); +const no_obscure_range_1 = __importDefault(require("./rules/no-obscure-range")); +const no_octal_escape_1 = __importDefault(require("./rules/no-octal-escape")); +const no_optional_assertion_1 = __importDefault(require("./rules/no-optional-assertion")); +const no_potentially_empty_backreference_1 = __importDefault(require("./rules/no-potentially-empty-backreference")); +const no_trivially_nested_lookaround_1 = __importDefault(require("./rules/no-trivially-nested-lookaround")); +const no_trivially_nested_quantifier_1 = __importDefault(require("./rules/no-trivially-nested-quantifier")); +const no_unnecessary_assertions_1 = __importDefault(require("./rules/no-unnecessary-assertions")); +const no_unnecessary_character_class_1 = __importDefault(require("./rules/no-unnecessary-character-class")); +const no_unnecessary_flag_1 = __importDefault(require("./rules/no-unnecessary-flag")); +const no_unnecessary_group_1 = __importDefault(require("./rules/no-unnecessary-group")); +const no_unnecessary_lazy_1 = __importDefault(require("./rules/no-unnecessary-lazy")); +const no_unnecessary_quantifier_1 = __importDefault(require("./rules/no-unnecessary-quantifier")); +const no_zero_quantifier_1 = __importDefault(require("./rules/no-zero-quantifier")); +const optimal_concatenation_quantifier_1 = __importDefault(require("./rules/optimal-concatenation-quantifier")); +const optimal_lookaround_quantifier_1 = __importDefault(require("./rules/optimal-lookaround-quantifier")); +const optimized_character_class_1 = __importDefault(require("./rules/optimized-character-class")); +const prefer_character_class_1 = __importDefault(require("./rules/prefer-character-class")); +const prefer_predefined_assertion_1 = __importDefault(require("./rules/prefer-predefined-assertion")); +const prefer_predefined_character_set_1 = __importDefault(require("./rules/prefer-predefined-character-set")); +const prefer_predefined_quantifiers_1 = __importDefault(require("./rules/prefer-predefined-quantifiers")); +const simple_constant_quantifier_1 = __importDefault(require("./rules/simple-constant-quantifier")); +const sort_flags_1 = __importDefault(require("./rules/sort-flags")); +exports.configs = configs_1.default; +exports.rules = { + "confusing-quantifier": confusing_quantifier_1.default, + "consistent-match-all-characters": consistent_match_all_characters_1.default, + "disjoint-alternatives": disjoint_alternatives_1.default, + "identity-escape": identity_escape_1.default, + "no-constant-capturing-group": no_constant_capturing_group_1.default, + "no-empty-alternative": no_empty_alternative_1.default, + "no-empty-backreference": no_empty_backreference_1.default, + "no-empty-lookaround": no_empty_lookaround_1.default, + "no-lazy-ends": no_lazy_ends_1.default, + "no-obscure-range": no_obscure_range_1.default, + "no-octal-escape": no_octal_escape_1.default, + "no-optional-assertion": no_optional_assertion_1.default, + "no-potentially-empty-backreference": no_potentially_empty_backreference_1.default, + "no-trivially-nested-lookaround": no_trivially_nested_lookaround_1.default, + "no-trivially-nested-quantifier": no_trivially_nested_quantifier_1.default, + "no-unnecessary-assertions": no_unnecessary_assertions_1.default, + "no-unnecessary-character-class": no_unnecessary_character_class_1.default, + "no-unnecessary-flag": no_unnecessary_flag_1.default, + "no-unnecessary-group": no_unnecessary_group_1.default, + "no-unnecessary-lazy": no_unnecessary_lazy_1.default, + "no-unnecessary-quantifier": no_unnecessary_quantifier_1.default, + "no-zero-quantifier": no_zero_quantifier_1.default, + "optimal-concatenation-quantifier": optimal_concatenation_quantifier_1.default, + "optimal-lookaround-quantifier": optimal_lookaround_quantifier_1.default, + "optimized-character-class": optimized_character_class_1.default, + "prefer-character-class": prefer_character_class_1.default, + "prefer-predefined-assertion": prefer_predefined_assertion_1.default, + "prefer-predefined-character-set": prefer_predefined_character_set_1.default, + "prefer-predefined-quantifiers": prefer_predefined_quantifiers_1.default, + "simple-constant-quantifier": simple_constant_quantifier_1.default, + "sort-flags": sort_flags_1.default, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules-util.js b/node_modules/eslint-plugin-clean-regex/dist/rules-util.js new file mode 100644 index 0000000..6a790bc --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules-util.js @@ -0,0 +1,234 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDocUrl = exports.filenameToRule = exports.repoTreeRoot = exports.createRuleListener = void 0; +const regexpp_1 = require("regexpp"); +const parser = new regexpp_1.RegExpParser(); +const patternCache = new Map(); +const flagsCache = new Map(); +function getPattern(source, uFlag) { + const key = `${uFlag ? "u" : ""}:${source}`; + let pattern = patternCache.get(key); + if (pattern === undefined) { + pattern = null; + try { + pattern = parser.parsePattern(source, undefined, undefined, uFlag); + } + catch (error) { + } + patternCache.set(key, pattern); + } + return pattern; +} +function getFlags(flags) { + const key = flags; + let f = flagsCache.get(key); + if (f === undefined) { + f = null; + try { + f = parser.parseFlags(flags); + } + catch (error) { + } + flagsCache.set(key, f); + } + return f; +} +function createListenerContext(regexNode) { + const pattern = getPattern(regexNode.regex.pattern, regexNode.regex.flags.indexOf("u") != -1); + const flags = getFlags(regexNode.regex.flags); + if (!pattern || !flags) { + return null; + } + function replaceLiteralImpl(patternReplacement, flagsReplacement) { + const range = regexNode.range; + if (!range) { + throw new Error("The regex literal node does not have a range associated with it."); + } + return { + loc: copyLoc(regexNode.loc), + fix: fixer => fixer.replaceTextRange(range, `/${patternReplacement}/${flagsReplacement}`), + }; + } + function replaceElementImpl(element, replacement, options) { + var _a; + if (options === null || options === void 0 ? void 0 : options.dependsOnFlags) { + const pattern = regexNode.regex.pattern; + const flags = regexNode.regex.flags; + const patternReplacement = pattern.substring(0, element.start) + replacement + pattern.substring(element.end); + return { + loc: locOfElement(regexNode, element), + fix: replaceLiteralImpl(patternReplacement, flags).fix, + }; + } + else { + const region = (_a = elementLocUnion([...toArray(options === null || options === void 0 ? void 0 : options.dependsOn), element])) !== null && _a !== void 0 ? _a : element; + if (region.start === element.start && region.end === element.end) { + return { + loc: locOfElement(regexNode, element), + fix: fixer => replaceElement(fixer, regexNode, element, replacement), + }; + } + else { + const regionPattern = regexNode.regex.pattern.substring(region.start, region.end); + const regionReplacement = regionPattern.substring(0, element.start - region.start) + + replacement + + regionPattern.substring(element.end - region.start); + return { + loc: locOfElement(regexNode, element), + fix: fixer => replaceElement(fixer, regexNode, region, regionReplacement), + }; + } + } + } + const listenerContext = { + pattern, + flags, + visitAST(handlers) { + regexpp_1.visitRegExpAST(pattern, handlers); + }, + reportElement(element) { + return { loc: locOfElement(regexNode, element) }; + }, + reportQuantifier(element) { + return { loc: locOfElement(regexNode, elementLocOfQuantifier(element)) }; + }, + reportFlags() { + return { loc: locOfRegexFlags(regexNode) }; + }, + reportElements(elements) { + const union = elementLocUnion(elements); + if (!union) { + throw new Error("There has to be at least one element to report!"); + } + return { loc: locOfElement(regexNode, union) }; + }, + replaceLiteral: replaceLiteralImpl, + replaceElement: replaceElementImpl, + replaceQuantifier(element, replacement, options) { + const quant = elementLocOfQuantifier(element); + return replaceElementImpl(quant, replacement, options); + }, + replaceFlags(replacement, options) { + if (options === null || options === void 0 ? void 0 : options.dependsOn) { + return { + loc: locOfRegexFlags(regexNode), + fix: fixer => replaceFlags(fixer, regexNode, replacement), + }; + } + else { + return { + loc: locOfRegexFlags(regexNode), + fix: replaceLiteralImpl(regexNode.regex.pattern, replacement).fix, + }; + } + }, + removeElement(element, options) { + const parent = element.parent; + if (parent && parent.type === "Alternative" && parent.elements.length === 1) { + const pattern = parent.parent; + if (pattern.type === "Pattern" && pattern.alternatives.length === 1) { + return replaceElementImpl(element, "(?:)", options); + } + } + if (parent && parent.type === "Quantifier") { + return replaceElementImpl(element, "(?:)", options); + } + return replaceElementImpl(element, "", options); + }, + parseExpression(expression) { + return getPattern(expression, regexNode.regex.flags.indexOf("u") != -1); + }, + }; + return listenerContext; +} +function createRuleListener(listener) { + return { + Literal(node) { + const regexNode = node; + if (typeof regexNode.regex === "object") { + const listenerContext = createListenerContext(regexNode); + if (listenerContext !== null) { + listener.call(this, listenerContext); + } + } + }, + }; +} +exports.createRuleListener = createRuleListener; +function elementLocUnion(array) { + if (array.length === 0) { + return undefined; + } + else { + let start = array[0].start; + let end = array[0].end; + for (const item of array) { + start = Math.min(start, item.start); + end = Math.max(end, item.end); + } + return { start, end }; + } +} +function elementLocOfQuantifier(element) { + return { start: element.element.end, end: element.end }; +} +function copyLoc(loc) { + if (!loc) { + throw new Error("The node does not include source location information!"); + } + return { + start: Object.assign({}, loc.start), + end: Object.assign({}, loc.end), + }; +} +function locOfElement(node, element) { + const loc = copyLoc(node.loc); + const offset = loc.start.column + "/".length; + loc.start.column = offset + element.start; + loc.end.column = offset + element.end; + return loc; +} +function locOfRegexFlags(node) { + const loc = copyLoc(node.loc); + const flagCount = Math.max(1, node.regex.flags.length); + loc.start.column = loc.end.column - flagCount; + return loc; +} +function replaceElement(fixer, node, element, replacement) { + if (!node.range) { + throw new Error("The given node does not have range information."); + } + const offset = node.range[0] + "/".length; + return fixer.replaceTextRange([offset + element.start, offset + element.end], replacement); +} +function replaceFlags(fixer, node, replacement) { + if (!node.range) { + throw new Error("The given node does not have range information."); + } + const start = node.range[1] - node.regex.flags.length; + return fixer.replaceTextRange([start, node.range[1]], replacement); +} +function toArray(value) { + if (Array.isArray(value)) { + return value; + } + else if (value === undefined) { + return []; + } + else { + return [value]; + } +} +exports.repoTreeRoot = "https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master"; +function filenameToRule(filename) { + const rule = (/([-\w]+)\.[jt]s$/.exec(filename) || [undefined, undefined])[1]; + if (!rule) { + throw new Error(`Invalid rule filename: ${filename}`); + } + return rule; +} +exports.filenameToRule = filenameToRule; +function getDocUrl(rule) { + return `${exports.repoTreeRoot}/docs/rules/${rule}.md`; +} +exports.getDocUrl = getDocUrl; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js new file mode 100644 index 0000000..92b4546 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Warn about confusing quantifiers.", + url: rules_util_1.getDocUrl("confusing-quantifier"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportQuantifier }) => { + visitAST({ + onQuantifierEnter(node) { + if (node.min > 0 && ast_util_1.isPotentiallyEmpty(node.element)) { + const proposal = ast_util_1.quantToString(Object.assign(Object.assign({}, node), { min: 0 })); + context.report(Object.assign({ message: `This quantifier is confusing because its minimum is ${node.min} but it can match the empty string.` + + ` Maybe replace it with ${format_1.mention(proposal)} to reflect that it can match the empty string?` }, reportQuantifier(node))); + return; + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js b/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js new file mode 100644 index 0000000..8a74e0d --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js @@ -0,0 +1,117 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const format_1 = require("../format"); +const util_1 = require("../util"); +const char_util_1 = require("../char-util"); +function removeDescendantNodes(nodes) { + return nodes.filter(({ node }) => { + return !nodes.some(({ node: n }) => n != node && n.start <= node.start && n.end >= node.end); + }); +} +const modes = ["dot", "dot-if-dotAll", "char-class"]; +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Use one character class consistently whenever all characters have to be matched.", + url: rules_util_1.getDocUrl("consistent-match-all-characters"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + mode: { + type: "string", + enum: modes, + }, + charClass: { + type: "string", + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const options = context.options[0] || {}; + const mode = options.mode || "dot-if-dotAll"; + const charClass = options.charClass || "[\\s\\S]"; + function getReplacement(flags) { + switch (mode) { + case "dot": + return "."; + case "dot-if-dotAll": + if (flags.dotAll) { + return "."; + } + else { + return charClass; + } + case "char-class": + return charClass; + default: + throw util_1.assertNever(mode); + } + } + return rules_util_1.createRuleListener(({ visitAST, pattern, flags, replaceElement, replaceLiteral }) => { + const replacement = getReplacement(flags); + let nodesToReplace = []; + visitAST({ + onCharacterClassEnter(node) { + if (node.raw !== replacement && char_util_1.isMatchAll(node, flags)) { + nodesToReplace.push({ + node, + message: `Replace this character class with ${format_1.mention(replacement)}.`, + replacement, + }); + } + }, + onCharacterSetEnter(node) { + if ("." !== replacement && node.kind === "any" && flags.dotAll) { + nodesToReplace.push({ + node, + message: `Replace this dot with ${format_1.mention(replacement)}.`, + replacement, + }); + } + }, + }); + nodesToReplace = removeDescendantNodes(nodesToReplace); + if (nodesToReplace.length === 0) { + return; + } + if ((replacement === ".") === flags.dotAll) { + nodesToReplace.forEach(({ node, message, replacement }) => { + context.report(Object.assign({ message: message }, replaceElement(node, replacement, { dependsOnFlags: true }))); + }); + } + else { + let newFlags; + if (replacement === ".") { + newFlags = flags.raw + "s"; + if (flags.raw === [...flags.raw].sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join("")) { + newFlags = [...newFlags].sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join(""); + } + } + else { + newFlags = flags.raw.replace(/s/, ""); + } + nodesToReplace.sort((a, b) => a.node.start - b.node.start); + const oldPattern = pattern.raw; + let lastEndIndex = 0; + let newPattern = ""; + for (const { node, replacement } of nodesToReplace) { + newPattern += oldPattern.substr(lastEndIndex, node.start); + newPattern += replacement; + lastEndIndex = node.end; + } + newPattern += oldPattern.substr(lastEndIndex); + const manyElements = format_1.many(nodesToReplace.length, "element"); + context.report(Object.assign({ message: `${manyElements} in the pattern will be replaced with ${format_1.mention(replacement)}` + + ` and the s flag will be ${replacement === "." ? "added" : "removed"}.` }, replaceLiteral(newPattern, newFlags))); + } + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js b/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js new file mode 100644 index 0000000..3395432 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js @@ -0,0 +1,138 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const refa_1 = require("refa"); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const fa_util_1 = require("../fa-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow different alternatives that can match the same words.", + url: rules_util_1.getDocUrl("disjoint-alternatives"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, pattern, reportElement }) => { + const parser = refa_1.JS.Parser.fromAst({ pattern, flags }); + function toNfa(alt) { + try { + const result = parser.parseElement(alt, { backreferences: "disable", assertions: "disable" }); + const nfa = refa_1.NFA.fromRegex(result.expression, { maxCharacter: result.maxCharacter }); + nfa.withoutEmptyWord(); + return nfa; + } + catch (e) { + if (e instanceof refa_1.TooManyNodesError) { + return refa_1.NFA.empty({ maxCharacter: flags.unicode ? 0x10ffff : 0xffff }); + } + throw e; + } + } + function findFirstSuperset(alternatives, subset) { + for (const alt of alternatives) { + if (fa_util_1.nfaIsSupersetOf(toNfa(alt), subset)) { + return [alt]; + } + } + return []; + } + function findNonDisjoint(alternatives, set) { + return alternatives.filter(alt => { + return !areDisjoint(toNfa(alt), set); + }); + } + function areDisjoint(a, b) { + return a.isDisjointWith(b, { + maxNodes: 1000, + }); + } + function checkAlternatives(alternatives) { + if (alternatives.length < 2) { + return "disjoint"; + } + let result = "disjoint"; + let total = undefined; + for (const alt of alternatives) { + const isLast = alt === alternatives[alternatives.length - 1]; + const nfa = toNfa(alt); + if (nfa.isEmpty) { + } + else if (!total) { + if (!isLast) { + total = nfa.copy(); + } + } + else if (areDisjoint(total, nfa)) { + if (!isLast) { + total.union(nfa); + } + } + else { + const altIndex = alternatives.indexOf(alt); + const beforeAlternatives = alternatives.slice(0, altIndex); + const intersection = refa_1.NFA.fromIntersection(total, nfa); + const isSubset = fa_util_1.nfaEquals(nfa, intersection); + const cause = isSubset ? findFirstSuperset(beforeAlternatives, nfa) : []; + if (cause.length === 0) { + cause.push(...findNonDisjoint(beforeAlternatives, nfa)); + } + const causeMsg = cause ? cause.map(format_1.mention).join(" | ") : "the previous one(s)"; + const isSuperset = fa_util_1.nfaIsSupersetOf(nfa, fa_util_1.nfaUnionAll(cause.map(toNfa), nfa.options)); + let message; + if (isSubset) { + message = isSuperset + ? `This alternative is the same as ${causeMsg} and can be removed.` + : `This alternative is a subset of ${causeMsg} and can be removed.`; + if (ast_util_1.hasSomeDescendant(alt, d => d.type === "CapturingGroup")) { + message += " This alternative contains a capturing group so be careful when removing."; + } + } + else { + let sharedLanguageMsg; + try { + sharedLanguageMsg = ` The shared language is ${format_1.toRegExpString(intersection)}.`; + } + catch (e) { + sharedLanguageMsg = ""; + } + message = isSuperset + ? `This alternative is a superset of ${causeMsg}.` + : `This alternative is not disjoint with ${causeMsg}.${sharedLanguageMsg}`; + } + if (ast_util_1.underAStar(alt)) { + message += " This alternative is likely to cause exponential backtracking."; + } + context.report(Object.assign({ message }, reportElement(alt))); + result = "reported"; + } + } + return result; + } + const ignoreNodes = new Set(); + function ignoreParents(node) { + for (let parent = node.parent; parent; parent = parent.parent) { + ignoreNodes.add(parent); + } + } + function process(node) { + if (!ignoreNodes.has(node)) { + if (checkAlternatives(node.alternatives) === "reported") { + ignoreParents(node); + } + } + } + visitAST({ + onAssertionLeave(node) { + if (node.kind === "lookahead" || node.kind === "lookbehind") { + process(node); + } + }, + onCapturingGroupLeave: process, + onGroupLeave: process, + onPatternLeave: process, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js b/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js new file mode 100644 index 0000000..821806f --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js @@ -0,0 +1,282 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const regexpp_1 = require("regexpp"); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const char_util_1 = require("../char-util"); +function processLiteralEscapeOption(literalOptions) { + const escapes = []; + const parser = new regexpp_1.RegExpParser({ ecmaVersion: 2020 }); + const flags = { unicode: true }; + for (let index = 0; index < literalOptions.length; index++) { + const element = literalOptions[index]; + const characterClassRaw = element["characters"]; + const errorMessage = `The characters pattern ${JSON.stringify(characterClassRaw)} of ${element.name} is not a valid character, character class, or character set.`; + let ast; + try { + ast = parser.parsePattern(characterClassRaw, undefined, undefined, true); + } + catch (error) { + throw new SyntaxError(errorMessage); + } + let char = undefined; + if (ast.alternatives.length === 1) { + const alt = ast.alternatives[0]; + if (alt.elements.length === 1) { + const e = alt.elements[0]; + if (e.type === "CharacterClass" || e.type === "Character" || e.type === "CharacterSet") { + char = e; + } + } + } + if (char === undefined) { + throw new Error(errorMessage); + } + const set = char_util_1.toCharSet(char, flags); + let matches; + if (set.isEmpty) { + matches = () => false; + } + else if (set.isAll) { + matches = () => true; + } + else if (set.ranges.length === 1) { + const { min, max } = set.ranges[0]; + matches = c => min <= c && c <= max; + } + else { + matches = c => set.has(c); + } + escapes.push({ + matches, + context: element.context || "all", + escape: element.escape, + name: element.name || `rules[${index}]`, + }); + } + return escapes; +} +function isFirstInCharClass(char) { + const parent = char.parent; + switch (parent.type) { + case "CharacterClass": + return parent.elements[0] === char; + case "CharacterClassRange": + if (parent.min !== char) { + return false; + } + return parent.parent.elements[0] === parent; + default: + throw new Error("The given character is not part of a character class."); + } +} +function isLastInCharClass(char) { + const parent = char.parent; + switch (parent.type) { + case "CharacterClass": + return parent.elements[parent.elements.length - 1] === char; + case "CharacterClassRange": + if (parent.max !== char) { + return false; + } + return parent.parent.elements[parent.parent.elements.length - 1] === parent; + default: + throw new Error("The given character is not part of a character class."); + } +} +const SYNTAX_CHARACTERS = new Set([..."^$\\.*+?()[]{}|"]); +function canToggleLiteralEscape(char, flags) { + const inside = char.parent.type === "CharacterClass" || char.parent.type === "CharacterClassRange"; + const { unicode } = flags; + if (char.raw === "\\") { + return false; + } + if (char.raw.startsWith("\\")) { + const charString = char.raw.substr(1); + if (charString === "\\") { + return false; + } + if (charString === String.fromCodePoint(char.value)) { + if (inside) { + if (char.value === "]".charCodeAt(0)) { + return false; + } + else if (char.value === "-".charCodeAt(0)) { + return isFirstInCharClass(char) || isLastInCharClass(char); + } + else if (char.value === "^".charCodeAt(0)) { + return !isFirstInCharClass(char); + } + else { + return true; + } + } + else { + if (unicode) { + return false; + } + if (charString === "/") { + return false; + } + if (SYNTAX_CHARACTERS.has(charString)) { + return false; + } + else { + return true; + } + } + } + else { + return false; + } + } + else { + if (unicode) { + if (inside && (SYNTAX_CHARACTERS.has(char.raw) || char.raw === "/")) { + return true; + } + else { + return false; + } + } + else { + if (/^[a-zA-Z0-9]$/.test(char.raw)) { + return false; + } + else { + return true; + } + } + } +} +function charsOf(string) { + const chars = [...string].map(s => { + const cp = s.codePointAt(0); + if (cp === undefined) { + throw new Error(); + } + return cp; + }); + if (chars.length === 0) { + return () => false; + } + else if (chars.length === 1) { + const char = chars[0]; + return c => c == char; + } + else { + const set = new Set(chars); + return c => set.has(c); + } +} +const standardRules = [ + { + name: "standard:opening-square-bracket", + escape: "require", + context: "inside", + matches: charsOf("["), + }, + { + name: "standard:closing-square-bracket", + escape: "require", + context: "outside", + matches: charsOf("]"), + }, + { + name: "standard:curly-braces", + escape: "require", + context: "outside", + matches: charsOf("{}"), + }, + { + name: "standard:all", + escape: "disallow", + context: "all", + matches: () => true, + }, +]; +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "How to handle identity escapes.", + url: rules_util_1.getDocUrl("identity-escape"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + rules: { + type: "array", + items: { + type: "object", + properties: { + name: { + type: "string", + }, + escape: { + type: "string", + enum: ["require", "disallow", "allow"], + }, + context: { + type: "string", + enum: ["inside", "outside", "all"], + }, + characters: { + type: "string", + }, + }, + required: ["escape", "characters"], + additionalProperties: false, + }, + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const options = context.options[0] || {}; + const literalEscaped = []; + literalEscaped.push(...processLiteralEscapeOption(options["rules"] || [])); + literalEscaped.push(...standardRules); + return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement }) => { + visitAST({ + onCharacterEnter(node) { + if (!canToggleLiteralEscape(node, flags)) { + return; + } + const inside = node.parent.type === "CharacterClass" || node.parent.type === "CharacterClassRange"; + const isEscaped = node.raw.startsWith("\\"); + const toggled = isEscaped ? node.raw.substr(1) : "\\" + node.raw; + for (const escapeRule of literalEscaped) { + if ((escapeRule.context === "inside" && !inside) || + (escapeRule.context === "outside" && inside)) { + continue; + } + if (escapeRule.matches(node.value)) { + const causedBy = escapeRule.name ? ` (${escapeRule.name})` : ""; + switch (escapeRule.escape) { + case "allow": + return; + case "disallow": + if (isEscaped) { + context.report(Object.assign({ message: `The character ${format_1.mentionCharElement(node)} should be unescaped${causedBy}.` }, replaceElement(node, toggled))); + } + return; + case "require": + if (!isEscaped) { + context.report(Object.assign({ message: `The character ${format_1.mentionCharElement(node)} should be escaped${causedBy}.` }, replaceElement(node, toggled))); + } + return; + default: + throw new Error(`Invalid escape option "${escapeRule.escape}".`); + } + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js new file mode 100644 index 0000000..6f71ec6 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js @@ -0,0 +1,52 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow capturing groups that can match only one word.", + url: rules_util_1.getDocUrl("no-constant-capturing-group"), + }, + schema: [ + { + type: "object", + properties: { + ignoreNonEmpty: { + type: "boolean", + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + let ignoreNonEmpty = (context.options[0] || {}).ignoreNonEmpty; + if (typeof ignoreNonEmpty !== "boolean") { + ignoreNonEmpty = true; + } + return rules_util_1.createRuleListener(({ visitAST, flags, reportElement }) => { + visitAST({ + onCapturingGroupEnter(node) { + if (node.alternatives.length === 1) { + const concatenation = node.alternatives[0].elements; + if (concatenation.length === 0) { + context.report(Object.assign({ message: "Empty capturing group" }, reportElement(node))); + return; + } + } + const constant = ast_util_1.getConstant(node, flags); + if (constant && !(ignoreNonEmpty && constant.word !== "")) { + const word = constant.word + ? `one word which is ${JSON.stringify(constant.word)}` + : "the empty string"; + context.report(Object.assign({ message: `The capturing group ${format_1.mention(node)} can only capture ${word}.` }, reportElement(node))); + return; + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js new file mode 100644 index 0000000..f0bcda4 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow alternatives without elements.", + url: rules_util_1.getDocUrl("no-empty-alternative"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + function checkAlternatives(node) { + if (node.alternatives.length >= 2) { + for (let i = 0; i < node.alternatives.length; i++) { + const alt = node.alternatives[i]; + if (alt.elements.length === 0) { + context.report(Object.assign({ message: "No empty alternatives. Use quantifiers instead." }, reportElement(node))); + return; + } + } + } + } + visitAST({ + onGroupEnter: checkAlternatives, + onCapturingGroupEnter: checkAlternatives, + onPatternEnter: checkAlternatives, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js new file mode 100644 index 0000000..3c2b245 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow backreferences that will always be replaced with the empty string.", + url: rules_util_1.getDocUrl("no-empty-backreference"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onBackreferenceEnter(node) { + if (ast_util_1.isZeroLength(node.resolved)) { + context.report(Object.assign({ message: "The referenced capturing group can only match the empty string." }, reportElement(node))); + return; + } + if (ast_util_1.isEmptyBackreference(node)) { + context.report(Object.assign({ message: "The backreference is not reachable from the referenced capturing group without resetting the captured string." }, reportElement(node))); + return; + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js new file mode 100644 index 0000000..88e4f43 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const format_1 = require("../format"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow lookarounds that can match the empty string.", + url: rules_util_1.getDocUrl("no-empty-lookaround"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onAssertionEnter(node) { + if (node.kind !== "lookahead" && node.kind !== "lookbehind") { + return; + } + const empty = ast_util_1.isPotentiallyEmpty(node.alternatives, { backreferencesAreNonEmpty: true }); + if (empty) { + context.report(Object.assign({ message: `The ${node.kind} ${format_1.mention(node)} is non-functional as it matches the empty string.` + + ` It will always trivially ${node.negate ? "reject" : "accept"}.` }, reportElement(node))); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js new file mode 100644 index 0000000..563a761 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +function getLazyEndQuantifiers(alternatives) { + const quantifiers = []; + for (const { elements } of alternatives) { + if (elements.length > 0) { + const last = elements[elements.length - 1]; + switch (last.type) { + case "Quantifier": + if (!last.greedy && last.min !== last.max) { + quantifiers.push(last); + } + else if (last.max === 1) { + const element = last.element; + if (element.type === "Group" || element.type === "CapturingGroup") { + quantifiers.push(...getLazyEndQuantifiers(element.alternatives)); + } + } + break; + case "CapturingGroup": + case "Group": + quantifiers.push(...getLazyEndQuantifiers(last.alternatives)); + break; + default: + break; + } + } + } + return quantifiers; +} +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow lazy quantifiers at the end of an expression.", + url: rules_util_1.getDocUrl("no-lazy-ends"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ pattern, reportElement, reportQuantifier }) => { + const lazyQuantifiers = getLazyEndQuantifiers(pattern.alternatives); + for (const lazy of lazyQuantifiers) { + if (lazy.min === 0) { + context.report(Object.assign({ message: "The quantifier and the quantified element can be removed because the quantifier is lazy and has a minimum of 0." }, reportElement(lazy))); + } + else if (lazy.min === 1) { + context.report(Object.assign({ message: "The quantifier can be removed because the quantifier is lazy and has a minimum of 1." }, reportQuantifier(lazy))); + } + else { + context.report(Object.assign({ message: `The quantifier can be replaced with '{${lazy.min}}' because the quantifier is lazy and has a minimum of ${lazy.min}.` }, reportQuantifier(lazy))); + } + } + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js new file mode 100644 index 0000000..6d8c265 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const allowedRanges = [ + { min: "0".charCodeAt(0), max: "9".charCodeAt(0) }, + { min: "A".charCodeAt(0), max: "Z".charCodeAt(0) }, + { min: "a".charCodeAt(0), max: "z".charCodeAt(0) }, +]; +function inRange(char, range) { + return range.min <= char && char <= range.max; +} +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow obscure ranges in character classes.", + url: rules_util_1.getDocUrl("no-obscure-range"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onCharacterClassRangeEnter(node) { + const { min, max } = node; + if (min.value == max.value) { + return; + } + if (ast_util_1.isControlEscapeSequence(min) && ast_util_1.isControlEscapeSequence(max)) { + return; + } + if (ast_util_1.isOctalEscapeSequence(min) && ast_util_1.isOctalEscapeSequence(max)) { + return; + } + if ((ast_util_1.isHexadecimalEscapeSequence(min) || min.value === 0) && ast_util_1.isHexadecimalEscapeSequence(max)) { + return; + } + if (allowedRanges.some(r => inRange(min.value, r) && inRange(max.value, r))) { + return; + } + context.report(Object.assign({ message: `It's not obvious what characters are matched by ${node.raw}` }, reportElement(node))); + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js new file mode 100644 index 0000000..8f8d6b6 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow octal escapes outside of character classes.", + url: rules_util_1.getDocUrl("no-octal-escape"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onCharacterEnter(node) { + if (node.parent.type === "CharacterClass" || node.parent.type === "CharacterClassRange") { + return; + } + if (node.value > 0 && ast_util_1.isOctalEscapeSequence(node)) { + context.report(Object.assign({ message: "Do not use octal escapes because they might be confused with backreferences." }, reportElement(node))); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js new file mode 100644 index 0000000..b2d67d7 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js @@ -0,0 +1,73 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const format_1 = require("../format"); +const util_1 = require("../util"); +const ast_util_1 = require("../ast-util"); +function getZeroQuantifier(node) { + if (node.type === "Quantifier" && node.min === 0) { + return node; + } + else if (node.parent) { + return getZeroQuantifier(node.parent); + } + else { + return null; + } +} +function isOptional(assertion, quantifier) { + function isOptionalImpl(element) { + if (element.parent === quantifier) { + return true; + } + const parent = element.parent; + if (parent.type === "Alternative") { + for (const e of parent.elements) { + if (e === element) { + continue; + } + if (!ast_util_1.isZeroLength(e)) { + return false; + } + } + if (parent.parent.type === "Pattern") { + throw new Error("The given assertion is not a descendant of the given quantifier."); + } + else { + return isOptionalImpl(parent.parent); + } + } + else if (parent.type === "Quantifier") { + if (parent.max > 1 && !ast_util_1.isZeroLength(parent)) { + return false; + } + return isOptionalImpl(parent); + } + else { + throw util_1.assertNever(parent); + } + } + return isOptionalImpl(assertion); +} +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow optional assertions.", + url: rules_util_1.getDocUrl("no-optional-assertion"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onAssertionEnter(node) { + const q = getZeroQuantifier(node); + if (q && isOptional(node, q)) { + context.report(Object.assign({ message: "This assertion effectively optional and does not change the pattern." + + ` Either remove the assertion or change the parent quantifier ${format_1.mention(q.raw.substr(q.element.raw.length))}.` }, reportElement(node))); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js new file mode 100644 index 0000000..31b8e3b --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow backreferences that reference a group that might not be matched.", + url: rules_util_1.getDocUrl("no-potentially-empty-backreference"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onBackreferenceEnter(node) { + if (ast_util_1.isEmptyBackreference(node)) { + return; + } + if (!ast_util_1.backreferenceAlwaysAfterGroup(node)) { + context.report(Object.assign({ message: "Some path leading to the backreference do not go through the referenced capturing group without resetting its text." }, reportElement(node))); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js new file mode 100644 index 0000000..c4ae5b5 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js @@ -0,0 +1,82 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +function getTriviallyNestedAssertion(node) { + const alternatives = node.alternatives; + if (alternatives.length === 1) { + const elements = alternatives[0].elements; + if (elements.length === 1) { + const element = elements[0]; + if (element.type === "Assertion") { + return element; + } + } + } + return null; +} +function negateLookaround(lookaround) { + let wasReplaced = false; + const replacement = lookaround.raw.replace(/^(\(\? { + wasReplaced = true; + return g1 + (g2 == "=" ? "!" : "="); + }); + if (!wasReplaced) { + throw new Error(`The lookaround ${lookaround.raw} could not be negated!`); + } + return replacement; +} +function negateBoundary(boundary) { + let wasReplaced = false; + const replacement = boundary.raw.replace(/^\\b/i, m => { + wasReplaced = true; + return m == "\\b" ? "\\B" : "\\b"; + }); + if (!wasReplaced) { + throw new Error(`The lookaround ${boundary.raw} could not be negated!`); + } + return replacement; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow lookarounds that only contain another assertion.", + url: rules_util_1.getDocUrl("no-trivially-nested-lookaround"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, replaceElement }) => { + visitAST({ + onAssertionEnter(node) { + if (node.kind === "lookahead" || node.kind === "lookbehind") { + const inner = getTriviallyNestedAssertion(node); + if (!inner) { + return; + } + let replacement; + if (!node.negate) { + replacement = inner.raw; + } + else { + switch (inner.kind) { + case "lookahead": + case "lookbehind": + replacement = negateLookaround(inner); + break; + case "word": + replacement = negateBoundary(inner); + break; + default: + break; + } + } + if (replacement) { + context.report(Object.assign({ message: `The outer ${node.kind} is unnecessary.` }, replaceElement(node, replacement))); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js new file mode 100644 index 0000000..cc390ef --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js @@ -0,0 +1,117 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +function getCombinedQuant(node, nested) { + if (node.max === 0 || nested.max === 0) { + return null; + } + else if (node.greedy === nested.greedy) { + const greedy = node.greedy; + const a = nested.min; + const b = nested.max; + const c = node.min; + const d = node.max; + const condition = b === Infinity && c === 0 ? a <= 1 : c === d || b * c + 1 >= a * (c + 1); + if (condition) { + return { + min: a * c, + max: b * d, + greedy, + }; + } + else { + return null; + } + } + else { + return null; + } +} +function getSimplifiedChildQuant(parent, child) { + if (parent.max === 0 || child.max === 0) { + return null; + } + else if (parent.greedy !== child.greedy) { + return null; + } + else { + let min = child.min; + let max = child.max; + if (min === 0 && parent.min === 0) { + min = 1; + } + if (parent.max === Infinity && (min === 0 || min === 1) && max > 1) { + max = 1; + } + return { min, max, greedy: child.greedy }; + } +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow nested quantifiers that can be rewritten as one quantifier.", + url: rules_util_1.getDocUrl("no-trivially-nested-quantifier"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, replaceElement }) => { + const ignore = new Set(); + visitAST({ + onQuantifierEnter(node) { + if (ast_util_1.hasSomeAncestor(node, a => ignore.has(a))) { + return; + } + if (node.max === 0) { + ignore.add(node); + return; + } + const element = node.element; + if (element.type === "Group" && + element.alternatives.length === 1 && + element.alternatives[0].elements.length === 1) { + const nested = element.alternatives[0].elements[0]; + if (nested.type === "Quantifier") { + const newQuant = getCombinedQuant(node, nested); + if (newQuant) { + const quantStr = ast_util_1.quantToString(newQuant); + const replacement = nested.element.raw + quantStr; + const messagePreview = format_1.shorten(nested.element.raw, 20, "end") + quantStr; + ignore.add(node); + context.report(Object.assign({ message: `The nested quantifiers can be rewritten as ${format_1.mention(messagePreview)}.` }, replaceElement(node, replacement))); + return; + } + } + } + if (element.type === "Group" || element.type === "CapturingGroup") { + for (const alternative of element.alternatives) { + const nested = alternative.elements[0]; + if (!(alternative.elements.length === 1 && nested.type === "Quantifier")) { + continue; + } + const newQuant = getSimplifiedChildQuant(node, nested); + if (!newQuant || (newQuant.min === nested.min && newQuant.max === nested.max)) { + continue; + } + ignore.add(node); + if (newQuant.min === 1 && newQuant.max === 1) { + const replacement = nested.element.raw; + context.report(Object.assign({ message: "The nested quantifier is unnecessary and can be replaced with its element." }, replaceElement(nested, replacement, { dependsOn: node }))); + } + else { + const quantStr = ast_util_1.quantToString(newQuant); + const replacement = nested.element.raw + quantStr; + const messagePreview = format_1.shorten(nested.element.raw, 20, "end") + quantStr; + ignore.add(node); + context.report(Object.assign({ message: `The nested quantifiers can be rewritten as ${format_1.mention(messagePreview)}.` }, replaceElement(nested, replacement, { dependsOn: node }))); + } + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js new file mode 100644 index 0000000..dd49c97 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js @@ -0,0 +1,120 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const format_1 = require("../format"); +const refa_1 = require("refa"); +const ast_util_1 = require("../ast-util"); +const util_1 = require("../util"); +const char_util_1 = require("../char-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow assertions that are known to always accept (or reject).", + url: rules_util_1.getDocUrl("no-unnecessary-assertions"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, reportElement }) => { + function checkStartOrEnd(node) { + const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); + const next = ast_util_1.getFirstCharAfter(node, direction, flags); + const followed = node.kind === "end" ? "followed" : "preceded"; + if (!next.char.edge) { + if (!flags.multiline) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always reject because it is ${followed} by a character.` }, reportElement(node))); + } + else { + const oldDotAll = flags.dotAll; + flags.dotAll = false; + const dot = refa_1.JS.createCharSet([{ kind: "any" }], flags); + flags.dotAll = oldDotAll; + if (next.char.char.isSubsetOf(dot)) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always reject because it is ${followed} by a non-line-terminator character.` }, reportElement(node))); + } + else if (next.char.char.isDisjointWith(dot)) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always accept because it is ${followed} by a line-terminator character.` }, reportElement(node))); + } + } + } + } + function checkWordBoundary(node) { + const word = char_util_1.wordCharSet(flags); + const next = ast_util_1.getFirstCharAfter(node, "ltr", flags); + const prev = ast_util_1.getFirstCharAfter(node, "rtl", flags); + if (prev.char.edge || next.char.edge) { + return; + } + const nextIsWord = next.char.char.isSubsetOf(word); + const prevIsWord = prev.char.char.isSubsetOf(word); + const nextIsNonWord = next.char.char.isDisjointWith(word); + const prevIsNonWord = prev.char.char.isDisjointWith(word); + const accept = node.negate ? "reject" : "accept"; + const reject = node.negate ? "accept" : "reject"; + if (prevIsNonWord) { + if (nextIsWord) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always ${accept} because it is preceded by a non-word character and followed by a word character.` }, reportElement(node))); + } + if (nextIsNonWord) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always ${reject} because it is preceded by a non-word character and followed by a non-word character.` }, reportElement(node))); + } + } + if (prevIsWord) { + if (nextIsNonWord) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always ${accept} because it is preceded by a word character and followed by a non-word character.` }, reportElement(node))); + } + if (nextIsWord) { + context.report(Object.assign({ message: `${format_1.mention(node)} will always ${reject} because it is preceded by a word character and followed by a word character.` }, reportElement(node))); + } + } + } + function checkLookaround(node) { + if (ast_util_1.isPotentiallyEmpty(node.alternatives)) { + return; + } + const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); + const after = ast_util_1.getFirstCharAfter(node, direction, flags); + if (after.char.edge) { + return; + } + const firstOf = ast_util_1.getFirstCharConsumedBy(node.alternatives, direction, flags); + if (firstOf.empty) { + return; + } + const accept = node.negate ? "reject" : "accept"; + const reject = node.negate ? "accept" : "reject"; + const nodeName = `${node.negate ? "negative " : ""}${node.kind} ${format_1.mention(node)}`; + if (after.char.char.isDisjointWith(firstOf.char)) { + context.report(Object.assign({ message: `The ${nodeName} will always ${reject}.` }, reportElement(node))); + } + if (!ast_util_1.hasSomeDescendant(node, d => d !== node && d.type === "Assertion")) { + const range = ast_util_1.getLengthRange(node.alternatives); + if (range && range.max === 1) { + if (firstOf.exact && after.char.char.isSubsetOf(firstOf.char)) { + context.report(Object.assign({ message: `The ${nodeName} will always ${accept}.` }, reportElement(node))); + } + } + } + } + visitAST({ + onAssertionEnter(node) { + switch (node.kind) { + case "start": + case "end": + checkStartOrEnd(node); + break; + case "word": + checkWordBoundary(node); + break; + case "lookahead": + case "lookbehind": + checkLookaround(node); + break; + default: + throw util_1.assertNever(node); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js new file mode 100644 index 0000000..dca7198 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js @@ -0,0 +1,109 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const SPECIAL_CHARACTERS = new Set(".*+?|()[]{}^$/"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow unnecessary character classes.", + url: rules_util_1.getDocUrl("no-unnecessary-character-class"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + avoidEscape: { + type: "boolean", + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const avoidEscape = !!(context.options[0] || {}).avoidEscape; + return rules_util_1.createRuleListener(({ visitAST, pattern, parseExpression, replaceElement }) => { + visitAST({ + onCharacterClassEnter(node) { + if (node.elements.length !== 1) { + return; + } + const element = node.elements[0]; + if (element.type === "CharacterSet") { + const set = node.negate ? ast_util_1.negateCharacterSetRaw(element) : element.raw; + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, set))); + } + else if (element.type === "Character") { + if (node.negate) { + return; + } + if (element.value > 0 && ast_util_1.isOctalEscapeSequence(element)) { + return; + } + if (element.raw === "\\b") { + if (!avoidEscape) { + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, "\\x08"))); + } + return; + } + if (SPECIAL_CHARACTERS.has(element.raw)) { + if (!avoidEscape) { + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, "\\" + element.raw))); + } + return; + } + if (ast_util_1.isEscapeSequence(element)) { + if (!avoidEscape) { + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); + } + return; + } + if (/^\\[^kbBpP]$/.test(element.raw)) { + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); + return; + } + const parent = node.parent; + const before = pattern.raw.substr(0, node.start - pattern.start); + const after = pattern.raw.substr(node.end - pattern.start); + const withoutCharacterClass = before + element.raw + after; + const ast = parseExpression(withoutCharacterClass); + if (ast) { + let equal; + if (parent.type === "Alternative") { + const parentIndex = parent.elements.indexOf(node); + const oldElements = parent.elements; + const newElements = [ + ...parent.elements.slice(0, parentIndex), + element, + ...parent.elements.slice(parentIndex + 1), + ]; + parent.elements = newElements; + try { + equal = ast_util_1.areEqual(pattern, ast); + } + finally { + parent.elements = oldElements; + } + } + else { + parent.element = element; + try { + equal = ast_util_1.areEqual(pattern, ast); + } + finally { + parent.element = node; + } + } + if (equal) { + context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); + } + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js new file mode 100644 index 0000000..4317644 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js @@ -0,0 +1,101 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const regexpp_1 = require("regexpp"); +const rules_util_1 = require("../rules-util"); +const determiner = { + iFlag(pattern) { + let unnecessary = true; + regexpp_1.visitRegExpAST(pattern, { + onCharacterEnter(node) { + const value = String.fromCodePoint(node.value); + if (value.toLowerCase() !== value.toUpperCase()) { + unnecessary = false; + } + }, + }); + return unnecessary; + }, + mFlag(pattern) { + let unnecessary = true; + regexpp_1.visitRegExpAST(pattern, { + onAssertionEnter(node) { + if (node.kind === "start" || node.kind === "end") { + unnecessary = false; + } + }, + }); + return unnecessary; + }, + sFlag(pattern) { + let unnecessary = true; + regexpp_1.visitRegExpAST(pattern, { + onCharacterSetEnter(node) { + if (node.kind === "any") { + unnecessary = false; + } + }, + }); + return unnecessary; + }, +}; +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow unnecessary regex flags.", + url: rules_util_1.getDocUrl("no-unnecessary-flag"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + ignore: { + type: "array", + items: { + type: "string", + enum: ["i", "m", "s"], + }, + uniqueItems: true, + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + return rules_util_1.createRuleListener(({ pattern, flags, replaceFlags }) => { + const unnecessaryFlags = []; + function checkFlag(flag, reason) { + if (!flags.raw.includes(flag)) { + return; + } + if (context.options && + context.options[0] && + context.options[0].ignore && + context.options[0].ignore.includes(flag)) { + return; + } + const isUnnecessary = determiner[`${flag}Flag`](pattern); + if (isUnnecessary) { + unnecessaryFlags.push([flag, reason]); + } + } + checkFlag("i", "does not contain case-variant characters"); + checkFlag("m", "does not contain start (^) or end ($) assertions"); + checkFlag("s", "does not contain dots (.)"); + if (unnecessaryFlags.length === 1) { + const [flag, reason] = unnecessaryFlags[0]; + const newFlags = flags.raw.replace(RegExp(flag, "g"), ""); + context.report(Object.assign({ message: `The ${flag} flags is unnecessary because the pattern ${reason}.` }, replaceFlags(newFlags))); + } + else if (unnecessaryFlags.length > 1) { + const uflags = unnecessaryFlags.map(x => x[0]).join(""); + const newFlags = flags.raw.replace(RegExp(`[${uflags}]`, "g"), ""); + context.report(Object.assign({ message: `The flags ${uflags} are unnecessary because the pattern ${unnecessaryFlags + .map(x => `[${x[0]}] ${x[1]}`) + .join(", ")}` }, replaceFlags(newFlags))); + } + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js new file mode 100644 index 0000000..cc5e5c8 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js @@ -0,0 +1,94 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +function isTopLevel(group) { + const parent = group.parent; + if (parent.type === "Alternative" && parent.elements.length === 1) { + const parentParent = parent.parent; + if (parentParent.type === "Pattern" && parentParent.alternatives.length === 1) { + return true; + } + } + return false; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow unnecessary non-capturing groups.", + url: rules_util_1.getDocUrl("no-unnecessary-group"), + }, + fixable: "code", + }, + create(context) { + const options = context.options[0] || {}; + const allowTop = !!options.allowTop; + return rules_util_1.createRuleListener(({ visitAST, pattern, parseExpression, replaceElement }) => { + visitAST({ + onGroupEnter(node) { + if (allowTop && isTopLevel(node)) { + return; + } + if (pattern.raw === "(?:)") { + return; + } + const groupContent = node.raw.substr("(?:".length, node.raw.length - "(?:)".length); + if (node.parent.type === "Alternative" && node.parent.elements.length === 1) { + context.report(Object.assign({ message: "Unnecessary non-capturing group." }, replaceElement(node, groupContent))); + return; + } + if (node.alternatives.length !== 1) { + return; + } + const elements = node.alternatives[0].elements; + const parent = node.parent; + if (parent.type === "Quantifier") { + if (elements.length !== 1) { + return; + } + const type = elements[0].type; + if (type === "Assertion" || type === "Quantifier") { + return; + } + } + const beforeGroup = pattern.raw.substr(0, node.start - pattern.start); + const afterGroup = pattern.raw.substr(node.end - pattern.start); + const withoutGroup = beforeGroup + groupContent + afterGroup; + const ast = parseExpression(withoutGroup); + if (ast) { + let equal; + if (parent.type === "Alternative") { + const parentIndex = parent.elements.indexOf(node); + const oldElements = parent.elements; + const newElements = [ + ...parent.elements.slice(0, parentIndex), + ...elements, + ...parent.elements.slice(parentIndex + 1), + ]; + parent.elements = newElements; + try { + equal = ast_util_1.areEqual(pattern, ast); + } + finally { + parent.elements = oldElements; + } + } + else { + parent.element = elements[0]; + try { + equal = ast_util_1.areEqual(pattern, ast); + } + finally { + parent.element = node; + } + } + if (equal) { + context.report(Object.assign({ message: "Unnecessary non-capturing group." }, replaceElement(node, groupContent))); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js new file mode 100644 index 0000000..ae9868e --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +function withoutLazy(node) { + let raw = ast_util_1.getQuantifierRaw(node); + raw = raw.substr(0, raw.length - 1); + return raw; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow unnecessarily lazy quantifiers.", + url: rules_util_1.getDocUrl("no-unnecessary-lazy"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, replaceQuantifier }) => { + visitAST({ + onQuantifierEnter(node) { + if (node.greedy) { + return; + } + if (node.min === node.max) { + context.report(Object.assign({ message: "The lazy modifier is unnecessary for constant quantifiers." }, replaceQuantifier(node, withoutLazy(node)))); + return; + } + const matchingDir = ast_util_1.matchingDirection(node); + const firstChar = ast_util_1.getFirstCharConsumedBy(node, matchingDir, flags); + if (!firstChar.empty) { + const after = ast_util_1.getFirstCharAfter(node, matchingDir, flags); + if (!after.char.edge && firstChar.char.isDisjointWith(after.char.char)) { + context.report(Object.assign({ message: "The lazy modifier is unnecessary because the first character of the quantified element are always different from the characters that come after the quantifier." }, replaceQuantifier(node, withoutLazy(node), { dependsOn: after.elements }))); + return; + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js new file mode 100644 index 0000000..c1cd027 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallow unnecessary quantifiers.", + url: rules_util_1.getDocUrl("no-unnecessary-quantifier"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, replaceElement, reportQuantifier }) => { + visitAST({ + onQuantifierEnter(node) { + if (node.min === 1 && node.max === 1) { + context.report(Object.assign({ message: "Unnecessary quantifier." }, replaceElement(node, node.element.raw))); + return; + } + if (ast_util_1.isEmpty(node.element)) { + context.report(Object.assign({ message: "The quantified element is empty, so the quantifier can be removed." }, reportQuantifier(node))); + return; + } + if (node.min === 0 && node.max === 1 && ast_util_1.isPotentiallyEmpty(node.element)) { + context.report(Object.assign({ message: "The optional quantifier can be removed because the quantified element can match the empty string." }, reportQuantifier(node))); + return; + } + if (node.min > 0 && ast_util_1.isZeroLength(node.element)) { + context.report(Object.assign({ message: "The quantified element does not consume characters, so the quantifier (minimum > 0) can be removed." }, reportQuantifier(node))); + return; + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js new file mode 100644 index 0000000..73e2662 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallow quantifiers with a maximum of 0.", + url: rules_util_1.getDocUrl("no-zero-quantifier"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, removeElement, reportElement }) => { + visitAST({ + onQuantifierEnter(node) { + if (node.max === 0) { + let props; + if (ast_util_1.hasSomeDescendant(node, n => n.type === "CapturingGroup")) { + props = reportElement(node); + } + else { + props = removeElement(node); + } + context.report(Object.assign({ message: "The quantifier and the quantified element can be removed." }, props)); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js new file mode 100644 index 0000000..9d71e04 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js @@ -0,0 +1,212 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const char_util_1 = require("../char-util"); +const EMPTY_UTF16 = { + chars: char_util_1.emptyCharSet({}), + complete: false, +}; +const EMPTY_UNICODE = { + chars: char_util_1.emptyCharSet({ unicode: true }), + complete: false, +}; +function createChars(element, flags) { + function empty() { + return flags.unicode ? EMPTY_UNICODE : EMPTY_UTF16; + } + switch (element.type) { + case "Character": + case "CharacterSet": + return { + chars: char_util_1.toCharSet(element, flags), + complete: true, + }; + case "CharacterClass": + return { + chars: char_util_1.toCharSet(element, flags), + complete: true, + }; + case "Group": + case "CapturingGroup": { + const results = element.alternatives.map(a => { + if (a.elements.length === 1) { + return createChars(a.elements[0], flags); + } + else { + return empty(); + } + }); + const union = empty().chars.union(...results.map(({ chars }) => chars)); + return { + chars: union, + complete: results.every(({ complete }) => complete), + }; + } + default: + return empty(); + } +} +function quantize(element, quant) { + if (quant.min === 0 && quant.max === 0) { + if (ast_util_1.hasSomeDescendant(element, d => d.type === "CapturingGroup")) { + return element.raw + "{0}"; + } + else { + return ""; + } + } + if (quant.min === 1 && quant.max === 1) { + return element.raw; + } + return element.raw + ast_util_1.quantToString(quant); +} +function short(str) { + return format_1.shorten(str, 20, "center"); +} +function isGroupOrCharacter(element) { + switch (element.type) { + case "Group": + case "CapturingGroup": + case "Character": + case "CharacterClass": + case "CharacterSet": + return true; + default: + return false; + } +} +function getReplacement(current, next, flags) { + if (current.type === "Quantifier" && + current.min !== current.max && + next.type === "Quantifier" && + next.min !== next.max && + next.greedy === current.greedy && + (current.max === Infinity || next.max === Infinity)) { + const currChars = createChars(current.element, flags); + const nextChars = createChars(next.element, flags); + const greedy = current.greedy; + let currQuant, nextQuant; + if (next.max === Infinity && currChars.complete && nextChars.chars.isSupersetOf(currChars.chars)) { + currQuant = { + min: current.min, + max: current.min, + greedy, + }; + nextQuant = next; + } + else if (current.max === Infinity && nextChars.complete && currChars.chars.isSupersetOf(nextChars.chars)) { + currQuant = current; + nextQuant = { + min: next.min, + max: next.min, + greedy, + }; + } + else { + return null; + } + const raw = quantize(current.element, currQuant) + quantize(next.element, nextQuant); + let message; + if (currQuant.max === 0 && next.max === nextQuant.max && next.min === nextQuant.min) { + message = `${short(format_1.mention(current))} can be removed because it is a subset of ${short(format_1.mention(next))}.`; + } + else if (nextQuant.max === 0 && current.max === currQuant.max && current.min === currQuant.min) { + message = `${short(format_1.mention(next))} can be removed because it is a subset of ${short(format_1.mention(current))}.`; + } + else { + message = `They should be replaced with ${format_1.mention(raw)}.`; + } + if (current.max === Infinity && next.max === Infinity) { + message += " They might cause excessive backtracking otherwise."; + } + return { raw, message }; + } + else if (current.type === "Quantifier" && isGroupOrCharacter(next)) { + const currChars = createChars(current.element, flags); + const nextChars = createChars(next, flags); + if (currChars.complete && nextChars.complete && currChars.chars.equals(nextChars.chars)) { + const raw = current.element.raw + ast_util_1.quantToString(ast_util_1.quantAdd(current, 1)); + return { + message: `${short(format_1.mention(next))} can be combined with ${short(format_1.mention(current))}.`, + raw, + }; + } + else { + return null; + } + } + else if (isGroupOrCharacter(current) && next.type === "Quantifier") { + const currChars = createChars(current, flags); + const nextChars = createChars(next.element, flags); + if (next.min === 0 && next.max === 1) { + return null; + } + if (currChars.complete && nextChars.complete && currChars.chars.equals(nextChars.chars)) { + const raw = next.element.raw + ast_util_1.quantToString(ast_util_1.quantAdd(next, 1)); + return { + message: `${short(format_1.mention(current))} can be combined with ${short(format_1.mention(next))}.`, + raw, + }; + } + else { + return null; + } + } + else { + return null; + } +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Use optimal quantifiers for concatenated quantified characters.", + url: rules_util_1.getDocUrl("optimal-concatenation-quantifier"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + fixable: { + type: "boolean", + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const options = context.options[0] || {}; + const fixable = options.fixable != undefined ? options.fixable : true; + return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElements }) => { + visitAST({ + onAlternativeEnter(node) { + for (let i = 0; i < node.elements.length - 1; i++) { + const current = node.elements[i]; + const next = node.elements[i + 1]; + const replacement = getReplacement(current, next, flags); + if (replacement) { + let message = `The quantifiers of ${format_1.mention(short(current.raw))} and ${format_1.mention(short(next.raw))} are not optimal. ` + replacement.message; + const involvesCapturingGroup = ast_util_1.hasCapturingGroup(current) || ast_util_1.hasCapturingGroup(next); + if (fixable && !involvesCapturingGroup) { + const before = node.raw.substr(0, current.start - node.start); + const after = node.raw.substr(next.end - node.start, node.end - next.end); + context.report(Object.assign(Object.assign({ message }, replaceElement(node, before + replacement.raw + after)), reportElements([current, next]))); + } + else { + if (involvesCapturingGroup) { + message += + " This cannot be fixed automatically because it might change a capturing group."; + } + context.report(Object.assign({ message }, reportElements([current, next]))); + } + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js new file mode 100644 index 0000000..298d572 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js @@ -0,0 +1,88 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +function getEndQuantifiers(alternatives) { + const quantifiers = []; + for (const { elements } of alternatives) { + if (elements.length > 0) { + const last = elements[elements.length - 1]; + switch (last.type) { + case "Quantifier": + if (last.min != last.max) { + quantifiers.push(last); + } + break; + case "Group": + quantifiers.push(...getEndQuantifiers(last.alternatives)); + break; + default: + break; + } + } + } + return quantifiers; +} +function getStartQuantifiers(alternatives) { + const quantifiers = []; + for (const { elements } of alternatives) { + if (elements.length > 0) { + const first = elements[0]; + switch (first.type) { + case "Quantifier": + if (first.min != first.max) { + quantifiers.push(first); + } + break; + case "Group": + quantifiers.push(...getStartQuantifiers(first.alternatives)); + break; + default: + break; + } + } + } + return quantifiers; +} +exports.default = { + meta: { + type: "problem", + docs: { + description: "Disallows the alternatives of lookarounds that end with a non-constant quantifier.", + url: rules_util_1.getDocUrl("optimal-lookaround-quantifier"), + }, + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { + visitAST({ + onAssertionEnter(node) { + if (node.kind === "lookahead" || node.kind === "lookbehind") { + let endOrStart; + let quantifiers; + if (node.kind === "lookahead") { + endOrStart = "end"; + quantifiers = getEndQuantifiers(node.alternatives); + } + else { + endOrStart = "start"; + quantifiers = getStartQuantifiers(node.alternatives); + } + for (const q of quantifiers) { + let proposal; + if (q.min == 0) { + proposal = "removed"; + } + else if (q.min == 1) { + proposal = `replaced with ${q.element.raw} (no quantifier)`; + } + else { + proposal = `replaced with ${q.element.raw}{${q.min}}`; + } + context.report(Object.assign({ message: `The quantified expression ${q.raw} at the ${endOrStart} of the expression tree should only be matched a constant number of times.` + + ` The expression can be ${proposal} without affecting the lookaround.` }, reportElement(q))); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js new file mode 100644 index 0000000..2541b74 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js @@ -0,0 +1,96 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("../format"); +const rules_util_1 = require("../rules-util"); +const char_util_1 = require("../char-util"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Disallows unnecessary elements in character classes.", + url: rules_util_1.getDocUrl("optimized-character-class"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, removeElement, replaceElement }) => { + visitAST({ + onCharacterClassEnter(node) { + const elements = node.elements; + if (elements.length === 0) { + return; + } + const reports = new Map(); + function checkRangeElements(range) { + if (range.min.value === range.max.value) { + reports.set(range, { + message: `${format_1.mentionCharElement(range)} contains only a single value.`, + replacement: range.min.raw === "-" ? "\\-" : range.min.raw, + }); + } + if (range.min.value + 1 === range.max.value) { + const min = range.min.raw === "-" ? "\\-" : range.min.raw; + const max = range.max.raw === "-" ? "\\-" : range.max.raw; + reports.set(range, { + message: `${format_1.mentionCharElement(range)} contains only its two ends.`, + replacement: min + max, + }); + } + } + for (const element of elements) { + if (element.type === "CharacterClassRange") { + checkRangeElements(element); + } + } + const empty = char_util_1.emptyCharSet(flags); + const elementChars = elements.map(e => char_util_1.toCharSet([e], flags)); + const order = ["Character", "CharacterClassRange", "CharacterSet"]; + for (const currentType of order) { + for (let i = elements.length - 1; i >= 0; i--) { + const current = elements[i]; + if (current.type !== currentType) { + continue; + } + const currentChars = elementChars[i]; + const totalWithCurrent = empty.union(...elementChars.filter((_, index) => index !== i)); + if (totalWithCurrent.isSupersetOf(currentChars)) { + elementChars[i] = empty; + let simpleSuper = undefined; + for (let k = 0; k < elements.length; k++) { + if (elementChars[k].isSupersetOf(currentChars)) { + simpleSuper = elements[k]; + break; + } + } + if (simpleSuper === undefined) { + reports.set(current, { + message: `${format_1.mentionCharElement(current)} is already included by some combination of other elements.`, + replacement: "", + }); + } + else { + reports.set(current, { + message: `${format_1.mentionCharElement(current)} is already included by ${format_1.mentionCharElement(simpleSuper)}.`, + replacement: "", + }); + } + } + } + } + for (const [element, { message, replacement }] of reports) { + if (replacement) { + context.report(Object.assign({ message }, replaceElement(element, replacement, { + dependsOnFlags: true, + }))); + } + else { + context.report(Object.assign({ message }, removeElement(element, { + dependsOnFlags: true, + }))); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js new file mode 100644 index 0000000..393c9a6 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js @@ -0,0 +1,302 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const format_1 = require("../format"); +const ast_util_1 = require("../ast-util"); +const util_1 = require("../util"); +const char_util_1 = require("../char-util"); +function toCharacterClassElement(element) { + if (element.type === "CharacterSet") { + if (element.kind === "any") { + return null; + } + else { + return [element]; + } + } + else if (element.type === "CharacterClass") { + if (!element.negate) { + return [...element.elements]; + } + if (element.elements.length === 1 && element.elements[0].type === "CharacterSet") { + const set = element.elements[0]; + if (set.kind === "property") { + const p = set.raw.substr(0, 2); + const raw = (set.negate ? p.toLowerCase() : p.toUpperCase()) + set.raw.substr(2); + return [ + { + type: "CharacterSet", + kind: set.kind, + key: set.key, + value: set.value, + negate: !set.negate, + raw, + }, + ]; + } + else { + const raw = set.negate ? set.raw.toLowerCase() : set.raw.toUpperCase(); + return [ + { + type: "CharacterSet", + kind: set.kind, + negate: !set.negate, + raw, + }, + ]; + } + } + return null; + } + else if (element.type === "Character") { + return [element]; + } + else { + return null; + } +} +function categorizeAlternatives(alternatives, flags) { + return alternatives.map(alternative => { + if (alternative.elements.length === 1) { + const elements = toCharacterClassElement(alternative.elements[0]); + if (elements) { + return { + isCharacter: true, + alternative, + elements, + char: char_util_1.toCharSet(elements, flags), + }; + } + } + return { + isCharacter: false, + alternative, + }; + }); +} +function containsCharacterClass(alts) { + for (const alt of alts) { + if (alt.isCharacter && alt.alternative.elements.length === 1) { + const e = alt.alternative.elements[0]; + if (e.type === "CharacterClass") { + return true; + } + } + } + return false; +} +function combineElements(alternatives) { + const elements = []; + for (const a of alternatives) { + if (a.isCharacter) { + elements.push(...a.elements); + } + } + return elements; +} +function toGenericAlts(alternatives, flags) { + const result = []; + for (const a of alternatives) { + if (a.isCharacter) { + result.push({ + isCharacter: true, + elements: a.elements, + char: a.char, + raw: a.alternative.raw, + }); + } + else { + result.push({ + isCharacter: false, + firstChar: ast_util_1.getFirstCharConsumedBy(a.alternative, ast_util_1.matchingDirection(a.alternative), flags), + raw: a.alternative.raw, + }); + } + } + return result; +} +function optimizeCharacterAlternatives(alternatives, flags, reorder) { + function merge(a, b) { + const elements = [...a.elements, ...b.elements]; + return { + isCharacter: true, + char: a.char.union(b.char), + elements, + raw: ast_util_1.elementsToCharacterClass(elements), + }; + } + function mergeRuns() { + for (let i = 1; i < alternatives.length; i++) { + const prev = alternatives[i - 1]; + const curr = alternatives[i]; + if (prev.isCharacter && curr.isCharacter) { + alternatives[i - 1] = merge(prev, curr); + alternatives.splice(i, 1); + i--; + } + } + } + function mergeWithReorder() { + for (let i = 0; i < alternatives.length - 1; i++) { + let curr = alternatives[i]; + if (!curr.isCharacter) { + continue; + } + let nonCharTotal = undefined; + for (let j = i + 1; j < alternatives.length; j++) { + const far = alternatives[j]; + if (far.isCharacter) { + if (nonCharTotal === undefined || far.char.isDisjointWith(nonCharTotal)) { + curr = merge(curr, far); + alternatives.splice(j, 1); + j--; + } + else { + break; + } + } + else { + if (!far.firstChar.empty) { + if (nonCharTotal === undefined) { + nonCharTotal = far.firstChar.char; + } + else { + nonCharTotal = nonCharTotal.union(far.firstChar.char); + } + if (nonCharTotal.isAll) { + break; + } + } + else { + break; + } + } + } + alternatives[i] = curr; + } + } + if (reorder) { + mergeWithReorder(); + } + else { + mergeRuns(); + } +} +function findNonDisjointAlt(alternatives) { + let total = undefined; + for (const a of alternatives) { + if (a.isCharacter) { + if (total === undefined) { + total = a.char; + } + else { + if (!total.isDisjointWith(a.char)) { + return a; + } + total = total.union(a.char); + } + } + } + return null; +} +function totalIsAll(alternatives) { + let total = undefined; + for (const a of alternatives) { + if (a.isCharacter) { + if (total === undefined) { + total = a.char; + } + else { + total = total.union(a.char); + } + } + } + return total !== undefined && total.isAll; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Prefer character classes wherever possible instead of alternations.", + url: rules_util_1.getDocUrl("prefer-character-class"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElement, reportElements }) => { + function process(node) { + if (!("alternatives" in node)) { + return; + } + if (node.alternatives.length < 2) { + return; + } + const alts = categorizeAlternatives(node.alternatives, flags); + const characterAlternativesCount = alts.filter(a => a.isCharacter).length; + if (characterAlternativesCount < 2) { + return; + } + if (alts.every(a => a.isCharacter)) { + if (alts.length >= 3 || + findNonDisjointAlt(alts) || + totalIsAll(alts) || + containsCharacterClass(alts)) { + const [prefix, suffix] = node.type === "Group" ? ["", ""] : ast_util_1.getParentPrefixAndSuffix(node); + const replacement = prefix + ast_util_1.elementsToCharacterClass(combineElements(alts)) + suffix; + context.report(Object.assign({ message: `This can be replaced with ${format_1.mention(replacement)}.` }, replaceElement(node, replacement, { + dependsOnFlags: true, + }))); + } + return; + } + const nonDisjointAlt = findNonDisjointAlt(alts); + if (nonDisjointAlt || + characterAlternativesCount >= 3 || + totalIsAll(alts) || + containsCharacterClass(alts)) { + const genericAlts = toGenericAlts(alts, flags); + optimizeCharacterAlternatives(genericAlts, flags, true); + const [prefix, suffix] = ast_util_1.getParentPrefixAndSuffix(node); + const newRaw = prefix + genericAlts.map(a => a.raw).join("|") + suffix; + if (newRaw !== node.raw) { + const firstChanged = util_1.findIndex(genericAlts, (a, i) => a.raw !== node.alternatives[i].raw); + const lastChanged = util_1.findLastIndex(genericAlts, (a, i) => a.raw !== node.alternatives[node.alternatives.length + i - genericAlts.length].raw); + const changedNodes = [ + node.alternatives[firstChanged], + node.alternatives[node.alternatives.length + lastChanged - genericAlts.length], + ]; + const displayRaw = firstChanged === 0 && lastChanged === genericAlts.length - 1 + ? newRaw + : genericAlts + .slice(firstChanged, lastChanged + 1) + .map(a => a.raw) + .join("|"); + context.report(Object.assign(Object.assign({ message: `This can be replaced with ${format_1.mention(displayRaw)}.` }, replaceElement(node, newRaw, { + dependsOnFlags: true, + })), reportElements(changedNodes))); + return; + } + } + if (nonDisjointAlt) { + let expMessage; + if (ast_util_1.underAStar(node)) { + expMessage = "\nThis ambiguity is very likely to cause exponential backtracking."; + } + else { + expMessage = ""; + } + context.report(Object.assign({ message: `The set of characters accepted by ${format_1.mention(nonDisjointAlt.alternative)} is not disjoint with the set of characters accepted by previous alternatives.` + + " Try to remove this ambiguity." + + expMessage }, reportElement(nonDisjointAlt.alternative))); + return; + } + } + visitAST({ + onAssertionEnter: process, + onCapturingGroupEnter: process, + onGroupEnter: process, + onPatternEnter: process, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js new file mode 100644 index 0000000..c8e7ff1 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js @@ -0,0 +1,113 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const char_util_1 = require("../char-util"); +function getCharacters(lookaround) { + if (lookaround.alternatives.length === 1) { + const alt = lookaround.alternatives[0]; + if (alt.elements.length === 1) { + const first = alt.elements[0]; + if (first.type === "CharacterSet" || first.type === "CharacterClass") { + return first; + } + } + } + return null; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Prefer predefined assertions over equivalent lookarounds.", + url: rules_util_1.getDocUrl("prefer-predefined-assertion"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement }) => { + const isWord = (chars) => chars.isSubsetOf(char_util_1.wordCharSet(flags)); + const isNonWord = (chars) => chars.isDisjointWith(char_util_1.wordCharSet(flags)); + function replaceWordAssertion(node, wordNegated) { + const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); + const dependsOn = []; + let lookaroundNegated = node.negate; + if (wordNegated) { + const after = ast_util_1.getFirstCharAfter(node, direction, flags); + dependsOn.push(...after.elements); + const hasNextCharacter = !after.char.edge; + if (hasNextCharacter) { + lookaroundNegated = !lookaroundNegated; + } + else { + return; + } + } + const before = ast_util_1.getFirstCharAfter(node, ast_util_1.invertMatchingDirection(direction), flags); + dependsOn.push(...before.elements); + if (before.char.edge) { + return; + } + let otherNegated; + if (isWord(before.char.char)) { + otherNegated = false; + } + else if (isNonWord(before.char.char)) { + otherNegated = true; + } + else { + return; + } + if (lookaroundNegated === otherNegated) { + context.report(Object.assign({ message: "This assertion can be replaced with a negated word boundary assertion (\\B)." }, replaceElement(node, "\\B", { dependsOn }))); + } + else { + context.report(Object.assign({ message: "This assertion can be replaced with a word boundary assertion (\\b)." }, replaceElement(node, "\\b", { dependsOn }))); + } + } + function replaceAllAssertion(node, multiline = false) { + if (!node.negate) { + return; + } + if (flags.multiline === multiline) { + const replacement = node.kind === "lookahead" ? "$" : "^"; + context.report(Object.assign({ message: `This assertion can be replaced with ${replacement}.` }, replaceElement(node, replacement, { dependsOnFlags: true }))); + } + } + visitAST({ + onAssertionEnter(node) { + if (node.kind !== "lookahead" && node.kind !== "lookbehind") { + return; + } + const chars = getCharacters(node); + if (chars === null) { + return; + } + if (chars.type === "CharacterSet") { + if (chars.kind === "word") { + replaceWordAssertion(node, chars.negate); + } + else if (chars.kind === "any") { + if (flags.dotAll) { + replaceAllAssertion(node); + } + else { + replaceAllAssertion(node, true); + } + } + else if (chars.kind === "property") { + if (char_util_1.isMatchAll(chars, flags)) { + replaceAllAssertion(node); + } + } + } + else { + if (char_util_1.isMatchAll(chars, flags)) { + replaceAllAssertion(node); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js new file mode 100644 index 0000000..e8893d0 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js @@ -0,0 +1,104 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const refa_1 = require("refa"); +const ast_util_1 = require("../ast-util"); +const char_util_1 = require("../char-util"); +function isDigitRange(node) { + return node.type === "CharacterClassRange" && node.min.value === 0x30 && node.max.value === 0x39; +} +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Prefer predefined character sets instead of their more verbose form.", + url: rules_util_1.getDocUrl("prefer-predefined-character-set"), + }, + fixable: "code", + schema: [ + { + type: "object", + properties: { + allowDigitRange: { + type: "boolean", + }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const options = context.options[0] || {}; + const allowDigitRange = options.allowDigitRange === undefined ? true : !!options.allowDigitRange; + return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElements }) => { + const digitChars = refa_1.JS.createCharSet([{ kind: "digit", negate: false }], flags); + const wordChars = refa_1.JS.createCharSet([{ kind: "word", negate: false }], flags); + const EMPTY = refa_1.JS.createCharSet([], flags); + visitAST({ + onCharacterClassEnter(node) { + const elements = node.elements; + if (elements.some(e => e.type === "CharacterSet" && e.kind === "word" && !e.negate)) { + return; + } + const chars = elements.map(e => char_util_1.toCharSet([e], flags)); + const hits = []; + chars.forEach((c, i) => { + if (wordChars.isSupersetOf(c)) { + hits.push(i); + } + }); + function getCharacterClass(hitReplacement) { + let first = true; + const newElements = []; + elements.forEach((e, i) => { + if (hits.indexOf(i) >= 0) { + if (first) { + newElements.push(hitReplacement); + first = false; + } + } + else { + newElements.push(e); + } + }); + return ast_util_1.elementsToCharacterClass(newElements, node.negate); + } + let union = EMPTY.union(...hits.map(i => chars[i])); + if (union.equals(wordChars)) { + const replacement = getCharacterClass({ + type: "CharacterSet", + kind: "word", + negate: false, + raw: "\\w", + }); + context.report(Object.assign(Object.assign({ message: "Some of the character class elements can be simplified to \\w." }, replaceElement(node, replacement)), reportElements(hits.map(i => elements[i])))); + return; + } + if (elements.some(e => e.type === "CharacterSet" && e.kind === "digit" && !e.negate)) { + return; + } + hits.length = 0; + chars.forEach((c, i) => { + if (digitChars.isSupersetOf(c)) { + hits.push(i); + } + }); + union = EMPTY.union(...hits.map(i => chars[i])); + if (union.equals(digitChars)) { + const isAllowedDigitRange = allowDigitRange && hits.every(i => isDigitRange(elements[i])); + if (!isAllowedDigitRange || hits.length === elements.length) { + const replacement = getCharacterClass({ + type: "CharacterSet", + kind: "digit", + negate: false, + raw: "\\d", + }); + context.report(Object.assign(Object.assign({ message: "Some of the character class elements can be simplified to \\d." }, replaceElement(node, replacement)), reportElements(hits.map(i => elements[i])))); + return; + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js new file mode 100644 index 0000000..2117bb0 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +const predefined = [ + { min: 0, max: Infinity, raw: "*" }, + { min: 1, max: Infinity, raw: "+" }, + { min: 0, max: 1, raw: "?" }, +]; +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Prefer predefined quantifiers (+*?) instead of their more verbose form.", + url: rules_util_1.getDocUrl("prefer-predefined-quantifiers"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, replaceQuantifier }) => { + visitAST({ + onQuantifierEnter(node) { + let currentRaw = ast_util_1.getQuantifierRaw(node); + if (!node.greedy) { + currentRaw = currentRaw.substr(0, currentRaw.length - 1); + } + for (const { min, max, raw } of predefined) { + if (node.min === min && node.max === max && currentRaw !== raw) { + context.report(Object.assign({ message: `Use the predefined quantifier ${raw} instead.` }, replaceQuantifier(node, raw + (node.greedy ? "" : "?")))); + } + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js new file mode 100644 index 0000000..922b570 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +const ast_util_1 = require("../ast-util"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Prefer simple constant quantifiers over the range form.", + url: rules_util_1.getDocUrl("simple-constant-quantifier"), + }, + fixable: "code", + }, + create(context) { + return rules_util_1.createRuleListener(({ visitAST, replaceQuantifier }) => { + visitAST({ + onQuantifierEnter(node) { + if (node.min !== node.max || node.min < 2) { + return; + } + const currentRaw = ast_util_1.getQuantifierRaw(node); + const simpleRaw = ast_util_1.quantToString(node); + if (simpleRaw !== currentRaw) { + context.report(Object.assign({ message: `This constant quantifier can be simplified to "${simpleRaw}".` }, replaceQuantifier(node, simpleRaw))); + } + }, + }); + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js b/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js new file mode 100644 index 0000000..ae186bc --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const rules_util_1 = require("../rules-util"); +exports.default = { + meta: { + type: "suggestion", + docs: { + description: "Requires the regex flags to be sorted.", + url: rules_util_1.getDocUrl("sort-flags"), + }, + fixable: "code", + }, + create(context) { + const order = "gimsuy"; + const compareFn = (a, b) => { + const aIndex = order.indexOf(a); + const bIndex = order.indexOf(b); + if (aIndex === -1) { + throw new Error(`Unknown flag ${a}.`); + } + if (bIndex === -1) { + throw new Error(`Unknown flag ${b}.`); + } + return aIndex - bIndex; + }; + return rules_util_1.createRuleListener(({ flags, replaceFlags, reportFlags }) => { + try { + const sortedFlags = flags.raw.split("").sort(compareFn).join(""); + if (flags.raw !== sortedFlags) { + context.report(Object.assign({ message: `The flags ${flags.raw} should in the order ${sortedFlags}.` }, replaceFlags(sortedFlags))); + } + } + catch (e) { + context.report(Object.assign({ message: e.message }, reportFlags())); + } + }); + }, +}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/util.js b/node_modules/eslint-plugin-clean-regex/dist/util.js new file mode 100644 index 0000000..c480b98 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/dist/util.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.findLastIndex = exports.findIndex = exports.assertNever = void 0; +function assertNever(value) { + throw new Error(`This part of the code should never be reached but ${value} made it through.`); +} +exports.assertNever = assertNever; +function findIndex(arr, condFn) { + return arr.findIndex(condFn); +} +exports.findIndex = findIndex; +function findLastIndex(arr, condFn) { + for (let i = arr.length - 1; i >= 0; i--) { + if (condFn(arr[i], i)) { + return i; + } + } + return -1; +} +exports.findLastIndex = findLastIndex; diff --git a/node_modules/eslint-plugin-clean-regex/package.json b/node_modules/eslint-plugin-clean-regex/package.json new file mode 100644 index 0000000..cddc1e8 --- /dev/null +++ b/node_modules/eslint-plugin-clean-regex/package.json @@ -0,0 +1,67 @@ +{ + "name": "eslint-plugin-clean-regex", + "version": "0.5.1", + "description": "An ESLint plugin for writing better regular expressions.", + "keywords": [ + "eslint", + "eslint-plugin", + "regex", + "regexp" + ], + "author": "Michael Schmidt", + "homepage": "https://github.com/RunDevelopment/eslint-plugin-clean-regex#readme", + "repository": { + "type": "git", + "url": "https://github.com/RunDevelopment/eslint-plugin-clean-regex.git" + }, + "main": "dist/index.js", + "scripts": { + "build": "rimraf dist/** && gulp updateSourceFile && tsc && npm run gen-doc", + "check": "npx eslint --ext .ts lib/** tests/** gulpfile.js && npm run build", + "gen-doc": "gulp doc && npm run format-doc", + "format-doc": "prettier --write --print-width 80 --tab-width 4 --prose-wrap always docs/rules/*.md CONTRIBUTING.md", + "format": "prettier --write lib/** tests/** gulpfile.js", + "prepublishOnly": "npm run check", + "test": "mocha -r ts-node/register 'tests/**/*.ts'" + }, + "dependencies": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + }, + "devDependencies": { + "@types/chai": "^4.2.11", + "@types/eslint": "^6.8.0", + "@types/gulp": "^4.0.6", + "@types/mocha": "^7.0.2", + "@types/node": "^13.13.4", + "@typescript-eslint/eslint-plugin": "^4.1.0", + "@typescript-eslint/parser": "^4.1.0", + "chai": "^4.2.0", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-prettier": "^3.1.4", + "gulp": "^4.0.2", + "husky": "^4.3.0", + "lint-staged": "^10.3.0", + "mocha": "^7.1.2", + "prettier": "^2.0.5", + "rimraf": "^3.0.2", + "ts-node": "^9.0.0", + "typescript": "^3.9.7" + }, + "engines": { + "node": ">=12.0.0" + }, + "license": "MIT", + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.ts": "eslint --cache --fix" + }, + "files": [ + "dist/**/*.js" + ] +} diff --git a/node_modules/refa/CHANGELOG.md b/node_modules/refa/CHANGELOG.md new file mode 100644 index 0000000..dda36bd --- /dev/null +++ b/node_modules/refa/CHANGELOG.md @@ -0,0 +1,213 @@ +# Changelog + +## 0.7.1 (2021-03-09) + +### Fixed + +- Backreferences in ignore-case JS RegExps are now correctly resolved ([#25](https://github.com/RunDevelopment/refa/issues/25)). + + +## 0.7.0 (2021-02-25) + +### Breaking changes + +- `FiniteAutomaton.test` now requires a `ReadonlyArray` instead of an `Iterable`. +- `Words.wordSetToWords` now returns an `Iterable` instead of an `IterableIterator`. +- Removed `toPatternString` function. +- Removed `NFA.FromRegexOptions.disableLookarounds`. Use `NFA.FromRegexOptions.assertions` instead. +- AST format: Quantifier nodes now have a lazy property to enable non-greedy quantifiers. +- `JS.Parser` no longer implements `JS.Literal`. Use the `JS.Parser.literal` property instead. +- `JS.Parser` now resolves backreferences differently. It now supports resolving capturing groups with finite small languages. How small the language is required to be can be controlled via the new `JS.ParseOptions.maxBackreferenceWords` option (defaults to 100 words). `JS.ParseOptions.backreferences` also works differently now. See the `JS.ParseOptions` documentation for more details. +- Some renaming: + - `JS.ParseOptions.lookarounds` -> `JS.ParseOptions.assertions` + - `ToRegexOptions.maximumNodes` -> `ToRegexOptions.maxNodes` + - `ToRegexOptions.maximumOptimizationPasses` -> `ToRegexOptions.maxOptimizationPasses` + +### Fixed + +- `Words.fromStringToUTF16` now works properly. +- `JS.toLiteral` will now properly detect predefined character sets in character classes. This didn't work properly before. + +### Added + +- Documentation. A lot of code documentation and a TypeDoc-generated website have been added. +- New `Char`, `Word`, and `ReadonlyWord` types replace the old plain number and iterable types. +- AST transformers. They can efficiently modify a given AST and are used to e.g. apply assertions. +- `JS.ParseOptions` now has a `maxNodes` option to limit the size of the parsed AST. +- `JS.Parser` now has a `maxCharacter` property. + +### Changed + +- `NFA.test` now implements [Thompson's algorithm](https://swtch.com/~rsc/regexp/regexp1.html) which guarantees efficient execution. +- The `toRegex` methods of the DFA and NFA classes now use AST transformers under the hood to produce smaller ASTs. +- The default value of `ToRegexOptions.maxOptimizationPasses` is now implementation-defined. + + +## 0.6.0 (2020-12-22) + +### Breaking changes + +- `DFA#clone` has been renamed to `DFA#copy` to be compatible with `NFA#copy`. +- The `source` property of RE AST nodes is now optional. This results in the removal/change of several types and functions. The `Simple` type has been removed; use `NoParent` instead. + +### Added + +- `JS.toLiteral` now has a `flags` options to force/disallow certain flags and a `fastCharacters` options for up to 10x better performance. +- `JS.toLiteral` now detects builtin assertions. + +### Changed + +- All DFA and NFA creation methods now have safe defaults and will throw if the FA that is being created is too large. The limit can be controlled using the `maxNodes` option. + + +## 0.5.0 (2020-10-26) + +### Breaking changes + +- Remove `NFA.fromDFA` and `DFA.fromNFA`. Use `{DFA,NFA}.fromFA` instead. +- Renamed `NFA#removeEmptyWord` to `NFA#withoutEmptyWord`. +- All `NFA`/`DFA`-specific interfaces/classes now live in the `NFA`/`DFA` namespace. + +### Added + +- New `FAIterator` interface. +- New options for `#toRegex` functions. +- `NFA#reverse` will reverse the accepted language. +- `CharSet#commonCharacter` can used to return any character two sets have in common. +- New `Words` methods to pick as-readable-as-possible words or characters from a set of words or characters. + +### Changed + +- Unified `DFA`/`NFA` API. This gives `DFA` a lot of functionality that used to be `NFA`-exclusive. +- `JS.toLiteral` will now print smaller character classes. +- New build system. + +### Fixed + +- A few minor bug fixes. + + +## 0.4.1 (2020-08-29) + +### Changed + +- NFA intersection performance optimizations by using lazy data structures. `NFA#disjointWith` is now a lot faster. + +### Fixed + +- Fixed NFA intersection always discarding the empty word. The intersection can now contain the empty word. + + +## 0.4.0 (2020-08-23) + +### Breaking changes + +- Removed `JS.toSource`. Use `JS.toLiteral` instead. + +### Added + +- `NFA#suffixes()` will change the NFA to accepts all suffixes of its language. +- New options for intersection operations. +- Added a method to count the number of nodes in DFA and NFA. +- `DFA#complement()` will make the DFA match the opposite language. +- New options for the DFA creation operation. +- New `ReadonlyDFA` interface. +- New `ReadonlyCharMap` interface. +- `CharSet#compare(CharSet)` will compare two character sets. This can be used to sort character sets. +- Added regex stress test. This will check common operations on all 2.5K regexes of the PrismJS syntax highlighter. + +### Changed + +- The RE produced by the `toRegex` functions is now optimized to be as minimal as possible. +- `JS.toLiteral` will now make efficient use of flags to produce smaller literals. + +### Fixed + +- Fixed and improved `DFA.minimize()`. +- Fixed `CharMap`'s AVL tree implementation. +- Underlying implementation of the `toRegex` functions will now the correct AST and that much faster. +- Fixed `filterMut` in util. +- `toPatternString` now correctly handles quantified empty concatenations. + + +## 0.3.1 (2020-08-09) + +### Fixed + +- The prefix and suffix optimization removed final states from the graph but not from the set of final states. +- The intersection algorithm can now handle final states not reachable from the initial states of either NFAs. + + +## 0.3.0 (2020-07-11) + +### Breaking changes + +- New `JS.Parser` API. +- Removed `MutSimple` interface. + +### Added + +- `CharSet#size` returns the number of characters in the set. +- `NFA#prefixes()` will change the NFA such that it accepts all prefixes of itself. +- New `ReadonlyNFA` interface. +- New `FAIterator` interface as an abstraction over different FA representations. This is now the basis for virtually all FA operations that don't change the underlying data structure. +- New `NoParent` and `NoSource` interface for AST nodes. + +### Changed + +- Better `Flags` interface for JS functions. +- Some minor improvements. + +### Fixed + +- The prefix and suffix optimizations of the NFA construction didn't check the equivalence of states correctly. + + +## 0.2.2 (2020-05-04) + +### Fixed + +- Added a `prepublish` script to actually publish changes. + + +## 0.2.1 (2020-05-04) + +### Fixed + +- Calling `CharSet#isSubsetOf` caused a stack overflow because of infinite recursion. + + +## 0.2.0 (2020-05-03) + +### Breaking changes + +- New `CharSet` API. This renames some of `has*` methods, to instead use names based on set relations. +- `NFA#concat` is now called `append`. +- `NodeList#final` is now called `finals` for both DFA and NFA nodes lists. +- `NFANode#in` and `NFANode#out` are now of type `ReadonlyMap` instead of `Map`. + +### Added + +- New options for `NFA.fromRegex` to disable assertions instead of throwing an error and to simplify quantifiers with a huge maximum. +- New `NFA#prepend` method. +- Added changelog. + +### Changed + +- `CharSet#toString` now uses a simple hexadecimal format. + +### Fixed + +- `NFA#append` modified the given NFA. + + +## 0.1.1 (2020-04-05) + +### Fixed + +- Fixed repository link in `package.json`. + + +## 0.1.0 (2020-04-05) + +Initial release diff --git a/node_modules/refa/LICENSE b/node_modules/refa/LICENSE new file mode 100644 index 0000000..18056b7 --- /dev/null +++ b/node_modules/refa/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Michael Schmidt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/refa/README.md b/node_modules/refa/README.md new file mode 100644 index 0000000..cf24bc4 --- /dev/null +++ b/node_modules/refa/README.md @@ -0,0 +1,296 @@ +# Regular Expressions and Finite Automata (refa) + +[![Actions Status](https://github.com/RunDevelopment/refa/workflows/Node.js%20CI/badge.svg)](https://github.com/RunDevelopment/refa/actions) +[![npm](https://img.shields.io/npm/v/refa)](https://www.npmjs.com/package/refa) + +A library for regular expressions (RE) and finite automata (FA) in the context of [Javascript RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp). + + +## About + +refa is a general library for [DFA](https://en.wikipedia.org/wiki/Deterministic_finite_automaton), [NFA](https://en.wikipedia.org/wiki/Nondeterministic_finite_automaton), and REs of [formal regular languages](https://en.wikipedia.org/wiki/Induction_of_regular_languages). It also includes methods to easily convert from JS RegExp to the internal RE AST and vice versa. + + +## Installation + +Get refa from NPM: + +``` +npm i --save refa +``` + +or + +``` +yarn add refa +``` + + +## Features + +- Conversions + + * RE to NFA (_assertions are not implemented yet_) + * NFA to DFA and DFA to NFA + * NFA to RE and DFA to RE + +- DFA and NFA operations + + * Construction from other FA, the intersection of two FA, or a finite set of words + * Print internal representation in a human-readable form + * Test whether a word is accepted + * Test whether the language of an FA is the empty set/a finite set + * Accept all prefixes of a language + +- DFA specific operations + + * Minimization + * Complement + * Structural equality + +- NFA specific operations + + * Union and Concatenation with other FA + * Quantification + * Reverse + * Accept all suffixes of a language + +- JavaScript RegExp + + * RegExp to RE and RE to RegExp + * All flags are fully supported + * Unicode properties + * Change flags + * Limited support for simple backreferences + +See the [API documentation](https://rundevelopment.github.io/refa/docs/latest/) for a complete list of all currently implemented operations. + +### RE AST format + +refa uses its own AST format to represent regular expressions. The RE AST format is language agnostic and relatively simple. + +It supports: + +- Concatenation (e.g. `ab`) +- Alternation (e.g. `a|b`) +- Quantifiers (greedy and lazy) (e.g. `a{4,6}`, `a{2,}?`, `a?`, `a*`) +- Assertions (e.g. `(?=a)`, `(? false +console.log(nfa.test(Words.fromStringToUTF16("123"))); +// => true +console.log(nfa.test(Words.fromStringToUTF16("abc123"))); +// => true +console.log(nfa.test(Words.fromStringToUTF16("123abc"))); +// => false +``` + +### Finding the intersection of two JS RegExps + +```ts +const regex1 = /a+B+c+/i; +const regex2 = /Ab*C\d?/; + +const intersection = NFA.fromIntersection(toNFA(regex1), toNFA(regex2)); + +console.log(toRegExp(intersection)); +// => /Ab+C/ +``` + +### Finding the complement of a JS RegExp + +```ts +const regex = /a+b*/i; + +const dfa = toDFA(regex); +dfa.complement(); + +console.log(toRegExp(dfa)); +// => /(?:(?:[^A]|A+(?:[^AB]|B+[^B]))[^]*)?/i +``` + +### Converting a JS RegExp to an NFA + +In the above examples, we have been using the `toNFA` helper function to parse and convert RegExps. This function assumes that the given RegExp is a pure regular expression without assertions and backreferences and will throw an error if the assumption is not met. + +However, the JS parser and `NFA.fromRegex` provide some options to work around and even solve this problem. + +#### Backreferences + +Firstly, the parser will automatically resolve simple backreferences. Even `toNFA` will do this since it's on by default: + +```ts +console.log(toRegExp(toNFA(/("|').*?\1/))); +// => /".*"|'.*'/i +``` + +But it will throw an error for non-trivial backreferences that cannot be resolved: + +```ts +toNFA(/(#+).*\1|foo/); +// Error: Backreferences are not supported. +``` + +The only way to parse the RegExp despite unresolvable backreferences is to remove the backreferences. This means that the result will be imperfect but it might still be useful. + +```ts +const regex = /(#+).*\1|foo/; +const { expression } = + JS.Parser.fromLiteral(regex).parse({ backreferences: "disable" }); + +console.log(JS.toLiteral(expression)); +// => { source: 'foo', flags: '' } +``` + +Note that the `foo` alternative is kept because it is completely unaffected by the unresolvable backreferences. + +#### Assertions + +While the parser and AST format can handle assertions, the NFA construction cannot. + +```ts +const regex = /\b(?!\d)\w+\b|->/; +const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); + +console.log(JS.toLiteral(expression)); +// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } + +NFA.fromRegex(expression, { maxCharacter }); +// Error: Assertions are not supported yet. +``` + +Similarly to backreferences, we can let the parser remove them: + +```ts +const regex = /\b(?!\d)\w+\b|->/; +const { expression, maxCharacter } = + JS.Parser.fromLiteral(regex).parse({ assertions: "disable" }); + +console.log(JS.toLiteral(expression)); +// => { source: '->', flags: 'i' } + +const nfa = NFA.fromRegex(expression, { maxCharacter }); +console.log(toRegExp(nfa)); +// => /->/i +``` + +
+ +Or we can let the NFA construction method remove them: + +```ts +const regex = /\b(?!\d)\w+\b|->/; +const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); + +console.log(JS.toLiteral(expression)); +// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } + +const nfa = NFA.fromRegex(expression, { maxCharacter }, { assertions: "disable" }); +console.log(toRegExp(nfa)); +// => /->/i +``` + +Prefer using the parser to remove assertions if possible. The parser is quite clever and will optimize based on that assertions can be removed resulting in faster parse times. + +
+ +However, simply removing assertions is not ideal since they are a lot more common than backreferences. To work around this, refa has AST transformers. AST transformers can make changes to a given AST. While each transformer is rather simple, they can also work together to accomplish more complex tasks. Applying and removing assertions is one such task. + +The details about the transformers used in this example can be found in their documentation. + +```ts +import { combineTransformers, JS, NFA, transform, Transformers } from "refa"; + +const regex = /\b(?!\d)\w+\b|->/; +const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); + +console.log(JS.toLiteral(expression)); +// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } + +const applyTransformer = combineTransformers([ + Transformers.inline(), + Transformers.removeDeadBranches(), + Transformers.removeUnnecessaryAssertions(), + Transformers.sortAssertions(), + Transformers.applyAssertions(), + Transformers.removeUnnecessaryAssertions(), +]); +const modifiedExpression = transform(applyTransformer, expression); + +console.log(JS.toLiteral(modifiedExpression)); +// => { source: '(?', flags: 'i' } + +// Most assertions have been removed but the patterns are still equivalent. +// The only assertions left assert characters beyond the edge of the pattern. +// Removing those assertions is easy but slightly changes the pattern. + +const finalExpression = transform( + Transformers.patternEdgeAssertions({ remove: true }), + modifiedExpression +); + +console.log(JS.toLiteral(finalExpression)); +// => { source: '[A-Z_]\\w*|->', flags: 'i' } + +const nfa = NFA.fromRegex(finalExpression, { maxCharacter }); + +console.log(JS.toLiteral(nfa.toRegex())); +// => { source: '->|[A-Z_]\\w*', flags: 'i' } +``` + +AST transformers can handle a lot of assertions but there are limitations. Transformers cannot handle assertions that are too complex or require large-scale changes to the AST. diff --git a/node_modules/refa/index.d.ts b/node_modules/refa/index.d.ts new file mode 100644 index 0000000..ad21396 --- /dev/null +++ b/node_modules/refa/index.d.ts @@ -0,0 +1,1524 @@ +import { RegExpParser, AST } from "regexpp"; +/** + * A character is a non-negative integer. + * + * This is one of the core concepts of refa. Instead of operating on JavaScript strings, UTF16 character codes, or + * Unicode code points, this library uses plain numbers instead. This makes refa agnostic to text encodings and even + * text in general since the integers used as character may represent arbitrary concepts. + * + * The only 2 restrictions on the numbers that can be characters: + * + * 1. They have to be non-negative integers. + * 2. They can be at most `Number.MAX_SAFE_INTEGER`. + * + * This type serves as a way to document characters. It is a clear way to signal that a value is not just any number. + */ +export type Char = number & { + __char?: never; +}; +/** + * A word is finite sequence of {@link Char}s. + * + * This one of the core concepts of refa. Instead of operating on JavaScript strings, all functions operate on + * {@link Char}s and char arrays (= words). This means that refa is agnostic to text encodings, the string + * representation of JavaScript, and even text itself. + * + * This type serves as a way to document words. It should _not_ be used interchangeably with `Char[]` or `number[]`. + */ +export type Word = Char[]; +/** + * An immutable finite sequence of {@link Char}s. + * + * This is an immutable view on a {@link Word}. + */ +export type ReadonlyWord = readonly Char[]; +/** + * An immutable interval of {@link Char}s with inclusive ends. + * + * Each interval contains all characters `x` with `min <= x <= max`. + */ +export interface CharRange { + /** + * The inclusive minimum of the interval. + * + * This value has to be less or equal to {@link max}. + */ + readonly min: Char; + /** + * The inclusive maximum of the interval. + * + * This value has to be greater or equal to {@link min}. + */ + readonly max: Char; +} +/** + * An immutable set of {@link Char}s represented as a sorted set of disjoint non-adjacent intervals ({@link CharRange}). + * + * All characters in the set have to be between 0 (inclusive) and the maximum of the set (inclusive). + */ +export class CharSet { + /** + * The greatest character which can be element of the set. + */ + readonly maximum: Char; + /** + * An array of ranges representing this character set. + * + * The array must be guaranteed to have the following properties at all times: + * + * 1. Any two ranges are disjoint. + * 2. Any two ranges are non-adjacent. + * 3. 0 <= `min` <= `max` <= `this.maximum` for all ranges. + * 4. All ranges are sorted by ascending `min`. + */ + readonly ranges: readonly CharRange[]; + /** + * Returns `true` if this set doesn't contain any characters. + */ + get isEmpty(): boolean; + /** + * Returns `true` if all characters in the range from 0 to `this.maximum`, including 0 and `this.maximum`, are in + * the set. + */ + get isAll(): boolean; + /** + * Returns the number of unique characters in the set. + * + * The returned number will be at least `0` and at most `this.maximum + 1`. + */ + get size(): number; + /** + * Returns a string representation of the character set. + */ + toString(): string; + /** + * Returns an empty character set with the given maximum. + * + * @param maximum The greatest character which can be element of the set. + */ + static empty(maximum: Char): CharSet; + /** + * Returns a complete character set with the given maximum. + * + * @param maximum The greatest character which will be element of the set. + */ + static all(maximum: Char): CharSet; + /** + * Returns whether this and the given character set are equivalent. + * + * Two `CharSet`s are equal if and only if: + * + * 1. They have the same maximum. + * 2. They have the same number of char ranges. + * 3. For every `CharRange` in this set, there exists one `CharRange` in the other set with the same minimum and + * maximum. + * + * @param other + */ + equals(other: CharSet): boolean; + /** + * Compares this set with given set and returns an integer value describing their relation. Two equivalent set are + * always guaranteed to return 0. + * + * The order defined by this function is guaranteed to be a + * [total order](https://en.wikipedia.org/wiki/Total_order). Apart from this, no other guarantees are given. + * + * @param other + */ + compare(other: CharSet): number; + /** + * Returns [the complement](https://en.wikipedia.org/wiki/Complement_(set_theory)) of this set. + * + * The returned set will have the same maximum as this set. + */ + negate(): CharSet; + /** + * Returns [the union](https://en.wikipedia.org/wiki/Union_(set_theory)) of this set and all given sets and + * character ranges. + * + * The returned set will have the same maximum as this set. + * + * @param data + * @throws `RangeError` If the maximum of one of the given sets differs from the maximum of this set or if the + * maximum of one of the given ranges is greater than the maximum of this set. + */ + union(...data: (Iterable | CharSet)[]): CharSet; + /** + * Returns [the intersection](https://en.wikipedia.org/wiki/Intersection_(set_theory)) of this set and the given set + * and character ranges. + * + * The returned set will have the same maximum as this set. + * + * @param set + * @throws `RangeError` If the maximum of the given set differs from the maximum of this set or if the maximum of + * one of the given ranges is greater than the maximum of this set. + */ + intersect(set: CharSet): CharSet; + intersect(ranges: Iterable): CharSet; + /** + * Returns a set that contains all characters of this set that are not in the given set. + * + * The returned set will have the same maximum as this set. + * + * @param set + * @throws `RangeError` If the maximum of the given set differs from the maximum of this set or if the maximum of + * one of the given ranges is greater than the maximum of this set. + */ + without(set: CharSet): CharSet; + without(ranges: Iterable): CharSet; + /** + * Returns whether this set contains the given character. + * + * @param character + */ + has(character: Char): boolean; + isSupersetOf(other: CharSet | CharRange): boolean; + isSubsetOf(other: CharSet | CharRange): boolean; + /** + * Returns whether this set and the given set (or range) are disjoint. + * + * @param other + */ + isDisjointWith(other: CharSet | CharRange): boolean; + /** + * Returns any one of the common characters of this set and the given set or range. + * + * If this character set is disjoint with the given character set/range, then `undefined` will be returned. + * + * @param other + */ + commonCharacter(other: CharSet | CharRange): Char | undefined; +} +export interface ReadonlyCharMap extends Iterable<[CharRange, T]> { + isEmpty: boolean; + /** + * Returns whether the given character is a key in the map. + * + * @param char + */ + has(char: Char): boolean; + /** + * Returns whether every character in the given range is a key in the map. + * + * This is equivalent to: `[...chars].every(char => this.has(char))`. + * + * @param chars + */ + hasEvery(chars: CharRange): boolean; + /** + * Returns whether some character in the given range is a key in the map. + * + * This is equivalent to: `[...chars].some(char => this.has(char))`. + * + * @param chars + */ + hasSome(chars: CharRange): boolean; + /** + * Returns the value associated with the given character of `undefined` if the character is not key in the map. + * + * @param char + */ + get(char: Char): T | undefined; + /** + * Invokes the given callback for every item of the character map. + * + * This method is implemented more efficiently than other iterator based methods, so chose `forEach` where every + * possible. + * + * @param callback + */ + forEach(callback: (value: T, chars: CharRange, map: ReadonlyCharMap) => void): void; + keys(): Iterable; + values(): Iterable; + entries(range?: CharRange): Iterable<[CharRange, T]>; +} +/** + * A map from characters to generic values. + * + * The map guarantees that there are no adjacent character ranges that map to the equal values, will always be iterated + * as one character range. The equality of values is given by a custom equal function or JavaScript's strict equality + * operator (`===`). + */ +export class CharMap implements ReadonlyCharMap { + constructor(equalFn?: (a: T, b: T) => boolean); + get isEmpty(): boolean; + has(char: Char): boolean; + hasEvery(chars: CharRange): boolean; + hasSome(chars: CharRange): boolean; + get(char: Char): T | undefined; + set(char: Char, value: T): void; + /** + * Sets the value for all characters in the given range. + * + * This is equivalent to `[...chars].forEach(char => this.set(char, value))`. + * + * @param chars + * @param value + */ + setEvery(chars: CharRange, value: T): void; + delete(char: Char): boolean; + /** + * Deletes all characters in the given range. + * + * This is equivalent to `[...range].forEach(char => this.delete(char))`. + * + * @param range + */ + deleteEvery(range: CharRange): void; + map(mapFn: (value: T, chars: CharRange, map: ReadonlyCharMap) => T): void; + mapRange( + range: CharRange, + mapFn: (value: T | undefined, chars: CharRange, map: ReadonlyCharMap) => T | undefined + ): void; + forEach(callback: (value: T, chars: CharRange, map: ReadonlyCharMap) => void): void; + keys(): IterableIterator; + values(): IterableIterator; + entries(range?: CharRange): IterableIterator<[CharRange, T]>; + [Symbol.iterator](): IterableIterator<[CharRange, T]>; +} +export interface FiniteAutomaton { + /** + * Returns whether this FA accepts the empty language meaning that it doesn't accept any words. + */ + readonly isEmpty: boolean; + /** + * Returns whether the formal language accepted by this FA contains finitely many words. + * + * __Note__: Finite does not mean that all words can be iterated in practice. E.g. the set of all Unicode words with + * 10 or less characters contains 2.6e54 many words and can be accepted by a DFA with only 11 states. + */ + readonly isFinite: boolean; + /** + * The maximum character that is part of the alphabet of the words that this FA can accept. + */ + readonly maxCharacter: Char; + /** + * Returns whether this FA accepts the given word. + * + * @param word The characters of the word to test. + */ + test(word: ReadonlyWord): boolean; + /** + * Returns an iterable that will yield all words accepted by this FA. Words are yielded by ascending length. + * + * If this FA accepts infinitely many words, the iterable will never end. + */ + words(): Iterable; + /** + * Returns an iterable that will yield all word sets accepted by this FA. Word sets are yielded by ascending length. + * + * If you analyse the words of this FA, consider using this method instead of `words` because this method will yield + * at most `O(n^3)` word sets while `words` will yield at most `O(n^3 * m)` words (n = number of states, m = number + * of possible characters). + * + * If this FA accepts infinitely many words, the iterable will never end. + */ + wordSets(): Iterable; + /** + * Returns a string representation of this FA. + */ + toString(): string; + /** + * Returns the AST of a regular expression that accepts the same language as this FA. + * + * @param options + */ + toRegex(options?: Readonly): NoParent; +} +export interface ToRegexOptions { + /** + * The maximum number of RE AST nodes the implementation is allowed to create. + * + * If the implementation has to create more nodes to create the RE, a `TooManyNodesError` will be thrown. This + * maximum will be check before any optimization passes. + * + * @default 10000 + */ + maxNodes?: number; + /** + * The maximum number of optimization passes that will be done after the initial RE AST was created. + * + * The initial AST is usually a lot more complex than necessary. Optimizations are then applied in order to minimize + * the AST until this limit is reached or the AST can be optimized no further. + * + * The default number of passes is implementation defined. + */ + maxOptimizationPasses?: number; +} +/** + * A graph iterator for all states of an FA with final states. + * + * @template S The type of a state in the FA to iterate. + * @template O The type of the value each state maps to. + */ +export interface FAIterator> { + /** + * The initial state of the FA. + */ + readonly initial: S; + /** + * Returns the value a state maps to. + * + * This function is guaranteed to be deterministic during the time the iterator is used. Subsequent invocations will + * always return values that are equal to the first returned value. Equality is defined by + * [the key equality of the Map class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#key_equality). + * This function is also guaranteed to be sufficiently fast, usually `O(1)` can be assumed. + */ + readonly getOut: (state: S) => O; + /** + * Returns whether the given state is a final state. + * + * This function is guaranteed to be deterministic during the time the iterator is used. It is also guaranteed to be + * sufficiently fast, usually `O(1)` can be assumed. + */ + readonly isFinal: (state: S) => boolean; +} +export interface TransitionIterable { + readonly maxCharacter: Char; + readonly transitionIterator: () => FAIterator>; +} +export interface TransitionIterableFA extends FiniteAutomaton, TransitionIterable { + /** + * Returns whether the languages of this and the other FA are disjoint. + * + * The runtime of this algorithm is `O(n * m)` (n = number of states of this NFA, m = number of states of the other + * FA) but it's a lot faster in practice with the worst case being very rare. + * + * Since this uses the intersection operation, you can supply intersection options. + * + * @param other + * @param options + */ + isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; + /** + * This is equivalent to `NFA.fromIntersection(this, other).wordSets()` but implemented more efficiently. + */ + intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; + /** + * This is equivalent to `NFA.fromIntersection(this, other).words()` but implemented more efficiently. + */ + intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; +} +export interface IntersectionOptions { + /** + * The maximum number of nodes the intersection operation is allowed to create before throwing a + * `TooManyNodesError`. + * + * If the maximum number of nodes is unset or set to `Infinity`, the intersection operation may create as many nodes + * as necessary to construct the intersection. This might cause the machine to run out of memory. + * + * @default Infinity + */ + maxNodes?: number; +} +/** + * An error that is thrown when an operation causes too many nodes to be created. + * + * Many FA operation have the potential to create a huge number of nodes (thousands and millions) which may result in + * the JavaScript runtime running out of memory and/or crashing. This error will thrown before that happens to safely + * abort an otherwise resource-intensive operation. + */ +export class TooManyNodesError extends Error {} +export interface SourceLocation { + start: number; + end: number; +} +export interface NodeBase { + type: Node["type"]; + parent: Node["parent"]; + source?: SourceLocation; +} +export type Element = CharacterClass | Alternation | Quantifier | Assertion; +export type Parent = Expression | Alternation | Quantifier | Assertion; +export type Node = Expression | CharacterClass | Alternation | Quantifier | Assertion | Concatenation; +export interface Alternation extends NodeBase { + type: "Alternation"; + parent: Concatenation; + alternatives: Concatenation[]; +} +export interface Assertion extends NodeBase { + type: "Assertion"; + parent: Concatenation; + alternatives: Concatenation[]; + kind: "ahead" | "behind"; + negate: boolean; +} +export interface Quantifier extends NodeBase { + type: "Quantifier"; + parent: Concatenation; + alternatives: Concatenation[]; + lazy: boolean; + min: number; + max: number; +} +export interface CharacterClass extends NodeBase { + type: "CharacterClass"; + parent: Concatenation; + characters: CharSet; +} +export interface Expression extends NodeBase { + type: "Expression"; + parent: null; + alternatives: Concatenation[]; +} +export interface Concatenation extends NodeBase { + type: "Concatenation"; + parent: Parent; + elements: Element[]; +} +type NodeIdent = { + type: Node["type"]; +}; +type NoParentArray = { + [K in keyof T]: NoParent; +}; +type NoParentNode = { + [K in keyof NoParentNodePick]: NoParent[K]>; +}; +type NoParentNodePick = Pick>; +/** + * A view of an AST node that hides the `parent` property. + */ +export type NoParent = T extends NodeIdent ? NoParentNode : T extends unknown[] ? NoParentArray : T; +/** + * Sets the `parent` properties of the given node and all of its child nodes. + * + * @param node + * @param parent The parent of `node`. + */ +export function setParent(node: T | NoParent, parent: T["parent"]): asserts node is T; +/** + * Sets the `source` property of the given node and all of its child nodes. + * + * If `source` is not a function, then the source object will be copied for all `source` properties to be set. The + * object will be copied using the `start` and `end` properties alone, other properties will not be copied. + * + * @param node + * @param source + * @param overwrite + */ +export function setSource( + node: NoParent, + source: SourceLocation | (() => SourceLocation), + overwrite?: boolean +): void; +export interface VisitAstHandler { + onAlternationEnter?(node: Alternation): void; + onAlternationLeave?(node: Alternation): void; + onAssertionEnter?(node: Assertion): void; + onAssertionLeave?(node: Assertion): void; + onCharacterClassEnter?(node: CharacterClass): void; + onCharacterClassLeave?(node: CharacterClass): void; + onConcatenationEnter?(node: Concatenation): void; + onConcatenationLeave?(node: Concatenation): void; + onExpressionEnter?(node: Expression): void; + onExpressionLeave?(node: Expression): void; + onQuantifierEnter?(node: Quantifier): void; + onQuantifierLeave?(node: Quantifier): void; +} +export interface VisitNoParentAstHandler { + onAlternationEnter?(node: NoParent): void; + onAlternationLeave?(node: NoParent): void; + onAssertionEnter?(node: NoParent): void; + onAssertionLeave?(node: NoParent): void; + onCharacterClassEnter?(node: NoParent): void; + onCharacterClassLeave?(node: NoParent): void; + onConcatenationEnter?(node: NoParent): void; + onConcatenationLeave?(node: NoParent): void; + onExpressionEnter?(node: NoParent): void; + onExpressionLeave?(node: NoParent): void; + onQuantifierEnter?(node: NoParent): void; + onQuantifierLeave?(node: NoParent): void; +} +/** + * Calls the given visitor on the given node and all of its children. + * + * If the given visitor throws an error, the traversal will stop and the error will be re-thrown. + * + * @param node + * @param visitor + */ +export function visitAst(node: Node, visitor: VisitAstHandler): void; +export function visitAst(node: NoParent, visitor: VisitNoParentAstHandler): void; +/** + * A transform is some algorithm that takes a AST subtree and makes any number of modifications to the given subtree. + * They cannot see or modify anything outside the given subtree. Transformers are assumed to behave like a set of pure + * functions. + * + * Transformers are always applied bottom-up. + * + * The most simple transformer is an empty object (`{}`). This is equivalent to a no-op transformer that does not change + * the given AST. + */ +export interface Transformer { + onAlternation?(node: NoParent, context: TransformContext): void; + onAssertion?(node: NoParent, context: TransformContext): void; + onCharacterClass?(node: NoParent, context: TransformContext): void; + onConcatenation?(node: NoParent, context: TransformContext): void; + onExpression?(node: NoParent, context: TransformContext): void; + onQuantifier?(node: NoParent, context: TransformContext): void; +} +export interface TransformContext { + /** + * The maximum character of all character sets in the AST. + * + * If the expression to transform does not contain any characters at the start of the transformation, then this + * value will be `0`. + */ + readonly maxCharacter: Char; + /** + * Signals that the transformer changed the AST. + */ + readonly signalMutation: () => void; +} +/** + * Creates a new transformer that performs all given transformers in sequentially in order for each node. + * + * If only one transformer is given, the returned transformer will be functionally equivalent. If no transformers are + * given, the returned transformer will be equivalent to a noop transformer. + * + * The given iterable can be changed and reused after this function returns. + * + * @param transformers + */ +export function combineTransformers(transformers: Iterable): Transformer; +export interface TransformOptions { + /** + * The maximum number of times the transformer will be applied to the AST. + * + * This is only a maximum. The transformer will be stopped before this number is reach if the AST isn't modified + * anymore. + * + * @default 10 + */ + maxPasses?: number; +} +/** + * Transforms the given expression according to the given transformer. + * + * __Do not__ use the given `ast` object again after calling this function, the object will be in an undefined state. + * + * @param transformer + * @param ast + * @param options + */ +export function transform( + transformer: Transformer, + ast: NoParent, + options?: Readonly +): NoParent; +export interface ReadonlyNFA extends TransitionIterableFA { + readonly nodes: NFA.ReadonlyNodeList; + readonly options: Readonly; + stateIterator(): FAIterator; + transitionIterator(): FAIterator>; + /** + * Create a mutable copy of this NFA. + */ + copy(): NFA; +} +/** + * A [nondeterministic finite automaton](https://en.wikipedia.org/wiki/Nondeterministic_finite_automaton). + * + * This class implements epsilon-free NFAs. + */ +export class NFA implements ReadonlyNFA { + readonly nodes: NFA.NodeList; + readonly maxCharacter: Char; + get options(): Readonly; + get isEmpty(): boolean; + get isFinite(): boolean; + stateIterator(): FAIterator; + transitionIterator(): FAIterator>; + copy(): NFA; + test(word: ReadonlyWord): boolean; + wordSets(): Iterable; + words(): Iterable; + toString(): string; + toRegex(options?: Readonly): NoParent; + isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; + intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; + intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; + /** + * Modifies this NFA to accept all words from this NFA and the given FA. + * + * @param other + */ + union(other: TransitionIterable): void; + /** + * Modifies this NFA to accept the concatenation of this NFA and the given FA. + * + * @param other + */ + append(other: TransitionIterable): void; + /** + * Modifies this NFA to accept the concatenation of the given NFA and this FA. + * + * @param other + */ + prepend(other: TransitionIterable): void; + /** + * Modifies this NFA to accept at least `min` and at most `max` concatenations of itself. + * + * Both `min` and `max` both have to be non-negative integers with `min <= max`. + * `max` is also allowed to be `Infinity`. + * + * @param min + * @param max + */ + quantify(min: number, max: number): void; + /** + * Removes the empty word from the accepted languages of this NFA. + */ + withoutEmptyWord(): void; + /** + * Modifies this NFA such that all prefixes of all accepted words are also accepted. + * + * If the language of this NFA is empty, then it will remain empty. + * + * Unreachable states will be removed by this operation. + */ + prefixes(): void; + /** + * Modifies this NFA such that all suffixes of all accepted words are also accepted. + * + * If the language of this NFA is empty, then it will remain empty. + * + * Unreachable states will be removed by this operation. + */ + suffixes(): void; + /** + * Modifies this NFA such that it accepts the reverse of all words it currently accepts. + * + * If the language of this NFA is empty, then it will remain empty. + * + * Unreachable states will be removed by this operation. + */ + reverse(): void; + /** + * Returns a new NFA which is equivalent to the intersection of the two given FA. + * + * @param left + * @param right + * @param options + */ + static fromIntersection( + left: TransitionIterable, + right: TransitionIterable, + options?: Readonly + ): NFA; + /** + * Creates a new NFA which matches no words. The language of the returned NFA is empty. + * + * @param options + */ + static empty(options: Readonly): NFA; + /** + * Creates a new NFA which matches all words. + * + * @param options + */ + static all(options: Readonly): NFA; + static fromRegex( + concat: NoParent, + options: Readonly, + creationOptions?: Readonly + ): NFA; + static fromRegex( + expression: NoParent, + options: Readonly, + creationOptions?: Readonly + ): NFA; + static fromRegex( + alternatives: readonly NoParent[], + options: Readonly, + creationOptions?: Readonly + ): NFA; + /** + * Creates a new NFA which matches all and only all of the given words. + * + * @param words + * @param options + * @param creationOptions + */ + static fromWords( + words: Iterable, + options: Readonly, + creationOptions?: Readonly + ): NFA; + static fromFA(fa: TransitionIterable, creationOptions?: Readonly): NFA; + static fromTransitionIterator( + iter: FAIterator>, + options: Readonly, + creationOptions?: Readonly + ): NFA; +} +/** + * A namespace for NFA-specific classes and interfaces. + * + * @see {@link NFA} (class) + */ +export namespace NFA { + interface ReadonlyNode { + readonly list: ReadonlyNodeList; + readonly out: ReadonlyMap; + readonly in: ReadonlyMap; + } + interface Node extends ReadonlyNode { + readonly list: NodeList; + readonly out: Map; + readonly in: Map; + } + interface ReadonlyNodeList extends Iterable { + readonly initial: ReadonlyNode; + readonly finals: ReadonlySet; + /** + * Returns the number of nodes reachable from the initial state including the initial state. + * + * This may include trap states. This will not include unreachable final states. + * + * This operation has to traverse the whole graph and runs in _O(E + V)_. + */ + count(): number; + } + class NodeList implements ReadonlyNodeList, Iterable { + /** + * The initial state of this list. + * + * The initial state is fixed an cannot be changed or removed. + */ + readonly initial: Node; + /** + * The set of final states of this list. + */ + readonly finals: Set; + constructor(); + /** + * Creates a new node associated with this node list. + */ + createNode(): Node; + /** + * Adds a transition from `from` to `to` using the given non-empty set of characters. + * + * If two nodes are already linked, the character sets will be combined. + * + * @param from + * @param to + * @param characters + */ + linkNodes(from: Node, to: Node, characters: CharSet): void; + /** + * Removes the transition from `from` to `to`. + * + * If there is no transition from `from` to `to`, an error will be thrown. + * + * @param from + * @param to + */ + unlinkNodes(from: Node, to: Node): void; + /** + * All states which cannot be reached from the initial state or cannot reach (or are) a final state, will be + * removed. + */ + removeUnreachable(): void; + count(): number; + [Symbol.iterator](): Iterator; + } + /** + * Options for the constraints on how a NFA will be created. + */ + interface CreationOptions { + /** + * The maximum number of nodes the NFA creation operation is allowed to create before throwing a + * `TooManyNodesError`. + * + * If the maximum number of nodes is set to `Infinity`, the NFA creation operation may create as many nodes as + * necessary to construct the NFA. This might cause the machine to run out of memory. I.e. some REs can only be + * represented with a huge number of states (e.g `/a{123456789}/`). + * + * Note: This limit describes maximum number of __created__ nodes. If nodes are created and subsequently + * discard, they will still count toward the limit. + * + * @default 10000 + */ + maxNodes?: number; + } + interface Options { + /** + * The maximum numerical value any character can have. + * + * This will be the maximum of all underlying {@link CharSet}s. + */ + maxCharacter: Char; + } + interface FromRegexOptions extends CreationOptions { + /** + * How to handle assertions when construction the NFA. + * + * - `"throw"` + * + * This method will throw an error when encountering an assertion. + * + * - `"disable"` + * + * This method will replace any assertion with an empty character class, effectively removing it. + * + * @default "throw" + */ + assertions?: "disable" | "throw"; + /** + * The number at which the maximum of a quantifier will be assumed to be infinity. + * + * Quantifiers with a large finite maximum (e.g. `a{1,10000}`) can create huge NFAs with thousands of states. + * Any Quantifier with a maximum greater or equal to this threshold will be assumed to be infinite. + * + * @default Infinity + */ + infinityThreshold?: number; + } +} +export interface ReadonlyDFA extends TransitionIterableFA { + readonly nodes: DFA.ReadonlyNodeList; + readonly options: Readonly; + stateIterator(): FAIterator; + transitionIterator(): FAIterator>; + /** + * Creates a new DFA equivalent to this one. + */ + copy(): DFA; + /** + * Returns whether this and the given DFA are structurally equal meaning that all nodes and all transitions are + * equal. + * + * @param other + */ + structurallyEqual(other: ReadonlyDFA): boolean; +} +/** + * A [deterministic finite automaton](https://en.wikipedia.org/wiki/Deterministic_finite_automaton). + */ +export class DFA implements ReadonlyDFA { + readonly nodes: DFA.NodeList; + readonly maxCharacter: Char; + get options(): Readonly; + get isEmpty(): boolean; + get isFinite(): boolean; + stateIterator(): FAIterator; + transitionIterator(): FAIterator>; + test(word: ReadonlyWord): boolean; + wordSets(): Iterable; + words(): Iterable; + toString(): string; + toRegex(options?: Readonly): NoParent; + isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; + intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; + intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; + copy(): DFA; + structurallyEqual(other: ReadonlyDFA): boolean; + /** + * [Minimizes](https://en.wikipedia.org/wiki/DFA_minimization) this DFA. + */ + minimize(): void; + /** + * Complements this DFA. + * + * This DFA after calling this function will accept all words that are not accepted by this DFA before calling this + * function. + */ + complement(): void; + /** + * Modifies this DFA such that all prefixes of all accepted words are also accepted. + * + * If the language of this DFA is empty, then it will remain empty. + * + * Unreachable states will be removed by this operation. + */ + prefixes(): void; + /** + * Returns a new DFA which is equivalent to the intersection of the two given FA. + * + * @param left + * @param right + * @param options + */ + static fromIntersection( + left: TransitionIterable, + right: TransitionIterable, + options?: Readonly + ): DFA; + /** + * Creates a new DFA which matches no words. The language of the returned DFA is empty. + * + * @param options + */ + static empty(options: Readonly): DFA; + /** + * Creates a new DFA which matches all words. + * + * @param options + */ + static all(options: Readonly): DFA; + static fromWords( + words: Iterable, + options: Readonly, + creationOptions?: Readonly + ): DFA; + static fromFA(fa: TransitionIterable, creationOptions?: Readonly): DFA; + static fromTransitionIterator( + iter: FAIterator>, + options: Readonly, + creationOptions?: Readonly + ): DFA; +} +/** + * A namespace for DFA-specific classes and interfaces. + * + * @see {@link DFA} (class) + */ +export namespace DFA { + interface ReadonlyNode { + readonly list: ReadonlyNodeList; + readonly out: ReadonlyCharMap; + } + interface Node extends ReadonlyNode { + readonly list: NodeList; + readonly out: CharMap; + } + interface ReadonlyNodeList extends Iterable { + readonly initial: ReadonlyNode; + readonly finals: ReadonlySet; + /** + * Returns the number of nodes reachable from the initial state including the initial state. + * + * This may include trap states. This will not include unreachable final states. + * + * This operation has to traverse the whole graph and runs in _O(E + V)_. + */ + count(): number; + } + class NodeList implements ReadonlyNodeList { + readonly initial: Node; + readonly finals: Set; + constructor(); + createNode(): Node; + linkNodes(from: Node, to: Node, characters: CharSet | CharRange | Char): void; + /** @internal */ + _uncheckedLinkNodesWithCharacter(from: Node, to: Node, character: Char): void; + /** @internal */ + _uncheckedLinkNodesWithCharRange(from: Node, to: Node, characters: CharRange): void; + /** @internal */ + _uncheckedLinkNodesWithCharSet(from: Node, to: Node, characters: CharSet): void; + unlinkNodes(from: Node, to: Node): void; + removeUnreachable(): void; + count(): number; + [Symbol.iterator](): IterableIterator; + } + /** + * Options for the constraints on how a DFA will be created. + */ + interface CreationOptions { + /** + * The maximum number of nodes the DFA creation operation is allowed to create before throwing a + * `TooManyNodesError`. + * + * If the maximum number of nodes is set to `Infinity`, the DFA creation operation may create as many nodes as + * necessary to construct the DFA. This might cause the machine to run out of memory. I.e. the conversion from + * NFA to DFA may create `O(2^n)` many nodes and an intersection may created `O(n * m)` many. + * + * Note: This limit describes the maximum number of __created__ nodes. If nodes are created and subsequently + * discard, they will still count toward the limit. + * + * @default 10000 + */ + maxNodes?: number; + } + interface Options { + /** + * The maximum numerical value any character can have. + * + * This will be the maximum of all underlying {@link CharSet}s. + */ + maxCharacter: Char; + } +} +/** + * Contains all AST transformer implementations of refa. + * + * All transformer factory functions implemented here will optionally take {@link CreationOptions} or a sub-class of it. + * This can be used to control the behavior of the created transformers. + * + * @module + */ +export namespace Transformers { + interface CreationOptions { + /** + * If `true`, transformers are allowed to reorder alternatives and to change/ignore the laziness of quantifiers. + * This may cause the behavior of the regex to change. + * + * @default false + */ + ignoreOrder?: boolean; + /** + * If `true`, transformers are allowed to reduce or increase the ambiguity of the regular expression. + * + * @default false + */ + ignoreAmbiguity?: boolean; + } + /** + * This transformer will apply all trivial assertion (e.g. `/(?!0)\d/` => `/[1-9]/`) and remove all branches in + * assertions that are guaranteed to reject (e.g. `(?=\d+=|-)\w` => `(?=\d+=)\w`). + */ + function applyAssertions(_options?: Readonly): Transformer; + /** + * This will factor out common prefixes and suffixes in parent nodes. + * + * Examples: + * + * - `(?:abc|aba)` => `(?:ab(?:c|a))` + * - `(? `(? `(?:abc(?:||))` + */ + function factorOut(options?: Readonly): Transformer; + /** + * This transformer will simplify the AST by doing trivial inlining operations. + * + * It will: + * + * 1. Inline single-alternative alternations in concatenation (e.g. `a(?:b)c` => `abc`). + * 2. Inline single-alternation concatenations (e.g. `(?:(?:a|b)|c)` => `(?:a|b|c)`). + * 3. Inline constant-one quantifiers (e.g. `ab{1}c` => `abc`). + * 4. Remove constant-zero quantifiers (e.g. `ab{0}c` => `ac`). + * 5. Inline trivially nested assertions (e.g. `(?!(? `(?<=a)`). + * 6. Inline nested assertions at the end of the expression tree (e.g. `(?!a(?=b))` => `(?!ab)`). + * + * --- + * + * This transformer should be used in combination with {@link removeDeadBranches} to handle trivial simplifications. + */ + function inline(_options?: Readonly): Transformer; + /** + * This operation tries to merge as many elements as possible with existing quantifiers. + * + * Examples: + * + * - `/a*a/` => `/a+/` + * - `/a*(?:a+|c)/` => `/a*(?:a|c)/` + */ + function mergeWithQuantifier(options?: Readonly): Transformer; + /** + * This tries to simplify how a given sub-expression accepts the empty string. The goal is to modify the sub-expression + * such that exactly one path accepts the empty string. This has the emergent result that the operator that causes the + * sub-expression to accept the empty string moves closer to the root of the tree. + * + * Examples: + * + * - `a(?:b*|d?)` => `a(?:b+|d)?` + * - `||a*|b` => `(?:a+|b)?` + * + * This operation largely ignores the order of alternatives and usually reduces the ambiguity of the expression. If + * order or ambiguity have to be preserved, then the effectiveness of this transformer will be greatly reduced. + */ + function moveUpEmpty(options?: Readonly): Transformer; + /** + * This merges/optimizes nested quantifiers. + * + * Examples: + * + * - `(?:a+)*` => `a*` + * - `(?:a{2,4})+` => `a{2,}` + * - `(?:a{4}){8}` => `a{32}` + * - `(?:a*|b+c|f+)*` => `(?:a{1}|b+c|f{1})*` + * + * This operation largely ignores the order of alternatives and usually reduces the ambiguity of the expression. If + * order or ambiguity have to be preserved, then the effectiveness of this transformer will be greatly reduced. + */ + function nestedQuantifiers(options?: Readonly): Transformer; + interface PatternEdgeAssertionsCreationOptions extends CreationOptions { + /** + * @default true + */ + inline?: boolean; + /** + * @default false + */ + remove?: boolean; + } + /** + * This transformer will only touch assertion that assert characters beyond the edge of the pattern. + * + * E.g. in `/(? `/(? `/(?!\d)\w+\s* `a(?!\d)\w`, which + * may prevent some removal. Some assertions will not be removed because another may be inlined later. E.g. the `(?!\d)` + * in `(?=\w)a?(?!\d)` will not be removed because the pattern may be transformed to `(?:a|(?=\w))(?!\d)` => + * `a(?!\d)|(?=\w)(?!\d)` which can be inlined to `a(?!\d)|(?!\d)\w` and transformed to `a(?!\d)|[A-Z_a-z]`. + * + * If neither inlining nor removal are active, then this transformer won't do anything. + */ + function patternEdgeAssertions(options?: Readonly): Transformer; + /** + * This removes dead branches in the AST. + * + * Dead branches are parts of the regex that can never accept on any given input string (e.g. `[]a|b` => `b`). + * + * This operation may produce parent nodes with 0 alternatives. Quantifiers with 0 alternatives and a minimum of 0 will + * be replaced with the empty concatenation (e.g. `a(?:[]b)?c` => `ac`). + * + * --- + * + * This transformer should be used in combination with {@link inline} to handle trivial simplifications. + */ + function removeDeadBranches(_options?: Readonly): Transformer; + /** + * This will remove all assertions that are known to always reject/accept no matter the input string. + */ + function removeUnnecessaryAssertions(_options?: Readonly): Transformer; + interface RemoveAssertionsCreationOptions extends CreationOptions { + /** + * @default "empty-set" + */ + replacement?: "empty-set" | "empty-word"; + } + /** + * This transformer will all assertions with either the empty set or the empty word. + */ + function replaceAssertions(options?: Readonly): Transformer; + /** + * Sorts adjacent assertions such that lookbehinds are always to the right of lookaheads. + * + * This is operation may be necessary for other transformers to pick up on certain patterns. + * + * E.g. `(?=a)(?!b)(? `(?): Transformer; + /** + * Combines single-character alternatives. + * + * This rule will try to combine as many character classes as possible to simplify the regular expression. + * + * E.g. `a|b|c` => `[abc]`. + */ + function unionCharacters(options?: Readonly): Transformer; +} +/** + * Classes and functions to convert JavaScript RegExp to refa AST and vise versa. + * + * All classes and functions in this module/namespace are specific to JavaScript regular expressions as defined by the + * ECMAScript standard. + * + * @see {@link Parser}: A class to convert from JS RegExp to refa AST. + * @see {@link toLiteral}: A function to convert from refa AST to JS RegExp. + * + * @module + */ +export namespace JS { + type BoundaryAssertion = WordBoundaryAssertion | TextBoundaryAssertion; + interface WordBoundaryAssertion { + kind: "word"; + negate: boolean; + } + interface TextBoundaryAssertion { + kind: "end" | "start"; + } + function createAssertion(assertion: Readonly, flags: Readonly): NoParent; + type PredefinedCharacterSet = + | AnyCharacterSet + | DigitCharacterSet + | PropertyCharacterSet + | SpaceCharacterSet + | WordCharacterSet; + interface AnyCharacterSet { + kind: "any"; + } + interface DigitCharacterSet { + kind: "digit"; + negate: boolean; + } + interface PropertyCharacterSet { + kind: "property"; + key: string; + value: string | null; + negate: boolean; + } + interface SpaceCharacterSet { + kind: "space"; + negate: boolean; + } + interface WordCharacterSet { + kind: "word"; + negate: boolean; + } + /** + * Creates a new character set with the characters equivalent to a JavaScript regular expression character set. + * + * @param chars The characters in the set. + * @param flags The flags of the pattern. + */ + function createCharSet( + chars: Iterable>, + flags: Readonly + ): CharSet; + interface ToLiteralOptions { + /** + * An optional template for the flags of the JavaScript RegExp literal to be created. + * + * All flags that are set to `false` are guaranteed to be disabled in the created literal. Likewise, all flags that + * are set to `true` are guaranteed to be enabled in the created literal. + * + * Flags that are `undefined` will be enabled/disabled depending on the implementation. While no guarantees are + * given, the implementation will generally try to choose flags such that it can create literal that is as + * small/simple as possible. + * + * If the constraints on flags defined here make it impossible to create a literal, an error will be thrown. + */ + flags?: Flags; + /** + * This will force the function to print characters as fast as possible. + * + * Literals created with this option will usually be created about 10x faster but the result will usually be very + * hard to read. The is option is intended to provide performance benefits when readability is not a concern. + * + * @default false + */ + fastCharacters?: boolean; + } + /** + * Converts the given AST or AST subtree into a JS literal. + * + * The returned literal will be a literal representation of the given AST. However, assertions maybe converted to + * builtin JS RegExp assertions (e.g `\b`, `$`) instead of using the literal lookahead/lookbehind form. + */ + function toLiteral(concat: NoParent, options?: Readonly): Literal; + function toLiteral(expression: NoParent, options?: Readonly): Literal; + function toLiteral(alternatives: readonly NoParent[], options?: Readonly): Literal; + /** + * A partial set of RegExp flags. + */ + interface Flags { + /** @default false */ + dotAll?: boolean; + /** @default false */ + global?: boolean; + /** @default false */ + ignoreCase?: boolean; + /** @default false */ + multiline?: boolean; + /** @default false */ + sticky?: boolean; + /** @default false */ + unicode?: boolean; + } + /** + * A light-weight representation of a + * [JavaScript RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) object. + * + * This interface only requires the `source` and `flags` properties of a RegExp object. + */ + interface Literal { + readonly source: string; + readonly flags: string; + } + interface ParseOptions { + /** + * The maximum number of words a backreference can be replaced by. + * + * Set this to 0 to disable resolving backreferences. + * + * @default 100 + */ + maxBackreferenceWords?: number; + /** + * How to the parser will handle unresolved backreferences. + * + * - `"disable"` + * + * The parser will replace all backreferences with an empty character class. This will cause all paths containing + * a backreference to be (effectively) removed. + * + * E.g. `(a*)(\1|b)` will be parsed as `(a*)([]|b)` which is equivalent to `a*b`. + * + * - `"throw"` + * + * The parser will throw an error when encountering a backreference that cannot be removed. + * + * E.g. `(a*)b\1` will throw but `(a*)[^\s\S]\1` will not because the backreference will be removed anyway because + * of the empty character class. + * + * Backreferences that have been resolved are not affected by this option. + * + * @default "throw" + */ + backreferences?: "disable" | "throw"; + /** + * How the parser will handle assertions. + * + * - `"parse"` + * + * The parser will translate every assertion literally to an equivalent RE AST representation. Builtin assertions + * (e.g. `\b`, `$`) will be transformed into equivalent assertions. + * + * - `"disable"` + * + * The parser will disable all assertion by replacing them with an empty character class. This will cause all + * paths containing a assertion to be (effectively) removed. + * + * - `"throw"` + * + * The parser will throw an error when encountering a assertion that cannot be removed. + * + * E.g. `a\B` will throw but `a([]\b)(\b){0}` will not because none of the `\b`s can be reached. + * + * @default "parse" + */ + assertions?: "parse" | "disable" | "throw"; + /** + * By default, the parser will try to optimize the generated RE as much as possible. + * + * If set to `true`, all trivial optimizations will be disabled. This includes: + * + * - Removing alternatives where all paths go through an empty character class. + * - Removing constant 0 and constant 1 quantifiers. + * - Inlining single-alternative groups. + * + * These optimization might prevent that certain backreferences or assertions from throwing an error. + * + * @default false + */ + disableOptimizations?: boolean; + /** + * The maximum number of nodes the parser is allowed to create. + * + * If the regexes requires more nodes, a {@link TooManyNodesError} will be thrown. + * + * @default 10000 + */ + maxNodes?: number; + } + interface RegexppAst { + readonly pattern: AST.Pattern; + readonly flags: AST.Flags; + } + type ParsableElement = AST.Group | AST.CapturingGroup | AST.Pattern | AST.Alternative; + interface ParseResult { + expression: Expression; + maxCharacter: Char; + } + /** + * Converts JS RegExp to refa's RE AST format. + */ + class Parser { + /** + * The literal of the parser instance. + */ + readonly literal: Literal; + /** + * The parsed AST of the literal this parser works on. + * + * While not explicitly typed that way, the parser will assume that the AST is readonly and makes optimizations + * based on that assumption. It is not safe to change the AST in any way. + */ + readonly ast: RegexppAst; + /** + * The maximum character of all character sets in the parsed AST. + * + * This value will also be returned as part of the {@link ParseResult}. + */ + readonly maxCharacter: Char; + /** + * Creates a new parser from the given literal. + * + * This function will throw a `SyntaxError` if the given literal is not a valid RegExp literal according to the + * given RegExp parser options. + * + * @param literal + * @param parserOptions + */ + static fromLiteral(literal: Literal, parserOptions?: RegExpParser.Options): Parser; + /** + * Creates a new parser from the given [regexpp](https://github.com/mysticatea/regexpp) AST. + * + * When the JS RegExp has already been parsed using regexpp, this method can be used to avoid parsing the regex + * again. + * + * The given AST is not allowed to be changed during the lifetime of the returned parser. + * + * @param ast + */ + static fromAst(ast: RegexppAst): Parser; + /** + * Parsed the entire literal. + */ + parse(options?: Readonly): ParseResult; + /** + * Parses a specific element of the literal. + */ + parseElement(element: ParsableElement, options?: Readonly): ParseResult; + } +} +export namespace Words { + /** + * Converts the given array of UTF16 character codes into a string. + * + * All numbers in the given array must be between 0 (inclusive) and 65535 = 0xFFFF (inclusive). + * + * @param word + */ + function fromUTF16ToString(word: ReadonlyWord): string; + /** + * Converts the given array of Unicode code points into a string. + * + * All numbers in the given array must be between 0 (inclusive) and 1114111 = 0x10FFFF (inclusive). + * + * @param word + */ + function fromUnicodeToString(word: ReadonlyWord): string; + /** + * Converts the given string into an array of UTF16 character codes. + * + * All numbers in the returned array are guaranteed to be between 0 (inclusive) and 65535 = 0xFFFF (inclusive). + * + * @param string + */ + function fromStringToUTF16(string: string): Word; + /** + * Converts the given string into an array of Unicode code points. + * + * All numbers in the returned array are guaranteed to be between 0 (inclusive) and 1114111 = 0x10FFFF (inclusive). + * + * @param string + */ + function fromStringToUnicode(string: string): Word; + /** + * Iterates all words which can be constructed from the given word set (array of character sets). + * + * @param wordSet + */ + function wordSetToWords(wordSet: readonly CharSet[]): Iterable; + /** + * Returns the most humanly readable character in the given character set. Which character is picked is entirely + * implementation-defined but, generally, word characters will be picked over non-word characters and printable + * characters will be picked over non-printable characters. + * + * If the given character set is empty, `undefined` will be returned. + * + * @param set + */ + function pickMostReadableCharacter(set: CharSet): Char | undefined; + /** + * Returns a word of the given word set that is the most humanly readable. + * + * If at least one of the given character sets is empty, `undefined` will be returned. + * + * @param wordSet + */ + function pickMostReadableWord(wordSet: Iterable): Word | undefined; +} diff --git a/node_modules/refa/index.js b/node_modules/refa/index.js new file mode 100644 index 0000000..990e976 --- /dev/null +++ b/node_modules/refa/index.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var m=require("regexpp");const n=new Map,a=new Map;class i{constructor(m,n){this.maximum=m,this.ranges=n}get isEmpty(){return 0===this.ranges.length}get isAll(){return 1===this.ranges.length&&0===this.ranges[0].min&&this.ranges[0].max===this.maximum}get size(){let m=0;for(let n=0,a=this.ranges.length;nm.max||m.max>this.maximum)throw new RangeError(`min=${m.min} has to be >= 0 and <= max.`);if(m.max>this.maximum)throw new RangeError(`max=${m.max} has to be <= maximum=${this.maximum}.`);return m}equals(m){if(m===this)return!0;if(!(m instanceof i))return!1;if(this.maximum!==m.maximum)return!1;if(this.ranges.length!==m.ranges.length)return!1;for(let n=0,a=this.ranges.length;n0&&a.push({min:0,max:i.min-1});for(let n=1;nm.min-n.min)),e(x),new i(this.maximum,a)}intersect(m){let n;m instanceof i?(this._checkCompatibility(m),n=m):n=i.empty(this.maximum).union(m);const a=function(m,n){const a=[];let i=0,x=0,e=m[i],t=n[x];for(;e&&t;)e.maxt.max?(e={min:t.max+1,max:e.max},t=n[++x]):e=m[++i];for(;e;e=m[++i])a.push(e);return a}(this.ranges,n.ranges);return 0===a.length?i.empty(this.maximum):new i(this.maximum,a)}has(m){return x(this.ranges,{min:m,max:m})}isSupersetOf(m){if(!(m instanceof i))return x(this.ranges,m);const n=this.ranges,a=m.ranges;let e=0,t=0,r=n[e],s=a[t];for(;r&&s;)if(r.min<=s.min&&r.max>=s.max)s=a[++t];else{if(!(r.maxm[a-1].max)return;let e=0,t=a;for(;e>1),a=m[n],r=a.min;if(r==i)return i;if(rm[a-1].max)return!1;if(1==a)return!0;let e=0,t=a;for(;e>1),a=m[n],r=a.min;if(r==i)return x<=a.max;if(r=x.max?n++:x.min<=i.max+1?(m[a-n]={min:i.min,max:x.max},n++):m[a-n+1]=x}n&&(m.length=m.length-n)}function t(m){const{min:n,max:a}=m;if(n>a)throw new RangeError(`min has to be less or equal to max. (min=${n}, max=${a})`);if(!Number.isInteger(n)||n<0)throw new TypeError(`min has to be a non-negative integer. (min=${n})`);if(!Number.isInteger(a)||a<0)throw new TypeError(`max has to be a non-negative integer. (max=${a})`)}function r(m,n){return m===n}class s{constructor(m){this._tree=new g(m||r)}get isEmpty(){return null===this._tree.root}has(m){return!!Number.isFinite(m)&&null!==this._tree.nodeOf(m)}hasEvery(m){t(m);const{min:n,max:a}=m,i=this._tree.nodeOf(n),x=this._tree.nodeOf(a);if(null===i||null===x)return!1;let e=i;for(;e!==x;){const m=o(e);if(e.key.max+1!==m.key.min)return!1;e=m}return!0}hasSome(m){return t(m),null!==this._tree.nodeInRange(m)}get(m){if(!Number.isFinite(m))return;const n=this._tree.nodeOf(m);return n?n.value:void 0}set(m,n){!function(m){if(!Number.isInteger(m)||m<0)throw new TypeError(`The given character has to be a non-negative integer. (char=${m})`)}(m),this._tree.deleteCharacter(m),this._tree.insert({min:m,max:m},n)}setEvery(m,n){t(m),this._tree.deleteRange(m),this._tree.insert(m,n)}delete(m){if(!Number.isFinite(m))return!1;return this._tree.deleteCharacter(m)}deleteEvery(m){t(m),this._tree.deleteRange(m)}map(m){this._tree.map(((n,a)=>m(a,n,this)))}mapRange(m,n){this._tree.mapWithGaps(m,((m,a)=>n(a,m,this)))}forEach(m){const n=a=>{a&&(n(a.left),m(a.value,a.key,this),n(a.right))};n(this._tree.root)}*keys(){for(const[m]of this.entries())yield m}*values(){for(const[,m]of this.entries())yield m}*entries(m){if(m){let n=this._tree.leftmostNodeInRange(m);const a=this._tree.rightmostNodeInRange(m);for(;n&&(yield[n.key,n.value],n!==a);)n=o(n)}else{const m=[];for(this._tree.root&&m.push({leftDone:!1,node:this._tree.root});m.length>0;){const{leftDone:n,node:a}=m.pop();if(n||null===a.left){const{key:n,value:i,right:x}=a;yield[n,i],null!==x&&m.push({leftDone:!1,node:x})}else m.push({leftDone:!0,node:a}),m.push({leftDone:!1,node:a.left})}}}[Symbol.iterator](){return this.entries()}}function o(m){if(m.right)return c(m.right);{let n=m.parent;for(;n;){if(n.left===m)return n;if(n.right!==m)throw new Error("Expected the node to be a child of its parent.");m=n,n=n.parent}return null}}function l(m){if(m.left)return function(m){for(;m.right;)m=m.right;return m}(m.left);{let n=m.parent;for(;n;){if(n.right===m)return n;if(n.left!==m)throw new Error("Expected the node to be a child of its parent.");m=n,n=n.parent}return null}}function c(m){for(;m.left;)m=m.left;return m}function u(m,n){if(null===m)return null;const{min:a,max:i}=n;if(m.key.min<=a&&a<=m.key.max)return m;if(m.key.max{if(m){if(m.left&&m.left.parent!==m)throw new Error(n+": Incorrect parent.");if(m.right&&m.right.parent!==m)throw new Error(n+": Incorrect parent.");const i=a(m.left),x=a(m.right);if(Math.abs(i-x)>=2)throw new Error(n+": The tree in unbalanced.");const e=1+Math.max(i,x);if(m.height!==e)throw new Error(n+": Stored height is incorrect.");return e}return 0};a(this.root)}nodeOf(m){let n=this.root;for(;n;){const{min:a,max:i}=n.key;if(mi))return n;n=n.right}}return null}nodeInRange(m){const{min:n,max:a}=m;let i=this.root;for(;i;){const{min:m,max:x}=i.key;if(ax))return i;i=i.right}}return null}leftmostNodeInRange(m){return u(this.root,m)}rightmostNodeInRange(m){return h(this.root,m)}_mergeAdjacentLeft(m,n){if(!p(m,n.key))throw new Error("The ranges are not adjacent");let a=m.min;const i=l(n);if(i){if(i.key.max>=m.min)throw new Error("The inserted key has to be disjoint with all other keys.");p(i.key,m)&&this.equalFn(i.value,n.value)&&(a=i.key.min,this.detachNode(i))}n.key={min:a,max:n.key.max}}_mergeAdjacentRight(m,n){if(!p(m.key,n))throw new Error("The ranges are not adjacent");let a=n.max;const i=o(m);if(i){if(i.key.min<=n.max)throw new Error("The inserted key has to be disjoint with all other keys.");p(n,i.key)&&this.equalFn(m.value,i.value)&&(a=i.key.max,this.detachNode(i))}m.key={min:m.key.min,max:a}}insert(m,n){let a=null,i=this.root;for(;null!==i;)if(a=i,m.max=2){a===m.left?e===m.left.left?N(this,m):e===m.left.right&&(v(this,a),N(this,m)):a===m.right&&(e===m.right.right?v(this,m):e===m.right.left&&(N(this,a),v(this,m)));break}a=a.parent,e=e.parent}}_transplant(m,n){null===m.parent?this.root=n:m===m.parent.left?m.parent.left=n:m.parent.right=n,null!==n&&(n.parent=m.parent)}_avlDeleteFixup(m){let n=m;for(;null!==n;){if(S(n),_(n)<=-2||_(n)>=2){const m=n;let a,i;a=y(m.left)>y(m.right)?m.left:m.right,i=y(a.left)>y(a.right)?a.left:y(a.left)a)return void(i.key={min:a+1,max:i.key.max});if(this.detachNode(i),x===a)return}else{if(i.key={min:i.key.min,max:n-1},x>a)return void this.insert({min:a+1,max:x},i.value);if(x===a)return}if(m===n&&x===a)return void this.detachNode(i)}let x=this.nodeOf(m.max);if(x){const{max:m}=x.key;m>a?x.key={min:a+1,max:x.key.max}:(this.detachNode(x),x=null)}const e=[];let t=this.leftmostNodeInRange(m);for(;t;)e.push(t),t=o(t);e.forEach((m=>this.detachNode(m)))}setNode(m,n){if(this.equalFn(m.value,n))return;m.value=n;const a=l(m);a&&f(a,m)&&this.equalFn(a.value,n)&&(m.key=d(a.key,m.key),this.detachNode(a));const i=l(m);i&&f(m,i)&&this.equalFn(n,i.value)&&(m.key=d(m.key,i.key),this.detachNode(i))}map(m){if(!this.root)return;let n,a=c(this.root);for(a.value=m(a.key,a.value);n=o(a);)n.value=m(n.key,n.value),f(a,n)&&this.equalFn(a.value,n.value)&&(n.key=d(a.key,n.key),this.detachNode(a)),a=n}_applyModifications(m){if(0!==m.length){1===m.length&&this.setNode(m[0][0],m[0][1]),m.sort(((m,n)=>m[0].key.min-n[0].key.min));for(let n=0,a=m.length;n{if(a.minm.max)throw new RangeError("The range of the given gap is not within the mapping range.");const i=n(a,void 0);void 0!==i&&e.push([a,i])},r=a=>{if(a.key.minm.max)throw new RangeError("The range of the given node is not within the mapping range.");const e=n(a.key,a.value);void 0===e?i.push(a):x.push([a,e])},s=this.rightmostNodeInRange(m);m.minm.max?(e.push([{min:m.max+1,max:s.key.max},s.value]),s.key={min:s.key.min,max:m.max},r(s)):r(s),i.forEach((m=>this.detachNode(m))),this._applyModifications(x),e.forEach((([m,n])=>this.insert(m,n)))}}}function y(m){var n;return null!==(n=null==m?void 0:m.height)&&void 0!==n?n:0}function S(m){m.height=1+Math.max(y(m.right),y(m.left))}function _(m){return y(m.left)-y(m.right)}function v(m,n){const a=n.right;n.right=a.left,null!==a.left&&(a.left.parent=n),a.parent=n.parent,null===n.parent?m.root=a:n===n.parent.left?n.parent.left=a:n.parent.right=a,a.left=n,n.parent=a,S(n),S(a)}function N(m,n){const a=n.left;n.left=a.right,null!==a.right&&(a.right.parent=n),a.parent=n.parent,null===n.parent?m.root=a:n===n.parent.right?n.parent.right=a:n.parent.left=a,a.right=n,n.parent=a,S(n),S(a)}class C extends Error{}function O(m){function n(a){let i=n.cache.get(a);return void 0===i&&n.cache.set(a,i=m(a)),i}return n.cache=new Map,n}function k(m,n){let a=0;for(let i=0;i0;){const m=i[i.length-1];-1===m.nextIndex&&(a.add(m.element),m.nextElements=J(n(m.element)));const x=m.nextElements;if(!x)throw new Error("This should not happen.");if(m.nextIndex++,m.nextIndex>=x.length){i.pop();continue}const e=x[m.nextIndex];a.has(e)||i.push({element:e,nextIndex:-1})}}function*L(m,n){const a=new Set;let i=[...m],x=[];for(;i.length>0;){for(const m of i)a.has(m)||(a.add(m),yield m,x.push(...n(m)));[i,x]=[x,i],x.length=0}}function T(m,n){const a=new Set,i=[m];let x;for(;x=i.pop();)a.has(x)||(a.add(x),i.push(...n(x)))}function P(m,n){const a=new Error(n);throw a.data=m,a}function*I(m){for(const n of m)yield*n}function*D(m){for(const n of B(m)){const m=[];for(const a of n)m.push(...a);yield m}}function*R(m){for(const n of B(m))yield[...n]}class G{constructor(m){this._cache=[],this._fullyCached=!1,this._iterator=m[Symbol.iterator]()}static from(m){return m instanceof G?m:new G(m)}[Symbol.iterator](){return this._fullyCached?this._cache[Symbol.iterator]():function*(m){const{_cache:n,_iterator:a}=m;let i=0;for(;!m._fullyCached;)if(im[Symbol.iterator]())),i=[];for(const m of a){const n=m.next();if(n.done)return;i.push(n.value)}if(yield i,0!==a.length)for(;;){for(let m=a.length-1;m>=0;m--){const x=a[m].next();if(!x.done){i[m]=x.value;break}if(0===m)return;{a[m]=n[m][Symbol.iterator]();const x=a[m].next();if(x.done)throw new Error;i[m]=x.value}}yield i}}function W(m,n){F(m,n)}function F(m,n){switch(m.type){case"Concatenation":if(null===n)throw new Error("The parent of a concatenation cannot be null.");switch(n.type){case"Alternation":case"Assertion":case"Expression":case"Quantifier":m.parent=n;break;case"Concatenation":throw new Error("A concatenation cannot be parent of a concatenation.");default:throw P(n)}m.elements.forEach((n=>F(n,m)));break;case"Alternation":case"Assertion":case"CharacterClass":case"Quantifier":if(null===n)throw new Error(`The parent of a(n) ${m.type} cannot be null.`);if("Concatenation"!==n.type)throw new Error(`A(n) ${n.type} cannot be parent of a(n) ${m.type}.`);m.parent=n,"CharacterClass"!==m.type&&m.alternatives.forEach((n=>F(n,m)));break;case"Expression":if(null!==n)throw new Error(`The parent of an expression has to be null and cannot be a(n) ${n.type}.`);m.parent=null,m.alternatives.forEach((n=>F(n,m)));break;default:throw P(m)}}function Q(m,n,a){if("function"!=typeof n){const{start:m,end:a}=n;n=()=>({start:m,end:a})}H(m,n,a)}function H(m,n,a){if(a||!m.source)m.source=n();else{const{start:a,end:i}=m.source;n=()=>({start:a,end:i})}switch(m.type){case"Concatenation":m.elements.forEach((m=>H(m,n,a)));break;case"Alternation":case"Assertion":case"Expression":case"Quantifier":m.alternatives.forEach((m=>H(m,n,a)));break;case"CharacterClass":break;default:throw P(m)}}function j(m,n){const a=n["on"+m.type+"Enter"];switch(a&&a(m),m.type){case"Alternation":case"Assertion":case"Expression":case"Quantifier":for(const a of m.alternatives)j(a,n);break;case"Concatenation":for(const a of m.elements)j(a,n)}const i=n["on"+m.type+"Leave"];i&&i(m)}const z=["onAlternation","onAssertion","onCharacterClass","onConcatenation","onExpression","onQuantifier"];function U(m){var n;const a={};for(const i of m)for(const m of z){const x=i[m];if(x){(a[m]=null!==(n=a[m])&&void 0!==n?n:[]).push(x.bind(i))}}function i(m){const n=a[m];return void 0===n||0===n.length?void 0:1===n.length?n[0]:function(m,a){for(const i of n)i(m,a)}}return{onAlternation:i("onAlternation"),onAssertion:i("onAssertion"),onCharacterClass:i("onCharacterClass"),onConcatenation:i("onConcatenation"),onExpression:i("onExpression"),onQuantifier:i("onQuantifier")}}function K(m,n,a){var i;let x=null!==(i=(a=null!=a?a:{}).maxPasses)&&void 0!==i?i:10;const e={transformer:m,ast:n,maxCharacter:q(n)};for(;x>=1&&$(e);x--);return n}function q(m){try{return j(m,{onCharacterClassEnter(m){throw m.characters.maximum}}),0}catch(m){if("number"==typeof m)return m;throw m}}function $({transformer:m,ast:n,maxCharacter:a}){let i=!1;const x={maxCharacter:a,signalMutation(){i=!0}};function e(n){const a="on"+n.type,i=m[a];i&&i(n,x)}return j(n,{onAlternationLeave:e,onAssertionLeave:e,onCharacterClassLeave:e,onConcatenationLeave:e,onExpressionLeave:e,onQuantifierLeave:e}),i}function V(m){return"number"==typeof m}function X(m){const n=[...(a=m,a instanceof Set?a:new Set(a))].filter((m=>!m.isEmpty)).sort(((m,n)=>m.compare(n))).filter(((m,n,a)=>0===n||!m.equals(a[n-1])));var a;if(0===n.length)return n;if(1===n.length)return n;const x=n[0].maximum,e=[];for(const m of n){if(m.maximum!==x)throw new Error("The maximum of all given sets has to be the same.");e.push(...m.ranges)}if(0===e.length)return[];const t=i.empty(x).union(e),r=new Set;for(let m=0,n=e.length;mm-n)),o=new Map;for(let m=1,a=s.length;m{let i=a.get(m);void 0===i&&a.set(m,i=[]),i.push(n)}));const x=new Map;for(const[m,e]of a)x.set(m,i.empty(n).union(e));return x}function mm(m){m instanceof i&&(m=m.ranges);let n="";for(const{min:a,max:i}of m)""!==n&&(n+=", "),n+=a==i?a.toString(16):a.toString(16)+".."+i.toString(16);return n}function nm(m){return R(m.map(am))}function*am(m){for(const{min:n,max:a}of m.ranges)for(let m=n;m<=a;m++)yield m}function*im(m){for(const n of m)yield*nm(n)}function xm(m,n){const a=m.getOut;return{initial:m.initial,getOut:m=>n(a(m)),isFinal:m.isFinal}}function em(m,n){const a=m.getOut;return{initial:m.initial,getOut:function*(m){for(const i of a(m))yield n(i)},isFinal:m.isFinal}}const tm=Symbol();function rm(m){return m[tm]=!0,m}function sm(m){return function(m){return!0===m[tm]}(m)?m:om(m)}function om(m){const n=new Map,a=m.getOut;return rm({initial:m.initial,getOut:m=>{let i=n.get(m);return void 0===i&&(i=a(m),n.set(m,i)),i},isFinal:m.isFinal})}function lm(m){const{initial:n,getOut:a}=m;return L([n],a)}function cm(m){T(m.initial,m.getOut)}function um(m){const{isFinal:n}=m;for(const a of lm(m))if(n(a))return!0;return!1}function hm(m){const n=[...lm(m=om(xm(m,(m=>[...m]))))],a=n.filter(m.isFinal),i=function(m,n){const a=new Map;for(const n of m)a.set(n,new Set);for(const i of m)for(const m of n(i))a.get(m).add(i);return a}(n,m.getOut),x=new Set(L(a,(m=>i.get(m))));return!function(m){const{initial:n,getOut:a}=m,i=new Set,x=new Set([n]),e=[{element:n,nextIndex:-1}];for(;e.length>0;){const m=e[e.length-1];-1===m.nextIndex&&(x.add(m.element),i.add(m.element),m.nextElements=J(a(m.element)));const n=m.nextElements;if(m.nextIndex++,m.nextIndex>=n.length){x.delete(m.element),e.pop();continue}const t=n[m.nextIndex];if(x.has(t))return!0;i.has(t)||e.push({element:t,nextIndex:-1})}return!1}(function(m,n){const a=m.getOut;return{initial:m.initial,getOut:function*(m){for(const i of a(m))n(i)&&(yield i)},isFinal:m.isFinal}}(m,(m=>x.has(m))))}class fm{constructor(){this.initial=new Map,this.finals=new Set}createNode(){return new Map}linkNodes(m,n,a){const i=m.get(n);void 0===i?m.set(n,a):m.set(n,i.union(a))}}function pm(m,n,a,i){var x;n=sm(n),a=sm(a);const e=null!==(x=null==i?void 0:i.maxNodes)&&void 0!==x?x:1/0,t=dm(),r=dm(),{initial:s,finals:o}=m;n.isFinal(n.initial)&&a.isFinal(a.initial)&&o.add(s);const l=new Map;l.set(s,[n.initial,a.initial]);const c={[`${t(n.initial)};${r(a.initial)}`]:s};let u=0;function h(i,x){const s=t(i)+";"+r(x);let h=c[s];if(void 0===h){if(u>e)throw new C;u++,h=m.createNode(u),c[s]=h,l.set(h,[i,x]),n.isFinal(i)&&a.isFinal(x)&&o.add(h)}return h}const f=function(){const m={},n=new Map;function a(a){let i=n.get(a);if(void 0===i){let x=function(m){let n=65535&m.maximum;return m.ranges.forEach((({min:m,max:a})=>{n=65535&(31*n+m^31*a)})),n}(a);for(;;){const e=m[x];if(void 0===e){m[x]=a,i=n.size;break}if(e.equals(a)){i=n.get(e);break}x=x+1&65535}n.set(a,i)}return i}const i={};return(m,n)=>{const x=a(m),e=a(n);if(x==e)return m;let t;t=x(p(m),m),isFinal:m=>o.has(m)}}function dm(){const m=new Map;return n=>{let a=m.get(n);return void 0===a&&(a=m.size,m.set(n,a)),a}}function gm(m){if(Array.isArray(m))return m.every(gm);switch(m.type){case"Alternation":case"Expression":return gm(m.alternatives);case"Assertion":return!0;case"CharacterClass":return!1;case"Concatenation":return m.elements.every(gm);case"Quantifier":return 0===m.max||gm(m.alternatives);default:P(m)}}function ym(m){if(Array.isArray(m))return m.every(ym);switch(m.type){case"Alternation":case"Expression":return ym(m.alternatives);case"Assertion":return _m(m);case"CharacterClass":return!1;case"Concatenation":return m.elements.every(ym);case"Quantifier":return 0===m.max||ym(m.alternatives);default:P(m)}}function Sm(m){if(Array.isArray(m))return m.some(Sm);switch(m.type){case"Alternation":case"Expression":return Sm(m.alternatives);case"Assertion":return _m(m);case"CharacterClass":return!1;case"Concatenation":return m.elements.every(Sm);case"Quantifier":return 0===m.min||Sm(m.alternatives);default:P(m)}}function _m(m){return m.negate?0===m.alternatives.length:Sm(m.alternatives)}function vm(m,n,a){if(n(m))return!0;if(a&&!a(m))return!1;switch(m.type){case"Alternation":case"Expression":case"Assertion":case"Quantifier":return m.alternatives.some((m=>vm(m,n,a)));case"Concatenation":return m.elements.some((m=>vm(m,n,a)))}return!1}function Nm(m,n){return new Cm([...m,n])}class Cm{constructor(m){if(this.stack=m,"Expression"!==m[0].type)throw new Error("Invalid stack")}get node(){return this.stack[this.stack.length-1]}toParentPath(){return this.stack.pop(),0===this.stack.length?null:this}toChildPath(m){return this.stack.push(m),this}}const Om={min:0,max:0},km={min:1,max:1};function wm(m){if(Array.isArray(m)){let n=1/0,a=0;for(const i of m){const m=wm(i);m&&(n=Math.min(n,m.min),a=Math.max(a,m.max))}return n>a?void 0:{min:n,max:a}}switch(m.type){case"Alternation":case"Expression":return wm(m.alternatives);case"Assertion":return Om;case"CharacterClass":return m.characters.isEmpty?void 0:km;case"Concatenation":{let n=0,a=0;for(const i of m.elements){const m=wm(i);if(!m)return;n+=m.min,a+=m.max}return{min:n,max:a}}case"Quantifier":{if(0===m.max)return Om;const n=wm(m.alternatives);return n?0===n.max?Om:{min:n.min*m.min,max:n.max*m.max}:0===m.min?Om:void 0}default:throw P(m)}}const Jm={min:0,max:0,assertMax:0},bm={min:1,max:1,assertMax:1};function Am(m,n){if(Array.isArray(m)){let a=1/0,i=0,x=0;for(const e of m){const m=Am(e,n);m&&(a=Math.min(a,m.min),i=Math.max(i,m.max),x=Math.max(x,m.assertMax))}return a>i?void 0:{min:a,max:i,assertMax:x}}switch(m.type){case"Alternation":case"Expression":return Am(m.alternatives,n);case"Assertion":return m.kind===n?Am(m.alternatives,n):Jm;case"CharacterClass":return m.characters.isEmpty?void 0:bm;case"Concatenation":{let a=0,i=0,x=0;for(const e of m.elements){const m=Am(e,n);if(!m)return;x=Math.max(x,i+m.assertMax),a+=m.min,i+=m.max}return{min:a,max:i,assertMax:x}}case"Quantifier":{if(0===m.max)return Jm;const a=Am(m.alternatives,n);if(!a)return 0===m.min?Jm:void 0;if(0===a.max)return Jm;const i=a.max*m.max;return{min:a.min*m.min,max:i,assertMax:i+a.assertMax===1/0?1/0:i+a.assertMax-a.max}}default:throw P(m)}}function Em(m){return"ltr"===m||"ahead"===m?"ltr":"rtl"}function Mm(m){return"ltr"===m||"ahead"===m?"rtl":"ltr"}function Lm(m,n,a){if(Array.isArray(m))return Dm(m.map((m=>Lm(m,n,a))),a);switch(m.type){case"Alternation":case"Expression":return Lm(m.alternatives,n,a);case"Assertion":if(Em(m.kind)===n){if(m.negate){if(vm(m,(n=>n!==m&&"Assertion"===n.type)))return x();const t=Lm(m.alternatives,n,a),r=wm(m.alternatives);return t.empty||!r?{char:i.empty(a),empty:!1,exact:!0}:t.exact&&1===r.max?e({char:t.char.negate(),edge:!0,exact:!0}):x()}return e(Gm(Lm(m.alternatives,n,a)))}return x();case"CharacterClass":return{char:m.characters,empty:!1,exact:!0};case"Concatenation":{let i=m.elements;return"rtl"===n&&(i=[...i],i.reverse()),Rm(function*(){for(const m of i)yield Lm(m,n,a)}(),a)}case"Quantifier":{if(0===m.max)return e();const i=Lm(m.alternatives,n,a);return 0===m.min?Dm([e(),i],a):i}default:throw P(m)}function x(){return e({char:i.all(a),edge:!0,exact:!1})}function e(m){return Pm(a,m)}}function Tm(m){return{char:i.all(m),edge:!0,exact:!0}}function Pm(m,n){return{char:i.empty(m),empty:!0,exact:!0,look:null!=n?n:Tm(m)}}class Im{constructor(m){this.char=i.empty(m),this.exact=!0}add(m,n){!this.exact||n||this.char.isSupersetOf(m)?!this.exact&&n&&m.isSupersetOf(this.char)&&(this.exact=!0):this.exact=!1,this.char=this.char.union(m)}}function Dm(m,n){const a=new Im(n),i=[];for(const n of m)a.add(n.char,n.exact),n.empty&&i.push(n.look);if(i.length>0){const m=new Im(n);let x=!1;for(const n of i)m.add(n.char,n.exact),x=x||n.edge;return{char:a.char,exact:a.exact,empty:!0,look:{char:m.char,exact:m.exact,edge:x}}}return{char:a.char,exact:a.exact,empty:!1}}function Rm(m,n){const a=new Im(n);let i=Tm(n);for(const n of m){if(a.add(n.char.intersect(i.char),i.exact&&n.exact),!n.empty)return{char:a.char,exact:a.exact,empty:!1};{const m=i.char.intersect(n.look.char);i={char:m,exact:i.exact&&n.look.exact||m.isEmpty,edge:i.edge&&n.look.edge}}}return{char:a.char,exact:a.exact,empty:!0,look:i}}function Gm(m){if(m.empty){const n=new Im(m.char.maximum);return n.add(m.char,m.exact),n.add(m.look.char,m.look.exact),{char:n.char,exact:n.exact,edge:m.look.edge}}return{char:m.char,exact:m.exact,edge:!1}}function Bm(m,n,a,i,x){function e(m,n,a){var x,e,r,s,o,l,c,u,h,f;const p=n=null!==(e=null===(x=i.enter)||void 0===x?void 0:x.call(i,m,n,a))&&void 0!==e?e:n;if(null===(s=null===(r=i.continueInto)||void 0===r?void 0:r.call(i,m,n,a))||void 0===s||s)switch(m.type){case"Alternation":n=i.join(m.alternatives.map((m=>t(m,i.fork(n,a),a))),a);break;case"Assertion":{const x=Em(m.kind),e=i.join(m.alternatives.map((m=>t(m,i.fork(n,a),x))),x);n=null!==(l=null===(o=i.endPath)||void 0===o?void 0:o.call(i,n,x,"assertion"))&&void 0!==l?l:n,n=null!==(u=null===(c=i.assert)||void 0===c?void 0:c.call(i,n,a,e,x))&&void 0!==u?u:n;break}case"Quantifier":if(0===m.max);else{const x=m.alternatives.map((m=>t(m,i.fork(n,a),a)));0===m.min&&x.push(n),n=i.join(x,a)}}return n=null!==(f=null===(h=i.leave)||void 0===h?void 0:h.call(i,m,n,p,a))&&void 0!==f?f:n}function t(m,n,a){var x,t;let r="ltr"===a?0:m.elements.length-1;const s="ltr"===a?1:-1;let o;for(;o=m.elements[r];r+=s){n=e(o,n,a);if(!(null===(t=null===(x=i.continueAfter)||void 0===x?void 0:x.call(i,o,n,a))||void 0===t||t))break}return n}return"enter"===n&&(a=e(m.node,a,x)),function(m,n,a){var x,t;function r(m){var x,e;const t=m.node;if(!(null===(e=null===(x=i.continueAfter)||void 0===x?void 0:x.call(i,t,n,a))||void 0===e||e))return!1;const s=m.toParentPath(),o=s.node,l=o.elements.indexOf(t)+("ltr"===a?1:-1),c=o.elements[l];if(c)return s.toChildPath(c);{const m=s.toParentPath(),n=m.node;if("Expression"===n.type)return"expression";if("Assertion"===n.type)return"assertion";if("Alternation"===n.type)return r(m);if("Quantifier"===n.type)return n.max<=1?r(m):[n,r(m)];throw P(n)}}for(;;){let s=r(m);for(;Array.isArray(s);){const[m,x]=s;n=i.join([n,e(m,i.fork(n,a),a)],a),s=x}if(!1===s)return n;if("assertion"===s||"expression"===s)return n=null!==(t=null===(x=i.endPath)||void 0===x?void 0:x.call(i,n,a,s))&&void 0!==t?t:n;n=e(s.node,n,a),m=s}}(m,a,x)}function Wm(m,n,a){return Gm(function(m,n,a){return Bm(m,"next",Pm(a),{fork:m=>m,join:m=>Dm(m,a),enter:(m,n,i)=>Rm([n,Lm(m,i,a)],a),continueInto:()=>!1,continueAfter:(m,n)=>n.empty},n)}(m,n,a))}function Fm(m,n){if(Array.isArray(m))return!!Array.isArray(n)&&Qm(m,n);if(Array.isArray(n))return!1;if(m.type!==n.type)return!1;switch(m.type){case"Alternation":case"Expression":{const a=n;return Qm(m.alternatives,a.alternatives)}case"Assertion":{const a=n;return m.kind===a.kind&&m.negate===a.negate&&Qm(m.alternatives,a.alternatives)}case"CharacterClass":{const a=n;return m.characters.equals(a.characters)}case"Concatenation":{const a=n,i=m.elements.length;if(i!==a.elements.length)return!1;for(let n=0;nzm(m)))};case"Assertion":return{type:"Assertion",kind:n.kind,negate:n.negate,source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};case"CharacterClass":return{type:"CharacterClass",source:jm(n.source),characters:n.characters};case"Concatenation":return{type:"Concatenation",source:jm(n.source),elements:n.elements.map((m=>zm(m)))};case"Expression":return{type:"Expression",source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};case"Quantifier":return{type:"Quantifier",lazy:n.lazy,min:n.min,max:n.max,source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};default:P(n)}}(m)}function Um(m,n){return n<0&&(n+=m.length),m[n]}function Km(m,n){return nn!==m&&"Assertion"===n.type))){const a=wm(m.alternatives);if(a&&1===a.max&&s.exact&&n.isSubsetOf(s.char))return r}}}return 2;case"Alternation":return mn(m,n,a,i,x)&&(e=!0),0===m.alternatives.length?0:2;case"CharacterClass":return m.characters.isDisjointWith(n)?0:2;case"Quantifier":if(0===m.max)return 1;if(1===m.max)return mn(m,n,a,i,x)&&(e=!0),0===m.alternatives.length?0===m.min?1:0:2;{const a=Lm(m.alternatives,i,x);return!a.empty&&a.char.isDisjointWith(n)?0===m.min?1:0:2}default:P(m)}}return k(m.alternatives,(m=>{const n="ltr"===i?1:-1;for(let a="ltr"===i?0:-1;Km(m.elements,a);a+=n){const i=Um(m.elements,a),x=t(i);if(1===x)e=!0,m.elements.splice(a,1),a-=n;else{if(0===x)return e=!0,!1;if("Assertion"===i.type);else{if("Alternation"!==i.type&&("Quantifier"!==i.type||1!==i.min||1!==i.max)||1!==i.alternatives.length)return!0;e=!0,m.elements.splice(a,1,...i.alternatives[0].elements),a-=n}}}return!0})),e}function nn(m,n){return"rtl"===m&&n.reverse(),n}function an(m,n,a){"ltr"===m?n.push(a):n.unshift(a)}function xn(m,n,a){"ltr"===m?n.unshift(a):n.push(a)}function en(m,n,a){const i=Em(m.kind);if(mn(m,n.characters,!1,i,a.maxCharacter)&&a.signalMutation(),m.negate){if(1===m.alternatives.length&&1===m.alternatives[0].elements.length){const i=m.alternatives[0].elements[0];if("CharacterClass"===i.type)return n.characters=n.characters.without(i.characters),m.alternatives=[],a.signalMutation(),!0}return!1}if(1!==m.alternatives.length)return!1;{const{elements:x}=m.alternatives[0];if(0===x.length)return!1;const e=qm(i),t=Um(x,e);if("CharacterClass"===t.type){const m=t.characters.intersect(n.characters);if(m.isEmpty)throw new Error("Rejecting branch wasn't removed properly.");return a.signalMutation(),n.characters=m,x.splice(e,1),!0}return!1}}function tn(m){return"CharacterClass"===m.type||"Quantifier"===m.type&&m.min>=1&&Xm(m)}function rn(m,n,a){for(let i=n;Km(m,i);i+=a){const n=Um(m,i);if(tn(n))return n;if(!gm(n))break}}function sn(m){if("CharacterClass"===m.type)return m;{const n=m.alternatives[0].elements[0];return{type:"CharacterClass",characters:n.characters,source:jm(n.source)}}}function on(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let t=x;Km(m,t);t+=e){const x=Um(m,t);if("Assertion"!==x.type||x.kind!==n)continue;const r=rn(m,t+e,e);if(void 0===r)continue;const s=sn(r);if(en(x,s,a)){a.signalMutation(),m.splice(t,1),t-=e;const n=[s];_m(x)||an(i,n,x),"Quantifier"===r.type&&(r.min--,r.max--,an(i,n,r)),m.splice(m.indexOf(r),1,...n)}}}function ln(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);function t(n){for(let a=n;Km(m,a);a+=e){const n=Um(m,a);if(!gm(n)){if("Quantifier"===n.type||"Alternation"===n.type)return n;break}}}for(let r=x;Km(m,r);r+=e){const x=Um(m,r);if("Assertion"!==x.type||x.kind!==n)continue;if(x.negate&&!Xm(x))continue;const s=t(r+e);if(void 0===s)continue;const o=Lm(x.alternatives,i,a.maxCharacter);if(o.empty)continue;const l=x.negate?o.char.negate():o.char,c=x.negate;if("Quantifier"===s.type&&0===s.min){const n=Lm(s.alternatives,i,a.maxCharacter);if(!n.empty&&n.char.isDisjointWith(l)){a.signalMutation(),m.splice(m.indexOf(s),1);continue}}("Alternation"===s.type||"Quantifier"===s.type&&1===s.max)&&mn(s,l,c,i,a.maxCharacter)&&a.signalMutation()}}function cn(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let o=x+e;Km(m,o);o+=e){const x=o-e,l=Um(m,x);if("Assertion"!==l.type||l.kind!==n||!Xm(l))continue;const c=l.alternatives[0].elements[0].characters,u=l.negate?c.negate():c,h=o,f=Um(m,h);if("Quantifier"!==f.type||!(0===f.min&&f.max>0)||!Xm(f))continue;const p=f.alternatives[0].elements[0].characters;a.signalMutation(),f.max-=1,t=m,r=x,s={type:"Alternation",alternatives:[{type:"Concatenation",elements:nn(i,[{type:"CharacterClass",characters:p.intersect(u)},f])},{type:"Concatenation",elements:[l]}]},r<0&&(r+=t.length),t[r]=s,m.splice(h,1)}var t,r,s}function un(m,n,a){var i;if(m.length<2)return;const x=Em(n),e=qm(x),t=Vm(x);for(let s=e+t;Km(m,s);s+=t){const e=Um(m,s-t);if("Alternation"!==e.type)continue;const o=s,l=Um(m,o);let c;if(!tn(l))continue;c=l;const u="CharacterClass"===(r=c).type?r.characters:r.alternatives[0].elements[0].characters,h=new Map;if(k(e.alternatives,(m=>{const i=$m(x),e=Um(m.elements,i);if(e&&"Assertion"===e.type&&e.kind===n&&Xm(e)){const n=e.alternatives[0].elements[0].characters,x=e.negate?n.negate():n;return x.isDisjointWith(u)?(a.signalMutation(),!1):u.isSubsetOf(x)?(a.signalMutation(),m.elements.splice(i,1),!0):(a.signalMutation(),m.elements.splice(i,1),h.set(m,x.intersect(u)),!0)}return!0})),h.size>0){a.signalMutation();for(const m of e.alternatives)an(x,m.elements,{type:"CharacterClass",characters:null!==(i=h.get(m))&&void 0!==i?i:u});"CharacterClass"===c.type?m.splice(o,1):(c.min--,c.max--)}}var r}function hn(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let t=x+e;Km(m,t);t+=e){const r=t-e,s=Um(m,r);if("Assertion"!==s.type||s.kind!==n||!Xm(s))continue;const o=Um(m,t);if("Alternation"!==o.type)continue;const l=s.alternatives[0].elements[0].characters,c=s.negate?l.negate():l,u=[];let h=!1;if(k(o.alternatives,(m=>{const n=Lm(m,i,a.maxCharacter);if(!n.empty){if(n.char.isDisjointWith(c))return a.signalMutation(),!1;if(n.char.isSubsetOf(c))return!0}return m.elements.length>0&&tn(Um(m.elements,x))&&(h=!0),u.push(m),!0})),u.length>0&&(u.length0)return{char:m.char,constant:a,star:i}}}function dn(m,n,a){const i="ltr"===a?0:m.elements.length-1,x=m.elements[i];if("CharacterClass"===x.type){if(n.star||1!==n.constant)throw Error("Invalid prefix");m.elements.splice(i,1)}else if("Quantifier"===x.type){if(n.constant>x.min||n.star&&x.max!==1/0)throw Error("Invalid prefix");x.min-=n.constant,n.star?x.max=x.min:x.max-=n.constant,0===x.max?m.elements.splice(i,1):1===x.min&&1===x.max&&(m.elements[i]=x.alternatives[0].elements[0])}}function gn(m,n,a){const i=function(m,n,a){if(0===m.length)return;let i=fn(m[0],n,a);for(let x=1;x0||i.star)){let a;!function(m,n,a){for(const i of m)dn(i,n,a)}(m.alternatives,i,n),a=i.star||1!==i.constant?{type:"Quantifier",lazy:!1,min:i.constant,max:i.star?1/0:i.constant,alternatives:[{type:"Concatenation",elements:[{type:"CharacterClass",characters:i.char}]}]}:{type:"CharacterClass",characters:i.char};const x={type:"Alternation",alternatives:m.alternatives},e="ltr"===n?[a,x]:[x,a];return m.alternatives=[{type:"Concatenation",source:jm(m.source),elements:e}],!0}return!1}function yn(m){const{ignoreOrder:n=!1}=null!=m?m:{};function a(m,{signalMutation:a}){if(m.alternatives.length<2)return;const{prefix:i,suffix:x}=function(m){let n=0,a=0;const i=w(m.alternatives,(m=>m.elements.length)).elements;for(let a=0;aFm(x,m.elements[a]))))break;n++}for(let x=0;xFm(n,m.elements[m.elements.length-1-x]))))break;a++}return{prefix:i.slice(0,n),suffix:i.slice(i.length-a,i.length)}}(m);if(i.length>0||x.length>0){a();const n=m.alternatives;for(const m of n)m.elements.splice(0,i.length),m.elements.splice(m.elements.length-x.length,x.length);m.alternatives=[{type:"Concatenation",elements:[...i,{type:"Alternation",alternatives:n,source:jm(m.source)},...x],source:jm(m.source)}]}else{const i=!n;gn(m,"ltr",i)&&a(),gn(m,"rtl",i)&&a()}}return{onAlternation:a,onAssertion:a,onExpression:a,onQuantifier:a}}function Sn(m,{signalMutation:n}){for(let a=0;a!n||"Quantifier"!==n.type||!Hm(n,m)||(n.min++,n.max++,x.signalMutation(),!1))),n)for(let n=1;n{if(i&&"Quantifier"===i.type&&"Quantifier"===m.type){const x=i.min===i.max,e=m.min===m.max;if(!n&&!x&&!e)return!0;if(!a&&!(x||e||i.lazy===m.lazy||!i.lazy&&i.max===1/0||!m.lazy&&m.max===1/0))return!0;if(Fm(i.alternatives,m.alternatives))return i.min+=m.min,i.max+=m.max,t(),!1}return!0}))}}}function kn(m,{signalMutation:n}){if(m.alternatives.length<2)return;let a=!1,i=!0;k(m.alternatives,(m=>{if(ym(m))return n(),a=!0,!1;if(1===m.elements.length){const i=m.elements[0];if("Quantifier"===i.type&&0===i.min&&i.max>0)return n(),a=!0,i.min=1,1===i.max&&1===i.alternatives.length&&(m.elements=i.alternatives[0].elements),!0}return Sm(m)&&(i=!1),!0})),a&&i&&function(m,n){if(0===m.length)return void m.push({type:"Concatenation",elements:[],source:jm(n)});if(1===m.length&&1===m[0].elements.length){const n=m[0].elements[0];if("Quantifier"===n.type&&1===n.min)return void(n.min=0)}const a=[...m];m.length=0,m.push({type:"Concatenation",elements:[{type:"Quantifier",lazy:!1,min:0,max:1,alternatives:a,source:jm(n)}],source:jm(n)})}(m.alternatives,m.source)}function wn(m){return(null==m?void 0:m.ignoreOrder)&&(null==m?void 0:m.ignoreAmbiguity)?{onAlternation:kn,onAssertion:kn,onExpression:kn,onQuantifier:kn}:{}}function Jn(m,n,a){0!==m.max&&0!==n.max&&(0===n.min&&0===m.min&&(a(),n.min=1),n.max>1&&m.max===1/0&&n.min<=1&&(a(),n.max=1))}function bn(m){if(!(null==m?void 0:m.ignoreAmbiguity))return{};const{ignoreOrder:n}=m;return{onQuantifier(m,{signalMutation:a}){if(0!==m.max)if(1===m.alternatives.length){const i=m.alternatives[0];if(1===i.elements.length){const x=i.elements[0];"Quantifier"===x.type&&(n||m.lazy===x.lazy)&&function(m,n,a){if(0===m.max||0===n.max)return;const i=n.min,x=n.max,e=m.min,t=m.max;(x===1/0&&0===e?i<=1:e===t||x*e+1>=i*(e+1))&&(a(),m.min=i*e,m.max=x*t,m.alternatives=n.alternatives)}(m,x,a)}}else if(n)for(const n of m.alternatives)if(1===n.elements.length){const i=n.elements[0];"Quantifier"===i.type&&Jn(m,i,a)}}}}function An(m){const{kind:n}=m.node,a=!0,i=!1;return Bm(m,"next",0,{fork:m=>m,join(m){let n=1/0;for(const x of m){if(x===a)return a;x===i||(n=Math.min(n,x))}return n===1/0?i:n},enter(m,x){var e;if(x===a||x===i)return x;if("CharacterClass"===m.type)return m.characters.isEmpty?i:x+1;if("Assertion"===m.type&&m.kind===n){const i=Am(m.alternatives,n);if((null!==(e=null==i?void 0:i.assertMax)&&void 0!==e?e:0)>x)return a}return x},leave(m,n,x){if("Quantifier"===m.type&&m.min>1){if(n===a||n===i)return n;if(x===a||x===i||x>n)throw Error();return x+(n-x)*m.min}return n},continueAfter:(m,n)=>n!==a&&n!==i,continueInto:(m,n)=>n!==a&&n!==i&&"Assertion"!==m.type},Mm(n))===a}function En(m,n,a,i){let x=!1;for(const e of m)n.push(e),Mn(e,n,a,i)&&(x=!0),n.pop();return x}function Mn({elements:m},n,a,i){if(0===m.length)return!1;let x=!1;const e="behind"===a?1:-1,t="behind"===a?0:-1;for(let r=t;Km(m,r);r+=e){const t=Um(m,r);if("Assertion"===t.type&&t.kind===a){if(i&&An(Nm(n,t)))return!1;x=!0,m.splice(r,1),r-=e}else if(!gm(t))break}if(Km(m,t)){const e=Um(m,t);("Alternation"===e.type||"Quantifier"===e.type&&1===e.max)&&(n.push(e),En(e.alternatives,n,a,i)&&(x=!0),n.pop())}return x}function Ln(m){switch(m.type){case"Alternation":case"Expression":return m.alternatives.every((m=>Ln(m)));case"Assertion":return!1;case"CharacterClass":return m.characters.isEmpty;case"Concatenation":return 1===m.elements.length&&Ln(m.elements[0]);case"Quantifier":return m.min>0&&m.alternatives.every((m=>Ln(m)));default:P(m)}}function Tn(m,{signalMutation:n}){let a=null;for(let i=0;iLn(m)))&&(0===x.min?(m.elements.splice(i,1),n(),i--):a=x):Ln(x)&&(a=x)}a&&m.elements.length>1&&(m.elements=[a],n())}function Pn(m,{signalMutation:n}){for(let a=0;a!m.elements.some((m=>"Assertion"===m.type))||(n.signalMutation(),!1)))}function Wn(m,n){return m.kind!==n.kind?"ahead"===m.kind?1:-1:0}function Fn(m){const n=!(null==m?void 0:m.ignoreOrder),a=!(null==m?void 0:m.ignoreAmbiguity);function i(m,{signalMutation:i}){const{alternatives:x}=m;if(x.length<2)return;let e=void 0,t=!0;k(x,(m=>{if(1===(x=m).elements.length&&"CharacterClass"===x.elements[0].type){const x=m.elements[0];if(void 0===e||!t&&n)return e=x,!0;if(a){const m=e.characters.intersect(x.characters);return!!x.characters.equals(m)||(i(),e.characters=e.characters.union(x.characters),!m.isEmpty&&(x.characters=m,!0))}return i(),e.characters=e.characters.union(x.characters),!1}return t=!1,!0;var x}))}return{onAlternation:i,onAssertion:i,onExpression:i,onQuantifier:i}}var Qn=Object.freeze({__proto__:null,applyAssertions:function(m){return{onConcatenation(m,n){const a=m.elements;hn(a,"ahead",n),hn(a,"behind",n),on(a,"ahead",n),on(a,"behind",n),ln(a,"ahead",n),ln(a,"behind",n),cn(a,"ahead",n),cn(a,"behind",n),un(a,"ahead",n),un(a,"behind",n)}}},factorOut:yn,inline:Nn,mergeWithQuantifier:On,moveUpEmpty:wn,nestedQuantifiers:bn,patternEdgeAssertions:function(m){var n,a;const i=null===(n=null==m?void 0:m.inline)||void 0===n||n,x=null!==(a=null==m?void 0:m.remove)&&void 0!==a&&a;return i||x?{onExpression(m,n){i&&(Zm(m.alternatives,"ahead")||Zm(m.alternatives,"behind"))&&n.signalMutation(),x&&(En(m.alternatives,[m],"ahead",i)||En(m.alternatives,[m],"behind",i))&&n.signalMutation()}}:{}},removeDeadBranches:function(m){return{onConcatenation:Tn,onAlternation:Pn,onAssertion:Pn,onExpression:Pn,onQuantifier:Pn}},removeUnnecessaryAssertions:function(m){return{onConcatenation(m,n){Dn(m,In,n),Gn(m.elements,"ahead",n),Gn(m.elements,"behind",n)},onExpression(m,n){const a=[];function i(m){a.push(m)}function x(){a.pop()}j(m,{onAlternationEnter:i,onAssertionEnter:i,onConcatenationEnter:i,onExpressionEnter:i,onQuantifierEnter:i,onAlternationLeave:x,onAssertionLeave:x,onConcatenationLeave(m){Dn(m,(m=>function(m,n,a){const i=In(n);if(2!==i)return i;const x=n.negate?1:0,e=n.negate?0:1,t=Em(n.kind),r=Wm(Nm(m,n),t,a.maxCharacter);if(r.edge)return 2;if(mn(n,r.char,!1,t,a.maxCharacter)&&(a.signalMutation(),0===n.alternatives.length))return e;const s=Lm(n.alternatives,t,a.maxCharacter);if(s.empty)return 2;if(r.char.isDisjointWith(s.char))return e;if(!vm(n,(m=>m!==n&&"Assertion"===m.type))){const m=wm(n.alternatives);if(m&&1===m.max&&s.exact&&r.char.isSubsetOf(s.char))return x}return 2}(a,m,n)),n),x()},onExpressionLeave:x,onQuantifierLeave:x})}}},replaceAssertions:function(m){var n;return"empty-word"===(null!==(n=null==m?void 0:m.replacement)&&void 0!==n?n:"empty-set")?{onConcatenation(m,{signalMutation:n}){k(m.elements,(m=>"Assertion"!==m.type||(n(),!1)))}}:{onAlternation:Bn,onExpression:Bn,onQuantifier:Bn}},sortAssertions:function(m){return{onConcatenation(m,{signalMutation:n}){let a=0,i=0;function x(){const x=m.elements.slice(a,a+i);(function(m,n){const a=m.length;let i=!1;for(let x=0;x1&&x(),i=0)}i>1&&x()}}},unionCharacters:Fn});const Hn={ignoreAmbiguity:!0,ignoreOrder:!0},jn=U([On(Hn)]),zn=U([Fn(Hn),yn(Hn),wn(Hn),Nn()]),Un=U([bn(Hn)]),Kn=U([Nn(),Fn(Hn),yn(Hn),wn(Hn),bn(Hn),On(Hn)]);class qn{constructor(){this.initial=this.createNode(),this.finals=new Set}createNode(){return{in:new Map,out:new Map}}linkNodes(m,n,a){if(m.out.has(n))throw new Error("The two nodes are already linked");m.out.set(n,a),n.in.set(m,a)}unlinkNodes(m,n){const a=m.out.get(n);return void 0!==a&&(m.out.delete(n),n.in.delete(m)),a}relinkNodes(m,n,a){if(!m.out.has(n))throw new Error("The two nodes are not linked");m.out.set(n,a),n.in.set(m,a)}}class $n{constructor(m){this.max=m,this._counter=0}_incrementCounter(){if(++this._counter>this.max)throw new C(`Too many RE AST nodes. Reached maximum of ${this.max}.`)}concat(m){return this._incrementCounter(),{type:"Concatenation",elements:m}}emptyConcat(){return this._incrementCounter(),{type:"Concatenation",elements:[]}}alter(m){return this._incrementCounter(),{type:"Alternation",alternatives:m}}emptyAlter(){return this._incrementCounter(),{type:"Alternation",alternatives:[]}}expression(m){return this._incrementCounter(),{type:"Expression",alternatives:m}}emptyExpression(){return this._incrementCounter(),{type:"Expression",alternatives:[]}}char(m){return this._incrementCounter(),{type:"CharacterClass",characters:m}}quant(m,n,a){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:n,max:a}}quantStar(m){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:0,max:1/0}}quantPlus(m){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:1,max:1/0}}copy(m){switch(m.type){case"Alternation":return this.alter(m.alternatives.map((m=>this.copy(m))));case"Concatenation":return this.concat(m.elements.map((m=>this.copy(m))));case"CharacterClass":return this.char(m.characters);case"Quantifier":return this.quant(m.alternatives.map((m=>this.copy(m))),m.min,m.max);case"Assertion":throw new Error("Assertions should not have been part of the created regex.");default:throw P(m)}}}function Vn(m,n,a){const i=m.initial,x=b(m.finals),e=new Set;M(i,(m=>(m!==i&&m!==x&&e.add(m),m.out.keys())));const t={maxCharacter:a,signalMutation:()=>{}};function r(a,i,x){const e=m.unlinkNodes(a,i);e&&(x=function(m,a){if("CharacterClass"===m.type&&"CharacterClass"===a.type)return m.characters=m.characters.union(a.characters),m;let i;if("Alternation"===m.type){if(0===m.alternatives.length)return a;if("Alternation"===a.type){if(0===a.alternatives.length)return m;m.alternatives.push(...a.alternatives)}else m.alternatives.push(l(a));i=m}else if("Alternation"===a.type){if(0===a.alternatives.length)return m;a.alternatives.push(l(m)),i=a}else i=n.alter([l(m),l(a)]);return zn.onAlternation(i,t),s(i)}(e,x)),m.linkNodes(a,i,x)}function s(m){return"Concatenation"===m.type?1===m.elements.length?s(m.elements[0]):m:"Alternation"===m.type&&1===m.alternatives.length?s(m.alternatives[0]):m}function o(m,a){let i;if("Concatenation"===m.type){if(0===m.elements.length)return a;"Concatenation"===a.type?m.elements.push(...a.elements):m.elements.push(a),i=m}else if("Concatenation"===a.type){if(0===a.elements.length)return m;a.elements.unshift(m),i=a}else i=n.concat([m,a]);return jn.onConcatenation(i,t),s(i)}function l(m){return"Concatenation"===m.type?m:"Alternation"===m.type&&1===m.alternatives.length?m.alternatives[0]:n.concat([m])}function c(m){let a;switch(m.type){case"Quantifier":if(0===m.max)return n.emptyConcat();if(0===m.min||1===m.min)return m.min=0,m.max=1/0,m;a=n.quantStar([l(m)]);break;case"Alternation":a=n.quantStar(m.alternatives);break;case"Concatenation":if(0===m.elements.length)return m;a=n.quantStar([m]);break;default:a=n.quantStar([l(m)])}return Un.onQuantifier(a,t),s(a)}function u(m){let a;switch(m.type){case"Quantifier":if(0===m.max)return n.emptyConcat();if(0===m.min||1===m.min)return m.max=1/0,m;a=n.quantPlus([l(m)]);break;case"Alternation":a=n.quantPlus(m.alternatives);break;case"Concatenation":if(0===m.elements.length)return m;a=n.quantPlus([m]);break;default:a=n.quantPlus([l(m)])}return Un.onQuantifier(a,t),s(a)}function h(n){if(n.out.has(n))if(2===n.in.size&&2===n.out.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.out),[e,t]=b(n.in);Fm(t,a)?m.relinkNodes(e,n,u(a)):Fm(a,x)?m.relinkNodes(n,i,u(a)):m.relinkNodes(n,i,o(c(a),x))}else if(2===n.out.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.out);Fm(a,x)?m.relinkNodes(n,i,u(a)):m.relinkNodes(n,i,o(c(a),x))}else if(2===n.in.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.in);Fm(x,a)?m.relinkNodes(i,n,u(a)):m.relinkNodes(i,n,o(x,c(a)))}}function f(n){if(1===n.in.size&&1===n.out.size){const[a,i]=b(n.in),[x,t]=b(n.out);return m.unlinkNodes(a,n),m.unlinkNodes(n,x),r(a,x,o(i,t)),e.delete(n),[a,x]}return null}function p(m){for(;m.size>0;){const n=new Set;m.forEach((m=>{if(!e.has(m))return;h(m);const a=f(m);a&&a.forEach((m=>n.add(m)))})),m=n}}function d(a){const i=new Set([...a.in.keys(),...a.out.keys()]);i.delete(a);const x=m.unlinkNodes(a,a);if(x){const m=c(x);a.in.forEach(((i,x)=>{a.out.forEach(((a,e)=>{r(x,e,o(n.copy(i),o(n.copy(m),n.copy(a))))}))}))}else a.in.forEach(((m,i)=>{a.out.forEach(((a,x)=>{r(i,x,o(n.copy(m),n.copy(a)))}))}));return a.in.forEach(((n,i)=>{m.unlinkNodes(i,a)})),a.out.forEach(((n,i)=>{m.unlinkNodes(a,i)})),e.delete(a),i}for(p(e);e.size>0;){p(d(w(e,(m=>m.out.has(m)?(m.in.size-1)*(m.out.size-1)*3:m.in.size*m.out.size*2))))}}function Xn(m,n){const a=new $n(n),i=function(m,n){const a=new qn,i=a.createNode();a.linkNodes(a.initial,i,n.emptyConcat());const x=O((()=>a.createNode()));x.cache.set(m.initial,i);let e=void 0;if(M(m.initial,(i=>{m.isFinal(i)&&a.finals.add(x(i));const t=[...m.getOut(i)].sort((([,m],[,n])=>{const a=Number(m.isEmpty)-Number(n.isEmpty);if(0!==a)return a;for(let a=0,i=Math.min(m.ranges.length,n.ranges.length);a{if(void 0===e)e=t.maximum;else if(t.maximum!==e)throw new Error("All character sets have to have to same maximum.");a.linkNodes(x(i),x(m),n.char(t))})),t.map((m=>m[0]))})),0===a.finals.size)return null;const t=a.createNode();a.finals.forEach((m=>{a.linkNodes(m,t,n.emptyConcat())})),a.finals.clear(),a.finals.add(t);const r=new Set;M(t,(m=>(r.add(m),m.in.keys())));const s=new Set;return M(a.initial,(m=>(r.has(m)||s.add(m),m.out.keys()))),s.forEach((m=>{m.out.forEach(((n,i)=>{a.unlinkNodes(m,i)})),m.in.forEach(((n,i)=>{a.unlinkNodes(i,m)}))})),{nodeList:a,maxCharacter:null!=e?e:0}}(m,a);if(null==i)return a.emptyExpression();const{nodeList:x,maxCharacter:e}=i;Vn(x,a,e);const[t]=[...x.finals];if(1!==t.in.size||!t.in.has(x.initial))throw new Error("State elimination failed.");const r=t.in.get(x.initial);switch(r.type){case"Alternation":return a.expression(r.alternatives);case"Concatenation":return a.expression([r]);default:return a.expression([a.concat([r])])}}function Zn(m,n){var a;const i=Xn(m,null!==(a=null==n?void 0:n.maxNodes)&&void 0!==a?a:1e4);return K(Kn,i,{maxPasses:null==n?void 0:n.maxOptimizationPasses})}function Yn(m,n=String){const a=om(xm(m,(m=>[...m].map((([m,a])=>[m,n(a)])).sort((([,m],[,n])=>m.localeCompare(n)))))),i=[...lm(em(a,(([m])=>m)))],x=new Map(i.map(((m,n)=>[m,n]))),e=m=>x.get(m),t=m=>{const n=e(m);return a.isFinal(m)?`[${n}]`:`(${n})`};return i.map((m=>{const n=t(m),i=a.getOut(m).sort((([m],[n])=>e(m)-e(n)));if(0===i.length)return n+" -> none";{const m=" ".repeat(n.length);return i.map((([a,i],x)=>`${x?m:n} -> ${t(a)} : ${i}`)).join("\n")}})).join("\n\n")}function*ma(m){const{initial:n,getOut:a,isFinal:i}=m,x={state:n,parent:null,value:null},e=O((m=>[...a(m)])),t=new Map;let r=[x],s=[];function o(m){const n=[];for(;m.value;)n.push(m.value),m=m.parent;return n.reverse()}function l(m){if(!1!==function(m){const n=t.get(m);if(void 0!==n)return n;const a=new Set;return function m(n){if(a.has(n))return!1;a.add(n);const x=t.get(n);if(void 0!==x)return x;const r=e.cache.get(n);if(void 0===r)return null;let s=!1;for(const[n]of r){if(i(n)){s=!0;break}const a=m(n);if(!0===a){s=!0;break}null===a&&(s=null)}return null!==s&&t.set(n,s),s}(m)}(m.state))for(const[n,a]of e(m.state))s.push({state:n,parent:m,value:a})}for(;0===r.length&&(r=s,s=[]),0!==r.length;){const m=r.pop();i(m.state)&&(yield o(m)),l(m)}}class na{constructor(m,n){this.nodes=m,this.maxCharacter=n}get options(){return{maxCharacter:this.maxCharacter}}get isEmpty(){return 0===this.nodes.finals.size}get isFinite(){return this.isEmpty||hm(this.stateIterator())}stateIterator(){const m=this.nodes.initial,n=this.nodes.finals;return rm({initial:m,getOut:m=>m.out.keys(),isFinal:m=>n.has(m)})}transitionIterator(){const m=this.nodes.initial,n=this.nodes.finals;return rm({initial:m,getOut:m=>m.out,isFinal:m=>n.has(m)})}copy(){return na.fromFA(this)}test(m){let n=[this.nodes.initial];const a=new Set;for(const i of m){const m=[];a.clear();for(const x of n)x.out.forEach(((n,x)=>{n.has(i)&&!a.has(x)&&(m.push(x),a.add(x))}));n=m}return n.some((m=>this.nodes.finals.has(m)))}wordSets(){return ma(this.transitionIterator())}words(){return im(this.wordSets())}toString(){return Yn(this.transitionIterator(),mm)}toRegex(m){return Zn(this.transitionIterator(),m)}isDisjointWith(m,n){ea(this,m);return!um(xm(pm(new fm,this.transitionIterator(),m.transitionIterator(),n),(m=>m.keys())))}intersectionWordSets(m,n){ea(this,m);return ma(pm(new fm,this.transitionIterator(),m.transitionIterator(),n))}intersectionWords(m,n){return im(this.intersectionWordSets(m,n))}_localCopy(m){return m instanceof na?ta(this.nodes,m.nodes):ra(this.nodes,m.transitionIterator())}union(m){m===this||(ea(this,m),oa(this.nodes,this.nodes,this._localCopy(m)))}append(m){this===m?this.quantify(2,2):(ea(this,m),sa(this.nodes,this.nodes,this._localCopy(m)))}prepend(m){this===m?this.quantify(2,2):(ea(this,m),function(m,n,a){if(0===n.finals.size)return;if(0===a.finals.size)return void pa(m,n);const i=[...n.initial.out];for(const n of a.finals)for(const[a,x]of i)m.linkNodes(n,a,x);for(const[a]of i)m.unlinkNodes(n.initial,a);for(const[i,x]of a.initial.out)m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i);n.finals.has(n.initial)&&(n.finals.delete(n.initial),a.finals.forEach((m=>{m===a.initial?n.finals.add(n.initial):n.finals.add(m)})))}(this.nodes,this.nodes,this._localCopy(m)))}quantify(m,n){if(!Number.isInteger(m)||!Number.isInteger(n)&&n!==1/0||m<0||m>n)throw new RangeError("min and max both have to be non-negative integers with min <= max.");fa(this.nodes,this.nodes,m,n)}withoutEmptyWord(){this.nodes.finals.delete(this.nodes.initial)}prefixes(){if(this.nodes.removeUnreachable(),!this.isEmpty)for(const m of this.nodes)this.nodes.finals.add(m)}suffixes(){if(this.nodes.removeUnreachable(),this.isEmpty)return;function m(m){let n=void 0;if(m.in.forEach((m=>{n=void 0===n?m:n.union(m)})),void 0===n)throw new Error("The node doesn't have incoming transitions.");return n}const n=this.nodes.initial;for(const a of this.nodes)if(a!==n){const i=m(a);this.nodes.linkNodes(n,a,i)}this.nodes.finals.add(n)}reverse(){this.nodes.removeUnreachable(),function(m,n){const{initial:a,finals:i}=n;if(0===i.size||1===i.size&&i.has(a))return;const x=[...lm({initial:n.initial,getOut:m=>m.out.keys(),isFinal:m=>n.finals.has(m)})];for(const m of x){const n=m,a=n.out;n.out=n.in,n.in=a}const e=m.createNode();a.in.forEach(((n,i)=>{m.unlinkNodes(i,a),m.linkNodes(i,e,n)}));const t=new Set([e]);i.has(a)&&(i.delete(a),t.add(a));for(const n of i)n.out.forEach(((n,i)=>{m.linkNodes(a,i,n)})),0===n.in.size&&n.out.forEach(((a,i)=>{m.unlinkNodes(n,i)}));i.clear(),t.forEach((m=>i.add(m)))}(this.nodes,this.nodes)}static fromIntersection(m,n,a){var i;ea(m,n);const x=ia(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(i=>{cm(xm(pm(i,m.transitionIterator(),n.transitionIterator(),a),(m=>m.out.keys()))),i.removeUnreachable(),la(i,i)}));return new na(x,m.maxCharacter)}static empty(m){const n=new na.NodeList;return new na(n,m.maxCharacter)}static all(m){const n=new na.NodeList;n.finals.add(n.initial);const a=i.all(m.maxCharacter),x=n.createNode();return n.linkNodes(n.initial,x,a),n.linkNodes(x,x,a),n.finals.add(x),new na(n,m.maxCharacter)}static fromRegex(m,n,a){let i;if(Array.isArray(m))i=xa(m,n,a||{});else{const x=m;i="Concatenation"===x.type?xa([x],n,a||{}):xa(x.alternatives,n,a||{})}return new na(i,n.maxCharacter)}static fromWords(m,n,a){var x;const{maxCharacter:e}=n,t=ia(null!==(x=null==a?void 0:a.maxNodes)&&void 0!==x?x:1e4,(n=>{function a(m,a){if(a>e)throw new Error(`All characters have to be <= options.maxCharacter (${e}).`);if(!Number.isInteger(a))throw new Error(`All characters have to be integers, ${a} is not.`);for(const[n,i]of m.out)if(i.has(a))return n;const x=n.createNode(),t=i.empty(e).union([{min:a,max:a}]);return n.linkNodes(m,x,t),x}for(const i of m){let m=n.initial;for(const n of i)m=a(m,n);n.finals.add(m)}la(n,n),ca(n,n)}));return new na(t,e)}static fromFA(m,n){return na.fromTransitionIterator(m.transitionIterator(),{maxCharacter:m.maxCharacter},n)}static fromTransitionIterator(m,n,a){var i;const{maxCharacter:x}=n,e=ia(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{const a=O((()=>n.createNode()));a.cache.set(m.initial,n.initial),T(m.initial,(i=>{const e=a(i);m.isFinal(i)&&n.finals.add(e);const t=m.getOut(i);return t.forEach(((m,i)=>{if(m.maximum!==x)throw new Error("Some character sets do not conform to the given maximum.");n.linkNodes(e,a(i),m)})),t.keys()}))}));return new na(e,x)}}function aa(m,n,a){const i=m.get(n);void 0===i?m.set(n,a):m.set(n,i.union(a))}function ia(m,n){const a=new na.NodeList;return a._nodeLimit=m,n(a),a._nodeLimit=1/0,a}function xa(m,n,a){var i;const x=a.infinityThreshold||1/0;return ia(null!==(i=a.maxNodes)&&void 0!==i?i:1e4,(i=>{function e(m){if(0===m.length)return{initial:i.createNode(),finals:new Set};const n=t(m[0]);for(let a=1,x=m.length;ai.linkNodes(n,m,a))),t.finals.clear(),t.finals.add(m)}break}case"Quantifier":m.max>0&&sa(i,t,function(m){const n=e(m.alternatives);let a=m.max;return a>=x&&(a=1/0),fa(i,n,m.min,a),n}(m));break;default:throw P(m)}}!function(m,n,a){pa(m,n),a.finals.forEach((m=>{n.finals.add(m===a.initial?n.initial:m)}));for(const[i,x]of[...a.initial.out])m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i)}(i,i,e(m))}))}function ea(m,n){if(m.maxCharacter!==n.maxCharacter)throw new RangeError("Both NFAs have to have the same max character.")}function ta(m,n){return ra(m,{initial:n.initial,getOut:m=>m.out,isFinal:m=>n.finals.has(m)})}function ra(m,n){const a=m.createNode(),i=new Set,x=O((()=>m.createNode()));return x.cache.set(n.initial,a),T(n.initial,(a=>{const e=x(a);n.isFinal(a)&&i.add(e);const t=n.getOut(a);for(const[n,a]of t)m.linkNodes(e,x(n),a);return t.keys()})),{initial:a,finals:i}}function sa(m,n,a){if(0===n.finals.size)return;if(0===a.finals.size)return void pa(m,n);const i=[...a.initial.out];for(const a of n.finals)for(const[n,x]of i)m.linkNodes(a,n,x);for(const[n]of i)m.unlinkNodes(a.initial,n);a.finals.has(a.initial)||n.finals.clear(),a.finals.forEach((m=>{m!==a.initial&&n.finals.add(m)}))}function oa(m,n,a){a.finals.forEach((m=>{n.finals.add(m===a.initial?n.initial:m)}));for(const[i,x]of[...a.initial.out])m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i);la(m,n),function(m,n){const a=[n.initial];for(;a.length>0;){const i=a.pop();if(i.out.size<2)continue;const x=[];for(const m of i.out.keys())1===m.in.size&&x.push(m);for(;x.length>=2;){const e=x.pop(),t=i.out.get(e);for(let r=0,s=x.length;r{m!==n.initial&&0===m.out.size&&a.push(m)})),a.length>1){const i=a.pop();for(let x=0,e=a.length;x0;){const i=a.pop();if(i.in.size<2)continue;const x=[];for(const m of i.in.keys())1===m.out.size&&x.push(m);for(;x.length>=2;){const e=x.pop(),t=i.in.get(e);for(let r=0,s=x.length;r2;e--)sa(m,n,ta(m,x)),n.finals.forEach((m=>i.add(m)));sa(m,n,x),n.finals.forEach((m=>i.add(m))),n.finals.clear(),i.forEach((m=>n.finals.add(m)))}else{const i=ta(m,n);for(let x=a;x>2;x--)sa(m,n,ta(m,i));sa(m,n,i)}}function ha(m,n){for(const a of n.finals)if(a!==n.initial)for(const[i,x]of n.initial.out)m.linkNodes(a,i,x)}function fa(m,n,a,i){if(0===i)return pa(m,n),void n.finals.add(n.initial);if(n.finals.has(n.initial)?a=0:0===a&&n.finals.add(n.initial),1!==i){if(function(m){const n=m.initial.out;for(const a of m.finals)if(a!==m.initial){if(a.out.size!==n.size)return!1;for(const m of a.out.keys())if(!n.has(m))return!1}return!0}(n)){if(a<=1)return;const i=ta(m,n);for(const a of n.finals)for(const n of a.out.keys())m.unlinkNodes(a,n);return ua(m,n,a-1),void sa(m,n,i)}if(a===i)ua(m,n,a);else if(i<1/0){const x=ta(m,n);x.finals.add(x.initial),ua(m,x,i-a),ua(m,n,a),sa(m,n,x)}else if(a>1){const i=ta(m,n);ha(m,i),ua(m,n,a-1),sa(m,n,i)}else ha(m,n)}}function pa(m,n){for(const a of[...n.initial.out.keys()])m.unlinkNodes(n.initial,a);n.finals.clear()}!function(m){class n{constructor(){this._nodeCounter=0,this._nodeLimit=1/0,this.finals=new Set,this.initial=this.createNode()}createNode(){const m=this._nodeCounter++;if(m>this._nodeLimit)throw new C(`The NFA is not allowed to create more than ${this._nodeLimit} nodes.`);return{id:m,list:this,out:new Map,in:new Map}}linkNodes(m,n,a){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");if(a.isEmpty)throw new Error("You can't link nodes with the empty character set.");aa(m.out,n,a),aa(n.in,m,a)}unlinkNodes(m,n){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");if(!m.out.has(n))throw new Error("Can't unlink nodes which aren't linked.");m.out.delete(n),n.in.delete(m)}removeUnreachable(){const m=()=>{this.finals.clear(),this.initial.in.clear(),this.initial.out.clear()};if(0===this.finals.size)return void m();const n=m=>{if(m===this.initial)throw new Error("Cannot remove the initial state.");this.finals.delete(m);for(const n of m.out.keys())this.unlinkNodes(m,n);for(const n of m.in.keys())this.unlinkNodes(n,m)},a=new Set(this.finals);T(this.initial,(m=>(a.add(m),[...m.in.keys(),...m.out.keys()])));const i=new Set;if(T(this.initial,(m=>(i.add(m),m.out.keys()))),a.forEach((m=>{i.has(m)||n(m)})),0===this.finals.size)return void m();const x=new Set;for(const m of this.finals)T(m,(m=>x.has(m)?[]:(x.add(m),m.in.keys())));i.forEach((m=>{x.has(m)||n(m)}))}count(){let m=0;return T(this.initial,(n=>(m++,n.out.keys()))),m}[Symbol.iterator](){return lm({initial:this.initial,getOut:m=>m.out.keys(),isFinal:m=>this.finals.has(m)})[Symbol.iterator]()}}m.NodeList=n}(na||(na={}));class da{constructor(m,n){this.nodes=m,this.maxCharacter=n}get options(){return{maxCharacter:this.maxCharacter}}get isEmpty(){return 0===this.nodes.finals.size}get isFinite(){return hm(this.stateIterator())}stateIterator(){return{initial:(m=this.nodes).initial,getOut:m=>{const n=new Set;return m.out.forEach((m=>n.add(m))),n},isFinal:n=>m.finals.has(n)};var m}transitionIterator(){const m=this.nodes.finals,n=this.maxCharacter;return{initial:this.nodes.initial,getOut:m=>Y(m.out,n),isFinal:n=>m.has(n)}}test(m){let n=this.nodes.initial;for(const a of m){const m=n.out.get(a);if(void 0===m)return!1;n=m}return this.nodes.finals.has(n)}wordSets(){return this.isEmpty?[]:ma(this.transitionIterator())}words(){return im(this.wordSets())}toString(){return Yn(this.transitionIterator(),mm)}toRegex(m){return Zn(this.transitionIterator(),m)}isDisjointWith(m,n){ya(this,m);return!um(xm(pm(new fm,this.transitionIterator(),m.transitionIterator(),n),(m=>m.keys())))}intersectionWordSets(m,n){ya(this,m);return ma(pm(new fm,this.transitionIterator(),m.transitionIterator(),n))}intersectionWords(m,n){return im(this.intersectionWordSets(m,n))}copy(){const m=new da.NodeList;return Sa(this.nodes,m),new da(m,this.maxCharacter)}structurallyEqual(m){if(this===m)return!0;if(this.nodes.finals.size!==m.nodes.finals.size)return!1;const n=new Set,a=this.nodes.finals,i=m.nodes.finals,x=(m,e)=>{if(n.has(m))return!0;if(n.add(m),a.has(m)!==i.has(e))return!1;const t=[...m.out],r=[...e.out];if(t.length!==r.length)return!1;for(let m=0;mnew Map)),i=[],x=new Set;T(m.initial,(m=>{i.push(m);const e=Y(m.out,n);return e.forEach(((n,i)=>{x.add(n),a(i).set(m,n)})),e.keys()}));const e=X(x),t=O((m=>function(m,n){const a=[];for(let i=0,x=n.length;i{const n=[];return a(m).forEach(((m,a)=>{t(m).forEach((m=>{const i=n[m];i?i.push(a):n[m]=[a]}))})),n})),s=new Set([m.finals]);i.length>m.finals.size&&s.add(A(i,m.finals));const o=new Set(s);for(;o.size>0;){const m=b(o);o.delete(m);for(let n=0,a=e.length;n{const i=r(m)[n];i&&i.forEach((m=>a.add(m)))})),0===a.size)continue;const i=[],x=[];for(const m of s){const n=E(a,m);if(0===n.size)continue;const e=A(m,a);0!==e.size&&(i.push(n,e),x.push(m),o.has(m)?(o.delete(m),o.add(n),o.add(e)):n.size<=e.size?o.add(n):o.add(e))}x.forEach((m=>s.delete(m))),i.forEach((m=>s.add(m)))}}return s}(this.nodes,this.maxCharacter),n=new Map;m.forEach((m=>{let a=void 0;if(m.has(this.nodes.initial)&&(a=this.nodes.initial),0===m.size)throw new Error("Empty equivalence class");m.forEach((m=>{if(void 0===a&&(a=m),n.has(m))throw new Error("Duplicate mapping");n.set(m,a)}))}));const a=m=>{const a=n.get(m);if(void 0===a)throw new Error("Unmapped node");return a};T(this.nodes.initial,(m=>(m.out.map(a),m.out.values())));const i=[...this.nodes.finals].map(a);this.nodes.finals.clear(),i.forEach((m=>this.nodes.finals.add(m)))}complement(){const m={min:0,max:this.maxCharacter},n=this.nodes.createNode();this.nodes._uncheckedLinkNodesWithCharRange(n,n,m),T(this.nodes.initial,(a=>{const i=new Set(a.out.values());return a.out.mapRange(m,(m=>null!=m?m:n)),i}));const a=A(lm({initial:(i=this.nodes).initial,getOut:m=>{const n=new Set;return m.out.forEach((m=>n.add(m))),n},isFinal:m=>i.finals.has(m)}),this.nodes.finals);var i;this.nodes.finals.clear(),a.forEach((m=>this.nodes.finals.add(m))),this.nodes.removeUnreachable()}prefixes(){if(this.nodes.removeUnreachable(),!this.isEmpty)for(const m of this.nodes)this.nodes.finals.add(m)}static fromIntersection(m,n,a){var i;ya(m,n);const x=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(i=>{cm(xm(pm(i,m.transitionIterator(),n.transitionIterator(),a),(m=>m.out.values()))),i.removeUnreachable()}));return new da(x,m.maxCharacter)}static empty(m){const{maxCharacter:n}=m,a=new da.NodeList;return new da(a,n)}static all(m){const{maxCharacter:n}=m,a=new da.NodeList;a.finals.add(a.initial);const i={min:0,max:n},x=a.createNode();return a._uncheckedLinkNodesWithCharRange(a.initial,x,i),a._uncheckedLinkNodesWithCharRange(x,x,i),a.finals.add(x),new da(a,n)}static fromWords(m,n,a){var i;const{maxCharacter:x}=n,e=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{for(const a of m){let m=n.initial;for(const i of a){if(i>x)throw new Error(`All characters have to be <= options.maxCharacter (${x}).`);if(!Number.isInteger(i))throw new Error(`All characters have to be integers, ${i} is not.`);let a=m.out.get(i);void 0===a&&(a=n.createNode(),n._uncheckedLinkNodesWithCharacter(m,a,i)),m=a}n.finals.add(m)}}));return new da(e,x)}static fromFA(m,n){var a;if(m instanceof da){const i=ga(null!==(a=null==n?void 0:n.maxNodes)&&void 0!==a?a:1e4,(n=>{Sa(m.nodes,n)}));return new da(i,m.maxCharacter)}return da.fromTransitionIterator(m.transitionIterator(),{maxCharacter:m.maxCharacter},n)}static fromTransitionIterator(m,n,a){var i;const x=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{m=sm(m);const a=new Set;T(m.initial,(n=>{const i=m.getOut(n);return i.forEach((m=>a.add(m))),i.keys()}));const i=X(a),x=new Map;function e(m){let n=x.get(m);return void 0===n&&(n=x.size,x.set(m,n)),n}const t=new Map,r=new Map;function s(m){let n="";for(let a=0,i=m.length;a{m.has(x)&&l.push(n)}));return 0===l.length?void 0:function(a){a.sort(((m,n)=>e(m)-e(n))),k(a,((m,n)=>m!==n));const i=s(a);let x=t.get(i);return void 0===x&&(x=n.createNode(),a.some((n=>m.isFinal(n)))&&n.finals.add(x),t.set(i,x),r.set(x,a)),x}(l)}t.set(s([m.initial]),n.initial),r.set(n.initial,[m.initial]),m.isFinal(m.initial)&&n.finals.add(n.initial),T(n.initial,(m=>{const a=new Set;for(const x of i){const i=o(m,x);i&&(n._uncheckedLinkNodesWithCharSet(m,i,x),a.add(i))}return a}))}));return new da(x,n.maxCharacter)}}function ga(m,n){const a=new da.NodeList;return a._nodeLimit=m,n(a),a._nodeLimit=1/0,a}function ya(m,n){if(m.maxCharacter!==n.maxCharacter)throw new RangeError("Both NFAs have to have the same max character.")}function Sa(m,n){const a=O((()=>n.createNode()));a.cache.set(m.initial,n.initial),T(m.initial,(m=>{const n=a(m),i=new Set;return m.out.forEach(((m,x)=>{i.add(m),n.out.setEvery(x,a(m))})),i})),m.finals.forEach((m=>n.finals.add(a(m))))}!function(m){class n{constructor(){this._nodeCounter=0,this._nodeLimit=1/0,this.finals=new Set,this.initial=this.createNode()}createNode(){const m=this._nodeCounter++;if(m>this._nodeLimit)throw new C(`The DFA is not allowed to create more than ${this._nodeLimit} nodes.`);return{id:m,list:this,out:new s}}linkNodes(m,n,a){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");V(a)?this._uncheckedLinkNodesWithCharacter(m,n,a):a instanceof i?this._uncheckedLinkNodesWithCharSet(m,n,a):this._uncheckedLinkNodesWithCharRange(m,n,a)}_uncheckedLinkNodesWithCharacter(m,n,a){m.out.set(a,n)}_uncheckedLinkNodesWithCharRange(m,n,a){m.out.setEvery(a,n)}_uncheckedLinkNodesWithCharSet(m,n,a){for(const i of a.ranges)m.out.setEvery(i,n)}unlinkNodes(m,n){const a=[];for(const[i,x]of m.out)x===n&&a.push(i);for(let n=0,i=a.length;n{if(n.has(i))return;n.add(i);const x=new Set;if(i.out.forEach((m=>x.add(m))),x.forEach((m=>a(m))),this.finals.has(i))m.add(i);else for(const n of x)if(m.has(n)){m.add(i);break}};a(this.initial);for(const n of this.finals)m.has(n)||this.finals.delete(n);!function(n){const a=[];for(const[i,x]of n.out)m.has(x)||a.push(i);a.forEach((m=>n.out.deleteEvery(m)))}(this.initial)}count(){let m=0;return T(this.initial,(n=>(m++,n.out.values()))),m}*[Symbol.iterator](){const m=new Set;let n=[this.initial];for(;n.length>0;){const a=[];for(const i of n)m.has(i)||(m.add(i),yield i,i.out.forEach((m=>a.push(m))));n=a}}}m.NodeList=n}(da||(da={}));const _a={General_Category:"General_Category",gc:"General_Category",Script:"Script",sc:"Script",Script_Extensions:"Script_Extensions",scx:"Script_Extensions"},va={ASCII:"ASCII",ASCII_Hex_Digit:"ASCII_Hex_Digit",AHex:"ASCII_Hex_Digit",Alphabetic:"Alphabetic",Alpha:"Alphabetic",Any:"Any",Assigned:"Assigned",Bidi_Control:"Bidi_Control",Bidi_C:"Bidi_Control",Bidi_Mirrored:"Bidi_Mirrored",Bidi_M:"Bidi_Mirrored",Case_Ignorable:"Case_Ignorable",CI:"Case_Ignorable",Cased:"Cased",Changes_When_Casefolded:"Changes_When_Casefolded",CWCF:"Changes_When_Casefolded",Changes_When_Casemapped:"Changes_When_Casemapped",CWCM:"Changes_When_Casemapped",Changes_When_Lowercased:"Changes_When_Lowercased",CWL:"Changes_When_Lowercased",Changes_When_NFKC_Casefolded:"Changes_When_NFKC_Casefolded",CWKCF:"Changes_When_NFKC_Casefolded",Changes_When_Titlecased:"Changes_When_Titlecased",CWT:"Changes_When_Titlecased",Changes_When_Uppercased:"Changes_When_Uppercased",CWU:"Changes_When_Uppercased",Dash:"Dash",Default_Ignorable_Code_Point:"Default_Ignorable_Code_Point",DI:"Default_Ignorable_Code_Point",Deprecated:"Deprecated",Dep:"Deprecated",Diacritic:"Diacritic",Dia:"Diacritic",Emoji:"Emoji",Emoji_Component:"Emoji_Component",Emoji_Modifier:"Emoji_Modifier",Emoji_Modifier_Base:"Emoji_Modifier_Base",Emoji_Presentation:"Emoji_Presentation",Extended_Pictographic:"Extended_Pictographic",Extender:"Extender",Ext:"Extender",Grapheme_Base:"Grapheme_Base",Gr_Base:"Grapheme_Base",Grapheme_Extend:"Grapheme_Extend",Gr_Ext:"Grapheme_Extend",Hex_Digit:"Hex_Digit",Hex:"Hex_Digit",IDS_Binary_Operator:"IDS_Binary_Operator",IDSB:"IDS_Binary_Operator",IDS_Trinary_Operator:"IDS_Trinary_Operator",IDST:"IDS_Trinary_Operator",ID_Continue:"ID_Continue",IDC:"ID_Continue",ID_Start:"ID_Start",IDS:"ID_Start",Ideographic:"Ideographic",Ideo:"Ideographic",Join_Control:"Join_Control",Join_C:"Join_Control",Logical_Order_Exception:"Logical_Order_Exception",LOE:"Logical_Order_Exception",Lowercase:"Lowercase",Lower:"Lowercase",Math:"Math",Noncharacter_Code_Point:"Noncharacter_Code_Point",NChar:"Noncharacter_Code_Point",Pattern_Syntax:"Pattern_Syntax",Pat_Syn:"Pattern_Syntax",Pattern_White_Space:"Pattern_White_Space",Pat_WS:"Pattern_White_Space",Quotation_Mark:"Quotation_Mark",QMark:"Quotation_Mark",Radical:"Radical",Regional_Indicator:"Regional_Indicator",RI:"Regional_Indicator",Sentence_Terminal:"Sentence_Terminal",STerm:"Sentence_Terminal",Soft_Dotted:"Soft_Dotted",SD:"Soft_Dotted",Terminal_Punctuation:"Terminal_Punctuation",Term:"Terminal_Punctuation",Unified_Ideograph:"Unified_Ideograph",UIdeo:"Unified_Ideograph",Uppercase:"Uppercase",Upper:"Uppercase",Variation_Selector:"Variation_Selector",VS:"Variation_Selector",White_Space:"White_Space",space:"White_Space",XID_Continue:"XID_Continue",XIDC:"XID_Continue",XID_Start:"XID_Start",XIDS:"XID_Start"},Na={Cased_Letter:"Cased_Letter",LC:"Cased_Letter",Close_Punctuation:"Close_Punctuation",Pe:"Close_Punctuation",Connector_Punctuation:"Connector_Punctuation",Pc:"Connector_Punctuation",Control:"Control",Cc:"Control",cntrl:"Control",Currency_Symbol:"Currency_Symbol",Sc:"Currency_Symbol",Dash_Punctuation:"Dash_Punctuation",Pd:"Dash_Punctuation",Decimal_Number:"Decimal_Number",Nd:"Decimal_Number",digit:"Decimal_Number",Enclosing_Mark:"Enclosing_Mark",Me:"Enclosing_Mark",Final_Punctuation:"Final_Punctuation",Pf:"Final_Punctuation",Format:"Format",Cf:"Format",Initial_Punctuation:"Initial_Punctuation",Pi:"Initial_Punctuation",Letter:"Letter",L:"Letter",Letter_Number:"Letter_Number",Nl:"Letter_Number",Line_Separator:"Line_Separator",Zl:"Line_Separator",Lowercase_Letter:"Lowercase_Letter",Ll:"Lowercase_Letter",Mark:"Mark",M:"Mark",Combining_Mark:"Mark",Math_Symbol:"Math_Symbol",Sm:"Math_Symbol",Modifier_Letter:"Modifier_Letter",Lm:"Modifier_Letter",Modifier_Symbol:"Modifier_Symbol",Sk:"Modifier_Symbol",Nonspacing_Mark:"Nonspacing_Mark",Mn:"Nonspacing_Mark",Number:"Number",N:"Number",Open_Punctuation:"Open_Punctuation",Ps:"Open_Punctuation",Other:"Other",C:"Other",Other_Letter:"Other_Letter",Lo:"Other_Letter",Other_Number:"Other_Number",No:"Other_Number",Other_Punctuation:"Other_Punctuation",Po:"Other_Punctuation",Other_Symbol:"Other_Symbol",So:"Other_Symbol",Paragraph_Separator:"Paragraph_Separator",Zp:"Paragraph_Separator",Private_Use:"Private_Use",Co:"Private_Use",Punctuation:"Punctuation",P:"Punctuation",punct:"Punctuation",Separator:"Separator",Z:"Separator",Space_Separator:"Space_Separator",Zs:"Space_Separator",Spacing_Mark:"Spacing_Mark",Mc:"Spacing_Mark",Surrogate:"Surrogate",Cs:"Surrogate",Symbol:"Symbol",S:"Symbol",Titlecase_Letter:"Titlecase_Letter",Lt:"Titlecase_Letter",Unassigned:"Unassigned",Cn:"Unassigned",Uppercase_Letter:"Uppercase_Letter",Lu:"Uppercase_Letter"},Ca={Adlam:"Adlam",Adlm:"Adlam",Ahom:"Ahom",Anatolian_Hieroglyphs:"Anatolian_Hieroglyphs",Hluw:"Anatolian_Hieroglyphs",Arabic:"Arabic",Arab:"Arabic",Armenian:"Armenian",Armn:"Armenian",Avestan:"Avestan",Avst:"Avestan",Balinese:"Balinese",Bali:"Balinese",Bamum:"Bamum",Bamu:"Bamum",Bassa_Vah:"Bassa_Vah",Bass:"Bassa_Vah",Batak:"Batak",Batk:"Batak",Bengali:"Bengali",Beng:"Bengali",Bhaiksuki:"Bhaiksuki",Bhks:"Bhaiksuki",Bopomofo:"Bopomofo",Bopo:"Bopomofo",Brahmi:"Brahmi",Brah:"Brahmi",Braille:"Braille",Brai:"Braille",Buginese:"Buginese",Bugi:"Buginese",Buhid:"Buhid",Buhd:"Buhid",Canadian_Aboriginal:"Canadian_Aboriginal",Cans:"Canadian_Aboriginal",Carian:"Carian",Cari:"Carian",Caucasian_Albanian:"Caucasian_Albanian",Aghb:"Caucasian_Albanian",Chakma:"Chakma",Cakm:"Chakma",Cham:"Cham",Cherokee:"Cherokee",Cher:"Cherokee",Common:"Common",Zyyy:"Common",Coptic:"Coptic",Copt:"Coptic",Qaac:"Coptic",Cuneiform:"Cuneiform",Xsux:"Cuneiform",Cypriot:"Cypriot",Cprt:"Cypriot",Cyrillic:"Cyrillic",Cyrl:"Cyrillic",Deseret:"Deseret",Dsrt:"Deseret",Devanagari:"Devanagari",Deva:"Devanagari",Dogra:"Dogra",Dogr:"Dogra",Duployan:"Duployan",Dupl:"Duployan",Egyptian_Hieroglyphs:"Egyptian_Hieroglyphs",Egyp:"Egyptian_Hieroglyphs",Elbasan:"Elbasan",Elba:"Elbasan",Elymaic:"Elymaic",Elym:"Elymaic",Ethiopic:"Ethiopic",Ethi:"Ethiopic",Georgian:"Georgian",Geor:"Georgian",Glagolitic:"Glagolitic",Glag:"Glagolitic",Gothic:"Gothic",Goth:"Gothic",Grantha:"Grantha",Gran:"Grantha",Greek:"Greek",Grek:"Greek",Gujarati:"Gujarati",Gujr:"Gujarati",Gunjala_Gondi:"Gunjala_Gondi",Gong:"Gunjala_Gondi",Gurmukhi:"Gurmukhi",Guru:"Gurmukhi",Han:"Han",Hani:"Han",Hangul:"Hangul",Hang:"Hangul",Hanifi_Rohingya:"Hanifi_Rohingya",Rohg:"Hanifi_Rohingya",Hanunoo:"Hanunoo",Hano:"Hanunoo",Hatran:"Hatran",Hatr:"Hatran",Hebrew:"Hebrew",Hebr:"Hebrew",Hiragana:"Hiragana",Hira:"Hiragana",Imperial_Aramaic:"Imperial_Aramaic",Armi:"Imperial_Aramaic",Inherited:"Inherited",Zinh:"Inherited",Qaai:"Inherited",Inscriptional_Pahlavi:"Inscriptional_Pahlavi",Phli:"Inscriptional_Pahlavi",Inscriptional_Parthian:"Inscriptional_Parthian",Prti:"Inscriptional_Parthian",Javanese:"Javanese",Java:"Javanese",Kaithi:"Kaithi",Kthi:"Kaithi",Kannada:"Kannada",Knda:"Kannada",Katakana:"Katakana",Kana:"Katakana",Kayah_Li:"Kayah_Li",Kali:"Kayah_Li",Kharoshthi:"Kharoshthi",Khar:"Kharoshthi",Khmer:"Khmer",Khmr:"Khmer",Khojki:"Khojki",Khoj:"Khojki",Khudawadi:"Khudawadi",Sind:"Khudawadi",Lao:"Lao",Laoo:"Lao",Latin:"Latin",Latn:"Latin",Lepcha:"Lepcha",Lepc:"Lepcha",Limbu:"Limbu",Limb:"Limbu",Linear_A:"Linear_A",Lina:"Linear_A",Linear_B:"Linear_B",Linb:"Linear_B",Lisu:"Lisu",Lycian:"Lycian",Lyci:"Lycian",Lydian:"Lydian",Lydi:"Lydian",Mahajani:"Mahajani",Mahj:"Mahajani",Makasar:"Makasar",Maka:"Makasar",Malayalam:"Malayalam",Mlym:"Malayalam",Mandaic:"Mandaic",Mand:"Mandaic",Manichaean:"Manichaean",Mani:"Manichaean",Marchen:"Marchen",Marc:"Marchen",Medefaidrin:"Medefaidrin",Medf:"Medefaidrin",Masaram_Gondi:"Masaram_Gondi",Gonm:"Masaram_Gondi",Meetei_Mayek:"Meetei_Mayek",Mtei:"Meetei_Mayek",Mende_Kikakui:"Mende_Kikakui",Mend:"Mende_Kikakui",Meroitic_Cursive:"Meroitic_Cursive",Merc:"Meroitic_Cursive",Meroitic_Hieroglyphs:"Meroitic_Hieroglyphs",Mero:"Meroitic_Hieroglyphs",Miao:"Miao",Plrd:"Miao",Modi:"Modi",Mongolian:"Mongolian",Mong:"Mongolian",Mro:"Mro",Mroo:"Mro",Multani:"Multani",Mult:"Multani",Myanmar:"Myanmar",Mymr:"Myanmar",Nabataean:"Nabataean",Nbat:"Nabataean",Nandinagari:"Nandinagari",Nand:"Nandinagari",New_Tai_Lue:"New_Tai_Lue",Talu:"New_Tai_Lue",Newa:"Newa",Nko:"Nko",Nkoo:"Nko",Nushu:"Nushu",Nshu:"Nushu",Nyiakeng_Puachue_Hmong:"Nyiakeng_Puachue_Hmong",Hmnp:"Nyiakeng_Puachue_Hmong",Ogham:"Ogham",Ogam:"Ogham",Ol_Chiki:"Ol_Chiki",Olck:"Ol_Chiki",Old_Hungarian:"Old_Hungarian",Hung:"Old_Hungarian",Old_Italic:"Old_Italic",Ital:"Old_Italic",Old_North_Arabian:"Old_North_Arabian",Narb:"Old_North_Arabian",Old_Permic:"Old_Permic",Perm:"Old_Permic",Old_Persian:"Old_Persian",Xpeo:"Old_Persian",Old_Sogdian:"Old_Sogdian",Sogo:"Old_Sogdian",Old_South_Arabian:"Old_South_Arabian",Sarb:"Old_South_Arabian",Old_Turkic:"Old_Turkic",Orkh:"Old_Turkic",Oriya:"Oriya",Orya:"Oriya",Osage:"Osage",Osge:"Osage",Osmanya:"Osmanya",Osma:"Osmanya",Pahawh_Hmong:"Pahawh_Hmong",Hmng:"Pahawh_Hmong",Palmyrene:"Palmyrene",Palm:"Palmyrene",Pau_Cin_Hau:"Pau_Cin_Hau",Pauc:"Pau_Cin_Hau",Phags_Pa:"Phags_Pa",Phag:"Phags_Pa",Phoenician:"Phoenician",Phnx:"Phoenician",Psalter_Pahlavi:"Psalter_Pahlavi",Phlp:"Psalter_Pahlavi",Rejang:"Rejang",Rjng:"Rejang",Runic:"Runic",Runr:"Runic",Samaritan:"Samaritan",Samr:"Samaritan",Saurashtra:"Saurashtra",Saur:"Saurashtra",Sharada:"Sharada",Shrd:"Sharada",Shavian:"Shavian",Shaw:"Shavian",Siddham:"Siddham",Sidd:"Siddham",SignWriting:"SignWriting",Sgnw:"SignWriting",Sinhala:"Sinhala",Sinh:"Sinhala",Sogdian:"Sogdian",Sogd:"Sogdian",Sora_Sompeng:"Sora_Sompeng",Sora:"Sora_Sompeng",Soyombo:"Soyombo",Soyo:"Soyombo",Sundanese:"Sundanese",Sund:"Sundanese",Syloti_Nagri:"Syloti_Nagri",Sylo:"Syloti_Nagri",Syriac:"Syriac",Syrc:"Syriac",Tagalog:"Tagalog",Tglg:"Tagalog",Tagbanwa:"Tagbanwa",Tagb:"Tagbanwa",Tai_Le:"Tai_Le",Tale:"Tai_Le",Tai_Tham:"Tai_Tham",Lana:"Tai_Tham",Tai_Viet:"Tai_Viet",Tavt:"Tai_Viet",Takri:"Takri",Takr:"Takri",Tamil:"Tamil",Taml:"Tamil",Tangut:"Tangut",Tang:"Tangut",Telugu:"Telugu",Telu:"Telugu",Thaana:"Thaana",Thaa:"Thaana",Thai:"Thai",Tibetan:"Tibetan",Tibt:"Tibetan",Tifinagh:"Tifinagh",Tfng:"Tifinagh",Tirhuta:"Tirhuta",Tirh:"Tirhuta",Ugaritic:"Ugaritic",Ugar:"Ugaritic",Vai:"Vai",Vaii:"Vai",Wancho:"Wancho",Wcho:"Wancho",Warang_Citi:"Warang_Citi",Wara:"Warang_Citi",Yi:"Yi",Yiii:"Yi",Zanabazar_Square:"Zanabazar_Square",Zanb:"Zanabazar_Square"},Oa=JSON.parse('[{"min":0,"max":127}]'),ka=JSON.parse('[{"min":48,"max":57},{"min":65,"max":70},{"min":97,"max":102}]'),wa=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":837,"max":837},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1456,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1623},{"min":1625,"max":1631},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1761,"max":1768},{"min":1773,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1855},{"min":1869,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2071},{"min":2074,"max":2092},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2260,"max":2271},{"min":2275,"max":2281},{"min":2288,"max":2363},{"min":2365,"max":2380},{"min":2382,"max":2384},{"min":2389,"max":2403},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2510,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2636},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2672,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2764},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2809,"max":2812},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2902,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3072,"max":3075},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3148},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3276},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3406,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3654},{"min":3661,"max":3661},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3769},{"min":3771,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3789,"max":3789},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3969},{"min":3976,"max":3991},{"min":3993,"max":4028},{"min":4096,"max":4150},{"min":4152,"max":4152},{"min":4155,"max":4159},{"min":4176,"max":4239},{"min":4250,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5907},{"min":5920,"max":5939},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6067},{"min":6070,"max":6088},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6456},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6753,"max":6772},{"min":6823,"max":6823},{"min":6847,"max":6848},{"min":6912,"max":6963},{"min":6965,"max":6979},{"min":6981,"max":6987},{"min":7040,"max":7081},{"min":7084,"max":7087},{"min":7098,"max":7141},{"min":7143,"max":7153},{"min":7168,"max":7222},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7655,"max":7668},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":11823,"max":11823},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42612,"max":42619},{"min":42623,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43013},{"min":43015,"max":43047},{"min":43072,"max":43123},{"min":43136,"max":43203},{"min":43205,"max":43205},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43263},{"min":43274,"max":43306},{"min":43312,"max":43346},{"min":43360,"max":43388},{"min":43392,"max":43442},{"min":43444,"max":43455},{"min":43471,"max":43471},{"min":43488,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43616,"max":43638},{"min":43642,"max":43710},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43765},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69701},{"min":69762,"max":69816},{"min":69840,"max":69864},{"min":69888,"max":69938},{"min":69956,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70016,"max":70079},{"min":70081,"max":70084},{"min":70094,"max":70095},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70196},{"min":70199,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70376},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70476},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70656,"max":70721},{"min":70723,"max":70725},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70849},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71093},{"min":71096,"max":71102},{"min":71128,"max":71133},{"min":71168,"max":71230},{"min":71232,"max":71232},{"min":71236,"max":71236},{"min":71296,"max":71349},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71453,"max":71466},{"min":71680,"max":71736},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":71996},{"min":71999,"max":72002},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72159},{"min":72161,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72242},{"min":72245,"max":72254},{"min":72272,"max":72343},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72766},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73025},{"min":73027,"max":73027},{"min":73030,"max":73031},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73110},{"min":73112,"max":73112},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113822,"max":113822},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125255,"max":125255},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Ja=JSON.parse('[{"min":0,"max":1114111}]'),ba=JSON.parse('[{"min":0,"max":887},{"min":890,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":1536,"max":1564},{"min":1566,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2042},{"min":2045,"max":2093},{"min":2096,"max":2110},{"min":2112,"max":2139},{"min":2142,"max":2142},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":3585,"max":3642},{"min":3647,"max":3675},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4058},{"min":4096,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5120,"max":5788},{"min":5792,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5942},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6144,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6683},{"min":6686,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829},{"min":6832,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7036},{"min":7040,"max":7155},{"min":7164,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7367},{"min":7376,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8192,"max":8292},{"min":8294,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8352,"max":8383},{"min":8400,"max":8432},{"min":8448,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11507},{"min":11513,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11858},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12288,"max":12351},{"min":12353,"max":12438},{"min":12441,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12688,"max":12771},{"min":12784,"max":12830},{"min":12832,"max":40956},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":42192,"max":42539},{"min":42560,"max":42743},{"min":42752,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43052},{"min":43056,"max":43065},{"min":43072,"max":43127},{"min":43136,"max":43205},{"min":43214,"max":43225},{"min":43232,"max":43347},{"min":43359,"max":43388},{"min":43392,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43714},{"min":43739,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43883},{"min":43888,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":55296,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64449},{"min":64467,"max":64831},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65024,"max":65049},{"min":65056,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65279,"max":65279},{"min":65281,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66299},{"min":66304,"max":66339},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66463,"max":66499},{"min":66504,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":66927,"max":66927},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67671,"max":67742},{"min":67751,"max":67759},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67867},{"min":67871,"max":67897},{"min":67903,"max":67903},{"min":67968,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184},{"min":68192,"max":68255},{"min":68288,"max":68326},{"min":68331,"max":68342},{"min":68352,"max":68405},{"min":68409,"max":68437},{"min":68440,"max":68466},{"min":68472,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68903},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69248,"max":69289},{"min":69291,"max":69293},{"min":69296,"max":69297},{"min":69376,"max":69415},{"min":69424,"max":69465},{"min":69552,"max":69579},{"min":69600,"max":69622},{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69825},{"min":69837,"max":69837},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69959},{"min":69968,"max":70006},{"min":70016,"max":70111},{"min":70113,"max":70132},{"min":70144,"max":70161},{"min":70163,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70747},{"min":70749,"max":70753},{"min":70784,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71133},{"min":71168,"max":71236},{"min":71248,"max":71257},{"min":71264,"max":71276},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487},{"min":71680,"max":71739},{"min":71840,"max":71922},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72006},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164},{"min":72192,"max":72263},{"min":72272,"max":72354},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812},{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73464},{"min":73648,"max":73648},{"min":73664,"max":73713},{"min":73727,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":78896,"max":78904},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783},{"min":92880,"max":92909},{"min":92912,"max":92917},{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93850},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113827},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119272},{"min":119296,"max":119365},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215},{"min":123584,"max":123641},{"min":123647,"max":123647},{"min":124928,"max":125124},{"min":125127,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917505,"max":917505},{"min":917536,"max":917631},{"min":917760,"max":917999},{"min":983040,"max":1048573},{"min":1048576,"max":1114109}]'),Aa=JSON.parse('[{"min":1564,"max":1564},{"min":8206,"max":8207},{"min":8234,"max":8238},{"min":8294,"max":8297}]'),Ea=JSON.parse('[{"min":40,"max":41},{"min":60,"max":60},{"min":62,"max":62},{"min":91,"max":91},{"min":93,"max":93},{"min":123,"max":123},{"min":125,"max":125},{"min":171,"max":171},{"min":187,"max":187},{"min":3898,"max":3901},{"min":5787,"max":5788},{"min":8249,"max":8250},{"min":8261,"max":8262},{"min":8317,"max":8318},{"min":8333,"max":8334},{"min":8512,"max":8512},{"min":8705,"max":8708},{"min":8712,"max":8717},{"min":8721,"max":8721},{"min":8725,"max":8726},{"min":8730,"max":8733},{"min":8735,"max":8738},{"min":8740,"max":8740},{"min":8742,"max":8742},{"min":8747,"max":8755},{"min":8761,"max":8761},{"min":8763,"max":8780},{"min":8786,"max":8789},{"min":8799,"max":8800},{"min":8802,"max":8802},{"min":8804,"max":8811},{"min":8814,"max":8844},{"min":8847,"max":8850},{"min":8856,"max":8856},{"min":8866,"max":8867},{"min":8870,"max":8888},{"min":8894,"max":8895},{"min":8905,"max":8909},{"min":8912,"max":8913},{"min":8918,"max":8941},{"min":8944,"max":8959},{"min":8968,"max":8971},{"min":8992,"max":8993},{"min":9001,"max":9002},{"min":10088,"max":10101},{"min":10176,"max":10176},{"min":10179,"max":10182},{"min":10184,"max":10185},{"min":10187,"max":10189},{"min":10195,"max":10198},{"min":10204,"max":10206},{"min":10210,"max":10223},{"min":10627,"max":10648},{"min":10651,"max":10656},{"min":10658,"max":10671},{"min":10680,"max":10680},{"min":10688,"max":10693},{"min":10697,"max":10697},{"min":10702,"max":10706},{"min":10708,"max":10709},{"min":10712,"max":10716},{"min":10721,"max":10721},{"min":10723,"max":10725},{"min":10728,"max":10729},{"min":10740,"max":10745},{"min":10748,"max":10749},{"min":10762,"max":10780},{"min":10782,"max":10785},{"min":10788,"max":10788},{"min":10790,"max":10790},{"min":10793,"max":10793},{"min":10795,"max":10798},{"min":10804,"max":10805},{"min":10812,"max":10814},{"min":10839,"max":10840},{"min":10852,"max":10853},{"min":10858,"max":10861},{"min":10863,"max":10864},{"min":10867,"max":10868},{"min":10873,"max":10915},{"min":10918,"max":10925},{"min":10927,"max":10966},{"min":10972,"max":10972},{"min":10974,"max":10974},{"min":10978,"max":10982},{"min":10988,"max":10990},{"min":10995,"max":10995},{"min":10999,"max":11003},{"min":11005,"max":11005},{"min":11262,"max":11262},{"min":11778,"max":11781},{"min":11785,"max":11786},{"min":11788,"max":11789},{"min":11804,"max":11805},{"min":11808,"max":11817},{"min":12296,"max":12305},{"min":12308,"max":12315},{"min":65113,"max":65118},{"min":65124,"max":65125},{"min":65288,"max":65289},{"min":65308,"max":65308},{"min":65310,"max":65310},{"min":65339,"max":65339},{"min":65341,"max":65341},{"min":65371,"max":65371},{"min":65373,"max":65373},{"min":65375,"max":65376},{"min":65378,"max":65379},{"min":120539,"max":120539},{"min":120597,"max":120597},{"min":120655,"max":120655},{"min":120713,"max":120713},{"min":120771,"max":120771}]'),Ma=JSON.parse('[{"min":39,"max":39},{"min":46,"max":46},{"min":58,"max":58},{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":173,"max":173},{"min":175,"max":175},{"min":180,"max":180},{"min":183,"max":184},{"min":688,"max":879},{"min":884,"max":885},{"min":890,"max":890},{"min":900,"max":901},{"min":903,"max":903},{"min":1155,"max":1161},{"min":1369,"max":1369},{"min":1375,"max":1375},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1524,"max":1524},{"min":1536,"max":1541},{"min":1552,"max":1562},{"min":1564,"max":1564},{"min":1600,"max":1600},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1757},{"min":1759,"max":1768},{"min":1770,"max":1773},{"min":1807,"max":1807},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2070,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2417,"max":2417},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2879,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2902},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3654,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4348,"max":4348},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6103,"max":6103},{"min":6109,"max":6109},{"min":6155,"max":6158},{"min":6211,"max":6211},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6823,"max":6823},{"min":6832,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6964},{"min":6966,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7288,"max":7293},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7468,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7673},{"min":7675,"max":7679},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":8203,"max":8207},{"min":8216,"max":8217},{"min":8228,"max":8228},{"min":8231,"max":8231},{"min":8234,"max":8238},{"min":8288,"max":8292},{"min":8294,"max":8303},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8432},{"min":11388,"max":11389},{"min":11503,"max":11505},{"min":11631,"max":11631},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":11823,"max":11823},{"min":12293,"max":12293},{"min":12330,"max":12333},{"min":12337,"max":12341},{"min":12347,"max":12347},{"min":12441,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42232,"max":42237},{"min":42508,"max":42508},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42623,"max":42623},{"min":42652,"max":42655},{"min":42736,"max":42737},{"min":42752,"max":42785},{"min":42864,"max":42864},{"min":42888,"max":42890},{"min":43000,"max":43001},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43471,"max":43471},{"min":43493,"max":43494},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43632,"max":43632},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43741,"max":43741},{"min":43756,"max":43757},{"min":43763,"max":43764},{"min":43766,"max":43766},{"min":43867,"max":43871},{"min":43881,"max":43883},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":64434,"max":64449},{"min":65024,"max":65039},{"min":65043,"max":65043},{"min":65056,"max":65071},{"min":65106,"max":65106},{"min":65109,"max":65109},{"min":65279,"max":65279},{"min":65287,"max":65287},{"min":65294,"max":65294},{"min":65306,"max":65306},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65507,"max":65507},{"min":65529,"max":65531},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69821,"max":69821},{"min":69837,"max":69837},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70464,"max":70464},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":78896,"max":78904},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":92992,"max":92995},{"min":94031,"max":94031},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":113821,"max":113822},{"min":113824,"max":113827},{"min":119143,"max":119145},{"min":119155,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123197},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125259},{"min":127995,"max":127999},{"min":917505,"max":917505},{"min":917536,"max":917631},{"min":917760,"max":917999}]'),La=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":442},{"min":444,"max":447},{"min":452,"max":659},{"min":661,"max":696},{"min":704,"max":705},{"min":736,"max":740},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1376,"max":1416},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42653},{"min":42786,"max":42887},{"min":42891,"max":42894},{"min":42896,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43000,"max":43002},{"min":43824,"max":43866},{"min":43868,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":125184,"max":125251},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369}]'),Ta=JSON.parse('[{"min":65,"max":90},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":223},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":329,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":383,"max":383},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":453},{"min":455,"max":456},{"min":458,"max":459},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":498},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":837,"max":837},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":962,"max":962},{"min":975,"max":977},{"min":981,"max":982},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1008,"max":1009},{"min":1012,"max":1013},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":1415,"max":1415},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7834,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8064,"max":8111},{"min":8114,"max":8116},{"min":8119,"max":8124},{"min":8130,"max":8132},{"min":8135,"max":8140},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8178,"max":8180},{"min":8183,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":125184,"max":125217}]'),Pa=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":311},{"min":313,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":977},{"min":981,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1415},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":125184,"max":125251}]'),Ia=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":453},{"min":455,"max":456},{"min":458,"max":459},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":498},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8072,"max":8079},{"min":8088,"max":8095},{"min":8104,"max":8111},{"min":8120,"max":8124},{"min":8136,"max":8140},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":125184,"max":125217}]'),Da=JSON.parse('[{"min":65,"max":90},{"min":160,"max":160},{"min":168,"max":168},{"min":170,"max":170},{"min":173,"max":173},{"min":175,"max":175},{"min":178,"max":181},{"min":184,"max":186},{"min":188,"max":190},{"min":192,"max":214},{"min":216,"max":223},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":329,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":383,"max":383},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":688,"max":696},{"min":728,"max":733},{"min":736,"max":740},{"min":832,"max":833},{"min":835,"max":837},{"min":847,"max":847},{"min":880,"max":880},{"min":882,"max":882},{"min":884,"max":884},{"min":886,"max":886},{"min":890,"max":890},{"min":894,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":962,"max":962},{"min":975,"max":982},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1008,"max":1010},{"min":1012,"max":1013},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":1415,"max":1415},{"min":1564,"max":1564},{"min":1653,"max":1656},{"min":2392,"max":2399},{"min":2524,"max":2525},{"min":2527,"max":2527},{"min":2611,"max":2611},{"min":2614,"max":2614},{"min":2649,"max":2651},{"min":2654,"max":2654},{"min":2908,"max":2909},{"min":3635,"max":3635},{"min":3763,"max":3763},{"min":3804,"max":3805},{"min":3852,"max":3852},{"min":3907,"max":3907},{"min":3917,"max":3917},{"min":3922,"max":3922},{"min":3927,"max":3927},{"min":3932,"max":3932},{"min":3945,"max":3945},{"min":3955,"max":3955},{"min":3957,"max":3961},{"min":3969,"max":3969},{"min":3987,"max":3987},{"min":3997,"max":3997},{"min":4002,"max":4002},{"min":4007,"max":4007},{"min":4012,"max":4012},{"min":4025,"max":4025},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4348,"max":4348},{"min":4447,"max":4448},{"min":5112,"max":5117},{"min":6068,"max":6069},{"min":6155,"max":6158},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7468,"max":7470},{"min":7472,"max":7482},{"min":7484,"max":7501},{"min":7503,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7615},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7834,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8049,"max":8049},{"min":8051,"max":8051},{"min":8053,"max":8053},{"min":8055,"max":8055},{"min":8057,"max":8057},{"min":8059,"max":8059},{"min":8061,"max":8061},{"min":8064,"max":8111},{"min":8114,"max":8116},{"min":8119,"max":8132},{"min":8135,"max":8143},{"min":8147,"max":8147},{"min":8152,"max":8155},{"min":8157,"max":8159},{"min":8163,"max":8163},{"min":8168,"max":8175},{"min":8178,"max":8180},{"min":8183,"max":8190},{"min":8192,"max":8207},{"min":8209,"max":8209},{"min":8215,"max":8215},{"min":8228,"max":8230},{"min":8234,"max":8239},{"min":8243,"max":8244},{"min":8246,"max":8247},{"min":8252,"max":8252},{"min":8254,"max":8254},{"min":8263,"max":8265},{"min":8279,"max":8279},{"min":8287,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8360,"max":8360},{"min":8448,"max":8451},{"min":8453,"max":8455},{"min":8457,"max":8467},{"min":8469,"max":8470},{"min":8473,"max":8477},{"min":8480,"max":8482},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8507,"max":8512},{"min":8517,"max":8521},{"min":8528,"max":8575},{"min":8579,"max":8579},{"min":8585,"max":8585},{"min":8748,"max":8749},{"min":8751,"max":8752},{"min":9001,"max":9002},{"min":9312,"max":9450},{"min":10764,"max":10764},{"min":10868,"max":10870},{"min":10972,"max":10972},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11388,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":11631,"max":11631},{"min":11935,"max":11935},{"min":12019,"max":12019},{"min":12032,"max":12245},{"min":12288,"max":12288},{"min":12342,"max":12342},{"min":12344,"max":12346},{"min":12443,"max":12444},{"min":12447,"max":12447},{"min":12543,"max":12543},{"min":12593,"max":12686},{"min":12690,"max":12703},{"min":12800,"max":12830},{"min":12832,"max":12871},{"min":12880,"max":12926},{"min":12928,"max":13311},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42652,"max":42653},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42864,"max":42864},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":43000,"max":43001},{"min":43868,"max":43871},{"min":43881,"max":43881},{"min":43888,"max":43967},{"min":63744,"max":64013},{"min":64016,"max":64016},{"min":64018,"max":64018},{"min":64021,"max":64030},{"min":64032,"max":64032},{"min":64034,"max":64034},{"min":64037,"max":64038},{"min":64042,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65020},{"min":65024,"max":65049},{"min":65072,"max":65092},{"min":65095,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65138},{"min":65140,"max":65140},{"min":65142,"max":65276},{"min":65279,"max":65279},{"min":65281,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65520,"max":65528},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":113824,"max":113827},{"min":119134,"max":119140},{"min":119155,"max":119162},{"min":119227,"max":119232},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":125184,"max":125217},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":127232,"max":127242},{"min":127248,"max":127278},{"min":127280,"max":127311},{"min":127338,"max":127340},{"min":127376,"max":127376},{"min":127488,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":130032,"max":130041},{"min":194560,"max":195101},{"min":917504,"max":921599}]'),Ra=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":311},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":396},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":410},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":441},{"min":445,"max":445},{"min":447,"max":447},{"min":452,"max":452},{"min":454,"max":455},{"min":457,"max":458},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":497},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":563},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1019},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1377,"max":1415},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7835},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11379,"max":11379},{"min":11382,"max":11382},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11491},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42799},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42897,"max":42897},{"min":42899,"max":42900},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":125218,"max":125251}]'),Ga=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":311},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":396},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":410},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":441},{"min":445,"max":445},{"min":447,"max":447},{"min":453,"max":454},{"min":456,"max":457},{"min":459,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":498,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":563},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1019},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1377,"max":1415},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7835},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8119},{"min":8124,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8140,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8188,"max":8188},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11379,"max":11379},{"min":11382,"max":11382},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11491},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42799},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42897,"max":42897},{"min":42899,"max":42900},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":125218,"max":125251}]'),Ba=JSON.parse('[{"min":45,"max":45},{"min":1418,"max":1418},{"min":1470,"max":1470},{"min":5120,"max":5120},{"min":6150,"max":6150},{"min":8208,"max":8213},{"min":8275,"max":8275},{"min":8315,"max":8315},{"min":8331,"max":8331},{"min":8722,"max":8722},{"min":11799,"max":11799},{"min":11802,"max":11802},{"min":11834,"max":11835},{"min":11840,"max":11840},{"min":12316,"max":12316},{"min":12336,"max":12336},{"min":12448,"max":12448},{"min":65073,"max":65074},{"min":65112,"max":65112},{"min":65123,"max":65123},{"min":65293,"max":65293},{"min":69293,"max":69293}]'),Wa=JSON.parse('[{"min":173,"max":173},{"min":847,"max":847},{"min":1564,"max":1564},{"min":4447,"max":4448},{"min":6068,"max":6069},{"min":6155,"max":6158},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8303},{"min":12644,"max":12644},{"min":65024,"max":65039},{"min":65279,"max":65279},{"min":65440,"max":65440},{"min":65520,"max":65528},{"min":113824,"max":113827},{"min":119155,"max":119162},{"min":917504,"max":921599}]'),Fa=JSON.parse('[{"min":329,"max":329},{"min":1651,"max":1651},{"min":3959,"max":3959},{"min":3961,"max":3961},{"min":6051,"max":6052},{"min":8298,"max":8303},{"min":9001,"max":9002},{"min":917505,"max":917505}]'),Qa=JSON.parse('[{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":175,"max":175},{"min":180,"max":180},{"min":183,"max":184},{"min":688,"max":846},{"min":848,"max":855},{"min":861,"max":866},{"min":884,"max":885},{"min":890,"max":890},{"min":900,"max":901},{"min":1155,"max":1159},{"min":1369,"max":1369},{"min":1425,"max":1441},{"min":1443,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1476},{"min":1611,"max":1618},{"min":1623,"max":1624},{"min":1759,"max":1760},{"min":1765,"max":1766},{"min":1770,"max":1772},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2037},{"min":2072,"max":2073},{"min":2275,"max":2302},{"min":2364,"max":2364},{"min":2381,"max":2381},{"min":2385,"max":2388},{"min":2417,"max":2417},{"min":2492,"max":2492},{"min":2509,"max":2509},{"min":2620,"max":2620},{"min":2637,"max":2637},{"min":2748,"max":2748},{"min":2765,"max":2765},{"min":2813,"max":2815},{"min":2876,"max":2876},{"min":2893,"max":2893},{"min":2901,"max":2901},{"min":3021,"max":3021},{"min":3149,"max":3149},{"min":3260,"max":3260},{"min":3277,"max":3277},{"min":3387,"max":3388},{"min":3405,"max":3405},{"min":3530,"max":3530},{"min":3655,"max":3660},{"min":3662,"max":3662},{"min":3770,"max":3770},{"min":3784,"max":3788},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3903},{"min":3970,"max":3972},{"min":3974,"max":3975},{"min":4038,"max":4038},{"min":4151,"max":4151},{"min":4153,"max":4154},{"min":4195,"max":4196},{"min":4201,"max":4205},{"min":4231,"max":4237},{"min":4239,"max":4239},{"min":4250,"max":4251},{"min":4957,"max":4959},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6457,"max":6459},{"min":6773,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6845},{"min":6964,"max":6964},{"min":6980,"max":6980},{"min":7019,"max":7027},{"min":7082,"max":7083},{"min":7222,"max":7223},{"min":7288,"max":7293},{"min":7376,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7415,"max":7417},{"min":7468,"max":7530},{"min":7620,"max":7631},{"min":7669,"max":7673},{"min":7677,"max":7679},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":11503,"max":11505},{"min":11823,"max":11823},{"min":12330,"max":12335},{"min":12441,"max":12444},{"min":12540,"max":12540},{"min":42607,"max":42607},{"min":42620,"max":42621},{"min":42623,"max":42623},{"min":42652,"max":42653},{"min":42736,"max":42737},{"min":42752,"max":42785},{"min":42888,"max":42890},{"min":43000,"max":43001},{"min":43204,"max":43204},{"min":43232,"max":43249},{"min":43307,"max":43310},{"min":43347,"max":43347},{"min":43443,"max":43443},{"min":43456,"max":43456},{"min":43493,"max":43493},{"min":43643,"max":43645},{"min":43711,"max":43714},{"min":43766,"max":43766},{"min":43867,"max":43871},{"min":43881,"max":43883},{"min":44012,"max":44013},{"min":64286,"max":64286},{"min":65056,"max":65071},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65507,"max":65507},{"min":66272,"max":66272},{"min":68325,"max":68326},{"min":68898,"max":68903},{"min":69446,"max":69456},{"min":69817,"max":69818},{"min":69939,"max":69940},{"min":70003,"max":70003},{"min":70080,"max":70080},{"min":70090,"max":70092},{"min":70197,"max":70198},{"min":70377,"max":70378},{"min":70460,"max":70460},{"min":70477,"max":70477},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70722,"max":70722},{"min":70726,"max":70726},{"min":70850,"max":70851},{"min":71103,"max":71104},{"min":71231,"max":71231},{"min":71350,"max":71351},{"min":71467,"max":71467},{"min":71737,"max":71738},{"min":71997,"max":71998},{"min":72003,"max":72003},{"min":72160,"max":72160},{"min":72244,"max":72244},{"min":72263,"max":72263},{"min":72345,"max":72345},{"min":72767,"max":72767},{"min":73026,"max":73026},{"min":73028,"max":73029},{"min":73111,"max":73111},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94095,"max":94111},{"min":94192,"max":94193},{"min":119143,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125254},{"min":125256,"max":125258}]'),Ha=JSON.parse('[{"min":35,"max":35},{"min":42,"max":42},{"min":48,"max":57},{"min":169,"max":169},{"min":174,"max":174},{"min":8252,"max":8252},{"min":8265,"max":8265},{"min":8482,"max":8482},{"min":8505,"max":8505},{"min":8596,"max":8601},{"min":8617,"max":8618},{"min":8986,"max":8987},{"min":9000,"max":9000},{"min":9167,"max":9167},{"min":9193,"max":9203},{"min":9208,"max":9210},{"min":9410,"max":9410},{"min":9642,"max":9643},{"min":9654,"max":9654},{"min":9664,"max":9664},{"min":9723,"max":9726},{"min":9728,"max":9732},{"min":9742,"max":9742},{"min":9745,"max":9745},{"min":9748,"max":9749},{"min":9752,"max":9752},{"min":9757,"max":9757},{"min":9760,"max":9760},{"min":9762,"max":9763},{"min":9766,"max":9766},{"min":9770,"max":9770},{"min":9774,"max":9775},{"min":9784,"max":9786},{"min":9792,"max":9792},{"min":9794,"max":9794},{"min":9800,"max":9811},{"min":9823,"max":9824},{"min":9827,"max":9827},{"min":9829,"max":9830},{"min":9832,"max":9832},{"min":9851,"max":9851},{"min":9854,"max":9855},{"min":9874,"max":9879},{"min":9881,"max":9881},{"min":9883,"max":9884},{"min":9888,"max":9889},{"min":9895,"max":9895},{"min":9898,"max":9899},{"min":9904,"max":9905},{"min":9917,"max":9918},{"min":9924,"max":9925},{"min":9928,"max":9928},{"min":9934,"max":9935},{"min":9937,"max":9937},{"min":9939,"max":9940},{"min":9961,"max":9962},{"min":9968,"max":9973},{"min":9975,"max":9978},{"min":9981,"max":9981},{"min":9986,"max":9986},{"min":9989,"max":9989},{"min":9992,"max":9997},{"min":9999,"max":9999},{"min":10002,"max":10002},{"min":10004,"max":10004},{"min":10006,"max":10006},{"min":10013,"max":10013},{"min":10017,"max":10017},{"min":10024,"max":10024},{"min":10035,"max":10036},{"min":10052,"max":10052},{"min":10055,"max":10055},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10083,"max":10084},{"min":10133,"max":10135},{"min":10145,"max":10145},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":10548,"max":10549},{"min":11013,"max":11015},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12951,"max":12951},{"min":12953,"max":12953},{"min":126980,"max":126980},{"min":127183,"max":127183},{"min":127344,"max":127345},{"min":127358,"max":127359},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127546},{"min":127568,"max":127569},{"min":127744,"max":127777},{"min":127780,"max":127891},{"min":127894,"max":127895},{"min":127897,"max":127899},{"min":127902,"max":127984},{"min":127987,"max":127989},{"min":127991,"max":128253},{"min":128255,"max":128317},{"min":128329,"max":128334},{"min":128336,"max":128359},{"min":128367,"max":128368},{"min":128371,"max":128378},{"min":128391,"max":128391},{"min":128394,"max":128397},{"min":128400,"max":128400},{"min":128405,"max":128406},{"min":128420,"max":128421},{"min":128424,"max":128424},{"min":128433,"max":128434},{"min":128444,"max":128444},{"min":128450,"max":128452},{"min":128465,"max":128467},{"min":128476,"max":128478},{"min":128481,"max":128481},{"min":128483,"max":128483},{"min":128488,"max":128488},{"min":128495,"max":128495},{"min":128499,"max":128499},{"min":128506,"max":128591},{"min":128640,"max":128709},{"min":128715,"max":128722},{"min":128725,"max":128727},{"min":128736,"max":128741},{"min":128745,"max":128745},{"min":128747,"max":128748},{"min":128752,"max":128752},{"min":128755,"max":128764},{"min":128992,"max":129003},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129535},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750}]'),ja=JSON.parse('[{"min":35,"max":35},{"min":42,"max":42},{"min":48,"max":57},{"min":8205,"max":8205},{"min":8419,"max":8419},{"min":65039,"max":65039},{"min":127462,"max":127487},{"min":127995,"max":127999},{"min":129456,"max":129459},{"min":917536,"max":917631}]'),za=JSON.parse('[{"min":127995,"max":127999}]'),Ua=JSON.parse('[{"min":9757,"max":9757},{"min":9977,"max":9977},{"min":9994,"max":9997},{"min":127877,"max":127877},{"min":127938,"max":127940},{"min":127943,"max":127943},{"min":127946,"max":127948},{"min":128066,"max":128067},{"min":128070,"max":128080},{"min":128102,"max":128120},{"min":128124,"max":128124},{"min":128129,"max":128131},{"min":128133,"max":128135},{"min":128143,"max":128143},{"min":128145,"max":128145},{"min":128170,"max":128170},{"min":128372,"max":128373},{"min":128378,"max":128378},{"min":128400,"max":128400},{"min":128405,"max":128406},{"min":128581,"max":128583},{"min":128587,"max":128591},{"min":128675,"max":128675},{"min":128692,"max":128694},{"min":128704,"max":128704},{"min":128716,"max":128716},{"min":129292,"max":129292},{"min":129295,"max":129295},{"min":129304,"max":129311},{"min":129318,"max":129318},{"min":129328,"max":129337},{"min":129340,"max":129342},{"min":129399,"max":129399},{"min":129461,"max":129462},{"min":129464,"max":129465},{"min":129467,"max":129467},{"min":129485,"max":129487},{"min":129489,"max":129501}]'),Ka=JSON.parse('[{"min":8986,"max":8987},{"min":9193,"max":9196},{"min":9200,"max":9200},{"min":9203,"max":9203},{"min":9725,"max":9726},{"min":9748,"max":9749},{"min":9800,"max":9811},{"min":9855,"max":9855},{"min":9875,"max":9875},{"min":9889,"max":9889},{"min":9898,"max":9899},{"min":9917,"max":9918},{"min":9924,"max":9925},{"min":9934,"max":9934},{"min":9940,"max":9940},{"min":9962,"max":9962},{"min":9970,"max":9971},{"min":9973,"max":9973},{"min":9978,"max":9978},{"min":9981,"max":9981},{"min":9989,"max":9989},{"min":9994,"max":9995},{"min":10024,"max":10024},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10133,"max":10135},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":126980,"max":126980},{"min":127183,"max":127183},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127462,"max":127487},{"min":127489,"max":127489},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127542},{"min":127544,"max":127546},{"min":127568,"max":127569},{"min":127744,"max":127776},{"min":127789,"max":127797},{"min":127799,"max":127868},{"min":127870,"max":127891},{"min":127904,"max":127946},{"min":127951,"max":127955},{"min":127968,"max":127984},{"min":127988,"max":127988},{"min":127992,"max":128062},{"min":128064,"max":128064},{"min":128066,"max":128252},{"min":128255,"max":128317},{"min":128331,"max":128334},{"min":128336,"max":128359},{"min":128378,"max":128378},{"min":128405,"max":128406},{"min":128420,"max":128420},{"min":128507,"max":128591},{"min":128640,"max":128709},{"min":128716,"max":128716},{"min":128720,"max":128722},{"min":128725,"max":128727},{"min":128747,"max":128748},{"min":128756,"max":128764},{"min":128992,"max":129003},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129535},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750}]'),qa=JSON.parse('[{"min":169,"max":169},{"min":174,"max":174},{"min":8252,"max":8252},{"min":8265,"max":8265},{"min":8482,"max":8482},{"min":8505,"max":8505},{"min":8596,"max":8601},{"min":8617,"max":8618},{"min":8986,"max":8987},{"min":9000,"max":9000},{"min":9096,"max":9096},{"min":9167,"max":9167},{"min":9193,"max":9203},{"min":9208,"max":9210},{"min":9410,"max":9410},{"min":9642,"max":9643},{"min":9654,"max":9654},{"min":9664,"max":9664},{"min":9723,"max":9726},{"min":9728,"max":9733},{"min":9735,"max":9746},{"min":9748,"max":9861},{"min":9872,"max":9989},{"min":9992,"max":10002},{"min":10004,"max":10004},{"min":10006,"max":10006},{"min":10013,"max":10013},{"min":10017,"max":10017},{"min":10024,"max":10024},{"min":10035,"max":10036},{"min":10052,"max":10052},{"min":10055,"max":10055},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10083,"max":10087},{"min":10133,"max":10135},{"min":10145,"max":10145},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":10548,"max":10549},{"min":11013,"max":11015},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12951,"max":12951},{"min":12953,"max":12953},{"min":126976,"max":127231},{"min":127245,"max":127247},{"min":127279,"max":127279},{"min":127340,"max":127345},{"min":127358,"max":127359},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127405,"max":127461},{"min":127489,"max":127503},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127546},{"min":127548,"max":127551},{"min":127561,"max":127994},{"min":128000,"max":128317},{"min":128326,"max":128591},{"min":128640,"max":128767},{"min":128884,"max":128895},{"min":128981,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129279},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129791},{"min":130048,"max":131069}]'),$a=JSON.parse('[{"min":183,"max":183},{"min":720,"max":721},{"min":1600,"max":1600},{"min":2042,"max":2042},{"min":2901,"max":2901},{"min":3654,"max":3654},{"min":3782,"max":3782},{"min":6154,"max":6154},{"min":6211,"max":6211},{"min":6823,"max":6823},{"min":7222,"max":7222},{"min":7291,"max":7291},{"min":12293,"max":12293},{"min":12337,"max":12341},{"min":12445,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42508,"max":42508},{"min":43471,"max":43471},{"min":43494,"max":43494},{"min":43632,"max":43632},{"min":43741,"max":43741},{"min":43763,"max":43764},{"min":65392,"max":65392},{"min":70493,"max":70493},{"min":71110,"max":71112},{"min":72344,"max":72344},{"min":92994,"max":92995},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":123196,"max":123197},{"min":125252,"max":125254}]'),Va=JSON.parse('[{"min":32,"max":126},{"min":160,"max":172},{"min":174,"max":767},{"min":880,"max":887},{"min":890,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1154},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":1470,"max":1470},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":1542,"max":1551},{"min":1563,"max":1563},{"min":1566,"max":1610},{"min":1632,"max":1647},{"min":1649,"max":1749},{"min":1758,"max":1758},{"min":1765,"max":1766},{"min":1769,"max":1769},{"min":1774,"max":1805},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1984,"max":2026},{"min":2036,"max":2042},{"min":2046,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2096,"max":2110},{"min":2112,"max":2136},{"min":2142,"max":2142},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2307,"max":2361},{"min":2363,"max":2363},{"min":2365,"max":2368},{"min":2377,"max":2380},{"min":2382,"max":2384},{"min":2392,"max":2401},{"min":2404,"max":2432},{"min":2434,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2495,"max":2496},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2534,"max":2557},{"min":2563,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2622,"max":2624},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2671},{"min":2674,"max":2676},{"min":2678,"max":2678},{"min":2691,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2752},{"min":2761,"max":2761},{"min":2763,"max":2764},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2790,"max":2801},{"min":2809,"max":2809},{"min":2818,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2880,"max":2880},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2918,"max":2935},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3007,"max":3007},{"min":3009,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3024,"max":3024},{"min":3046,"max":3066},{"min":3073,"max":3075},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3137,"max":3140},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3174,"max":3183},{"min":3191,"max":3200},{"min":3202,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3262},{"min":3264,"max":3265},{"min":3267,"max":3268},{"min":3271,"max":3272},{"min":3274,"max":3275},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3330,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3391,"max":3392},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3406,"max":3407},{"min":3412,"max":3414},{"min":3416,"max":3425},{"min":3430,"max":3455},{"min":3458,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3536,"max":3537},{"min":3544,"max":3550},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3647,"max":3654},{"min":3663,"max":3675},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3863},{"min":3866,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":3898,"max":3911},{"min":3913,"max":3948},{"min":3967,"max":3967},{"min":3973,"max":3973},{"min":3976,"max":3980},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4058},{"min":4096,"max":4140},{"min":4145,"max":4145},{"min":4152,"max":4152},{"min":4155,"max":4156},{"min":4159,"max":4183},{"min":4186,"max":4189},{"min":4193,"max":4208},{"min":4213,"max":4225},{"min":4227,"max":4228},{"min":4231,"max":4236},{"min":4238,"max":4252},{"min":4254,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4960,"max":4988},{"min":4992,"max":5017},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5120,"max":5788},{"min":5792,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5941,"max":5942},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6070,"max":6070},{"min":6078,"max":6085},{"min":6087,"max":6088},{"min":6100,"max":6108},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6144,"max":6154},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6435,"max":6438},{"min":6441,"max":6443},{"min":6448,"max":6449},{"min":6451,"max":6456},{"min":6464,"max":6464},{"min":6468,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6678},{"min":6681,"max":6682},{"min":6686,"max":6741},{"min":6743,"max":6743},{"min":6753,"max":6753},{"min":6755,"max":6756},{"min":6765,"max":6770},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829},{"min":6916,"max":6963},{"min":6971,"max":6971},{"min":6973,"max":6977},{"min":6979,"max":6987},{"min":6992,"max":7018},{"min":7028,"max":7036},{"min":7042,"max":7073},{"min":7078,"max":7079},{"min":7082,"max":7082},{"min":7086,"max":7141},{"min":7143,"max":7143},{"min":7146,"max":7148},{"min":7150,"max":7150},{"min":7154,"max":7155},{"min":7164,"max":7211},{"min":7220,"max":7221},{"min":7227,"max":7241},{"min":7245,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7367},{"min":7379,"max":7379},{"min":7393,"max":7393},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7415},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8192,"max":8202},{"min":8208,"max":8231},{"min":8239,"max":8287},{"min":8304,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8352,"max":8383},{"min":8448,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11502},{"min":11506,"max":11507},{"min":11513,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11776,"max":11858},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12288,"max":12329},{"min":12336,"max":12351},{"min":12353,"max":12438},{"min":12443,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12688,"max":12771},{"min":12784,"max":12830},{"min":12832,"max":40956},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":42192,"max":42539},{"min":42560,"max":42606},{"min":42611,"max":42611},{"min":42622,"max":42653},{"min":42656,"max":42735},{"min":42738,"max":42743},{"min":42752,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43044},{"min":43047,"max":43051},{"min":43056,"max":43065},{"min":43072,"max":43127},{"min":43136,"max":43203},{"min":43214,"max":43225},{"min":43250,"max":43262},{"min":43264,"max":43301},{"min":43310,"max":43334},{"min":43346,"max":43347},{"min":43359,"max":43388},{"min":43395,"max":43442},{"min":43444,"max":43445},{"min":43450,"max":43451},{"min":43454,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43492},{"min":43494,"max":43518},{"min":43520,"max":43560},{"min":43567,"max":43568},{"min":43571,"max":43572},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43597,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43643},{"min":43645,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43755},{"min":43758,"max":43765},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43883},{"min":43888,"max":44004},{"min":44006,"max":44007},{"min":44009,"max":44012},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64449},{"min":64467,"max":64831},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65281,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65532,"max":65533},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66273,"max":66299},{"min":66304,"max":66339},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66463,"max":66499},{"min":66504,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":66927,"max":66927},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67671,"max":67742},{"min":67751,"max":67759},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67867},{"min":67871,"max":67897},{"min":67903,"max":67903},{"min":67968,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68160,"max":68168},{"min":68176,"max":68184},{"min":68192,"max":68255},{"min":68288,"max":68324},{"min":68331,"max":68342},{"min":68352,"max":68405},{"min":68409,"max":68437},{"min":68440,"max":68466},{"min":68472,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68899},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69248,"max":69289},{"min":69293,"max":69293},{"min":69296,"max":69297},{"min":69376,"max":69415},{"min":69424,"max":69445},{"min":69457,"max":69465},{"min":69552,"max":69579},{"min":69600,"max":69622},{"min":69632,"max":69632},{"min":69634,"max":69687},{"min":69703,"max":69709},{"min":69714,"max":69743},{"min":69762,"max":69810},{"min":69815,"max":69816},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69891,"max":69926},{"min":69932,"max":69932},{"min":69942,"max":69959},{"min":69968,"max":70002},{"min":70004,"max":70006},{"min":70018,"max":70069},{"min":70079,"max":70088},{"min":70093,"max":70094},{"min":70096,"max":70111},{"min":70113,"max":70132},{"min":70144,"max":70161},{"min":70163,"max":70190},{"min":70194,"max":70195},{"min":70197,"max":70197},{"min":70200,"max":70205},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313},{"min":70320,"max":70366},{"min":70368,"max":70370},{"min":70384,"max":70393},{"min":70402,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70463,"max":70463},{"min":70465,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70493,"max":70499},{"min":70656,"max":70711},{"min":70720,"max":70721},{"min":70725,"max":70725},{"min":70727,"max":70747},{"min":70749,"max":70749},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70833,"max":70834},{"min":70841,"max":70841},{"min":70843,"max":70844},{"min":70846,"max":70846},{"min":70849,"max":70849},{"min":70852,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71086},{"min":71088,"max":71089},{"min":71096,"max":71099},{"min":71102,"max":71102},{"min":71105,"max":71131},{"min":71168,"max":71218},{"min":71227,"max":71228},{"min":71230,"max":71230},{"min":71233,"max":71236},{"min":71248,"max":71257},{"min":71264,"max":71276},{"min":71296,"max":71338},{"min":71340,"max":71340},{"min":71342,"max":71343},{"min":71350,"max":71350},{"min":71352,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71456,"max":71457},{"min":71462,"max":71462},{"min":71472,"max":71487},{"min":71680,"max":71726},{"min":71736,"max":71736},{"min":71739,"max":71739},{"min":71840,"max":71922},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71985,"max":71989},{"min":71991,"max":71992},{"min":71997,"max":71997},{"min":71999,"max":72002},{"min":72004,"max":72006},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72147},{"min":72156,"max":72159},{"min":72161,"max":72164},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72249,"max":72250},{"min":72255,"max":72262},{"min":72272,"max":72272},{"min":72279,"max":72280},{"min":72284,"max":72329},{"min":72343,"max":72343},{"min":72346,"max":72354},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72751},{"min":72766,"max":72766},{"min":72768,"max":72773},{"min":72784,"max":72812},{"min":72816,"max":72847},{"min":72873,"max":72873},{"min":72881,"max":72881},{"min":72884,"max":72884},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73107,"max":73108},{"min":73110,"max":73110},{"min":73112,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73458},{"min":73461,"max":73464},{"min":73648,"max":73648},{"min":73664,"max":73713},{"min":73727,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783},{"min":92880,"max":92909},{"min":92917,"max":92917},{"min":92928,"max":92975},{"min":92983,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93850},{"min":93952,"max":94026},{"min":94032,"max":94087},{"min":94099,"max":94111},{"min":94176,"max":94179},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113820},{"min":113823,"max":113823},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119142,"max":119142},{"min":119146,"max":119149},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121483},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215},{"min":123584,"max":123627},{"min":123632,"max":123641},{"min":123647,"max":123647},{"min":124928,"max":125124},{"min":125127,"max":125135},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Xa=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1161},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2494,"max":2494},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2519,"max":2519},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2878,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2903},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3006,"max":3006},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3031,"max":3031},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3266,"max":3266},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3285,"max":3286},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3390,"max":3390},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3415,"max":3415},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3535,"max":3535},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3551,"max":3551},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8204},{"min":8400,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12335},{"min":12441,"max":12442},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43493,"max":43493},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43756,"max":43757},{"min":43766,"max":43766},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65438,"max":65439},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70462,"max":70462},{"min":70464,"max":70464},{"min":70487,"max":70487},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70832,"max":70832},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70845,"max":70845},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71087,"max":71087},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71984,"max":71984},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":113821,"max":113822},{"min":119141,"max":119141},{"min":119143,"max":119145},{"min":119150,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917536,"max":917631},{"min":917760,"max":917999}]'),Za=JSON.parse('[{"min":48,"max":57},{"min":65,"max":70},{"min":97,"max":102},{"min":65296,"max":65305},{"min":65313,"max":65318},{"min":65345,"max":65350}]'),Ya=JSON.parse('[{"min":12272,"max":12273},{"min":12276,"max":12283}]'),mi=JSON.parse('[{"min":12274,"max":12275}]'),ni=JSON.parse('[{"min":48,"max":57},{"min":65,"max":90},{"min":95,"max":95},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":183,"max":183},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":768,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1155,"max":1159},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1641},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1759,"max":1768},{"min":1770,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2048,"max":2093},{"min":2112,"max":2139},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2403},{"min":2406,"max":2415},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2545},{"min":2556,"max":2556},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2799},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2927},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3055},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3430,"max":3439},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3662},{"min":3664,"max":3673},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3864,"max":3865},{"min":3872,"max":3881},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3972},{"min":3974,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4096,"max":4169},{"min":4176,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4959},{"min":4969,"max":4977},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5940},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6099},{"min":6103,"max":6103},{"min":6108,"max":6109},{"min":6112,"max":6121},{"min":6155,"max":6157},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6470,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6823,"max":6823},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7001},{"min":7019,"max":7027},{"min":7040,"max":7155},{"min":7168,"max":7223},{"min":7232,"max":7241},{"min":7245,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7376,"max":7378},{"min":7380,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":12293,"max":12295},{"min":12321,"max":12335},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12441,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42539},{"min":42560,"max":42607},{"min":42612,"max":42621},{"min":42623,"max":42737},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43047},{"min":43052,"max":43052},{"min":43072,"max":43123},{"min":43136,"max":43205},{"min":43216,"max":43225},{"min":43232,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43309},{"min":43312,"max":43347},{"min":43360,"max":43388},{"min":43392,"max":43456},{"min":43471,"max":43481},{"min":43488,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43616,"max":43638},{"min":43642,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44012,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65296,"max":65305},{"min":65313,"max":65338},{"min":65343,"max":65343},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66045,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66272},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68326},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":68912,"max":68921},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69456},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69702},{"min":69734,"max":69743},{"min":69759,"max":69818},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69951},{"min":69956,"max":69959},{"min":69968,"max":70003},{"min":70006,"max":70006},{"min":70016,"max":70084},{"min":70089,"max":70092},{"min":70094,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70730},{"min":70736,"max":70745},{"min":70750,"max":70753},{"min":70784,"max":70853},{"min":70855,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71104},{"min":71128,"max":71133},{"min":71168,"max":71232},{"min":71236,"max":71236},{"min":71248,"max":71257},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71481},{"min":71680,"max":71738},{"min":71840,"max":71913},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72003},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72254},{"min":72263,"max":72263},{"min":72272,"max":72345},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72768},{"min":72784,"max":72793},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92880,"max":92909},{"min":92912,"max":92916},{"min":92928,"max":92982},{"min":92992,"max":92995},{"min":93008,"max":93017},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":120782,"max":120831},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123214},{"min":123584,"max":123641},{"min":124928,"max":125124},{"min":125136,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917760,"max":917999}]'),ai=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12443,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),ii=JSON.parse('[{"min":12294,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":94180,"max":94180},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110960,"max":111355},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),xi=JSON.parse('[{"min":8204,"max":8205}]'),ei=JSON.parse('[{"min":3648,"max":3652},{"min":3776,"max":3780},{"min":6581,"max":6583},{"min":6586,"max":6586},{"min":43701,"max":43702},{"min":43705,"max":43705},{"min":43707,"max":43708}]'),ti=JSON.parse('[{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":312},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":397},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":411},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":426,"max":427},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":442},{"min":445,"max":447},{"min":454,"max":454},{"min":457,"max":457},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":545,"max":545},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":569},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":659},{"min":661,"max":696},{"min":704,"max":705},{"min":736,"max":740},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":890,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1020},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1376,"max":1416},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7424,"max":7615},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7837},{"min":7839,"max":7839},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8458,"max":8458},{"min":8462,"max":8463},{"min":8467,"max":8467},{"min":8495,"max":8495},{"min":8500,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8509},{"min":8518,"max":8521},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11377,"max":11377},{"min":11379,"max":11380},{"min":11382,"max":11389},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11492},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42653},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42801},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42872},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42894,"max":42894},{"min":42897,"max":42897},{"min":42899,"max":42901},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42927,"max":42927},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43000,"max":43002},{"min":43824,"max":43866},{"min":43868,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":119834,"max":119859},{"min":119886,"max":119892},{"min":119894,"max":119911},{"min":119938,"max":119963},{"min":119990,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120015},{"min":120042,"max":120067},{"min":120094,"max":120119},{"min":120146,"max":120171},{"min":120198,"max":120223},{"min":120250,"max":120275},{"min":120302,"max":120327},{"min":120354,"max":120379},{"min":120406,"max":120431},{"min":120458,"max":120485},{"min":120514,"max":120538},{"min":120540,"max":120545},{"min":120572,"max":120596},{"min":120598,"max":120603},{"min":120630,"max":120654},{"min":120656,"max":120661},{"min":120688,"max":120712},{"min":120714,"max":120719},{"min":120746,"max":120770},{"min":120772,"max":120777},{"min":120779,"max":120779},{"min":125218,"max":125251}]'),ri=JSON.parse('[{"min":43,"max":43},{"min":60,"max":62},{"min":94,"max":94},{"min":124,"max":124},{"min":126,"max":126},{"min":172,"max":172},{"min":177,"max":177},{"min":215,"max":215},{"min":247,"max":247},{"min":976,"max":978},{"min":981,"max":981},{"min":1008,"max":1009},{"min":1012,"max":1014},{"min":1542,"max":1544},{"min":8214,"max":8214},{"min":8242,"max":8244},{"min":8256,"max":8256},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8289,"max":8292},{"min":8314,"max":8318},{"min":8330,"max":8334},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8422},{"min":8427,"max":8431},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8488,"max":8489},{"min":8492,"max":8493},{"min":8495,"max":8497},{"min":8499,"max":8504},{"min":8508,"max":8521},{"min":8523,"max":8523},{"min":8592,"max":8615},{"min":8617,"max":8622},{"min":8624,"max":8625},{"min":8630,"max":8631},{"min":8636,"max":8667},{"min":8669,"max":8669},{"min":8676,"max":8677},{"min":8692,"max":8959},{"min":8968,"max":8971},{"min":8992,"max":8993},{"min":9084,"max":9084},{"min":9115,"max":9141},{"min":9143,"max":9143},{"min":9168,"max":9168},{"min":9180,"max":9186},{"min":9632,"max":9633},{"min":9646,"max":9655},{"min":9660,"max":9665},{"min":9670,"max":9671},{"min":9674,"max":9675},{"min":9679,"max":9683},{"min":9698,"max":9698},{"min":9700,"max":9700},{"min":9703,"max":9708},{"min":9720,"max":9727},{"min":9733,"max":9734},{"min":9792,"max":9792},{"min":9794,"max":9794},{"min":9824,"max":9827},{"min":9837,"max":9839},{"min":10176,"max":10239},{"min":10496,"max":11007},{"min":11056,"max":11076},{"min":11079,"max":11084},{"min":64297,"max":64297},{"min":65121,"max":65126},{"min":65128,"max":65128},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65340,"max":65340},{"min":65342,"max":65342},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65506,"max":65506},{"min":65513,"max":65516},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),si=JSON.parse('[{"min":64976,"max":65007},{"min":65534,"max":65535},{"min":131070,"max":131071},{"min":196606,"max":196607},{"min":262142,"max":262143},{"min":327678,"max":327679},{"min":393214,"max":393215},{"min":458750,"max":458751},{"min":524286,"max":524287},{"min":589822,"max":589823},{"min":655358,"max":655359},{"min":720894,"max":720895},{"min":786430,"max":786431},{"min":851966,"max":851967},{"min":917502,"max":917503},{"min":983038,"max":983039},{"min":1048574,"max":1048575},{"min":1114110,"max":1114111}]'),oi=JSON.parse('[{"min":33,"max":47},{"min":58,"max":64},{"min":91,"max":94},{"min":96,"max":96},{"min":123,"max":126},{"min":161,"max":167},{"min":169,"max":169},{"min":171,"max":172},{"min":174,"max":174},{"min":176,"max":177},{"min":182,"max":182},{"min":187,"max":187},{"min":191,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":8208,"max":8231},{"min":8240,"max":8254},{"min":8257,"max":8275},{"min":8277,"max":8286},{"min":8592,"max":9311},{"min":9472,"max":10101},{"min":10132,"max":11263},{"min":11776,"max":11903},{"min":12289,"max":12291},{"min":12296,"max":12320},{"min":12336,"max":12336},{"min":64830,"max":64831},{"min":65093,"max":65094}]'),li=JSON.parse('[{"min":9,"max":13},{"min":32,"max":32},{"min":133,"max":133},{"min":8206,"max":8207},{"min":8232,"max":8233}]'),ci=JSON.parse('[{"min":34,"max":34},{"min":39,"max":39},{"min":171,"max":171},{"min":187,"max":187},{"min":8216,"max":8223},{"min":8249,"max":8250},{"min":11842,"max":11842},{"min":12300,"max":12303},{"min":12317,"max":12319},{"min":65089,"max":65092},{"min":65282,"max":65282},{"min":65287,"max":65287},{"min":65378,"max":65379}]'),ui=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245}]'),hi=JSON.parse('[{"min":127462,"max":127487}]'),fi=JSON.parse('[{"min":33,"max":33},{"min":46,"max":46},{"min":63,"max":63},{"min":1417,"max":1417},{"min":1566,"max":1567},{"min":1748,"max":1748},{"min":1792,"max":1794},{"min":2041,"max":2041},{"min":2103,"max":2103},{"min":2105,"max":2105},{"min":2109,"max":2110},{"min":2404,"max":2405},{"min":4170,"max":4171},{"min":4962,"max":4962},{"min":4967,"max":4968},{"min":5742,"max":5742},{"min":5941,"max":5942},{"min":6147,"max":6147},{"min":6153,"max":6153},{"min":6468,"max":6469},{"min":6824,"max":6827},{"min":7002,"max":7003},{"min":7006,"max":7007},{"min":7227,"max":7228},{"min":7294,"max":7295},{"min":8252,"max":8253},{"min":8263,"max":8265},{"min":11822,"max":11822},{"min":11836,"max":11836},{"min":12290,"max":12290},{"min":42239,"max":42239},{"min":42510,"max":42511},{"min":42739,"max":42739},{"min":42743,"max":42743},{"min":43126,"max":43127},{"min":43214,"max":43215},{"min":43311,"max":43311},{"min":43464,"max":43465},{"min":43613,"max":43615},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65106,"max":65106},{"min":65110,"max":65111},{"min":65281,"max":65281},{"min":65294,"max":65294},{"min":65311,"max":65311},{"min":65377,"max":65377},{"min":68182,"max":68183},{"min":69461,"max":69465},{"min":69703,"max":69704},{"min":69822,"max":69825},{"min":69953,"max":69955},{"min":70085,"max":70086},{"min":70093,"max":70093},{"min":70110,"max":70111},{"min":70200,"max":70201},{"min":70203,"max":70204},{"min":70313,"max":70313},{"min":70731,"max":70732},{"min":71106,"max":71107},{"min":71113,"max":71127},{"min":71233,"max":71234},{"min":71484,"max":71486},{"min":72004,"max":72004},{"min":72006,"max":72006},{"min":72258,"max":72259},{"min":72347,"max":72348},{"min":72769,"max":72770},{"min":73463,"max":73464},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92984},{"min":92996,"max":92996},{"min":93848,"max":93848},{"min":113823,"max":113823},{"min":121480,"max":121480}]'),pi=JSON.parse('[{"min":105,"max":106},{"min":303,"max":303},{"min":585,"max":585},{"min":616,"max":616},{"min":669,"max":669},{"min":690,"max":690},{"min":1011,"max":1011},{"min":1110,"max":1110},{"min":1112,"max":1112},{"min":7522,"max":7522},{"min":7574,"max":7574},{"min":7588,"max":7588},{"min":7592,"max":7592},{"min":7725,"max":7725},{"min":7883,"max":7883},{"min":8305,"max":8305},{"min":8520,"max":8521},{"min":11388,"max":11388},{"min":119842,"max":119843},{"min":119894,"max":119895},{"min":119946,"max":119947},{"min":119998,"max":119999},{"min":120050,"max":120051},{"min":120102,"max":120103},{"min":120154,"max":120155},{"min":120206,"max":120207},{"min":120258,"max":120259},{"min":120310,"max":120311},{"min":120362,"max":120363},{"min":120414,"max":120415},{"min":120466,"max":120467}]'),di=JSON.parse('[{"min":33,"max":33},{"min":44,"max":44},{"min":46,"max":46},{"min":58,"max":59},{"min":63,"max":63},{"min":894,"max":894},{"min":903,"max":903},{"min":1417,"max":1417},{"min":1475,"max":1475},{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1748,"max":1748},{"min":1792,"max":1802},{"min":1804,"max":1804},{"min":2040,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":3674,"max":3675},{"min":3848,"max":3848},{"min":3853,"max":3858},{"min":4170,"max":4171},{"min":4961,"max":4968},{"min":5742,"max":5742},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6106,"max":6106},{"min":6146,"max":6149},{"min":6152,"max":6153},{"min":6468,"max":6469},{"min":6824,"max":6827},{"min":7002,"max":7003},{"min":7005,"max":7007},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":8252,"max":8253},{"min":8263,"max":8265},{"min":11822,"max":11822},{"min":11836,"max":11836},{"min":11841,"max":11841},{"min":11852,"max":11852},{"min":11854,"max":11855},{"min":12289,"max":12290},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42739,"max":42743},{"min":43126,"max":43127},{"min":43214,"max":43215},{"min":43311,"max":43311},{"min":43463,"max":43465},{"min":43613,"max":43615},{"min":43743,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65104,"max":65106},{"min":65108,"max":65111},{"min":65281,"max":65281},{"min":65292,"max":65292},{"min":65294,"max":65294},{"min":65306,"max":65307},{"min":65311,"max":65311},{"min":65377,"max":65377},{"min":65380,"max":65380},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":68182,"max":68183},{"min":68336,"max":68341},{"min":68410,"max":68415},{"min":68505,"max":68508},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69822,"max":69825},{"min":69953,"max":69955},{"min":70085,"max":70086},{"min":70093,"max":70093},{"min":70110,"max":70111},{"min":70200,"max":70204},{"min":70313,"max":70313},{"min":70731,"max":70733},{"min":70746,"max":70747},{"min":71106,"max":71109},{"min":71113,"max":71127},{"min":71233,"max":71234},{"min":71484,"max":71486},{"min":72004,"max":72004},{"min":72006,"max":72006},{"min":72258,"max":72259},{"min":72347,"max":72348},{"min":72353,"max":72354},{"min":72769,"max":72771},{"min":72817,"max":72817},{"min":73463,"max":73464},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92985},{"min":92996,"max":92996},{"min":93847,"max":93848},{"min":113823,"max":113823},{"min":121479,"max":121482}]'),gi=JSON.parse('[{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":64014,"max":64015},{"min":64017,"max":64017},{"min":64019,"max":64020},{"min":64031,"max":64031},{"min":64033,"max":64033},{"min":64035,"max":64036},{"min":64039,"max":64041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":196608,"max":201546}]'),yi=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":452},{"min":455,"max":455},{"min":458,"max":458},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":497},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":978,"max":980},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8120,"max":8123},{"min":8136,"max":8139},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8459,"max":8461},{"min":8464,"max":8466},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8496,"max":8499},{"min":8510,"max":8511},{"min":8517,"max":8517},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":119808,"max":119833},{"min":119860,"max":119885},{"min":119912,"max":119937},{"min":119964,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119989},{"min":120016,"max":120041},{"min":120068,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120120,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120172,"max":120197},{"min":120224,"max":120249},{"min":120276,"max":120301},{"min":120328,"max":120353},{"min":120380,"max":120405},{"min":120432,"max":120457},{"min":120488,"max":120512},{"min":120546,"max":120570},{"min":120604,"max":120628},{"min":120662,"max":120686},{"min":120720,"max":120744},{"min":120778,"max":120778},{"min":125184,"max":125217},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369}]'),Si=JSON.parse('[{"min":6155,"max":6157},{"min":65024,"max":65039},{"min":917760,"max":917999}]'),_i=JSON.parse('[{"min":9,"max":13},{"min":32,"max":32},{"min":133,"max":133},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8232,"max":8233},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),vi=JSON.parse('[{"min":48,"max":57},{"min":65,"max":90},{"min":95,"max":95},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":183,"max":183},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":768,"max":884},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1155,"max":1159},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1641},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1759,"max":1768},{"min":1770,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2048,"max":2093},{"min":2112,"max":2139},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2403},{"min":2406,"max":2415},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2545},{"min":2556,"max":2556},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2799},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2927},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3055},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3430,"max":3439},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3662},{"min":3664,"max":3673},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3864,"max":3865},{"min":3872,"max":3881},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3972},{"min":3974,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4096,"max":4169},{"min":4176,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4959},{"min":4969,"max":4977},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5940},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6099},{"min":6103,"max":6103},{"min":6108,"max":6109},{"min":6112,"max":6121},{"min":6155,"max":6157},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6470,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6823,"max":6823},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7001},{"min":7019,"max":7027},{"min":7040,"max":7155},{"min":7168,"max":7223},{"min":7232,"max":7241},{"min":7245,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7376,"max":7378},{"min":7380,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":12293,"max":12295},{"min":12321,"max":12335},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12441,"max":12442},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42539},{"min":42560,"max":42607},{"min":42612,"max":42621},{"min":42623,"max":42737},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43047},{"min":43052,"max":43052},{"min":43072,"max":43123},{"min":43136,"max":43205},{"min":43216,"max":43225},{"min":43232,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43309},{"min":43312,"max":43347},{"min":43360,"max":43388},{"min":43392,"max":43456},{"min":43471,"max":43481},{"min":43488,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43616,"max":43638},{"min":43642,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44012,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64605},{"min":64612,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65017},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65137,"max":65137},{"min":65139,"max":65139},{"min":65143,"max":65143},{"min":65145,"max":65145},{"min":65147,"max":65147},{"min":65149,"max":65149},{"min":65151,"max":65276},{"min":65296,"max":65305},{"min":65313,"max":65338},{"min":65343,"max":65343},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66045,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66272},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68326},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":68912,"max":68921},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69456},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69702},{"min":69734,"max":69743},{"min":69759,"max":69818},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69951},{"min":69956,"max":69959},{"min":69968,"max":70003},{"min":70006,"max":70006},{"min":70016,"max":70084},{"min":70089,"max":70092},{"min":70094,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70730},{"min":70736,"max":70745},{"min":70750,"max":70753},{"min":70784,"max":70853},{"min":70855,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71104},{"min":71128,"max":71133},{"min":71168,"max":71232},{"min":71236,"max":71236},{"min":71248,"max":71257},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71481},{"min":71680,"max":71738},{"min":71840,"max":71913},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72003},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72254},{"min":72263,"max":72263},{"min":72272,"max":72345},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72768},{"min":72784,"max":72793},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92880,"max":92909},{"min":92912,"max":92916},{"min":92928,"max":92982},{"min":92992,"max":92995},{"min":93008,"max":93017},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":120782,"max":120831},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123214},{"min":123584,"max":123641},{"min":124928,"max":125124},{"min":125136,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917760,"max":917999}]'),Ni=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3634},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3762},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64605},{"min":64612,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65017},{"min":65137,"max":65137},{"min":65139,"max":65139},{"min":65143,"max":65143},{"min":65145,"max":65145},{"min":65147,"max":65147},{"min":65149,"max":65149},{"min":65151,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]');var Ci=Object.freeze({__proto__:null,ASCII:Oa,ASCII_Hex_Digit:ka,Alphabetic:wa,Any:Ja,Assigned:ba,Bidi_Control:Aa,Bidi_Mirrored:Ea,Case_Ignorable:Ma,Cased:La,Changes_When_Casefolded:Ta,Changes_When_Casemapped:Pa,Changes_When_Lowercased:Ia,Changes_When_NFKC_Casefolded:Da,Changes_When_Titlecased:Ra,Changes_When_Uppercased:Ga,Dash:Ba,Default_Ignorable_Code_Point:Wa,Deprecated:Fa,Diacritic:Qa,Emoji:Ha,Emoji_Component:ja,Emoji_Modifier:za,Emoji_Modifier_Base:Ua,Emoji_Presentation:Ka,Extended_Pictographic:qa,Extender:$a,Grapheme_Base:Va,Grapheme_Extend:Xa,Hex_Digit:Za,IDS_Binary_Operator:Ya,IDS_Trinary_Operator:mi,ID_Continue:ni,ID_Start:ai,Ideographic:ii,Join_Control:xi,Logical_Order_Exception:ei,Lowercase:ti,Math:ri,Noncharacter_Code_Point:si,Pattern_Syntax:oi,Pattern_White_Space:li,Quotation_Mark:ci,Radical:ui,Regional_Indicator:hi,Sentence_Terminal:fi,Soft_Dotted:pi,Terminal_Punctuation:di,Unified_Ideograph:gi,Uppercase:yi,Variation_Selector:Si,White_Space:_i,XID_Continue:vi,XID_Start:Ni});const Oi=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":442},{"min":444,"max":447},{"min":452,"max":659},{"min":661,"max":687},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1376,"max":1416},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7424,"max":7467},{"min":7531,"max":7543},{"min":7545,"max":7578},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8579,"max":8580},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11387},{"min":11390,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42863},{"min":42865,"max":42887},{"min":42891,"max":42894},{"min":42896,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43002,"max":43002},{"min":43824,"max":43866},{"min":43872,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":125184,"max":125251}]'),ki=JSON.parse('[{"min":41,"max":41},{"min":93,"max":93},{"min":125,"max":125},{"min":3899,"max":3899},{"min":3901,"max":3901},{"min":5788,"max":5788},{"min":8262,"max":8262},{"min":8318,"max":8318},{"min":8334,"max":8334},{"min":8969,"max":8969},{"min":8971,"max":8971},{"min":9002,"max":9002},{"min":10089,"max":10089},{"min":10091,"max":10091},{"min":10093,"max":10093},{"min":10095,"max":10095},{"min":10097,"max":10097},{"min":10099,"max":10099},{"min":10101,"max":10101},{"min":10182,"max":10182},{"min":10215,"max":10215},{"min":10217,"max":10217},{"min":10219,"max":10219},{"min":10221,"max":10221},{"min":10223,"max":10223},{"min":10628,"max":10628},{"min":10630,"max":10630},{"min":10632,"max":10632},{"min":10634,"max":10634},{"min":10636,"max":10636},{"min":10638,"max":10638},{"min":10640,"max":10640},{"min":10642,"max":10642},{"min":10644,"max":10644},{"min":10646,"max":10646},{"min":10648,"max":10648},{"min":10713,"max":10713},{"min":10715,"max":10715},{"min":10749,"max":10749},{"min":11811,"max":11811},{"min":11813,"max":11813},{"min":11815,"max":11815},{"min":11817,"max":11817},{"min":12297,"max":12297},{"min":12299,"max":12299},{"min":12301,"max":12301},{"min":12303,"max":12303},{"min":12305,"max":12305},{"min":12309,"max":12309},{"min":12311,"max":12311},{"min":12313,"max":12313},{"min":12315,"max":12315},{"min":12318,"max":12319},{"min":64830,"max":64830},{"min":65048,"max":65048},{"min":65078,"max":65078},{"min":65080,"max":65080},{"min":65082,"max":65082},{"min":65084,"max":65084},{"min":65086,"max":65086},{"min":65088,"max":65088},{"min":65090,"max":65090},{"min":65092,"max":65092},{"min":65096,"max":65096},{"min":65114,"max":65114},{"min":65116,"max":65116},{"min":65118,"max":65118},{"min":65289,"max":65289},{"min":65341,"max":65341},{"min":65373,"max":65373},{"min":65376,"max":65376},{"min":65379,"max":65379}]'),wi=JSON.parse('[{"min":95,"max":95},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65343,"max":65343}]'),Ji=JSON.parse('[{"min":0,"max":31},{"min":127,"max":159}]'),bi=JSON.parse('[{"min":36,"max":36},{"min":162,"max":165},{"min":1423,"max":1423},{"min":1547,"max":1547},{"min":2046,"max":2047},{"min":2546,"max":2547},{"min":2555,"max":2555},{"min":2801,"max":2801},{"min":3065,"max":3065},{"min":3647,"max":3647},{"min":6107,"max":6107},{"min":8352,"max":8383},{"min":43064,"max":43064},{"min":65020,"max":65020},{"min":65129,"max":65129},{"min":65284,"max":65284},{"min":65504,"max":65505},{"min":65509,"max":65510},{"min":73693,"max":73696},{"min":123647,"max":123647},{"min":126128,"max":126128}]'),Ai=JSON.parse('[{"min":45,"max":45},{"min":1418,"max":1418},{"min":1470,"max":1470},{"min":5120,"max":5120},{"min":6150,"max":6150},{"min":8208,"max":8213},{"min":11799,"max":11799},{"min":11802,"max":11802},{"min":11834,"max":11835},{"min":11840,"max":11840},{"min":12316,"max":12316},{"min":12336,"max":12336},{"min":12448,"max":12448},{"min":65073,"max":65074},{"min":65112,"max":65112},{"min":65123,"max":65123},{"min":65293,"max":65293},{"min":69293,"max":69293}]'),Ei=JSON.parse('[{"min":48,"max":57},{"min":1632,"max":1641},{"min":1776,"max":1785},{"min":1984,"max":1993},{"min":2406,"max":2415},{"min":2534,"max":2543},{"min":2662,"max":2671},{"min":2790,"max":2799},{"min":2918,"max":2927},{"min":3046,"max":3055},{"min":3174,"max":3183},{"min":3302,"max":3311},{"min":3430,"max":3439},{"min":3558,"max":3567},{"min":3664,"max":3673},{"min":3792,"max":3801},{"min":3872,"max":3881},{"min":4160,"max":4169},{"min":4240,"max":4249},{"min":6112,"max":6121},{"min":6160,"max":6169},{"min":6470,"max":6479},{"min":6608,"max":6617},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6992,"max":7001},{"min":7088,"max":7097},{"min":7232,"max":7241},{"min":7248,"max":7257},{"min":42528,"max":42537},{"min":43216,"max":43225},{"min":43264,"max":43273},{"min":43472,"max":43481},{"min":43504,"max":43513},{"min":43600,"max":43609},{"min":44016,"max":44025},{"min":65296,"max":65305},{"min":66720,"max":66729},{"min":68912,"max":68921},{"min":69734,"max":69743},{"min":69872,"max":69881},{"min":69942,"max":69951},{"min":70096,"max":70105},{"min":70384,"max":70393},{"min":70736,"max":70745},{"min":70864,"max":70873},{"min":71248,"max":71257},{"min":71360,"max":71369},{"min":71472,"max":71481},{"min":71904,"max":71913},{"min":72016,"max":72025},{"min":72784,"max":72793},{"min":73040,"max":73049},{"min":73120,"max":73129},{"min":92768,"max":92777},{"min":93008,"max":93017},{"min":120782,"max":120831},{"min":123200,"max":123209},{"min":123632,"max":123641},{"min":125264,"max":125273},{"min":130032,"max":130041}]'),Mi=JSON.parse('[{"min":1160,"max":1161},{"min":6846,"max":6846},{"min":8413,"max":8416},{"min":8418,"max":8420},{"min":42608,"max":42610}]'),Li=JSON.parse('[{"min":187,"max":187},{"min":8217,"max":8217},{"min":8221,"max":8221},{"min":8250,"max":8250},{"min":11779,"max":11779},{"min":11781,"max":11781},{"min":11786,"max":11786},{"min":11789,"max":11789},{"min":11805,"max":11805},{"min":11809,"max":11809}]'),Ti=JSON.parse('[{"min":173,"max":173},{"min":1536,"max":1541},{"min":1564,"max":1564},{"min":1757,"max":1757},{"min":1807,"max":1807},{"min":2274,"max":2274},{"min":6158,"max":6158},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8292},{"min":8294,"max":8303},{"min":65279,"max":65279},{"min":65529,"max":65531},{"min":69821,"max":69821},{"min":69837,"max":69837},{"min":78896,"max":78904},{"min":113824,"max":113827},{"min":119155,"max":119162},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Pi=JSON.parse('[{"min":171,"max":171},{"min":8216,"max":8216},{"min":8219,"max":8220},{"min":8223,"max":8223},{"min":8249,"max":8249},{"min":11778,"max":11778},{"min":11780,"max":11780},{"min":11785,"max":11785},{"min":11788,"max":11788},{"min":11804,"max":11804},{"min":11808,"max":11808}]'),Ii=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5873,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8579,"max":8580},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11823,"max":11823},{"min":12293,"max":12294},{"min":12337,"max":12341},{"min":12347,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42725},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66368},{"min":66370,"max":66377},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Di=JSON.parse('[{"min":5870,"max":5872},{"min":8544,"max":8578},{"min":8581,"max":8584},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":42726,"max":42735},{"min":65856,"max":65908},{"min":66369,"max":66369},{"min":66378,"max":66378},{"min":66513,"max":66517},{"min":74752,"max":74862}]'),Ri=JSON.parse('[{"min":8232,"max":8232}]'),Gi=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":312},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":397},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":411},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":426,"max":427},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":442},{"min":445,"max":447},{"min":454,"max":454},{"min":457,"max":457},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":545,"max":545},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":569},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":659},{"min":661,"max":687},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1020},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1376,"max":1416},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7424,"max":7467},{"min":7531,"max":7543},{"min":7545,"max":7578},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7837},{"min":7839,"max":7839},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8458,"max":8458},{"min":8462,"max":8463},{"min":8467,"max":8467},{"min":8495,"max":8495},{"min":8500,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8509},{"min":8518,"max":8521},{"min":8526,"max":8526},{"min":8580,"max":8580},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11377,"max":11377},{"min":11379,"max":11380},{"min":11382,"max":11387},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11492},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42801},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42865,"max":42872},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42894,"max":42894},{"min":42897,"max":42897},{"min":42899,"max":42901},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42927,"max":42927},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43002,"max":43002},{"min":43824,"max":43866},{"min":43872,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":119834,"max":119859},{"min":119886,"max":119892},{"min":119894,"max":119911},{"min":119938,"max":119963},{"min":119990,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120015},{"min":120042,"max":120067},{"min":120094,"max":120119},{"min":120146,"max":120171},{"min":120198,"max":120223},{"min":120250,"max":120275},{"min":120302,"max":120327},{"min":120354,"max":120379},{"min":120406,"max":120431},{"min":120458,"max":120485},{"min":120514,"max":120538},{"min":120540,"max":120545},{"min":120572,"max":120596},{"min":120598,"max":120603},{"min":120630,"max":120654},{"min":120656,"max":120661},{"min":120688,"max":120712},{"min":120714,"max":120719},{"min":120746,"max":120770},{"min":120772,"max":120777},{"min":120779,"max":120779},{"min":125218,"max":125251}]'),Bi=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1161},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2307},{"min":2362,"max":2364},{"min":2366,"max":2383},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2435},{"min":2492,"max":2492},{"min":2494,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2509},{"min":2519,"max":2519},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2691},{"min":2748,"max":2748},{"min":2750,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2819},{"min":2876,"max":2876},{"min":2878,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3031,"max":3031},{"min":3072,"max":3076},{"min":3134,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3203},{"min":3260,"max":3260},{"min":3262,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3298,"max":3299},{"min":3328,"max":3331},{"min":3387,"max":3388},{"min":3390,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3405},{"min":3415,"max":3415},{"min":3426,"max":3427},{"min":3457,"max":3459},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3903},{"min":3953,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4139,"max":4158},{"min":4182,"max":4185},{"min":4190,"max":4192},{"min":4194,"max":4196},{"min":4199,"max":4205},{"min":4209,"max":4212},{"min":4226,"max":4237},{"min":4239,"max":4239},{"min":4250,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6679,"max":6683},{"min":6741,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6848},{"min":6912,"max":6916},{"min":6964,"max":6980},{"min":7019,"max":7027},{"min":7040,"max":7042},{"min":7073,"max":7085},{"min":7142,"max":7155},{"min":7204,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7415,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8400,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12335},{"min":12441,"max":12442},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43043,"max":43047},{"min":43052,"max":43052},{"min":43136,"max":43137},{"min":43188,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43347},{"min":43392,"max":43395},{"min":43443,"max":43456},{"min":43493,"max":43493},{"min":43561,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43597},{"min":43643,"max":43645},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43755,"max":43759},{"min":43765,"max":43766},{"min":44003,"max":44010},{"min":44012,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69632,"max":69634},{"min":69688,"max":69702},{"min":69759,"max":69762},{"min":69808,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69940},{"min":69957,"max":69958},{"min":70003,"max":70003},{"min":70016,"max":70018},{"min":70067,"max":70080},{"min":70089,"max":70092},{"min":70094,"max":70095},{"min":70188,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70378},{"min":70400,"max":70403},{"min":70459,"max":70460},{"min":70462,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70487,"max":70487},{"min":70498,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70709,"max":70726},{"min":70750,"max":70750},{"min":70832,"max":70851},{"min":71087,"max":71093},{"min":71096,"max":71104},{"min":71132,"max":71133},{"min":71216,"max":71232},{"min":71339,"max":71351},{"min":71453,"max":71467},{"min":71724,"max":71738},{"min":71984,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":71998},{"min":72000,"max":72000},{"min":72002,"max":72003},{"min":72145,"max":72151},{"min":72154,"max":72160},{"min":72164,"max":72164},{"min":72193,"max":72202},{"min":72243,"max":72249},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72283},{"min":72330,"max":72345},{"min":72751,"max":72758},{"min":72760,"max":72767},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73098,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73111},{"min":73459,"max":73462},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94033,"max":94087},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":94192,"max":94193},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917760,"max":917999}]'),Wi=JSON.parse('[{"min":43,"max":43},{"min":60,"max":62},{"min":124,"max":124},{"min":126,"max":126},{"min":172,"max":172},{"min":177,"max":177},{"min":215,"max":215},{"min":247,"max":247},{"min":1014,"max":1014},{"min":1542,"max":1544},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8314,"max":8316},{"min":8330,"max":8332},{"min":8472,"max":8472},{"min":8512,"max":8516},{"min":8523,"max":8523},{"min":8592,"max":8596},{"min":8602,"max":8603},{"min":8608,"max":8608},{"min":8611,"max":8611},{"min":8614,"max":8614},{"min":8622,"max":8622},{"min":8654,"max":8655},{"min":8658,"max":8658},{"min":8660,"max":8660},{"min":8692,"max":8959},{"min":8992,"max":8993},{"min":9084,"max":9084},{"min":9115,"max":9139},{"min":9180,"max":9185},{"min":9655,"max":9655},{"min":9665,"max":9665},{"min":9720,"max":9727},{"min":9839,"max":9839},{"min":10176,"max":10180},{"min":10183,"max":10213},{"min":10224,"max":10239},{"min":10496,"max":10626},{"min":10649,"max":10711},{"min":10716,"max":10747},{"min":10750,"max":11007},{"min":11056,"max":11076},{"min":11079,"max":11084},{"min":64297,"max":64297},{"min":65122,"max":65122},{"min":65124,"max":65126},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65506,"max":65506},{"min":65513,"max":65516},{"min":120513,"max":120513},{"min":120539,"max":120539},{"min":120571,"max":120571},{"min":120597,"max":120597},{"min":120629,"max":120629},{"min":120655,"max":120655},{"min":120687,"max":120687},{"min":120713,"max":120713},{"min":120745,"max":120745},{"min":120771,"max":120771},{"min":126704,"max":126705}]'),Fi=JSON.parse('[{"min":688,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":884,"max":884},{"min":890,"max":890},{"min":1369,"max":1369},{"min":1600,"max":1600},{"min":1765,"max":1766},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2417,"max":2417},{"min":3654,"max":3654},{"min":3782,"max":3782},{"min":4348,"max":4348},{"min":6103,"max":6103},{"min":6211,"max":6211},{"min":6823,"max":6823},{"min":7288,"max":7293},{"min":7468,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7615},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":11388,"max":11389},{"min":11631,"max":11631},{"min":11823,"max":11823},{"min":12293,"max":12293},{"min":12337,"max":12341},{"min":12347,"max":12347},{"min":12445,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42232,"max":42237},{"min":42508,"max":42508},{"min":42623,"max":42623},{"min":42652,"max":42653},{"min":42775,"max":42783},{"min":42864,"max":42864},{"min":42888,"max":42888},{"min":43000,"max":43001},{"min":43471,"max":43471},{"min":43494,"max":43494},{"min":43632,"max":43632},{"min":43741,"max":43741},{"min":43763,"max":43764},{"min":43868,"max":43871},{"min":43881,"max":43881},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":92992,"max":92995},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":123191,"max":123197},{"min":125259,"max":125259}]'),Qi=JSON.parse('[{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":175,"max":175},{"min":180,"max":180},{"min":184,"max":184},{"min":706,"max":709},{"min":722,"max":735},{"min":741,"max":747},{"min":749,"max":749},{"min":751,"max":767},{"min":885,"max":885},{"min":900,"max":901},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":12443,"max":12444},{"min":42752,"max":42774},{"min":42784,"max":42785},{"min":42889,"max":42890},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64434,"max":64449},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65507,"max":65507},{"min":127995,"max":127999}]'),Hi=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1159},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2879,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2902},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6964},{"min":6966,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12333},{"min":12441,"max":12442},{"min":42607,"max":42607},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43493,"max":43493},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43756,"max":43757},{"min":43766,"max":43766},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70464,"max":70464},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":113821,"max":113822},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917760,"max":917999}]'),ji=JSON.parse('[{"min":48,"max":57},{"min":178,"max":179},{"min":185,"max":185},{"min":188,"max":190},{"min":1632,"max":1641},{"min":1776,"max":1785},{"min":1984,"max":1993},{"min":2406,"max":2415},{"min":2534,"max":2543},{"min":2548,"max":2553},{"min":2662,"max":2671},{"min":2790,"max":2799},{"min":2918,"max":2927},{"min":2930,"max":2935},{"min":3046,"max":3058},{"min":3174,"max":3183},{"min":3192,"max":3198},{"min":3302,"max":3311},{"min":3416,"max":3422},{"min":3430,"max":3448},{"min":3558,"max":3567},{"min":3664,"max":3673},{"min":3792,"max":3801},{"min":3872,"max":3891},{"min":4160,"max":4169},{"min":4240,"max":4249},{"min":4969,"max":4988},{"min":5870,"max":5872},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6160,"max":6169},{"min":6470,"max":6479},{"min":6608,"max":6618},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6992,"max":7001},{"min":7088,"max":7097},{"min":7232,"max":7241},{"min":7248,"max":7257},{"min":8304,"max":8304},{"min":8308,"max":8313},{"min":8320,"max":8329},{"min":8528,"max":8578},{"min":8581,"max":8585},{"min":9312,"max":9371},{"min":9450,"max":9471},{"min":10102,"max":10131},{"min":11517,"max":11517},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":12690,"max":12693},{"min":12832,"max":12841},{"min":12872,"max":12879},{"min":12881,"max":12895},{"min":12928,"max":12937},{"min":12977,"max":12991},{"min":42528,"max":42537},{"min":42726,"max":42735},{"min":43056,"max":43061},{"min":43216,"max":43225},{"min":43264,"max":43273},{"min":43472,"max":43481},{"min":43504,"max":43513},{"min":43600,"max":43609},{"min":44016,"max":44025},{"min":65296,"max":65305},{"min":65799,"max":65843},{"min":65856,"max":65912},{"min":65930,"max":65931},{"min":66273,"max":66299},{"min":66336,"max":66339},{"min":66369,"max":66369},{"min":66378,"max":66378},{"min":66513,"max":66517},{"min":66720,"max":66729},{"min":67672,"max":67679},{"min":67705,"max":67711},{"min":67751,"max":67759},{"min":67835,"max":67839},{"min":67862,"max":67867},{"min":68028,"max":68029},{"min":68032,"max":68047},{"min":68050,"max":68095},{"min":68160,"max":68168},{"min":68221,"max":68222},{"min":68253,"max":68255},{"min":68331,"max":68335},{"min":68440,"max":68447},{"min":68472,"max":68479},{"min":68521,"max":68527},{"min":68858,"max":68863},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69405,"max":69414},{"min":69457,"max":69460},{"min":69573,"max":69579},{"min":69714,"max":69743},{"min":69872,"max":69881},{"min":69942,"max":69951},{"min":70096,"max":70105},{"min":70113,"max":70132},{"min":70384,"max":70393},{"min":70736,"max":70745},{"min":70864,"max":70873},{"min":71248,"max":71257},{"min":71360,"max":71369},{"min":71472,"max":71483},{"min":71904,"max":71922},{"min":72016,"max":72025},{"min":72784,"max":72812},{"min":73040,"max":73049},{"min":73120,"max":73129},{"min":73664,"max":73684},{"min":74752,"max":74862},{"min":92768,"max":92777},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93824,"max":93846},{"min":119520,"max":119539},{"min":119648,"max":119672},{"min":120782,"max":120831},{"min":123200,"max":123209},{"min":123632,"max":123641},{"min":125127,"max":125135},{"min":125264,"max":125273},{"min":126065,"max":126123},{"min":126125,"max":126127},{"min":126129,"max":126132},{"min":126209,"max":126253},{"min":126255,"max":126269},{"min":127232,"max":127244},{"min":130032,"max":130041}]'),zi=JSON.parse('[{"min":40,"max":40},{"min":91,"max":91},{"min":123,"max":123},{"min":3898,"max":3898},{"min":3900,"max":3900},{"min":5787,"max":5787},{"min":8218,"max":8218},{"min":8222,"max":8222},{"min":8261,"max":8261},{"min":8317,"max":8317},{"min":8333,"max":8333},{"min":8968,"max":8968},{"min":8970,"max":8970},{"min":9001,"max":9001},{"min":10088,"max":10088},{"min":10090,"max":10090},{"min":10092,"max":10092},{"min":10094,"max":10094},{"min":10096,"max":10096},{"min":10098,"max":10098},{"min":10100,"max":10100},{"min":10181,"max":10181},{"min":10214,"max":10214},{"min":10216,"max":10216},{"min":10218,"max":10218},{"min":10220,"max":10220},{"min":10222,"max":10222},{"min":10627,"max":10627},{"min":10629,"max":10629},{"min":10631,"max":10631},{"min":10633,"max":10633},{"min":10635,"max":10635},{"min":10637,"max":10637},{"min":10639,"max":10639},{"min":10641,"max":10641},{"min":10643,"max":10643},{"min":10645,"max":10645},{"min":10647,"max":10647},{"min":10712,"max":10712},{"min":10714,"max":10714},{"min":10748,"max":10748},{"min":11810,"max":11810},{"min":11812,"max":11812},{"min":11814,"max":11814},{"min":11816,"max":11816},{"min":11842,"max":11842},{"min":12296,"max":12296},{"min":12298,"max":12298},{"min":12300,"max":12300},{"min":12302,"max":12302},{"min":12304,"max":12304},{"min":12308,"max":12308},{"min":12310,"max":12310},{"min":12312,"max":12312},{"min":12314,"max":12314},{"min":12317,"max":12317},{"min":64831,"max":64831},{"min":65047,"max":65047},{"min":65077,"max":65077},{"min":65079,"max":65079},{"min":65081,"max":65081},{"min":65083,"max":65083},{"min":65085,"max":65085},{"min":65087,"max":65087},{"min":65089,"max":65089},{"min":65091,"max":65091},{"min":65095,"max":65095},{"min":65113,"max":65113},{"min":65115,"max":65115},{"min":65117,"max":65117},{"min":65288,"max":65288},{"min":65339,"max":65339},{"min":65371,"max":65371},{"min":65375,"max":65375},{"min":65378,"max":65378}]'),Ui=JSON.parse('[{"min":0,"max":31},{"min":127,"max":159},{"min":173,"max":173},{"min":888,"max":889},{"min":896,"max":899},{"min":907,"max":907},{"min":909,"max":909},{"min":930,"max":930},{"min":1328,"max":1328},{"min":1367,"max":1368},{"min":1419,"max":1420},{"min":1424,"max":1424},{"min":1480,"max":1487},{"min":1515,"max":1518},{"min":1525,"max":1541},{"min":1564,"max":1565},{"min":1757,"max":1757},{"min":1806,"max":1807},{"min":1867,"max":1868},{"min":1970,"max":1983},{"min":2043,"max":2044},{"min":2094,"max":2095},{"min":2111,"max":2111},{"min":2140,"max":2141},{"min":2143,"max":2143},{"min":2155,"max":2207},{"min":2229,"max":2229},{"min":2248,"max":2258},{"min":2274,"max":2274},{"min":2436,"max":2436},{"min":2445,"max":2446},{"min":2449,"max":2450},{"min":2473,"max":2473},{"min":2481,"max":2481},{"min":2483,"max":2485},{"min":2490,"max":2491},{"min":2501,"max":2502},{"min":2505,"max":2506},{"min":2511,"max":2518},{"min":2520,"max":2523},{"min":2526,"max":2526},{"min":2532,"max":2533},{"min":2559,"max":2560},{"min":2564,"max":2564},{"min":2571,"max":2574},{"min":2577,"max":2578},{"min":2601,"max":2601},{"min":2609,"max":2609},{"min":2612,"max":2612},{"min":2615,"max":2615},{"min":2618,"max":2619},{"min":2621,"max":2621},{"min":2627,"max":2630},{"min":2633,"max":2634},{"min":2638,"max":2640},{"min":2642,"max":2648},{"min":2653,"max":2653},{"min":2655,"max":2661},{"min":2679,"max":2688},{"min":2692,"max":2692},{"min":2702,"max":2702},{"min":2706,"max":2706},{"min":2729,"max":2729},{"min":2737,"max":2737},{"min":2740,"max":2740},{"min":2746,"max":2747},{"min":2758,"max":2758},{"min":2762,"max":2762},{"min":2766,"max":2767},{"min":2769,"max":2783},{"min":2788,"max":2789},{"min":2802,"max":2808},{"min":2816,"max":2816},{"min":2820,"max":2820},{"min":2829,"max":2830},{"min":2833,"max":2834},{"min":2857,"max":2857},{"min":2865,"max":2865},{"min":2868,"max":2868},{"min":2874,"max":2875},{"min":2885,"max":2886},{"min":2889,"max":2890},{"min":2894,"max":2900},{"min":2904,"max":2907},{"min":2910,"max":2910},{"min":2916,"max":2917},{"min":2936,"max":2945},{"min":2948,"max":2948},{"min":2955,"max":2957},{"min":2961,"max":2961},{"min":2966,"max":2968},{"min":2971,"max":2971},{"min":2973,"max":2973},{"min":2976,"max":2978},{"min":2981,"max":2983},{"min":2987,"max":2989},{"min":3002,"max":3005},{"min":3011,"max":3013},{"min":3017,"max":3017},{"min":3022,"max":3023},{"min":3025,"max":3030},{"min":3032,"max":3045},{"min":3067,"max":3071},{"min":3085,"max":3085},{"min":3089,"max":3089},{"min":3113,"max":3113},{"min":3130,"max":3132},{"min":3141,"max":3141},{"min":3145,"max":3145},{"min":3150,"max":3156},{"min":3159,"max":3159},{"min":3163,"max":3167},{"min":3172,"max":3173},{"min":3184,"max":3190},{"min":3213,"max":3213},{"min":3217,"max":3217},{"min":3241,"max":3241},{"min":3252,"max":3252},{"min":3258,"max":3259},{"min":3269,"max":3269},{"min":3273,"max":3273},{"min":3278,"max":3284},{"min":3287,"max":3293},{"min":3295,"max":3295},{"min":3300,"max":3301},{"min":3312,"max":3312},{"min":3315,"max":3327},{"min":3341,"max":3341},{"min":3345,"max":3345},{"min":3397,"max":3397},{"min":3401,"max":3401},{"min":3408,"max":3411},{"min":3428,"max":3429},{"min":3456,"max":3456},{"min":3460,"max":3460},{"min":3479,"max":3481},{"min":3506,"max":3506},{"min":3516,"max":3516},{"min":3518,"max":3519},{"min":3527,"max":3529},{"min":3531,"max":3534},{"min":3541,"max":3541},{"min":3543,"max":3543},{"min":3552,"max":3557},{"min":3568,"max":3569},{"min":3573,"max":3584},{"min":3643,"max":3646},{"min":3676,"max":3712},{"min":3715,"max":3715},{"min":3717,"max":3717},{"min":3723,"max":3723},{"min":3748,"max":3748},{"min":3750,"max":3750},{"min":3774,"max":3775},{"min":3781,"max":3781},{"min":3783,"max":3783},{"min":3790,"max":3791},{"min":3802,"max":3803},{"min":3808,"max":3839},{"min":3912,"max":3912},{"min":3949,"max":3952},{"min":3992,"max":3992},{"min":4029,"max":4029},{"min":4045,"max":4045},{"min":4059,"max":4095},{"min":4294,"max":4294},{"min":4296,"max":4300},{"min":4302,"max":4303},{"min":4681,"max":4681},{"min":4686,"max":4687},{"min":4695,"max":4695},{"min":4697,"max":4697},{"min":4702,"max":4703},{"min":4745,"max":4745},{"min":4750,"max":4751},{"min":4785,"max":4785},{"min":4790,"max":4791},{"min":4799,"max":4799},{"min":4801,"max":4801},{"min":4806,"max":4807},{"min":4823,"max":4823},{"min":4881,"max":4881},{"min":4886,"max":4887},{"min":4955,"max":4956},{"min":4989,"max":4991},{"min":5018,"max":5023},{"min":5110,"max":5111},{"min":5118,"max":5119},{"min":5789,"max":5791},{"min":5881,"max":5887},{"min":5901,"max":5901},{"min":5909,"max":5919},{"min":5943,"max":5951},{"min":5972,"max":5983},{"min":5997,"max":5997},{"min":6001,"max":6001},{"min":6004,"max":6015},{"min":6110,"max":6111},{"min":6122,"max":6127},{"min":6138,"max":6143},{"min":6158,"max":6159},{"min":6170,"max":6175},{"min":6265,"max":6271},{"min":6315,"max":6319},{"min":6390,"max":6399},{"min":6431,"max":6431},{"min":6444,"max":6447},{"min":6460,"max":6463},{"min":6465,"max":6467},{"min":6510,"max":6511},{"min":6517,"max":6527},{"min":6572,"max":6575},{"min":6602,"max":6607},{"min":6619,"max":6621},{"min":6684,"max":6685},{"min":6751,"max":6751},{"min":6781,"max":6782},{"min":6794,"max":6799},{"min":6810,"max":6815},{"min":6830,"max":6831},{"min":6849,"max":6911},{"min":6988,"max":6991},{"min":7037,"max":7039},{"min":7156,"max":7163},{"min":7224,"max":7226},{"min":7242,"max":7244},{"min":7305,"max":7311},{"min":7355,"max":7356},{"min":7368,"max":7375},{"min":7419,"max":7423},{"min":7674,"max":7674},{"min":7958,"max":7959},{"min":7966,"max":7967},{"min":8006,"max":8007},{"min":8014,"max":8015},{"min":8024,"max":8024},{"min":8026,"max":8026},{"min":8028,"max":8028},{"min":8030,"max":8030},{"min":8062,"max":8063},{"min":8117,"max":8117},{"min":8133,"max":8133},{"min":8148,"max":8149},{"min":8156,"max":8156},{"min":8176,"max":8177},{"min":8181,"max":8181},{"min":8191,"max":8191},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8303},{"min":8306,"max":8307},{"min":8335,"max":8335},{"min":8349,"max":8351},{"min":8384,"max":8399},{"min":8433,"max":8447},{"min":8588,"max":8591},{"min":9255,"max":9279},{"min":9291,"max":9311},{"min":11124,"max":11125},{"min":11158,"max":11158},{"min":11311,"max":11311},{"min":11359,"max":11359},{"min":11508,"max":11512},{"min":11558,"max":11558},{"min":11560,"max":11564},{"min":11566,"max":11567},{"min":11624,"max":11630},{"min":11633,"max":11646},{"min":11671,"max":11679},{"min":11687,"max":11687},{"min":11695,"max":11695},{"min":11703,"max":11703},{"min":11711,"max":11711},{"min":11719,"max":11719},{"min":11727,"max":11727},{"min":11735,"max":11735},{"min":11743,"max":11743},{"min":11859,"max":11903},{"min":11930,"max":11930},{"min":12020,"max":12031},{"min":12246,"max":12271},{"min":12284,"max":12287},{"min":12352,"max":12352},{"min":12439,"max":12440},{"min":12544,"max":12548},{"min":12592,"max":12592},{"min":12687,"max":12687},{"min":12772,"max":12783},{"min":12831,"max":12831},{"min":40957,"max":40959},{"min":42125,"max":42127},{"min":42183,"max":42191},{"min":42540,"max":42559},{"min":42744,"max":42751},{"min":42944,"max":42945},{"min":42955,"max":42996},{"min":43053,"max":43055},{"min":43066,"max":43071},{"min":43128,"max":43135},{"min":43206,"max":43213},{"min":43226,"max":43231},{"min":43348,"max":43358},{"min":43389,"max":43391},{"min":43470,"max":43470},{"min":43482,"max":43485},{"min":43519,"max":43519},{"min":43575,"max":43583},{"min":43598,"max":43599},{"min":43610,"max":43611},{"min":43715,"max":43738},{"min":43767,"max":43776},{"min":43783,"max":43784},{"min":43791,"max":43792},{"min":43799,"max":43807},{"min":43815,"max":43815},{"min":43823,"max":43823},{"min":43884,"max":43887},{"min":44014,"max":44015},{"min":44026,"max":44031},{"min":55204,"max":55215},{"min":55239,"max":55242},{"min":55292,"max":63743},{"min":64110,"max":64111},{"min":64218,"max":64255},{"min":64263,"max":64274},{"min":64280,"max":64284},{"min":64311,"max":64311},{"min":64317,"max":64317},{"min":64319,"max":64319},{"min":64322,"max":64322},{"min":64325,"max":64325},{"min":64450,"max":64466},{"min":64832,"max":64847},{"min":64912,"max":64913},{"min":64968,"max":65007},{"min":65022,"max":65023},{"min":65050,"max":65055},{"min":65107,"max":65107},{"min":65127,"max":65127},{"min":65132,"max":65135},{"min":65141,"max":65141},{"min":65277,"max":65280},{"min":65471,"max":65473},{"min":65480,"max":65481},{"min":65488,"max":65489},{"min":65496,"max":65497},{"min":65501,"max":65503},{"min":65511,"max":65511},{"min":65519,"max":65531},{"min":65534,"max":65535},{"min":65548,"max":65548},{"min":65575,"max":65575},{"min":65595,"max":65595},{"min":65598,"max":65598},{"min":65614,"max":65615},{"min":65630,"max":65663},{"min":65787,"max":65791},{"min":65795,"max":65798},{"min":65844,"max":65846},{"min":65935,"max":65935},{"min":65949,"max":65951},{"min":65953,"max":65999},{"min":66046,"max":66175},{"min":66205,"max":66207},{"min":66257,"max":66271},{"min":66300,"max":66303},{"min":66340,"max":66348},{"min":66379,"max":66383},{"min":66427,"max":66431},{"min":66462,"max":66462},{"min":66500,"max":66503},{"min":66518,"max":66559},{"min":66718,"max":66719},{"min":66730,"max":66735},{"min":66772,"max":66775},{"min":66812,"max":66815},{"min":66856,"max":66863},{"min":66916,"max":66926},{"min":66928,"max":67071},{"min":67383,"max":67391},{"min":67414,"max":67423},{"min":67432,"max":67583},{"min":67590,"max":67591},{"min":67593,"max":67593},{"min":67638,"max":67638},{"min":67641,"max":67643},{"min":67645,"max":67646},{"min":67670,"max":67670},{"min":67743,"max":67750},{"min":67760,"max":67807},{"min":67827,"max":67827},{"min":67830,"max":67834},{"min":67868,"max":67870},{"min":67898,"max":67902},{"min":67904,"max":67967},{"min":68024,"max":68027},{"min":68048,"max":68049},{"min":68100,"max":68100},{"min":68103,"max":68107},{"min":68116,"max":68116},{"min":68120,"max":68120},{"min":68150,"max":68151},{"min":68155,"max":68158},{"min":68169,"max":68175},{"min":68185,"max":68191},{"min":68256,"max":68287},{"min":68327,"max":68330},{"min":68343,"max":68351},{"min":68406,"max":68408},{"min":68438,"max":68439},{"min":68467,"max":68471},{"min":68498,"max":68504},{"min":68509,"max":68520},{"min":68528,"max":68607},{"min":68681,"max":68735},{"min":68787,"max":68799},{"min":68851,"max":68857},{"min":68904,"max":68911},{"min":68922,"max":69215},{"min":69247,"max":69247},{"min":69290,"max":69290},{"min":69294,"max":69295},{"min":69298,"max":69375},{"min":69416,"max":69423},{"min":69466,"max":69551},{"min":69580,"max":69599},{"min":69623,"max":69631},{"min":69710,"max":69713},{"min":69744,"max":69758},{"min":69821,"max":69821},{"min":69826,"max":69839},{"min":69865,"max":69871},{"min":69882,"max":69887},{"min":69941,"max":69941},{"min":69960,"max":69967},{"min":70007,"max":70015},{"min":70112,"max":70112},{"min":70133,"max":70143},{"min":70162,"max":70162},{"min":70207,"max":70271},{"min":70279,"max":70279},{"min":70281,"max":70281},{"min":70286,"max":70286},{"min":70302,"max":70302},{"min":70314,"max":70319},{"min":70379,"max":70383},{"min":70394,"max":70399},{"min":70404,"max":70404},{"min":70413,"max":70414},{"min":70417,"max":70418},{"min":70441,"max":70441},{"min":70449,"max":70449},{"min":70452,"max":70452},{"min":70458,"max":70458},{"min":70469,"max":70470},{"min":70473,"max":70474},{"min":70478,"max":70479},{"min":70481,"max":70486},{"min":70488,"max":70492},{"min":70500,"max":70501},{"min":70509,"max":70511},{"min":70517,"max":70655},{"min":70748,"max":70748},{"min":70754,"max":70783},{"min":70856,"max":70863},{"min":70874,"max":71039},{"min":71094,"max":71095},{"min":71134,"max":71167},{"min":71237,"max":71247},{"min":71258,"max":71263},{"min":71277,"max":71295},{"min":71353,"max":71359},{"min":71370,"max":71423},{"min":71451,"max":71452},{"min":71468,"max":71471},{"min":71488,"max":71679},{"min":71740,"max":71839},{"min":71923,"max":71934},{"min":71943,"max":71944},{"min":71946,"max":71947},{"min":71956,"max":71956},{"min":71959,"max":71959},{"min":71990,"max":71990},{"min":71993,"max":71994},{"min":72007,"max":72015},{"min":72026,"max":72095},{"min":72104,"max":72105},{"min":72152,"max":72153},{"min":72165,"max":72191},{"min":72264,"max":72271},{"min":72355,"max":72383},{"min":72441,"max":72703},{"min":72713,"max":72713},{"min":72759,"max":72759},{"min":72774,"max":72783},{"min":72813,"max":72815},{"min":72848,"max":72849},{"min":72872,"max":72872},{"min":72887,"max":72959},{"min":72967,"max":72967},{"min":72970,"max":72970},{"min":73015,"max":73017},{"min":73019,"max":73019},{"min":73022,"max":73022},{"min":73032,"max":73039},{"min":73050,"max":73055},{"min":73062,"max":73062},{"min":73065,"max":73065},{"min":73103,"max":73103},{"min":73106,"max":73106},{"min":73113,"max":73119},{"min":73130,"max":73439},{"min":73465,"max":73647},{"min":73649,"max":73663},{"min":73714,"max":73726},{"min":74650,"max":74751},{"min":74863,"max":74863},{"min":74869,"max":74879},{"min":75076,"max":77823},{"min":78895,"max":82943},{"min":83527,"max":92159},{"min":92729,"max":92735},{"min":92767,"max":92767},{"min":92778,"max":92781},{"min":92784,"max":92879},{"min":92910,"max":92911},{"min":92918,"max":92927},{"min":92998,"max":93007},{"min":93018,"max":93018},{"min":93026,"max":93026},{"min":93048,"max":93052},{"min":93072,"max":93759},{"min":93851,"max":93951},{"min":94027,"max":94030},{"min":94088,"max":94094},{"min":94112,"max":94175},{"min":94181,"max":94191},{"min":94194,"max":94207},{"min":100344,"max":100351},{"min":101590,"max":101631},{"min":101641,"max":110591},{"min":110879,"max":110927},{"min":110931,"max":110947},{"min":110952,"max":110959},{"min":111356,"max":113663},{"min":113771,"max":113775},{"min":113789,"max":113791},{"min":113801,"max":113807},{"min":113818,"max":113819},{"min":113824,"max":118783},{"min":119030,"max":119039},{"min":119079,"max":119080},{"min":119155,"max":119162},{"min":119273,"max":119295},{"min":119366,"max":119519},{"min":119540,"max":119551},{"min":119639,"max":119647},{"min":119673,"max":119807},{"min":119893,"max":119893},{"min":119965,"max":119965},{"min":119968,"max":119969},{"min":119971,"max":119972},{"min":119975,"max":119976},{"min":119981,"max":119981},{"min":119994,"max":119994},{"min":119996,"max":119996},{"min":120004,"max":120004},{"min":120070,"max":120070},{"min":120075,"max":120076},{"min":120085,"max":120085},{"min":120093,"max":120093},{"min":120122,"max":120122},{"min":120127,"max":120127},{"min":120133,"max":120133},{"min":120135,"max":120137},{"min":120145,"max":120145},{"min":120486,"max":120487},{"min":120780,"max":120781},{"min":121484,"max":121498},{"min":121504,"max":121504},{"min":121520,"max":122879},{"min":122887,"max":122887},{"min":122905,"max":122906},{"min":122914,"max":122914},{"min":122917,"max":122917},{"min":122923,"max":123135},{"min":123181,"max":123183},{"min":123198,"max":123199},{"min":123210,"max":123213},{"min":123216,"max":123583},{"min":123642,"max":123646},{"min":123648,"max":124927},{"min":125125,"max":125126},{"min":125143,"max":125183},{"min":125260,"max":125263},{"min":125274,"max":125277},{"min":125280,"max":126064},{"min":126133,"max":126208},{"min":126270,"max":126463},{"min":126468,"max":126468},{"min":126496,"max":126496},{"min":126499,"max":126499},{"min":126501,"max":126502},{"min":126504,"max":126504},{"min":126515,"max":126515},{"min":126520,"max":126520},{"min":126522,"max":126522},{"min":126524,"max":126529},{"min":126531,"max":126534},{"min":126536,"max":126536},{"min":126538,"max":126538},{"min":126540,"max":126540},{"min":126544,"max":126544},{"min":126547,"max":126547},{"min":126549,"max":126550},{"min":126552,"max":126552},{"min":126554,"max":126554},{"min":126556,"max":126556},{"min":126558,"max":126558},{"min":126560,"max":126560},{"min":126563,"max":126563},{"min":126565,"max":126566},{"min":126571,"max":126571},{"min":126579,"max":126579},{"min":126584,"max":126584},{"min":126589,"max":126589},{"min":126591,"max":126591},{"min":126602,"max":126602},{"min":126620,"max":126624},{"min":126628,"max":126628},{"min":126634,"max":126634},{"min":126652,"max":126703},{"min":126706,"max":126975},{"min":127020,"max":127023},{"min":127124,"max":127135},{"min":127151,"max":127152},{"min":127168,"max":127168},{"min":127184,"max":127184},{"min":127222,"max":127231},{"min":127406,"max":127461},{"min":127491,"max":127503},{"min":127548,"max":127551},{"min":127561,"max":127567},{"min":127570,"max":127583},{"min":127590,"max":127743},{"min":128728,"max":128735},{"min":128749,"max":128751},{"min":128765,"max":128767},{"min":128884,"max":128895},{"min":128985,"max":128991},{"min":129004,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129199},{"min":129202,"max":129279},{"min":129401,"max":129401},{"min":129484,"max":129484},{"min":129620,"max":129631},{"min":129646,"max":129647},{"min":129653,"max":129655},{"min":129659,"max":129663},{"min":129671,"max":129679},{"min":129705,"max":129711},{"min":129719,"max":129727},{"min":129731,"max":129743},{"min":129751,"max":129791},{"min":129939,"max":129939},{"min":129995,"max":130031},{"min":130042,"max":131071},{"min":173790,"max":173823},{"min":177973,"max":177983},{"min":178206,"max":178207},{"min":183970,"max":183983},{"min":191457,"max":194559},{"min":195102,"max":196607},{"min":201547,"max":917759},{"min":918000,"max":1114111}]'),Ki=JSON.parse('[{"min":170,"max":170},{"min":186,"max":186},{"min":443,"max":443},{"min":448,"max":451},{"min":660,"max":660},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1599},{"min":1601,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2048,"max":2069},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2418,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3653},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4352,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5873,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6108,"max":6108},{"min":6176,"max":6210},{"min":6212,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7287},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":8501,"max":8504},{"min":11568,"max":11623},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12294,"max":12294},{"min":12348,"max":12348},{"min":12353,"max":12438},{"min":12447,"max":12447},{"min":12449,"max":12538},{"min":12543,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":40980},{"min":40982,"max":42124},{"min":42192,"max":42231},{"min":42240,"max":42507},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42606,"max":42606},{"min":42656,"max":42725},{"min":42895,"max":42895},{"min":42999,"max":42999},{"min":43003,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43488,"max":43492},{"min":43495,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43631},{"min":43633,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43740},{"min":43744,"max":43754},{"min":43762,"max":43762},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43968,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65382,"max":65391},{"min":65393,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66368},{"min":66370,"max":66377},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66640,"max":66717},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":123136,"max":123180},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),qi=JSON.parse('[{"min":178,"max":179},{"min":185,"max":185},{"min":188,"max":190},{"min":2548,"max":2553},{"min":2930,"max":2935},{"min":3056,"max":3058},{"min":3192,"max":3198},{"min":3416,"max":3422},{"min":3440,"max":3448},{"min":3882,"max":3891},{"min":4969,"max":4988},{"min":6128,"max":6137},{"min":6618,"max":6618},{"min":8304,"max":8304},{"min":8308,"max":8313},{"min":8320,"max":8329},{"min":8528,"max":8543},{"min":8585,"max":8585},{"min":9312,"max":9371},{"min":9450,"max":9471},{"min":10102,"max":10131},{"min":11517,"max":11517},{"min":12690,"max":12693},{"min":12832,"max":12841},{"min":12872,"max":12879},{"min":12881,"max":12895},{"min":12928,"max":12937},{"min":12977,"max":12991},{"min":43056,"max":43061},{"min":65799,"max":65843},{"min":65909,"max":65912},{"min":65930,"max":65931},{"min":66273,"max":66299},{"min":66336,"max":66339},{"min":67672,"max":67679},{"min":67705,"max":67711},{"min":67751,"max":67759},{"min":67835,"max":67839},{"min":67862,"max":67867},{"min":68028,"max":68029},{"min":68032,"max":68047},{"min":68050,"max":68095},{"min":68160,"max":68168},{"min":68221,"max":68222},{"min":68253,"max":68255},{"min":68331,"max":68335},{"min":68440,"max":68447},{"min":68472,"max":68479},{"min":68521,"max":68527},{"min":68858,"max":68863},{"min":69216,"max":69246},{"min":69405,"max":69414},{"min":69457,"max":69460},{"min":69573,"max":69579},{"min":69714,"max":69733},{"min":70113,"max":70132},{"min":71482,"max":71483},{"min":71914,"max":71922},{"min":72794,"max":72812},{"min":73664,"max":73684},{"min":93019,"max":93025},{"min":93824,"max":93846},{"min":119520,"max":119539},{"min":119648,"max":119672},{"min":125127,"max":125135},{"min":126065,"max":126123},{"min":126125,"max":126127},{"min":126129,"max":126132},{"min":126209,"max":126253},{"min":126255,"max":126269},{"min":127232,"max":127244}]'),$i=JSON.parse('[{"min":33,"max":35},{"min":37,"max":39},{"min":42,"max":42},{"min":44,"max":44},{"min":46,"max":47},{"min":58,"max":59},{"min":63,"max":64},{"min":92,"max":92},{"min":161,"max":161},{"min":167,"max":167},{"min":182,"max":183},{"min":191,"max":191},{"min":894,"max":894},{"min":903,"max":903},{"min":1370,"max":1375},{"min":1417,"max":1417},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1523,"max":1524},{"min":1545,"max":1546},{"min":1548,"max":1549},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1642,"max":1645},{"min":1748,"max":1748},{"min":1792,"max":1805},{"min":2039,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":2416,"max":2416},{"min":2557,"max":2557},{"min":2678,"max":2678},{"min":2800,"max":2800},{"min":3191,"max":3191},{"min":3204,"max":3204},{"min":3572,"max":3572},{"min":3663,"max":3663},{"min":3674,"max":3675},{"min":3844,"max":3858},{"min":3860,"max":3860},{"min":3973,"max":3973},{"min":4048,"max":4052},{"min":4057,"max":4058},{"min":4170,"max":4175},{"min":4347,"max":4347},{"min":4960,"max":4968},{"min":5742,"max":5742},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6104,"max":6106},{"min":6144,"max":6149},{"min":6151,"max":6154},{"min":6468,"max":6469},{"min":6686,"max":6687},{"min":6816,"max":6822},{"min":6824,"max":6829},{"min":7002,"max":7008},{"min":7164,"max":7167},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":7360,"max":7367},{"min":7379,"max":7379},{"min":8214,"max":8215},{"min":8224,"max":8231},{"min":8240,"max":8248},{"min":8251,"max":8254},{"min":8257,"max":8259},{"min":8263,"max":8273},{"min":8275,"max":8275},{"min":8277,"max":8286},{"min":11513,"max":11516},{"min":11518,"max":11519},{"min":11632,"max":11632},{"min":11776,"max":11777},{"min":11782,"max":11784},{"min":11787,"max":11787},{"min":11790,"max":11798},{"min":11800,"max":11801},{"min":11803,"max":11803},{"min":11806,"max":11807},{"min":11818,"max":11822},{"min":11824,"max":11833},{"min":11836,"max":11839},{"min":11841,"max":11841},{"min":11843,"max":11855},{"min":11858,"max":11858},{"min":12289,"max":12291},{"min":12349,"max":12349},{"min":12539,"max":12539},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42611,"max":42611},{"min":42622,"max":42622},{"min":42738,"max":42743},{"min":43124,"max":43127},{"min":43214,"max":43215},{"min":43256,"max":43258},{"min":43260,"max":43260},{"min":43310,"max":43311},{"min":43359,"max":43359},{"min":43457,"max":43469},{"min":43486,"max":43487},{"min":43612,"max":43615},{"min":43742,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65040,"max":65046},{"min":65049,"max":65049},{"min":65072,"max":65072},{"min":65093,"max":65094},{"min":65097,"max":65100},{"min":65104,"max":65106},{"min":65108,"max":65111},{"min":65119,"max":65121},{"min":65128,"max":65128},{"min":65130,"max":65131},{"min":65281,"max":65283},{"min":65285,"max":65287},{"min":65290,"max":65290},{"min":65292,"max":65292},{"min":65294,"max":65295},{"min":65306,"max":65307},{"min":65311,"max":65312},{"min":65340,"max":65340},{"min":65377,"max":65377},{"min":65380,"max":65381},{"min":65792,"max":65794},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":66927,"max":66927},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":67903,"max":67903},{"min":68176,"max":68184},{"min":68223,"max":68223},{"min":68336,"max":68342},{"min":68409,"max":68415},{"min":68505,"max":68508},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69952,"max":69955},{"min":70004,"max":70005},{"min":70085,"max":70088},{"min":70093,"max":70093},{"min":70107,"max":70107},{"min":70109,"max":70111},{"min":70200,"max":70205},{"min":70313,"max":70313},{"min":70731,"max":70735},{"min":70746,"max":70747},{"min":70749,"max":70749},{"min":70854,"max":70854},{"min":71105,"max":71127},{"min":71233,"max":71235},{"min":71264,"max":71276},{"min":71484,"max":71486},{"min":71739,"max":71739},{"min":72004,"max":72006},{"min":72162,"max":72162},{"min":72255,"max":72262},{"min":72346,"max":72348},{"min":72350,"max":72354},{"min":72769,"max":72773},{"min":72816,"max":72817},{"min":73463,"max":73464},{"min":73727,"max":73727},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92987},{"min":92996,"max":92996},{"min":93847,"max":93850},{"min":94178,"max":94178},{"min":113823,"max":113823},{"min":121479,"max":121483},{"min":125278,"max":125279}]'),Vi=JSON.parse('[{"min":166,"max":166},{"min":169,"max":169},{"min":174,"max":174},{"min":176,"max":176},{"min":1154,"max":1154},{"min":1421,"max":1422},{"min":1550,"max":1551},{"min":1758,"max":1758},{"min":1769,"max":1769},{"min":1789,"max":1790},{"min":2038,"max":2038},{"min":2554,"max":2554},{"min":2928,"max":2928},{"min":3059,"max":3064},{"min":3066,"max":3066},{"min":3199,"max":3199},{"min":3407,"max":3407},{"min":3449,"max":3449},{"min":3841,"max":3843},{"min":3859,"max":3859},{"min":3861,"max":3863},{"min":3866,"max":3871},{"min":3892,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4047},{"min":4053,"max":4056},{"min":4254,"max":4255},{"min":5008,"max":5017},{"min":5741,"max":5741},{"min":6464,"max":6464},{"min":6622,"max":6655},{"min":7009,"max":7018},{"min":7028,"max":7036},{"min":8448,"max":8449},{"min":8451,"max":8454},{"min":8456,"max":8457},{"min":8468,"max":8468},{"min":8470,"max":8471},{"min":8478,"max":8483},{"min":8485,"max":8485},{"min":8487,"max":8487},{"min":8489,"max":8489},{"min":8494,"max":8494},{"min":8506,"max":8507},{"min":8522,"max":8522},{"min":8524,"max":8525},{"min":8527,"max":8527},{"min":8586,"max":8587},{"min":8597,"max":8601},{"min":8604,"max":8607},{"min":8609,"max":8610},{"min":8612,"max":8613},{"min":8615,"max":8621},{"min":8623,"max":8653},{"min":8656,"max":8657},{"min":8659,"max":8659},{"min":8661,"max":8691},{"min":8960,"max":8967},{"min":8972,"max":8991},{"min":8994,"max":9000},{"min":9003,"max":9083},{"min":9085,"max":9114},{"min":9140,"max":9179},{"min":9186,"max":9254},{"min":9280,"max":9290},{"min":9372,"max":9449},{"min":9472,"max":9654},{"min":9656,"max":9664},{"min":9666,"max":9719},{"min":9728,"max":9838},{"min":9840,"max":10087},{"min":10132,"max":10175},{"min":10240,"max":10495},{"min":11008,"max":11055},{"min":11077,"max":11078},{"min":11085,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11493,"max":11498},{"min":11856,"max":11857},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12292,"max":12292},{"min":12306,"max":12307},{"min":12320,"max":12320},{"min":12342,"max":12343},{"min":12350,"max":12351},{"min":12688,"max":12689},{"min":12694,"max":12703},{"min":12736,"max":12771},{"min":12800,"max":12830},{"min":12842,"max":12871},{"min":12880,"max":12880},{"min":12896,"max":12927},{"min":12938,"max":12976},{"min":12992,"max":13311},{"min":19904,"max":19967},{"min":42128,"max":42182},{"min":43048,"max":43051},{"min":43062,"max":43063},{"min":43065,"max":43065},{"min":43639,"max":43641},{"min":65021,"max":65021},{"min":65508,"max":65508},{"min":65512,"max":65512},{"min":65517,"max":65518},{"min":65532,"max":65533},{"min":65847,"max":65855},{"min":65913,"max":65929},{"min":65932,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":67703,"max":67704},{"min":68296,"max":68296},{"min":71487,"max":71487},{"min":73685,"max":73692},{"min":73697,"max":73713},{"min":92988,"max":92991},{"min":92997,"max":92997},{"min":113820,"max":113820},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119146,"max":119148},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119552,"max":119638},{"min":120832,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121478},{"min":123215,"max":123215},{"min":126124,"max":126124},{"min":126254,"max":126254},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127245,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":127994},{"min":128000,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994}]'),Xi=JSON.parse('[{"min":8233,"max":8233}]'),Zi=JSON.parse('[{"min":57344,"max":63743},{"min":983040,"max":1048573},{"min":1048576,"max":1114109}]'),Yi=JSON.parse('[{"min":33,"max":35},{"min":37,"max":42},{"min":44,"max":47},{"min":58,"max":59},{"min":63,"max":64},{"min":91,"max":93},{"min":95,"max":95},{"min":123,"max":123},{"min":125,"max":125},{"min":161,"max":161},{"min":167,"max":167},{"min":171,"max":171},{"min":182,"max":183},{"min":187,"max":187},{"min":191,"max":191},{"min":894,"max":894},{"min":903,"max":903},{"min":1370,"max":1375},{"min":1417,"max":1418},{"min":1470,"max":1470},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1523,"max":1524},{"min":1545,"max":1546},{"min":1548,"max":1549},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1642,"max":1645},{"min":1748,"max":1748},{"min":1792,"max":1805},{"min":2039,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":2416,"max":2416},{"min":2557,"max":2557},{"min":2678,"max":2678},{"min":2800,"max":2800},{"min":3191,"max":3191},{"min":3204,"max":3204},{"min":3572,"max":3572},{"min":3663,"max":3663},{"min":3674,"max":3675},{"min":3844,"max":3858},{"min":3860,"max":3860},{"min":3898,"max":3901},{"min":3973,"max":3973},{"min":4048,"max":4052},{"min":4057,"max":4058},{"min":4170,"max":4175},{"min":4347,"max":4347},{"min":4960,"max":4968},{"min":5120,"max":5120},{"min":5742,"max":5742},{"min":5787,"max":5788},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6104,"max":6106},{"min":6144,"max":6154},{"min":6468,"max":6469},{"min":6686,"max":6687},{"min":6816,"max":6822},{"min":6824,"max":6829},{"min":7002,"max":7008},{"min":7164,"max":7167},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":7360,"max":7367},{"min":7379,"max":7379},{"min":8208,"max":8231},{"min":8240,"max":8259},{"min":8261,"max":8273},{"min":8275,"max":8286},{"min":8317,"max":8318},{"min":8333,"max":8334},{"min":8968,"max":8971},{"min":9001,"max":9002},{"min":10088,"max":10101},{"min":10181,"max":10182},{"min":10214,"max":10223},{"min":10627,"max":10648},{"min":10712,"max":10715},{"min":10748,"max":10749},{"min":11513,"max":11516},{"min":11518,"max":11519},{"min":11632,"max":11632},{"min":11776,"max":11822},{"min":11824,"max":11855},{"min":11858,"max":11858},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12308,"max":12319},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12448,"max":12448},{"min":12539,"max":12539},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42611,"max":42611},{"min":42622,"max":42622},{"min":42738,"max":42743},{"min":43124,"max":43127},{"min":43214,"max":43215},{"min":43256,"max":43258},{"min":43260,"max":43260},{"min":43310,"max":43311},{"min":43359,"max":43359},{"min":43457,"max":43469},{"min":43486,"max":43487},{"min":43612,"max":43615},{"min":43742,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65121},{"min":65123,"max":65123},{"min":65128,"max":65128},{"min":65130,"max":65131},{"min":65281,"max":65283},{"min":65285,"max":65290},{"min":65292,"max":65295},{"min":65306,"max":65307},{"min":65311,"max":65312},{"min":65339,"max":65341},{"min":65343,"max":65343},{"min":65371,"max":65371},{"min":65373,"max":65373},{"min":65375,"max":65381},{"min":65792,"max":65794},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":66927,"max":66927},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":67903,"max":67903},{"min":68176,"max":68184},{"min":68223,"max":68223},{"min":68336,"max":68342},{"min":68409,"max":68415},{"min":68505,"max":68508},{"min":69293,"max":69293},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69952,"max":69955},{"min":70004,"max":70005},{"min":70085,"max":70088},{"min":70093,"max":70093},{"min":70107,"max":70107},{"min":70109,"max":70111},{"min":70200,"max":70205},{"min":70313,"max":70313},{"min":70731,"max":70735},{"min":70746,"max":70747},{"min":70749,"max":70749},{"min":70854,"max":70854},{"min":71105,"max":71127},{"min":71233,"max":71235},{"min":71264,"max":71276},{"min":71484,"max":71486},{"min":71739,"max":71739},{"min":72004,"max":72006},{"min":72162,"max":72162},{"min":72255,"max":72262},{"min":72346,"max":72348},{"min":72350,"max":72354},{"min":72769,"max":72773},{"min":72816,"max":72817},{"min":73463,"max":73464},{"min":73727,"max":73727},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92987},{"min":92996,"max":92996},{"min":93847,"max":93850},{"min":94178,"max":94178},{"min":113823,"max":113823},{"min":121479,"max":121483},{"min":125278,"max":125279}]'),mx=JSON.parse('[{"min":32,"max":32},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8232,"max":8233},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),nx=JSON.parse('[{"min":32,"max":32},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),ax=JSON.parse('[{"min":2307,"max":2307},{"min":2363,"max":2363},{"min":2366,"max":2368},{"min":2377,"max":2380},{"min":2382,"max":2383},{"min":2434,"max":2435},{"min":2494,"max":2496},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2519,"max":2519},{"min":2563,"max":2563},{"min":2622,"max":2624},{"min":2691,"max":2691},{"min":2750,"max":2752},{"min":2761,"max":2761},{"min":2763,"max":2764},{"min":2818,"max":2819},{"min":2878,"max":2878},{"min":2880,"max":2880},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2903,"max":2903},{"min":3006,"max":3007},{"min":3009,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3031,"max":3031},{"min":3073,"max":3075},{"min":3137,"max":3140},{"min":3202,"max":3203},{"min":3262,"max":3262},{"min":3264,"max":3268},{"min":3271,"max":3272},{"min":3274,"max":3275},{"min":3285,"max":3286},{"min":3330,"max":3331},{"min":3390,"max":3392},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3415,"max":3415},{"min":3458,"max":3459},{"min":3535,"max":3537},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3902,"max":3903},{"min":3967,"max":3967},{"min":4139,"max":4140},{"min":4145,"max":4145},{"min":4152,"max":4152},{"min":4155,"max":4156},{"min":4182,"max":4183},{"min":4194,"max":4196},{"min":4199,"max":4205},{"min":4227,"max":4228},{"min":4231,"max":4236},{"min":4239,"max":4239},{"min":4250,"max":4252},{"min":6070,"max":6070},{"min":6078,"max":6085},{"min":6087,"max":6088},{"min":6435,"max":6438},{"min":6441,"max":6443},{"min":6448,"max":6449},{"min":6451,"max":6456},{"min":6681,"max":6682},{"min":6741,"max":6741},{"min":6743,"max":6743},{"min":6753,"max":6753},{"min":6755,"max":6756},{"min":6765,"max":6770},{"min":6916,"max":6916},{"min":6965,"max":6965},{"min":6971,"max":6971},{"min":6973,"max":6977},{"min":6979,"max":6980},{"min":7042,"max":7042},{"min":7073,"max":7073},{"min":7078,"max":7079},{"min":7082,"max":7082},{"min":7143,"max":7143},{"min":7146,"max":7148},{"min":7150,"max":7150},{"min":7154,"max":7155},{"min":7204,"max":7211},{"min":7220,"max":7221},{"min":7393,"max":7393},{"min":7415,"max":7415},{"min":12334,"max":12335},{"min":43043,"max":43044},{"min":43047,"max":43047},{"min":43136,"max":43137},{"min":43188,"max":43203},{"min":43346,"max":43347},{"min":43395,"max":43395},{"min":43444,"max":43445},{"min":43450,"max":43451},{"min":43454,"max":43456},{"min":43567,"max":43568},{"min":43571,"max":43572},{"min":43597,"max":43597},{"min":43643,"max":43643},{"min":43645,"max":43645},{"min":43755,"max":43755},{"min":43758,"max":43759},{"min":43765,"max":43765},{"min":44003,"max":44004},{"min":44006,"max":44007},{"min":44009,"max":44010},{"min":44012,"max":44012},{"min":69632,"max":69632},{"min":69634,"max":69634},{"min":69762,"max":69762},{"min":69808,"max":69810},{"min":69815,"max":69816},{"min":69932,"max":69932},{"min":69957,"max":69958},{"min":70018,"max":70018},{"min":70067,"max":70069},{"min":70079,"max":70080},{"min":70094,"max":70094},{"min":70188,"max":70190},{"min":70194,"max":70195},{"min":70197,"max":70197},{"min":70368,"max":70370},{"min":70402,"max":70403},{"min":70462,"max":70463},{"min":70465,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70487,"max":70487},{"min":70498,"max":70499},{"min":70709,"max":70711},{"min":70720,"max":70721},{"min":70725,"max":70725},{"min":70832,"max":70834},{"min":70841,"max":70841},{"min":70843,"max":70846},{"min":70849,"max":70849},{"min":71087,"max":71089},{"min":71096,"max":71099},{"min":71102,"max":71102},{"min":71216,"max":71218},{"min":71227,"max":71228},{"min":71230,"max":71230},{"min":71340,"max":71340},{"min":71342,"max":71343},{"min":71350,"max":71350},{"min":71456,"max":71457},{"min":71462,"max":71462},{"min":71724,"max":71726},{"min":71736,"max":71736},{"min":71984,"max":71989},{"min":71991,"max":71992},{"min":71997,"max":71997},{"min":72000,"max":72000},{"min":72002,"max":72002},{"min":72145,"max":72147},{"min":72156,"max":72159},{"min":72164,"max":72164},{"min":72249,"max":72249},{"min":72279,"max":72280},{"min":72343,"max":72343},{"min":72751,"max":72751},{"min":72766,"max":72766},{"min":72873,"max":72873},{"min":72881,"max":72881},{"min":72884,"max":72884},{"min":73098,"max":73102},{"min":73107,"max":73108},{"min":73110,"max":73110},{"min":73461,"max":73462},{"min":94033,"max":94087},{"min":94192,"max":94193},{"min":119141,"max":119142},{"min":119149,"max":119154}]'),ix=JSON.parse('[{"min":55296,"max":57343}]'),xx=JSON.parse('[{"min":36,"max":36},{"min":43,"max":43},{"min":60,"max":62},{"min":94,"max":94},{"min":96,"max":96},{"min":124,"max":124},{"min":126,"max":126},{"min":162,"max":166},{"min":168,"max":169},{"min":172,"max":172},{"min":174,"max":177},{"min":180,"max":180},{"min":184,"max":184},{"min":215,"max":215},{"min":247,"max":247},{"min":706,"max":709},{"min":722,"max":735},{"min":741,"max":747},{"min":749,"max":749},{"min":751,"max":767},{"min":885,"max":885},{"min":900,"max":901},{"min":1014,"max":1014},{"min":1154,"max":1154},{"min":1421,"max":1423},{"min":1542,"max":1544},{"min":1547,"max":1547},{"min":1550,"max":1551},{"min":1758,"max":1758},{"min":1769,"max":1769},{"min":1789,"max":1790},{"min":2038,"max":2038},{"min":2046,"max":2047},{"min":2546,"max":2547},{"min":2554,"max":2555},{"min":2801,"max":2801},{"min":2928,"max":2928},{"min":3059,"max":3066},{"min":3199,"max":3199},{"min":3407,"max":3407},{"min":3449,"max":3449},{"min":3647,"max":3647},{"min":3841,"max":3843},{"min":3859,"max":3859},{"min":3861,"max":3863},{"min":3866,"max":3871},{"min":3892,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4047},{"min":4053,"max":4056},{"min":4254,"max":4255},{"min":5008,"max":5017},{"min":5741,"max":5741},{"min":6107,"max":6107},{"min":6464,"max":6464},{"min":6622,"max":6655},{"min":7009,"max":7018},{"min":7028,"max":7036},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8314,"max":8316},{"min":8330,"max":8332},{"min":8352,"max":8383},{"min":8448,"max":8449},{"min":8451,"max":8454},{"min":8456,"max":8457},{"min":8468,"max":8468},{"min":8470,"max":8472},{"min":8478,"max":8483},{"min":8485,"max":8485},{"min":8487,"max":8487},{"min":8489,"max":8489},{"min":8494,"max":8494},{"min":8506,"max":8507},{"min":8512,"max":8516},{"min":8522,"max":8525},{"min":8527,"max":8527},{"min":8586,"max":8587},{"min":8592,"max":8967},{"min":8972,"max":9000},{"min":9003,"max":9254},{"min":9280,"max":9290},{"min":9372,"max":9449},{"min":9472,"max":10087},{"min":10132,"max":10180},{"min":10183,"max":10213},{"min":10224,"max":10626},{"min":10649,"max":10711},{"min":10716,"max":10747},{"min":10750,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11493,"max":11498},{"min":11856,"max":11857},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12292,"max":12292},{"min":12306,"max":12307},{"min":12320,"max":12320},{"min":12342,"max":12343},{"min":12350,"max":12351},{"min":12443,"max":12444},{"min":12688,"max":12689},{"min":12694,"max":12703},{"min":12736,"max":12771},{"min":12800,"max":12830},{"min":12842,"max":12871},{"min":12880,"max":12880},{"min":12896,"max":12927},{"min":12938,"max":12976},{"min":12992,"max":13311},{"min":19904,"max":19967},{"min":42128,"max":42182},{"min":42752,"max":42774},{"min":42784,"max":42785},{"min":42889,"max":42890},{"min":43048,"max":43051},{"min":43062,"max":43065},{"min":43639,"max":43641},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64297,"max":64297},{"min":64434,"max":64449},{"min":65020,"max":65021},{"min":65122,"max":65122},{"min":65124,"max":65126},{"min":65129,"max":65129},{"min":65284,"max":65284},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65532,"max":65533},{"min":65847,"max":65855},{"min":65913,"max":65929},{"min":65932,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":67703,"max":67704},{"min":68296,"max":68296},{"min":71487,"max":71487},{"min":73685,"max":73713},{"min":92988,"max":92991},{"min":92997,"max":92997},{"min":113820,"max":113820},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119146,"max":119148},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119552,"max":119638},{"min":120513,"max":120513},{"min":120539,"max":120539},{"min":120571,"max":120571},{"min":120597,"max":120597},{"min":120629,"max":120629},{"min":120655,"max":120655},{"min":120687,"max":120687},{"min":120713,"max":120713},{"min":120745,"max":120745},{"min":120771,"max":120771},{"min":120832,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121478},{"min":123215,"max":123215},{"min":123647,"max":123647},{"min":126124,"max":126124},{"min":126128,"max":126128},{"min":126254,"max":126254},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127245,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994}]'),ex=JSON.parse('[{"min":453,"max":453},{"min":456,"max":456},{"min":459,"max":459},{"min":498,"max":498},{"min":8072,"max":8079},{"min":8088,"max":8095},{"min":8104,"max":8111},{"min":8124,"max":8124},{"min":8140,"max":8140},{"min":8188,"max":8188}]'),tx=JSON.parse('[{"min":888,"max":889},{"min":896,"max":899},{"min":907,"max":907},{"min":909,"max":909},{"min":930,"max":930},{"min":1328,"max":1328},{"min":1367,"max":1368},{"min":1419,"max":1420},{"min":1424,"max":1424},{"min":1480,"max":1487},{"min":1515,"max":1518},{"min":1525,"max":1535},{"min":1565,"max":1565},{"min":1806,"max":1806},{"min":1867,"max":1868},{"min":1970,"max":1983},{"min":2043,"max":2044},{"min":2094,"max":2095},{"min":2111,"max":2111},{"min":2140,"max":2141},{"min":2143,"max":2143},{"min":2155,"max":2207},{"min":2229,"max":2229},{"min":2248,"max":2258},{"min":2436,"max":2436},{"min":2445,"max":2446},{"min":2449,"max":2450},{"min":2473,"max":2473},{"min":2481,"max":2481},{"min":2483,"max":2485},{"min":2490,"max":2491},{"min":2501,"max":2502},{"min":2505,"max":2506},{"min":2511,"max":2518},{"min":2520,"max":2523},{"min":2526,"max":2526},{"min":2532,"max":2533},{"min":2559,"max":2560},{"min":2564,"max":2564},{"min":2571,"max":2574},{"min":2577,"max":2578},{"min":2601,"max":2601},{"min":2609,"max":2609},{"min":2612,"max":2612},{"min":2615,"max":2615},{"min":2618,"max":2619},{"min":2621,"max":2621},{"min":2627,"max":2630},{"min":2633,"max":2634},{"min":2638,"max":2640},{"min":2642,"max":2648},{"min":2653,"max":2653},{"min":2655,"max":2661},{"min":2679,"max":2688},{"min":2692,"max":2692},{"min":2702,"max":2702},{"min":2706,"max":2706},{"min":2729,"max":2729},{"min":2737,"max":2737},{"min":2740,"max":2740},{"min":2746,"max":2747},{"min":2758,"max":2758},{"min":2762,"max":2762},{"min":2766,"max":2767},{"min":2769,"max":2783},{"min":2788,"max":2789},{"min":2802,"max":2808},{"min":2816,"max":2816},{"min":2820,"max":2820},{"min":2829,"max":2830},{"min":2833,"max":2834},{"min":2857,"max":2857},{"min":2865,"max":2865},{"min":2868,"max":2868},{"min":2874,"max":2875},{"min":2885,"max":2886},{"min":2889,"max":2890},{"min":2894,"max":2900},{"min":2904,"max":2907},{"min":2910,"max":2910},{"min":2916,"max":2917},{"min":2936,"max":2945},{"min":2948,"max":2948},{"min":2955,"max":2957},{"min":2961,"max":2961},{"min":2966,"max":2968},{"min":2971,"max":2971},{"min":2973,"max":2973},{"min":2976,"max":2978},{"min":2981,"max":2983},{"min":2987,"max":2989},{"min":3002,"max":3005},{"min":3011,"max":3013},{"min":3017,"max":3017},{"min":3022,"max":3023},{"min":3025,"max":3030},{"min":3032,"max":3045},{"min":3067,"max":3071},{"min":3085,"max":3085},{"min":3089,"max":3089},{"min":3113,"max":3113},{"min":3130,"max":3132},{"min":3141,"max":3141},{"min":3145,"max":3145},{"min":3150,"max":3156},{"min":3159,"max":3159},{"min":3163,"max":3167},{"min":3172,"max":3173},{"min":3184,"max":3190},{"min":3213,"max":3213},{"min":3217,"max":3217},{"min":3241,"max":3241},{"min":3252,"max":3252},{"min":3258,"max":3259},{"min":3269,"max":3269},{"min":3273,"max":3273},{"min":3278,"max":3284},{"min":3287,"max":3293},{"min":3295,"max":3295},{"min":3300,"max":3301},{"min":3312,"max":3312},{"min":3315,"max":3327},{"min":3341,"max":3341},{"min":3345,"max":3345},{"min":3397,"max":3397},{"min":3401,"max":3401},{"min":3408,"max":3411},{"min":3428,"max":3429},{"min":3456,"max":3456},{"min":3460,"max":3460},{"min":3479,"max":3481},{"min":3506,"max":3506},{"min":3516,"max":3516},{"min":3518,"max":3519},{"min":3527,"max":3529},{"min":3531,"max":3534},{"min":3541,"max":3541},{"min":3543,"max":3543},{"min":3552,"max":3557},{"min":3568,"max":3569},{"min":3573,"max":3584},{"min":3643,"max":3646},{"min":3676,"max":3712},{"min":3715,"max":3715},{"min":3717,"max":3717},{"min":3723,"max":3723},{"min":3748,"max":3748},{"min":3750,"max":3750},{"min":3774,"max":3775},{"min":3781,"max":3781},{"min":3783,"max":3783},{"min":3790,"max":3791},{"min":3802,"max":3803},{"min":3808,"max":3839},{"min":3912,"max":3912},{"min":3949,"max":3952},{"min":3992,"max":3992},{"min":4029,"max":4029},{"min":4045,"max":4045},{"min":4059,"max":4095},{"min":4294,"max":4294},{"min":4296,"max":4300},{"min":4302,"max":4303},{"min":4681,"max":4681},{"min":4686,"max":4687},{"min":4695,"max":4695},{"min":4697,"max":4697},{"min":4702,"max":4703},{"min":4745,"max":4745},{"min":4750,"max":4751},{"min":4785,"max":4785},{"min":4790,"max":4791},{"min":4799,"max":4799},{"min":4801,"max":4801},{"min":4806,"max":4807},{"min":4823,"max":4823},{"min":4881,"max":4881},{"min":4886,"max":4887},{"min":4955,"max":4956},{"min":4989,"max":4991},{"min":5018,"max":5023},{"min":5110,"max":5111},{"min":5118,"max":5119},{"min":5789,"max":5791},{"min":5881,"max":5887},{"min":5901,"max":5901},{"min":5909,"max":5919},{"min":5943,"max":5951},{"min":5972,"max":5983},{"min":5997,"max":5997},{"min":6001,"max":6001},{"min":6004,"max":6015},{"min":6110,"max":6111},{"min":6122,"max":6127},{"min":6138,"max":6143},{"min":6159,"max":6159},{"min":6170,"max":6175},{"min":6265,"max":6271},{"min":6315,"max":6319},{"min":6390,"max":6399},{"min":6431,"max":6431},{"min":6444,"max":6447},{"min":6460,"max":6463},{"min":6465,"max":6467},{"min":6510,"max":6511},{"min":6517,"max":6527},{"min":6572,"max":6575},{"min":6602,"max":6607},{"min":6619,"max":6621},{"min":6684,"max":6685},{"min":6751,"max":6751},{"min":6781,"max":6782},{"min":6794,"max":6799},{"min":6810,"max":6815},{"min":6830,"max":6831},{"min":6849,"max":6911},{"min":6988,"max":6991},{"min":7037,"max":7039},{"min":7156,"max":7163},{"min":7224,"max":7226},{"min":7242,"max":7244},{"min":7305,"max":7311},{"min":7355,"max":7356},{"min":7368,"max":7375},{"min":7419,"max":7423},{"min":7674,"max":7674},{"min":7958,"max":7959},{"min":7966,"max":7967},{"min":8006,"max":8007},{"min":8014,"max":8015},{"min":8024,"max":8024},{"min":8026,"max":8026},{"min":8028,"max":8028},{"min":8030,"max":8030},{"min":8062,"max":8063},{"min":8117,"max":8117},{"min":8133,"max":8133},{"min":8148,"max":8149},{"min":8156,"max":8156},{"min":8176,"max":8177},{"min":8181,"max":8181},{"min":8191,"max":8191},{"min":8293,"max":8293},{"min":8306,"max":8307},{"min":8335,"max":8335},{"min":8349,"max":8351},{"min":8384,"max":8399},{"min":8433,"max":8447},{"min":8588,"max":8591},{"min":9255,"max":9279},{"min":9291,"max":9311},{"min":11124,"max":11125},{"min":11158,"max":11158},{"min":11311,"max":11311},{"min":11359,"max":11359},{"min":11508,"max":11512},{"min":11558,"max":11558},{"min":11560,"max":11564},{"min":11566,"max":11567},{"min":11624,"max":11630},{"min":11633,"max":11646},{"min":11671,"max":11679},{"min":11687,"max":11687},{"min":11695,"max":11695},{"min":11703,"max":11703},{"min":11711,"max":11711},{"min":11719,"max":11719},{"min":11727,"max":11727},{"min":11735,"max":11735},{"min":11743,"max":11743},{"min":11859,"max":11903},{"min":11930,"max":11930},{"min":12020,"max":12031},{"min":12246,"max":12271},{"min":12284,"max":12287},{"min":12352,"max":12352},{"min":12439,"max":12440},{"min":12544,"max":12548},{"min":12592,"max":12592},{"min":12687,"max":12687},{"min":12772,"max":12783},{"min":12831,"max":12831},{"min":40957,"max":40959},{"min":42125,"max":42127},{"min":42183,"max":42191},{"min":42540,"max":42559},{"min":42744,"max":42751},{"min":42944,"max":42945},{"min":42955,"max":42996},{"min":43053,"max":43055},{"min":43066,"max":43071},{"min":43128,"max":43135},{"min":43206,"max":43213},{"min":43226,"max":43231},{"min":43348,"max":43358},{"min":43389,"max":43391},{"min":43470,"max":43470},{"min":43482,"max":43485},{"min":43519,"max":43519},{"min":43575,"max":43583},{"min":43598,"max":43599},{"min":43610,"max":43611},{"min":43715,"max":43738},{"min":43767,"max":43776},{"min":43783,"max":43784},{"min":43791,"max":43792},{"min":43799,"max":43807},{"min":43815,"max":43815},{"min":43823,"max":43823},{"min":43884,"max":43887},{"min":44014,"max":44015},{"min":44026,"max":44031},{"min":55204,"max":55215},{"min":55239,"max":55242},{"min":55292,"max":55295},{"min":64110,"max":64111},{"min":64218,"max":64255},{"min":64263,"max":64274},{"min":64280,"max":64284},{"min":64311,"max":64311},{"min":64317,"max":64317},{"min":64319,"max":64319},{"min":64322,"max":64322},{"min":64325,"max":64325},{"min":64450,"max":64466},{"min":64832,"max":64847},{"min":64912,"max":64913},{"min":64968,"max":65007},{"min":65022,"max":65023},{"min":65050,"max":65055},{"min":65107,"max":65107},{"min":65127,"max":65127},{"min":65132,"max":65135},{"min":65141,"max":65141},{"min":65277,"max":65278},{"min":65280,"max":65280},{"min":65471,"max":65473},{"min":65480,"max":65481},{"min":65488,"max":65489},{"min":65496,"max":65497},{"min":65501,"max":65503},{"min":65511,"max":65511},{"min":65519,"max":65528},{"min":65534,"max":65535},{"min":65548,"max":65548},{"min":65575,"max":65575},{"min":65595,"max":65595},{"min":65598,"max":65598},{"min":65614,"max":65615},{"min":65630,"max":65663},{"min":65787,"max":65791},{"min":65795,"max":65798},{"min":65844,"max":65846},{"min":65935,"max":65935},{"min":65949,"max":65951},{"min":65953,"max":65999},{"min":66046,"max":66175},{"min":66205,"max":66207},{"min":66257,"max":66271},{"min":66300,"max":66303},{"min":66340,"max":66348},{"min":66379,"max":66383},{"min":66427,"max":66431},{"min":66462,"max":66462},{"min":66500,"max":66503},{"min":66518,"max":66559},{"min":66718,"max":66719},{"min":66730,"max":66735},{"min":66772,"max":66775},{"min":66812,"max":66815},{"min":66856,"max":66863},{"min":66916,"max":66926},{"min":66928,"max":67071},{"min":67383,"max":67391},{"min":67414,"max":67423},{"min":67432,"max":67583},{"min":67590,"max":67591},{"min":67593,"max":67593},{"min":67638,"max":67638},{"min":67641,"max":67643},{"min":67645,"max":67646},{"min":67670,"max":67670},{"min":67743,"max":67750},{"min":67760,"max":67807},{"min":67827,"max":67827},{"min":67830,"max":67834},{"min":67868,"max":67870},{"min":67898,"max":67902},{"min":67904,"max":67967},{"min":68024,"max":68027},{"min":68048,"max":68049},{"min":68100,"max":68100},{"min":68103,"max":68107},{"min":68116,"max":68116},{"min":68120,"max":68120},{"min":68150,"max":68151},{"min":68155,"max":68158},{"min":68169,"max":68175},{"min":68185,"max":68191},{"min":68256,"max":68287},{"min":68327,"max":68330},{"min":68343,"max":68351},{"min":68406,"max":68408},{"min":68438,"max":68439},{"min":68467,"max":68471},{"min":68498,"max":68504},{"min":68509,"max":68520},{"min":68528,"max":68607},{"min":68681,"max":68735},{"min":68787,"max":68799},{"min":68851,"max":68857},{"min":68904,"max":68911},{"min":68922,"max":69215},{"min":69247,"max":69247},{"min":69290,"max":69290},{"min":69294,"max":69295},{"min":69298,"max":69375},{"min":69416,"max":69423},{"min":69466,"max":69551},{"min":69580,"max":69599},{"min":69623,"max":69631},{"min":69710,"max":69713},{"min":69744,"max":69758},{"min":69826,"max":69836},{"min":69838,"max":69839},{"min":69865,"max":69871},{"min":69882,"max":69887},{"min":69941,"max":69941},{"min":69960,"max":69967},{"min":70007,"max":70015},{"min":70112,"max":70112},{"min":70133,"max":70143},{"min":70162,"max":70162},{"min":70207,"max":70271},{"min":70279,"max":70279},{"min":70281,"max":70281},{"min":70286,"max":70286},{"min":70302,"max":70302},{"min":70314,"max":70319},{"min":70379,"max":70383},{"min":70394,"max":70399},{"min":70404,"max":70404},{"min":70413,"max":70414},{"min":70417,"max":70418},{"min":70441,"max":70441},{"min":70449,"max":70449},{"min":70452,"max":70452},{"min":70458,"max":70458},{"min":70469,"max":70470},{"min":70473,"max":70474},{"min":70478,"max":70479},{"min":70481,"max":70486},{"min":70488,"max":70492},{"min":70500,"max":70501},{"min":70509,"max":70511},{"min":70517,"max":70655},{"min":70748,"max":70748},{"min":70754,"max":70783},{"min":70856,"max":70863},{"min":70874,"max":71039},{"min":71094,"max":71095},{"min":71134,"max":71167},{"min":71237,"max":71247},{"min":71258,"max":71263},{"min":71277,"max":71295},{"min":71353,"max":71359},{"min":71370,"max":71423},{"min":71451,"max":71452},{"min":71468,"max":71471},{"min":71488,"max":71679},{"min":71740,"max":71839},{"min":71923,"max":71934},{"min":71943,"max":71944},{"min":71946,"max":71947},{"min":71956,"max":71956},{"min":71959,"max":71959},{"min":71990,"max":71990},{"min":71993,"max":71994},{"min":72007,"max":72015},{"min":72026,"max":72095},{"min":72104,"max":72105},{"min":72152,"max":72153},{"min":72165,"max":72191},{"min":72264,"max":72271},{"min":72355,"max":72383},{"min":72441,"max":72703},{"min":72713,"max":72713},{"min":72759,"max":72759},{"min":72774,"max":72783},{"min":72813,"max":72815},{"min":72848,"max":72849},{"min":72872,"max":72872},{"min":72887,"max":72959},{"min":72967,"max":72967},{"min":72970,"max":72970},{"min":73015,"max":73017},{"min":73019,"max":73019},{"min":73022,"max":73022},{"min":73032,"max":73039},{"min":73050,"max":73055},{"min":73062,"max":73062},{"min":73065,"max":73065},{"min":73103,"max":73103},{"min":73106,"max":73106},{"min":73113,"max":73119},{"min":73130,"max":73439},{"min":73465,"max":73647},{"min":73649,"max":73663},{"min":73714,"max":73726},{"min":74650,"max":74751},{"min":74863,"max":74863},{"min":74869,"max":74879},{"min":75076,"max":77823},{"min":78895,"max":78895},{"min":78905,"max":82943},{"min":83527,"max":92159},{"min":92729,"max":92735},{"min":92767,"max":92767},{"min":92778,"max":92781},{"min":92784,"max":92879},{"min":92910,"max":92911},{"min":92918,"max":92927},{"min":92998,"max":93007},{"min":93018,"max":93018},{"min":93026,"max":93026},{"min":93048,"max":93052},{"min":93072,"max":93759},{"min":93851,"max":93951},{"min":94027,"max":94030},{"min":94088,"max":94094},{"min":94112,"max":94175},{"min":94181,"max":94191},{"min":94194,"max":94207},{"min":100344,"max":100351},{"min":101590,"max":101631},{"min":101641,"max":110591},{"min":110879,"max":110927},{"min":110931,"max":110947},{"min":110952,"max":110959},{"min":111356,"max":113663},{"min":113771,"max":113775},{"min":113789,"max":113791},{"min":113801,"max":113807},{"min":113818,"max":113819},{"min":113828,"max":118783},{"min":119030,"max":119039},{"min":119079,"max":119080},{"min":119273,"max":119295},{"min":119366,"max":119519},{"min":119540,"max":119551},{"min":119639,"max":119647},{"min":119673,"max":119807},{"min":119893,"max":119893},{"min":119965,"max":119965},{"min":119968,"max":119969},{"min":119971,"max":119972},{"min":119975,"max":119976},{"min":119981,"max":119981},{"min":119994,"max":119994},{"min":119996,"max":119996},{"min":120004,"max":120004},{"min":120070,"max":120070},{"min":120075,"max":120076},{"min":120085,"max":120085},{"min":120093,"max":120093},{"min":120122,"max":120122},{"min":120127,"max":120127},{"min":120133,"max":120133},{"min":120135,"max":120137},{"min":120145,"max":120145},{"min":120486,"max":120487},{"min":120780,"max":120781},{"min":121484,"max":121498},{"min":121504,"max":121504},{"min":121520,"max":122879},{"min":122887,"max":122887},{"min":122905,"max":122906},{"min":122914,"max":122914},{"min":122917,"max":122917},{"min":122923,"max":123135},{"min":123181,"max":123183},{"min":123198,"max":123199},{"min":123210,"max":123213},{"min":123216,"max":123583},{"min":123642,"max":123646},{"min":123648,"max":124927},{"min":125125,"max":125126},{"min":125143,"max":125183},{"min":125260,"max":125263},{"min":125274,"max":125277},{"min":125280,"max":126064},{"min":126133,"max":126208},{"min":126270,"max":126463},{"min":126468,"max":126468},{"min":126496,"max":126496},{"min":126499,"max":126499},{"min":126501,"max":126502},{"min":126504,"max":126504},{"min":126515,"max":126515},{"min":126520,"max":126520},{"min":126522,"max":126522},{"min":126524,"max":126529},{"min":126531,"max":126534},{"min":126536,"max":126536},{"min":126538,"max":126538},{"min":126540,"max":126540},{"min":126544,"max":126544},{"min":126547,"max":126547},{"min":126549,"max":126550},{"min":126552,"max":126552},{"min":126554,"max":126554},{"min":126556,"max":126556},{"min":126558,"max":126558},{"min":126560,"max":126560},{"min":126563,"max":126563},{"min":126565,"max":126566},{"min":126571,"max":126571},{"min":126579,"max":126579},{"min":126584,"max":126584},{"min":126589,"max":126589},{"min":126591,"max":126591},{"min":126602,"max":126602},{"min":126620,"max":126624},{"min":126628,"max":126628},{"min":126634,"max":126634},{"min":126652,"max":126703},{"min":126706,"max":126975},{"min":127020,"max":127023},{"min":127124,"max":127135},{"min":127151,"max":127152},{"min":127168,"max":127168},{"min":127184,"max":127184},{"min":127222,"max":127231},{"min":127406,"max":127461},{"min":127491,"max":127503},{"min":127548,"max":127551},{"min":127561,"max":127567},{"min":127570,"max":127583},{"min":127590,"max":127743},{"min":128728,"max":128735},{"min":128749,"max":128751},{"min":128765,"max":128767},{"min":128884,"max":128895},{"min":128985,"max":128991},{"min":129004,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129199},{"min":129202,"max":129279},{"min":129401,"max":129401},{"min":129484,"max":129484},{"min":129620,"max":129631},{"min":129646,"max":129647},{"min":129653,"max":129655},{"min":129659,"max":129663},{"min":129671,"max":129679},{"min":129705,"max":129711},{"min":129719,"max":129727},{"min":129731,"max":129743},{"min":129751,"max":129791},{"min":129939,"max":129939},{"min":129995,"max":130031},{"min":130042,"max":131071},{"min":173790,"max":173823},{"min":177973,"max":177983},{"min":178206,"max":178207},{"min":183970,"max":183983},{"min":191457,"max":194559},{"min":195102,"max":196607},{"min":201547,"max":917504},{"min":917506,"max":917535},{"min":917632,"max":917759},{"min":918000,"max":983039},{"min":1048574,"max":1048575},{"min":1114110,"max":1114111}]'),rx=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":452},{"min":455,"max":455},{"min":458,"max":458},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":497},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":978,"max":980},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8120,"max":8123},{"min":8136,"max":8139},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8459,"max":8461},{"min":8464,"max":8466},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8496,"max":8499},{"min":8510,"max":8511},{"min":8517,"max":8517},{"min":8579,"max":8579},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":119808,"max":119833},{"min":119860,"max":119885},{"min":119912,"max":119937},{"min":119964,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119989},{"min":120016,"max":120041},{"min":120068,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120120,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120172,"max":120197},{"min":120224,"max":120249},{"min":120276,"max":120301},{"min":120328,"max":120353},{"min":120380,"max":120405},{"min":120432,"max":120457},{"min":120488,"max":120512},{"min":120546,"max":120570},{"min":120604,"max":120628},{"min":120662,"max":120686},{"min":120720,"max":120744},{"min":120778,"max":120778},{"min":125184,"max":125217}]');var sx=Object.freeze({__proto__:null,Cased_Letter:Oi,Close_Punctuation:ki,Connector_Punctuation:wi,Control:Ji,Currency_Symbol:bi,Dash_Punctuation:Ai,Decimal_Number:Ei,Enclosing_Mark:Mi,Final_Punctuation:Li,Format:Ti,Initial_Punctuation:Pi,Letter:Ii,Letter_Number:Di,Line_Separator:Ri,Lowercase_Letter:Gi,Mark:Bi,Math_Symbol:Wi,Modifier_Letter:Fi,Modifier_Symbol:Qi,Nonspacing_Mark:Hi,Number:ji,Open_Punctuation:zi,Other:Ui,Other_Letter:Ki,Other_Number:qi,Other_Punctuation:$i,Other_Symbol:Vi,Paragraph_Separator:Xi,Private_Use:Zi,Punctuation:Yi,Separator:mx,Space_Separator:nx,Spacing_Mark:ax,Surrogate:ix,Symbol:xx,Titlecase_Letter:ex,Unassigned:tx,Uppercase_Letter:rx});const ox=JSON.parse('[{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279}]'),lx=JSON.parse('[{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487}]'),cx=JSON.parse('[{"min":82944,"max":83526}]'),ux=JSON.parse('[{"min":1536,"max":1540},{"min":1542,"max":1547},{"min":1549,"max":1562},{"min":1564,"max":1564},{"min":1566,"max":1566},{"min":1568,"max":1599},{"min":1601,"max":1610},{"min":1622,"max":1647},{"min":1649,"max":1756},{"min":1758,"max":1791},{"min":1872,"max":1919},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2303},{"min":64336,"max":64449},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":69216,"max":69246},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),hx=JSON.parse('[{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":64275,"max":64279}]'),fx=JSON.parse('[{"min":68352,"max":68405},{"min":68409,"max":68415}]'),px=JSON.parse('[{"min":6912,"max":6987},{"min":6992,"max":7036}]'),dx=JSON.parse('[{"min":42656,"max":42743},{"min":92160,"max":92728}]'),gx=JSON.parse('[{"min":92880,"max":92909},{"min":92912,"max":92917}]'),yx=JSON.parse('[{"min":7104,"max":7155},{"min":7164,"max":7167}]'),Sx=JSON.parse('[{"min":2432,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558}]'),_x=JSON.parse('[{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812}]'),vx=JSON.parse('[{"min":746,"max":747},{"min":12549,"max":12591},{"min":12704,"max":12735}]'),Nx=JSON.parse('[{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69759}]'),Cx=JSON.parse('[{"min":10240,"max":10495}]'),Ox=JSON.parse('[{"min":6656,"max":6683},{"min":6686,"max":6687}]'),kx=JSON.parse('[{"min":5952,"max":5971}]'),wx=JSON.parse('[{"min":5120,"max":5759},{"min":6320,"max":6389}]'),Jx=JSON.parse('[{"min":66208,"max":66256}]'),bx=JSON.parse('[{"min":66864,"max":66915},{"min":66927,"max":66927}]'),Ax=JSON.parse('[{"min":69888,"max":69940},{"min":69942,"max":69959}]'),Ex=JSON.parse('[{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43615}]'),Mx=JSON.parse('[{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":43888,"max":43967}]'),Lx=JSON.parse('[{"min":0,"max":64},{"min":91,"max":96},{"min":123,"max":169},{"min":171,"max":185},{"min":187,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":697,"max":735},{"min":741,"max":745},{"min":748,"max":767},{"min":884,"max":884},{"min":894,"max":894},{"min":901,"max":901},{"min":903,"max":903},{"min":1541,"max":1541},{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1757,"max":1757},{"min":2274,"max":2274},{"min":2404,"max":2405},{"min":3647,"max":3647},{"min":4053,"max":4056},{"min":4347,"max":4347},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6146,"max":6147},{"min":6149,"max":6149},{"min":7379,"max":7379},{"min":7393,"max":7393},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7415},{"min":7418,"max":7418},{"min":8192,"max":8203},{"min":8206,"max":8292},{"min":8294,"max":8304},{"min":8308,"max":8318},{"min":8320,"max":8334},{"min":8352,"max":8383},{"min":8448,"max":8485},{"min":8487,"max":8489},{"min":8492,"max":8497},{"min":8499,"max":8525},{"min":8527,"max":8543},{"min":8585,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":10239},{"min":10496,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11776,"max":11858},{"min":12272,"max":12283},{"min":12288,"max":12292},{"min":12294,"max":12294},{"min":12296,"max":12320},{"min":12336,"max":12343},{"min":12348,"max":12351},{"min":12443,"max":12444},{"min":12448,"max":12448},{"min":12539,"max":12540},{"min":12688,"max":12703},{"min":12736,"max":12771},{"min":12832,"max":12895},{"min":12927,"max":13007},{"min":13055,"max":13055},{"min":13144,"max":13311},{"min":19904,"max":19967},{"min":42752,"max":42785},{"min":42888,"max":42890},{"min":43056,"max":43065},{"min":43310,"max":43310},{"min":43471,"max":43471},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65279,"max":65279},{"min":65281,"max":65312},{"min":65339,"max":65344},{"min":65371,"max":65381},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855},{"min":65936,"max":65948},{"min":66000,"max":66044},{"min":66273,"max":66299},{"min":94178,"max":94179},{"min":113824,"max":113827},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119142},{"min":119146,"max":119162},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Tx=JSON.parse('[{"min":994,"max":1007},{"min":11392,"max":11507},{"min":11513,"max":11519}]'),Px=JSON.parse('[{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075}]'),Ix=JSON.parse('[{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67647}]'),Dx=JSON.parse('[{"min":1024,"max":1156},{"min":1159,"max":1327},{"min":7296,"max":7304},{"min":7467,"max":7467},{"min":7544,"max":7544},{"min":11744,"max":11775},{"min":42560,"max":42655},{"min":65070,"max":65071}]'),Rx=JSON.parse('[{"min":66560,"max":66639}]'),Gx=JSON.parse('[{"min":2304,"max":2384},{"min":2389,"max":2403},{"min":2406,"max":2431},{"min":43232,"max":43263}]'),Bx=JSON.parse('[{"min":71680,"max":71739}]'),Wx=JSON.parse('[{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113823}]'),Fx=JSON.parse('[{"min":77824,"max":78894},{"min":78896,"max":78904}]'),Qx=JSON.parse('[{"min":66816,"max":66855}]'),Hx=JSON.parse('[{"min":69600,"max":69622}]'),jx=JSON.parse('[{"min":4608,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822}]'),zx=JSON.parse('[{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4351},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565}]'),Ux=JSON.parse('[{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922}]'),Kx=JSON.parse('[{"min":66352,"max":66378}]'),qx=JSON.parse('[{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70460,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516}]'),$x=JSON.parse('[{"min":880,"max":883},{"min":885,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":900,"max":900},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":993},{"min":1008,"max":1023},{"min":7462,"max":7466},{"min":7517,"max":7521},{"min":7526,"max":7530},{"min":7615,"max":7615},{"min":7936,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8486,"max":8486},{"min":43877,"max":43877},{"min":65856,"max":65934},{"min":65952,"max":65952},{"min":119296,"max":119365}]'),Vx=JSON.parse('[{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815}]'),Xx=JSON.parse('[{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129}]'),Zx=JSON.parse('[{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678}]'),Yx=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12293,"max":12293},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12347},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":94192,"max":94193},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),me=JSON.parse('[{"min":4352,"max":4607},{"min":12334,"max":12335},{"min":12593,"max":12686},{"min":12800,"max":12830},{"min":12896,"max":12926},{"min":43360,"max":43388},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500}]'),ne=JSON.parse('[{"min":68864,"max":68903},{"min":68912,"max":68921}]'),ae=JSON.parse('[{"min":5920,"max":5940}]'),ie=JSON.parse('[{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67839}]'),xe=JSON.parse('[{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64335}]'),ee=JSON.parse('[{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":110593,"max":110878},{"min":110928,"max":110930},{"min":127488,"max":127488}]'),te=JSON.parse('[{"min":67648,"max":67669},{"min":67671,"max":67679}]'),re=JSON.parse('[{"min":768,"max":879},{"min":1157,"max":1158},{"min":1611,"max":1621},{"min":1648,"max":1648},{"min":2385,"max":2388},{"min":6832,"max":6848},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8205},{"min":8400,"max":8432},{"min":12330,"max":12333},{"min":12441,"max":12442},{"min":65024,"max":65039},{"min":65056,"max":65069},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":70459,"max":70459},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":917760,"max":917999}]'),se=JSON.parse('[{"min":68448,"max":68466},{"min":68472,"max":68479}]'),oe=JSON.parse('[{"min":68416,"max":68437},{"min":68440,"max":68447}]'),le=JSON.parse('[{"min":43392,"max":43469},{"min":43472,"max":43481},{"min":43486,"max":43487}]'),ce=JSON.parse('[{"min":69760,"max":69825},{"min":69837,"max":69837}]'),ue=JSON.parse('[{"min":3200,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314}]'),he=JSON.parse('[{"min":12449,"max":12538},{"min":12541,"max":12543},{"min":12784,"max":12799},{"min":13008,"max":13054},{"min":13056,"max":13143},{"min":65382,"max":65391},{"min":65393,"max":65437},{"min":110592,"max":110592},{"min":110948,"max":110951}]'),fe=JSON.parse('[{"min":43264,"max":43309},{"min":43311,"max":43311}]'),pe=JSON.parse('[{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184}]'),de=JSON.parse('[{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6624,"max":6655}]'),ge=JSON.parse('[{"min":70144,"max":70161},{"min":70163,"max":70206}]'),ye=JSON.parse('[{"min":70320,"max":70378},{"min":70384,"max":70393}]'),Se=JSON.parse('[{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807}]'),_e=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":696},{"min":736,"max":740},{"min":7424,"max":7461},{"min":7468,"max":7516},{"min":7522,"max":7525},{"min":7531,"max":7543},{"min":7545,"max":7614},{"min":7680,"max":7935},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11360,"max":11391},{"min":42786,"max":42887},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43007},{"min":43824,"max":43866},{"min":43868,"max":43876},{"min":43878,"max":43881},{"min":64256,"max":64262},{"min":65313,"max":65338},{"min":65345,"max":65370}]'),ve=JSON.parse('[{"min":7168,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7247}]'),Ne=JSON.parse('[{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6479}]'),Ce=JSON.parse('[{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431}]'),Oe=JSON.parse('[{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786}]'),ke=JSON.parse('[{"min":42192,"max":42239},{"min":73648,"max":73648}]'),we=JSON.parse('[{"min":66176,"max":66204}]'),Je=JSON.parse('[{"min":67872,"max":67897},{"min":67903,"max":67903}]'),be=JSON.parse('[{"min":69968,"max":70006}]'),Ae=JSON.parse('[{"min":73440,"max":73464}]'),Ee=JSON.parse('[{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455}]'),Me=JSON.parse('[{"min":2112,"max":2139},{"min":2142,"max":2142}]'),Le=JSON.parse('[{"min":68288,"max":68326},{"min":68331,"max":68342}]'),Te=JSON.parse('[{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886}]'),Pe=JSON.parse('[{"min":93760,"max":93850}]'),Ie=JSON.parse('[{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049}]'),De=JSON.parse('[{"min":43744,"max":43766},{"min":43968,"max":44013},{"min":44016,"max":44025}]'),Re=JSON.parse('[{"min":124928,"max":125124},{"min":125127,"max":125142}]'),Ge=JSON.parse('[{"min":68000,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68095}]'),Be=JSON.parse('[{"min":67968,"max":67999}]'),We=JSON.parse('[{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111}]'),Fe=JSON.parse('[{"min":71168,"max":71236},{"min":71248,"max":71257}]'),Qe=JSON.parse('[{"min":6144,"max":6145},{"min":6148,"max":6148},{"min":6150,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":71264,"max":71276}]'),He=JSON.parse('[{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783}]'),je=JSON.parse('[{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313}]'),ze=JSON.parse('[{"min":4096,"max":4255},{"min":43488,"max":43518},{"min":43616,"max":43647}]'),Ue=JSON.parse('[{"min":67712,"max":67742},{"min":67751,"max":67759}]'),Ke=JSON.parse('[{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164}]'),qe=JSON.parse('[{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6623}]'),$e=JSON.parse('[{"min":70656,"max":70747},{"min":70749,"max":70753}]'),Ve=JSON.parse('[{"min":1984,"max":2042},{"min":2045,"max":2047}]'),Xe=JSON.parse('[{"min":94177,"max":94177},{"min":110960,"max":111355}]'),Ze=JSON.parse('[{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215}]'),Ye=JSON.parse('[{"min":5760,"max":5788}]'),mt=JSON.parse('[{"min":7248,"max":7295}]'),nt=JSON.parse('[{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68863}]'),at=JSON.parse('[{"min":66304,"max":66339},{"min":66349,"max":66351}]'),it=JSON.parse('[{"min":68224,"max":68255}]'),xt=JSON.parse('[{"min":66384,"max":66426}]'),et=JSON.parse('[{"min":66464,"max":66499},{"min":66504,"max":66517}]'),tt=JSON.parse('[{"min":69376,"max":69415}]'),rt=JSON.parse('[{"min":68192,"max":68223}]'),st=JSON.parse('[{"min":68608,"max":68680}]'),ot=JSON.parse('[{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935}]'),lt=JSON.parse('[{"min":66736,"max":66771},{"min":66776,"max":66811}]'),ct=JSON.parse('[{"min":66688,"max":66717},{"min":66720,"max":66729}]'),ut=JSON.parse('[{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071}]'),ht=JSON.parse('[{"min":67680,"max":67711}]'),ft=JSON.parse('[{"min":72384,"max":72440}]'),pt=JSON.parse('[{"min":43072,"max":43127}]'),dt=JSON.parse('[{"min":67840,"max":67867},{"min":67871,"max":67871}]'),gt=JSON.parse('[{"min":68480,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527}]'),yt=JSON.parse('[{"min":43312,"max":43347},{"min":43359,"max":43359}]'),St=JSON.parse('[{"min":5792,"max":5866},{"min":5870,"max":5880}]'),_t=JSON.parse('[{"min":2048,"max":2093},{"min":2096,"max":2110}]'),vt=JSON.parse('[{"min":43136,"max":43205},{"min":43214,"max":43225}]'),Nt=JSON.parse('[{"min":70016,"max":70111}]'),Ct=JSON.parse('[{"min":66640,"max":66687}]'),Ot=JSON.parse('[{"min":71040,"max":71093},{"min":71096,"max":71133}]'),kt=JSON.parse('[{"min":120832,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519}]'),wt=JSON.parse('[{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":70113,"max":70132}]'),Jt=JSON.parse('[{"min":69424,"max":69465}]'),bt=JSON.parse('[{"min":69840,"max":69864},{"min":69872,"max":69881}]'),At=JSON.parse('[{"min":72272,"max":72354}]'),Et=JSON.parse('[{"min":7040,"max":7103},{"min":7360,"max":7367}]'),Mt=JSON.parse('[{"min":43008,"max":43052}]'),Lt=JSON.parse('[{"min":1792,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1871},{"min":2144,"max":2154}]'),Tt=JSON.parse('[{"min":5888,"max":5900},{"min":5902,"max":5908}]'),Pt=JSON.parse('[{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003}]'),It=JSON.parse('[{"min":6480,"max":6509},{"min":6512,"max":6516}]'),Dt=JSON.parse('[{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829}]'),Rt=JSON.parse('[{"min":43648,"max":43714},{"min":43739,"max":43743}]'),Gt=JSON.parse('[{"min":71296,"max":71352},{"min":71360,"max":71369}]'),Bt=JSON.parse('[{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":73664,"max":73713},{"min":73727,"max":73727}]'),Wt=JSON.parse('[{"min":94176,"max":94176},{"min":94208,"max":100343},{"min":100352,"max":101119},{"min":101632,"max":101640}]'),Ft=JSON.parse('[{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3199}]'),Qt=JSON.parse('[{"min":1920,"max":1969}]'),Ht=JSON.parse('[{"min":3585,"max":3642},{"min":3648,"max":3675}]'),jt=JSON.parse('[{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4052},{"min":4057,"max":4058}]'),zt=JSON.parse('[{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11647}]'),Ut=JSON.parse('[{"min":70784,"max":70855},{"min":70864,"max":70873}]'),Kt=JSON.parse('[{"min":66432,"max":66461},{"min":66463,"max":66463}]'),qt=JSON.parse('[{"min":42240,"max":42539}]'),$t=JSON.parse('[{"min":123584,"max":123641},{"min":123647,"max":123647}]'),Vt=JSON.parse('[{"min":71840,"max":71922},{"min":71935,"max":71935}]'),Xt=JSON.parse('[{"min":40960,"max":42124},{"min":42128,"max":42182}]'),Zt=JSON.parse('[{"min":72192,"max":72263}]');var Yt=Object.freeze({__proto__:null,Adlam:ox,Ahom:lx,Anatolian_Hieroglyphs:cx,Arabic:ux,Armenian:hx,Avestan:fx,Balinese:px,Bamum:dx,Bassa_Vah:gx,Batak:yx,Bengali:Sx,Bhaiksuki:_x,Bopomofo:vx,Brahmi:Nx,Braille:Cx,Buginese:Ox,Buhid:kx,Canadian_Aboriginal:wx,Carian:Jx,Caucasian_Albanian:bx,Chakma:Ax,Cham:Ex,Cherokee:Mx,Common:Lx,Coptic:Tx,Cuneiform:Px,Cypriot:Ix,Cyrillic:Dx,Deseret:Rx,Devanagari:Gx,Dogra:Bx,Duployan:Wx,Egyptian_Hieroglyphs:Fx,Elbasan:Qx,Elymaic:Hx,Ethiopic:jx,Georgian:zx,Glagolitic:Ux,Gothic:Kx,Grantha:qx,Greek:$x,Gujarati:Vx,Gunjala_Gondi:Xx,Gurmukhi:Zx,Han:Yx,Hangul:me,Hanifi_Rohingya:ne,Hanunoo:ae,Hatran:ie,Hebrew:xe,Hiragana:ee,Imperial_Aramaic:te,Inherited:re,Inscriptional_Pahlavi:se,Inscriptional_Parthian:oe,Javanese:le,Kaithi:ce,Kannada:ue,Katakana:he,Kayah_Li:fe,Kharoshthi:pe,Khmer:de,Khojki:ge,Khudawadi:ye,Lao:Se,Latin:_e,Lepcha:ve,Limbu:Ne,Linear_A:Ce,Linear_B:Oe,Lisu:ke,Lycian:we,Lydian:Je,Mahajani:be,Makasar:Ae,Malayalam:Ee,Mandaic:Me,Manichaean:Le,Marchen:Te,Medefaidrin:Pe,Masaram_Gondi:Ie,Meetei_Mayek:De,Mende_Kikakui:Re,Meroitic_Cursive:Ge,Meroitic_Hieroglyphs:Be,Miao:We,Modi:Fe,Mongolian:Qe,Mro:He,Multani:je,Myanmar:ze,Nabataean:Ue,Nandinagari:Ke,New_Tai_Lue:qe,Newa:$e,Nko:Ve,Nushu:Xe,Nyiakeng_Puachue_Hmong:Ze,Ogham:Ye,Ol_Chiki:mt,Old_Hungarian:nt,Old_Italic:at,Old_North_Arabian:it,Old_Permic:xt,Old_Persian:et,Old_Sogdian:tt,Old_South_Arabian:rt,Old_Turkic:st,Oriya:ot,Osage:lt,Osmanya:ct,Pahawh_Hmong:ut,Palmyrene:ht,Pau_Cin_Hau:ft,Phags_Pa:pt,Phoenician:dt,Psalter_Pahlavi:gt,Rejang:yt,Runic:St,Samaritan:_t,Saurashtra:vt,Sharada:Nt,Shavian:Ct,Siddham:Ot,SignWriting:kt,Sinhala:wt,Sogdian:Jt,Sora_Sompeng:bt,Soyombo:At,Sundanese:Et,Syloti_Nagri:Mt,Syriac:Lt,Tagalog:Tt,Tagbanwa:Pt,Tai_Le:It,Tai_Tham:Dt,Tai_Viet:Rt,Takri:Gt,Tamil:Bt,Tangut:Wt,Telugu:Ft,Thaana:Qt,Thai:Ht,Tibetan:jt,Tifinagh:zt,Tirhuta:Ut,Ugaritic:Kt,Vai:qt,Wancho:$t,Warang_Citi:Vt,Yi:Xt,Zanabazar_Square:Zt});const mr=JSON.parse('[{"min":1600,"max":1600},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279}]'),nr=JSON.parse('[{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487}]'),ar=JSON.parse('[{"min":82944,"max":83526}]'),ir=JSON.parse('[{"min":1536,"max":1540},{"min":1542,"max":1564},{"min":1566,"max":1756},{"min":1758,"max":1791},{"min":1872,"max":1919},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2303},{"min":64336,"max":64449},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":66272,"max":66299},{"min":69216,"max":69246},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),xr=JSON.parse('[{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":64275,"max":64279}]'),er=JSON.parse('[{"min":68352,"max":68405},{"min":68409,"max":68415}]'),tr=JSON.parse('[{"min":6912,"max":6987},{"min":6992,"max":7036}]'),rr=JSON.parse('[{"min":42656,"max":42743},{"min":92160,"max":92728}]'),sr=JSON.parse('[{"min":92880,"max":92909},{"min":92912,"max":92917}]'),or=JSON.parse('[{"min":7104,"max":7155},{"min":7164,"max":7167}]'),lr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2432,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558},{"min":7376,"max":7376},{"min":7378,"max":7378},{"min":7381,"max":7382},{"min":7384,"max":7384},{"min":7393,"max":7393},{"min":7402,"max":7402},{"min":7405,"max":7405},{"min":7410,"max":7410},{"min":7413,"max":7415},{"min":43249,"max":43249}]'),cr=JSON.parse('[{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812}]'),ur=JSON.parse('[{"min":746,"max":747},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12330,"max":12333},{"min":12336,"max":12336},{"min":12343,"max":12343},{"min":12539,"max":12539},{"min":12549,"max":12591},{"min":12704,"max":12735},{"min":65093,"max":65094},{"min":65377,"max":65381}]'),hr=JSON.parse('[{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69759}]'),fr=JSON.parse('[{"min":10240,"max":10495}]'),pr=JSON.parse('[{"min":6656,"max":6683},{"min":6686,"max":6687},{"min":43471,"max":43471}]'),dr=JSON.parse('[{"min":5941,"max":5942},{"min":5952,"max":5971}]'),gr=JSON.parse('[{"min":5120,"max":5759},{"min":6320,"max":6389}]'),yr=JSON.parse('[{"min":66208,"max":66256}]'),Sr=JSON.parse('[{"min":66864,"max":66915},{"min":66927,"max":66927}]'),_r=JSON.parse('[{"min":2534,"max":2543},{"min":4160,"max":4169},{"min":69888,"max":69940},{"min":69942,"max":69959}]'),vr=JSON.parse('[{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43615}]'),Nr=JSON.parse('[{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":43888,"max":43967}]'),Cr=JSON.parse('[{"min":0,"max":64},{"min":91,"max":96},{"min":123,"max":169},{"min":171,"max":185},{"min":187,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":697,"max":735},{"min":741,"max":745},{"min":748,"max":767},{"min":884,"max":884},{"min":894,"max":894},{"min":901,"max":901},{"min":903,"max":903},{"min":1541,"max":1541},{"min":1757,"max":1757},{"min":2274,"max":2274},{"min":3647,"max":3647},{"min":4053,"max":4056},{"min":5867,"max":5869},{"min":8192,"max":8203},{"min":8206,"max":8238},{"min":8240,"max":8292},{"min":8294,"max":8304},{"min":8308,"max":8318},{"min":8320,"max":8334},{"min":8352,"max":8383},{"min":8448,"max":8485},{"min":8487,"max":8489},{"min":8492,"max":8497},{"min":8499,"max":8525},{"min":8527,"max":8543},{"min":8585,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":10239},{"min":10496,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11776,"max":11842},{"min":11844,"max":11858},{"min":12272,"max":12283},{"min":12288,"max":12288},{"min":12292,"max":12292},{"min":12306,"max":12306},{"min":12320,"max":12320},{"min":12342,"max":12342},{"min":12872,"max":12895},{"min":12927,"max":12927},{"min":12977,"max":12991},{"min":13004,"max":13007},{"min":13169,"max":13178},{"min":13184,"max":13279},{"min":13311,"max":13311},{"min":19904,"max":19967},{"min":42760,"max":42785},{"min":42888,"max":42890},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65092},{"min":65095,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65279,"max":65279},{"min":65281,"max":65312},{"min":65339,"max":65344},{"min":65371,"max":65376},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65936,"max":65948},{"min":66000,"max":66044},{"min":94178,"max":94179},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119142},{"min":119146,"max":119162},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119666,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Or=JSON.parse('[{"min":994,"max":1007},{"min":11392,"max":11507},{"min":11513,"max":11519},{"min":66272,"max":66299}]'),kr=JSON.parse('[{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075}]'),wr=JSON.parse('[{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67647}]'),Jr=JSON.parse('[{"min":1024,"max":1327},{"min":7296,"max":7304},{"min":7467,"max":7467},{"min":7544,"max":7544},{"min":7672,"max":7672},{"min":11744,"max":11775},{"min":11843,"max":11843},{"min":42560,"max":42655},{"min":65070,"max":65071}]'),br=JSON.parse('[{"min":66560,"max":66639}]'),Ar=JSON.parse('[{"min":2304,"max":2386},{"min":2389,"max":2431},{"min":7376,"max":7414},{"min":7416,"max":7417},{"min":8432,"max":8432},{"min":43056,"max":43065},{"min":43232,"max":43263}]'),Er=JSON.parse('[{"min":2404,"max":2415},{"min":43056,"max":43065},{"min":71680,"max":71739}]'),Mr=JSON.parse('[{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113827}]'),Lr=JSON.parse('[{"min":77824,"max":78894},{"min":78896,"max":78904}]'),Tr=JSON.parse('[{"min":66816,"max":66855}]'),Pr=JSON.parse('[{"min":69600,"max":69622}]'),Ir=JSON.parse('[{"min":4608,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822}]'),Dr=JSON.parse('[{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4351},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565}]'),Rr=JSON.parse('[{"min":1156,"max":1156},{"min":1159,"max":1159},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11843,"max":11843},{"min":42607,"max":42607},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922}]'),Gr=JSON.parse('[{"min":66352,"max":66378}]'),Br=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3046,"max":3059},{"min":7376,"max":7376},{"min":7378,"max":7379},{"min":7410,"max":7412},{"min":7416,"max":7417},{"min":8432,"max":8432},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":73680,"max":73681},{"min":73683,"max":73683}]'),Wr=JSON.parse('[{"min":834,"max":834},{"min":837,"max":837},{"min":880,"max":883},{"min":885,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":900,"max":900},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":993},{"min":1008,"max":1023},{"min":7462,"max":7466},{"min":7517,"max":7521},{"min":7526,"max":7530},{"min":7615,"max":7617},{"min":7936,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8486,"max":8486},{"min":43877,"max":43877},{"min":65856,"max":65934},{"min":65952,"max":65952},{"min":119296,"max":119365}]'),Fr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815},{"min":43056,"max":43065}]'),Qr=JSON.parse('[{"min":2404,"max":2405},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129}]'),Hr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678},{"min":43056,"max":43065}]'),jr=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12289,"max":12291},{"min":12293,"max":12305},{"min":12307,"max":12319},{"min":12321,"max":12333},{"min":12336,"max":12336},{"min":12343,"max":12351},{"min":12539,"max":12539},{"min":12688,"max":12703},{"min":12736,"max":12771},{"min":12832,"max":12871},{"min":12928,"max":12976},{"min":12992,"max":13003},{"min":13055,"max":13055},{"min":13144,"max":13168},{"min":13179,"max":13183},{"min":13280,"max":13310},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":42752,"max":42759},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":94192,"max":94193},{"min":119648,"max":119665},{"min":127568,"max":127569},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),zr=JSON.parse('[{"min":4352,"max":4607},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12334,"max":12336},{"min":12343,"max":12343},{"min":12539,"max":12539},{"min":12593,"max":12686},{"min":12800,"max":12830},{"min":12896,"max":12926},{"min":43360,"max":43388},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500}]'),Ur=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1748,"max":1748},{"min":68864,"max":68903},{"min":68912,"max":68921}]'),Kr=JSON.parse('[{"min":5920,"max":5942}]'),qr=JSON.parse('[{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67839}]'),$r=JSON.parse('[{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64335}]'),Vr=JSON.parse('[{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12336,"max":12341},{"min":12343,"max":12343},{"min":12348,"max":12349},{"min":12353,"max":12438},{"min":12441,"max":12448},{"min":12539,"max":12540},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":110593,"max":110878},{"min":110928,"max":110930},{"min":127488,"max":127488}]'),Xr=JSON.parse('[{"min":67648,"max":67669},{"min":67671,"max":67679}]'),Zr=JSON.parse('[{"min":768,"max":833},{"min":835,"max":836},{"min":838,"max":866},{"min":2387,"max":2388},{"min":6832,"max":6848},{"min":7618,"max":7671},{"min":7673,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8205},{"min":8400,"max":8431},{"min":65024,"max":65039},{"min":65056,"max":65069},{"min":66045,"max":66045},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":917760,"max":917999}]'),Yr=JSON.parse('[{"min":68448,"max":68466},{"min":68472,"max":68479}]'),ms=JSON.parse('[{"min":68416,"max":68437},{"min":68440,"max":68447}]'),ns=JSON.parse('[{"min":43392,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43487}]'),as=JSON.parse('[{"min":2406,"max":2415},{"min":43056,"max":43065},{"min":69760,"max":69825},{"min":69837,"max":69837}]'),is=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3200,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":7376,"max":7376},{"min":7378,"max":7378},{"min":7386,"max":7386},{"min":7410,"max":7410},{"min":7412,"max":7412},{"min":43056,"max":43061}]'),xs=JSON.parse('[{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12336,"max":12341},{"min":12343,"max":12343},{"min":12348,"max":12349},{"min":12441,"max":12444},{"min":12448,"max":12543},{"min":12784,"max":12799},{"min":13008,"max":13054},{"min":13056,"max":13143},{"min":65093,"max":65094},{"min":65377,"max":65439},{"min":110592,"max":110592},{"min":110948,"max":110951}]'),es=JSON.parse('[{"min":43264,"max":43311}]'),ts=JSON.parse('[{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184}]'),rs=JSON.parse('[{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6624,"max":6655}]'),ss=JSON.parse('[{"min":2790,"max":2799},{"min":43056,"max":43065},{"min":70144,"max":70161},{"min":70163,"max":70206}]'),os=JSON.parse('[{"min":2404,"max":2405},{"min":43056,"max":43065},{"min":70320,"max":70378},{"min":70384,"max":70393}]'),ls=JSON.parse('[{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807}]'),cs=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":696},{"min":736,"max":740},{"min":867,"max":879},{"min":1157,"max":1158},{"min":2385,"max":2386},{"min":4347,"max":4347},{"min":7424,"max":7461},{"min":7468,"max":7516},{"min":7522,"max":7525},{"min":7531,"max":7543},{"min":7545,"max":7614},{"min":7680,"max":7935},{"min":8239,"max":8239},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8432,"max":8432},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11360,"max":11391},{"min":42752,"max":42759},{"min":42786,"max":42887},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43007},{"min":43310,"max":43310},{"min":43824,"max":43866},{"min":43868,"max":43876},{"min":43878,"max":43881},{"min":64256,"max":64262},{"min":65313,"max":65338},{"min":65345,"max":65370}]'),us=JSON.parse('[{"min":7168,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7247}]'),hs=JSON.parse('[{"min":2405,"max":2405},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6479}]'),fs=JSON.parse('[{"min":65799,"max":65843},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431}]'),ps=JSON.parse('[{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855}]'),ds=JSON.parse('[{"min":42192,"max":42239},{"min":73648,"max":73648}]'),gs=JSON.parse('[{"min":66176,"max":66204}]'),ys=JSON.parse('[{"min":67872,"max":67897},{"min":67903,"max":67903}]'),Ss=JSON.parse('[{"min":2404,"max":2415},{"min":43056,"max":43065},{"min":69968,"max":70006}]'),_s=JSON.parse('[{"min":73440,"max":73464}]'),vs=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455},{"min":7386,"max":7386},{"min":43056,"max":43058}]'),Ns=JSON.parse('[{"min":1600,"max":1600},{"min":2112,"max":2139},{"min":2142,"max":2142}]'),Cs=JSON.parse('[{"min":1600,"max":1600},{"min":68288,"max":68326},{"min":68331,"max":68342}]'),Os=JSON.parse('[{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886}]'),ks=JSON.parse('[{"min":93760,"max":93850}]'),ws=JSON.parse('[{"min":2404,"max":2405},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049}]'),Js=JSON.parse('[{"min":43744,"max":43766},{"min":43968,"max":44013},{"min":44016,"max":44025}]'),bs=JSON.parse('[{"min":124928,"max":125124},{"min":125127,"max":125142}]'),As=JSON.parse('[{"min":68000,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68095}]'),Es=JSON.parse('[{"min":67968,"max":67999}]'),Ms=JSON.parse('[{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111}]'),Ls=JSON.parse('[{"min":43056,"max":43065},{"min":71168,"max":71236},{"min":71248,"max":71257}]'),Ts=JSON.parse('[{"min":6144,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":8239,"max":8239},{"min":71264,"max":71276}]'),Ps=JSON.parse('[{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783}]'),Is=JSON.parse('[{"min":2662,"max":2671},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313}]'),Ds=JSON.parse('[{"min":4096,"max":4255},{"min":43310,"max":43310},{"min":43488,"max":43518},{"min":43616,"max":43647}]'),Rs=JSON.parse('[{"min":67712,"max":67742},{"min":67751,"max":67759}]'),Gs=JSON.parse('[{"min":2404,"max":2405},{"min":3302,"max":3311},{"min":7401,"max":7401},{"min":7410,"max":7410},{"min":7418,"max":7418},{"min":43056,"max":43061},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164}]'),Bs=JSON.parse('[{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6623}]'),Ws=JSON.parse('[{"min":70656,"max":70747},{"min":70749,"max":70753}]'),Fs=JSON.parse('[{"min":1984,"max":2042},{"min":2045,"max":2047}]'),Qs=JSON.parse('[{"min":94177,"max":94177},{"min":110960,"max":111355}]'),Hs=JSON.parse('[{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215}]'),js=JSON.parse('[{"min":5760,"max":5788}]'),zs=JSON.parse('[{"min":7248,"max":7295}]'),Us=JSON.parse('[{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68863}]'),Ks=JSON.parse('[{"min":66304,"max":66339},{"min":66349,"max":66351}]'),qs=JSON.parse('[{"min":68224,"max":68255}]'),$s=JSON.parse('[{"min":1155,"max":1155},{"min":66384,"max":66426}]'),Vs=JSON.parse('[{"min":66464,"max":66499},{"min":66504,"max":66517}]'),Xs=JSON.parse('[{"min":69376,"max":69415}]'),Zs=JSON.parse('[{"min":68192,"max":68223}]'),Ys=JSON.parse('[{"min":68608,"max":68680}]'),mo=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935},{"min":7386,"max":7386},{"min":7410,"max":7410}]'),no=JSON.parse('[{"min":66736,"max":66771},{"min":66776,"max":66811}]'),ao=JSON.parse('[{"min":66688,"max":66717},{"min":66720,"max":66729}]'),io=JSON.parse('[{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071}]'),xo=JSON.parse('[{"min":67680,"max":67711}]'),eo=JSON.parse('[{"min":72384,"max":72440}]'),to=JSON.parse('[{"min":6146,"max":6147},{"min":6149,"max":6149},{"min":43072,"max":43127}]'),ro=JSON.parse('[{"min":67840,"max":67867},{"min":67871,"max":67871}]'),so=JSON.parse('[{"min":1600,"max":1600},{"min":68480,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527}]'),oo=JSON.parse('[{"min":43312,"max":43347},{"min":43359,"max":43359}]'),lo=JSON.parse('[{"min":5792,"max":5866},{"min":5870,"max":5880}]'),co=JSON.parse('[{"min":2048,"max":2093},{"min":2096,"max":2110}]'),uo=JSON.parse('[{"min":43136,"max":43205},{"min":43214,"max":43225}]'),ho=JSON.parse('[{"min":2385,"max":2385},{"min":7383,"max":7383},{"min":7385,"max":7385},{"min":7388,"max":7389},{"min":7392,"max":7392},{"min":70016,"max":70111}]'),fo=JSON.parse('[{"min":66640,"max":66687}]'),po=JSON.parse('[{"min":71040,"max":71093},{"min":71096,"max":71133}]'),go=JSON.parse('[{"min":120832,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519}]'),yo=JSON.parse('[{"min":2404,"max":2405},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":70113,"max":70132}]'),So=JSON.parse('[{"min":1600,"max":1600},{"min":69424,"max":69465}]'),_o=JSON.parse('[{"min":69840,"max":69864},{"min":69872,"max":69881}]'),vo=JSON.parse('[{"min":72272,"max":72354}]'),No=JSON.parse('[{"min":7040,"max":7103},{"min":7360,"max":7367}]'),Co=JSON.parse('[{"min":2404,"max":2405},{"min":2534,"max":2543},{"min":43008,"max":43052}]'),Oo=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1564},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1611,"max":1621},{"min":1648,"max":1648},{"min":1792,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1871},{"min":2144,"max":2154},{"min":7672,"max":7672}]'),ko=JSON.parse('[{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5941,"max":5942}]'),wo=JSON.parse('[{"min":5941,"max":5942},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003}]'),Jo=JSON.parse('[{"min":4160,"max":4169},{"min":6480,"max":6509},{"min":6512,"max":6516}]'),bo=JSON.parse('[{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829}]'),Ao=JSON.parse('[{"min":43648,"max":43714},{"min":43739,"max":43743}]'),Eo=JSON.parse('[{"min":2404,"max":2405},{"min":43056,"max":43065},{"min":71296,"max":71352},{"min":71360,"max":71369}]'),Mo=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":7386,"max":7386},{"min":43251,"max":43251},{"min":70401,"max":70401},{"min":70403,"max":70403},{"min":70459,"max":70460},{"min":73664,"max":73713},{"min":73727,"max":73727}]'),Lo=JSON.parse('[{"min":94176,"max":94176},{"min":94208,"max":100343},{"min":100352,"max":101119},{"min":101632,"max":101640}]'),To=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3199},{"min":7386,"max":7386},{"min":7410,"max":7410}]'),Po=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1564},{"min":1567,"max":1567},{"min":1632,"max":1641},{"min":1920,"max":1969},{"min":65010,"max":65010},{"min":65021,"max":65021}]'),Io=JSON.parse('[{"min":3585,"max":3642},{"min":3648,"max":3675}]'),Do=JSON.parse('[{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4052},{"min":4057,"max":4058}]'),Ro=JSON.parse('[{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11647}]'),Go=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":7410,"max":7410},{"min":43056,"max":43065},{"min":70784,"max":70855},{"min":70864,"max":70873}]'),Bo=JSON.parse('[{"min":66432,"max":66461},{"min":66463,"max":66463}]'),Wo=JSON.parse('[{"min":42240,"max":42539}]'),Fo=JSON.parse('[{"min":123584,"max":123641},{"min":123647,"max":123647}]'),Qo=JSON.parse('[{"min":71840,"max":71922},{"min":71935,"max":71935}]'),Ho=JSON.parse('[{"min":12289,"max":12290},{"min":12296,"max":12305},{"min":12308,"max":12315},{"min":12539,"max":12539},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":65377,"max":65381}]'),jo=JSON.parse('[{"min":72192,"max":72263}]');var zo=Object.freeze({__proto__:null,Adlam:mr,Ahom:nr,Anatolian_Hieroglyphs:ar,Arabic:ir,Armenian:xr,Avestan:er,Balinese:tr,Bamum:rr,Bassa_Vah:sr,Batak:or,Bengali:lr,Bhaiksuki:cr,Bopomofo:ur,Brahmi:hr,Braille:fr,Buginese:pr,Buhid:dr,Canadian_Aboriginal:gr,Carian:yr,Caucasian_Albanian:Sr,Chakma:_r,Cham:vr,Cherokee:Nr,Common:Cr,Coptic:Or,Cuneiform:kr,Cypriot:wr,Cyrillic:Jr,Deseret:br,Devanagari:Ar,Dogra:Er,Duployan:Mr,Egyptian_Hieroglyphs:Lr,Elbasan:Tr,Elymaic:Pr,Ethiopic:Ir,Georgian:Dr,Glagolitic:Rr,Gothic:Gr,Grantha:Br,Greek:Wr,Gujarati:Fr,Gunjala_Gondi:Qr,Gurmukhi:Hr,Han:jr,Hangul:zr,Hanifi_Rohingya:Ur,Hanunoo:Kr,Hatran:qr,Hebrew:$r,Hiragana:Vr,Imperial_Aramaic:Xr,Inherited:Zr,Inscriptional_Pahlavi:Yr,Inscriptional_Parthian:ms,Javanese:ns,Kaithi:as,Kannada:is,Katakana:xs,Kayah_Li:es,Kharoshthi:ts,Khmer:rs,Khojki:ss,Khudawadi:os,Lao:ls,Latin:cs,Lepcha:us,Limbu:hs,Linear_A:fs,Linear_B:ps,Lisu:ds,Lycian:gs,Lydian:ys,Mahajani:Ss,Makasar:_s,Malayalam:vs,Mandaic:Ns,Manichaean:Cs,Marchen:Os,Medefaidrin:ks,Masaram_Gondi:ws,Meetei_Mayek:Js,Mende_Kikakui:bs,Meroitic_Cursive:As,Meroitic_Hieroglyphs:Es,Miao:Ms,Modi:Ls,Mongolian:Ts,Mro:Ps,Multani:Is,Myanmar:Ds,Nabataean:Rs,Nandinagari:Gs,New_Tai_Lue:Bs,Newa:Ws,Nko:Fs,Nushu:Qs,Nyiakeng_Puachue_Hmong:Hs,Ogham:js,Ol_Chiki:zs,Old_Hungarian:Us,Old_Italic:Ks,Old_North_Arabian:qs,Old_Permic:$s,Old_Persian:Vs,Old_Sogdian:Xs,Old_South_Arabian:Zs,Old_Turkic:Ys,Oriya:mo,Osage:no,Osmanya:ao,Pahawh_Hmong:io,Palmyrene:xo,Pau_Cin_Hau:eo,Phags_Pa:to,Phoenician:ro,Psalter_Pahlavi:so,Rejang:oo,Runic:lo,Samaritan:co,Saurashtra:uo,Sharada:ho,Shavian:fo,Siddham:po,SignWriting:go,Sinhala:yo,Sogdian:So,Sora_Sompeng:_o,Soyombo:vo,Sundanese:No,Syloti_Nagri:Co,Syriac:Oo,Tagalog:ko,Tagbanwa:wo,Tai_Le:Jo,Tai_Tham:bo,Tai_Viet:Ao,Takri:Eo,Tamil:Mo,Tangut:Lo,Telugu:To,Thaana:Po,Thai:Io,Tibetan:Do,Tifinagh:Ro,Tirhuta:Go,Ugaritic:Bo,Vai:Wo,Wancho:Fo,Warang_Citi:Qo,Yi:Ho,Zanabazar_Square:jo});const Uo=i.empty(1114111).union(JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":303},{"min":306,"max":311},{"min":313,"max":328},{"min":330,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":495},{"min":497,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":943},{"min":945,"max":977},{"min":981,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1414},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7829},{"min":7835,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8017,"max":8017},{"min":8019,"max":8019},{"min":8021,"max":8021},{"min":8023,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8113},{"min":8115,"max":8115},{"min":8120,"max":8124},{"min":8126,"max":8126},{"min":8131,"max":8131},{"min":8136,"max":8140},{"min":8144,"max":8145},{"min":8152,"max":8155},{"min":8160,"max":8161},{"min":8165,"max":8165},{"min":8168,"max":8172},{"min":8179,"max":8179},{"min":8184,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":125184,"max":125251}]')),Ko=JSON.parse('{"65":[65,97],"66":[66,98],"67":[67,99],"68":[68,100],"69":[69,101],"70":[70,102],"71":[71,103],"72":[72,104],"73":[73,105],"74":[74,106],"75":[75,107,8490],"76":[76,108],"77":[77,109],"78":[78,110],"79":[79,111],"80":[80,112],"81":[81,113],"82":[82,114],"83":[83,115,383],"84":[84,116],"85":[85,117],"86":[86,118],"87":[87,119],"88":[88,120],"89":[89,121],"90":[90,122],"97":[65,97],"98":[66,98],"99":[67,99],"100":[68,100],"101":[69,101],"102":[70,102],"103":[71,103],"104":[72,104],"105":[73,105],"106":[74,106],"107":[75,107,8490],"108":[76,108],"109":[77,109],"110":[78,110],"111":[79,111],"112":[80,112],"113":[81,113],"114":[82,114],"115":[83,115,383],"116":[84,116],"117":[85,117],"118":[86,118],"119":[87,119],"120":[88,120],"121":[89,121],"122":[90,122],"181":[181,924,956],"192":[192,224],"193":[193,225],"194":[194,226],"195":[195,227],"196":[196,228],"197":[197,229,8491],"198":[198,230],"199":[199,231],"200":[200,232],"201":[201,233],"202":[202,234],"203":[203,235],"204":[204,236],"205":[205,237],"206":[206,238],"207":[207,239],"208":[208,240],"209":[209,241],"210":[210,242],"211":[211,243],"212":[212,244],"213":[213,245],"214":[214,246],"216":[216,248],"217":[217,249],"218":[218,250],"219":[219,251],"220":[220,252],"221":[221,253],"222":[222,254],"223":[223,7838],"224":[192,224],"225":[193,225],"226":[194,226],"227":[195,227],"228":[196,228],"229":[197,229,8491],"230":[198,230],"231":[199,231],"232":[200,232],"233":[201,233],"234":[202,234],"235":[203,235],"236":[204,236],"237":[205,237],"238":[206,238],"239":[207,239],"240":[208,240],"241":[209,241],"242":[210,242],"243":[211,243],"244":[212,244],"245":[213,245],"246":[214,246],"248":[216,248],"249":[217,249],"250":[218,250],"251":[219,251],"252":[220,252],"253":[221,253],"254":[222,254],"255":[255,376],"256":[256,257],"257":[256,257],"258":[258,259],"259":[258,259],"260":[260,261],"261":[260,261],"262":[262,263],"263":[262,263],"264":[264,265],"265":[264,265],"266":[266,267],"267":[266,267],"268":[268,269],"269":[268,269],"270":[270,271],"271":[270,271],"272":[272,273],"273":[272,273],"274":[274,275],"275":[274,275],"276":[276,277],"277":[276,277],"278":[278,279],"279":[278,279],"280":[280,281],"281":[280,281],"282":[282,283],"283":[282,283],"284":[284,285],"285":[284,285],"286":[286,287],"287":[286,287],"288":[288,289],"289":[288,289],"290":[290,291],"291":[290,291],"292":[292,293],"293":[292,293],"294":[294,295],"295":[294,295],"296":[296,297],"297":[296,297],"298":[298,299],"299":[298,299],"300":[300,301],"301":[300,301],"302":[302,303],"303":[302,303],"306":[306,307],"307":[306,307],"308":[308,309],"309":[308,309],"310":[310,311],"311":[310,311],"313":[313,314],"314":[313,314],"315":[315,316],"316":[315,316],"317":[317,318],"318":[317,318],"319":[319,320],"320":[319,320],"321":[321,322],"322":[321,322],"323":[323,324],"324":[323,324],"325":[325,326],"326":[325,326],"327":[327,328],"328":[327,328],"330":[330,331],"331":[330,331],"332":[332,333],"333":[332,333],"334":[334,335],"335":[334,335],"336":[336,337],"337":[336,337],"338":[338,339],"339":[338,339],"340":[340,341],"341":[340,341],"342":[342,343],"343":[342,343],"344":[344,345],"345":[344,345],"346":[346,347],"347":[346,347],"348":[348,349],"349":[348,349],"350":[350,351],"351":[350,351],"352":[352,353],"353":[352,353],"354":[354,355],"355":[354,355],"356":[356,357],"357":[356,357],"358":[358,359],"359":[358,359],"360":[360,361],"361":[360,361],"362":[362,363],"363":[362,363],"364":[364,365],"365":[364,365],"366":[366,367],"367":[366,367],"368":[368,369],"369":[368,369],"370":[370,371],"371":[370,371],"372":[372,373],"373":[372,373],"374":[374,375],"375":[374,375],"376":[255,376],"377":[377,378],"378":[377,378],"379":[379,380],"380":[379,380],"381":[381,382],"382":[381,382],"383":[83,115,383],"384":[384,579],"385":[385,595],"386":[386,387],"387":[386,387],"388":[388,389],"389":[388,389],"390":[390,596],"391":[391,392],"392":[391,392],"393":[393,598],"394":[394,599],"395":[395,396],"396":[395,396],"398":[398,477],"399":[399,601],"400":[400,603],"401":[401,402],"402":[401,402],"403":[403,608],"404":[404,611],"405":[405,502],"406":[406,617],"407":[407,616],"408":[408,409],"409":[408,409],"410":[410,573],"412":[412,623],"413":[413,626],"414":[414,544],"415":[415,629],"416":[416,417],"417":[416,417],"418":[418,419],"419":[418,419],"420":[420,421],"421":[420,421],"422":[422,640],"423":[423,424],"424":[423,424],"425":[425,643],"428":[428,429],"429":[428,429],"430":[430,648],"431":[431,432],"432":[431,432],"433":[433,650],"434":[434,651],"435":[435,436],"436":[435,436],"437":[437,438],"438":[437,438],"439":[439,658],"440":[440,441],"441":[440,441],"444":[444,445],"445":[444,445],"447":[447,503],"452":[452,453,454],"453":[452,453,454],"454":[452,453,454],"455":[455,456,457],"456":[455,456,457],"457":[455,456,457],"458":[458,459,460],"459":[458,459,460],"460":[458,459,460],"461":[461,462],"462":[461,462],"463":[463,464],"464":[463,464],"465":[465,466],"466":[465,466],"467":[467,468],"468":[467,468],"469":[469,470],"470":[469,470],"471":[471,472],"472":[471,472],"473":[473,474],"474":[473,474],"475":[475,476],"476":[475,476],"477":[398,477],"478":[478,479],"479":[478,479],"480":[480,481],"481":[480,481],"482":[482,483],"483":[482,483],"484":[484,485],"485":[484,485],"486":[486,487],"487":[486,487],"488":[488,489],"489":[488,489],"490":[490,491],"491":[490,491],"492":[492,493],"493":[492,493],"494":[494,495],"495":[494,495],"497":[497,498,499],"498":[497,498,499],"499":[497,498,499],"500":[500,501],"501":[500,501],"502":[405,502],"503":[447,503],"504":[504,505],"505":[504,505],"506":[506,507],"507":[506,507],"508":[508,509],"509":[508,509],"510":[510,511],"511":[510,511],"512":[512,513],"513":[512,513],"514":[514,515],"515":[514,515],"516":[516,517],"517":[516,517],"518":[518,519],"519":[518,519],"520":[520,521],"521":[520,521],"522":[522,523],"523":[522,523],"524":[524,525],"525":[524,525],"526":[526,527],"527":[526,527],"528":[528,529],"529":[528,529],"530":[530,531],"531":[530,531],"532":[532,533],"533":[532,533],"534":[534,535],"535":[534,535],"536":[536,537],"537":[536,537],"538":[538,539],"539":[538,539],"540":[540,541],"541":[540,541],"542":[542,543],"543":[542,543],"544":[414,544],"546":[546,547],"547":[546,547],"548":[548,549],"549":[548,549],"550":[550,551],"551":[550,551],"552":[552,553],"553":[552,553],"554":[554,555],"555":[554,555],"556":[556,557],"557":[556,557],"558":[558,559],"559":[558,559],"560":[560,561],"561":[560,561],"562":[562,563],"563":[562,563],"570":[570,11365],"571":[571,572],"572":[571,572],"573":[410,573],"574":[574,11366],"575":[575,11390],"576":[576,11391],"577":[577,578],"578":[577,578],"579":[384,579],"580":[580,649],"581":[581,652],"582":[582,583],"583":[582,583],"584":[584,585],"585":[584,585],"586":[586,587],"587":[586,587],"588":[588,589],"589":[588,589],"590":[590,591],"591":[590,591],"592":[592,11375],"593":[593,11373],"594":[594,11376],"595":[385,595],"596":[390,596],"598":[393,598],"599":[394,599],"601":[399,601],"603":[400,603],"604":[604,42923],"608":[403,608],"609":[609,42924],"611":[404,611],"613":[613,42893],"614":[614,42922],"616":[407,616],"617":[406,617],"618":[618,42926],"619":[619,11362],"620":[620,42925],"623":[412,623],"625":[625,11374],"626":[413,626],"629":[415,629],"637":[637,11364],"640":[422,640],"642":[642,42949],"643":[425,643],"647":[647,42929],"648":[430,648],"649":[580,649],"650":[433,650],"651":[434,651],"652":[581,652],"658":[439,658],"669":[669,42930],"670":[670,42928],"837":[837,921,953,8126],"880":[880,881],"881":[880,881],"882":[882,883],"883":[882,883],"886":[886,887],"887":[886,887],"891":[891,1021],"892":[892,1022],"893":[893,1023],"895":[895,1011],"902":[902,940],"904":[904,941],"905":[905,942],"906":[906,943],"908":[908,972],"910":[910,973],"911":[911,974],"913":[913,945],"914":[914,946,976],"915":[915,947],"916":[916,948],"917":[917,949,1013],"918":[918,950],"919":[919,951],"920":[920,952,977,1012],"921":[837,921,953,8126],"922":[922,954,1008],"923":[923,955],"924":[181,924,956],"925":[925,957],"926":[926,958],"927":[927,959],"928":[928,960,982],"929":[929,961,1009],"931":[931,962,963],"932":[932,964],"933":[933,965],"934":[934,966,981],"935":[935,967],"936":[936,968],"937":[937,969,8486],"938":[938,970],"939":[939,971],"940":[902,940],"941":[904,941],"942":[905,942],"943":[906,943],"945":[913,945],"946":[914,946,976],"947":[915,947],"948":[916,948],"949":[917,949,1013],"950":[918,950],"951":[919,951],"952":[920,952,977,1012],"953":[837,921,953,8126],"954":[922,954,1008],"955":[923,955],"956":[181,924,956],"957":[925,957],"958":[926,958],"959":[927,959],"960":[928,960,982],"961":[929,961,1009],"962":[931,962,963],"963":[931,962,963],"964":[932,964],"965":[933,965],"966":[934,966,981],"967":[935,967],"968":[936,968],"969":[937,969,8486],"970":[938,970],"971":[939,971],"972":[908,972],"973":[910,973],"974":[911,974],"975":[975,983],"976":[914,946,976],"977":[920,952,977,1012],"981":[934,966,981],"982":[928,960,982],"983":[975,983],"984":[984,985],"985":[984,985],"986":[986,987],"987":[986,987],"988":[988,989],"989":[988,989],"990":[990,991],"991":[990,991],"992":[992,993],"993":[992,993],"994":[994,995],"995":[994,995],"996":[996,997],"997":[996,997],"998":[998,999],"999":[998,999],"1000":[1000,1001],"1001":[1000,1001],"1002":[1002,1003],"1003":[1002,1003],"1004":[1004,1005],"1005":[1004,1005],"1006":[1006,1007],"1007":[1006,1007],"1008":[922,954,1008],"1009":[929,961,1009],"1010":[1010,1017],"1011":[895,1011],"1012":[920,952,977,1012],"1013":[917,949,1013],"1015":[1015,1016],"1016":[1015,1016],"1017":[1010,1017],"1018":[1018,1019],"1019":[1018,1019],"1021":[891,1021],"1022":[892,1022],"1023":[893,1023],"1024":[1024,1104],"1025":[1025,1105],"1026":[1026,1106],"1027":[1027,1107],"1028":[1028,1108],"1029":[1029,1109],"1030":[1030,1110],"1031":[1031,1111],"1032":[1032,1112],"1033":[1033,1113],"1034":[1034,1114],"1035":[1035,1115],"1036":[1036,1116],"1037":[1037,1117],"1038":[1038,1118],"1039":[1039,1119],"1040":[1040,1072],"1041":[1041,1073],"1042":[1042,1074,7296],"1043":[1043,1075],"1044":[1044,1076,7297],"1045":[1045,1077],"1046":[1046,1078],"1047":[1047,1079],"1048":[1048,1080],"1049":[1049,1081],"1050":[1050,1082],"1051":[1051,1083],"1052":[1052,1084],"1053":[1053,1085],"1054":[1054,1086,7298],"1055":[1055,1087],"1056":[1056,1088],"1057":[1057,1089,7299],"1058":[1058,1090,7300,7301],"1059":[1059,1091],"1060":[1060,1092],"1061":[1061,1093],"1062":[1062,1094],"1063":[1063,1095],"1064":[1064,1096],"1065":[1065,1097],"1066":[1066,1098,7302],"1067":[1067,1099],"1068":[1068,1100],"1069":[1069,1101],"1070":[1070,1102],"1071":[1071,1103],"1072":[1040,1072],"1073":[1041,1073],"1074":[1042,1074,7296],"1075":[1043,1075],"1076":[1044,1076,7297],"1077":[1045,1077],"1078":[1046,1078],"1079":[1047,1079],"1080":[1048,1080],"1081":[1049,1081],"1082":[1050,1082],"1083":[1051,1083],"1084":[1052,1084],"1085":[1053,1085],"1086":[1054,1086,7298],"1087":[1055,1087],"1088":[1056,1088],"1089":[1057,1089,7299],"1090":[1058,1090,7300,7301],"1091":[1059,1091],"1092":[1060,1092],"1093":[1061,1093],"1094":[1062,1094],"1095":[1063,1095],"1096":[1064,1096],"1097":[1065,1097],"1098":[1066,1098,7302],"1099":[1067,1099],"1100":[1068,1100],"1101":[1069,1101],"1102":[1070,1102],"1103":[1071,1103],"1104":[1024,1104],"1105":[1025,1105],"1106":[1026,1106],"1107":[1027,1107],"1108":[1028,1108],"1109":[1029,1109],"1110":[1030,1110],"1111":[1031,1111],"1112":[1032,1112],"1113":[1033,1113],"1114":[1034,1114],"1115":[1035,1115],"1116":[1036,1116],"1117":[1037,1117],"1118":[1038,1118],"1119":[1039,1119],"1120":[1120,1121],"1121":[1120,1121],"1122":[1122,1123,7303],"1123":[1122,1123,7303],"1124":[1124,1125],"1125":[1124,1125],"1126":[1126,1127],"1127":[1126,1127],"1128":[1128,1129],"1129":[1128,1129],"1130":[1130,1131],"1131":[1130,1131],"1132":[1132,1133],"1133":[1132,1133],"1134":[1134,1135],"1135":[1134,1135],"1136":[1136,1137],"1137":[1136,1137],"1138":[1138,1139],"1139":[1138,1139],"1140":[1140,1141],"1141":[1140,1141],"1142":[1142,1143],"1143":[1142,1143],"1144":[1144,1145],"1145":[1144,1145],"1146":[1146,1147],"1147":[1146,1147],"1148":[1148,1149],"1149":[1148,1149],"1150":[1150,1151],"1151":[1150,1151],"1152":[1152,1153],"1153":[1152,1153],"1162":[1162,1163],"1163":[1162,1163],"1164":[1164,1165],"1165":[1164,1165],"1166":[1166,1167],"1167":[1166,1167],"1168":[1168,1169],"1169":[1168,1169],"1170":[1170,1171],"1171":[1170,1171],"1172":[1172,1173],"1173":[1172,1173],"1174":[1174,1175],"1175":[1174,1175],"1176":[1176,1177],"1177":[1176,1177],"1178":[1178,1179],"1179":[1178,1179],"1180":[1180,1181],"1181":[1180,1181],"1182":[1182,1183],"1183":[1182,1183],"1184":[1184,1185],"1185":[1184,1185],"1186":[1186,1187],"1187":[1186,1187],"1188":[1188,1189],"1189":[1188,1189],"1190":[1190,1191],"1191":[1190,1191],"1192":[1192,1193],"1193":[1192,1193],"1194":[1194,1195],"1195":[1194,1195],"1196":[1196,1197],"1197":[1196,1197],"1198":[1198,1199],"1199":[1198,1199],"1200":[1200,1201],"1201":[1200,1201],"1202":[1202,1203],"1203":[1202,1203],"1204":[1204,1205],"1205":[1204,1205],"1206":[1206,1207],"1207":[1206,1207],"1208":[1208,1209],"1209":[1208,1209],"1210":[1210,1211],"1211":[1210,1211],"1212":[1212,1213],"1213":[1212,1213],"1214":[1214,1215],"1215":[1214,1215],"1216":[1216,1231],"1217":[1217,1218],"1218":[1217,1218],"1219":[1219,1220],"1220":[1219,1220],"1221":[1221,1222],"1222":[1221,1222],"1223":[1223,1224],"1224":[1223,1224],"1225":[1225,1226],"1226":[1225,1226],"1227":[1227,1228],"1228":[1227,1228],"1229":[1229,1230],"1230":[1229,1230],"1231":[1216,1231],"1232":[1232,1233],"1233":[1232,1233],"1234":[1234,1235],"1235":[1234,1235],"1236":[1236,1237],"1237":[1236,1237],"1238":[1238,1239],"1239":[1238,1239],"1240":[1240,1241],"1241":[1240,1241],"1242":[1242,1243],"1243":[1242,1243],"1244":[1244,1245],"1245":[1244,1245],"1246":[1246,1247],"1247":[1246,1247],"1248":[1248,1249],"1249":[1248,1249],"1250":[1250,1251],"1251":[1250,1251],"1252":[1252,1253],"1253":[1252,1253],"1254":[1254,1255],"1255":[1254,1255],"1256":[1256,1257],"1257":[1256,1257],"1258":[1258,1259],"1259":[1258,1259],"1260":[1260,1261],"1261":[1260,1261],"1262":[1262,1263],"1263":[1262,1263],"1264":[1264,1265],"1265":[1264,1265],"1266":[1266,1267],"1267":[1266,1267],"1268":[1268,1269],"1269":[1268,1269],"1270":[1270,1271],"1271":[1270,1271],"1272":[1272,1273],"1273":[1272,1273],"1274":[1274,1275],"1275":[1274,1275],"1276":[1276,1277],"1277":[1276,1277],"1278":[1278,1279],"1279":[1278,1279],"1280":[1280,1281],"1281":[1280,1281],"1282":[1282,1283],"1283":[1282,1283],"1284":[1284,1285],"1285":[1284,1285],"1286":[1286,1287],"1287":[1286,1287],"1288":[1288,1289],"1289":[1288,1289],"1290":[1290,1291],"1291":[1290,1291],"1292":[1292,1293],"1293":[1292,1293],"1294":[1294,1295],"1295":[1294,1295],"1296":[1296,1297],"1297":[1296,1297],"1298":[1298,1299],"1299":[1298,1299],"1300":[1300,1301],"1301":[1300,1301],"1302":[1302,1303],"1303":[1302,1303],"1304":[1304,1305],"1305":[1304,1305],"1306":[1306,1307],"1307":[1306,1307],"1308":[1308,1309],"1309":[1308,1309],"1310":[1310,1311],"1311":[1310,1311],"1312":[1312,1313],"1313":[1312,1313],"1314":[1314,1315],"1315":[1314,1315],"1316":[1316,1317],"1317":[1316,1317],"1318":[1318,1319],"1319":[1318,1319],"1320":[1320,1321],"1321":[1320,1321],"1322":[1322,1323],"1323":[1322,1323],"1324":[1324,1325],"1325":[1324,1325],"1326":[1326,1327],"1327":[1326,1327],"1329":[1329,1377],"1330":[1330,1378],"1331":[1331,1379],"1332":[1332,1380],"1333":[1333,1381],"1334":[1334,1382],"1335":[1335,1383],"1336":[1336,1384],"1337":[1337,1385],"1338":[1338,1386],"1339":[1339,1387],"1340":[1340,1388],"1341":[1341,1389],"1342":[1342,1390],"1343":[1343,1391],"1344":[1344,1392],"1345":[1345,1393],"1346":[1346,1394],"1347":[1347,1395],"1348":[1348,1396],"1349":[1349,1397],"1350":[1350,1398],"1351":[1351,1399],"1352":[1352,1400],"1353":[1353,1401],"1354":[1354,1402],"1355":[1355,1403],"1356":[1356,1404],"1357":[1357,1405],"1358":[1358,1406],"1359":[1359,1407],"1360":[1360,1408],"1361":[1361,1409],"1362":[1362,1410],"1363":[1363,1411],"1364":[1364,1412],"1365":[1365,1413],"1366":[1366,1414],"1377":[1329,1377],"1378":[1330,1378],"1379":[1331,1379],"1380":[1332,1380],"1381":[1333,1381],"1382":[1334,1382],"1383":[1335,1383],"1384":[1336,1384],"1385":[1337,1385],"1386":[1338,1386],"1387":[1339,1387],"1388":[1340,1388],"1389":[1341,1389],"1390":[1342,1390],"1391":[1343,1391],"1392":[1344,1392],"1393":[1345,1393],"1394":[1346,1394],"1395":[1347,1395],"1396":[1348,1396],"1397":[1349,1397],"1398":[1350,1398],"1399":[1351,1399],"1400":[1352,1400],"1401":[1353,1401],"1402":[1354,1402],"1403":[1355,1403],"1404":[1356,1404],"1405":[1357,1405],"1406":[1358,1406],"1407":[1359,1407],"1408":[1360,1408],"1409":[1361,1409],"1410":[1362,1410],"1411":[1363,1411],"1412":[1364,1412],"1413":[1365,1413],"1414":[1366,1414],"4256":[4256,11520],"4257":[4257,11521],"4258":[4258,11522],"4259":[4259,11523],"4260":[4260,11524],"4261":[4261,11525],"4262":[4262,11526],"4263":[4263,11527],"4264":[4264,11528],"4265":[4265,11529],"4266":[4266,11530],"4267":[4267,11531],"4268":[4268,11532],"4269":[4269,11533],"4270":[4270,11534],"4271":[4271,11535],"4272":[4272,11536],"4273":[4273,11537],"4274":[4274,11538],"4275":[4275,11539],"4276":[4276,11540],"4277":[4277,11541],"4278":[4278,11542],"4279":[4279,11543],"4280":[4280,11544],"4281":[4281,11545],"4282":[4282,11546],"4283":[4283,11547],"4284":[4284,11548],"4285":[4285,11549],"4286":[4286,11550],"4287":[4287,11551],"4288":[4288,11552],"4289":[4289,11553],"4290":[4290,11554],"4291":[4291,11555],"4292":[4292,11556],"4293":[4293,11557],"4295":[4295,11559],"4301":[4301,11565],"4304":[4304,7312],"4305":[4305,7313],"4306":[4306,7314],"4307":[4307,7315],"4308":[4308,7316],"4309":[4309,7317],"4310":[4310,7318],"4311":[4311,7319],"4312":[4312,7320],"4313":[4313,7321],"4314":[4314,7322],"4315":[4315,7323],"4316":[4316,7324],"4317":[4317,7325],"4318":[4318,7326],"4319":[4319,7327],"4320":[4320,7328],"4321":[4321,7329],"4322":[4322,7330],"4323":[4323,7331],"4324":[4324,7332],"4325":[4325,7333],"4326":[4326,7334],"4327":[4327,7335],"4328":[4328,7336],"4329":[4329,7337],"4330":[4330,7338],"4331":[4331,7339],"4332":[4332,7340],"4333":[4333,7341],"4334":[4334,7342],"4335":[4335,7343],"4336":[4336,7344],"4337":[4337,7345],"4338":[4338,7346],"4339":[4339,7347],"4340":[4340,7348],"4341":[4341,7349],"4342":[4342,7350],"4343":[4343,7351],"4344":[4344,7352],"4345":[4345,7353],"4346":[4346,7354],"4349":[4349,7357],"4350":[4350,7358],"4351":[4351,7359],"5024":[5024,43888],"5025":[5025,43889],"5026":[5026,43890],"5027":[5027,43891],"5028":[5028,43892],"5029":[5029,43893],"5030":[5030,43894],"5031":[5031,43895],"5032":[5032,43896],"5033":[5033,43897],"5034":[5034,43898],"5035":[5035,43899],"5036":[5036,43900],"5037":[5037,43901],"5038":[5038,43902],"5039":[5039,43903],"5040":[5040,43904],"5041":[5041,43905],"5042":[5042,43906],"5043":[5043,43907],"5044":[5044,43908],"5045":[5045,43909],"5046":[5046,43910],"5047":[5047,43911],"5048":[5048,43912],"5049":[5049,43913],"5050":[5050,43914],"5051":[5051,43915],"5052":[5052,43916],"5053":[5053,43917],"5054":[5054,43918],"5055":[5055,43919],"5056":[5056,43920],"5057":[5057,43921],"5058":[5058,43922],"5059":[5059,43923],"5060":[5060,43924],"5061":[5061,43925],"5062":[5062,43926],"5063":[5063,43927],"5064":[5064,43928],"5065":[5065,43929],"5066":[5066,43930],"5067":[5067,43931],"5068":[5068,43932],"5069":[5069,43933],"5070":[5070,43934],"5071":[5071,43935],"5072":[5072,43936],"5073":[5073,43937],"5074":[5074,43938],"5075":[5075,43939],"5076":[5076,43940],"5077":[5077,43941],"5078":[5078,43942],"5079":[5079,43943],"5080":[5080,43944],"5081":[5081,43945],"5082":[5082,43946],"5083":[5083,43947],"5084":[5084,43948],"5085":[5085,43949],"5086":[5086,43950],"5087":[5087,43951],"5088":[5088,43952],"5089":[5089,43953],"5090":[5090,43954],"5091":[5091,43955],"5092":[5092,43956],"5093":[5093,43957],"5094":[5094,43958],"5095":[5095,43959],"5096":[5096,43960],"5097":[5097,43961],"5098":[5098,43962],"5099":[5099,43963],"5100":[5100,43964],"5101":[5101,43965],"5102":[5102,43966],"5103":[5103,43967],"5104":[5104,5112],"5105":[5105,5113],"5106":[5106,5114],"5107":[5107,5115],"5108":[5108,5116],"5109":[5109,5117],"5112":[5104,5112],"5113":[5105,5113],"5114":[5106,5114],"5115":[5107,5115],"5116":[5108,5116],"5117":[5109,5117],"7296":[1042,1074,7296],"7297":[1044,1076,7297],"7298":[1054,1086,7298],"7299":[1057,1089,7299],"7300":[1058,1090,7300,7301],"7301":[1058,1090,7300,7301],"7302":[1066,1098,7302],"7303":[1122,1123,7303],"7304":[7304,42570,42571],"7312":[4304,7312],"7313":[4305,7313],"7314":[4306,7314],"7315":[4307,7315],"7316":[4308,7316],"7317":[4309,7317],"7318":[4310,7318],"7319":[4311,7319],"7320":[4312,7320],"7321":[4313,7321],"7322":[4314,7322],"7323":[4315,7323],"7324":[4316,7324],"7325":[4317,7325],"7326":[4318,7326],"7327":[4319,7327],"7328":[4320,7328],"7329":[4321,7329],"7330":[4322,7330],"7331":[4323,7331],"7332":[4324,7332],"7333":[4325,7333],"7334":[4326,7334],"7335":[4327,7335],"7336":[4328,7336],"7337":[4329,7337],"7338":[4330,7338],"7339":[4331,7339],"7340":[4332,7340],"7341":[4333,7341],"7342":[4334,7342],"7343":[4335,7343],"7344":[4336,7344],"7345":[4337,7345],"7346":[4338,7346],"7347":[4339,7347],"7348":[4340,7348],"7349":[4341,7349],"7350":[4342,7350],"7351":[4343,7351],"7352":[4344,7352],"7353":[4345,7353],"7354":[4346,7354],"7357":[4349,7357],"7358":[4350,7358],"7359":[4351,7359],"7545":[7545,42877],"7549":[7549,11363],"7566":[7566,42950],"7680":[7680,7681],"7681":[7680,7681],"7682":[7682,7683],"7683":[7682,7683],"7684":[7684,7685],"7685":[7684,7685],"7686":[7686,7687],"7687":[7686,7687],"7688":[7688,7689],"7689":[7688,7689],"7690":[7690,7691],"7691":[7690,7691],"7692":[7692,7693],"7693":[7692,7693],"7694":[7694,7695],"7695":[7694,7695],"7696":[7696,7697],"7697":[7696,7697],"7698":[7698,7699],"7699":[7698,7699],"7700":[7700,7701],"7701":[7700,7701],"7702":[7702,7703],"7703":[7702,7703],"7704":[7704,7705],"7705":[7704,7705],"7706":[7706,7707],"7707":[7706,7707],"7708":[7708,7709],"7709":[7708,7709],"7710":[7710,7711],"7711":[7710,7711],"7712":[7712,7713],"7713":[7712,7713],"7714":[7714,7715],"7715":[7714,7715],"7716":[7716,7717],"7717":[7716,7717],"7718":[7718,7719],"7719":[7718,7719],"7720":[7720,7721],"7721":[7720,7721],"7722":[7722,7723],"7723":[7722,7723],"7724":[7724,7725],"7725":[7724,7725],"7726":[7726,7727],"7727":[7726,7727],"7728":[7728,7729],"7729":[7728,7729],"7730":[7730,7731],"7731":[7730,7731],"7732":[7732,7733],"7733":[7732,7733],"7734":[7734,7735],"7735":[7734,7735],"7736":[7736,7737],"7737":[7736,7737],"7738":[7738,7739],"7739":[7738,7739],"7740":[7740,7741],"7741":[7740,7741],"7742":[7742,7743],"7743":[7742,7743],"7744":[7744,7745],"7745":[7744,7745],"7746":[7746,7747],"7747":[7746,7747],"7748":[7748,7749],"7749":[7748,7749],"7750":[7750,7751],"7751":[7750,7751],"7752":[7752,7753],"7753":[7752,7753],"7754":[7754,7755],"7755":[7754,7755],"7756":[7756,7757],"7757":[7756,7757],"7758":[7758,7759],"7759":[7758,7759],"7760":[7760,7761],"7761":[7760,7761],"7762":[7762,7763],"7763":[7762,7763],"7764":[7764,7765],"7765":[7764,7765],"7766":[7766,7767],"7767":[7766,7767],"7768":[7768,7769],"7769":[7768,7769],"7770":[7770,7771],"7771":[7770,7771],"7772":[7772,7773],"7773":[7772,7773],"7774":[7774,7775],"7775":[7774,7775],"7776":[7776,7777,7835],"7777":[7776,7777,7835],"7778":[7778,7779],"7779":[7778,7779],"7780":[7780,7781],"7781":[7780,7781],"7782":[7782,7783],"7783":[7782,7783],"7784":[7784,7785],"7785":[7784,7785],"7786":[7786,7787],"7787":[7786,7787],"7788":[7788,7789],"7789":[7788,7789],"7790":[7790,7791],"7791":[7790,7791],"7792":[7792,7793],"7793":[7792,7793],"7794":[7794,7795],"7795":[7794,7795],"7796":[7796,7797],"7797":[7796,7797],"7798":[7798,7799],"7799":[7798,7799],"7800":[7800,7801],"7801":[7800,7801],"7802":[7802,7803],"7803":[7802,7803],"7804":[7804,7805],"7805":[7804,7805],"7806":[7806,7807],"7807":[7806,7807],"7808":[7808,7809],"7809":[7808,7809],"7810":[7810,7811],"7811":[7810,7811],"7812":[7812,7813],"7813":[7812,7813],"7814":[7814,7815],"7815":[7814,7815],"7816":[7816,7817],"7817":[7816,7817],"7818":[7818,7819],"7819":[7818,7819],"7820":[7820,7821],"7821":[7820,7821],"7822":[7822,7823],"7823":[7822,7823],"7824":[7824,7825],"7825":[7824,7825],"7826":[7826,7827],"7827":[7826,7827],"7828":[7828,7829],"7829":[7828,7829],"7835":[7776,7777,7835],"7838":[223,7838],"7840":[7840,7841],"7841":[7840,7841],"7842":[7842,7843],"7843":[7842,7843],"7844":[7844,7845],"7845":[7844,7845],"7846":[7846,7847],"7847":[7846,7847],"7848":[7848,7849],"7849":[7848,7849],"7850":[7850,7851],"7851":[7850,7851],"7852":[7852,7853],"7853":[7852,7853],"7854":[7854,7855],"7855":[7854,7855],"7856":[7856,7857],"7857":[7856,7857],"7858":[7858,7859],"7859":[7858,7859],"7860":[7860,7861],"7861":[7860,7861],"7862":[7862,7863],"7863":[7862,7863],"7864":[7864,7865],"7865":[7864,7865],"7866":[7866,7867],"7867":[7866,7867],"7868":[7868,7869],"7869":[7868,7869],"7870":[7870,7871],"7871":[7870,7871],"7872":[7872,7873],"7873":[7872,7873],"7874":[7874,7875],"7875":[7874,7875],"7876":[7876,7877],"7877":[7876,7877],"7878":[7878,7879],"7879":[7878,7879],"7880":[7880,7881],"7881":[7880,7881],"7882":[7882,7883],"7883":[7882,7883],"7884":[7884,7885],"7885":[7884,7885],"7886":[7886,7887],"7887":[7886,7887],"7888":[7888,7889],"7889":[7888,7889],"7890":[7890,7891],"7891":[7890,7891],"7892":[7892,7893],"7893":[7892,7893],"7894":[7894,7895],"7895":[7894,7895],"7896":[7896,7897],"7897":[7896,7897],"7898":[7898,7899],"7899":[7898,7899],"7900":[7900,7901],"7901":[7900,7901],"7902":[7902,7903],"7903":[7902,7903],"7904":[7904,7905],"7905":[7904,7905],"7906":[7906,7907],"7907":[7906,7907],"7908":[7908,7909],"7909":[7908,7909],"7910":[7910,7911],"7911":[7910,7911],"7912":[7912,7913],"7913":[7912,7913],"7914":[7914,7915],"7915":[7914,7915],"7916":[7916,7917],"7917":[7916,7917],"7918":[7918,7919],"7919":[7918,7919],"7920":[7920,7921],"7921":[7920,7921],"7922":[7922,7923],"7923":[7922,7923],"7924":[7924,7925],"7925":[7924,7925],"7926":[7926,7927],"7927":[7926,7927],"7928":[7928,7929],"7929":[7928,7929],"7930":[7930,7931],"7931":[7930,7931],"7932":[7932,7933],"7933":[7932,7933],"7934":[7934,7935],"7935":[7934,7935],"7936":[7936,7944],"7937":[7937,7945],"7938":[7938,7946],"7939":[7939,7947],"7940":[7940,7948],"7941":[7941,7949],"7942":[7942,7950],"7943":[7943,7951],"7944":[7936,7944],"7945":[7937,7945],"7946":[7938,7946],"7947":[7939,7947],"7948":[7940,7948],"7949":[7941,7949],"7950":[7942,7950],"7951":[7943,7951],"7952":[7952,7960],"7953":[7953,7961],"7954":[7954,7962],"7955":[7955,7963],"7956":[7956,7964],"7957":[7957,7965],"7960":[7952,7960],"7961":[7953,7961],"7962":[7954,7962],"7963":[7955,7963],"7964":[7956,7964],"7965":[7957,7965],"7968":[7968,7976],"7969":[7969,7977],"7970":[7970,7978],"7971":[7971,7979],"7972":[7972,7980],"7973":[7973,7981],"7974":[7974,7982],"7975":[7975,7983],"7976":[7968,7976],"7977":[7969,7977],"7978":[7970,7978],"7979":[7971,7979],"7980":[7972,7980],"7981":[7973,7981],"7982":[7974,7982],"7983":[7975,7983],"7984":[7984,7992],"7985":[7985,7993],"7986":[7986,7994],"7987":[7987,7995],"7988":[7988,7996],"7989":[7989,7997],"7990":[7990,7998],"7991":[7991,7999],"7992":[7984,7992],"7993":[7985,7993],"7994":[7986,7994],"7995":[7987,7995],"7996":[7988,7996],"7997":[7989,7997],"7998":[7990,7998],"7999":[7991,7999],"8000":[8000,8008],"8001":[8001,8009],"8002":[8002,8010],"8003":[8003,8011],"8004":[8004,8012],"8005":[8005,8013],"8008":[8000,8008],"8009":[8001,8009],"8010":[8002,8010],"8011":[8003,8011],"8012":[8004,8012],"8013":[8005,8013],"8017":[8017,8025],"8019":[8019,8027],"8021":[8021,8029],"8023":[8023,8031],"8025":[8017,8025],"8027":[8019,8027],"8029":[8021,8029],"8031":[8023,8031],"8032":[8032,8040],"8033":[8033,8041],"8034":[8034,8042],"8035":[8035,8043],"8036":[8036,8044],"8037":[8037,8045],"8038":[8038,8046],"8039":[8039,8047],"8040":[8032,8040],"8041":[8033,8041],"8042":[8034,8042],"8043":[8035,8043],"8044":[8036,8044],"8045":[8037,8045],"8046":[8038,8046],"8047":[8039,8047],"8048":[8048,8122],"8049":[8049,8123],"8050":[8050,8136],"8051":[8051,8137],"8052":[8052,8138],"8053":[8053,8139],"8054":[8054,8154],"8055":[8055,8155],"8056":[8056,8184],"8057":[8057,8185],"8058":[8058,8170],"8059":[8059,8171],"8060":[8060,8186],"8061":[8061,8187],"8064":[8064,8072],"8065":[8065,8073],"8066":[8066,8074],"8067":[8067,8075],"8068":[8068,8076],"8069":[8069,8077],"8070":[8070,8078],"8071":[8071,8079],"8072":[8064,8072],"8073":[8065,8073],"8074":[8066,8074],"8075":[8067,8075],"8076":[8068,8076],"8077":[8069,8077],"8078":[8070,8078],"8079":[8071,8079],"8080":[8080,8088],"8081":[8081,8089],"8082":[8082,8090],"8083":[8083,8091],"8084":[8084,8092],"8085":[8085,8093],"8086":[8086,8094],"8087":[8087,8095],"8088":[8080,8088],"8089":[8081,8089],"8090":[8082,8090],"8091":[8083,8091],"8092":[8084,8092],"8093":[8085,8093],"8094":[8086,8094],"8095":[8087,8095],"8096":[8096,8104],"8097":[8097,8105],"8098":[8098,8106],"8099":[8099,8107],"8100":[8100,8108],"8101":[8101,8109],"8102":[8102,8110],"8103":[8103,8111],"8104":[8096,8104],"8105":[8097,8105],"8106":[8098,8106],"8107":[8099,8107],"8108":[8100,8108],"8109":[8101,8109],"8110":[8102,8110],"8111":[8103,8111],"8112":[8112,8120],"8113":[8113,8121],"8115":[8115,8124],"8120":[8112,8120],"8121":[8113,8121],"8122":[8048,8122],"8123":[8049,8123],"8124":[8115,8124],"8126":[837,921,953,8126],"8131":[8131,8140],"8136":[8050,8136],"8137":[8051,8137],"8138":[8052,8138],"8139":[8053,8139],"8140":[8131,8140],"8144":[8144,8152],"8145":[8145,8153],"8152":[8144,8152],"8153":[8145,8153],"8154":[8054,8154],"8155":[8055,8155],"8160":[8160,8168],"8161":[8161,8169],"8165":[8165,8172],"8168":[8160,8168],"8169":[8161,8169],"8170":[8058,8170],"8171":[8059,8171],"8172":[8165,8172],"8179":[8179,8188],"8184":[8056,8184],"8185":[8057,8185],"8186":[8060,8186],"8187":[8061,8187],"8188":[8179,8188],"8486":[937,969,8486],"8490":[75,107,8490],"8491":[197,229,8491],"8498":[8498,8526],"8526":[8498,8526],"8544":[8544,8560],"8545":[8545,8561],"8546":[8546,8562],"8547":[8547,8563],"8548":[8548,8564],"8549":[8549,8565],"8550":[8550,8566],"8551":[8551,8567],"8552":[8552,8568],"8553":[8553,8569],"8554":[8554,8570],"8555":[8555,8571],"8556":[8556,8572],"8557":[8557,8573],"8558":[8558,8574],"8559":[8559,8575],"8560":[8544,8560],"8561":[8545,8561],"8562":[8546,8562],"8563":[8547,8563],"8564":[8548,8564],"8565":[8549,8565],"8566":[8550,8566],"8567":[8551,8567],"8568":[8552,8568],"8569":[8553,8569],"8570":[8554,8570],"8571":[8555,8571],"8572":[8556,8572],"8573":[8557,8573],"8574":[8558,8574],"8575":[8559,8575],"8579":[8579,8580],"8580":[8579,8580],"9398":[9398,9424],"9399":[9399,9425],"9400":[9400,9426],"9401":[9401,9427],"9402":[9402,9428],"9403":[9403,9429],"9404":[9404,9430],"9405":[9405,9431],"9406":[9406,9432],"9407":[9407,9433],"9408":[9408,9434],"9409":[9409,9435],"9410":[9410,9436],"9411":[9411,9437],"9412":[9412,9438],"9413":[9413,9439],"9414":[9414,9440],"9415":[9415,9441],"9416":[9416,9442],"9417":[9417,9443],"9418":[9418,9444],"9419":[9419,9445],"9420":[9420,9446],"9421":[9421,9447],"9422":[9422,9448],"9423":[9423,9449],"9424":[9398,9424],"9425":[9399,9425],"9426":[9400,9426],"9427":[9401,9427],"9428":[9402,9428],"9429":[9403,9429],"9430":[9404,9430],"9431":[9405,9431],"9432":[9406,9432],"9433":[9407,9433],"9434":[9408,9434],"9435":[9409,9435],"9436":[9410,9436],"9437":[9411,9437],"9438":[9412,9438],"9439":[9413,9439],"9440":[9414,9440],"9441":[9415,9441],"9442":[9416,9442],"9443":[9417,9443],"9444":[9418,9444],"9445":[9419,9445],"9446":[9420,9446],"9447":[9421,9447],"9448":[9422,9448],"9449":[9423,9449],"11264":[11264,11312],"11265":[11265,11313],"11266":[11266,11314],"11267":[11267,11315],"11268":[11268,11316],"11269":[11269,11317],"11270":[11270,11318],"11271":[11271,11319],"11272":[11272,11320],"11273":[11273,11321],"11274":[11274,11322],"11275":[11275,11323],"11276":[11276,11324],"11277":[11277,11325],"11278":[11278,11326],"11279":[11279,11327],"11280":[11280,11328],"11281":[11281,11329],"11282":[11282,11330],"11283":[11283,11331],"11284":[11284,11332],"11285":[11285,11333],"11286":[11286,11334],"11287":[11287,11335],"11288":[11288,11336],"11289":[11289,11337],"11290":[11290,11338],"11291":[11291,11339],"11292":[11292,11340],"11293":[11293,11341],"11294":[11294,11342],"11295":[11295,11343],"11296":[11296,11344],"11297":[11297,11345],"11298":[11298,11346],"11299":[11299,11347],"11300":[11300,11348],"11301":[11301,11349],"11302":[11302,11350],"11303":[11303,11351],"11304":[11304,11352],"11305":[11305,11353],"11306":[11306,11354],"11307":[11307,11355],"11308":[11308,11356],"11309":[11309,11357],"11310":[11310,11358],"11312":[11264,11312],"11313":[11265,11313],"11314":[11266,11314],"11315":[11267,11315],"11316":[11268,11316],"11317":[11269,11317],"11318":[11270,11318],"11319":[11271,11319],"11320":[11272,11320],"11321":[11273,11321],"11322":[11274,11322],"11323":[11275,11323],"11324":[11276,11324],"11325":[11277,11325],"11326":[11278,11326],"11327":[11279,11327],"11328":[11280,11328],"11329":[11281,11329],"11330":[11282,11330],"11331":[11283,11331],"11332":[11284,11332],"11333":[11285,11333],"11334":[11286,11334],"11335":[11287,11335],"11336":[11288,11336],"11337":[11289,11337],"11338":[11290,11338],"11339":[11291,11339],"11340":[11292,11340],"11341":[11293,11341],"11342":[11294,11342],"11343":[11295,11343],"11344":[11296,11344],"11345":[11297,11345],"11346":[11298,11346],"11347":[11299,11347],"11348":[11300,11348],"11349":[11301,11349],"11350":[11302,11350],"11351":[11303,11351],"11352":[11304,11352],"11353":[11305,11353],"11354":[11306,11354],"11355":[11307,11355],"11356":[11308,11356],"11357":[11309,11357],"11358":[11310,11358],"11360":[11360,11361],"11361":[11360,11361],"11362":[619,11362],"11363":[7549,11363],"11364":[637,11364],"11365":[570,11365],"11366":[574,11366],"11367":[11367,11368],"11368":[11367,11368],"11369":[11369,11370],"11370":[11369,11370],"11371":[11371,11372],"11372":[11371,11372],"11373":[593,11373],"11374":[625,11374],"11375":[592,11375],"11376":[594,11376],"11378":[11378,11379],"11379":[11378,11379],"11381":[11381,11382],"11382":[11381,11382],"11390":[575,11390],"11391":[576,11391],"11392":[11392,11393],"11393":[11392,11393],"11394":[11394,11395],"11395":[11394,11395],"11396":[11396,11397],"11397":[11396,11397],"11398":[11398,11399],"11399":[11398,11399],"11400":[11400,11401],"11401":[11400,11401],"11402":[11402,11403],"11403":[11402,11403],"11404":[11404,11405],"11405":[11404,11405],"11406":[11406,11407],"11407":[11406,11407],"11408":[11408,11409],"11409":[11408,11409],"11410":[11410,11411],"11411":[11410,11411],"11412":[11412,11413],"11413":[11412,11413],"11414":[11414,11415],"11415":[11414,11415],"11416":[11416,11417],"11417":[11416,11417],"11418":[11418,11419],"11419":[11418,11419],"11420":[11420,11421],"11421":[11420,11421],"11422":[11422,11423],"11423":[11422,11423],"11424":[11424,11425],"11425":[11424,11425],"11426":[11426,11427],"11427":[11426,11427],"11428":[11428,11429],"11429":[11428,11429],"11430":[11430,11431],"11431":[11430,11431],"11432":[11432,11433],"11433":[11432,11433],"11434":[11434,11435],"11435":[11434,11435],"11436":[11436,11437],"11437":[11436,11437],"11438":[11438,11439],"11439":[11438,11439],"11440":[11440,11441],"11441":[11440,11441],"11442":[11442,11443],"11443":[11442,11443],"11444":[11444,11445],"11445":[11444,11445],"11446":[11446,11447],"11447":[11446,11447],"11448":[11448,11449],"11449":[11448,11449],"11450":[11450,11451],"11451":[11450,11451],"11452":[11452,11453],"11453":[11452,11453],"11454":[11454,11455],"11455":[11454,11455],"11456":[11456,11457],"11457":[11456,11457],"11458":[11458,11459],"11459":[11458,11459],"11460":[11460,11461],"11461":[11460,11461],"11462":[11462,11463],"11463":[11462,11463],"11464":[11464,11465],"11465":[11464,11465],"11466":[11466,11467],"11467":[11466,11467],"11468":[11468,11469],"11469":[11468,11469],"11470":[11470,11471],"11471":[11470,11471],"11472":[11472,11473],"11473":[11472,11473],"11474":[11474,11475],"11475":[11474,11475],"11476":[11476,11477],"11477":[11476,11477],"11478":[11478,11479],"11479":[11478,11479],"11480":[11480,11481],"11481":[11480,11481],"11482":[11482,11483],"11483":[11482,11483],"11484":[11484,11485],"11485":[11484,11485],"11486":[11486,11487],"11487":[11486,11487],"11488":[11488,11489],"11489":[11488,11489],"11490":[11490,11491],"11491":[11490,11491],"11499":[11499,11500],"11500":[11499,11500],"11501":[11501,11502],"11502":[11501,11502],"11506":[11506,11507],"11507":[11506,11507],"11520":[4256,11520],"11521":[4257,11521],"11522":[4258,11522],"11523":[4259,11523],"11524":[4260,11524],"11525":[4261,11525],"11526":[4262,11526],"11527":[4263,11527],"11528":[4264,11528],"11529":[4265,11529],"11530":[4266,11530],"11531":[4267,11531],"11532":[4268,11532],"11533":[4269,11533],"11534":[4270,11534],"11535":[4271,11535],"11536":[4272,11536],"11537":[4273,11537],"11538":[4274,11538],"11539":[4275,11539],"11540":[4276,11540],"11541":[4277,11541],"11542":[4278,11542],"11543":[4279,11543],"11544":[4280,11544],"11545":[4281,11545],"11546":[4282,11546],"11547":[4283,11547],"11548":[4284,11548],"11549":[4285,11549],"11550":[4286,11550],"11551":[4287,11551],"11552":[4288,11552],"11553":[4289,11553],"11554":[4290,11554],"11555":[4291,11555],"11556":[4292,11556],"11557":[4293,11557],"11559":[4295,11559],"11565":[4301,11565],"42560":[42560,42561],"42561":[42560,42561],"42562":[42562,42563],"42563":[42562,42563],"42564":[42564,42565],"42565":[42564,42565],"42566":[42566,42567],"42567":[42566,42567],"42568":[42568,42569],"42569":[42568,42569],"42570":[7304,42570,42571],"42571":[7304,42570,42571],"42572":[42572,42573],"42573":[42572,42573],"42574":[42574,42575],"42575":[42574,42575],"42576":[42576,42577],"42577":[42576,42577],"42578":[42578,42579],"42579":[42578,42579],"42580":[42580,42581],"42581":[42580,42581],"42582":[42582,42583],"42583":[42582,42583],"42584":[42584,42585],"42585":[42584,42585],"42586":[42586,42587],"42587":[42586,42587],"42588":[42588,42589],"42589":[42588,42589],"42590":[42590,42591],"42591":[42590,42591],"42592":[42592,42593],"42593":[42592,42593],"42594":[42594,42595],"42595":[42594,42595],"42596":[42596,42597],"42597":[42596,42597],"42598":[42598,42599],"42599":[42598,42599],"42600":[42600,42601],"42601":[42600,42601],"42602":[42602,42603],"42603":[42602,42603],"42604":[42604,42605],"42605":[42604,42605],"42624":[42624,42625],"42625":[42624,42625],"42626":[42626,42627],"42627":[42626,42627],"42628":[42628,42629],"42629":[42628,42629],"42630":[42630,42631],"42631":[42630,42631],"42632":[42632,42633],"42633":[42632,42633],"42634":[42634,42635],"42635":[42634,42635],"42636":[42636,42637],"42637":[42636,42637],"42638":[42638,42639],"42639":[42638,42639],"42640":[42640,42641],"42641":[42640,42641],"42642":[42642,42643],"42643":[42642,42643],"42644":[42644,42645],"42645":[42644,42645],"42646":[42646,42647],"42647":[42646,42647],"42648":[42648,42649],"42649":[42648,42649],"42650":[42650,42651],"42651":[42650,42651],"42786":[42786,42787],"42787":[42786,42787],"42788":[42788,42789],"42789":[42788,42789],"42790":[42790,42791],"42791":[42790,42791],"42792":[42792,42793],"42793":[42792,42793],"42794":[42794,42795],"42795":[42794,42795],"42796":[42796,42797],"42797":[42796,42797],"42798":[42798,42799],"42799":[42798,42799],"42802":[42802,42803],"42803":[42802,42803],"42804":[42804,42805],"42805":[42804,42805],"42806":[42806,42807],"42807":[42806,42807],"42808":[42808,42809],"42809":[42808,42809],"42810":[42810,42811],"42811":[42810,42811],"42812":[42812,42813],"42813":[42812,42813],"42814":[42814,42815],"42815":[42814,42815],"42816":[42816,42817],"42817":[42816,42817],"42818":[42818,42819],"42819":[42818,42819],"42820":[42820,42821],"42821":[42820,42821],"42822":[42822,42823],"42823":[42822,42823],"42824":[42824,42825],"42825":[42824,42825],"42826":[42826,42827],"42827":[42826,42827],"42828":[42828,42829],"42829":[42828,42829],"42830":[42830,42831],"42831":[42830,42831],"42832":[42832,42833],"42833":[42832,42833],"42834":[42834,42835],"42835":[42834,42835],"42836":[42836,42837],"42837":[42836,42837],"42838":[42838,42839],"42839":[42838,42839],"42840":[42840,42841],"42841":[42840,42841],"42842":[42842,42843],"42843":[42842,42843],"42844":[42844,42845],"42845":[42844,42845],"42846":[42846,42847],"42847":[42846,42847],"42848":[42848,42849],"42849":[42848,42849],"42850":[42850,42851],"42851":[42850,42851],"42852":[42852,42853],"42853":[42852,42853],"42854":[42854,42855],"42855":[42854,42855],"42856":[42856,42857],"42857":[42856,42857],"42858":[42858,42859],"42859":[42858,42859],"42860":[42860,42861],"42861":[42860,42861],"42862":[42862,42863],"42863":[42862,42863],"42873":[42873,42874],"42874":[42873,42874],"42875":[42875,42876],"42876":[42875,42876],"42877":[7545,42877],"42878":[42878,42879],"42879":[42878,42879],"42880":[42880,42881],"42881":[42880,42881],"42882":[42882,42883],"42883":[42882,42883],"42884":[42884,42885],"42885":[42884,42885],"42886":[42886,42887],"42887":[42886,42887],"42891":[42891,42892],"42892":[42891,42892],"42893":[613,42893],"42896":[42896,42897],"42897":[42896,42897],"42898":[42898,42899],"42899":[42898,42899],"42900":[42900,42948],"42902":[42902,42903],"42903":[42902,42903],"42904":[42904,42905],"42905":[42904,42905],"42906":[42906,42907],"42907":[42906,42907],"42908":[42908,42909],"42909":[42908,42909],"42910":[42910,42911],"42911":[42910,42911],"42912":[42912,42913],"42913":[42912,42913],"42914":[42914,42915],"42915":[42914,42915],"42916":[42916,42917],"42917":[42916,42917],"42918":[42918,42919],"42919":[42918,42919],"42920":[42920,42921],"42921":[42920,42921],"42922":[614,42922],"42923":[604,42923],"42924":[609,42924],"42925":[620,42925],"42926":[618,42926],"42928":[670,42928],"42929":[647,42929],"42930":[669,42930],"42931":[42931,43859],"42932":[42932,42933],"42933":[42932,42933],"42934":[42934,42935],"42935":[42934,42935],"42936":[42936,42937],"42937":[42936,42937],"42938":[42938,42939],"42939":[42938,42939],"42940":[42940,42941],"42941":[42940,42941],"42942":[42942,42943],"42943":[42942,42943],"42946":[42946,42947],"42947":[42946,42947],"42948":[42900,42948],"42949":[642,42949],"42950":[7566,42950],"42951":[42951,42952],"42952":[42951,42952],"42953":[42953,42954],"42954":[42953,42954],"42997":[42997,42998],"42998":[42997,42998],"43859":[42931,43859],"43888":[5024,43888],"43889":[5025,43889],"43890":[5026,43890],"43891":[5027,43891],"43892":[5028,43892],"43893":[5029,43893],"43894":[5030,43894],"43895":[5031,43895],"43896":[5032,43896],"43897":[5033,43897],"43898":[5034,43898],"43899":[5035,43899],"43900":[5036,43900],"43901":[5037,43901],"43902":[5038,43902],"43903":[5039,43903],"43904":[5040,43904],"43905":[5041,43905],"43906":[5042,43906],"43907":[5043,43907],"43908":[5044,43908],"43909":[5045,43909],"43910":[5046,43910],"43911":[5047,43911],"43912":[5048,43912],"43913":[5049,43913],"43914":[5050,43914],"43915":[5051,43915],"43916":[5052,43916],"43917":[5053,43917],"43918":[5054,43918],"43919":[5055,43919],"43920":[5056,43920],"43921":[5057,43921],"43922":[5058,43922],"43923":[5059,43923],"43924":[5060,43924],"43925":[5061,43925],"43926":[5062,43926],"43927":[5063,43927],"43928":[5064,43928],"43929":[5065,43929],"43930":[5066,43930],"43931":[5067,43931],"43932":[5068,43932],"43933":[5069,43933],"43934":[5070,43934],"43935":[5071,43935],"43936":[5072,43936],"43937":[5073,43937],"43938":[5074,43938],"43939":[5075,43939],"43940":[5076,43940],"43941":[5077,43941],"43942":[5078,43942],"43943":[5079,43943],"43944":[5080,43944],"43945":[5081,43945],"43946":[5082,43946],"43947":[5083,43947],"43948":[5084,43948],"43949":[5085,43949],"43950":[5086,43950],"43951":[5087,43951],"43952":[5088,43952],"43953":[5089,43953],"43954":[5090,43954],"43955":[5091,43955],"43956":[5092,43956],"43957":[5093,43957],"43958":[5094,43958],"43959":[5095,43959],"43960":[5096,43960],"43961":[5097,43961],"43962":[5098,43962],"43963":[5099,43963],"43964":[5100,43964],"43965":[5101,43965],"43966":[5102,43966],"43967":[5103,43967],"65313":[65313,65345],"65314":[65314,65346],"65315":[65315,65347],"65316":[65316,65348],"65317":[65317,65349],"65318":[65318,65350],"65319":[65319,65351],"65320":[65320,65352],"65321":[65321,65353],"65322":[65322,65354],"65323":[65323,65355],"65324":[65324,65356],"65325":[65325,65357],"65326":[65326,65358],"65327":[65327,65359],"65328":[65328,65360],"65329":[65329,65361],"65330":[65330,65362],"65331":[65331,65363],"65332":[65332,65364],"65333":[65333,65365],"65334":[65334,65366],"65335":[65335,65367],"65336":[65336,65368],"65337":[65337,65369],"65338":[65338,65370],"65345":[65313,65345],"65346":[65314,65346],"65347":[65315,65347],"65348":[65316,65348],"65349":[65317,65349],"65350":[65318,65350],"65351":[65319,65351],"65352":[65320,65352],"65353":[65321,65353],"65354":[65322,65354],"65355":[65323,65355],"65356":[65324,65356],"65357":[65325,65357],"65358":[65326,65358],"65359":[65327,65359],"65360":[65328,65360],"65361":[65329,65361],"65362":[65330,65362],"65363":[65331,65363],"65364":[65332,65364],"65365":[65333,65365],"65366":[65334,65366],"65367":[65335,65367],"65368":[65336,65368],"65369":[65337,65369],"65370":[65338,65370],"66560":[66560,66600],"66561":[66561,66601],"66562":[66562,66602],"66563":[66563,66603],"66564":[66564,66604],"66565":[66565,66605],"66566":[66566,66606],"66567":[66567,66607],"66568":[66568,66608],"66569":[66569,66609],"66570":[66570,66610],"66571":[66571,66611],"66572":[66572,66612],"66573":[66573,66613],"66574":[66574,66614],"66575":[66575,66615],"66576":[66576,66616],"66577":[66577,66617],"66578":[66578,66618],"66579":[66579,66619],"66580":[66580,66620],"66581":[66581,66621],"66582":[66582,66622],"66583":[66583,66623],"66584":[66584,66624],"66585":[66585,66625],"66586":[66586,66626],"66587":[66587,66627],"66588":[66588,66628],"66589":[66589,66629],"66590":[66590,66630],"66591":[66591,66631],"66592":[66592,66632],"66593":[66593,66633],"66594":[66594,66634],"66595":[66595,66635],"66596":[66596,66636],"66597":[66597,66637],"66598":[66598,66638],"66599":[66599,66639],"66600":[66560,66600],"66601":[66561,66601],"66602":[66562,66602],"66603":[66563,66603],"66604":[66564,66604],"66605":[66565,66605],"66606":[66566,66606],"66607":[66567,66607],"66608":[66568,66608],"66609":[66569,66609],"66610":[66570,66610],"66611":[66571,66611],"66612":[66572,66612],"66613":[66573,66613],"66614":[66574,66614],"66615":[66575,66615],"66616":[66576,66616],"66617":[66577,66617],"66618":[66578,66618],"66619":[66579,66619],"66620":[66580,66620],"66621":[66581,66621],"66622":[66582,66622],"66623":[66583,66623],"66624":[66584,66624],"66625":[66585,66625],"66626":[66586,66626],"66627":[66587,66627],"66628":[66588,66628],"66629":[66589,66629],"66630":[66590,66630],"66631":[66591,66631],"66632":[66592,66632],"66633":[66593,66633],"66634":[66594,66634],"66635":[66595,66635],"66636":[66596,66636],"66637":[66597,66637],"66638":[66598,66638],"66639":[66599,66639],"66736":[66736,66776],"66737":[66737,66777],"66738":[66738,66778],"66739":[66739,66779],"66740":[66740,66780],"66741":[66741,66781],"66742":[66742,66782],"66743":[66743,66783],"66744":[66744,66784],"66745":[66745,66785],"66746":[66746,66786],"66747":[66747,66787],"66748":[66748,66788],"66749":[66749,66789],"66750":[66750,66790],"66751":[66751,66791],"66752":[66752,66792],"66753":[66753,66793],"66754":[66754,66794],"66755":[66755,66795],"66756":[66756,66796],"66757":[66757,66797],"66758":[66758,66798],"66759":[66759,66799],"66760":[66760,66800],"66761":[66761,66801],"66762":[66762,66802],"66763":[66763,66803],"66764":[66764,66804],"66765":[66765,66805],"66766":[66766,66806],"66767":[66767,66807],"66768":[66768,66808],"66769":[66769,66809],"66770":[66770,66810],"66771":[66771,66811],"66776":[66736,66776],"66777":[66737,66777],"66778":[66738,66778],"66779":[66739,66779],"66780":[66740,66780],"66781":[66741,66781],"66782":[66742,66782],"66783":[66743,66783],"66784":[66744,66784],"66785":[66745,66785],"66786":[66746,66786],"66787":[66747,66787],"66788":[66748,66788],"66789":[66749,66789],"66790":[66750,66790],"66791":[66751,66791],"66792":[66752,66792],"66793":[66753,66793],"66794":[66754,66794],"66795":[66755,66795],"66796":[66756,66796],"66797":[66757,66797],"66798":[66758,66798],"66799":[66759,66799],"66800":[66760,66800],"66801":[66761,66801],"66802":[66762,66802],"66803":[66763,66803],"66804":[66764,66804],"66805":[66765,66805],"66806":[66766,66806],"66807":[66767,66807],"66808":[66768,66808],"66809":[66769,66809],"66810":[66770,66810],"66811":[66771,66811],"68736":[68736,68800],"68737":[68737,68801],"68738":[68738,68802],"68739":[68739,68803],"68740":[68740,68804],"68741":[68741,68805],"68742":[68742,68806],"68743":[68743,68807],"68744":[68744,68808],"68745":[68745,68809],"68746":[68746,68810],"68747":[68747,68811],"68748":[68748,68812],"68749":[68749,68813],"68750":[68750,68814],"68751":[68751,68815],"68752":[68752,68816],"68753":[68753,68817],"68754":[68754,68818],"68755":[68755,68819],"68756":[68756,68820],"68757":[68757,68821],"68758":[68758,68822],"68759":[68759,68823],"68760":[68760,68824],"68761":[68761,68825],"68762":[68762,68826],"68763":[68763,68827],"68764":[68764,68828],"68765":[68765,68829],"68766":[68766,68830],"68767":[68767,68831],"68768":[68768,68832],"68769":[68769,68833],"68770":[68770,68834],"68771":[68771,68835],"68772":[68772,68836],"68773":[68773,68837],"68774":[68774,68838],"68775":[68775,68839],"68776":[68776,68840],"68777":[68777,68841],"68778":[68778,68842],"68779":[68779,68843],"68780":[68780,68844],"68781":[68781,68845],"68782":[68782,68846],"68783":[68783,68847],"68784":[68784,68848],"68785":[68785,68849],"68786":[68786,68850],"68800":[68736,68800],"68801":[68737,68801],"68802":[68738,68802],"68803":[68739,68803],"68804":[68740,68804],"68805":[68741,68805],"68806":[68742,68806],"68807":[68743,68807],"68808":[68744,68808],"68809":[68745,68809],"68810":[68746,68810],"68811":[68747,68811],"68812":[68748,68812],"68813":[68749,68813],"68814":[68750,68814],"68815":[68751,68815],"68816":[68752,68816],"68817":[68753,68817],"68818":[68754,68818],"68819":[68755,68819],"68820":[68756,68820],"68821":[68757,68821],"68822":[68758,68822],"68823":[68759,68823],"68824":[68760,68824],"68825":[68761,68825],"68826":[68762,68826],"68827":[68763,68827],"68828":[68764,68828],"68829":[68765,68829],"68830":[68766,68830],"68831":[68767,68831],"68832":[68768,68832],"68833":[68769,68833],"68834":[68770,68834],"68835":[68771,68835],"68836":[68772,68836],"68837":[68773,68837],"68838":[68774,68838],"68839":[68775,68839],"68840":[68776,68840],"68841":[68777,68841],"68842":[68778,68842],"68843":[68779,68843],"68844":[68780,68844],"68845":[68781,68845],"68846":[68782,68846],"68847":[68783,68847],"68848":[68784,68848],"68849":[68785,68849],"68850":[68786,68850],"71840":[71840,71872],"71841":[71841,71873],"71842":[71842,71874],"71843":[71843,71875],"71844":[71844,71876],"71845":[71845,71877],"71846":[71846,71878],"71847":[71847,71879],"71848":[71848,71880],"71849":[71849,71881],"71850":[71850,71882],"71851":[71851,71883],"71852":[71852,71884],"71853":[71853,71885],"71854":[71854,71886],"71855":[71855,71887],"71856":[71856,71888],"71857":[71857,71889],"71858":[71858,71890],"71859":[71859,71891],"71860":[71860,71892],"71861":[71861,71893],"71862":[71862,71894],"71863":[71863,71895],"71864":[71864,71896],"71865":[71865,71897],"71866":[71866,71898],"71867":[71867,71899],"71868":[71868,71900],"71869":[71869,71901],"71870":[71870,71902],"71871":[71871,71903],"71872":[71840,71872],"71873":[71841,71873],"71874":[71842,71874],"71875":[71843,71875],"71876":[71844,71876],"71877":[71845,71877],"71878":[71846,71878],"71879":[71847,71879],"71880":[71848,71880],"71881":[71849,71881],"71882":[71850,71882],"71883":[71851,71883],"71884":[71852,71884],"71885":[71853,71885],"71886":[71854,71886],"71887":[71855,71887],"71888":[71856,71888],"71889":[71857,71889],"71890":[71858,71890],"71891":[71859,71891],"71892":[71860,71892],"71893":[71861,71893],"71894":[71862,71894],"71895":[71863,71895],"71896":[71864,71896],"71897":[71865,71897],"71898":[71866,71898],"71899":[71867,71899],"71900":[71868,71900],"71901":[71869,71901],"71902":[71870,71902],"71903":[71871,71903],"93760":[93760,93792],"93761":[93761,93793],"93762":[93762,93794],"93763":[93763,93795],"93764":[93764,93796],"93765":[93765,93797],"93766":[93766,93798],"93767":[93767,93799],"93768":[93768,93800],"93769":[93769,93801],"93770":[93770,93802],"93771":[93771,93803],"93772":[93772,93804],"93773":[93773,93805],"93774":[93774,93806],"93775":[93775,93807],"93776":[93776,93808],"93777":[93777,93809],"93778":[93778,93810],"93779":[93779,93811],"93780":[93780,93812],"93781":[93781,93813],"93782":[93782,93814],"93783":[93783,93815],"93784":[93784,93816],"93785":[93785,93817],"93786":[93786,93818],"93787":[93787,93819],"93788":[93788,93820],"93789":[93789,93821],"93790":[93790,93822],"93791":[93791,93823],"93792":[93760,93792],"93793":[93761,93793],"93794":[93762,93794],"93795":[93763,93795],"93796":[93764,93796],"93797":[93765,93797],"93798":[93766,93798],"93799":[93767,93799],"93800":[93768,93800],"93801":[93769,93801],"93802":[93770,93802],"93803":[93771,93803],"93804":[93772,93804],"93805":[93773,93805],"93806":[93774,93806],"93807":[93775,93807],"93808":[93776,93808],"93809":[93777,93809],"93810":[93778,93810],"93811":[93779,93811],"93812":[93780,93812],"93813":[93781,93813],"93814":[93782,93814],"93815":[93783,93815],"93816":[93784,93816],"93817":[93785,93817],"93818":[93786,93818],"93819":[93787,93819],"93820":[93788,93820],"93821":[93789,93821],"93822":[93790,93822],"93823":[93791,93823],"125184":[125184,125218],"125185":[125185,125219],"125186":[125186,125220],"125187":[125187,125221],"125188":[125188,125222],"125189":[125189,125223],"125190":[125190,125224],"125191":[125191,125225],"125192":[125192,125226],"125193":[125193,125227],"125194":[125194,125228],"125195":[125195,125229],"125196":[125196,125230],"125197":[125197,125231],"125198":[125198,125232],"125199":[125199,125233],"125200":[125200,125234],"125201":[125201,125235],"125202":[125202,125236],"125203":[125203,125237],"125204":[125204,125238],"125205":[125205,125239],"125206":[125206,125240],"125207":[125207,125241],"125208":[125208,125242],"125209":[125209,125243],"125210":[125210,125244],"125211":[125211,125245],"125212":[125212,125246],"125213":[125213,125247],"125214":[125214,125248],"125215":[125215,125249],"125216":[125216,125250],"125217":[125217,125251],"125218":[125184,125218],"125219":[125185,125219],"125220":[125186,125220],"125221":[125187,125221],"125222":[125188,125222],"125223":[125189,125223],"125224":[125190,125224],"125225":[125191,125225],"125226":[125192,125226],"125227":[125193,125227],"125228":[125194,125228],"125229":[125195,125229],"125230":[125196,125230],"125231":[125197,125231],"125232":[125198,125232],"125233":[125199,125233],"125234":[125200,125234],"125235":[125201,125235],"125236":[125202,125236],"125237":[125203,125237],"125238":[125204,125238],"125239":[125205,125239],"125240":[125206,125240],"125241":[125207,125241],"125242":[125208,125242],"125243":[125209,125243],"125244":[125210,125244],"125245":[125211,125245],"125246":[125212,125246],"125247":[125213,125247],"125248":[125214,125248],"125249":[125215,125249],"125250":[125216,125250],"125251":[125217,125251]}');function qo(m,n,a){if(m.isSupersetOf(a))return m;const i=m.intersect(a);if(i.isEmpty)return m;const x=new Set;for(const{min:m,max:a}of i.ranges)for(let i=m;i<=a;i++){const m=n[i];for(let n=0,a=m.length;nm-n)),m.union(function*(m){let n=-1,a=0;for(const i of m)-1===n?(n=i,a=1):i===n+a?a++:(yield{min:n,max:n+a-1},n=i,a=1);a>0&&(yield{min:n,max:n+a-1})}(e))}const $o=[{min:48,max:57}],Vo=[{min:9,max:13},{min:32,max:32},{min:160,max:160},{min:5760,max:5760},{min:8192,max:8202},{min:8232,max:8233},{min:8239,max:8239},{min:8287,max:8287},{min:12288,max:12288},{min:65279,max:65279}],Xo=[{min:48,max:57},{min:65,max:90},{min:95,max:95},{min:97,max:122}],Zo=[{min:10,max:10},{min:13,max:13},{min:8232,max:8233}],Yo=qo(i.empty(1114111).union(Xo),Ko,Uo).ranges;function ml(m,n){const a=n.unicode?1114111:65535;switch(m.kind){case"end":case"start":{const x=n.multiline?i.empty(a).union(Zo).negate():i.all(a);return nl(!0,"start"===m.kind?"behind":"ahead",x)}case"word":{const x=n.ignoreCase&&n.unicode?Yo:Xo,e=i.empty(a).union(x);return{type:"Alternation",alternatives:[{type:"Concatenation",elements:[nl(!m.negate,"behind",e),nl(!1,"ahead",e)]},{type:"Concatenation",elements:[nl(m.negate,"behind",e),nl(!0,"ahead",e)]}]}}default:throw P(m,"Unknown assertion type")}}function nl(m,n,a){return{type:"Assertion",negate:m,kind:n,alternatives:[{type:"Concatenation",elements:[{type:"CharacterClass",characters:a}]}]}}const al=i.empty(65535).union(JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":222},{"min":224,"max":246},{"min":248,"max":303},{"min":306,"max":311},{"min":313,"max":328},{"min":330,"max":382},{"min":384,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":495},{"min":497,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":943},{"min":945,"max":977},{"min":981,"max":1011},{"min":1013,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1414},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7829},{"min":7835,"max":7835},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8017,"max":8017},{"min":8019,"max":8019},{"min":8021,"max":8021},{"min":8023,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8112,"max":8113},{"min":8120,"max":8123},{"min":8126,"max":8126},{"min":8136,"max":8139},{"min":8144,"max":8145},{"min":8152,"max":8155},{"min":8160,"max":8161},{"min":8165,"max":8165},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":65313,"max":65338},{"min":65345,"max":65370}]')),il=JSON.parse('{"65":[65,97],"66":[66,98],"67":[67,99],"68":[68,100],"69":[69,101],"70":[70,102],"71":[71,103],"72":[72,104],"73":[73,105],"74":[74,106],"75":[75,107],"76":[76,108],"77":[77,109],"78":[78,110],"79":[79,111],"80":[80,112],"81":[81,113],"82":[82,114],"83":[83,115],"84":[84,116],"85":[85,117],"86":[86,118],"87":[87,119],"88":[88,120],"89":[89,121],"90":[90,122],"97":[65,97],"98":[66,98],"99":[67,99],"100":[68,100],"101":[69,101],"102":[70,102],"103":[71,103],"104":[72,104],"105":[73,105],"106":[74,106],"107":[75,107],"108":[76,108],"109":[77,109],"110":[78,110],"111":[79,111],"112":[80,112],"113":[81,113],"114":[82,114],"115":[83,115],"116":[84,116],"117":[85,117],"118":[86,118],"119":[87,119],"120":[88,120],"121":[89,121],"122":[90,122],"181":[181,924,956],"192":[192,224],"193":[193,225],"194":[194,226],"195":[195,227],"196":[196,228],"197":[197,229],"198":[198,230],"199":[199,231],"200":[200,232],"201":[201,233],"202":[202,234],"203":[203,235],"204":[204,236],"205":[205,237],"206":[206,238],"207":[207,239],"208":[208,240],"209":[209,241],"210":[210,242],"211":[211,243],"212":[212,244],"213":[213,245],"214":[214,246],"216":[216,248],"217":[217,249],"218":[218,250],"219":[219,251],"220":[220,252],"221":[221,253],"222":[222,254],"224":[192,224],"225":[193,225],"226":[194,226],"227":[195,227],"228":[196,228],"229":[197,229],"230":[198,230],"231":[199,231],"232":[200,232],"233":[201,233],"234":[202,234],"235":[203,235],"236":[204,236],"237":[205,237],"238":[206,238],"239":[207,239],"240":[208,240],"241":[209,241],"242":[210,242],"243":[211,243],"244":[212,244],"245":[213,245],"246":[214,246],"248":[216,248],"249":[217,249],"250":[218,250],"251":[219,251],"252":[220,252],"253":[221,253],"254":[222,254],"255":[255,376],"256":[256,257],"257":[256,257],"258":[258,259],"259":[258,259],"260":[260,261],"261":[260,261],"262":[262,263],"263":[262,263],"264":[264,265],"265":[264,265],"266":[266,267],"267":[266,267],"268":[268,269],"269":[268,269],"270":[270,271],"271":[270,271],"272":[272,273],"273":[272,273],"274":[274,275],"275":[274,275],"276":[276,277],"277":[276,277],"278":[278,279],"279":[278,279],"280":[280,281],"281":[280,281],"282":[282,283],"283":[282,283],"284":[284,285],"285":[284,285],"286":[286,287],"287":[286,287],"288":[288,289],"289":[288,289],"290":[290,291],"291":[290,291],"292":[292,293],"293":[292,293],"294":[294,295],"295":[294,295],"296":[296,297],"297":[296,297],"298":[298,299],"299":[298,299],"300":[300,301],"301":[300,301],"302":[302,303],"303":[302,303],"306":[306,307],"307":[306,307],"308":[308,309],"309":[308,309],"310":[310,311],"311":[310,311],"313":[313,314],"314":[313,314],"315":[315,316],"316":[315,316],"317":[317,318],"318":[317,318],"319":[319,320],"320":[319,320],"321":[321,322],"322":[321,322],"323":[323,324],"324":[323,324],"325":[325,326],"326":[325,326],"327":[327,328],"328":[327,328],"330":[330,331],"331":[330,331],"332":[332,333],"333":[332,333],"334":[334,335],"335":[334,335],"336":[336,337],"337":[336,337],"338":[338,339],"339":[338,339],"340":[340,341],"341":[340,341],"342":[342,343],"343":[342,343],"344":[344,345],"345":[344,345],"346":[346,347],"347":[346,347],"348":[348,349],"349":[348,349],"350":[350,351],"351":[350,351],"352":[352,353],"353":[352,353],"354":[354,355],"355":[354,355],"356":[356,357],"357":[356,357],"358":[358,359],"359":[358,359],"360":[360,361],"361":[360,361],"362":[362,363],"363":[362,363],"364":[364,365],"365":[364,365],"366":[366,367],"367":[366,367],"368":[368,369],"369":[368,369],"370":[370,371],"371":[370,371],"372":[372,373],"373":[372,373],"374":[374,375],"375":[374,375],"376":[255,376],"377":[377,378],"378":[377,378],"379":[379,380],"380":[379,380],"381":[381,382],"382":[381,382],"384":[384,579],"385":[385,595],"386":[386,387],"387":[386,387],"388":[388,389],"389":[388,389],"390":[390,596],"391":[391,392],"392":[391,392],"393":[393,598],"394":[394,599],"395":[395,396],"396":[395,396],"398":[398,477],"399":[399,601],"400":[400,603],"401":[401,402],"402":[401,402],"403":[403,608],"404":[404,611],"405":[405,502],"406":[406,617],"407":[407,616],"408":[408,409],"409":[408,409],"410":[410,573],"412":[412,623],"413":[413,626],"414":[414,544],"415":[415,629],"416":[416,417],"417":[416,417],"418":[418,419],"419":[418,419],"420":[420,421],"421":[420,421],"422":[422,640],"423":[423,424],"424":[423,424],"425":[425,643],"428":[428,429],"429":[428,429],"430":[430,648],"431":[431,432],"432":[431,432],"433":[433,650],"434":[434,651],"435":[435,436],"436":[435,436],"437":[437,438],"438":[437,438],"439":[439,658],"440":[440,441],"441":[440,441],"444":[444,445],"445":[444,445],"447":[447,503],"452":[452,453,454],"453":[452,453,454],"454":[452,453,454],"455":[455,456,457],"456":[455,456,457],"457":[455,456,457],"458":[458,459,460],"459":[458,459,460],"460":[458,459,460],"461":[461,462],"462":[461,462],"463":[463,464],"464":[463,464],"465":[465,466],"466":[465,466],"467":[467,468],"468":[467,468],"469":[469,470],"470":[469,470],"471":[471,472],"472":[471,472],"473":[473,474],"474":[473,474],"475":[475,476],"476":[475,476],"477":[398,477],"478":[478,479],"479":[478,479],"480":[480,481],"481":[480,481],"482":[482,483],"483":[482,483],"484":[484,485],"485":[484,485],"486":[486,487],"487":[486,487],"488":[488,489],"489":[488,489],"490":[490,491],"491":[490,491],"492":[492,493],"493":[492,493],"494":[494,495],"495":[494,495],"497":[497,498,499],"498":[497,498,499],"499":[497,498,499],"500":[500,501],"501":[500,501],"502":[405,502],"503":[447,503],"504":[504,505],"505":[504,505],"506":[506,507],"507":[506,507],"508":[508,509],"509":[508,509],"510":[510,511],"511":[510,511],"512":[512,513],"513":[512,513],"514":[514,515],"515":[514,515],"516":[516,517],"517":[516,517],"518":[518,519],"519":[518,519],"520":[520,521],"521":[520,521],"522":[522,523],"523":[522,523],"524":[524,525],"525":[524,525],"526":[526,527],"527":[526,527],"528":[528,529],"529":[528,529],"530":[530,531],"531":[530,531],"532":[532,533],"533":[532,533],"534":[534,535],"535":[534,535],"536":[536,537],"537":[536,537],"538":[538,539],"539":[538,539],"540":[540,541],"541":[540,541],"542":[542,543],"543":[542,543],"544":[414,544],"546":[546,547],"547":[546,547],"548":[548,549],"549":[548,549],"550":[550,551],"551":[550,551],"552":[552,553],"553":[552,553],"554":[554,555],"555":[554,555],"556":[556,557],"557":[556,557],"558":[558,559],"559":[558,559],"560":[560,561],"561":[560,561],"562":[562,563],"563":[562,563],"570":[570,11365],"571":[571,572],"572":[571,572],"573":[410,573],"574":[574,11366],"575":[575,11390],"576":[576,11391],"577":[577,578],"578":[577,578],"579":[384,579],"580":[580,649],"581":[581,652],"582":[582,583],"583":[582,583],"584":[584,585],"585":[584,585],"586":[586,587],"587":[586,587],"588":[588,589],"589":[588,589],"590":[590,591],"591":[590,591],"592":[592,11375],"593":[593,11373],"594":[594,11376],"595":[385,595],"596":[390,596],"598":[393,598],"599":[394,599],"601":[399,601],"603":[400,603],"604":[604,42923],"608":[403,608],"609":[609,42924],"611":[404,611],"613":[613,42893],"614":[614,42922],"616":[407,616],"617":[406,617],"618":[618,42926],"619":[619,11362],"620":[620,42925],"623":[412,623],"625":[625,11374],"626":[413,626],"629":[415,629],"637":[637,11364],"640":[422,640],"642":[642,42949],"643":[425,643],"647":[647,42929],"648":[430,648],"649":[580,649],"650":[433,650],"651":[434,651],"652":[581,652],"658":[439,658],"669":[669,42930],"670":[670,42928],"837":[837,921,953,8126],"880":[880,881],"881":[880,881],"882":[882,883],"883":[882,883],"886":[886,887],"887":[886,887],"891":[891,1021],"892":[892,1022],"893":[893,1023],"895":[895,1011],"902":[902,940],"904":[904,941],"905":[905,942],"906":[906,943],"908":[908,972],"910":[910,973],"911":[911,974],"913":[913,945],"914":[914,946,976],"915":[915,947],"916":[916,948],"917":[917,949,1013],"918":[918,950],"919":[919,951],"920":[920,952,977],"921":[837,921,953,8126],"922":[922,954,1008],"923":[923,955],"924":[181,924,956],"925":[925,957],"926":[926,958],"927":[927,959],"928":[928,960,982],"929":[929,961,1009],"931":[931,962,963],"932":[932,964],"933":[933,965],"934":[934,966,981],"935":[935,967],"936":[936,968],"937":[937,969],"938":[938,970],"939":[939,971],"940":[902,940],"941":[904,941],"942":[905,942],"943":[906,943],"945":[913,945],"946":[914,946,976],"947":[915,947],"948":[916,948],"949":[917,949,1013],"950":[918,950],"951":[919,951],"952":[920,952,977],"953":[837,921,953,8126],"954":[922,954,1008],"955":[923,955],"956":[181,924,956],"957":[925,957],"958":[926,958],"959":[927,959],"960":[928,960,982],"961":[929,961,1009],"962":[931,962,963],"963":[931,962,963],"964":[932,964],"965":[933,965],"966":[934,966,981],"967":[935,967],"968":[936,968],"969":[937,969],"970":[938,970],"971":[939,971],"972":[908,972],"973":[910,973],"974":[911,974],"975":[975,983],"976":[914,946,976],"977":[920,952,977],"981":[934,966,981],"982":[928,960,982],"983":[975,983],"984":[984,985],"985":[984,985],"986":[986,987],"987":[986,987],"988":[988,989],"989":[988,989],"990":[990,991],"991":[990,991],"992":[992,993],"993":[992,993],"994":[994,995],"995":[994,995],"996":[996,997],"997":[996,997],"998":[998,999],"999":[998,999],"1000":[1000,1001],"1001":[1000,1001],"1002":[1002,1003],"1003":[1002,1003],"1004":[1004,1005],"1005":[1004,1005],"1006":[1006,1007],"1007":[1006,1007],"1008":[922,954,1008],"1009":[929,961,1009],"1010":[1010,1017],"1011":[895,1011],"1013":[917,949,1013],"1015":[1015,1016],"1016":[1015,1016],"1017":[1010,1017],"1018":[1018,1019],"1019":[1018,1019],"1021":[891,1021],"1022":[892,1022],"1023":[893,1023],"1024":[1024,1104],"1025":[1025,1105],"1026":[1026,1106],"1027":[1027,1107],"1028":[1028,1108],"1029":[1029,1109],"1030":[1030,1110],"1031":[1031,1111],"1032":[1032,1112],"1033":[1033,1113],"1034":[1034,1114],"1035":[1035,1115],"1036":[1036,1116],"1037":[1037,1117],"1038":[1038,1118],"1039":[1039,1119],"1040":[1040,1072],"1041":[1041,1073],"1042":[1042,1074,7296],"1043":[1043,1075],"1044":[1044,1076,7297],"1045":[1045,1077],"1046":[1046,1078],"1047":[1047,1079],"1048":[1048,1080],"1049":[1049,1081],"1050":[1050,1082],"1051":[1051,1083],"1052":[1052,1084],"1053":[1053,1085],"1054":[1054,1086,7298],"1055":[1055,1087],"1056":[1056,1088],"1057":[1057,1089,7299],"1058":[1058,1090,7300,7301],"1059":[1059,1091],"1060":[1060,1092],"1061":[1061,1093],"1062":[1062,1094],"1063":[1063,1095],"1064":[1064,1096],"1065":[1065,1097],"1066":[1066,1098,7302],"1067":[1067,1099],"1068":[1068,1100],"1069":[1069,1101],"1070":[1070,1102],"1071":[1071,1103],"1072":[1040,1072],"1073":[1041,1073],"1074":[1042,1074,7296],"1075":[1043,1075],"1076":[1044,1076,7297],"1077":[1045,1077],"1078":[1046,1078],"1079":[1047,1079],"1080":[1048,1080],"1081":[1049,1081],"1082":[1050,1082],"1083":[1051,1083],"1084":[1052,1084],"1085":[1053,1085],"1086":[1054,1086,7298],"1087":[1055,1087],"1088":[1056,1088],"1089":[1057,1089,7299],"1090":[1058,1090,7300,7301],"1091":[1059,1091],"1092":[1060,1092],"1093":[1061,1093],"1094":[1062,1094],"1095":[1063,1095],"1096":[1064,1096],"1097":[1065,1097],"1098":[1066,1098,7302],"1099":[1067,1099],"1100":[1068,1100],"1101":[1069,1101],"1102":[1070,1102],"1103":[1071,1103],"1104":[1024,1104],"1105":[1025,1105],"1106":[1026,1106],"1107":[1027,1107],"1108":[1028,1108],"1109":[1029,1109],"1110":[1030,1110],"1111":[1031,1111],"1112":[1032,1112],"1113":[1033,1113],"1114":[1034,1114],"1115":[1035,1115],"1116":[1036,1116],"1117":[1037,1117],"1118":[1038,1118],"1119":[1039,1119],"1120":[1120,1121],"1121":[1120,1121],"1122":[1122,1123,7303],"1123":[1122,1123,7303],"1124":[1124,1125],"1125":[1124,1125],"1126":[1126,1127],"1127":[1126,1127],"1128":[1128,1129],"1129":[1128,1129],"1130":[1130,1131],"1131":[1130,1131],"1132":[1132,1133],"1133":[1132,1133],"1134":[1134,1135],"1135":[1134,1135],"1136":[1136,1137],"1137":[1136,1137],"1138":[1138,1139],"1139":[1138,1139],"1140":[1140,1141],"1141":[1140,1141],"1142":[1142,1143],"1143":[1142,1143],"1144":[1144,1145],"1145":[1144,1145],"1146":[1146,1147],"1147":[1146,1147],"1148":[1148,1149],"1149":[1148,1149],"1150":[1150,1151],"1151":[1150,1151],"1152":[1152,1153],"1153":[1152,1153],"1162":[1162,1163],"1163":[1162,1163],"1164":[1164,1165],"1165":[1164,1165],"1166":[1166,1167],"1167":[1166,1167],"1168":[1168,1169],"1169":[1168,1169],"1170":[1170,1171],"1171":[1170,1171],"1172":[1172,1173],"1173":[1172,1173],"1174":[1174,1175],"1175":[1174,1175],"1176":[1176,1177],"1177":[1176,1177],"1178":[1178,1179],"1179":[1178,1179],"1180":[1180,1181],"1181":[1180,1181],"1182":[1182,1183],"1183":[1182,1183],"1184":[1184,1185],"1185":[1184,1185],"1186":[1186,1187],"1187":[1186,1187],"1188":[1188,1189],"1189":[1188,1189],"1190":[1190,1191],"1191":[1190,1191],"1192":[1192,1193],"1193":[1192,1193],"1194":[1194,1195],"1195":[1194,1195],"1196":[1196,1197],"1197":[1196,1197],"1198":[1198,1199],"1199":[1198,1199],"1200":[1200,1201],"1201":[1200,1201],"1202":[1202,1203],"1203":[1202,1203],"1204":[1204,1205],"1205":[1204,1205],"1206":[1206,1207],"1207":[1206,1207],"1208":[1208,1209],"1209":[1208,1209],"1210":[1210,1211],"1211":[1210,1211],"1212":[1212,1213],"1213":[1212,1213],"1214":[1214,1215],"1215":[1214,1215],"1216":[1216,1231],"1217":[1217,1218],"1218":[1217,1218],"1219":[1219,1220],"1220":[1219,1220],"1221":[1221,1222],"1222":[1221,1222],"1223":[1223,1224],"1224":[1223,1224],"1225":[1225,1226],"1226":[1225,1226],"1227":[1227,1228],"1228":[1227,1228],"1229":[1229,1230],"1230":[1229,1230],"1231":[1216,1231],"1232":[1232,1233],"1233":[1232,1233],"1234":[1234,1235],"1235":[1234,1235],"1236":[1236,1237],"1237":[1236,1237],"1238":[1238,1239],"1239":[1238,1239],"1240":[1240,1241],"1241":[1240,1241],"1242":[1242,1243],"1243":[1242,1243],"1244":[1244,1245],"1245":[1244,1245],"1246":[1246,1247],"1247":[1246,1247],"1248":[1248,1249],"1249":[1248,1249],"1250":[1250,1251],"1251":[1250,1251],"1252":[1252,1253],"1253":[1252,1253],"1254":[1254,1255],"1255":[1254,1255],"1256":[1256,1257],"1257":[1256,1257],"1258":[1258,1259],"1259":[1258,1259],"1260":[1260,1261],"1261":[1260,1261],"1262":[1262,1263],"1263":[1262,1263],"1264":[1264,1265],"1265":[1264,1265],"1266":[1266,1267],"1267":[1266,1267],"1268":[1268,1269],"1269":[1268,1269],"1270":[1270,1271],"1271":[1270,1271],"1272":[1272,1273],"1273":[1272,1273],"1274":[1274,1275],"1275":[1274,1275],"1276":[1276,1277],"1277":[1276,1277],"1278":[1278,1279],"1279":[1278,1279],"1280":[1280,1281],"1281":[1280,1281],"1282":[1282,1283],"1283":[1282,1283],"1284":[1284,1285],"1285":[1284,1285],"1286":[1286,1287],"1287":[1286,1287],"1288":[1288,1289],"1289":[1288,1289],"1290":[1290,1291],"1291":[1290,1291],"1292":[1292,1293],"1293":[1292,1293],"1294":[1294,1295],"1295":[1294,1295],"1296":[1296,1297],"1297":[1296,1297],"1298":[1298,1299],"1299":[1298,1299],"1300":[1300,1301],"1301":[1300,1301],"1302":[1302,1303],"1303":[1302,1303],"1304":[1304,1305],"1305":[1304,1305],"1306":[1306,1307],"1307":[1306,1307],"1308":[1308,1309],"1309":[1308,1309],"1310":[1310,1311],"1311":[1310,1311],"1312":[1312,1313],"1313":[1312,1313],"1314":[1314,1315],"1315":[1314,1315],"1316":[1316,1317],"1317":[1316,1317],"1318":[1318,1319],"1319":[1318,1319],"1320":[1320,1321],"1321":[1320,1321],"1322":[1322,1323],"1323":[1322,1323],"1324":[1324,1325],"1325":[1324,1325],"1326":[1326,1327],"1327":[1326,1327],"1329":[1329,1377],"1330":[1330,1378],"1331":[1331,1379],"1332":[1332,1380],"1333":[1333,1381],"1334":[1334,1382],"1335":[1335,1383],"1336":[1336,1384],"1337":[1337,1385],"1338":[1338,1386],"1339":[1339,1387],"1340":[1340,1388],"1341":[1341,1389],"1342":[1342,1390],"1343":[1343,1391],"1344":[1344,1392],"1345":[1345,1393],"1346":[1346,1394],"1347":[1347,1395],"1348":[1348,1396],"1349":[1349,1397],"1350":[1350,1398],"1351":[1351,1399],"1352":[1352,1400],"1353":[1353,1401],"1354":[1354,1402],"1355":[1355,1403],"1356":[1356,1404],"1357":[1357,1405],"1358":[1358,1406],"1359":[1359,1407],"1360":[1360,1408],"1361":[1361,1409],"1362":[1362,1410],"1363":[1363,1411],"1364":[1364,1412],"1365":[1365,1413],"1366":[1366,1414],"1377":[1329,1377],"1378":[1330,1378],"1379":[1331,1379],"1380":[1332,1380],"1381":[1333,1381],"1382":[1334,1382],"1383":[1335,1383],"1384":[1336,1384],"1385":[1337,1385],"1386":[1338,1386],"1387":[1339,1387],"1388":[1340,1388],"1389":[1341,1389],"1390":[1342,1390],"1391":[1343,1391],"1392":[1344,1392],"1393":[1345,1393],"1394":[1346,1394],"1395":[1347,1395],"1396":[1348,1396],"1397":[1349,1397],"1398":[1350,1398],"1399":[1351,1399],"1400":[1352,1400],"1401":[1353,1401],"1402":[1354,1402],"1403":[1355,1403],"1404":[1356,1404],"1405":[1357,1405],"1406":[1358,1406],"1407":[1359,1407],"1408":[1360,1408],"1409":[1361,1409],"1410":[1362,1410],"1411":[1363,1411],"1412":[1364,1412],"1413":[1365,1413],"1414":[1366,1414],"4256":[4256,11520],"4257":[4257,11521],"4258":[4258,11522],"4259":[4259,11523],"4260":[4260,11524],"4261":[4261,11525],"4262":[4262,11526],"4263":[4263,11527],"4264":[4264,11528],"4265":[4265,11529],"4266":[4266,11530],"4267":[4267,11531],"4268":[4268,11532],"4269":[4269,11533],"4270":[4270,11534],"4271":[4271,11535],"4272":[4272,11536],"4273":[4273,11537],"4274":[4274,11538],"4275":[4275,11539],"4276":[4276,11540],"4277":[4277,11541],"4278":[4278,11542],"4279":[4279,11543],"4280":[4280,11544],"4281":[4281,11545],"4282":[4282,11546],"4283":[4283,11547],"4284":[4284,11548],"4285":[4285,11549],"4286":[4286,11550],"4287":[4287,11551],"4288":[4288,11552],"4289":[4289,11553],"4290":[4290,11554],"4291":[4291,11555],"4292":[4292,11556],"4293":[4293,11557],"4295":[4295,11559],"4301":[4301,11565],"4304":[4304,7312],"4305":[4305,7313],"4306":[4306,7314],"4307":[4307,7315],"4308":[4308,7316],"4309":[4309,7317],"4310":[4310,7318],"4311":[4311,7319],"4312":[4312,7320],"4313":[4313,7321],"4314":[4314,7322],"4315":[4315,7323],"4316":[4316,7324],"4317":[4317,7325],"4318":[4318,7326],"4319":[4319,7327],"4320":[4320,7328],"4321":[4321,7329],"4322":[4322,7330],"4323":[4323,7331],"4324":[4324,7332],"4325":[4325,7333],"4326":[4326,7334],"4327":[4327,7335],"4328":[4328,7336],"4329":[4329,7337],"4330":[4330,7338],"4331":[4331,7339],"4332":[4332,7340],"4333":[4333,7341],"4334":[4334,7342],"4335":[4335,7343],"4336":[4336,7344],"4337":[4337,7345],"4338":[4338,7346],"4339":[4339,7347],"4340":[4340,7348],"4341":[4341,7349],"4342":[4342,7350],"4343":[4343,7351],"4344":[4344,7352],"4345":[4345,7353],"4346":[4346,7354],"4349":[4349,7357],"4350":[4350,7358],"4351":[4351,7359],"5024":[5024,43888],"5025":[5025,43889],"5026":[5026,43890],"5027":[5027,43891],"5028":[5028,43892],"5029":[5029,43893],"5030":[5030,43894],"5031":[5031,43895],"5032":[5032,43896],"5033":[5033,43897],"5034":[5034,43898],"5035":[5035,43899],"5036":[5036,43900],"5037":[5037,43901],"5038":[5038,43902],"5039":[5039,43903],"5040":[5040,43904],"5041":[5041,43905],"5042":[5042,43906],"5043":[5043,43907],"5044":[5044,43908],"5045":[5045,43909],"5046":[5046,43910],"5047":[5047,43911],"5048":[5048,43912],"5049":[5049,43913],"5050":[5050,43914],"5051":[5051,43915],"5052":[5052,43916],"5053":[5053,43917],"5054":[5054,43918],"5055":[5055,43919],"5056":[5056,43920],"5057":[5057,43921],"5058":[5058,43922],"5059":[5059,43923],"5060":[5060,43924],"5061":[5061,43925],"5062":[5062,43926],"5063":[5063,43927],"5064":[5064,43928],"5065":[5065,43929],"5066":[5066,43930],"5067":[5067,43931],"5068":[5068,43932],"5069":[5069,43933],"5070":[5070,43934],"5071":[5071,43935],"5072":[5072,43936],"5073":[5073,43937],"5074":[5074,43938],"5075":[5075,43939],"5076":[5076,43940],"5077":[5077,43941],"5078":[5078,43942],"5079":[5079,43943],"5080":[5080,43944],"5081":[5081,43945],"5082":[5082,43946],"5083":[5083,43947],"5084":[5084,43948],"5085":[5085,43949],"5086":[5086,43950],"5087":[5087,43951],"5088":[5088,43952],"5089":[5089,43953],"5090":[5090,43954],"5091":[5091,43955],"5092":[5092,43956],"5093":[5093,43957],"5094":[5094,43958],"5095":[5095,43959],"5096":[5096,43960],"5097":[5097,43961],"5098":[5098,43962],"5099":[5099,43963],"5100":[5100,43964],"5101":[5101,43965],"5102":[5102,43966],"5103":[5103,43967],"5104":[5104,5112],"5105":[5105,5113],"5106":[5106,5114],"5107":[5107,5115],"5108":[5108,5116],"5109":[5109,5117],"5112":[5104,5112],"5113":[5105,5113],"5114":[5106,5114],"5115":[5107,5115],"5116":[5108,5116],"5117":[5109,5117],"7296":[1042,1074,7296],"7297":[1044,1076,7297],"7298":[1054,1086,7298],"7299":[1057,1089,7299],"7300":[1058,1090,7300,7301],"7301":[1058,1090,7300,7301],"7302":[1066,1098,7302],"7303":[1122,1123,7303],"7304":[7304,42570,42571],"7312":[4304,7312],"7313":[4305,7313],"7314":[4306,7314],"7315":[4307,7315],"7316":[4308,7316],"7317":[4309,7317],"7318":[4310,7318],"7319":[4311,7319],"7320":[4312,7320],"7321":[4313,7321],"7322":[4314,7322],"7323":[4315,7323],"7324":[4316,7324],"7325":[4317,7325],"7326":[4318,7326],"7327":[4319,7327],"7328":[4320,7328],"7329":[4321,7329],"7330":[4322,7330],"7331":[4323,7331],"7332":[4324,7332],"7333":[4325,7333],"7334":[4326,7334],"7335":[4327,7335],"7336":[4328,7336],"7337":[4329,7337],"7338":[4330,7338],"7339":[4331,7339],"7340":[4332,7340],"7341":[4333,7341],"7342":[4334,7342],"7343":[4335,7343],"7344":[4336,7344],"7345":[4337,7345],"7346":[4338,7346],"7347":[4339,7347],"7348":[4340,7348],"7349":[4341,7349],"7350":[4342,7350],"7351":[4343,7351],"7352":[4344,7352],"7353":[4345,7353],"7354":[4346,7354],"7357":[4349,7357],"7358":[4350,7358],"7359":[4351,7359],"7545":[7545,42877],"7549":[7549,11363],"7566":[7566,42950],"7680":[7680,7681],"7681":[7680,7681],"7682":[7682,7683],"7683":[7682,7683],"7684":[7684,7685],"7685":[7684,7685],"7686":[7686,7687],"7687":[7686,7687],"7688":[7688,7689],"7689":[7688,7689],"7690":[7690,7691],"7691":[7690,7691],"7692":[7692,7693],"7693":[7692,7693],"7694":[7694,7695],"7695":[7694,7695],"7696":[7696,7697],"7697":[7696,7697],"7698":[7698,7699],"7699":[7698,7699],"7700":[7700,7701],"7701":[7700,7701],"7702":[7702,7703],"7703":[7702,7703],"7704":[7704,7705],"7705":[7704,7705],"7706":[7706,7707],"7707":[7706,7707],"7708":[7708,7709],"7709":[7708,7709],"7710":[7710,7711],"7711":[7710,7711],"7712":[7712,7713],"7713":[7712,7713],"7714":[7714,7715],"7715":[7714,7715],"7716":[7716,7717],"7717":[7716,7717],"7718":[7718,7719],"7719":[7718,7719],"7720":[7720,7721],"7721":[7720,7721],"7722":[7722,7723],"7723":[7722,7723],"7724":[7724,7725],"7725":[7724,7725],"7726":[7726,7727],"7727":[7726,7727],"7728":[7728,7729],"7729":[7728,7729],"7730":[7730,7731],"7731":[7730,7731],"7732":[7732,7733],"7733":[7732,7733],"7734":[7734,7735],"7735":[7734,7735],"7736":[7736,7737],"7737":[7736,7737],"7738":[7738,7739],"7739":[7738,7739],"7740":[7740,7741],"7741":[7740,7741],"7742":[7742,7743],"7743":[7742,7743],"7744":[7744,7745],"7745":[7744,7745],"7746":[7746,7747],"7747":[7746,7747],"7748":[7748,7749],"7749":[7748,7749],"7750":[7750,7751],"7751":[7750,7751],"7752":[7752,7753],"7753":[7752,7753],"7754":[7754,7755],"7755":[7754,7755],"7756":[7756,7757],"7757":[7756,7757],"7758":[7758,7759],"7759":[7758,7759],"7760":[7760,7761],"7761":[7760,7761],"7762":[7762,7763],"7763":[7762,7763],"7764":[7764,7765],"7765":[7764,7765],"7766":[7766,7767],"7767":[7766,7767],"7768":[7768,7769],"7769":[7768,7769],"7770":[7770,7771],"7771":[7770,7771],"7772":[7772,7773],"7773":[7772,7773],"7774":[7774,7775],"7775":[7774,7775],"7776":[7776,7777,7835],"7777":[7776,7777,7835],"7778":[7778,7779],"7779":[7778,7779],"7780":[7780,7781],"7781":[7780,7781],"7782":[7782,7783],"7783":[7782,7783],"7784":[7784,7785],"7785":[7784,7785],"7786":[7786,7787],"7787":[7786,7787],"7788":[7788,7789],"7789":[7788,7789],"7790":[7790,7791],"7791":[7790,7791],"7792":[7792,7793],"7793":[7792,7793],"7794":[7794,7795],"7795":[7794,7795],"7796":[7796,7797],"7797":[7796,7797],"7798":[7798,7799],"7799":[7798,7799],"7800":[7800,7801],"7801":[7800,7801],"7802":[7802,7803],"7803":[7802,7803],"7804":[7804,7805],"7805":[7804,7805],"7806":[7806,7807],"7807":[7806,7807],"7808":[7808,7809],"7809":[7808,7809],"7810":[7810,7811],"7811":[7810,7811],"7812":[7812,7813],"7813":[7812,7813],"7814":[7814,7815],"7815":[7814,7815],"7816":[7816,7817],"7817":[7816,7817],"7818":[7818,7819],"7819":[7818,7819],"7820":[7820,7821],"7821":[7820,7821],"7822":[7822,7823],"7823":[7822,7823],"7824":[7824,7825],"7825":[7824,7825],"7826":[7826,7827],"7827":[7826,7827],"7828":[7828,7829],"7829":[7828,7829],"7835":[7776,7777,7835],"7840":[7840,7841],"7841":[7840,7841],"7842":[7842,7843],"7843":[7842,7843],"7844":[7844,7845],"7845":[7844,7845],"7846":[7846,7847],"7847":[7846,7847],"7848":[7848,7849],"7849":[7848,7849],"7850":[7850,7851],"7851":[7850,7851],"7852":[7852,7853],"7853":[7852,7853],"7854":[7854,7855],"7855":[7854,7855],"7856":[7856,7857],"7857":[7856,7857],"7858":[7858,7859],"7859":[7858,7859],"7860":[7860,7861],"7861":[7860,7861],"7862":[7862,7863],"7863":[7862,7863],"7864":[7864,7865],"7865":[7864,7865],"7866":[7866,7867],"7867":[7866,7867],"7868":[7868,7869],"7869":[7868,7869],"7870":[7870,7871],"7871":[7870,7871],"7872":[7872,7873],"7873":[7872,7873],"7874":[7874,7875],"7875":[7874,7875],"7876":[7876,7877],"7877":[7876,7877],"7878":[7878,7879],"7879":[7878,7879],"7880":[7880,7881],"7881":[7880,7881],"7882":[7882,7883],"7883":[7882,7883],"7884":[7884,7885],"7885":[7884,7885],"7886":[7886,7887],"7887":[7886,7887],"7888":[7888,7889],"7889":[7888,7889],"7890":[7890,7891],"7891":[7890,7891],"7892":[7892,7893],"7893":[7892,7893],"7894":[7894,7895],"7895":[7894,7895],"7896":[7896,7897],"7897":[7896,7897],"7898":[7898,7899],"7899":[7898,7899],"7900":[7900,7901],"7901":[7900,7901],"7902":[7902,7903],"7903":[7902,7903],"7904":[7904,7905],"7905":[7904,7905],"7906":[7906,7907],"7907":[7906,7907],"7908":[7908,7909],"7909":[7908,7909],"7910":[7910,7911],"7911":[7910,7911],"7912":[7912,7913],"7913":[7912,7913],"7914":[7914,7915],"7915":[7914,7915],"7916":[7916,7917],"7917":[7916,7917],"7918":[7918,7919],"7919":[7918,7919],"7920":[7920,7921],"7921":[7920,7921],"7922":[7922,7923],"7923":[7922,7923],"7924":[7924,7925],"7925":[7924,7925],"7926":[7926,7927],"7927":[7926,7927],"7928":[7928,7929],"7929":[7928,7929],"7930":[7930,7931],"7931":[7930,7931],"7932":[7932,7933],"7933":[7932,7933],"7934":[7934,7935],"7935":[7934,7935],"7936":[7936,7944],"7937":[7937,7945],"7938":[7938,7946],"7939":[7939,7947],"7940":[7940,7948],"7941":[7941,7949],"7942":[7942,7950],"7943":[7943,7951],"7944":[7936,7944],"7945":[7937,7945],"7946":[7938,7946],"7947":[7939,7947],"7948":[7940,7948],"7949":[7941,7949],"7950":[7942,7950],"7951":[7943,7951],"7952":[7952,7960],"7953":[7953,7961],"7954":[7954,7962],"7955":[7955,7963],"7956":[7956,7964],"7957":[7957,7965],"7960":[7952,7960],"7961":[7953,7961],"7962":[7954,7962],"7963":[7955,7963],"7964":[7956,7964],"7965":[7957,7965],"7968":[7968,7976],"7969":[7969,7977],"7970":[7970,7978],"7971":[7971,7979],"7972":[7972,7980],"7973":[7973,7981],"7974":[7974,7982],"7975":[7975,7983],"7976":[7968,7976],"7977":[7969,7977],"7978":[7970,7978],"7979":[7971,7979],"7980":[7972,7980],"7981":[7973,7981],"7982":[7974,7982],"7983":[7975,7983],"7984":[7984,7992],"7985":[7985,7993],"7986":[7986,7994],"7987":[7987,7995],"7988":[7988,7996],"7989":[7989,7997],"7990":[7990,7998],"7991":[7991,7999],"7992":[7984,7992],"7993":[7985,7993],"7994":[7986,7994],"7995":[7987,7995],"7996":[7988,7996],"7997":[7989,7997],"7998":[7990,7998],"7999":[7991,7999],"8000":[8000,8008],"8001":[8001,8009],"8002":[8002,8010],"8003":[8003,8011],"8004":[8004,8012],"8005":[8005,8013],"8008":[8000,8008],"8009":[8001,8009],"8010":[8002,8010],"8011":[8003,8011],"8012":[8004,8012],"8013":[8005,8013],"8017":[8017,8025],"8019":[8019,8027],"8021":[8021,8029],"8023":[8023,8031],"8025":[8017,8025],"8027":[8019,8027],"8029":[8021,8029],"8031":[8023,8031],"8032":[8032,8040],"8033":[8033,8041],"8034":[8034,8042],"8035":[8035,8043],"8036":[8036,8044],"8037":[8037,8045],"8038":[8038,8046],"8039":[8039,8047],"8040":[8032,8040],"8041":[8033,8041],"8042":[8034,8042],"8043":[8035,8043],"8044":[8036,8044],"8045":[8037,8045],"8046":[8038,8046],"8047":[8039,8047],"8048":[8048,8122],"8049":[8049,8123],"8050":[8050,8136],"8051":[8051,8137],"8052":[8052,8138],"8053":[8053,8139],"8054":[8054,8154],"8055":[8055,8155],"8056":[8056,8184],"8057":[8057,8185],"8058":[8058,8170],"8059":[8059,8171],"8060":[8060,8186],"8061":[8061,8187],"8112":[8112,8120],"8113":[8113,8121],"8120":[8112,8120],"8121":[8113,8121],"8122":[8048,8122],"8123":[8049,8123],"8126":[837,921,953,8126],"8136":[8050,8136],"8137":[8051,8137],"8138":[8052,8138],"8139":[8053,8139],"8144":[8144,8152],"8145":[8145,8153],"8152":[8144,8152],"8153":[8145,8153],"8154":[8054,8154],"8155":[8055,8155],"8160":[8160,8168],"8161":[8161,8169],"8165":[8165,8172],"8168":[8160,8168],"8169":[8161,8169],"8170":[8058,8170],"8171":[8059,8171],"8172":[8165,8172],"8184":[8056,8184],"8185":[8057,8185],"8186":[8060,8186],"8187":[8061,8187],"8498":[8498,8526],"8526":[8498,8526],"8544":[8544,8560],"8545":[8545,8561],"8546":[8546,8562],"8547":[8547,8563],"8548":[8548,8564],"8549":[8549,8565],"8550":[8550,8566],"8551":[8551,8567],"8552":[8552,8568],"8553":[8553,8569],"8554":[8554,8570],"8555":[8555,8571],"8556":[8556,8572],"8557":[8557,8573],"8558":[8558,8574],"8559":[8559,8575],"8560":[8544,8560],"8561":[8545,8561],"8562":[8546,8562],"8563":[8547,8563],"8564":[8548,8564],"8565":[8549,8565],"8566":[8550,8566],"8567":[8551,8567],"8568":[8552,8568],"8569":[8553,8569],"8570":[8554,8570],"8571":[8555,8571],"8572":[8556,8572],"8573":[8557,8573],"8574":[8558,8574],"8575":[8559,8575],"8579":[8579,8580],"8580":[8579,8580],"9398":[9398,9424],"9399":[9399,9425],"9400":[9400,9426],"9401":[9401,9427],"9402":[9402,9428],"9403":[9403,9429],"9404":[9404,9430],"9405":[9405,9431],"9406":[9406,9432],"9407":[9407,9433],"9408":[9408,9434],"9409":[9409,9435],"9410":[9410,9436],"9411":[9411,9437],"9412":[9412,9438],"9413":[9413,9439],"9414":[9414,9440],"9415":[9415,9441],"9416":[9416,9442],"9417":[9417,9443],"9418":[9418,9444],"9419":[9419,9445],"9420":[9420,9446],"9421":[9421,9447],"9422":[9422,9448],"9423":[9423,9449],"9424":[9398,9424],"9425":[9399,9425],"9426":[9400,9426],"9427":[9401,9427],"9428":[9402,9428],"9429":[9403,9429],"9430":[9404,9430],"9431":[9405,9431],"9432":[9406,9432],"9433":[9407,9433],"9434":[9408,9434],"9435":[9409,9435],"9436":[9410,9436],"9437":[9411,9437],"9438":[9412,9438],"9439":[9413,9439],"9440":[9414,9440],"9441":[9415,9441],"9442":[9416,9442],"9443":[9417,9443],"9444":[9418,9444],"9445":[9419,9445],"9446":[9420,9446],"9447":[9421,9447],"9448":[9422,9448],"9449":[9423,9449],"11264":[11264,11312],"11265":[11265,11313],"11266":[11266,11314],"11267":[11267,11315],"11268":[11268,11316],"11269":[11269,11317],"11270":[11270,11318],"11271":[11271,11319],"11272":[11272,11320],"11273":[11273,11321],"11274":[11274,11322],"11275":[11275,11323],"11276":[11276,11324],"11277":[11277,11325],"11278":[11278,11326],"11279":[11279,11327],"11280":[11280,11328],"11281":[11281,11329],"11282":[11282,11330],"11283":[11283,11331],"11284":[11284,11332],"11285":[11285,11333],"11286":[11286,11334],"11287":[11287,11335],"11288":[11288,11336],"11289":[11289,11337],"11290":[11290,11338],"11291":[11291,11339],"11292":[11292,11340],"11293":[11293,11341],"11294":[11294,11342],"11295":[11295,11343],"11296":[11296,11344],"11297":[11297,11345],"11298":[11298,11346],"11299":[11299,11347],"11300":[11300,11348],"11301":[11301,11349],"11302":[11302,11350],"11303":[11303,11351],"11304":[11304,11352],"11305":[11305,11353],"11306":[11306,11354],"11307":[11307,11355],"11308":[11308,11356],"11309":[11309,11357],"11310":[11310,11358],"11312":[11264,11312],"11313":[11265,11313],"11314":[11266,11314],"11315":[11267,11315],"11316":[11268,11316],"11317":[11269,11317],"11318":[11270,11318],"11319":[11271,11319],"11320":[11272,11320],"11321":[11273,11321],"11322":[11274,11322],"11323":[11275,11323],"11324":[11276,11324],"11325":[11277,11325],"11326":[11278,11326],"11327":[11279,11327],"11328":[11280,11328],"11329":[11281,11329],"11330":[11282,11330],"11331":[11283,11331],"11332":[11284,11332],"11333":[11285,11333],"11334":[11286,11334],"11335":[11287,11335],"11336":[11288,11336],"11337":[11289,11337],"11338":[11290,11338],"11339":[11291,11339],"11340":[11292,11340],"11341":[11293,11341],"11342":[11294,11342],"11343":[11295,11343],"11344":[11296,11344],"11345":[11297,11345],"11346":[11298,11346],"11347":[11299,11347],"11348":[11300,11348],"11349":[11301,11349],"11350":[11302,11350],"11351":[11303,11351],"11352":[11304,11352],"11353":[11305,11353],"11354":[11306,11354],"11355":[11307,11355],"11356":[11308,11356],"11357":[11309,11357],"11358":[11310,11358],"11360":[11360,11361],"11361":[11360,11361],"11362":[619,11362],"11363":[7549,11363],"11364":[637,11364],"11365":[570,11365],"11366":[574,11366],"11367":[11367,11368],"11368":[11367,11368],"11369":[11369,11370],"11370":[11369,11370],"11371":[11371,11372],"11372":[11371,11372],"11373":[593,11373],"11374":[625,11374],"11375":[592,11375],"11376":[594,11376],"11378":[11378,11379],"11379":[11378,11379],"11381":[11381,11382],"11382":[11381,11382],"11390":[575,11390],"11391":[576,11391],"11392":[11392,11393],"11393":[11392,11393],"11394":[11394,11395],"11395":[11394,11395],"11396":[11396,11397],"11397":[11396,11397],"11398":[11398,11399],"11399":[11398,11399],"11400":[11400,11401],"11401":[11400,11401],"11402":[11402,11403],"11403":[11402,11403],"11404":[11404,11405],"11405":[11404,11405],"11406":[11406,11407],"11407":[11406,11407],"11408":[11408,11409],"11409":[11408,11409],"11410":[11410,11411],"11411":[11410,11411],"11412":[11412,11413],"11413":[11412,11413],"11414":[11414,11415],"11415":[11414,11415],"11416":[11416,11417],"11417":[11416,11417],"11418":[11418,11419],"11419":[11418,11419],"11420":[11420,11421],"11421":[11420,11421],"11422":[11422,11423],"11423":[11422,11423],"11424":[11424,11425],"11425":[11424,11425],"11426":[11426,11427],"11427":[11426,11427],"11428":[11428,11429],"11429":[11428,11429],"11430":[11430,11431],"11431":[11430,11431],"11432":[11432,11433],"11433":[11432,11433],"11434":[11434,11435],"11435":[11434,11435],"11436":[11436,11437],"11437":[11436,11437],"11438":[11438,11439],"11439":[11438,11439],"11440":[11440,11441],"11441":[11440,11441],"11442":[11442,11443],"11443":[11442,11443],"11444":[11444,11445],"11445":[11444,11445],"11446":[11446,11447],"11447":[11446,11447],"11448":[11448,11449],"11449":[11448,11449],"11450":[11450,11451],"11451":[11450,11451],"11452":[11452,11453],"11453":[11452,11453],"11454":[11454,11455],"11455":[11454,11455],"11456":[11456,11457],"11457":[11456,11457],"11458":[11458,11459],"11459":[11458,11459],"11460":[11460,11461],"11461":[11460,11461],"11462":[11462,11463],"11463":[11462,11463],"11464":[11464,11465],"11465":[11464,11465],"11466":[11466,11467],"11467":[11466,11467],"11468":[11468,11469],"11469":[11468,11469],"11470":[11470,11471],"11471":[11470,11471],"11472":[11472,11473],"11473":[11472,11473],"11474":[11474,11475],"11475":[11474,11475],"11476":[11476,11477],"11477":[11476,11477],"11478":[11478,11479],"11479":[11478,11479],"11480":[11480,11481],"11481":[11480,11481],"11482":[11482,11483],"11483":[11482,11483],"11484":[11484,11485],"11485":[11484,11485],"11486":[11486,11487],"11487":[11486,11487],"11488":[11488,11489],"11489":[11488,11489],"11490":[11490,11491],"11491":[11490,11491],"11499":[11499,11500],"11500":[11499,11500],"11501":[11501,11502],"11502":[11501,11502],"11506":[11506,11507],"11507":[11506,11507],"11520":[4256,11520],"11521":[4257,11521],"11522":[4258,11522],"11523":[4259,11523],"11524":[4260,11524],"11525":[4261,11525],"11526":[4262,11526],"11527":[4263,11527],"11528":[4264,11528],"11529":[4265,11529],"11530":[4266,11530],"11531":[4267,11531],"11532":[4268,11532],"11533":[4269,11533],"11534":[4270,11534],"11535":[4271,11535],"11536":[4272,11536],"11537":[4273,11537],"11538":[4274,11538],"11539":[4275,11539],"11540":[4276,11540],"11541":[4277,11541],"11542":[4278,11542],"11543":[4279,11543],"11544":[4280,11544],"11545":[4281,11545],"11546":[4282,11546],"11547":[4283,11547],"11548":[4284,11548],"11549":[4285,11549],"11550":[4286,11550],"11551":[4287,11551],"11552":[4288,11552],"11553":[4289,11553],"11554":[4290,11554],"11555":[4291,11555],"11556":[4292,11556],"11557":[4293,11557],"11559":[4295,11559],"11565":[4301,11565],"42560":[42560,42561],"42561":[42560,42561],"42562":[42562,42563],"42563":[42562,42563],"42564":[42564,42565],"42565":[42564,42565],"42566":[42566,42567],"42567":[42566,42567],"42568":[42568,42569],"42569":[42568,42569],"42570":[7304,42570,42571],"42571":[7304,42570,42571],"42572":[42572,42573],"42573":[42572,42573],"42574":[42574,42575],"42575":[42574,42575],"42576":[42576,42577],"42577":[42576,42577],"42578":[42578,42579],"42579":[42578,42579],"42580":[42580,42581],"42581":[42580,42581],"42582":[42582,42583],"42583":[42582,42583],"42584":[42584,42585],"42585":[42584,42585],"42586":[42586,42587],"42587":[42586,42587],"42588":[42588,42589],"42589":[42588,42589],"42590":[42590,42591],"42591":[42590,42591],"42592":[42592,42593],"42593":[42592,42593],"42594":[42594,42595],"42595":[42594,42595],"42596":[42596,42597],"42597":[42596,42597],"42598":[42598,42599],"42599":[42598,42599],"42600":[42600,42601],"42601":[42600,42601],"42602":[42602,42603],"42603":[42602,42603],"42604":[42604,42605],"42605":[42604,42605],"42624":[42624,42625],"42625":[42624,42625],"42626":[42626,42627],"42627":[42626,42627],"42628":[42628,42629],"42629":[42628,42629],"42630":[42630,42631],"42631":[42630,42631],"42632":[42632,42633],"42633":[42632,42633],"42634":[42634,42635],"42635":[42634,42635],"42636":[42636,42637],"42637":[42636,42637],"42638":[42638,42639],"42639":[42638,42639],"42640":[42640,42641],"42641":[42640,42641],"42642":[42642,42643],"42643":[42642,42643],"42644":[42644,42645],"42645":[42644,42645],"42646":[42646,42647],"42647":[42646,42647],"42648":[42648,42649],"42649":[42648,42649],"42650":[42650,42651],"42651":[42650,42651],"42786":[42786,42787],"42787":[42786,42787],"42788":[42788,42789],"42789":[42788,42789],"42790":[42790,42791],"42791":[42790,42791],"42792":[42792,42793],"42793":[42792,42793],"42794":[42794,42795],"42795":[42794,42795],"42796":[42796,42797],"42797":[42796,42797],"42798":[42798,42799],"42799":[42798,42799],"42802":[42802,42803],"42803":[42802,42803],"42804":[42804,42805],"42805":[42804,42805],"42806":[42806,42807],"42807":[42806,42807],"42808":[42808,42809],"42809":[42808,42809],"42810":[42810,42811],"42811":[42810,42811],"42812":[42812,42813],"42813":[42812,42813],"42814":[42814,42815],"42815":[42814,42815],"42816":[42816,42817],"42817":[42816,42817],"42818":[42818,42819],"42819":[42818,42819],"42820":[42820,42821],"42821":[42820,42821],"42822":[42822,42823],"42823":[42822,42823],"42824":[42824,42825],"42825":[42824,42825],"42826":[42826,42827],"42827":[42826,42827],"42828":[42828,42829],"42829":[42828,42829],"42830":[42830,42831],"42831":[42830,42831],"42832":[42832,42833],"42833":[42832,42833],"42834":[42834,42835],"42835":[42834,42835],"42836":[42836,42837],"42837":[42836,42837],"42838":[42838,42839],"42839":[42838,42839],"42840":[42840,42841],"42841":[42840,42841],"42842":[42842,42843],"42843":[42842,42843],"42844":[42844,42845],"42845":[42844,42845],"42846":[42846,42847],"42847":[42846,42847],"42848":[42848,42849],"42849":[42848,42849],"42850":[42850,42851],"42851":[42850,42851],"42852":[42852,42853],"42853":[42852,42853],"42854":[42854,42855],"42855":[42854,42855],"42856":[42856,42857],"42857":[42856,42857],"42858":[42858,42859],"42859":[42858,42859],"42860":[42860,42861],"42861":[42860,42861],"42862":[42862,42863],"42863":[42862,42863],"42873":[42873,42874],"42874":[42873,42874],"42875":[42875,42876],"42876":[42875,42876],"42877":[7545,42877],"42878":[42878,42879],"42879":[42878,42879],"42880":[42880,42881],"42881":[42880,42881],"42882":[42882,42883],"42883":[42882,42883],"42884":[42884,42885],"42885":[42884,42885],"42886":[42886,42887],"42887":[42886,42887],"42891":[42891,42892],"42892":[42891,42892],"42893":[613,42893],"42896":[42896,42897],"42897":[42896,42897],"42898":[42898,42899],"42899":[42898,42899],"42900":[42900,42948],"42902":[42902,42903],"42903":[42902,42903],"42904":[42904,42905],"42905":[42904,42905],"42906":[42906,42907],"42907":[42906,42907],"42908":[42908,42909],"42909":[42908,42909],"42910":[42910,42911],"42911":[42910,42911],"42912":[42912,42913],"42913":[42912,42913],"42914":[42914,42915],"42915":[42914,42915],"42916":[42916,42917],"42917":[42916,42917],"42918":[42918,42919],"42919":[42918,42919],"42920":[42920,42921],"42921":[42920,42921],"42922":[614,42922],"42923":[604,42923],"42924":[609,42924],"42925":[620,42925],"42926":[618,42926],"42928":[670,42928],"42929":[647,42929],"42930":[669,42930],"42931":[42931,43859],"42932":[42932,42933],"42933":[42932,42933],"42934":[42934,42935],"42935":[42934,42935],"42936":[42936,42937],"42937":[42936,42937],"42938":[42938,42939],"42939":[42938,42939],"42940":[42940,42941],"42941":[42940,42941],"42942":[42942,42943],"42943":[42942,42943],"42946":[42946,42947],"42947":[42946,42947],"42948":[42900,42948],"42949":[642,42949],"42950":[7566,42950],"42951":[42951,42952],"42952":[42951,42952],"42953":[42953,42954],"42954":[42953,42954],"42997":[42997,42998],"42998":[42997,42998],"43859":[42931,43859],"43888":[5024,43888],"43889":[5025,43889],"43890":[5026,43890],"43891":[5027,43891],"43892":[5028,43892],"43893":[5029,43893],"43894":[5030,43894],"43895":[5031,43895],"43896":[5032,43896],"43897":[5033,43897],"43898":[5034,43898],"43899":[5035,43899],"43900":[5036,43900],"43901":[5037,43901],"43902":[5038,43902],"43903":[5039,43903],"43904":[5040,43904],"43905":[5041,43905],"43906":[5042,43906],"43907":[5043,43907],"43908":[5044,43908],"43909":[5045,43909],"43910":[5046,43910],"43911":[5047,43911],"43912":[5048,43912],"43913":[5049,43913],"43914":[5050,43914],"43915":[5051,43915],"43916":[5052,43916],"43917":[5053,43917],"43918":[5054,43918],"43919":[5055,43919],"43920":[5056,43920],"43921":[5057,43921],"43922":[5058,43922],"43923":[5059,43923],"43924":[5060,43924],"43925":[5061,43925],"43926":[5062,43926],"43927":[5063,43927],"43928":[5064,43928],"43929":[5065,43929],"43930":[5066,43930],"43931":[5067,43931],"43932":[5068,43932],"43933":[5069,43933],"43934":[5070,43934],"43935":[5071,43935],"43936":[5072,43936],"43937":[5073,43937],"43938":[5074,43938],"43939":[5075,43939],"43940":[5076,43940],"43941":[5077,43941],"43942":[5078,43942],"43943":[5079,43943],"43944":[5080,43944],"43945":[5081,43945],"43946":[5082,43946],"43947":[5083,43947],"43948":[5084,43948],"43949":[5085,43949],"43950":[5086,43950],"43951":[5087,43951],"43952":[5088,43952],"43953":[5089,43953],"43954":[5090,43954],"43955":[5091,43955],"43956":[5092,43956],"43957":[5093,43957],"43958":[5094,43958],"43959":[5095,43959],"43960":[5096,43960],"43961":[5097,43961],"43962":[5098,43962],"43963":[5099,43963],"43964":[5100,43964],"43965":[5101,43965],"43966":[5102,43966],"43967":[5103,43967],"65313":[65313,65345],"65314":[65314,65346],"65315":[65315,65347],"65316":[65316,65348],"65317":[65317,65349],"65318":[65318,65350],"65319":[65319,65351],"65320":[65320,65352],"65321":[65321,65353],"65322":[65322,65354],"65323":[65323,65355],"65324":[65324,65356],"65325":[65325,65357],"65326":[65326,65358],"65327":[65327,65359],"65328":[65328,65360],"65329":[65329,65361],"65330":[65330,65362],"65331":[65331,65363],"65332":[65332,65364],"65333":[65333,65365],"65334":[65334,65366],"65335":[65335,65367],"65336":[65336,65368],"65337":[65337,65369],"65338":[65338,65370],"65345":[65313,65345],"65346":[65314,65346],"65347":[65315,65347],"65348":[65316,65348],"65349":[65317,65349],"65350":[65318,65350],"65351":[65319,65351],"65352":[65320,65352],"65353":[65321,65353],"65354":[65322,65354],"65355":[65323,65355],"65356":[65324,65356],"65357":[65325,65357],"65358":[65326,65358],"65359":[65327,65359],"65360":[65328,65360],"65361":[65329,65361],"65362":[65330,65362],"65363":[65331,65363],"65364":[65332,65364],"65365":[65333,65365],"65366":[65334,65366],"65367":[65335,65367],"65368":[65336,65368],"65369":[65337,65369],"65370":[65338,65370]}'),xl=i.empty(1114111).union(Zo).negate(),el=i.empty(65535).union(Zo).negate();function tl(m,n){const{unicode:a,ignoreCase:x,dotAll:e}=n,t=a?1114111:65535,r=a?Ko:il,s=a?Uo:al,o=s.ranges[0].min,l=s.ranges[s.ranges.length-1].max,c=[];let u=!1;function h(m){if(x&&!u){const n=r[m];if(n){for(let m=0,a=n.length;m=l||s.isDisjointWith(m)||(u=!0),c.push(m)):h(m.min)}function p(m,n){if(n)for(const n of rl(m,t))f(n);else m.forEach(f)}for(const n of m)if(V(n))h(n);else if("kind"in n)switch(n.kind){case"any":if(e)return i.all(t);c.push(...(a?xl:el).ranges);break;case"property":{if(!a)throw new Error("Unicode property escapes cannot be used without the u flag.");const{key:m,value:e,negate:o}=n,l=sl(m,e);if(x&&o){let m=i.empty(t).union(l);m=qo(m,r,s),c.push(...rl(m.ranges,t))}else p(l,o);break}case"digit":case"space":{const m="digit"===n.kind?$o:Vo;n.negate?c.push(...rl(m,t)):c.push(...m);break}case"word":{const m=a&&x?Yo:Xo;n.negate?c.push(...rl(m,t)):c.push(...m);break}default:throw P(n,"Invalid predefined character set type")}else f(n);const d=i.empty(t).union(c);return u?qo(d,r,s):d}function rl(m,n){return i.empty(n).union(m).negate().ranges}function sl(m,n){if(null==n){if(m in va){return Ci[va[m]]}if(m in Na){return sx[Na[m]]}throw new Error(`Unknown lone Unicode property name or value ${m}.`)}{if(!(m in _a))throw new Error(`Unknown Unicode property name ${m}.`);const a=_a[m];let i,x;if("General_Category"===a)i=Na,x=sx;else if("Script"===a)i=Ca,x=Yt;else{if("Script_Extensions"!==a)throw P(a);i=Ca,x=zo}if(!(n in i))throw new Error(`Unknown Unicode property value ${n} for the name ${m}.`);return x[i[n]]}}function ol(m,n,a){if(Array.isArray(m)){const i=m;return 0===i.length?"[]":i.map((m=>ol(m,n,a))).join("|")}{const i=m;if("Concatenation"===i.type){let m="";for(const x of i.elements)m+=ll(x,n,a);return m}return ol(i.alternatives,n,a)}}function ll(m,n,a){const x=n.unicode?1114111:65535;switch(m.type){case"Alternation":{const i=function(m,n){if(2!==m.alternatives.length)return!1;const a=m.alternatives[0],i=m.alternatives[1];if(2!==a.elements.length||2!==i.elements.length)return!1;const x=a.elements[0],e=a.elements[1],t=i.elements[0],r=i.elements[1];if("Assertion"!==x.type||"Assertion"!==e.type||"Assertion"!==t.type||"Assertion"!==r.type)return!1;if(x.kind===e.kind||t.kind===r.kind)return!1;const s=cl(x),o=cl(e),l=cl(t),c=cl(r);if(!(s&&o&&l&&c))return!1;const u=n.unicode&&n.ignoreCase?Yo:Xo;if(!(Tl(s.ranges,u)&&Tl(o.ranges,u)&&Tl(l.ranges,u)&&Tl(c.ranges,u)))return!1;if(x.negate===e.negate&&t.negate===r.negate&&x.negate!==t.negate)return"\\B";if(x.negate!==e.negate&&t.negate!==r.negate&&x.kind===t.kind!=(x.negate===t.negate))return"\\b";return!1}(m,n);return i||"(?:"+ol(m.alternatives,n,a)+")"}case"Assertion":{if(function(m,n){if(m.negate){const a=cl(m);if(a)return n.multiline&&vl(a,n.unicode)||!n.multiline&&a.isAll}return!1}(m,n))return"behind"===m.kind?"^":"$";let i="(?";return"behind"===m.kind&&(i+="<"),i+=m.negate?"!":"=",i+=ol(m.alternatives,n,a),i+=")",i}case"CharacterClass":if(m.characters.maximum!==x)throw new Error(`All characters were expected to have a maximum of ${x}.`);return a.fastCharacters?`[${Pl(m.characters)}]`:function(m,n,a){if(m.isAll)return n.dotAll?".":"[^]";if(m.isEmpty)return"[]";const x=m.ranges[0].min;if(1===m.ranges.length&&x===m.ranges[0].max)return Ll(x);if(n.ignoreCase){const a=function(m,n){const a=(n?Ko:il)[m];return a?i.empty(n?1114111:65535).union(a.map((m=>({min:m,max:m})))):null}(x,!!n.unicode);if(a&&a.equals(m))return Ll(x)}if(0!==x){if(Tl(m.ranges,a.digit.ranges))return"\\d";if(Tl(m.ranges,a.space.ranges))return"\\s";if(Tl(m.ranges,a.word.ranges))return"\\w"}else{if(Tl(m.ranges,a.notDigit.ranges))return"\\D";if(Tl(m.ranges,a.notSpace.ranges))return"\\S";if(Tl(m.ranges,a.notWord.ranges))return"\\W";if(!n.dotAll&&Tl(m.ranges,a.notLineTerminator.ranges))return"."}const e=Dl(m,n,a),t=Dl(m.negate(),n,a);return e.length<=t.length?`[${e}]`:`[^${t}]`}(m.characters,n,a.predefinedCS);case"Quantifier":{let i;if(1===m.alternatives.length&&1===m.alternatives[0].elements.length){const x=m.alternatives[0].elements[0];i="Alternation"===x.type||"CharacterClass"===x.type?ol(m.alternatives[0],n,a):"(?:"+ol(m.alternatives,n,a)+")"}else i="(?:"+ol(m.alternatives,n,a)+")";return 0===m.min&&m.max===1/0?i+="*":1===m.min&&m.max===1/0?i+="+":0===m.min&&1===m.max?i+="?":m.max===1/0?i+=`{${m.min},}`:m.min===m.max?i+=`{${m.min}}`:i+=`{${m.min},${m.max}}`,m.lazy&&(i+="?"),i}default:throw P(m)}}function cl(m){if(1===m.alternatives.length){const n=m.alternatives[0];if(1===n.elements.length){const m=n.elements[0];if("CharacterClass"===m.type)return m.characters}}}function ul(m,n){return n?qo(m,Ko,Uo):qo(m,il,al)}function hl(m,n){let a=!1,i=!1,x=!1,e=!1;for(const t of m)j(t,{onAssertionEnter(m){if(m.negate&&1===m.alternatives.length){const t=m.alternatives[0];if(1===t.elements.length){const r=t.elements[0];if("CharacterClass"===r.type){const t=r.characters;t.isAll?"ahead"===m.kind?i=!0:a=!0:vl(t,n)&&("ahead"===m.kind?e=!0:x=!0)}}}}});return!!x||!a&&(!!e||!i&&void 0)}function fl(m,n,a){var i,x,e;const t=null==n?void 0:n.flags,r=null!==(i=null==t?void 0:t.unicode)&&void 0!==i?i:function(m){try{for(const n of m)j(n,{onCharacterClassEnter(m){throw 1114111===m.characters.maximum||65535!==m.characters.maximum&&new Error("All character sets have to have a maximum of either 0xFFFF or 0x10FFFF.")}})}catch(m){if("boolean"==typeof m)return m;throw m}}(m),s=null==t?void 0:t.ignoreCase;let o;if(o=!(a&&!s)&&(null!==(x=function(m,n){let a=void 0;try{for(const i of m)j(i,{onCharacterClassEnter(m){const i=m.characters;if(!i.equals(ul(i,n)))throw a=!1,new Error}})}catch(m){}return a}(m,!!r))&&void 0!==x?x:s),(null!=s?s:o)!==o)throw new Error(`Incompatible flags: The i flag is ${o?"required":"forbidden"} to create a literal but ${s?"required":"forbidden"} by the options.`);return{dotAll:null==t?void 0:t.dotAll,global:null==t?void 0:t.global,ignoreCase:null==o||o,multiline:null!==(e=null==t?void 0:t.multiline)&&void 0!==e?e:hl(m,!!r),sticky:null==t?void 0:t.sticky,unicode:r}}const pl={digit:i.empty(65535).union($o),notDigit:i.empty(65535).union($o).negate(),space:i.empty(65535).union(Vo),notSpace:i.empty(65535).union(Vo).negate(),word:i.empty(65535).union(Xo),notWord:i.empty(65535).union(Xo).negate(),lineTerminator:i.empty(65535).union(Zo),notLineTerminator:i.empty(65535).union(Zo).negate()},dl={digit:i.empty(1114111).union($o),notDigit:i.empty(1114111).union($o).negate(),space:i.empty(1114111).union(Vo),notSpace:i.empty(1114111).union(Vo).negate(),word:i.empty(1114111).union(Xo),notWord:i.empty(1114111).union(Xo).negate(),lineTerminator:i.empty(1114111).union(Zo),notLineTerminator:i.empty(1114111).union(Zo).negate()},gl={digit:i.empty(1114111).union($o),notDigit:i.empty(1114111).union($o).negate(),space:i.empty(1114111).union(Vo),notSpace:i.empty(1114111).union(Vo).negate(),word:i.empty(1114111).union(Yo),notWord:i.empty(1114111).union(Yo).negate(),lineTerminator:i.empty(1114111).union(Zo),notLineTerminator:i.empty(1114111).union(Zo).negate()};function yl(m){return m.unicode?m.ignoreCase?gl:dl:pl}const Sl=i.empty(1114111).union(Zo).negate(),_l=i.empty(65535).union(Zo).negate();function vl(m,n){return n?m.equals(Sl):m.equals(_l)}const Nl=new Map([["\n".charCodeAt(0),"\\n"],["\f".charCodeAt(0),"\\f"],["\t".charCodeAt(0),"\\t"],["\r".charCodeAt(0),"\\r"]]);function Cl(m){return 0===m?"\\0":m<16?"\\x0"+m.toString(16):m<256?"\\x"+m.toString(16):m<4096?"\\u0"+m.toString(16):m<65536?"\\u"+m.toString(16):"\\u{"+m.toString(16)+"}"}const Ol=new Set([..."\\]-^"].map((m=>m.charCodeAt(0))));function kl(m){if(Ol.has(m))return"\\"+String.fromCharCode(m);const n=Nl.get(m);return n||(m>=32&&m<127?String.fromCharCode(m):Cl(m))}const wl=[{min:48,max:57},{min:65,max:90},{min:97,max:122}],Jl=Math.min(...wl.map((m=>m.min))),bl=Math.max(...wl.map((m=>m.max)));function Al(m){return Jl<=m.min&&m.max<=bl&&wl.some((({min:n,max:a})=>n<=m.min&&m.max<=a))?String.fromCharCode(m.min)+"-"+String.fromCharCode(m.max):Cl(m.min)+"-"+Cl(m.max)}function El(m){if(m.min===m.max)return kl(m.min);if(m.min===m.max-1)return kl(m.min)+kl(m.max);if(m.max-m.min+1<=6){let n="";for(let a=m.min;a<=m.max;a++)n+=kl(a);return Il(n,Al(m))}return Al(m)}const Ml=new Set([..."()[]{}*+?|\\.^$/"].map((m=>m.charCodeAt(0))));function Ll(m){if(Ml.has(m))return"\\"+String.fromCharCode(m);const n=Nl.get(m);return n||(m>=32&&m<127?String.fromCharCode(m):Cl(m))}function Tl(m,n){const a=m.length;if(a!==n.length)return!1;for(let i=0;i{let a=Pl(m);return n.ignoreCase&&(a=Il(a,function(m){const n=1114111===m.maximum;let a=i.empty(m.maximum),x="";for(const e of m.ranges)a.isSupersetOf(e)||(x+=El(e),a=a.union(ul(i.empty(m.maximum).union([e]),n)));return x}(m))),a},e=m=>{let n=m,i="";return n.isSupersetOf(a.space)&&(i+="\\s",n=n.without(a.space)),n.isSupersetOf(a.word)&&(i+="\\w",n=n.without(a.word)),n.isSupersetOf(a.digit)&&(i+="\\d",n=n.without(a.digit)),m===n||n.ranges.length>2*m.ranges.length+2?x(m):Il(x(m),i+x(n))},t=m=>{if(m.has(45)&&!m.has(46)){const n=m.without([{min:45,max:45}]);return Il(e(m),"-"+e(n))}return e(m)};return(m=>{if(m.ranges.length>1&&m.has(94)&&!m.has(93)){const n=m.without([{min:94,max:94}]);return Il(t(m),t(n)+"^")}return t(m)})(m)}function Rl(m,n){if(n(m))return!0;switch(m.type){case"Alternative":return m.elements.some((m=>Rl(m,n)));case"Assertion":return("lookahead"===m.kind||"lookbehind"===m.kind)&&m.alternatives.some((m=>Rl(m,n)));case"CapturingGroup":case"Group":case"Pattern":return m.alternatives.some((m=>Rl(m,n)));case"CharacterClass":return m.elements.some((m=>Rl(m,n)));case"CharacterClassRange":return Rl(m.min,n)||Rl(m.max,n);case"Quantifier":return Rl(m.element,n);case"RegExpLiteral":return Rl(m.pattern,n)||Rl(m.flags,n)}return!1}function Gl(m,n){let a=m.parent;for(;a;){if(n(a))return!0;a=a.parent}return!1}function Bl(m){let n=m.parent;for(;n;){if("Assertion"===n.type)return"lookahead"===n.kind?"ltr":"rtl";n=n.parent}return"ltr"}class Wl{constructor(m){this._charCache=new Map,this._simpleCharCache=new Map,this._backRefCanReachGroupCache=new Map,this._backRefAlwaysAfterGroupCache=new Map,this._constantResolveCache=new Map,this._groupReferencesCache=new Map,this.literal={source:m.pattern.raw,flags:m.flags.raw},this.ast=m,this.maxCharacter=this.ast.flags.unicode?1114111:65535,this._charSetToCharFn=function(m){if(m.ignoreCase){const n=m.unicode?Ko:il,a=m.unicode?1114111:65535,x=new Map;return function*(m){const e=new Set;for(const t of am(m)){if(e.has(t))continue;const m=n[t];if(m){for(const n of m)e.add(n);let n=x.get(m);void 0===n&&(n=i.empty(a).union(m.map((m=>({min:m,max:m})))),x.set(m,n)),yield n}else yield t}}}return am}(this.ast.flags)}static fromLiteral(n,a){const i=new m.RegExpParser(a),x=i.parseFlags(n.flags),e=i.parsePattern(n.source,void 0,void 0,x.unicode);return new Wl({pattern:e,flags:x})}static fromAst(m){return new Wl(m)}parse(m){return this.parseElement(this.ast.pattern,m)}parseElement(m,n){var a,i,x,e,t;const r={maxBackreferenceWords:Math.round(null!==(a=null==n?void 0:n.maxBackreferenceWords)&&void 0!==a?a:100),backreferences:null!==(i=null==n?void 0:n.backreferences)&&void 0!==i?i:"throw",assertions:null!==(x=null==n?void 0:n.assertions)&&void 0!==x?x:"parse",disableSimplification:null!==(e=null==n?void 0:n.disableOptimizations)&&void 0!==e&&e,nc:new Fl(null!==(t=null==n?void 0:n.maxNodes)&&void 0!==t?t:1e4),matchingDir:Bl(m),variableResolved:new Map},s=this._parseElement(m,r);return W(s,null),{expression:s,maxCharacter:this.maxCharacter}}_parseElement(m,n){const a={type:"Expression",alternatives:[],source:Hl(m)};return"Alternative"===m.type?this._addAlternatives([m],a,n):this._addAlternatives(m.alternatives,a,n),a}_addAlternatives(m,n,a){for(const i of m){const m=this._createConcatenation(i,a);1!==m&&(a.disableSimplification?n.alternatives.push(m):1===m.elements.length&&"Alternation"===m.elements[0].type?n.alternatives.push(...m.elements[0].alternatives):n.alternatives.push(m))}}_createConcatenation(m,n){const a="ltr"===n.matchingDir?m.elements:[...m.elements].reverse(),i=this._createElements(a,n);if(1===i)return 1;"rtl"===n.matchingDir&&i.reverse();const x=n.nc.newConcat(m);return this._setConcatenationElements(x,i,n),x}_setConcatenationElements(m,n,a){if(a.disableSimplification)m.elements=n;else{m.elements.length>0&&(m.elements=[]);for(const a of n)"Alternation"===a.type&&1===a.alternatives.length?m.elements.push(...a.alternatives[0].elements):m.elements.push(a)}}_createElements(m,n){const a=[];let i=void 0;for(let x=0;x0)try{const r=this._variableResolveGroup(e,t,m.slice(x+1),n);i=!0,a.push(r.resolved),x+=r.skip}catch(m){}i||a.push(t)}}if(void 0!==i)throw i;return a}_variableResolveGroup(m,n,a,i){if(0===this._getResolvableGroupReferencesUnder(m,m.parent).length)throw new Error("No backreferences that resolve this capturing group");const x=Vl(ql(n,this._charSetToCharFn),i.maxBackreferenceWords);if(0===x.length)throw new Error("Cannot resolve dead capturing group");const e=[...a];this._trimAffectedSlice(m,e);const t=[];for(const n of x){const a=this._createElements(e,Ql(i,m,n));if(1===a)continue;const x=[],r=this._wordToElement(m,n,i);2!==r&&x.push(r),x.push(...a),"rtl"===i.matchingDir&&x.reverse();const s=i.nc.newConcat(m);this._setConcatenationElements(s,x,i),t.push(s)}const r=i.nc.newAlt(m);return r.alternatives=t,{resolved:r,skip:e.length}}_trimAffectedSlice(m,n){const a=this._affectedSliceLength(m,n);n.length>a&&n.splice(a,n.length-a)}_affectedSliceLength(m,n){const a=function(m){for(let a=n.length-1;a>=0;a--)if(m.has(n[a]))return a;throw-1}(new Set(this._getResolvableGroupReferencesUnder(m,m.parent).map((function(n){let a=n;for(;a;){if(a.parent===m.parent)return a;a=a.parent}throw new Error})))),i=[a];for(let m=0;m<=a;m++){const a=n[m];"CapturingGroup"===a.type&&i.push(m+1+this._affectedSliceLength(a,n.slice(m+1)))}return Math.max(...i)+1}_createElement(m,n){switch(m.type){case"Assertion":return this._createAssertion(m,n);case"CapturingGroup":case"Group":return this._createGroup(m,n);case"Character":case"CharacterClass":case"CharacterSet":return this._createCharacterClass(m,n);case"Quantifier":return this._createQuantifier(m,n);case"Backreference":return this._createBackreference(m,n);default:throw P(m,"Unsupported element")}}_createAssertion(m,n){if("throw"===n.assertions)throw new Error("Assertions are not supported.");if("disable"===n.assertions)return n.disableSimplification?this._createEmptyCharacterClass(m,n):1;switch(m.kind){case"lookahead":case"lookbehind":{const a=n.nc.newAssertion(m,"lookahead"===m.kind?"ahead":"behind",m.negate),i="lookahead"===m.kind?"ltr":"rtl";if(this._addAlternatives(m.alternatives,a,i===n.matchingDir?n:Object.assign(Object.assign({},n),{matchingDir:i})),!n.disableSimplification){let m=2;if(0===a.alternatives.length?m=a.negate?1:0:Sm(a.alternatives)&&(m=a.negate?0:1),1===m)return 2;if(0===m)return 1}return a}case"end":case"start":case"word":{const n=ml(m,this.ast.flags);return Q(n,Hl(m)),n}default:throw P(m,"Unsupported element")}}_createCharacterClass(m,n){let a,i;i="Character"===m.type||"CharacterSet"===m.type?jl([m]):jl(m.elements,m.negate);const x=this._charCache.get(i);return void 0!==x?a=x:("Character"===m.type?a=tl([m.value],this.ast.flags):"CharacterSet"===m.type?a=tl([m],this.ast.flags):(a=tl(m.elements.map((m=>{switch(m.type){case"Character":return m.value;case"CharacterClassRange":return{min:m.min.value,max:m.max.value};case"CharacterSet":return m;default:throw P(m,"Unsupported element")}})),this.ast.flags),m.negate&&(a=a.negate())),this._charCache.set(i,a)),!n.disableSimplification&&a.isEmpty?1:n.nc.newCharClass(m,a)}_createGroup(m,n){const a=n.nc.newAlt(m);if(this._addAlternatives(m.alternatives,a,n),!n.disableSimplification){if(0===a.alternatives.length)return 1;if(1===a.alternatives.length&&0===a.alternatives[0].elements.length)return 2}return a}_createQuantifier(m,n){const a=m.min,i=m.max;if(!n.disableSimplification){if(0===i)return 2;if(1===a&&1===i)return this._createElement(m.element,n)}const x=n.nc.newQuant(m,a,i,!m.greedy),e=m.element;if("CapturingGroup"===e.type||"Group"===e.type)this._addAlternatives(e.alternatives,x,n);else{const m=this._createElement(e,n);if(1!==m){const a=n.nc.newConcat(e);x.alternatives.push(a),2!==m&&a.elements.push(m)}}if(!n.disableSimplification){if(0===x.alternatives.length)return 0===a?2:1;if(1===x.alternatives.length&&0===x.alternatives[0].elements.length)return 2}return x}_createEmptyCharacterClass(m,n){return n.nc.newCharClass(m,i.empty(this.maxCharacter))}_createBackreference(m,n){var a;if(n.maxBackreferenceWords>0){if(!this._backRefCanReachGroup(m))return 2;const i=m.resolved,x=null!==(a=n.variableResolved.get(i))&&void 0!==a?a:this._constantResolveGroup(i,n);if(null!==x){if(0===x.length)return 2;if(this._backRefAlwaysAfterGroup(m))return this._wordToElement(m,x,n)}}if("throw"===n.backreferences)throw new Error("Backreferences are not supported.");return n.disableSimplification?this._createEmptyCharacterClass(m,n):1}_constantResolveGroup(m,n){const a=this._constantResolveCache.get(m);if(void 0!==a)return a;const i=this._parseElement(m,Object.assign(Object.assign({},n),{backreferences:"throw",disableSimplification:!1}));zl(i),Ul(i);let x=void 0;try{x=Vl(ql(i,this._charSetToCharFn),1)}catch(m){}let e=null;if(x)if(0===x.length)e=[];else{if(1!==x.length)throw new Error("More than one words were returned.");e=x[0]}return this._constantResolveCache.set(m,e),e}_backRefCanReachGroup(m){let n=this._backRefCanReachGroupCache.get(m);return void 0===n&&(n=function(m){const n=m.resolved;return!Gl(m,(m=>m===n))&&function n(a){const i=a.parent;switch(i.type){case"Alternative":{const x=i.elements.indexOf(a);let e;if(e="ltr"===Bl(a)?i.elements.slice(x+1):i.elements.slice(0,x),e.some((n=>Rl(n,(n=>n===m)))))return!0;const t=i.parent;return"Pattern"!==t.type&&n(t)}case"Quantifier":return n(i);default:throw new Error("What happened?")}}(n)}(m),this._backRefCanReachGroupCache.set(m,n)),n}_backRefAlwaysAfterGroup(m){let n=this._backRefAlwaysAfterGroupCache.get(m);return void 0===n&&(n=function(m){const n=m.resolved;return!Gl(m,(m=>m===n))&&function n(a){const i=a.parent;switch(i.type){case"Alternative":{const x=i.elements.indexOf(a);let e;if(e="ltr"===Bl(a)?i.elements.slice(x+1):i.elements.slice(0,x),e.some((n=>Rl(n,(n=>n===m)))))return!0;const t=i.parent;return"Pattern"!==t.type&&!(t.alternatives.length>1)&&n(t)}case"Quantifier":return 0!==i.min&&n(i);default:throw new Error("What happened?")}}(n)}(m),this._backRefAlwaysAfterGroupCache.set(m,n)),n}_wordToElement(m,n,a){if(0===n.length)return 2;if(1===n.length){const x=n[0],e=x instanceof i?x:this._charToCharSet(x);return a.nc.newCharClass(m,e)}{const x=a.nc.newConcat(m);for(const e of n){const n=e instanceof i?e:this._charToCharSet(e);x.elements.push(a.nc.newCharClass(m,n))}const e=a.nc.newAlt(m);return e.alternatives.push(x),e}}_charToCharSet(m){let n=this._simpleCharCache.get(m);return void 0===n&&(n=i.empty(this.maxCharacter).union([{min:m,max:m}]),this._simpleCharCache.set(m,n)),n}_getGroupReferences(n){if(0===this._groupReferencesCache.size){const n=m=>{let n=this._groupReferencesCache.get(m);return void 0===n&&(n=[],this._groupReferencesCache.set(m,n)),n};m.visitRegExpAST(this.ast.pattern,{onBackreferenceEnter(m){n(m.resolved).push(m)},onCapturingGroupEnter(m){n(m)}})}const a=this._groupReferencesCache.get(n);if(!a)throw new Error("Unknown capturing group. The capturing group is not part of the AST of this parser.");return a}_getResolvableGroupReferences(m){return this._getGroupReferences(m).filter((m=>this._backRefCanReachGroup(m)&&this._backRefAlwaysAfterGroup(m)))}_getResolvableGroupReferencesUnder(m,n){return this._getResolvableGroupReferences(m).filter((m=>Gl(m,(m=>m===n))))}}class Fl{constructor(m){this._nodeCounter=0,this._nodeLimit=m}_checkLimit(){if(++this._nodeCounter>this._nodeLimit)throw new C(`The parser is not allowed to create more than ${this._nodeLimit} nodes.`)}newAlt(m){return this._checkLimit(),{type:"Alternation",alternatives:[],source:Hl(m)}}newAssertion(m,n,a){return this._checkLimit(),{type:"Assertion",alternatives:[],kind:n,negate:a,source:Hl(m)}}newCharClass(m,n){return this._checkLimit(),{type:"CharacterClass",characters:n,source:Hl(m)}}newConcat(m){return this._checkLimit(),{type:"Concatenation",elements:[],source:Hl(m)}}newQuant(m,n,a,i){return this._checkLimit(),{type:"Quantifier",alternatives:[],lazy:i,min:n,max:a,source:Hl(m)}}}function Ql(m,n,a){const i=new Map(m.variableResolved);return i.set(n,a),Object.assign(Object.assign({},m),{variableResolved:i})}function Hl(m){return{start:m.start,end:m.end}}function jl(m,n){let a=n?"^":"";for(const n of m)switch(n.type){case"Character":a+="\\"+n.value.toString(16);break;case"CharacterClassRange":a+="\\"+n.min.value.toString(16)+"-\\"+n.max.value.toString(16);break;case"CharacterSet":a+=n.raw;break;default:throw P(n)}return a}function zl(m){for(const n of m.alternatives)for(;n.elements.length>0;){const m=n.elements[0];if("Assertion"!==m.type||"behind"!==m.kind){if("Alternation"!==m.type&&"Quantifier"!==m.type||(zl(m),1!==m.alternatives.length||0!==m.alternatives[0].elements.length))break;n.elements.splice(0,1)}else n.elements.splice(0,1)}Kl(m)}function Ul(m){for(const n of m.alternatives)for(;n.elements.length>0;){const m=n.elements[n.elements.length-1];if("Assertion"!==m.type||"ahead"!==m.kind){if("Alternation"!==m.type&&"Quantifier"!==m.type||(Ul(m),1!==m.alternatives.length||0!==m.alternatives[0].elements.length))break;n.elements.pop()}else n.elements.pop()}Kl(m)}function Kl(m){let n=!1;m.alternatives=m.alternatives.filter((m=>0!==m.elements.length||!n&&(n=!0,!0)))}function ql(m,n){return function*(m,n){for(const a of m)yield*R(a.map(n))}($l(m),n)}function $l(m){switch(m.type){case"Alternation":case"Expression":return I(m.alternatives.map($l));case"Assertion":throw new Error;case"CharacterClass":return m.characters.isEmpty?[]:[[m.characters]];case"Concatenation":return D(m.elements.map($l));case"Quantifier":{if(m.max===1/0)throw new Error;let n;return n=m.lazy?function*(){for(let n=m.min;n<=m.max;n++)yield n}():function*(){for(let n=m.max;n>=m.min;n--)yield n}(),function*(m,n,a){n=G.from(n);for(const i of m){const m=[];for(let a=0;an)throw new Error("Too many items.");return a}var Xl=Object.freeze({__proto__:null,createAssertion:ml,createCharSet:tl,toLiteral:function(m,n){var a;const i=null!==(a=null==n?void 0:n.fastCharacters)&&void 0!==a&&a;let x;if(Array.isArray(m)){x=fl(m,n,i)}else{x=fl([m],n,i)}let e="";return x.global&&(e+="g"),x.ignoreCase&&(e+="i"),x.multiline&&(e+="m"),x.dotAll&&(e+="s"),x.unicode&&(e+="u"),x.sticky&&(e+="y"),{source:ol(m,x,{fastCharacters:i,predefinedCS:yl(x)}),flags:e}},Parser:Wl});const Zl=[{min:65,max:90},{min:97,max:122},{min:48,max:57},{min:45,max:45},{min:95,max:95},{min:32,max:32},{min:32,max:126},{min:9,max:9},{min:10,max:10},{min:13,max:13}];function Yl(m){if(0!==m.ranges.length){if(1===m.ranges.length){const{min:n,max:a}=m.ranges[0];if(n===a)return n}for(const n of Zl){const a=m.commonCharacter(n);if(void 0!==a)return a}return m.ranges[0].min}}var mc=Object.freeze({__proto__:null,fromUTF16ToString:function(m){return String.fromCharCode(...m)},fromUnicodeToString:function(m){return String.fromCodePoint(...m)},fromStringToUTF16:function(m){const n=[];for(let a=0,i=m.length;a=55296&&x<56320&&a+1=56320&&i<57344){n.push(65536+(x-55296<<10)+(i-56320)),a++;continue}}n.push(x)}return n},wordSetToWords:function(m){return nm(m)},pickMostReadableCharacter:Yl,pickMostReadableWord:function(m){const n=[];for(const a of m){const m=Yl(a);if(void 0===m)return;n.push(m)}return n}});exports.CharMap=s,exports.CharSet=i,exports.DFA=da,exports.JS=Xl,exports.NFA=na,exports.TooManyNodesError=C,exports.Transformers=Qn,exports.Words=mc,exports.combineTransformers=U,exports.setParent=W,exports.setSource=Q,exports.transform=K,exports.visitAst=j; diff --git a/node_modules/refa/package.json b/node_modules/refa/package.json new file mode 100644 index 0000000..60ca685 --- /dev/null +++ b/node_modules/refa/package.json @@ -0,0 +1,70 @@ +{ + "name": "refa", + "version": "0.7.1", + "description": "A library for finite automata and regular expressions in the context of JS RegExp", + "main": "index", + "scripts": { + "check": "npm run lint && npm run check:dependencies && npx tsc --noEmit && cd tests && npx tsc --noEmit && cd ../scripts && npx tsc --noEmit", + "check:dependencies": "npx depcruise --validate .dependency-cruiser.js src", + "lint": "npx eslint --ignore-path .gitignore **/*.ts", + "test": "cd tests && mocha -r ts-node/register '**/*.ts'", + "test:fast": "cd tests && mocha -r ts-node/register '**/*.ts' --exclude regex-stress-test.ts", + "build": "npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts", + "build:dts": "dts-bundle --main ./.out/index.d.ts --name refa --out ../index.d.ts && npm run scripts:flat-dts && prettier --write ./index.d.ts", + "build:docs": "typedoc", + "coverage": "npx nyc --reporter=html --reporter=text npm run test", + "scripts:create-case-folding": "npx ts-node --project scripts/tsconfig.json scripts/create-case-folding.ts", + "scripts:create-unicode": "npx ts-node --project scripts/tsconfig.json scripts/create-unicode.ts", + "scripts:debug": "npx ts-node --project scripts/tsconfig.json scripts/debug.ts", + "scripts:flat-dts": "npx ts-node --project scripts/tsconfig.json scripts/flat-dts.ts", + "scripts:perf": "npx ts-node --project scripts/tsconfig.json scripts/perf.ts", + "prepublishOnly": "npm run build" + }, + "keywords": [ + "dfa", + "nfa", + "regex", + "regexp", + "regular", + "expression" + ], + "author": "Michael Schmidt", + "homepage": "https://github.com/RunDevelopment/refa#readme", + "repository": { + "type": "git", + "url": "https://github.com/RunDevelopment/refa.git" + }, + "license": "MIT", + "devDependencies": { + "@rollup/plugin-node-resolve": "^9.0.0", + "@types/chai": "^4.2.14", + "@types/mocha": "^7.0.2", + "@types/node": "^12.19.16", + "@typescript-eslint/eslint-plugin": "^4.14.2", + "@typescript-eslint/parser": "^4.14.2", + "chai": "^4.3.0", + "dependency-cruiser": "^9.22.1", + "dts-bundle": "^0.7.3", + "eslint": "^7.19.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-prettier": "^3.3.1", + "mocha": "^7.2.0", + "nyc": "^15.1.0", + "prettier": "^2.2.1", + "rimraf": "^3.0.2", + "rollup": "^2.38.5", + "rollup-plugin-terser": "^7.0.2", + "ts-node": "^8.10.2", + "typedoc": "^0.20.25", + "typescript": "^4.1.3", + "unicode-13.0.0": "^0.8.0" + }, + "dependencies": { + "regexpp": "^3.1.0" + }, + "files": [ + "index.js", + "index.mjs", + "index.d.ts" + ] +} diff --git a/node_modules/regexpp/LICENSE b/node_modules/regexpp/LICENSE new file mode 100644 index 0000000..883ee1f --- /dev/null +++ b/node_modules/regexpp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Toru Nagashima + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/regexpp/README.md b/node_modules/regexpp/README.md new file mode 100644 index 0000000..a5e2e14 --- /dev/null +++ b/node_modules/regexpp/README.md @@ -0,0 +1,178 @@ +# regexpp + +[![npm version](https://img.shields.io/npm/v/regexpp.svg)](https://www.npmjs.com/package/regexpp) +[![Downloads/month](https://img.shields.io/npm/dm/regexpp.svg)](http://www.npmtrends.com/regexpp) +[![Build Status](https://github.com/mysticatea/regexpp/workflows/CI/badge.svg)](https://github.com/mysticatea/regexpp/actions) +[![codecov](https://codecov.io/gh/mysticatea/regexpp/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/regexpp) +[![Dependency Status](https://david-dm.org/mysticatea/regexpp.svg)](https://david-dm.org/mysticatea/regexpp) + +A regular expression parser for ECMAScript. + +## 💿 Installation + +```bash +$ npm install regexpp +``` + +- require Node.js 8 or newer. + +## 📖 Usage + +```ts +import { + AST, + RegExpParser, + RegExpValidator, + RegExpVisitor, + parseRegExpLiteral, + validateRegExpLiteral, + visitRegExpAST +} from "regexpp" +``` + +### parseRegExpLiteral(source, options?) + +Parse a given regular expression literal then make AST object. + +This is equivalent to `new RegExpParser(options).parseLiteral(source)`. + +- **Parameters:** + - `source` (`string | RegExp`) The source code to parse. + - `options?` ([`RegExpParser.Options`]) The options to parse. +- **Return:** + - The AST of the regular expression. + +### validateRegExpLiteral(source, options?) + +Validate a given regular expression literal. + +This is equivalent to `new RegExpValidator(options).validateLiteral(source)`. + +- **Parameters:** + - `source` (`string`) The source code to validate. + - `options?` ([`RegExpValidator.Options`]) The options to validate. + +### visitRegExpAST(ast, handlers) + +Visit each node of a given AST. + +This is equivalent to `new RegExpVisitor(handlers).visit(ast)`. + +- **Parameters:** + - `ast` ([`AST.Node`]) The AST to visit. + - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. + +### RegExpParser + +#### new RegExpParser(options?) + +- **Parameters:** + - `options?` ([`RegExpParser.Options`]) The options to parse. + +#### parser.parseLiteral(source, start?, end?) + +Parse a regular expression literal. + +- **Parameters:** + - `source` (`string`) The source code to parse. E.g. `"/abc/g"`. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. +- **Return:** + - The AST of the regular expression. + +#### parser.parsePattern(source, start?, end?, uFlag?) + +Parse a regular expression pattern. + +- **Parameters:** + - `source` (`string`) The source code to parse. E.g. `"abc"`. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. + - `uFlag?` (`boolean`) The flag to enable Unicode mode. +- **Return:** + - The AST of the regular expression pattern. + +#### parser.parseFlags(source, start?, end?) + +Parse a regular expression flags. + +- **Parameters:** + - `source` (`string`) The source code to parse. E.g. `"gim"`. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. +- **Return:** + - The AST of the regular expression flags. + +### RegExpValidator + +#### new RegExpValidator(options) + +- **Parameters:** + - `options` ([`RegExpValidator.Options`]) The options to validate. + +#### validator.validateLiteral(source, start, end) + +Validate a regular expression literal. + +- **Parameters:** + - `source` (`string`) The source code to validate. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. + +#### validator.validatePattern(source, start, end, uFlag) + +Validate a regular expression pattern. + +- **Parameters:** + - `source` (`string`) The source code to validate. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. + - `uFlag?` (`boolean`) The flag to enable Unicode mode. + +#### validator.validateFlags(source, start, end) + +Validate a regular expression flags. + +- **Parameters:** + - `source` (`string`) The source code to validate. + - `start?` (`number`) The start index in the source code. Default is `0`. + - `end?` (`number`) The end index in the source code. Default is `source.length`. + +### RegExpVisitor + +#### new RegExpVisitor(handlers) + +- **Parameters:** + - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. + +#### visitor.visit(ast) + +Validate a regular expression literal. + +- **Parameters:** + - `ast` ([`AST.Node`]) The AST to visit. + +## 📰 Changelog + +- [GitHub Releases](https://github.com/mysticatea/regexpp/releases) + +## 🍻 Contributing + +Welcome contributing! + +Please use GitHub's Issues/PRs. + +### Development Tools + +- `npm test` runs tests and measures coverage. +- `npm run build` compiles TypeScript source code to `index.js`, `index.js.map`, and `index.d.ts`. +- `npm run clean` removes the temporary files which are created by `npm test` and `npm run build`. +- `npm run lint` runs ESLint. +- `npm run update:test` updates test fixtures. +- `npm run update:ids` updates `src/unicode/ids.ts`. +- `npm run watch` runs tests with `--watch` option. + +[`AST.Node`]: src/ast.ts#L4 +[`RegExpParser.Options`]: src/parser.ts#L539 +[`RegExpValidator.Options`]: src/validator.ts#L127 +[`RegExpVisitor.Handlers`]: src/visitor.ts#L204 diff --git a/node_modules/regexpp/index.d.ts b/node_modules/regexpp/index.d.ts new file mode 100644 index 0000000..a2cf3f1 --- /dev/null +++ b/node_modules/regexpp/index.d.ts @@ -0,0 +1,247 @@ +// Generated by dts-bundle v0.7.3 + +declare module 'regexpp' { + import * as AST from "regexpp/ast"; + import { RegExpParser } from "regexpp/parser"; + import { RegExpValidator } from "regexpp/validator"; + import { RegExpVisitor } from "regexpp/visitor"; + export { AST, RegExpParser, RegExpValidator }; + export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral; + export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void; + export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void; +} + +declare module 'regexpp/ast' { + export type Node = BranchNode | LeafNode; + export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange; + export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags; + export type Element = Assertion | Quantifier | QuantifiableElement; + export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion; + export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange; + export interface NodeBase { + type: Node["type"]; + parent: Node["parent"]; + start: number; + end: number; + raw: string; + } + export interface RegExpLiteral extends NodeBase { + type: "RegExpLiteral"; + parent: null; + pattern: Pattern; + flags: Flags; + } + export interface Pattern extends NodeBase { + type: "Pattern"; + parent: RegExpLiteral | null; + alternatives: Alternative[]; + } + export interface Alternative extends NodeBase { + type: "Alternative"; + parent: Pattern | Group | CapturingGroup | LookaroundAssertion; + elements: Element[]; + } + export interface Group extends NodeBase { + type: "Group"; + parent: Alternative | Quantifier; + alternatives: Alternative[]; + } + export interface CapturingGroup extends NodeBase { + type: "CapturingGroup"; + parent: Alternative | Quantifier; + name: string | null; + alternatives: Alternative[]; + references: Backreference[]; + } + export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion; + export interface LookaheadAssertion extends NodeBase { + type: "Assertion"; + parent: Alternative | Quantifier; + kind: "lookahead"; + negate: boolean; + alternatives: Alternative[]; + } + export interface LookbehindAssertion extends NodeBase { + type: "Assertion"; + parent: Alternative; + kind: "lookbehind"; + negate: boolean; + alternatives: Alternative[]; + } + export interface Quantifier extends NodeBase { + type: "Quantifier"; + parent: Alternative; + min: number; + max: number; + greedy: boolean; + element: QuantifiableElement; + } + export interface CharacterClass extends NodeBase { + type: "CharacterClass"; + parent: Alternative | Quantifier; + negate: boolean; + elements: CharacterClassElement[]; + } + export interface CharacterClassRange extends NodeBase { + type: "CharacterClassRange"; + parent: CharacterClass; + min: Character; + max: Character; + } + export type Assertion = BoundaryAssertion | LookaroundAssertion; + export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion; + export interface EdgeAssertion extends NodeBase { + type: "Assertion"; + parent: Alternative | Quantifier; + kind: "start" | "end"; + } + export interface WordBoundaryAssertion extends NodeBase { + type: "Assertion"; + parent: Alternative | Quantifier; + kind: "word"; + negate: boolean; + } + export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet; + export interface AnyCharacterSet extends NodeBase { + type: "CharacterSet"; + parent: Alternative | Quantifier; + kind: "any"; + } + export interface EscapeCharacterSet extends NodeBase { + type: "CharacterSet"; + parent: Alternative | Quantifier | CharacterClass; + kind: "digit" | "space" | "word"; + negate: boolean; + } + export interface UnicodePropertyCharacterSet extends NodeBase { + type: "CharacterSet"; + parent: Alternative | Quantifier | CharacterClass; + kind: "property"; + key: string; + value: string | null; + negate: boolean; + } + export interface Character extends NodeBase { + type: "Character"; + parent: Alternative | Quantifier | CharacterClass | CharacterClassRange; + value: number; + } + export interface Backreference extends NodeBase { + type: "Backreference"; + parent: Alternative | Quantifier; + ref: number | string; + resolved: CapturingGroup; + } + export interface Flags extends NodeBase { + type: "Flags"; + parent: RegExpLiteral | null; + dotAll: boolean; + global: boolean; + ignoreCase: boolean; + multiline: boolean; + sticky: boolean; + unicode: boolean; + } +} + +declare module 'regexpp/parser' { + import { Flags, RegExpLiteral, Pattern } from "regexpp/ast"; + import { EcmaVersion } from "regexpp/ecma-versions"; + export namespace RegExpParser { + interface Options { + strict?: boolean; + ecmaVersion?: EcmaVersion; + } + } + export class RegExpParser { + constructor(options?: RegExpParser.Options); + parseLiteral(source: string, start?: number, end?: number): RegExpLiteral; + parseFlags(source: string, start?: number, end?: number): Flags; + parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern; + } +} + +declare module 'regexpp/validator' { + import { EcmaVersion } from "regexpp/ecma-versions"; + export namespace RegExpValidator { + interface Options { + strict?: boolean; + ecmaVersion?: EcmaVersion; + onLiteralEnter?(start: number): void; + onLiteralLeave?(start: number, end: number): void; + onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean): void; + onPatternEnter?(start: number): void; + onPatternLeave?(start: number, end: number): void; + onDisjunctionEnter?(start: number): void; + onDisjunctionLeave?(start: number, end: number): void; + onAlternativeEnter?(start: number, index: number): void; + onAlternativeLeave?(start: number, end: number, index: number): void; + onGroupEnter?(start: number): void; + onGroupLeave?(start: number, end: number): void; + onCapturingGroupEnter?(start: number, name: string | null): void; + onCapturingGroupLeave?(start: number, end: number, name: string | null): void; + onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void; + onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void; + onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void; + onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void; + onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void; + onAnyCharacterSet?(start: number, end: number, kind: "any"): void; + onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void; + onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void; + onCharacter?(start: number, end: number, value: number): void; + onBackreference?(start: number, end: number, ref: number | string): void; + onCharacterClassEnter?(start: number, negate: boolean): void; + onCharacterClassLeave?(start: number, end: number, negate: boolean): void; + onCharacterClassRange?(start: number, end: number, min: number, max: number): void; + } + } + export class RegExpValidator { + constructor(options?: RegExpValidator.Options); + validateLiteral(source: string, start?: number, end?: number): void; + validateFlags(source: string, start?: number, end?: number): void; + validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void; + } +} + +declare module 'regexpp/visitor' { + import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast"; + export class RegExpVisitor { + constructor(handlers: RegExpVisitor.Handlers); + visit(node: Node): void; + } + export namespace RegExpVisitor { + interface Handlers { + onAlternativeEnter?(node: Alternative): void; + onAlternativeLeave?(node: Alternative): void; + onAssertionEnter?(node: Assertion): void; + onAssertionLeave?(node: Assertion): void; + onBackreferenceEnter?(node: Backreference): void; + onBackreferenceLeave?(node: Backreference): void; + onCapturingGroupEnter?(node: CapturingGroup): void; + onCapturingGroupLeave?(node: CapturingGroup): void; + onCharacterEnter?(node: Character): void; + onCharacterLeave?(node: Character): void; + onCharacterClassEnter?(node: CharacterClass): void; + onCharacterClassLeave?(node: CharacterClass): void; + onCharacterClassRangeEnter?(node: CharacterClassRange): void; + onCharacterClassRangeLeave?(node: CharacterClassRange): void; + onCharacterSetEnter?(node: CharacterSet): void; + onCharacterSetLeave?(node: CharacterSet): void; + onFlagsEnter?(node: Flags): void; + onFlagsLeave?(node: Flags): void; + onGroupEnter?(node: Group): void; + onGroupLeave?(node: Group): void; + onPatternEnter?(node: Pattern): void; + onPatternLeave?(node: Pattern): void; + onQuantifierEnter?(node: Quantifier): void; + onQuantifierLeave?(node: Quantifier): void; + onRegExpLiteralEnter?(node: RegExpLiteral): void; + onRegExpLiteralLeave?(node: RegExpLiteral): void; + } + } +} + +declare module 'regexpp/ecma-versions' { + export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020; +} + diff --git a/node_modules/regexpp/index.js b/node_modules/regexpp/index.js new file mode 100644 index 0000000..12b4a5f --- /dev/null +++ b/node_modules/regexpp/index.js @@ -0,0 +1,2085 @@ +/*! @author Toru Nagashima */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + + + +var ast = /*#__PURE__*/Object.freeze({ + +}); + +let largeIdStartRanges = undefined; +let largeIdContinueRanges = undefined; +function isIdStart(cp) { + if (cp < 0x41) + return false; + if (cp < 0x5b) + return true; + if (cp < 0x61) + return false; + if (cp < 0x7b) + return true; + return isLargeIdStart(cp); +} +function isIdContinue(cp) { + if (cp < 0x30) + return false; + if (cp < 0x3a) + return true; + if (cp < 0x41) + return false; + if (cp < 0x5b) + return true; + if (cp === 0x5f) + return true; + if (cp < 0x61) + return false; + if (cp < 0x7b) + return true; + return isLargeIdStart(cp) || isLargeIdContinue(cp); +} +function isLargeIdStart(cp) { + return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges())); +} +function isLargeIdContinue(cp) { + return isInRange(cp, largeIdContinueRanges || + (largeIdContinueRanges = initLargeIdContinueRanges())); +} +function initLargeIdStartRanges() { + return restoreRanges("170 0 11 0 5 0 6 22 2 30 2 457 5 11 15 4 8 0 2 0 130 4 2 1 3 3 2 0 7 0 2 2 2 0 2 19 2 82 2 138 9 165 2 37 3 0 7 40 72 26 5 3 46 42 36 1 2 98 2 0 16 1 8 1 11 2 3 0 17 0 2 29 30 88 12 0 25 32 10 1 5 0 6 21 5 0 10 0 4 0 24 24 8 10 54 20 2 17 61 53 4 0 19 0 8 9 16 15 5 7 3 1 3 21 2 6 2 0 4 3 4 0 17 0 14 1 2 2 15 1 11 0 9 5 5 1 3 21 2 6 2 1 2 1 2 1 32 3 2 0 20 2 17 8 2 2 2 21 2 6 2 1 2 4 4 0 19 0 16 1 24 0 12 7 3 1 3 21 2 6 2 1 2 4 4 0 31 1 2 2 16 0 18 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 11 23 0 53 7 2 2 2 22 2 15 4 0 27 2 6 1 31 0 5 7 2 2 2 22 2 9 2 4 4 0 33 0 2 1 16 1 18 8 2 2 2 40 3 0 17 0 6 2 9 2 25 5 6 17 4 23 2 8 2 0 3 6 59 47 2 1 13 6 59 1 2 0 2 4 2 23 2 0 2 9 2 1 10 0 3 4 2 0 22 3 33 0 64 7 2 35 28 4 116 42 21 0 17 5 5 3 4 0 4 1 8 2 5 12 13 0 18 37 2 0 6 0 3 42 2 332 2 3 3 6 2 0 2 3 3 40 2 3 3 32 2 3 3 6 2 0 2 3 3 14 2 56 2 3 3 66 38 15 17 85 3 5 4 619 3 16 2 25 6 74 4 10 8 12 2 3 15 17 15 17 15 12 2 2 16 51 36 0 5 0 68 88 8 40 2 0 6 69 11 30 50 29 3 4 12 43 5 25 55 22 10 52 83 0 94 46 18 6 56 29 14 1 11 43 27 35 42 2 11 35 3 8 8 42 3 2 42 3 2 5 2 1 4 0 6 191 65 277 3 5 3 37 3 5 3 7 2 0 2 0 2 0 2 30 3 52 2 6 2 0 4 2 2 6 4 3 3 5 5 12 6 2 2 6 117 0 14 0 17 12 102 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 15 3 3 6 4 5 0 18 40 2680 46 2 46 2 132 7 3 4 1 13 37 2 0 6 0 3 55 8 0 17 22 10 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 551 2 26 8 8 4 3 4 5 85 5 4 2 89 2 3 6 42 2 93 18 31 49 15 513 6591 65 20988 4 1164 68 45 3 268 4 15 11 1 21 46 17 30 3 79 40 8 3 102 3 52 3 8 43 12 2 2 2 3 2 22 30 51 15 49 63 5 4 0 2 1 12 27 11 22 26 28 8 46 29 0 17 4 2 9 11 4 2 40 24 2 2 7 21 22 4 0 4 49 2 0 4 1 3 4 3 0 2 0 25 2 3 10 8 2 13 5 3 5 3 5 10 6 2 6 2 42 2 13 7 114 30 11171 13 22 5 48 8453 365 3 105 39 6 13 4 6 0 2 9 2 12 2 4 2 0 2 1 2 1 2 107 34 362 19 63 3 53 41 11 117 4 2 134 37 25 7 25 12 88 4 5 3 5 3 5 3 2 36 11 2 25 2 18 2 1 2 14 3 13 35 122 70 52 268 28 4 48 48 31 14 29 6 37 11 29 3 35 5 7 2 4 43 157 19 35 5 35 5 39 9 51 157 310 10 21 11 7 153 5 3 0 2 43 2 1 4 0 3 22 11 22 10 30 66 18 2 1 11 21 11 25 71 55 7 1 65 0 16 3 2 2 2 28 43 28 4 28 36 7 2 27 28 53 11 21 11 18 14 17 111 72 56 50 14 50 14 35 349 41 7 1 79 28 11 0 9 21 107 20 28 22 13 52 76 44 33 24 27 35 30 0 3 0 9 34 4 0 13 47 15 3 22 0 2 0 36 17 2 24 85 6 2 0 2 3 2 14 2 9 8 46 39 7 3 1 3 21 2 6 2 1 2 4 4 0 19 0 13 4 159 52 19 3 21 2 31 47 21 1 2 0 185 46 42 3 37 47 21 0 60 42 14 0 72 26 230 43 117 63 32 7 3 0 3 7 2 1 2 23 16 0 2 0 95 7 3 38 17 0 2 0 29 0 11 39 8 0 22 0 12 45 20 0 35 56 264 8 2 36 18 0 50 29 113 6 2 1 2 37 22 0 26 5 2 1 2 31 15 0 328 18 190 0 80 921 103 110 18 195 2749 1070 4050 582 8634 568 8 30 114 29 19 47 17 3 32 20 6 18 689 63 129 74 6 0 67 12 65 1 2 0 29 6135 9 1237 43 8 8952 286 50 2 18 3 9 395 2309 106 6 12 4 8 8 9 5991 84 2 70 2 1 3 0 3 1 3 3 2 11 2 0 2 6 2 64 2 3 3 7 2 6 2 27 2 3 2 4 2 0 4 6 2 339 3 24 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 7 2357 44 11 6 17 0 370 43 1301 196 60 67 8 0 1205 3 2 26 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 16 6 2 2 4 2 16 4421 42717 35 4148 12 221 3 5761 15 7472 3104 541 1507 4938"); +} +function initLargeIdContinueRanges() { + return restoreRanges("183 0 585 111 24 0 252 4 266 44 2 0 2 1 2 1 2 0 73 10 49 30 7 0 102 6 3 5 3 1 2 3 3 9 24 0 31 26 92 10 16 9 34 8 10 0 25 3 2 8 2 2 2 4 44 2 120 14 2 32 55 2 2 17 2 6 11 1 3 9 18 2 57 0 2 6 3 1 3 2 10 0 11 1 3 9 15 0 3 2 57 0 2 4 5 1 3 2 4 0 21 11 4 0 12 2 57 0 2 7 2 2 2 2 21 1 3 9 11 5 2 2 57 0 2 6 3 1 3 2 8 2 11 1 3 9 19 0 60 4 4 2 2 3 10 0 15 9 17 4 58 6 2 2 2 3 8 1 12 1 3 9 18 2 57 0 2 6 2 2 2 3 8 1 12 1 3 9 17 3 56 1 2 6 2 2 2 3 10 0 11 1 3 9 18 2 71 0 5 5 2 0 2 7 7 9 3 1 62 0 3 6 13 7 2 9 88 0 3 8 12 5 3 9 63 1 7 9 12 0 2 0 2 0 5 1 50 19 2 1 6 10 2 35 10 0 101 19 2 9 13 3 5 2 2 2 3 6 4 3 14 11 2 14 704 2 10 8 929 2 30 2 30 1 31 1 65 31 10 0 3 9 34 2 3 9 144 0 119 11 5 11 11 9 129 10 61 4 58 9 2 28 3 10 7 9 23 13 2 1 64 4 48 16 12 9 18 8 13 2 31 12 3 9 45 13 49 19 9 9 7 9 119 2 2 20 5 0 7 0 3 2 199 57 2 4 576 1 20 0 124 12 5 0 4 11 3071 2 142 0 97 31 555 5 106 1 30086 9 70 0 5 9 33 1 81 1 273 0 4 0 5 0 24 4 5 0 84 1 51 17 11 9 7 17 14 10 29 7 26 12 45 3 48 13 16 9 12 0 11 9 48 13 13 0 9 1 3 9 34 2 51 0 2 2 3 1 6 1 2 0 42 4 6 1 237 7 2 1 3 9 20261 0 738 15 17 15 4 1 25 2 193 9 38 0 702 0 227 0 150 4 294 9 1368 2 2 1 6 3 41 2 5 0 166 1 574 3 9 9 370 1 154 10 176 2 54 14 32 9 16 3 46 10 54 9 7 2 37 13 2 9 6 1 45 0 13 2 49 13 9 3 2 11 83 11 7 0 161 11 6 9 7 3 56 1 2 6 3 1 3 2 10 0 11 1 3 6 4 4 193 17 10 9 5 0 82 19 13 9 214 6 3 8 28 1 83 16 16 9 82 12 9 9 84 14 5 9 243 14 166 9 71 5 2 1 3 3 2 0 2 1 13 9 120 6 3 6 4 0 29 9 41 6 2 3 9 0 10 10 47 15 406 7 2 7 17 9 57 21 2 13 123 5 4 0 2 1 2 6 2 0 9 9 49 4 2 1 2 4 9 9 330 3 19306 9 135 4 60 6 26 9 1014 0 2 54 8 3 82 0 12 1 19628 1 5319 4 4 5 9 7 3 6 31 3 149 2 1418 49 513 54 5 49 9 0 15 0 23 4 2 14 1361 6 2 16 3 6 2 1 2 4 262 6 10 9 419 13 1495 6 110 6 6 9 4759 9 787719 239"); +} +function isInRange(cp, ranges) { + let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; + while (l < r) { + i = ((l + r) / 2) | 0; + min = ranges[2 * i]; + max = ranges[2 * i + 1]; + if (cp < min) { + r = i; + } + else if (cp > max) { + l = i + 1; + } + else { + return true; + } + } + return false; +} +function restoreRanges(data) { + let last = 0; + return data.split(" ").map(s => (last += parseInt(s, 10) | 0)); +} + +class DataSet { + constructor(raw2018, raw2019, raw2020) { + this._raw2018 = raw2018; + this._raw2019 = raw2019; + this._raw2020 = raw2020; + } + get es2018() { + return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); + } + get es2019() { + return (this._set2019 || (this._set2019 = new Set(this._raw2019.split(" ")))); + } + get es2020() { + return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); + } +} +const gcNameSet = new Set(["General_Category", "gc"]); +const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); +const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", ""); +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho"); +const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", ""); +function isValidUnicodeProperty(version, name, value) { + if (gcNameSet.has(name)) { + return version >= 2018 && gcValueSets.es2018.has(value); + } + if (scNameSet.has(name)) { + return ((version >= 2018 && scValueSets.es2018.has(value)) || + (version >= 2019 && scValueSets.es2019.has(value)) || + (version >= 2020 && scValueSets.es2020.has(value))); + } + return false; +} +function isValidLoneUnicodeProperty(version, value) { + return ((version >= 2018 && binPropertySets.es2018.has(value)) || + (version >= 2019 && binPropertySets.es2019.has(value))); +} + +const Backspace = 0x08; +const CharacterTabulation = 0x09; +const LineFeed = 0x0a; +const LineTabulation = 0x0b; +const FormFeed = 0x0c; +const CarriageReturn = 0x0d; +const ExclamationMark = 0x21; +const DollarSign = 0x24; +const LeftParenthesis = 0x28; +const RightParenthesis = 0x29; +const Asterisk = 0x2a; +const PlusSign = 0x2b; +const Comma = 0x2c; +const HyphenMinus = 0x2d; +const FullStop = 0x2e; +const Solidus = 0x2f; +const DigitZero = 0x30; +const DigitOne = 0x31; +const DigitSeven = 0x37; +const DigitNine = 0x39; +const Colon = 0x3a; +const LessThanSign = 0x3c; +const EqualsSign = 0x3d; +const GreaterThanSign = 0x3e; +const QuestionMark = 0x3f; +const LatinCapitalLetterA = 0x41; +const LatinCapitalLetterB = 0x42; +const LatinCapitalLetterD = 0x44; +const LatinCapitalLetterF = 0x46; +const LatinCapitalLetterP = 0x50; +const LatinCapitalLetterS = 0x53; +const LatinCapitalLetterW = 0x57; +const LatinCapitalLetterZ = 0x5a; +const LowLine = 0x5f; +const LatinSmallLetterA = 0x61; +const LatinSmallLetterB = 0x62; +const LatinSmallLetterC = 0x63; +const LatinSmallLetterD = 0x64; +const LatinSmallLetterF = 0x66; +const LatinSmallLetterG = 0x67; +const LatinSmallLetterI = 0x69; +const LatinSmallLetterK = 0x6b; +const LatinSmallLetterM = 0x6d; +const LatinSmallLetterN = 0x6e; +const LatinSmallLetterP = 0x70; +const LatinSmallLetterR = 0x72; +const LatinSmallLetterS = 0x73; +const LatinSmallLetterT = 0x74; +const LatinSmallLetterU = 0x75; +const LatinSmallLetterV = 0x76; +const LatinSmallLetterW = 0x77; +const LatinSmallLetterX = 0x78; +const LatinSmallLetterY = 0x79; +const LatinSmallLetterZ = 0x7a; +const LeftSquareBracket = 0x5b; +const ReverseSolidus = 0x5c; +const RightSquareBracket = 0x5d; +const CircumflexAccent = 0x5e; +const LeftCurlyBracket = 0x7b; +const VerticalLine = 0x7c; +const RightCurlyBracket = 0x7d; +const ZeroWidthNonJoiner = 0x200c; +const ZeroWidthJoiner = 0x200d; +const LineSeparator = 0x2028; +const ParagraphSeparator = 0x2029; +const MinCodePoint = 0x00; +const MaxCodePoint = 0x10ffff; +function isLatinLetter(code) { + return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) || + (code >= LatinSmallLetterA && code <= LatinSmallLetterZ)); +} +function isDecimalDigit(code) { + return code >= DigitZero && code <= DigitNine; +} +function isOctalDigit(code) { + return code >= DigitZero && code <= DigitSeven; +} +function isHexDigit(code) { + return ((code >= DigitZero && code <= DigitNine) || + (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) || + (code >= LatinSmallLetterA && code <= LatinSmallLetterF)); +} +function isLineTerminator(code) { + return (code === LineFeed || + code === CarriageReturn || + code === LineSeparator || + code === ParagraphSeparator); +} +function isValidUnicode(code) { + return code >= MinCodePoint && code <= MaxCodePoint; +} +function digitToInt(code) { + if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) { + return code - LatinSmallLetterA + 10; + } + if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) { + return code - LatinCapitalLetterA + 10; + } + return code - DigitZero; +} +function isLeadSurrogate(code) { + return code >= 0xd800 && code <= 0xdbff; +} +function isTrailSurrogate(code) { + return code >= 0xdc00 && code <= 0xdfff; +} +function combineSurrogatePair(lead, trail) { + return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000; +} + +const legacyImpl = { + at(s, end, i) { + return i < end ? s.charCodeAt(i) : -1; + }, + width(c) { + return 1; + }, +}; +const unicodeImpl = { + at(s, end, i) { + return i < end ? s.codePointAt(i) : -1; + }, + width(c) { + return c > 0xffff ? 2 : 1; + }, +}; +class Reader { + constructor() { + this._impl = legacyImpl; + this._s = ""; + this._i = 0; + this._end = 0; + this._cp1 = -1; + this._w1 = 1; + this._cp2 = -1; + this._w2 = 1; + this._cp3 = -1; + this._w3 = 1; + this._cp4 = -1; + } + get source() { + return this._s; + } + get index() { + return this._i; + } + get currentCodePoint() { + return this._cp1; + } + get nextCodePoint() { + return this._cp2; + } + get nextCodePoint2() { + return this._cp3; + } + get nextCodePoint3() { + return this._cp4; + } + reset(source, start, end, uFlag) { + this._impl = uFlag ? unicodeImpl : legacyImpl; + this._s = source; + this._end = end; + this.rewind(start); + } + rewind(index) { + const impl = this._impl; + this._i = index; + this._cp1 = impl.at(this._s, this._end, index); + this._w1 = impl.width(this._cp1); + this._cp2 = impl.at(this._s, this._end, index + this._w1); + this._w2 = impl.width(this._cp2); + this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2); + this._w3 = impl.width(this._cp3); + this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3); + } + advance() { + if (this._cp1 !== -1) { + const impl = this._impl; + this._i += this._w1; + this._cp1 = this._cp2; + this._w1 = this._w2; + this._cp2 = this._cp3; + this._w2 = impl.width(this._cp2); + this._cp3 = this._cp4; + this._w3 = impl.width(this._cp3); + this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3); + } + } + eat(cp) { + if (this._cp1 === cp) { + this.advance(); + return true; + } + return false; + } + eat2(cp1, cp2) { + if (this._cp1 === cp1 && this._cp2 === cp2) { + this.advance(); + this.advance(); + return true; + } + return false; + } + eat3(cp1, cp2, cp3) { + if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) { + this.advance(); + this.advance(); + this.advance(); + return true; + } + return false; + } +} + +class RegExpSyntaxError extends SyntaxError { + constructor(source, uFlag, index, message) { + if (source) { + if (!source.startsWith("/")) { + source = `/${source}/${uFlag ? "u" : ""}`; + } + source = `: ${source}`; + } + super(`Invalid regular expression${source}: ${message}`); + this.index = index; + } +} + +function isSyntaxCharacter(cp) { + return (cp === CircumflexAccent || + cp === DollarSign || + cp === ReverseSolidus || + cp === FullStop || + cp === Asterisk || + cp === PlusSign || + cp === QuestionMark || + cp === LeftParenthesis || + cp === RightParenthesis || + cp === LeftSquareBracket || + cp === RightSquareBracket || + cp === LeftCurlyBracket || + cp === RightCurlyBracket || + cp === VerticalLine); +} +function isRegExpIdentifierStart(cp) { + return isIdStart(cp) || cp === DollarSign || cp === LowLine; +} +function isRegExpIdentifierPart(cp) { + return (isIdContinue(cp) || + cp === DollarSign || + cp === LowLine || + cp === ZeroWidthNonJoiner || + cp === ZeroWidthJoiner); +} +function isUnicodePropertyNameCharacter(cp) { + return isLatinLetter(cp) || cp === LowLine; +} +function isUnicodePropertyValueCharacter(cp) { + return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp); +} +class RegExpValidator { + constructor(options) { + this._reader = new Reader(); + this._uFlag = false; + this._nFlag = false; + this._lastIntValue = 0; + this._lastMinValue = 0; + this._lastMaxValue = 0; + this._lastStrValue = ""; + this._lastKeyValue = ""; + this._lastValValue = ""; + this._lastAssertionIsQuantifiable = false; + this._numCapturingParens = 0; + this._groupNames = new Set(); + this._backreferenceNames = new Set(); + this._options = options || {}; + } + validateLiteral(source, start = 0, end = source.length) { + this._uFlag = this._nFlag = false; + this.reset(source, start, end); + this.onLiteralEnter(start); + if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) { + const flagStart = this.index; + const uFlag = source.includes("u", flagStart); + this.validateFlags(source, flagStart, end); + this.validatePattern(source, start + 1, flagStart - 1, uFlag); + } + else if (start >= end) { + this.raise("Empty"); + } + else { + const c = String.fromCodePoint(this.currentCodePoint); + this.raise(`Unexpected character '${c}'`); + } + this.onLiteralLeave(start, end); + } + validateFlags(source, start = 0, end = source.length) { + const existingFlags = new Set(); + let global = false; + let ignoreCase = false; + let multiline = false; + let sticky = false; + let unicode = false; + let dotAll = false; + for (let i = start; i < end; ++i) { + const flag = source.charCodeAt(i); + if (existingFlags.has(flag)) { + this.raise(`Duplicated flag '${source[i]}'`); + } + existingFlags.add(flag); + if (flag === LatinSmallLetterG) { + global = true; + } + else if (flag === LatinSmallLetterI) { + ignoreCase = true; + } + else if (flag === LatinSmallLetterM) { + multiline = true; + } + else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) { + unicode = true; + } + else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) { + sticky = true; + } + else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { + dotAll = true; + } + else { + this.raise(`Invalid flag '${source[i]}'`); + } + } + this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + } + validatePattern(source, start = 0, end = source.length, uFlag = false) { + this._uFlag = uFlag && this.ecmaVersion >= 2015; + this._nFlag = uFlag && this.ecmaVersion >= 2018; + this.reset(source, start, end); + this.consumePattern(); + if (!this._nFlag && + this.ecmaVersion >= 2018 && + this._groupNames.size > 0) { + this._nFlag = true; + this.rewind(start); + this.consumePattern(); + } + } + get strict() { + return Boolean(this._options.strict || this._uFlag); + } + get ecmaVersion() { + return this._options.ecmaVersion || 2020; + } + onLiteralEnter(start) { + if (this._options.onLiteralEnter) { + this._options.onLiteralEnter(start); + } + } + onLiteralLeave(start, end) { + if (this._options.onLiteralLeave) { + this._options.onLiteralLeave(start, end); + } + } + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + if (this._options.onFlags) { + this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + } + } + onPatternEnter(start) { + if (this._options.onPatternEnter) { + this._options.onPatternEnter(start); + } + } + onPatternLeave(start, end) { + if (this._options.onPatternLeave) { + this._options.onPatternLeave(start, end); + } + } + onDisjunctionEnter(start) { + if (this._options.onDisjunctionEnter) { + this._options.onDisjunctionEnter(start); + } + } + onDisjunctionLeave(start, end) { + if (this._options.onDisjunctionLeave) { + this._options.onDisjunctionLeave(start, end); + } + } + onAlternativeEnter(start, index) { + if (this._options.onAlternativeEnter) { + this._options.onAlternativeEnter(start, index); + } + } + onAlternativeLeave(start, end, index) { + if (this._options.onAlternativeLeave) { + this._options.onAlternativeLeave(start, end, index); + } + } + onGroupEnter(start) { + if (this._options.onGroupEnter) { + this._options.onGroupEnter(start); + } + } + onGroupLeave(start, end) { + if (this._options.onGroupLeave) { + this._options.onGroupLeave(start, end); + } + } + onCapturingGroupEnter(start, name) { + if (this._options.onCapturingGroupEnter) { + this._options.onCapturingGroupEnter(start, name); + } + } + onCapturingGroupLeave(start, end, name) { + if (this._options.onCapturingGroupLeave) { + this._options.onCapturingGroupLeave(start, end, name); + } + } + onQuantifier(start, end, min, max, greedy) { + if (this._options.onQuantifier) { + this._options.onQuantifier(start, end, min, max, greedy); + } + } + onLookaroundAssertionEnter(start, kind, negate) { + if (this._options.onLookaroundAssertionEnter) { + this._options.onLookaroundAssertionEnter(start, kind, negate); + } + } + onLookaroundAssertionLeave(start, end, kind, negate) { + if (this._options.onLookaroundAssertionLeave) { + this._options.onLookaroundAssertionLeave(start, end, kind, negate); + } + } + onEdgeAssertion(start, end, kind) { + if (this._options.onEdgeAssertion) { + this._options.onEdgeAssertion(start, end, kind); + } + } + onWordBoundaryAssertion(start, end, kind, negate) { + if (this._options.onWordBoundaryAssertion) { + this._options.onWordBoundaryAssertion(start, end, kind, negate); + } + } + onAnyCharacterSet(start, end, kind) { + if (this._options.onAnyCharacterSet) { + this._options.onAnyCharacterSet(start, end, kind); + } + } + onEscapeCharacterSet(start, end, kind, negate) { + if (this._options.onEscapeCharacterSet) { + this._options.onEscapeCharacterSet(start, end, kind, negate); + } + } + onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { + if (this._options.onUnicodePropertyCharacterSet) { + this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate); + } + } + onCharacter(start, end, value) { + if (this._options.onCharacter) { + this._options.onCharacter(start, end, value); + } + } + onBackreference(start, end, ref) { + if (this._options.onBackreference) { + this._options.onBackreference(start, end, ref); + } + } + onCharacterClassEnter(start, negate) { + if (this._options.onCharacterClassEnter) { + this._options.onCharacterClassEnter(start, negate); + } + } + onCharacterClassLeave(start, end, negate) { + if (this._options.onCharacterClassLeave) { + this._options.onCharacterClassLeave(start, end, negate); + } + } + onCharacterClassRange(start, end, min, max) { + if (this._options.onCharacterClassRange) { + this._options.onCharacterClassRange(start, end, min, max); + } + } + get source() { + return this._reader.source; + } + get index() { + return this._reader.index; + } + get currentCodePoint() { + return this._reader.currentCodePoint; + } + get nextCodePoint() { + return this._reader.nextCodePoint; + } + get nextCodePoint2() { + return this._reader.nextCodePoint2; + } + get nextCodePoint3() { + return this._reader.nextCodePoint3; + } + reset(source, start, end) { + this._reader.reset(source, start, end, this._uFlag); + } + rewind(index) { + this._reader.rewind(index); + } + advance() { + this._reader.advance(); + } + eat(cp) { + return this._reader.eat(cp); + } + eat2(cp1, cp2) { + return this._reader.eat2(cp1, cp2); + } + eat3(cp1, cp2, cp3) { + return this._reader.eat3(cp1, cp2, cp3); + } + raise(message) { + throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message); + } + eatRegExpBody() { + const start = this.index; + let inClass = false; + let escaped = false; + for (;;) { + const cp = this.currentCodePoint; + if (cp === -1 || isLineTerminator(cp)) { + const kind = inClass ? "character class" : "regular expression"; + this.raise(`Unterminated ${kind}`); + } + if (escaped) { + escaped = false; + } + else if (cp === ReverseSolidus) { + escaped = true; + } + else if (cp === LeftSquareBracket) { + inClass = true; + } + else if (cp === RightSquareBracket) { + inClass = false; + } + else if ((cp === Solidus && !inClass) || + (cp === Asterisk && this.index === start)) { + break; + } + this.advance(); + } + return this.index !== start; + } + consumePattern() { + const start = this.index; + this._numCapturingParens = this.countCapturingParens(); + this._groupNames.clear(); + this._backreferenceNames.clear(); + this.onPatternEnter(start); + this.consumeDisjunction(); + const cp = this.currentCodePoint; + if (this.currentCodePoint !== -1) { + if (cp === RightParenthesis) { + this.raise("Unmatched ')'"); + } + if (cp === ReverseSolidus) { + this.raise("\\ at end of pattern"); + } + if (cp === RightSquareBracket || cp === RightCurlyBracket) { + this.raise("Lone quantifier brackets"); + } + const c = String.fromCodePoint(cp); + this.raise(`Unexpected character '${c}'`); + } + for (const name of this._backreferenceNames) { + if (!this._groupNames.has(name)) { + this.raise("Invalid named capture referenced"); + } + } + this.onPatternLeave(start, this.index); + } + countCapturingParens() { + const start = this.index; + let inClass = false; + let escaped = false; + let count = 0; + let cp = 0; + while ((cp = this.currentCodePoint) !== -1) { + if (escaped) { + escaped = false; + } + else if (cp === ReverseSolidus) { + escaped = true; + } + else if (cp === LeftSquareBracket) { + inClass = true; + } + else if (cp === RightSquareBracket) { + inClass = false; + } + else if (cp === LeftParenthesis && + !inClass && + (this.nextCodePoint !== QuestionMark || + (this.nextCodePoint2 === LessThanSign && + this.nextCodePoint3 !== EqualsSign && + this.nextCodePoint3 !== ExclamationMark))) { + count += 1; + } + this.advance(); + } + this.rewind(start); + return count; + } + consumeDisjunction() { + const start = this.index; + let i = 0; + this.onDisjunctionEnter(start); + do { + this.consumeAlternative(i++); + } while (this.eat(VerticalLine)); + if (this.consumeQuantifier(true)) { + this.raise("Nothing to repeat"); + } + if (this.eat(LeftCurlyBracket)) { + this.raise("Lone quantifier brackets"); + } + this.onDisjunctionLeave(start, this.index); + } + consumeAlternative(i) { + const start = this.index; + this.onAlternativeEnter(start, i); + while (this.currentCodePoint !== -1 && this.consumeTerm()) { + } + this.onAlternativeLeave(start, this.index, i); + } + consumeTerm() { + if (this._uFlag || this.strict) { + return (this.consumeAssertion() || + (this.consumeAtom() && this.consumeOptionalQuantifier())); + } + return ((this.consumeAssertion() && + (!this._lastAssertionIsQuantifiable || + this.consumeOptionalQuantifier())) || + (this.consumeExtendedAtom() && this.consumeOptionalQuantifier())); + } + consumeOptionalQuantifier() { + this.consumeQuantifier(); + return true; + } + consumeAssertion() { + const start = this.index; + this._lastAssertionIsQuantifiable = false; + if (this.eat(CircumflexAccent)) { + this.onEdgeAssertion(start, this.index, "start"); + return true; + } + if (this.eat(DollarSign)) { + this.onEdgeAssertion(start, this.index, "end"); + return true; + } + if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) { + this.onWordBoundaryAssertion(start, this.index, "word", true); + return true; + } + if (this.eat2(ReverseSolidus, LatinSmallLetterB)) { + this.onWordBoundaryAssertion(start, this.index, "word", false); + return true; + } + if (this.eat2(LeftParenthesis, QuestionMark)) { + const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign); + let negate = false; + if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) { + const kind = lookbehind ? "lookbehind" : "lookahead"; + this.onLookaroundAssertionEnter(start, kind, negate); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this._lastAssertionIsQuantifiable = !lookbehind && !this.strict; + this.onLookaroundAssertionLeave(start, this.index, kind, negate); + return true; + } + this.rewind(start); + } + return false; + } + consumeQuantifier(noConsume = false) { + const start = this.index; + let min = 0; + let max = 0; + let greedy = false; + if (this.eat(Asterisk)) { + min = 0; + max = Number.POSITIVE_INFINITY; + } + else if (this.eat(PlusSign)) { + min = 1; + max = Number.POSITIVE_INFINITY; + } + else if (this.eat(QuestionMark)) { + min = 0; + max = 1; + } + else if (this.eatBracedQuantifier(noConsume)) { + min = this._lastMinValue; + max = this._lastMaxValue; + } + else { + return false; + } + greedy = !this.eat(QuestionMark); + if (!noConsume) { + this.onQuantifier(start, this.index, min, max, greedy); + } + return true; + } + eatBracedQuantifier(noError) { + const start = this.index; + if (this.eat(LeftCurlyBracket)) { + this._lastMinValue = 0; + this._lastMaxValue = Number.POSITIVE_INFINITY; + if (this.eatDecimalDigits()) { + this._lastMinValue = this._lastMaxValue = this._lastIntValue; + if (this.eat(Comma)) { + this._lastMaxValue = this.eatDecimalDigits() + ? this._lastIntValue + : Number.POSITIVE_INFINITY; + } + if (this.eat(RightCurlyBracket)) { + if (!noError && this._lastMaxValue < this._lastMinValue) { + this.raise("numbers out of order in {} quantifier"); + } + return true; + } + } + if (!noError && (this._uFlag || this.strict)) { + this.raise("Incomplete quantifier"); + } + this.rewind(start); + } + return false; + } + consumeAtom() { + return (this.consumePatternCharacter() || + this.consumeDot() || + this.consumeReverseSolidusAtomEscape() || + this.consumeCharacterClass() || + this.consumeUncapturingGroup() || + this.consumeCapturingGroup()); + } + consumeDot() { + if (this.eat(FullStop)) { + this.onAnyCharacterSet(this.index - 1, this.index, "any"); + return true; + } + return false; + } + consumeReverseSolidusAtomEscape() { + const start = this.index; + if (this.eat(ReverseSolidus)) { + if (this.consumeAtomEscape()) { + return true; + } + this.rewind(start); + } + return false; + } + consumeUncapturingGroup() { + const start = this.index; + if (this.eat3(LeftParenthesis, QuestionMark, Colon)) { + this.onGroupEnter(start); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this.onGroupLeave(start, this.index); + return true; + } + return false; + } + consumeCapturingGroup() { + const start = this.index; + if (this.eat(LeftParenthesis)) { + let name = null; + if (this.ecmaVersion >= 2018) { + if (this.consumeGroupSpecifier()) { + name = this._lastStrValue; + } + } + else if (this.currentCodePoint === QuestionMark) { + this.raise("Invalid group"); + } + this.onCapturingGroupEnter(start, name); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this.onCapturingGroupLeave(start, this.index, name); + return true; + } + return false; + } + consumeExtendedAtom() { + return (this.consumeDot() || + this.consumeReverseSolidusAtomEscape() || + this.consumeReverseSolidusFollowedByC() || + this.consumeCharacterClass() || + this.consumeUncapturingGroup() || + this.consumeCapturingGroup() || + this.consumeInvalidBracedQuantifier() || + this.consumeExtendedPatternCharacter()); + } + consumeReverseSolidusFollowedByC() { + const start = this.index; + if (this.currentCodePoint === ReverseSolidus && + this.nextCodePoint === LatinSmallLetterC) { + this._lastIntValue = this.currentCodePoint; + this.advance(); + this.onCharacter(start, this.index, ReverseSolidus); + return true; + } + return false; + } + consumeInvalidBracedQuantifier() { + if (this.eatBracedQuantifier(true)) { + this.raise("Nothing to repeat"); + } + return false; + } + consumePatternCharacter() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && !isSyntaxCharacter(cp)) { + this.advance(); + this.onCharacter(start, this.index, cp); + return true; + } + return false; + } + consumeExtendedPatternCharacter() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && + cp !== CircumflexAccent && + cp !== DollarSign && + cp !== ReverseSolidus && + cp !== FullStop && + cp !== Asterisk && + cp !== PlusSign && + cp !== QuestionMark && + cp !== LeftParenthesis && + cp !== RightParenthesis && + cp !== LeftSquareBracket && + cp !== VerticalLine) { + this.advance(); + this.onCharacter(start, this.index, cp); + return true; + } + return false; + } + consumeGroupSpecifier() { + if (this.eat(QuestionMark)) { + if (this.eatGroupName()) { + if (!this._groupNames.has(this._lastStrValue)) { + this._groupNames.add(this._lastStrValue); + return true; + } + this.raise("Duplicate capture group name"); + } + this.raise("Invalid group"); + } + return false; + } + consumeAtomEscape() { + if (this.consumeBackreference() || + this.consumeCharacterClassEscape() || + this.consumeCharacterEscape() || + (this._nFlag && this.consumeKGroupName())) { + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + return false; + } + consumeBackreference() { + const start = this.index; + if (this.eatDecimalEscape()) { + const n = this._lastIntValue; + if (n <= this._numCapturingParens) { + this.onBackreference(start - 1, this.index, n); + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + consumeCharacterClassEscape() { + const start = this.index; + if (this.eat(LatinSmallLetterD)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "digit", false); + return true; + } + if (this.eat(LatinCapitalLetterD)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "digit", true); + return true; + } + if (this.eat(LatinSmallLetterS)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "space", false); + return true; + } + if (this.eat(LatinCapitalLetterS)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "space", true); + return true; + } + if (this.eat(LatinSmallLetterW)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "word", false); + return true; + } + if (this.eat(LatinCapitalLetterW)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "word", true); + return true; + } + let negate = false; + if (this._uFlag && + this.ecmaVersion >= 2018 && + (this.eat(LatinSmallLetterP) || + (negate = this.eat(LatinCapitalLetterP)))) { + this._lastIntValue = -1; + if (this.eat(LeftCurlyBracket) && + this.eatUnicodePropertyValueExpression() && + this.eat(RightCurlyBracket)) { + this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate); + return true; + } + this.raise("Invalid property name"); + } + return false; + } + consumeCharacterEscape() { + const start = this.index; + if (this.eatControlEscape() || + this.eatCControlLetter() || + this.eatZero() || + this.eatHexEscapeSequence() || + this.eatRegExpUnicodeEscapeSequence() || + (!this.strict && + !this._uFlag && + this.eatLegacyOctalEscapeSequence()) || + this.eatIdentityEscape()) { + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + return false; + } + consumeKGroupName() { + const start = this.index; + if (this.eat(LatinSmallLetterK)) { + if (this.eatGroupName()) { + const groupName = this._lastStrValue; + this._backreferenceNames.add(groupName); + this.onBackreference(start - 1, this.index, groupName); + return true; + } + this.raise("Invalid named reference"); + } + return false; + } + consumeCharacterClass() { + const start = this.index; + if (this.eat(LeftSquareBracket)) { + const negate = this.eat(CircumflexAccent); + this.onCharacterClassEnter(start, negate); + this.consumeClassRanges(); + if (!this.eat(RightSquareBracket)) { + this.raise("Unterminated character class"); + } + this.onCharacterClassLeave(start, this.index, negate); + return true; + } + return false; + } + consumeClassRanges() { + const strict = this.strict || this._uFlag; + for (;;) { + const rangeStart = this.index; + if (!this.consumeClassAtom()) { + break; + } + const min = this._lastIntValue; + if (!this.eat(HyphenMinus)) { + continue; + } + this.onCharacter(this.index - 1, this.index, HyphenMinus); + if (!this.consumeClassAtom()) { + break; + } + const max = this._lastIntValue; + if (min === -1 || max === -1) { + if (strict) { + this.raise("Invalid character class"); + } + continue; + } + if (min > max) { + this.raise("Range out of order in character class"); + } + this.onCharacterClassRange(rangeStart, this.index, min, max); + } + } + consumeClassAtom() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && cp !== ReverseSolidus && cp !== RightSquareBracket) { + this.advance(); + this._lastIntValue = cp; + this.onCharacter(start, this.index, this._lastIntValue); + return true; + } + if (this.eat(ReverseSolidus)) { + if (this.consumeClassEscape()) { + return true; + } + if (!this.strict && this.currentCodePoint === LatinSmallLetterC) { + this._lastIntValue = ReverseSolidus; + this.onCharacter(start, this.index, this._lastIntValue); + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + consumeClassEscape() { + const start = this.index; + if (this.eat(LatinSmallLetterB)) { + this._lastIntValue = Backspace; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + if (this._uFlag && this.eat(HyphenMinus)) { + this._lastIntValue = HyphenMinus; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + let cp = 0; + if (!this.strict && + !this._uFlag && + this.currentCodePoint === LatinSmallLetterC && + (isDecimalDigit((cp = this.nextCodePoint)) || cp === LowLine)) { + this.advance(); + this.advance(); + this._lastIntValue = cp % 0x20; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + return (this.consumeCharacterClassEscape() || this.consumeCharacterEscape()); + } + eatGroupName() { + if (this.eat(LessThanSign)) { + if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) { + return true; + } + this.raise("Invalid capture group name"); + } + return false; + } + eatRegExpIdentifierName() { + if (this.eatRegExpIdentifierStart()) { + this._lastStrValue = String.fromCodePoint(this._lastIntValue); + while (this.eatRegExpIdentifierPart()) { + this._lastStrValue += String.fromCodePoint(this._lastIntValue); + } + return true; + } + return false; + } + eatRegExpIdentifierStart() { + const start = this.index; + const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; + let cp = this.currentCodePoint; + this.advance(); + if (cp === ReverseSolidus && + this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { + cp = this._lastIntValue; + } + else if (forceUFlag && + isLeadSurrogate(cp) && + isTrailSurrogate(this.currentCodePoint)) { + cp = combineSurrogatePair(cp, this.currentCodePoint); + this.advance(); + } + if (isRegExpIdentifierStart(cp)) { + this._lastIntValue = cp; + return true; + } + if (this.index !== start) { + this.rewind(start); + } + return false; + } + eatRegExpIdentifierPart() { + const start = this.index; + const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; + let cp = this.currentCodePoint; + this.advance(); + if (cp === ReverseSolidus && + this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { + cp = this._lastIntValue; + } + else if (forceUFlag && + isLeadSurrogate(cp) && + isTrailSurrogate(this.currentCodePoint)) { + cp = combineSurrogatePair(cp, this.currentCodePoint); + this.advance(); + } + if (isRegExpIdentifierPart(cp)) { + this._lastIntValue = cp; + return true; + } + if (this.index !== start) { + this.rewind(start); + } + return false; + } + eatCControlLetter() { + const start = this.index; + if (this.eat(LatinSmallLetterC)) { + if (this.eatControlLetter()) { + return true; + } + this.rewind(start); + } + return false; + } + eatZero() { + if (this.currentCodePoint === DigitZero && + !isDecimalDigit(this.nextCodePoint)) { + this._lastIntValue = 0; + this.advance(); + return true; + } + return false; + } + eatControlEscape() { + if (this.eat(LatinSmallLetterF)) { + this._lastIntValue = FormFeed; + return true; + } + if (this.eat(LatinSmallLetterN)) { + this._lastIntValue = LineFeed; + return true; + } + if (this.eat(LatinSmallLetterR)) { + this._lastIntValue = CarriageReturn; + return true; + } + if (this.eat(LatinSmallLetterT)) { + this._lastIntValue = CharacterTabulation; + return true; + } + if (this.eat(LatinSmallLetterV)) { + this._lastIntValue = LineTabulation; + return true; + } + return false; + } + eatControlLetter() { + const cp = this.currentCodePoint; + if (isLatinLetter(cp)) { + this.advance(); + this._lastIntValue = cp % 0x20; + return true; + } + return false; + } + eatRegExpUnicodeEscapeSequence(forceUFlag = false) { + const start = this.index; + const uFlag = forceUFlag || this._uFlag; + if (this.eat(LatinSmallLetterU)) { + if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) || + this.eatFixedHexDigits(4) || + (uFlag && this.eatRegExpUnicodeCodePointEscape())) { + return true; + } + if (this.strict || uFlag) { + this.raise("Invalid unicode escape"); + } + this.rewind(start); + } + return false; + } + eatRegExpUnicodeSurrogatePairEscape() { + const start = this.index; + if (this.eatFixedHexDigits(4)) { + const lead = this._lastIntValue; + if (isLeadSurrogate(lead) && + this.eat(ReverseSolidus) && + this.eat(LatinSmallLetterU) && + this.eatFixedHexDigits(4)) { + const trail = this._lastIntValue; + if (isTrailSurrogate(trail)) { + this._lastIntValue = combineSurrogatePair(lead, trail); + return true; + } + } + this.rewind(start); + } + return false; + } + eatRegExpUnicodeCodePointEscape() { + const start = this.index; + if (this.eat(LeftCurlyBracket) && + this.eatHexDigits() && + this.eat(RightCurlyBracket) && + isValidUnicode(this._lastIntValue)) { + return true; + } + this.rewind(start); + return false; + } + eatIdentityEscape() { + const cp = this.currentCodePoint; + if (this.isValidIdentityEscape(cp)) { + this._lastIntValue = cp; + this.advance(); + return true; + } + return false; + } + isValidIdentityEscape(cp) { + if (cp === -1) { + return false; + } + if (this._uFlag) { + return isSyntaxCharacter(cp) || cp === Solidus; + } + if (this.strict) { + return !isIdContinue(cp); + } + if (this._nFlag) { + return !(cp === LatinSmallLetterC || cp === LatinSmallLetterK); + } + return cp !== LatinSmallLetterC; + } + eatDecimalEscape() { + this._lastIntValue = 0; + let cp = this.currentCodePoint; + if (cp >= DigitOne && cp <= DigitNine) { + do { + this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero); + this.advance(); + } while ((cp = this.currentCodePoint) >= DigitZero && + cp <= DigitNine); + return true; + } + return false; + } + eatUnicodePropertyValueExpression() { + const start = this.index; + if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) { + this._lastKeyValue = this._lastStrValue; + if (this.eatUnicodePropertyValue()) { + this._lastValValue = this._lastStrValue; + if (isValidUnicodeProperty(this.ecmaVersion, this._lastKeyValue, this._lastValValue)) { + return true; + } + this.raise("Invalid property name"); + } + } + this.rewind(start); + if (this.eatLoneUnicodePropertyNameOrValue()) { + const nameOrValue = this._lastStrValue; + if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) { + this._lastKeyValue = "General_Category"; + this._lastValValue = nameOrValue; + return true; + } + if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) { + this._lastKeyValue = nameOrValue; + this._lastValValue = ""; + return true; + } + this.raise("Invalid property name"); + } + return false; + } + eatUnicodePropertyName() { + this._lastStrValue = ""; + while (isUnicodePropertyNameCharacter(this.currentCodePoint)) { + this._lastStrValue += String.fromCodePoint(this.currentCodePoint); + this.advance(); + } + return this._lastStrValue !== ""; + } + eatUnicodePropertyValue() { + this._lastStrValue = ""; + while (isUnicodePropertyValueCharacter(this.currentCodePoint)) { + this._lastStrValue += String.fromCodePoint(this.currentCodePoint); + this.advance(); + } + return this._lastStrValue !== ""; + } + eatLoneUnicodePropertyNameOrValue() { + return this.eatUnicodePropertyValue(); + } + eatHexEscapeSequence() { + const start = this.index; + if (this.eat(LatinSmallLetterX)) { + if (this.eatFixedHexDigits(2)) { + return true; + } + if (this._uFlag || this.strict) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + eatDecimalDigits() { + const start = this.index; + this._lastIntValue = 0; + while (isDecimalDigit(this.currentCodePoint)) { + this._lastIntValue = + 10 * this._lastIntValue + digitToInt(this.currentCodePoint); + this.advance(); + } + return this.index !== start; + } + eatHexDigits() { + const start = this.index; + this._lastIntValue = 0; + while (isHexDigit(this.currentCodePoint)) { + this._lastIntValue = + 16 * this._lastIntValue + digitToInt(this.currentCodePoint); + this.advance(); + } + return this.index !== start; + } + eatLegacyOctalEscapeSequence() { + if (this.eatOctalDigit()) { + const n1 = this._lastIntValue; + if (this.eatOctalDigit()) { + const n2 = this._lastIntValue; + if (n1 <= 3 && this.eatOctalDigit()) { + this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue; + } + else { + this._lastIntValue = n1 * 8 + n2; + } + } + else { + this._lastIntValue = n1; + } + return true; + } + return false; + } + eatOctalDigit() { + const cp = this.currentCodePoint; + if (isOctalDigit(cp)) { + this.advance(); + this._lastIntValue = cp - DigitZero; + return true; + } + this._lastIntValue = 0; + return false; + } + eatFixedHexDigits(length) { + const start = this.index; + this._lastIntValue = 0; + for (let i = 0; i < length; ++i) { + const cp = this.currentCodePoint; + if (!isHexDigit(cp)) { + this.rewind(start); + return false; + } + this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp); + this.advance(); + } + return true; + } +} + +const DummyPattern = {}; +const DummyFlags = {}; +const DummyCapturingGroup = {}; +class RegExpParserState { + constructor(options) { + this._node = DummyPattern; + this._flags = DummyFlags; + this._backreferences = []; + this._capturingGroups = []; + this.source = ""; + this.strict = Boolean(options && options.strict); + this.ecmaVersion = (options && options.ecmaVersion) || 2020; + } + get pattern() { + if (this._node.type !== "Pattern") { + throw new Error("UnknownError"); + } + return this._node; + } + get flags() { + if (this._flags.type !== "Flags") { + throw new Error("UnknownError"); + } + return this._flags; + } + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + this._flags = { + type: "Flags", + parent: null, + start, + end, + raw: this.source.slice(start, end), + global, + ignoreCase, + multiline, + unicode, + sticky, + dotAll, + }; + } + onPatternEnter(start) { + this._node = { + type: "Pattern", + parent: null, + start, + end: start, + raw: "", + alternatives: [], + }; + this._backreferences.length = 0; + this._capturingGroups.length = 0; + } + onPatternLeave(start, end) { + this._node.end = end; + this._node.raw = this.source.slice(start, end); + for (const reference of this._backreferences) { + const ref = reference.ref; + const group = typeof ref === "number" + ? this._capturingGroups[ref - 1] + : this._capturingGroups.find(g => g.name === ref); + reference.resolved = group; + group.references.push(reference); + } + } + onAlternativeEnter(start) { + const parent = this._node; + if (parent.type !== "Assertion" && + parent.type !== "CapturingGroup" && + parent.type !== "Group" && + parent.type !== "Pattern") { + throw new Error("UnknownError"); + } + this._node = { + type: "Alternative", + parent, + start, + end: start, + raw: "", + elements: [], + }; + parent.alternatives.push(this._node); + } + onAlternativeLeave(start, end) { + const node = this._node; + if (node.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onGroupEnter(start) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "Group", + parent, + start, + end: start, + raw: "", + alternatives: [], + }; + parent.elements.push(this._node); + } + onGroupLeave(start, end) { + const node = this._node; + if (node.type !== "Group" || node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onCapturingGroupEnter(start, name) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "CapturingGroup", + parent, + start, + end: start, + raw: "", + name, + alternatives: [], + references: [], + }; + parent.elements.push(this._node); + this._capturingGroups.push(this._node); + } + onCapturingGroupLeave(start, end) { + const node = this._node; + if (node.type !== "CapturingGroup" || + node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onQuantifier(start, end, min, max, greedy) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const element = parent.elements.pop(); + if (element == null || + element.type === "Quantifier" || + (element.type === "Assertion" && element.kind !== "lookahead")) { + throw new Error("UnknownError"); + } + const node = { + type: "Quantifier", + parent, + start: element.start, + end, + raw: this.source.slice(element.start, end), + min, + max, + greedy, + element, + }; + parent.elements.push(node); + element.parent = node; + } + onLookaroundAssertionEnter(start, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const node = (this._node = { + type: "Assertion", + parent, + start, + end: start, + raw: "", + kind, + negate, + alternatives: [], + }); + parent.elements.push(node); + } + onLookaroundAssertionLeave(start, end) { + const node = this._node; + if (node.type !== "Assertion" || node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onEdgeAssertion(start, end, kind) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Assertion", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + }); + } + onWordBoundaryAssertion(start, end, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Assertion", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + negate, + }); + } + onAnyCharacterSet(start, end, kind) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + }); + } + onEscapeCharacterSet(start, end, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + negate, + }); + } + onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + key, + value, + negate, + }); + } + onCharacter(start, end, value) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Character", + parent, + start, + end, + raw: this.source.slice(start, end), + value, + }); + } + onBackreference(start, end, ref) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const node = { + type: "Backreference", + parent, + start, + end, + raw: this.source.slice(start, end), + ref, + resolved: DummyCapturingGroup, + }; + parent.elements.push(node); + this._backreferences.push(node); + } + onCharacterClassEnter(start, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "CharacterClass", + parent, + start, + end: start, + raw: "", + negate, + elements: [], + }; + parent.elements.push(this._node); + } + onCharacterClassLeave(start, end) { + const node = this._node; + if (node.type !== "CharacterClass" || + node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onCharacterClassRange(start, end) { + const parent = this._node; + if (parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + const elements = parent.elements; + const max = elements.pop(); + const hyphen = elements.pop(); + const min = elements.pop(); + if (!min || + !max || + !hyphen || + min.type !== "Character" || + max.type !== "Character" || + hyphen.type !== "Character" || + hyphen.value !== HyphenMinus) { + throw new Error("UnknownError"); + } + const node = { + type: "CharacterClassRange", + parent, + start, + end, + raw: this.source.slice(start, end), + min, + max, + }; + min.parent = node; + max.parent = node; + elements.push(node); + } +} +class RegExpParser { + constructor(options) { + this._state = new RegExpParserState(options); + this._validator = new RegExpValidator(this._state); + } + parseLiteral(source, start = 0, end = source.length) { + this._state.source = source; + this._validator.validateLiteral(source, start, end); + const pattern = this._state.pattern; + const flags = this._state.flags; + const literal = { + type: "RegExpLiteral", + parent: null, + start, + end, + raw: source, + pattern, + flags, + }; + pattern.parent = literal; + flags.parent = literal; + return literal; + } + parseFlags(source, start = 0, end = source.length) { + this._state.source = source; + this._validator.validateFlags(source, start, end); + return this._state.flags; + } + parsePattern(source, start = 0, end = source.length, uFlag = false) { + this._state.source = source; + this._validator.validatePattern(source, start, end, uFlag); + return this._state.pattern; + } +} + +class RegExpVisitor { + constructor(handlers) { + this._handlers = handlers; + } + visit(node) { + switch (node.type) { + case "Alternative": + this.visitAlternative(node); + break; + case "Assertion": + this.visitAssertion(node); + break; + case "Backreference": + this.visitBackreference(node); + break; + case "CapturingGroup": + this.visitCapturingGroup(node); + break; + case "Character": + this.visitCharacter(node); + break; + case "CharacterClass": + this.visitCharacterClass(node); + break; + case "CharacterClassRange": + this.visitCharacterClassRange(node); + break; + case "CharacterSet": + this.visitCharacterSet(node); + break; + case "Flags": + this.visitFlags(node); + break; + case "Group": + this.visitGroup(node); + break; + case "Pattern": + this.visitPattern(node); + break; + case "Quantifier": + this.visitQuantifier(node); + break; + case "RegExpLiteral": + this.visitRegExpLiteral(node); + break; + default: + throw new Error(`Unknown type: ${node.type}`); + } + } + visitAlternative(node) { + if (this._handlers.onAlternativeEnter) { + this._handlers.onAlternativeEnter(node); + } + node.elements.forEach(this.visit, this); + if (this._handlers.onAlternativeLeave) { + this._handlers.onAlternativeLeave(node); + } + } + visitAssertion(node) { + if (this._handlers.onAssertionEnter) { + this._handlers.onAssertionEnter(node); + } + if (node.kind === "lookahead" || node.kind === "lookbehind") { + node.alternatives.forEach(this.visit, this); + } + if (this._handlers.onAssertionLeave) { + this._handlers.onAssertionLeave(node); + } + } + visitBackreference(node) { + if (this._handlers.onBackreferenceEnter) { + this._handlers.onBackreferenceEnter(node); + } + if (this._handlers.onBackreferenceLeave) { + this._handlers.onBackreferenceLeave(node); + } + } + visitCapturingGroup(node) { + if (this._handlers.onCapturingGroupEnter) { + this._handlers.onCapturingGroupEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onCapturingGroupLeave) { + this._handlers.onCapturingGroupLeave(node); + } + } + visitCharacter(node) { + if (this._handlers.onCharacterEnter) { + this._handlers.onCharacterEnter(node); + } + if (this._handlers.onCharacterLeave) { + this._handlers.onCharacterLeave(node); + } + } + visitCharacterClass(node) { + if (this._handlers.onCharacterClassEnter) { + this._handlers.onCharacterClassEnter(node); + } + node.elements.forEach(this.visit, this); + if (this._handlers.onCharacterClassLeave) { + this._handlers.onCharacterClassLeave(node); + } + } + visitCharacterClassRange(node) { + if (this._handlers.onCharacterClassRangeEnter) { + this._handlers.onCharacterClassRangeEnter(node); + } + this.visitCharacter(node.min); + this.visitCharacter(node.max); + if (this._handlers.onCharacterClassRangeLeave) { + this._handlers.onCharacterClassRangeLeave(node); + } + } + visitCharacterSet(node) { + if (this._handlers.onCharacterSetEnter) { + this._handlers.onCharacterSetEnter(node); + } + if (this._handlers.onCharacterSetLeave) { + this._handlers.onCharacterSetLeave(node); + } + } + visitFlags(node) { + if (this._handlers.onFlagsEnter) { + this._handlers.onFlagsEnter(node); + } + if (this._handlers.onFlagsLeave) { + this._handlers.onFlagsLeave(node); + } + } + visitGroup(node) { + if (this._handlers.onGroupEnter) { + this._handlers.onGroupEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onGroupLeave) { + this._handlers.onGroupLeave(node); + } + } + visitPattern(node) { + if (this._handlers.onPatternEnter) { + this._handlers.onPatternEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onPatternLeave) { + this._handlers.onPatternLeave(node); + } + } + visitQuantifier(node) { + if (this._handlers.onQuantifierEnter) { + this._handlers.onQuantifierEnter(node); + } + this.visit(node.element); + if (this._handlers.onQuantifierLeave) { + this._handlers.onQuantifierLeave(node); + } + } + visitRegExpLiteral(node) { + if (this._handlers.onRegExpLiteralEnter) { + this._handlers.onRegExpLiteralEnter(node); + } + this.visitPattern(node.pattern); + this.visitFlags(node.flags); + if (this._handlers.onRegExpLiteralLeave) { + this._handlers.onRegExpLiteralLeave(node); + } + } +} + +function parseRegExpLiteral(source, options) { + return new RegExpParser(options).parseLiteral(String(source)); +} +function validateRegExpLiteral(source, options) { + return new RegExpValidator(options).validateLiteral(source); +} +function visitRegExpAST(node, handlers) { + new RegExpVisitor(handlers).visit(node); +} + +exports.AST = ast; +exports.RegExpParser = RegExpParser; +exports.RegExpValidator = RegExpValidator; +exports.parseRegExpLiteral = parseRegExpLiteral; +exports.validateRegExpLiteral = validateRegExpLiteral; +exports.visitRegExpAST = visitRegExpAST; +//# sourceMappingURL=index.js.map diff --git a/node_modules/regexpp/index.js.map b/node_modules/regexpp/index.js.map new file mode 100644 index 0000000..68fc68e --- /dev/null +++ b/node_modules/regexpp/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/regexpp/index.mjs b/node_modules/regexpp/index.mjs new file mode 100644 index 0000000..d02491f --- /dev/null +++ b/node_modules/regexpp/index.mjs @@ -0,0 +1,2076 @@ +/*! @author Toru Nagashima */ + + +var ast = /*#__PURE__*/Object.freeze({ + +}); + +let largeIdStartRanges = undefined; +let largeIdContinueRanges = undefined; +function isIdStart(cp) { + if (cp < 0x41) + return false; + if (cp < 0x5b) + return true; + if (cp < 0x61) + return false; + if (cp < 0x7b) + return true; + return isLargeIdStart(cp); +} +function isIdContinue(cp) { + if (cp < 0x30) + return false; + if (cp < 0x3a) + return true; + if (cp < 0x41) + return false; + if (cp < 0x5b) + return true; + if (cp === 0x5f) + return true; + if (cp < 0x61) + return false; + if (cp < 0x7b) + return true; + return isLargeIdStart(cp) || isLargeIdContinue(cp); +} +function isLargeIdStart(cp) { + return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges())); +} +function isLargeIdContinue(cp) { + return isInRange(cp, largeIdContinueRanges || + (largeIdContinueRanges = initLargeIdContinueRanges())); +} +function initLargeIdStartRanges() { + return restoreRanges("170 0 11 0 5 0 6 22 2 30 2 457 5 11 15 4 8 0 2 0 130 4 2 1 3 3 2 0 7 0 2 2 2 0 2 19 2 82 2 138 9 165 2 37 3 0 7 40 72 26 5 3 46 42 36 1 2 98 2 0 16 1 8 1 11 2 3 0 17 0 2 29 30 88 12 0 25 32 10 1 5 0 6 21 5 0 10 0 4 0 24 24 8 10 54 20 2 17 61 53 4 0 19 0 8 9 16 15 5 7 3 1 3 21 2 6 2 0 4 3 4 0 17 0 14 1 2 2 15 1 11 0 9 5 5 1 3 21 2 6 2 1 2 1 2 1 32 3 2 0 20 2 17 8 2 2 2 21 2 6 2 1 2 4 4 0 19 0 16 1 24 0 12 7 3 1 3 21 2 6 2 1 2 4 4 0 31 1 2 2 16 0 18 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 11 23 0 53 7 2 2 2 22 2 15 4 0 27 2 6 1 31 0 5 7 2 2 2 22 2 9 2 4 4 0 33 0 2 1 16 1 18 8 2 2 2 40 3 0 17 0 6 2 9 2 25 5 6 17 4 23 2 8 2 0 3 6 59 47 2 1 13 6 59 1 2 0 2 4 2 23 2 0 2 9 2 1 10 0 3 4 2 0 22 3 33 0 64 7 2 35 28 4 116 42 21 0 17 5 5 3 4 0 4 1 8 2 5 12 13 0 18 37 2 0 6 0 3 42 2 332 2 3 3 6 2 0 2 3 3 40 2 3 3 32 2 3 3 6 2 0 2 3 3 14 2 56 2 3 3 66 38 15 17 85 3 5 4 619 3 16 2 25 6 74 4 10 8 12 2 3 15 17 15 17 15 12 2 2 16 51 36 0 5 0 68 88 8 40 2 0 6 69 11 30 50 29 3 4 12 43 5 25 55 22 10 52 83 0 94 46 18 6 56 29 14 1 11 43 27 35 42 2 11 35 3 8 8 42 3 2 42 3 2 5 2 1 4 0 6 191 65 277 3 5 3 37 3 5 3 7 2 0 2 0 2 0 2 30 3 52 2 6 2 0 4 2 2 6 4 3 3 5 5 12 6 2 2 6 117 0 14 0 17 12 102 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 15 3 3 6 4 5 0 18 40 2680 46 2 46 2 132 7 3 4 1 13 37 2 0 6 0 3 55 8 0 17 22 10 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 551 2 26 8 8 4 3 4 5 85 5 4 2 89 2 3 6 42 2 93 18 31 49 15 513 6591 65 20988 4 1164 68 45 3 268 4 15 11 1 21 46 17 30 3 79 40 8 3 102 3 52 3 8 43 12 2 2 2 3 2 22 30 51 15 49 63 5 4 0 2 1 12 27 11 22 26 28 8 46 29 0 17 4 2 9 11 4 2 40 24 2 2 7 21 22 4 0 4 49 2 0 4 1 3 4 3 0 2 0 25 2 3 10 8 2 13 5 3 5 3 5 10 6 2 6 2 42 2 13 7 114 30 11171 13 22 5 48 8453 365 3 105 39 6 13 4 6 0 2 9 2 12 2 4 2 0 2 1 2 1 2 107 34 362 19 63 3 53 41 11 117 4 2 134 37 25 7 25 12 88 4 5 3 5 3 5 3 2 36 11 2 25 2 18 2 1 2 14 3 13 35 122 70 52 268 28 4 48 48 31 14 29 6 37 11 29 3 35 5 7 2 4 43 157 19 35 5 35 5 39 9 51 157 310 10 21 11 7 153 5 3 0 2 43 2 1 4 0 3 22 11 22 10 30 66 18 2 1 11 21 11 25 71 55 7 1 65 0 16 3 2 2 2 28 43 28 4 28 36 7 2 27 28 53 11 21 11 18 14 17 111 72 56 50 14 50 14 35 349 41 7 1 79 28 11 0 9 21 107 20 28 22 13 52 76 44 33 24 27 35 30 0 3 0 9 34 4 0 13 47 15 3 22 0 2 0 36 17 2 24 85 6 2 0 2 3 2 14 2 9 8 46 39 7 3 1 3 21 2 6 2 1 2 4 4 0 19 0 13 4 159 52 19 3 21 2 31 47 21 1 2 0 185 46 42 3 37 47 21 0 60 42 14 0 72 26 230 43 117 63 32 7 3 0 3 7 2 1 2 23 16 0 2 0 95 7 3 38 17 0 2 0 29 0 11 39 8 0 22 0 12 45 20 0 35 56 264 8 2 36 18 0 50 29 113 6 2 1 2 37 22 0 26 5 2 1 2 31 15 0 328 18 190 0 80 921 103 110 18 195 2749 1070 4050 582 8634 568 8 30 114 29 19 47 17 3 32 20 6 18 689 63 129 74 6 0 67 12 65 1 2 0 29 6135 9 1237 43 8 8952 286 50 2 18 3 9 395 2309 106 6 12 4 8 8 9 5991 84 2 70 2 1 3 0 3 1 3 3 2 11 2 0 2 6 2 64 2 3 3 7 2 6 2 27 2 3 2 4 2 0 4 6 2 339 3 24 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 7 2357 44 11 6 17 0 370 43 1301 196 60 67 8 0 1205 3 2 26 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 16 6 2 2 4 2 16 4421 42717 35 4148 12 221 3 5761 15 7472 3104 541 1507 4938"); +} +function initLargeIdContinueRanges() { + return restoreRanges("183 0 585 111 24 0 252 4 266 44 2 0 2 1 2 1 2 0 73 10 49 30 7 0 102 6 3 5 3 1 2 3 3 9 24 0 31 26 92 10 16 9 34 8 10 0 25 3 2 8 2 2 2 4 44 2 120 14 2 32 55 2 2 17 2 6 11 1 3 9 18 2 57 0 2 6 3 1 3 2 10 0 11 1 3 9 15 0 3 2 57 0 2 4 5 1 3 2 4 0 21 11 4 0 12 2 57 0 2 7 2 2 2 2 21 1 3 9 11 5 2 2 57 0 2 6 3 1 3 2 8 2 11 1 3 9 19 0 60 4 4 2 2 3 10 0 15 9 17 4 58 6 2 2 2 3 8 1 12 1 3 9 18 2 57 0 2 6 2 2 2 3 8 1 12 1 3 9 17 3 56 1 2 6 2 2 2 3 10 0 11 1 3 9 18 2 71 0 5 5 2 0 2 7 7 9 3 1 62 0 3 6 13 7 2 9 88 0 3 8 12 5 3 9 63 1 7 9 12 0 2 0 2 0 5 1 50 19 2 1 6 10 2 35 10 0 101 19 2 9 13 3 5 2 2 2 3 6 4 3 14 11 2 14 704 2 10 8 929 2 30 2 30 1 31 1 65 31 10 0 3 9 34 2 3 9 144 0 119 11 5 11 11 9 129 10 61 4 58 9 2 28 3 10 7 9 23 13 2 1 64 4 48 16 12 9 18 8 13 2 31 12 3 9 45 13 49 19 9 9 7 9 119 2 2 20 5 0 7 0 3 2 199 57 2 4 576 1 20 0 124 12 5 0 4 11 3071 2 142 0 97 31 555 5 106 1 30086 9 70 0 5 9 33 1 81 1 273 0 4 0 5 0 24 4 5 0 84 1 51 17 11 9 7 17 14 10 29 7 26 12 45 3 48 13 16 9 12 0 11 9 48 13 13 0 9 1 3 9 34 2 51 0 2 2 3 1 6 1 2 0 42 4 6 1 237 7 2 1 3 9 20261 0 738 15 17 15 4 1 25 2 193 9 38 0 702 0 227 0 150 4 294 9 1368 2 2 1 6 3 41 2 5 0 166 1 574 3 9 9 370 1 154 10 176 2 54 14 32 9 16 3 46 10 54 9 7 2 37 13 2 9 6 1 45 0 13 2 49 13 9 3 2 11 83 11 7 0 161 11 6 9 7 3 56 1 2 6 3 1 3 2 10 0 11 1 3 6 4 4 193 17 10 9 5 0 82 19 13 9 214 6 3 8 28 1 83 16 16 9 82 12 9 9 84 14 5 9 243 14 166 9 71 5 2 1 3 3 2 0 2 1 13 9 120 6 3 6 4 0 29 9 41 6 2 3 9 0 10 10 47 15 406 7 2 7 17 9 57 21 2 13 123 5 4 0 2 1 2 6 2 0 9 9 49 4 2 1 2 4 9 9 330 3 19306 9 135 4 60 6 26 9 1014 0 2 54 8 3 82 0 12 1 19628 1 5319 4 4 5 9 7 3 6 31 3 149 2 1418 49 513 54 5 49 9 0 15 0 23 4 2 14 1361 6 2 16 3 6 2 1 2 4 262 6 10 9 419 13 1495 6 110 6 6 9 4759 9 787719 239"); +} +function isInRange(cp, ranges) { + let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; + while (l < r) { + i = ((l + r) / 2) | 0; + min = ranges[2 * i]; + max = ranges[2 * i + 1]; + if (cp < min) { + r = i; + } + else if (cp > max) { + l = i + 1; + } + else { + return true; + } + } + return false; +} +function restoreRanges(data) { + let last = 0; + return data.split(" ").map(s => (last += parseInt(s, 10) | 0)); +} + +class DataSet { + constructor(raw2018, raw2019, raw2020) { + this._raw2018 = raw2018; + this._raw2019 = raw2019; + this._raw2020 = raw2020; + } + get es2018() { + return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); + } + get es2019() { + return (this._set2019 || (this._set2019 = new Set(this._raw2019.split(" ")))); + } + get es2020() { + return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); + } +} +const gcNameSet = new Set(["General_Category", "gc"]); +const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); +const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", ""); +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho"); +const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", ""); +function isValidUnicodeProperty(version, name, value) { + if (gcNameSet.has(name)) { + return version >= 2018 && gcValueSets.es2018.has(value); + } + if (scNameSet.has(name)) { + return ((version >= 2018 && scValueSets.es2018.has(value)) || + (version >= 2019 && scValueSets.es2019.has(value)) || + (version >= 2020 && scValueSets.es2020.has(value))); + } + return false; +} +function isValidLoneUnicodeProperty(version, value) { + return ((version >= 2018 && binPropertySets.es2018.has(value)) || + (version >= 2019 && binPropertySets.es2019.has(value))); +} + +const Backspace = 0x08; +const CharacterTabulation = 0x09; +const LineFeed = 0x0a; +const LineTabulation = 0x0b; +const FormFeed = 0x0c; +const CarriageReturn = 0x0d; +const ExclamationMark = 0x21; +const DollarSign = 0x24; +const LeftParenthesis = 0x28; +const RightParenthesis = 0x29; +const Asterisk = 0x2a; +const PlusSign = 0x2b; +const Comma = 0x2c; +const HyphenMinus = 0x2d; +const FullStop = 0x2e; +const Solidus = 0x2f; +const DigitZero = 0x30; +const DigitOne = 0x31; +const DigitSeven = 0x37; +const DigitNine = 0x39; +const Colon = 0x3a; +const LessThanSign = 0x3c; +const EqualsSign = 0x3d; +const GreaterThanSign = 0x3e; +const QuestionMark = 0x3f; +const LatinCapitalLetterA = 0x41; +const LatinCapitalLetterB = 0x42; +const LatinCapitalLetterD = 0x44; +const LatinCapitalLetterF = 0x46; +const LatinCapitalLetterP = 0x50; +const LatinCapitalLetterS = 0x53; +const LatinCapitalLetterW = 0x57; +const LatinCapitalLetterZ = 0x5a; +const LowLine = 0x5f; +const LatinSmallLetterA = 0x61; +const LatinSmallLetterB = 0x62; +const LatinSmallLetterC = 0x63; +const LatinSmallLetterD = 0x64; +const LatinSmallLetterF = 0x66; +const LatinSmallLetterG = 0x67; +const LatinSmallLetterI = 0x69; +const LatinSmallLetterK = 0x6b; +const LatinSmallLetterM = 0x6d; +const LatinSmallLetterN = 0x6e; +const LatinSmallLetterP = 0x70; +const LatinSmallLetterR = 0x72; +const LatinSmallLetterS = 0x73; +const LatinSmallLetterT = 0x74; +const LatinSmallLetterU = 0x75; +const LatinSmallLetterV = 0x76; +const LatinSmallLetterW = 0x77; +const LatinSmallLetterX = 0x78; +const LatinSmallLetterY = 0x79; +const LatinSmallLetterZ = 0x7a; +const LeftSquareBracket = 0x5b; +const ReverseSolidus = 0x5c; +const RightSquareBracket = 0x5d; +const CircumflexAccent = 0x5e; +const LeftCurlyBracket = 0x7b; +const VerticalLine = 0x7c; +const RightCurlyBracket = 0x7d; +const ZeroWidthNonJoiner = 0x200c; +const ZeroWidthJoiner = 0x200d; +const LineSeparator = 0x2028; +const ParagraphSeparator = 0x2029; +const MinCodePoint = 0x00; +const MaxCodePoint = 0x10ffff; +function isLatinLetter(code) { + return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) || + (code >= LatinSmallLetterA && code <= LatinSmallLetterZ)); +} +function isDecimalDigit(code) { + return code >= DigitZero && code <= DigitNine; +} +function isOctalDigit(code) { + return code >= DigitZero && code <= DigitSeven; +} +function isHexDigit(code) { + return ((code >= DigitZero && code <= DigitNine) || + (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) || + (code >= LatinSmallLetterA && code <= LatinSmallLetterF)); +} +function isLineTerminator(code) { + return (code === LineFeed || + code === CarriageReturn || + code === LineSeparator || + code === ParagraphSeparator); +} +function isValidUnicode(code) { + return code >= MinCodePoint && code <= MaxCodePoint; +} +function digitToInt(code) { + if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) { + return code - LatinSmallLetterA + 10; + } + if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) { + return code - LatinCapitalLetterA + 10; + } + return code - DigitZero; +} +function isLeadSurrogate(code) { + return code >= 0xd800 && code <= 0xdbff; +} +function isTrailSurrogate(code) { + return code >= 0xdc00 && code <= 0xdfff; +} +function combineSurrogatePair(lead, trail) { + return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000; +} + +const legacyImpl = { + at(s, end, i) { + return i < end ? s.charCodeAt(i) : -1; + }, + width(c) { + return 1; + }, +}; +const unicodeImpl = { + at(s, end, i) { + return i < end ? s.codePointAt(i) : -1; + }, + width(c) { + return c > 0xffff ? 2 : 1; + }, +}; +class Reader { + constructor() { + this._impl = legacyImpl; + this._s = ""; + this._i = 0; + this._end = 0; + this._cp1 = -1; + this._w1 = 1; + this._cp2 = -1; + this._w2 = 1; + this._cp3 = -1; + this._w3 = 1; + this._cp4 = -1; + } + get source() { + return this._s; + } + get index() { + return this._i; + } + get currentCodePoint() { + return this._cp1; + } + get nextCodePoint() { + return this._cp2; + } + get nextCodePoint2() { + return this._cp3; + } + get nextCodePoint3() { + return this._cp4; + } + reset(source, start, end, uFlag) { + this._impl = uFlag ? unicodeImpl : legacyImpl; + this._s = source; + this._end = end; + this.rewind(start); + } + rewind(index) { + const impl = this._impl; + this._i = index; + this._cp1 = impl.at(this._s, this._end, index); + this._w1 = impl.width(this._cp1); + this._cp2 = impl.at(this._s, this._end, index + this._w1); + this._w2 = impl.width(this._cp2); + this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2); + this._w3 = impl.width(this._cp3); + this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3); + } + advance() { + if (this._cp1 !== -1) { + const impl = this._impl; + this._i += this._w1; + this._cp1 = this._cp2; + this._w1 = this._w2; + this._cp2 = this._cp3; + this._w2 = impl.width(this._cp2); + this._cp3 = this._cp4; + this._w3 = impl.width(this._cp3); + this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3); + } + } + eat(cp) { + if (this._cp1 === cp) { + this.advance(); + return true; + } + return false; + } + eat2(cp1, cp2) { + if (this._cp1 === cp1 && this._cp2 === cp2) { + this.advance(); + this.advance(); + return true; + } + return false; + } + eat3(cp1, cp2, cp3) { + if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) { + this.advance(); + this.advance(); + this.advance(); + return true; + } + return false; + } +} + +class RegExpSyntaxError extends SyntaxError { + constructor(source, uFlag, index, message) { + if (source) { + if (!source.startsWith("/")) { + source = `/${source}/${uFlag ? "u" : ""}`; + } + source = `: ${source}`; + } + super(`Invalid regular expression${source}: ${message}`); + this.index = index; + } +} + +function isSyntaxCharacter(cp) { + return (cp === CircumflexAccent || + cp === DollarSign || + cp === ReverseSolidus || + cp === FullStop || + cp === Asterisk || + cp === PlusSign || + cp === QuestionMark || + cp === LeftParenthesis || + cp === RightParenthesis || + cp === LeftSquareBracket || + cp === RightSquareBracket || + cp === LeftCurlyBracket || + cp === RightCurlyBracket || + cp === VerticalLine); +} +function isRegExpIdentifierStart(cp) { + return isIdStart(cp) || cp === DollarSign || cp === LowLine; +} +function isRegExpIdentifierPart(cp) { + return (isIdContinue(cp) || + cp === DollarSign || + cp === LowLine || + cp === ZeroWidthNonJoiner || + cp === ZeroWidthJoiner); +} +function isUnicodePropertyNameCharacter(cp) { + return isLatinLetter(cp) || cp === LowLine; +} +function isUnicodePropertyValueCharacter(cp) { + return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp); +} +class RegExpValidator { + constructor(options) { + this._reader = new Reader(); + this._uFlag = false; + this._nFlag = false; + this._lastIntValue = 0; + this._lastMinValue = 0; + this._lastMaxValue = 0; + this._lastStrValue = ""; + this._lastKeyValue = ""; + this._lastValValue = ""; + this._lastAssertionIsQuantifiable = false; + this._numCapturingParens = 0; + this._groupNames = new Set(); + this._backreferenceNames = new Set(); + this._options = options || {}; + } + validateLiteral(source, start = 0, end = source.length) { + this._uFlag = this._nFlag = false; + this.reset(source, start, end); + this.onLiteralEnter(start); + if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) { + const flagStart = this.index; + const uFlag = source.includes("u", flagStart); + this.validateFlags(source, flagStart, end); + this.validatePattern(source, start + 1, flagStart - 1, uFlag); + } + else if (start >= end) { + this.raise("Empty"); + } + else { + const c = String.fromCodePoint(this.currentCodePoint); + this.raise(`Unexpected character '${c}'`); + } + this.onLiteralLeave(start, end); + } + validateFlags(source, start = 0, end = source.length) { + const existingFlags = new Set(); + let global = false; + let ignoreCase = false; + let multiline = false; + let sticky = false; + let unicode = false; + let dotAll = false; + for (let i = start; i < end; ++i) { + const flag = source.charCodeAt(i); + if (existingFlags.has(flag)) { + this.raise(`Duplicated flag '${source[i]}'`); + } + existingFlags.add(flag); + if (flag === LatinSmallLetterG) { + global = true; + } + else if (flag === LatinSmallLetterI) { + ignoreCase = true; + } + else if (flag === LatinSmallLetterM) { + multiline = true; + } + else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) { + unicode = true; + } + else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) { + sticky = true; + } + else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { + dotAll = true; + } + else { + this.raise(`Invalid flag '${source[i]}'`); + } + } + this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + } + validatePattern(source, start = 0, end = source.length, uFlag = false) { + this._uFlag = uFlag && this.ecmaVersion >= 2015; + this._nFlag = uFlag && this.ecmaVersion >= 2018; + this.reset(source, start, end); + this.consumePattern(); + if (!this._nFlag && + this.ecmaVersion >= 2018 && + this._groupNames.size > 0) { + this._nFlag = true; + this.rewind(start); + this.consumePattern(); + } + } + get strict() { + return Boolean(this._options.strict || this._uFlag); + } + get ecmaVersion() { + return this._options.ecmaVersion || 2020; + } + onLiteralEnter(start) { + if (this._options.onLiteralEnter) { + this._options.onLiteralEnter(start); + } + } + onLiteralLeave(start, end) { + if (this._options.onLiteralLeave) { + this._options.onLiteralLeave(start, end); + } + } + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + if (this._options.onFlags) { + this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + } + } + onPatternEnter(start) { + if (this._options.onPatternEnter) { + this._options.onPatternEnter(start); + } + } + onPatternLeave(start, end) { + if (this._options.onPatternLeave) { + this._options.onPatternLeave(start, end); + } + } + onDisjunctionEnter(start) { + if (this._options.onDisjunctionEnter) { + this._options.onDisjunctionEnter(start); + } + } + onDisjunctionLeave(start, end) { + if (this._options.onDisjunctionLeave) { + this._options.onDisjunctionLeave(start, end); + } + } + onAlternativeEnter(start, index) { + if (this._options.onAlternativeEnter) { + this._options.onAlternativeEnter(start, index); + } + } + onAlternativeLeave(start, end, index) { + if (this._options.onAlternativeLeave) { + this._options.onAlternativeLeave(start, end, index); + } + } + onGroupEnter(start) { + if (this._options.onGroupEnter) { + this._options.onGroupEnter(start); + } + } + onGroupLeave(start, end) { + if (this._options.onGroupLeave) { + this._options.onGroupLeave(start, end); + } + } + onCapturingGroupEnter(start, name) { + if (this._options.onCapturingGroupEnter) { + this._options.onCapturingGroupEnter(start, name); + } + } + onCapturingGroupLeave(start, end, name) { + if (this._options.onCapturingGroupLeave) { + this._options.onCapturingGroupLeave(start, end, name); + } + } + onQuantifier(start, end, min, max, greedy) { + if (this._options.onQuantifier) { + this._options.onQuantifier(start, end, min, max, greedy); + } + } + onLookaroundAssertionEnter(start, kind, negate) { + if (this._options.onLookaroundAssertionEnter) { + this._options.onLookaroundAssertionEnter(start, kind, negate); + } + } + onLookaroundAssertionLeave(start, end, kind, negate) { + if (this._options.onLookaroundAssertionLeave) { + this._options.onLookaroundAssertionLeave(start, end, kind, negate); + } + } + onEdgeAssertion(start, end, kind) { + if (this._options.onEdgeAssertion) { + this._options.onEdgeAssertion(start, end, kind); + } + } + onWordBoundaryAssertion(start, end, kind, negate) { + if (this._options.onWordBoundaryAssertion) { + this._options.onWordBoundaryAssertion(start, end, kind, negate); + } + } + onAnyCharacterSet(start, end, kind) { + if (this._options.onAnyCharacterSet) { + this._options.onAnyCharacterSet(start, end, kind); + } + } + onEscapeCharacterSet(start, end, kind, negate) { + if (this._options.onEscapeCharacterSet) { + this._options.onEscapeCharacterSet(start, end, kind, negate); + } + } + onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { + if (this._options.onUnicodePropertyCharacterSet) { + this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate); + } + } + onCharacter(start, end, value) { + if (this._options.onCharacter) { + this._options.onCharacter(start, end, value); + } + } + onBackreference(start, end, ref) { + if (this._options.onBackreference) { + this._options.onBackreference(start, end, ref); + } + } + onCharacterClassEnter(start, negate) { + if (this._options.onCharacterClassEnter) { + this._options.onCharacterClassEnter(start, negate); + } + } + onCharacterClassLeave(start, end, negate) { + if (this._options.onCharacterClassLeave) { + this._options.onCharacterClassLeave(start, end, negate); + } + } + onCharacterClassRange(start, end, min, max) { + if (this._options.onCharacterClassRange) { + this._options.onCharacterClassRange(start, end, min, max); + } + } + get source() { + return this._reader.source; + } + get index() { + return this._reader.index; + } + get currentCodePoint() { + return this._reader.currentCodePoint; + } + get nextCodePoint() { + return this._reader.nextCodePoint; + } + get nextCodePoint2() { + return this._reader.nextCodePoint2; + } + get nextCodePoint3() { + return this._reader.nextCodePoint3; + } + reset(source, start, end) { + this._reader.reset(source, start, end, this._uFlag); + } + rewind(index) { + this._reader.rewind(index); + } + advance() { + this._reader.advance(); + } + eat(cp) { + return this._reader.eat(cp); + } + eat2(cp1, cp2) { + return this._reader.eat2(cp1, cp2); + } + eat3(cp1, cp2, cp3) { + return this._reader.eat3(cp1, cp2, cp3); + } + raise(message) { + throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message); + } + eatRegExpBody() { + const start = this.index; + let inClass = false; + let escaped = false; + for (;;) { + const cp = this.currentCodePoint; + if (cp === -1 || isLineTerminator(cp)) { + const kind = inClass ? "character class" : "regular expression"; + this.raise(`Unterminated ${kind}`); + } + if (escaped) { + escaped = false; + } + else if (cp === ReverseSolidus) { + escaped = true; + } + else if (cp === LeftSquareBracket) { + inClass = true; + } + else if (cp === RightSquareBracket) { + inClass = false; + } + else if ((cp === Solidus && !inClass) || + (cp === Asterisk && this.index === start)) { + break; + } + this.advance(); + } + return this.index !== start; + } + consumePattern() { + const start = this.index; + this._numCapturingParens = this.countCapturingParens(); + this._groupNames.clear(); + this._backreferenceNames.clear(); + this.onPatternEnter(start); + this.consumeDisjunction(); + const cp = this.currentCodePoint; + if (this.currentCodePoint !== -1) { + if (cp === RightParenthesis) { + this.raise("Unmatched ')'"); + } + if (cp === ReverseSolidus) { + this.raise("\\ at end of pattern"); + } + if (cp === RightSquareBracket || cp === RightCurlyBracket) { + this.raise("Lone quantifier brackets"); + } + const c = String.fromCodePoint(cp); + this.raise(`Unexpected character '${c}'`); + } + for (const name of this._backreferenceNames) { + if (!this._groupNames.has(name)) { + this.raise("Invalid named capture referenced"); + } + } + this.onPatternLeave(start, this.index); + } + countCapturingParens() { + const start = this.index; + let inClass = false; + let escaped = false; + let count = 0; + let cp = 0; + while ((cp = this.currentCodePoint) !== -1) { + if (escaped) { + escaped = false; + } + else if (cp === ReverseSolidus) { + escaped = true; + } + else if (cp === LeftSquareBracket) { + inClass = true; + } + else if (cp === RightSquareBracket) { + inClass = false; + } + else if (cp === LeftParenthesis && + !inClass && + (this.nextCodePoint !== QuestionMark || + (this.nextCodePoint2 === LessThanSign && + this.nextCodePoint3 !== EqualsSign && + this.nextCodePoint3 !== ExclamationMark))) { + count += 1; + } + this.advance(); + } + this.rewind(start); + return count; + } + consumeDisjunction() { + const start = this.index; + let i = 0; + this.onDisjunctionEnter(start); + do { + this.consumeAlternative(i++); + } while (this.eat(VerticalLine)); + if (this.consumeQuantifier(true)) { + this.raise("Nothing to repeat"); + } + if (this.eat(LeftCurlyBracket)) { + this.raise("Lone quantifier brackets"); + } + this.onDisjunctionLeave(start, this.index); + } + consumeAlternative(i) { + const start = this.index; + this.onAlternativeEnter(start, i); + while (this.currentCodePoint !== -1 && this.consumeTerm()) { + } + this.onAlternativeLeave(start, this.index, i); + } + consumeTerm() { + if (this._uFlag || this.strict) { + return (this.consumeAssertion() || + (this.consumeAtom() && this.consumeOptionalQuantifier())); + } + return ((this.consumeAssertion() && + (!this._lastAssertionIsQuantifiable || + this.consumeOptionalQuantifier())) || + (this.consumeExtendedAtom() && this.consumeOptionalQuantifier())); + } + consumeOptionalQuantifier() { + this.consumeQuantifier(); + return true; + } + consumeAssertion() { + const start = this.index; + this._lastAssertionIsQuantifiable = false; + if (this.eat(CircumflexAccent)) { + this.onEdgeAssertion(start, this.index, "start"); + return true; + } + if (this.eat(DollarSign)) { + this.onEdgeAssertion(start, this.index, "end"); + return true; + } + if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) { + this.onWordBoundaryAssertion(start, this.index, "word", true); + return true; + } + if (this.eat2(ReverseSolidus, LatinSmallLetterB)) { + this.onWordBoundaryAssertion(start, this.index, "word", false); + return true; + } + if (this.eat2(LeftParenthesis, QuestionMark)) { + const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign); + let negate = false; + if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) { + const kind = lookbehind ? "lookbehind" : "lookahead"; + this.onLookaroundAssertionEnter(start, kind, negate); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this._lastAssertionIsQuantifiable = !lookbehind && !this.strict; + this.onLookaroundAssertionLeave(start, this.index, kind, negate); + return true; + } + this.rewind(start); + } + return false; + } + consumeQuantifier(noConsume = false) { + const start = this.index; + let min = 0; + let max = 0; + let greedy = false; + if (this.eat(Asterisk)) { + min = 0; + max = Number.POSITIVE_INFINITY; + } + else if (this.eat(PlusSign)) { + min = 1; + max = Number.POSITIVE_INFINITY; + } + else if (this.eat(QuestionMark)) { + min = 0; + max = 1; + } + else if (this.eatBracedQuantifier(noConsume)) { + min = this._lastMinValue; + max = this._lastMaxValue; + } + else { + return false; + } + greedy = !this.eat(QuestionMark); + if (!noConsume) { + this.onQuantifier(start, this.index, min, max, greedy); + } + return true; + } + eatBracedQuantifier(noError) { + const start = this.index; + if (this.eat(LeftCurlyBracket)) { + this._lastMinValue = 0; + this._lastMaxValue = Number.POSITIVE_INFINITY; + if (this.eatDecimalDigits()) { + this._lastMinValue = this._lastMaxValue = this._lastIntValue; + if (this.eat(Comma)) { + this._lastMaxValue = this.eatDecimalDigits() + ? this._lastIntValue + : Number.POSITIVE_INFINITY; + } + if (this.eat(RightCurlyBracket)) { + if (!noError && this._lastMaxValue < this._lastMinValue) { + this.raise("numbers out of order in {} quantifier"); + } + return true; + } + } + if (!noError && (this._uFlag || this.strict)) { + this.raise("Incomplete quantifier"); + } + this.rewind(start); + } + return false; + } + consumeAtom() { + return (this.consumePatternCharacter() || + this.consumeDot() || + this.consumeReverseSolidusAtomEscape() || + this.consumeCharacterClass() || + this.consumeUncapturingGroup() || + this.consumeCapturingGroup()); + } + consumeDot() { + if (this.eat(FullStop)) { + this.onAnyCharacterSet(this.index - 1, this.index, "any"); + return true; + } + return false; + } + consumeReverseSolidusAtomEscape() { + const start = this.index; + if (this.eat(ReverseSolidus)) { + if (this.consumeAtomEscape()) { + return true; + } + this.rewind(start); + } + return false; + } + consumeUncapturingGroup() { + const start = this.index; + if (this.eat3(LeftParenthesis, QuestionMark, Colon)) { + this.onGroupEnter(start); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this.onGroupLeave(start, this.index); + return true; + } + return false; + } + consumeCapturingGroup() { + const start = this.index; + if (this.eat(LeftParenthesis)) { + let name = null; + if (this.ecmaVersion >= 2018) { + if (this.consumeGroupSpecifier()) { + name = this._lastStrValue; + } + } + else if (this.currentCodePoint === QuestionMark) { + this.raise("Invalid group"); + } + this.onCapturingGroupEnter(start, name); + this.consumeDisjunction(); + if (!this.eat(RightParenthesis)) { + this.raise("Unterminated group"); + } + this.onCapturingGroupLeave(start, this.index, name); + return true; + } + return false; + } + consumeExtendedAtom() { + return (this.consumeDot() || + this.consumeReverseSolidusAtomEscape() || + this.consumeReverseSolidusFollowedByC() || + this.consumeCharacterClass() || + this.consumeUncapturingGroup() || + this.consumeCapturingGroup() || + this.consumeInvalidBracedQuantifier() || + this.consumeExtendedPatternCharacter()); + } + consumeReverseSolidusFollowedByC() { + const start = this.index; + if (this.currentCodePoint === ReverseSolidus && + this.nextCodePoint === LatinSmallLetterC) { + this._lastIntValue = this.currentCodePoint; + this.advance(); + this.onCharacter(start, this.index, ReverseSolidus); + return true; + } + return false; + } + consumeInvalidBracedQuantifier() { + if (this.eatBracedQuantifier(true)) { + this.raise("Nothing to repeat"); + } + return false; + } + consumePatternCharacter() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && !isSyntaxCharacter(cp)) { + this.advance(); + this.onCharacter(start, this.index, cp); + return true; + } + return false; + } + consumeExtendedPatternCharacter() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && + cp !== CircumflexAccent && + cp !== DollarSign && + cp !== ReverseSolidus && + cp !== FullStop && + cp !== Asterisk && + cp !== PlusSign && + cp !== QuestionMark && + cp !== LeftParenthesis && + cp !== RightParenthesis && + cp !== LeftSquareBracket && + cp !== VerticalLine) { + this.advance(); + this.onCharacter(start, this.index, cp); + return true; + } + return false; + } + consumeGroupSpecifier() { + if (this.eat(QuestionMark)) { + if (this.eatGroupName()) { + if (!this._groupNames.has(this._lastStrValue)) { + this._groupNames.add(this._lastStrValue); + return true; + } + this.raise("Duplicate capture group name"); + } + this.raise("Invalid group"); + } + return false; + } + consumeAtomEscape() { + if (this.consumeBackreference() || + this.consumeCharacterClassEscape() || + this.consumeCharacterEscape() || + (this._nFlag && this.consumeKGroupName())) { + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + return false; + } + consumeBackreference() { + const start = this.index; + if (this.eatDecimalEscape()) { + const n = this._lastIntValue; + if (n <= this._numCapturingParens) { + this.onBackreference(start - 1, this.index, n); + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + consumeCharacterClassEscape() { + const start = this.index; + if (this.eat(LatinSmallLetterD)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "digit", false); + return true; + } + if (this.eat(LatinCapitalLetterD)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "digit", true); + return true; + } + if (this.eat(LatinSmallLetterS)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "space", false); + return true; + } + if (this.eat(LatinCapitalLetterS)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "space", true); + return true; + } + if (this.eat(LatinSmallLetterW)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "word", false); + return true; + } + if (this.eat(LatinCapitalLetterW)) { + this._lastIntValue = -1; + this.onEscapeCharacterSet(start - 1, this.index, "word", true); + return true; + } + let negate = false; + if (this._uFlag && + this.ecmaVersion >= 2018 && + (this.eat(LatinSmallLetterP) || + (negate = this.eat(LatinCapitalLetterP)))) { + this._lastIntValue = -1; + if (this.eat(LeftCurlyBracket) && + this.eatUnicodePropertyValueExpression() && + this.eat(RightCurlyBracket)) { + this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate); + return true; + } + this.raise("Invalid property name"); + } + return false; + } + consumeCharacterEscape() { + const start = this.index; + if (this.eatControlEscape() || + this.eatCControlLetter() || + this.eatZero() || + this.eatHexEscapeSequence() || + this.eatRegExpUnicodeEscapeSequence() || + (!this.strict && + !this._uFlag && + this.eatLegacyOctalEscapeSequence()) || + this.eatIdentityEscape()) { + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + return false; + } + consumeKGroupName() { + const start = this.index; + if (this.eat(LatinSmallLetterK)) { + if (this.eatGroupName()) { + const groupName = this._lastStrValue; + this._backreferenceNames.add(groupName); + this.onBackreference(start - 1, this.index, groupName); + return true; + } + this.raise("Invalid named reference"); + } + return false; + } + consumeCharacterClass() { + const start = this.index; + if (this.eat(LeftSquareBracket)) { + const negate = this.eat(CircumflexAccent); + this.onCharacterClassEnter(start, negate); + this.consumeClassRanges(); + if (!this.eat(RightSquareBracket)) { + this.raise("Unterminated character class"); + } + this.onCharacterClassLeave(start, this.index, negate); + return true; + } + return false; + } + consumeClassRanges() { + const strict = this.strict || this._uFlag; + for (;;) { + const rangeStart = this.index; + if (!this.consumeClassAtom()) { + break; + } + const min = this._lastIntValue; + if (!this.eat(HyphenMinus)) { + continue; + } + this.onCharacter(this.index - 1, this.index, HyphenMinus); + if (!this.consumeClassAtom()) { + break; + } + const max = this._lastIntValue; + if (min === -1 || max === -1) { + if (strict) { + this.raise("Invalid character class"); + } + continue; + } + if (min > max) { + this.raise("Range out of order in character class"); + } + this.onCharacterClassRange(rangeStart, this.index, min, max); + } + } + consumeClassAtom() { + const start = this.index; + const cp = this.currentCodePoint; + if (cp !== -1 && cp !== ReverseSolidus && cp !== RightSquareBracket) { + this.advance(); + this._lastIntValue = cp; + this.onCharacter(start, this.index, this._lastIntValue); + return true; + } + if (this.eat(ReverseSolidus)) { + if (this.consumeClassEscape()) { + return true; + } + if (!this.strict && this.currentCodePoint === LatinSmallLetterC) { + this._lastIntValue = ReverseSolidus; + this.onCharacter(start, this.index, this._lastIntValue); + return true; + } + if (this.strict || this._uFlag) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + consumeClassEscape() { + const start = this.index; + if (this.eat(LatinSmallLetterB)) { + this._lastIntValue = Backspace; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + if (this._uFlag && this.eat(HyphenMinus)) { + this._lastIntValue = HyphenMinus; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + let cp = 0; + if (!this.strict && + !this._uFlag && + this.currentCodePoint === LatinSmallLetterC && + (isDecimalDigit((cp = this.nextCodePoint)) || cp === LowLine)) { + this.advance(); + this.advance(); + this._lastIntValue = cp % 0x20; + this.onCharacter(start - 1, this.index, this._lastIntValue); + return true; + } + return (this.consumeCharacterClassEscape() || this.consumeCharacterEscape()); + } + eatGroupName() { + if (this.eat(LessThanSign)) { + if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) { + return true; + } + this.raise("Invalid capture group name"); + } + return false; + } + eatRegExpIdentifierName() { + if (this.eatRegExpIdentifierStart()) { + this._lastStrValue = String.fromCodePoint(this._lastIntValue); + while (this.eatRegExpIdentifierPart()) { + this._lastStrValue += String.fromCodePoint(this._lastIntValue); + } + return true; + } + return false; + } + eatRegExpIdentifierStart() { + const start = this.index; + const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; + let cp = this.currentCodePoint; + this.advance(); + if (cp === ReverseSolidus && + this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { + cp = this._lastIntValue; + } + else if (forceUFlag && + isLeadSurrogate(cp) && + isTrailSurrogate(this.currentCodePoint)) { + cp = combineSurrogatePair(cp, this.currentCodePoint); + this.advance(); + } + if (isRegExpIdentifierStart(cp)) { + this._lastIntValue = cp; + return true; + } + if (this.index !== start) { + this.rewind(start); + } + return false; + } + eatRegExpIdentifierPart() { + const start = this.index; + const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; + let cp = this.currentCodePoint; + this.advance(); + if (cp === ReverseSolidus && + this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { + cp = this._lastIntValue; + } + else if (forceUFlag && + isLeadSurrogate(cp) && + isTrailSurrogate(this.currentCodePoint)) { + cp = combineSurrogatePair(cp, this.currentCodePoint); + this.advance(); + } + if (isRegExpIdentifierPart(cp)) { + this._lastIntValue = cp; + return true; + } + if (this.index !== start) { + this.rewind(start); + } + return false; + } + eatCControlLetter() { + const start = this.index; + if (this.eat(LatinSmallLetterC)) { + if (this.eatControlLetter()) { + return true; + } + this.rewind(start); + } + return false; + } + eatZero() { + if (this.currentCodePoint === DigitZero && + !isDecimalDigit(this.nextCodePoint)) { + this._lastIntValue = 0; + this.advance(); + return true; + } + return false; + } + eatControlEscape() { + if (this.eat(LatinSmallLetterF)) { + this._lastIntValue = FormFeed; + return true; + } + if (this.eat(LatinSmallLetterN)) { + this._lastIntValue = LineFeed; + return true; + } + if (this.eat(LatinSmallLetterR)) { + this._lastIntValue = CarriageReturn; + return true; + } + if (this.eat(LatinSmallLetterT)) { + this._lastIntValue = CharacterTabulation; + return true; + } + if (this.eat(LatinSmallLetterV)) { + this._lastIntValue = LineTabulation; + return true; + } + return false; + } + eatControlLetter() { + const cp = this.currentCodePoint; + if (isLatinLetter(cp)) { + this.advance(); + this._lastIntValue = cp % 0x20; + return true; + } + return false; + } + eatRegExpUnicodeEscapeSequence(forceUFlag = false) { + const start = this.index; + const uFlag = forceUFlag || this._uFlag; + if (this.eat(LatinSmallLetterU)) { + if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) || + this.eatFixedHexDigits(4) || + (uFlag && this.eatRegExpUnicodeCodePointEscape())) { + return true; + } + if (this.strict || uFlag) { + this.raise("Invalid unicode escape"); + } + this.rewind(start); + } + return false; + } + eatRegExpUnicodeSurrogatePairEscape() { + const start = this.index; + if (this.eatFixedHexDigits(4)) { + const lead = this._lastIntValue; + if (isLeadSurrogate(lead) && + this.eat(ReverseSolidus) && + this.eat(LatinSmallLetterU) && + this.eatFixedHexDigits(4)) { + const trail = this._lastIntValue; + if (isTrailSurrogate(trail)) { + this._lastIntValue = combineSurrogatePair(lead, trail); + return true; + } + } + this.rewind(start); + } + return false; + } + eatRegExpUnicodeCodePointEscape() { + const start = this.index; + if (this.eat(LeftCurlyBracket) && + this.eatHexDigits() && + this.eat(RightCurlyBracket) && + isValidUnicode(this._lastIntValue)) { + return true; + } + this.rewind(start); + return false; + } + eatIdentityEscape() { + const cp = this.currentCodePoint; + if (this.isValidIdentityEscape(cp)) { + this._lastIntValue = cp; + this.advance(); + return true; + } + return false; + } + isValidIdentityEscape(cp) { + if (cp === -1) { + return false; + } + if (this._uFlag) { + return isSyntaxCharacter(cp) || cp === Solidus; + } + if (this.strict) { + return !isIdContinue(cp); + } + if (this._nFlag) { + return !(cp === LatinSmallLetterC || cp === LatinSmallLetterK); + } + return cp !== LatinSmallLetterC; + } + eatDecimalEscape() { + this._lastIntValue = 0; + let cp = this.currentCodePoint; + if (cp >= DigitOne && cp <= DigitNine) { + do { + this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero); + this.advance(); + } while ((cp = this.currentCodePoint) >= DigitZero && + cp <= DigitNine); + return true; + } + return false; + } + eatUnicodePropertyValueExpression() { + const start = this.index; + if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) { + this._lastKeyValue = this._lastStrValue; + if (this.eatUnicodePropertyValue()) { + this._lastValValue = this._lastStrValue; + if (isValidUnicodeProperty(this.ecmaVersion, this._lastKeyValue, this._lastValValue)) { + return true; + } + this.raise("Invalid property name"); + } + } + this.rewind(start); + if (this.eatLoneUnicodePropertyNameOrValue()) { + const nameOrValue = this._lastStrValue; + if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) { + this._lastKeyValue = "General_Category"; + this._lastValValue = nameOrValue; + return true; + } + if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) { + this._lastKeyValue = nameOrValue; + this._lastValValue = ""; + return true; + } + this.raise("Invalid property name"); + } + return false; + } + eatUnicodePropertyName() { + this._lastStrValue = ""; + while (isUnicodePropertyNameCharacter(this.currentCodePoint)) { + this._lastStrValue += String.fromCodePoint(this.currentCodePoint); + this.advance(); + } + return this._lastStrValue !== ""; + } + eatUnicodePropertyValue() { + this._lastStrValue = ""; + while (isUnicodePropertyValueCharacter(this.currentCodePoint)) { + this._lastStrValue += String.fromCodePoint(this.currentCodePoint); + this.advance(); + } + return this._lastStrValue !== ""; + } + eatLoneUnicodePropertyNameOrValue() { + return this.eatUnicodePropertyValue(); + } + eatHexEscapeSequence() { + const start = this.index; + if (this.eat(LatinSmallLetterX)) { + if (this.eatFixedHexDigits(2)) { + return true; + } + if (this._uFlag || this.strict) { + this.raise("Invalid escape"); + } + this.rewind(start); + } + return false; + } + eatDecimalDigits() { + const start = this.index; + this._lastIntValue = 0; + while (isDecimalDigit(this.currentCodePoint)) { + this._lastIntValue = + 10 * this._lastIntValue + digitToInt(this.currentCodePoint); + this.advance(); + } + return this.index !== start; + } + eatHexDigits() { + const start = this.index; + this._lastIntValue = 0; + while (isHexDigit(this.currentCodePoint)) { + this._lastIntValue = + 16 * this._lastIntValue + digitToInt(this.currentCodePoint); + this.advance(); + } + return this.index !== start; + } + eatLegacyOctalEscapeSequence() { + if (this.eatOctalDigit()) { + const n1 = this._lastIntValue; + if (this.eatOctalDigit()) { + const n2 = this._lastIntValue; + if (n1 <= 3 && this.eatOctalDigit()) { + this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue; + } + else { + this._lastIntValue = n1 * 8 + n2; + } + } + else { + this._lastIntValue = n1; + } + return true; + } + return false; + } + eatOctalDigit() { + const cp = this.currentCodePoint; + if (isOctalDigit(cp)) { + this.advance(); + this._lastIntValue = cp - DigitZero; + return true; + } + this._lastIntValue = 0; + return false; + } + eatFixedHexDigits(length) { + const start = this.index; + this._lastIntValue = 0; + for (let i = 0; i < length; ++i) { + const cp = this.currentCodePoint; + if (!isHexDigit(cp)) { + this.rewind(start); + return false; + } + this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp); + this.advance(); + } + return true; + } +} + +const DummyPattern = {}; +const DummyFlags = {}; +const DummyCapturingGroup = {}; +class RegExpParserState { + constructor(options) { + this._node = DummyPattern; + this._flags = DummyFlags; + this._backreferences = []; + this._capturingGroups = []; + this.source = ""; + this.strict = Boolean(options && options.strict); + this.ecmaVersion = (options && options.ecmaVersion) || 2020; + } + get pattern() { + if (this._node.type !== "Pattern") { + throw new Error("UnknownError"); + } + return this._node; + } + get flags() { + if (this._flags.type !== "Flags") { + throw new Error("UnknownError"); + } + return this._flags; + } + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + this._flags = { + type: "Flags", + parent: null, + start, + end, + raw: this.source.slice(start, end), + global, + ignoreCase, + multiline, + unicode, + sticky, + dotAll, + }; + } + onPatternEnter(start) { + this._node = { + type: "Pattern", + parent: null, + start, + end: start, + raw: "", + alternatives: [], + }; + this._backreferences.length = 0; + this._capturingGroups.length = 0; + } + onPatternLeave(start, end) { + this._node.end = end; + this._node.raw = this.source.slice(start, end); + for (const reference of this._backreferences) { + const ref = reference.ref; + const group = typeof ref === "number" + ? this._capturingGroups[ref - 1] + : this._capturingGroups.find(g => g.name === ref); + reference.resolved = group; + group.references.push(reference); + } + } + onAlternativeEnter(start) { + const parent = this._node; + if (parent.type !== "Assertion" && + parent.type !== "CapturingGroup" && + parent.type !== "Group" && + parent.type !== "Pattern") { + throw new Error("UnknownError"); + } + this._node = { + type: "Alternative", + parent, + start, + end: start, + raw: "", + elements: [], + }; + parent.alternatives.push(this._node); + } + onAlternativeLeave(start, end) { + const node = this._node; + if (node.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onGroupEnter(start) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "Group", + parent, + start, + end: start, + raw: "", + alternatives: [], + }; + parent.elements.push(this._node); + } + onGroupLeave(start, end) { + const node = this._node; + if (node.type !== "Group" || node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onCapturingGroupEnter(start, name) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "CapturingGroup", + parent, + start, + end: start, + raw: "", + name, + alternatives: [], + references: [], + }; + parent.elements.push(this._node); + this._capturingGroups.push(this._node); + } + onCapturingGroupLeave(start, end) { + const node = this._node; + if (node.type !== "CapturingGroup" || + node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onQuantifier(start, end, min, max, greedy) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const element = parent.elements.pop(); + if (element == null || + element.type === "Quantifier" || + (element.type === "Assertion" && element.kind !== "lookahead")) { + throw new Error("UnknownError"); + } + const node = { + type: "Quantifier", + parent, + start: element.start, + end, + raw: this.source.slice(element.start, end), + min, + max, + greedy, + element, + }; + parent.elements.push(node); + element.parent = node; + } + onLookaroundAssertionEnter(start, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const node = (this._node = { + type: "Assertion", + parent, + start, + end: start, + raw: "", + kind, + negate, + alternatives: [], + }); + parent.elements.push(node); + } + onLookaroundAssertionLeave(start, end) { + const node = this._node; + if (node.type !== "Assertion" || node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onEdgeAssertion(start, end, kind) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Assertion", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + }); + } + onWordBoundaryAssertion(start, end, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Assertion", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + negate, + }); + } + onAnyCharacterSet(start, end, kind) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + }); + } + onEscapeCharacterSet(start, end, kind, negate) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + negate, + }); + } + onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "CharacterSet", + parent, + start, + end, + raw: this.source.slice(start, end), + kind, + key, + value, + negate, + }); + } + onCharacter(start, end, value) { + const parent = this._node; + if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + parent.elements.push({ + type: "Character", + parent, + start, + end, + raw: this.source.slice(start, end), + value, + }); + } + onBackreference(start, end, ref) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + const node = { + type: "Backreference", + parent, + start, + end, + raw: this.source.slice(start, end), + ref, + resolved: DummyCapturingGroup, + }; + parent.elements.push(node); + this._backreferences.push(node); + } + onCharacterClassEnter(start, negate) { + const parent = this._node; + if (parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + this._node = { + type: "CharacterClass", + parent, + start, + end: start, + raw: "", + negate, + elements: [], + }; + parent.elements.push(this._node); + } + onCharacterClassLeave(start, end) { + const node = this._node; + if (node.type !== "CharacterClass" || + node.parent.type !== "Alternative") { + throw new Error("UnknownError"); + } + node.end = end; + node.raw = this.source.slice(start, end); + this._node = node.parent; + } + onCharacterClassRange(start, end) { + const parent = this._node; + if (parent.type !== "CharacterClass") { + throw new Error("UnknownError"); + } + const elements = parent.elements; + const max = elements.pop(); + const hyphen = elements.pop(); + const min = elements.pop(); + if (!min || + !max || + !hyphen || + min.type !== "Character" || + max.type !== "Character" || + hyphen.type !== "Character" || + hyphen.value !== HyphenMinus) { + throw new Error("UnknownError"); + } + const node = { + type: "CharacterClassRange", + parent, + start, + end, + raw: this.source.slice(start, end), + min, + max, + }; + min.parent = node; + max.parent = node; + elements.push(node); + } +} +class RegExpParser { + constructor(options) { + this._state = new RegExpParserState(options); + this._validator = new RegExpValidator(this._state); + } + parseLiteral(source, start = 0, end = source.length) { + this._state.source = source; + this._validator.validateLiteral(source, start, end); + const pattern = this._state.pattern; + const flags = this._state.flags; + const literal = { + type: "RegExpLiteral", + parent: null, + start, + end, + raw: source, + pattern, + flags, + }; + pattern.parent = literal; + flags.parent = literal; + return literal; + } + parseFlags(source, start = 0, end = source.length) { + this._state.source = source; + this._validator.validateFlags(source, start, end); + return this._state.flags; + } + parsePattern(source, start = 0, end = source.length, uFlag = false) { + this._state.source = source; + this._validator.validatePattern(source, start, end, uFlag); + return this._state.pattern; + } +} + +class RegExpVisitor { + constructor(handlers) { + this._handlers = handlers; + } + visit(node) { + switch (node.type) { + case "Alternative": + this.visitAlternative(node); + break; + case "Assertion": + this.visitAssertion(node); + break; + case "Backreference": + this.visitBackreference(node); + break; + case "CapturingGroup": + this.visitCapturingGroup(node); + break; + case "Character": + this.visitCharacter(node); + break; + case "CharacterClass": + this.visitCharacterClass(node); + break; + case "CharacterClassRange": + this.visitCharacterClassRange(node); + break; + case "CharacterSet": + this.visitCharacterSet(node); + break; + case "Flags": + this.visitFlags(node); + break; + case "Group": + this.visitGroup(node); + break; + case "Pattern": + this.visitPattern(node); + break; + case "Quantifier": + this.visitQuantifier(node); + break; + case "RegExpLiteral": + this.visitRegExpLiteral(node); + break; + default: + throw new Error(`Unknown type: ${node.type}`); + } + } + visitAlternative(node) { + if (this._handlers.onAlternativeEnter) { + this._handlers.onAlternativeEnter(node); + } + node.elements.forEach(this.visit, this); + if (this._handlers.onAlternativeLeave) { + this._handlers.onAlternativeLeave(node); + } + } + visitAssertion(node) { + if (this._handlers.onAssertionEnter) { + this._handlers.onAssertionEnter(node); + } + if (node.kind === "lookahead" || node.kind === "lookbehind") { + node.alternatives.forEach(this.visit, this); + } + if (this._handlers.onAssertionLeave) { + this._handlers.onAssertionLeave(node); + } + } + visitBackreference(node) { + if (this._handlers.onBackreferenceEnter) { + this._handlers.onBackreferenceEnter(node); + } + if (this._handlers.onBackreferenceLeave) { + this._handlers.onBackreferenceLeave(node); + } + } + visitCapturingGroup(node) { + if (this._handlers.onCapturingGroupEnter) { + this._handlers.onCapturingGroupEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onCapturingGroupLeave) { + this._handlers.onCapturingGroupLeave(node); + } + } + visitCharacter(node) { + if (this._handlers.onCharacterEnter) { + this._handlers.onCharacterEnter(node); + } + if (this._handlers.onCharacterLeave) { + this._handlers.onCharacterLeave(node); + } + } + visitCharacterClass(node) { + if (this._handlers.onCharacterClassEnter) { + this._handlers.onCharacterClassEnter(node); + } + node.elements.forEach(this.visit, this); + if (this._handlers.onCharacterClassLeave) { + this._handlers.onCharacterClassLeave(node); + } + } + visitCharacterClassRange(node) { + if (this._handlers.onCharacterClassRangeEnter) { + this._handlers.onCharacterClassRangeEnter(node); + } + this.visitCharacter(node.min); + this.visitCharacter(node.max); + if (this._handlers.onCharacterClassRangeLeave) { + this._handlers.onCharacterClassRangeLeave(node); + } + } + visitCharacterSet(node) { + if (this._handlers.onCharacterSetEnter) { + this._handlers.onCharacterSetEnter(node); + } + if (this._handlers.onCharacterSetLeave) { + this._handlers.onCharacterSetLeave(node); + } + } + visitFlags(node) { + if (this._handlers.onFlagsEnter) { + this._handlers.onFlagsEnter(node); + } + if (this._handlers.onFlagsLeave) { + this._handlers.onFlagsLeave(node); + } + } + visitGroup(node) { + if (this._handlers.onGroupEnter) { + this._handlers.onGroupEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onGroupLeave) { + this._handlers.onGroupLeave(node); + } + } + visitPattern(node) { + if (this._handlers.onPatternEnter) { + this._handlers.onPatternEnter(node); + } + node.alternatives.forEach(this.visit, this); + if (this._handlers.onPatternLeave) { + this._handlers.onPatternLeave(node); + } + } + visitQuantifier(node) { + if (this._handlers.onQuantifierEnter) { + this._handlers.onQuantifierEnter(node); + } + this.visit(node.element); + if (this._handlers.onQuantifierLeave) { + this._handlers.onQuantifierLeave(node); + } + } + visitRegExpLiteral(node) { + if (this._handlers.onRegExpLiteralEnter) { + this._handlers.onRegExpLiteralEnter(node); + } + this.visitPattern(node.pattern); + this.visitFlags(node.flags); + if (this._handlers.onRegExpLiteralLeave) { + this._handlers.onRegExpLiteralLeave(node); + } + } +} + +function parseRegExpLiteral(source, options) { + return new RegExpParser(options).parseLiteral(String(source)); +} +function validateRegExpLiteral(source, options) { + return new RegExpValidator(options).validateLiteral(source); +} +function visitRegExpAST(node, handlers) { + new RegExpVisitor(handlers).visit(node); +} + +export { ast as AST, RegExpParser, RegExpValidator, parseRegExpLiteral, validateRegExpLiteral, visitRegExpAST }; +//# sourceMappingURL=index.mjs.map diff --git a/node_modules/regexpp/index.mjs.map b/node_modules/regexpp/index.mjs.map new file mode 100644 index 0000000..ee329be --- /dev/null +++ b/node_modules/regexpp/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/regexpp/package.json b/node_modules/regexpp/package.json new file mode 100644 index 0000000..029cbe7 --- /dev/null +++ b/node_modules/regexpp/package.json @@ -0,0 +1,84 @@ +{ + "name": "regexpp", + "version": "3.1.0", + "description": "Regular expression parser for ECMAScript.", + "engines": { + "node": ">=8" + }, + "main": "index", + "files": [ + "index.*" + ], + "dependencies": {}, + "devDependencies": { + "@mysticatea/eslint-plugin": "^11.0.0", + "@types/eslint": "^4.16.2", + "@types/jsdom": "^12.2.4", + "@types/mocha": "^5.2.2", + "@types/node": "^12.6.8", + "codecov": "^3.5.0", + "dts-bundle": "^0.7.3", + "eslint": "^6.1.0", + "jsdom": "^15.1.1", + "mocha": "^6.2.0", + "npm-run-all": "^4.1.5", + "nyc": "^14.1.1", + "rimraf": "^2.6.2", + "rollup": "^1.17.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-sourcemaps": "^0.4.2", + "ts-node": "^8.3.0", + "typescript": "^3.5.3" + }, + "scripts": { + "prebuild": "npm run -s clean", + "build": "run-s build:*", + "build:tsc": "tsc --module es2015", + "build:rollup": "rollup -c", + "build:dts": "dts-bundle --name regexpp --main .temp/index.d.ts --out ../index.d.ts", + "clean": "rimraf .temp index.*", + "codecov": "nyc report -r lcovonly && codecov -t ${CODECOV_TOKEN} --disable=gcov", + "lint": "eslint scripts src test --ext .ts", + "pretest": "run-s build lint", + "test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000", + "update:test": "ts-node scripts/update-fixtures.ts", + "update:unicode": "run-s update:unicode:*", + "update:unicode:ids": "ts-node scripts/update-unicode-ids.ts", + "update:unicode:props": "ts-node scripts/update-unicode-properties.ts", + "preversion": "npm test", + "version": "npm run -s build", + "postversion": "git push && git push --tags", + "prewatch": "npm run -s clean", + "watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/mysticatea/regexpp.git" + }, + "keywords": [ + "regexp", + "regular", + "expression", + "parser", + "validator", + "ast", + "abstract", + "syntax", + "tree", + "ecmascript", + "es2015", + "es2016", + "es2017", + "es2018", + "es2019", + "es2020", + "annexB" + ], + "author": "Toru Nagashima (https://github.com/mysticatea)", + "license": "MIT", + "bugs": { + "url": "https://github.com/mysticatea/regexpp/issues" + }, + "homepage": "https://github.com/mysticatea/regexpp#readme", + "funding": "https://github.com/sponsors/mysticatea" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..926f156 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,67 @@ +{ + "name": "Userscripts", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "eslint-plugin-clean-regex": "^0.5.1" + } + }, + "node_modules/eslint-plugin-clean-regex": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", + "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "dependencies": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + } + }, + "dependencies": { + "eslint-plugin-clean-regex": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", + "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "requires": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + } + }, + "refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "requires": { + "regexpp": "^3.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f77909f --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "eslint-plugin-clean-regex": "^0.5.1" + } +} From a6c9393116dc55053f25e48276ac6f47e4d0b932 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 12 Apr 2021 19:53:49 +0300 Subject: [PATCH 097/245] Update Instagram_-_visible_images_counter.user.js Fix for https://greasyfork.org/en/scripts/11635-instagram-visible-images-counter/discussions/82028 --- .../Instagram_-_visible_images_counter.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 9cdd432..8eac977 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.3.11 +// @version 2021.4.12 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -187,7 +187,7 @@ window.addEventListener('popstate', function (event) { (function(){ var rs = history.pushState; history.pushState = function(state, title, url){ - if ( !url.includes('/following/') && !url.includes('/followers/') && !url.includes('/p/') ){ // avoid all possible in-page/popup "pages" (a profile's following/followers, and posts -opened by clicking on a thumb-) + if ( !url.includes('/following/') && !url.includes('/followers/') && !url.includes('/p/') && !url.includes('/direct/') ){ // avoid all possible in-page/popup "pages" (a profile's following/followers, and posts -opened by clicking on a thumb-) rs.apply(history, arguments); // preserve normal functionality console.log('navigating', arguments); // do something extra here; raise an event removeCounter(); From d4b40cecec46889f94aec329dd722c61e500e744 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 20 Apr 2021 17:42:16 +0300 Subject: [PATCH 098/245] Update RARBG_-_various_tweaks.user.js --- RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index eb97c3f..25d64f6 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.2.6 +// @version 2021.4.20 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -294,7 +294,7 @@ if (!isOnTorrentListPage) { function removePipesLinebreaks(s){ if (s) { - return s.replace(/\|/g,',').replace(/\n/g,' '); + return s.replace(/(\||\n| |
)/g,' '); } } From 882eb0867f0f3280f73de782cc321598f1b5cea2 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 20 Apr 2021 22:18:49 +0300 Subject: [PATCH 099/245] Update RARBG_-_various_tweaks.user.js --- .../RARBG_-_various_tweaks.user.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index 25d64f6..b19bc49 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.4.20 +// @version 2021.4.20.1 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -19,7 +19,9 @@ // https://rarbgproxy.org/torrents.php?search=tt6139732 to // https://rarbgproxy.org/torrents.php?imdb=tt6139732 if (/torrents\.php\?search=tt[0-9]+/.test(window.location.href)) { - window.location.href = window.location.href.replace('?search=', '?imdb='); + // window.location.href = window.location.href.replace('?search=', '?imdb='); + window.location.replace(window.location.href.replace('?search=', '?imdb=')); // Use window.location.replace(url) if you want to redirect the user in a way that the current page is forgotten by the back button, ( https://stackoverflow.com/a/3170964 ) + throw 'Reloading page'; // Exit script execution } @@ -388,8 +390,13 @@ if (isOnSearchbyIMDbIdPage) { sessionStorage.setItem("imdbPlot", imdbPlot); let rtPlot = $(container).find(".header2:contains('Rotten Plot:')").next().html(); - rtPlot = removePipesLinebreaks(rtPlot); - sessionStorage.setItem("rtPlot", rtPlot); + if (rtPlot !== undefined){ + rtPlot = removePipesLinebreaks(rtPlot); + sessionStorage.setItem("rtPlot", rtPlot); + } else { + sessionStorage.removeItem("rtPlot"); + rtPlot = ''; + } let imdbRatingElement = $("b:contains('IMDb Rating:')"); $(imdbRatingElement).next().after("IMDb Summary: " + imdbPlot + '
'); @@ -400,7 +407,9 @@ if (isOnSearchbyIMDbIdPage) { if ($("b:contains('RT Tomatometer:')").length !== 0){ br = '
'; } - $(rtRatingElement).parent().html($(rtRatingElement).parent().html() + br + "RT Critics Consensus: " + rtPlot + '
'); + if (rtPlot !== ''){ + $(rtRatingElement).parent().html($(rtRatingElement).parent().html() + br + "RT Critics Consensus: " + rtPlot + '
'); + } } From 0c64d0be71994d78cf809e38ef1400ae841a516f Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 27 Apr 2021 21:11:37 +0300 Subject: [PATCH 100/245] Update RARBG_-_various_tweaks.user.js --- .../RARBG_-_various_tweaks.user.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index b19bc49..2a24c11 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.4.20.1 +// @version 2021.4.27 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -21,7 +21,7 @@ if (/torrents\.php\?search=tt[0-9]+/.test(window.location.href)) { // window.location.href = window.location.href.replace('?search=', '?imdb='); window.location.replace(window.location.href.replace('?search=', '?imdb=')); // Use window.location.replace(url) if you want to redirect the user in a way that the current page is forgotten by the back button, ( https://stackoverflow.com/a/3170964 ) - throw 'Reloading page'; // Exit script execution + throw 'Reloading page'; // Stop script execution } @@ -262,7 +262,8 @@ if (!isOnTorrentListPage) { let imdbPlot = $(container).find(".header2:contains('Plot:')").filter(function() { // https://stackoverflow.com/questions/8978411/jquery-ajax-findp-in-responsetext return $(this).text() === "Plot:"; // https://stackoverflow.com/questions/15364298/select-element-by-exact-match-of-its-content/18462522 - }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element + // }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element + }).next()[0].innerHTML.replace('','').replace('',''); if (imdbPlot !== undefined){ imdbPlot = removePipesLinebreaks(imdbPlot); // remove all '|', and replace all newlines with spaces sessionStorage.setItem("imdbPlot", imdbPlot); @@ -272,7 +273,6 @@ if (!isOnTorrentListPage) { } let rtPlot = $(container).find(".header2:contains('Rotten Plot:')").next().html(); - // alert(rtPlot) if (rtPlot !== undefined){ rtPlot = removePipesLinebreaks(rtPlot); sessionStorage.setItem("rtPlot", rtPlot); @@ -296,7 +296,9 @@ if (!isOnTorrentListPage) { function removePipesLinebreaks(s){ if (s) { - return s.replace(/(\||\n| |
)/g,' '); + return s.replace(/(\ \|)/gm,',') + .replace(/(\|)/gm,',') + .replace(/(\r\n|\n|\r| |
)/gm,' '); } } @@ -333,7 +335,8 @@ if (isOnSearchbyIMDbIdPage) { if (imdbRatingElement.length > 0){ imdbRatingElement.html('IMDb Rating:'); } else { // Example: https://rarbgproxy.org/torrents.php?imdb=tt9139586 - imdbRatingElement = $("b:contains('Runtime:')"); + // imdbRatingElement = $("b:contains('Runtime:')"); + imdbRatingElement = $("b:contains('Runtime:'), b:contains('Year:')"); // when there's no 'Runtime' element but only 'Year', e.g. https://rarbgproxy.org/torrents.php?imdb=tt4136456 $(imdbRatingElement).parent().html($(imdbRatingElement).parent().html() + 'IMDB Rating:
'); imdbRatingElement = $("b:contains('IMDB Rating:')"); imdbRatingElement.html('IMDb Rating: -'); @@ -385,7 +388,8 @@ if (isOnSearchbyIMDbIdPage) { let imdbPlot = $(container).find(".header2:contains('Plot:')").filter(function() { // https://stackoverflow.com/questions/8978411/jquery-ajax-findp-in-responsetext return $(this).text() === "Plot:"; // https://stackoverflow.com/questions/15364298/select-element-by-exact-match-of-its-content/18462522 (in order to only select IMDb's plain "Plot", not "Rotten Plot", too ) - }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element + // }).next()[0].innerText; // [0] ---> convert jQuery element/node to a regular DOM element + }).next()[0].innerHTML.replace('','').replace('',''); imdbPlot = removePipesLinebreaks(imdbPlot); sessionStorage.setItem("imdbPlot", imdbPlot); From 6e1ff9bfe4efde8eacfbfcf2b2e38877a5c02905 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 7 May 2021 23:15:38 +0300 Subject: [PATCH 101/245] Update Rotten_Tomatoes_Decimal_Rating.user.js --- .../Rotten_Tomatoes_Decimal_Rating.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js b/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js index 5465a45..b50d9d1 100644 --- a/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js +++ b/Rotten_Tomatoes_Decimal_Rating/Rotten_Tomatoes_Decimal_Rating.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Rotten Tomatoes Decimal Rating // @namespace darkred -// @version 6.0 +// @version 6.0.1 // @description Changes base-5 Rating of Rotten Tomatoes to base-10 // @author wOxxOm, darkred // @license MIT @@ -95,8 +95,8 @@ scoreBoard.onclick = function(event) { buttonQuestionmarkTomatometer.addEventListener('click', function(){ let descriptiveTextTomatometer = document.querySelector('#mainColumn > overlay-base > score-details > score-details-critics > tool-tip').shadowRoot.querySelector('.description'); - if (!descriptiveTextTomatometer.textContent.includes('review (=6 stars or higher)')) { - descriptiveTextTomatometer.innerHTML = descriptiveTextTomatometer.innerHTML.replace('review', 'review (=6 stars or higher)'); + if (!descriptiveTextTomatometer.textContent.includes('review (6 stars or higher)')) { + descriptiveTextTomatometer.innerHTML = descriptiveTextTomatometer.innerHTML.replace('review', 'review (6 stars or higher)'); } }); From 094d97f9774ae1ac6924fe5114ac9dffbf0919f4 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 8 May 2021 16:47:48 +0300 Subject: [PATCH 102/245] chore --- .eslintrc.js | 7 +- .gitignore | 3 + node_modules/.package-lock.json | 1272 +++++++++++++++++ package-lock.json | 2310 ++++++++++++++++++++++++++++++- package.json | 6 +- 5 files changed, 3572 insertions(+), 26 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 7da537a..54fba11 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,10 +11,13 @@ module.exports = { "extends": [ // "eslint:all", "eslint:recommended", - "plugin:clean-regex/recommended" + // "plugin:clean-regex/recommended" + "plugin:regexp/recommended" + ], "plugins": [ - "clean-regex" + // "clean-regex" + "regexp" ], "parserOptions": { "ecmaVersion": 12, diff --git a/.gitignore b/.gitignore index cd2946a..6c433f2 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,6 @@ $RECYCLE.BIN/ Network Trash Folder Temporary Items .apdisk + + +node_modules/ diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index a59e9f5..56d0642 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -3,10 +3,435 @@ "lockfileVersion": 2, "requires": true, "packages": { + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-plugin-clean-regex": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "dev": true, "dependencies": { "refa": "^0.7.1", "regexpp": "^3.1.0" @@ -15,10 +440,594 @@ "node": ">=12.0.0" } }, + "node_modules/eslint-plugin-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", + "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "dev": true, + "dependencies": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.0", + "regexpp": "^3.1.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-regexp/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true, + "bin": { + "jsdoctypeparser": "bin/jsdoctypeparser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/refa": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regexp-ast-analysis": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", + "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "dev": true, + "dependencies": { + "refa": "^0.8.0", + "regexpp": "^3.1.0" + } + }, + "node_modules/regexp-ast-analysis/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, "dependencies": { "regexpp": "^3.1.0" } @@ -27,12 +1036,275 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/mysticatea" } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", + "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", + "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package-lock.json b/package-lock.json index 926f156..171120a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,64 +4,2330 @@ "requires": true, "packages": { "": { + "devDependencies": { + "eslint": "^7.26.0", + "eslint-plugin-clean-regex": "^0.5.1", + "eslint-plugin-regexp": "^0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "eslint-plugin-clean-regex": "^0.5.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-clean-regex": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", + "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "dev": true, + "dependencies": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", + "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "dev": true, + "dependencies": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.0", + "regexpp": "^3.1.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-regexp/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true, + "bin": { + "jsdoctypeparser": "bin/jsdoctypeparser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regexp-ast-analysis": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", + "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "dev": true, + "dependencies": { + "refa": "^0.8.0", + "regexpp": "^3.1.0" + } + }, + "node_modules/regexp-ast-analysis/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", + "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", + "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint-plugin-clean-regex": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", - "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "dependencies": { - "refa": "^0.7.1", - "regexpp": "^3.1.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=12.0.0" + "node": ">= 0.8.0" } }, - "node_modules/refa": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", - "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { - "regexpp": "^3.1.0" + "punycode": "^2.1.0" } }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "engines": { - "node": ">=8" + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, "eslint-plugin-clean-regex": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", + "dev": true, "requires": { "refa": "^0.7.1", "regexpp": "^3.1.0" } }, + "eslint-plugin-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", + "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "dev": true, + "requires": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.0", + "regexpp": "^3.1.0" + }, + "dependencies": { + "refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "requires": { + "regexpp": "^3.1.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, "refa": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dev": true, + "requires": { + "regexpp": "^3.1.0" + } + }, + "regexp-ast-analysis": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", + "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "dev": true, "requires": { + "refa": "^0.8.0", "regexpp": "^3.1.0" + }, + "dependencies": { + "refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "requires": { + "regexpp": "^3.1.0" + } + } } }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", + "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", + "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package.json b/package.json index f77909f..8114529 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,7 @@ { - "dependencies": { - "eslint-plugin-clean-regex": "^0.5.1" + "devDependencies": { + "eslint": "^7.26.0", + "eslint-plugin-clean-regex": "^0.5.1", + "eslint-plugin-regexp": "^0.10.0" } } From 058e8422e7086c0e12278af674daba4a9a85c0da Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 8 Jun 2021 23:58:39 +0300 Subject: [PATCH 103/245] Update ProtonMail_-_remove_forced_signature.user.js Updated for the recent layout update. Closes #27 --- ...otonMail_-_remove_forced_signature.user.js | 63 +++++++------------ 1 file changed, 24 insertions(+), 39 deletions(-) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index f0d0ffe..4dd6eec 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -1,12 +1,11 @@ // ==UserScript== // @name ProtonMail - remove forced signature // @namespace darkred -// @version 2021.2.16 +// @version 2021.6.9 // @description Removes the forced ProtonMail signature from the 'New message' textboxes // @author darkred // @license MIT // @include https://mail.protonmail.com/* -// @include https://beta.protonmail.com/* // @include https://protonirockerxow.onion/* // @grant none // @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js @@ -14,50 +13,36 @@ // @icon https://protonmail.com/images/favicon.ico // ==/UserScript== -const isInBeta = window.location.href.includes('beta'); - -var elementToWatch; -isInBeta? elementToWatch = '.squireIframe' : elementToWatch = '.squireToolbar-row-1'; - - -// wait for the formatting toolbar element to be created +const elementToWatch = 'iframe[title="Editor"]'; document.arrive(elementToWatch, function () { + let iframe = this.contentDocument; // refers to the newly created element - // debugger - - let iframe; - + const config = { + childList: true, + subtree: true + }; + const callback = function(mutationList, observer) { + mutationList.forEach( (mutation) => { + mutation.addedNodes.forEach( (node) => { + if (node.className === 'protonmail_signature_block') { + const parent = node.parentElement; - if (!isInBeta) { + node.previousSibling.remove(); // remove (the element that contains a) leftover newline (
) + node.remove(); // remove the signature element itself - iframe = document.querySelector('.squireIframe').contentDocument; - iframe.querySelector('.protonmail_signature_block').remove(); // remove the signature element - iframe.querySelector('body > div:last-child').remove(); // remove (the element that contains a) leftover newline (
) + // Simulate a 'Delete' key press on the message textarea + parent.children[0].dispatchEvent(new KeyboardEvent('keydown', {'key':'Delete'} )); + parent.children[0].dispatchEvent(new KeyboardEvent( 'keyup' , {'key':'Delete'} )); - } else { - - iframe = this.contentDocument; - - // Setup the config - const config = { - childList: true, - subtree: true - }; + observer.disconnect(); + } + }); - const callback = function callback(mutationList, observer) { - mutationList.forEach( (mutation) => { - mutation.addedNodes.forEach( (node) => { - if (node.className === 'protonmail_signature_block') { - node.remove(); - observer.disconnect(); - }}); + }); + }; - }); - }; + const observer = new MutationObserver(callback); + observer.observe(iframe, config); - // Watch the iframe for changes - const observer = new MutationObserver(callback); - observer.observe(iframe, config); - } }); From 450aed16ca0c70c6f5daefd768b0e2aeca214d88 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 9 Jun 2021 13:18:08 +0300 Subject: [PATCH 104/245] Update ProtonMail_-_remove_forced_signature.user.js --- .../ProtonMail_-_remove_forced_signature.user.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js index 4dd6eec..cbd365e 100644 --- a/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js +++ b/ProtonMail_-_remove_forced_signature/ProtonMail_-_remove_forced_signature.user.js @@ -26,14 +26,14 @@ document.arrive(elementToWatch, function () { mutationList.forEach( (mutation) => { mutation.addedNodes.forEach( (node) => { if (node.className === 'protonmail_signature_block') { - const parent = node.parentElement; + const parent = node.parentElement; // it's '#squire' and has 3 children: two with
and the signature itself - node.previousSibling.remove(); // remove (the element that contains a) leftover newline (
) - node.remove(); // remove the signature element itself + node.previousSibling.remove(); // remove the element that contains a leftover newline (
) ( children[1] ) + node.remove(); // remove the signature element itself ( children[2] ) - // Simulate a 'Delete' key press on the message textarea - parent.children[0].dispatchEvent(new KeyboardEvent('keydown', {'key':'Delete'} )); - parent.children[0].dispatchEvent(new KeyboardEvent( 'keyup' , {'key':'Delete'} )); + // Simulate a 'Delete' key press on the message textarea to remove the remaining
element ( children[0] ) + parent.firstChild.dispatchEvent(new KeyboardEvent('keydown', {'key':'Delete'} )); + parent.firstChild.dispatchEvent(new KeyboardEvent( 'keyup' , {'key':'Delete'} )); observer.disconnect(); } From 67755122c25c1a17c4f5e8324de3bdf56e6b41e5 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 13 Jun 2021 11:27:06 +0300 Subject: [PATCH 105/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 5a45b1a..0c7c585 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,7 +11,7 @@ assignees: '' Thanks for reporting a bug! ⛰ 1. Start the issue title with the related script name in parenthesis. -2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first. +2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first, and/or even better in a fresh browser profile. 3. Be as specific as possible, I need to know where to look. 4. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. List any errors displayed in Console. From 5a463a734b7f3bca0609e509107ff2c3bdb27a73 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 15 Jun 2021 13:19:36 +0300 Subject: [PATCH 106/245] devDependencies versions --- node_modules/.package-lock.json | 154 +++++++++-------- package-lock.json | 282 +++++++++++++++++--------------- package.json | 6 +- 3 files changed, 235 insertions(+), 207 deletions(-) diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 56d0642..e9b4710 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -13,20 +13,26 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -70,6 +76,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -92,15 +107,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -111,30 +126,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -365,37 +356,42 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -404,7 +400,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -413,7 +409,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -441,22 +437,40 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", - "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", + "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", "dev": true, "dependencies": { "comment-parser": "^1.1.2", - "eslint-utils": "^2.1.0", + "eslint-utils": "^3.0.0", "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.0", + "regexp-ast-analysis": "^0.2.2", "regexpp": "^3.1.0" }, "peerDependencies": { "eslint": ">=6.0.0" } }, + "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/eslint-plugin-regexp/node_modules/refa": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", @@ -702,9 +716,9 @@ } }, "node_modules/globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -867,18 +881,18 @@ "node": ">= 0.8.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -1014,9 +1028,9 @@ } }, "node_modules/regexp-ast-analysis": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", - "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", + "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", "dev": true, "dependencies": { "refa": "^0.8.0", @@ -1187,9 +1201,9 @@ } }, "node_modules/table": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", - "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -1204,9 +1218,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", - "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", diff --git a/package-lock.json b/package-lock.json index 171120a..e0bdc80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "packages": { "": { "devDependencies": { - "eslint": "^7.26.0", - "eslint-plugin-clean-regex": "^0.5.1", - "eslint-plugin-regexp": "^0.10.0" + "eslint": "*", + "eslint-plugin-clean-regex": "*", + "eslint-plugin-regexp": "*" } }, "node_modules/@babel/code-frame": { @@ -20,20 +20,26 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -77,6 +83,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -99,15 +114,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -118,30 +133,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -372,37 +363,42 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -411,7 +407,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -420,7 +416,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -448,22 +444,40 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", - "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", + "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", "dev": true, "dependencies": { "comment-parser": "^1.1.2", - "eslint-utils": "^2.1.0", + "eslint-utils": "^3.0.0", "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.0", + "regexp-ast-analysis": "^0.2.2", "regexpp": "^3.1.0" }, "peerDependencies": { "eslint": ">=6.0.0" } }, + "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/eslint-plugin-regexp/node_modules/refa": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", @@ -709,9 +723,9 @@ } }, "node_modules/globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -874,18 +888,18 @@ "node": ">= 0.8.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -1021,9 +1035,9 @@ } }, "node_modules/regexp-ast-analysis": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", - "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", + "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", "dev": true, "dependencies": { "refa": "^0.8.0", @@ -1194,9 +1208,9 @@ } }, "node_modules/table": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", - "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -1211,9 +1225,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", - "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -1325,18 +1339,18 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", "dev": true }, "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -1376,6 +1390,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1394,37 +1414,20 @@ } }, "@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } } }, "acorn": { @@ -1598,34 +1601,36 @@ } }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -1634,7 +1639,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1643,7 +1648,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" } @@ -1659,19 +1664,28 @@ } }, "eslint-plugin-regexp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.10.0.tgz", - "integrity": "sha512-KwIdNUnwz9CFZ1jApWZ++Y1cVWbJBYdJHMDh7KNe9HpElSwHGZHtX1QaHq3Iv2nMYJitGIE6JdkYbfzm9BzPQw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", + "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", "dev": true, "requires": { "comment-parser": "^1.1.2", - "eslint-utils": "^2.1.0", + "eslint-utils": "^3.0.0", "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.0", + "regexp-ast-analysis": "^0.2.2", "regexpp": "^3.1.0" }, "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, "refa": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", @@ -1866,9 +1880,9 @@ } }, "globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -1989,18 +2003,18 @@ "type-check": "~0.4.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -2109,9 +2123,9 @@ } }, "regexp-ast-analysis": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.0.tgz", - "integrity": "sha512-ZVNwBF65Gn4CbRdPNYle8NAPFSDbbJ83svYUk4Mpqmr1QTUx2M06my9x7o8Hw/oFXDwXrJo/7W+ijLfFM5oG2Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", + "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", "dev": true, "requires": { "refa": "^0.8.0", @@ -2233,9 +2247,9 @@ } }, "table": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", - "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -2247,9 +2261,9 @@ }, "dependencies": { "ajv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", - "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", diff --git a/package.json b/package.json index 8114529..f8c5c8a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "eslint": "^7.26.0", - "eslint-plugin-clean-regex": "^0.5.1", - "eslint-plugin-regexp": "^0.10.0" + "eslint": "*", + "eslint-plugin-clean-regex": "*", + "eslint-plugin-regexp": "*" } } From 7ad1e19c65710cfd41195db859ae98902a0a4982 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 15 Jun 2021 15:23:09 +0300 Subject: [PATCH 107/245] 1337x scripts - add top-100 variations in the `@include rule` Per https://greasyfork.org/en/scripts/420754-1337x-torrent-and-magnet-links/discussions/89935 --- ...7X_-_convert_torrent_timestamps_to_relative_format.user.js | 4 ++-- .../1337x_-_torrent_and_magnet_links.user.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index 9ca67b2..fb64c86 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,11 +1,11 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.3.28 +// @version 2021.6.15 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT -// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data-10-year-range.min.js diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 79a6dc3..42296e7 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,12 +1,12 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.1.28 +// @version 2021.6.15 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant GM_addStyle // @run-at document-idle // From b1a2d2f6bd86132a492b391fadf815af200d0623 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 15 Jun 2021 16:55:54 +0300 Subject: [PATCH 108/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0c7c585..8b10d72 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,9 +12,10 @@ Thanks for reporting a bug! ⛰ 1. Start the issue title with the related script name in parenthesis. 2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first, and/or even better in a fresh browser profile. -3. Be as specific as possible, I need to know where to look. -4. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. -List any errors displayed in Console. +3. When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? +If it's the former them its `@include` rule needs additions. If it's the latter, post the Console errors. +3. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. +4. Be as specific as possible, I need to know where to look. 5. Include a screenshot/gif in so I can help you better. 6. Include name and version of your browser and script manager (Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported). From 5072b22b1ecd4f5edda04c31997037a6055d4cb5 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 15 Jun 2021 16:57:35 +0300 Subject: [PATCH 109/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8b10d72..4d4d8ac 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -13,7 +13,7 @@ Thanks for reporting a bug! ⛰ 1. Start the issue title with the related script name in parenthesis. 2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first, and/or even better in a fresh browser profile. 3. When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? -If it's the former them its `@include` rule needs additions. If it's the latter, post the Console errors. +If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in your report. 3. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. 4. Be as specific as possible, I need to know where to look. 5. Include a screenshot/gif in so I can help you better. From dfcbc90436356b50419b14bbc34a5edd3287867a Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 16 Jun 2021 16:58:12 +0300 Subject: [PATCH 110/245] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4d4d8ac..58503e8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,7 +11,7 @@ assignees: '' Thanks for reporting a bug! ⛰ 1. Start the issue title with the related script name in parenthesis. -2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first, and/or even better in a fresh browser profile. +2. Make sure the bug is caused by the script: try disabling the other scripts (and extensions) first, and even better in a fresh browser profile. 3. When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in your report. 3. Provide STR (steps to reproduce) and a full URL where the bug appears, if needed. From 74cd1550beac8789795807fbcfe2d6c8232efac3 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 25 Jun 2021 22:34:05 +0300 Subject: [PATCH 111/245] Create BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/BUG.yml diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml new file mode 100644 index 0000000..17e395b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -0,0 +1,71 @@ +name: Bug Report +description: File a bug report +title: "[script title]: " +labels: [bug, triage] +assignees: + - octocat +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: checkboxes + id: terms + attributes: + label: Please confirm the following + options: + - label: "I included in the issue title the script name I'm referring to" + required: true + - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) to avoid opening a duplicate issue + required: true + - label: I tested the script disabling all others, and if needed in a fresh profile. + required: true + - type: textarea + id: what-happened + attributes: + label: What happened? + description: "Also tell us, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the textarea below. " + placeholder: Describe the issue. + value: + validations: + required: true + - type: input + id: example-url + attributes: + label: Example URL + description: Provide a full URL where the bug appears. + placeholder: example.com/page1.htm + validations: + required: false + - type: dropdown + id: version + attributes: + label: Version + description: What script manager are you using? (Greasemonkey is NOT supported) + multiple: true + options: + - Tampermonkey + - Violentmonkey + validations: + required: true + - type: dropdown + id: browsers + attributes: + label: What browsers are you seeing the problem on? + multiple: true + options: + - Firefox + - Chrome + - Safari + - Microsoft Edge + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: "Please drag'n'drop any screenshots/gif in so I can help you better." + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell From 3bbc33b3fdd5e56b8b95477627c3ffb4d9bb2821 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 25 Jun 2021 22:34:27 +0300 Subject: [PATCH 112/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 17e395b..5578887 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -1,6 +1,6 @@ name: Bug Report description: File a bug report -title: "[script title]: " +title: "[script title] " labels: [bug, triage] assignees: - octocat From 8239ab3016413a315b71078e6d74fb01a8b98425 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 25 Jun 2021 22:35:22 +0300 Subject: [PATCH 113/245] Create config.yml --- .github/ISSUE_TEMPLATE/config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false From 57faece14b7841ae31baedb7fb57758cfbf9d8e7 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 25 Jun 2021 22:36:49 +0300 Subject: [PATCH 114/245] Rename bug_report.md to bug_report.md.old --- .github/ISSUE_TEMPLATE/{bug_report.md => bug_report.md.old} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/ISSUE_TEMPLATE/{bug_report.md => bug_report.md.old} (100%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md.old similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.md rename to .github/ISSUE_TEMPLATE/bug_report.md.old From cf650a8506f22147eab09059ed32162120de3f52 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:48:01 +0300 Subject: [PATCH 115/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 5578887..1d1fbea 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -14,21 +14,32 @@ body: attributes: label: Please confirm the following options: - - label: "I included in the issue title the script name I'm referring to" + - label: "I included in the issue title the script name I'm referring to." required: true - - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) to avoid opening a duplicate issue + - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) to avoid opening a duplicate issue. required: true - - label: I tested the script disabling all others, and if needed in a fresh profile. + - label: I tested the script disabling all others, and if needed in a fresh browser profile. required: true - type: textarea id: what-happened attributes: label: What happened? - description: "Also tell us, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the textarea below. " + description: "Also tell us, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " placeholder: Describe the issue. value: validations: required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: "Please drag'n'drop screenshots/gif so I can help you better." + - type: textarea + id: logs + attributes: + label: Console output + description: Please copy and paste any relevant console log output. This will be automatically formatted into code, so no need for backticks. + render: shell - type: input id: example-url attributes: @@ -58,14 +69,3 @@ body: - Chrome - Safari - Microsoft Edge - - type: textarea - id: screenshots - attributes: - label: Screenshots - description: "Please drag'n'drop any screenshots/gif in so I can help you better." - - type: textarea - id: logs - attributes: - label: Relevant log output - description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. - render: shell From ccde5b726a2b75d2106427cca35640a29a94c22f Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:48:30 +0300 Subject: [PATCH 116/245] Update BUG.yml From 8bdb4932ecec5504f5ec1e821674acacd091328f Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:55:46 +0300 Subject: [PATCH 117/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 1d1fbea..a893669 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -24,8 +24,8 @@ body: id: what-happened attributes: label: What happened? - description: "Also tell us, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " - placeholder: Describe the issue. + description: "Also describe, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " + placeholder: Describe the issue. be as specific as possible, I need to know where to look. Provide all necessary details. value: validations: required: true @@ -51,7 +51,7 @@ body: - type: dropdown id: version attributes: - label: Version + label: Script Manager description: What script manager are you using? (Greasemonkey is NOT supported) multiple: true options: @@ -62,10 +62,11 @@ body: - type: dropdown id: browsers attributes: - label: What browsers are you seeing the problem on? + label: Browser + description: What browsers are you seeing the problem on? old Firefox/Waterfox versions are NOT supported) multiple: true options: - - Firefox - Chrome + - Firefox - Safari - Microsoft Edge From 94d96046e7f6016194526bdb09f166672312abc1 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:56:47 +0300 Subject: [PATCH 118/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index a893669..2184d65 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -25,7 +25,7 @@ body: attributes: label: What happened? description: "Also describe, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " - placeholder: Describe the issue. be as specific as possible, I need to know where to look. Provide all necessary details. + placeholder: Describe the issue (be as specific as possible, I need to know where to look). Provide all necessary details. value: validations: required: true From 90a826d7a76ac8619048311f3478665e90a1f918 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:58:12 +0300 Subject: [PATCH 119/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 2184d65..10bb4d3 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -70,3 +70,5 @@ body: - Firefox - Safari - Microsoft Edge + validations: + required: true From 0242f1280305eb2d93de46094e2cb423dff99c07 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 00:59:01 +0300 Subject: [PATCH 120/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 10bb4d3..eb60d4e 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -63,7 +63,7 @@ body: id: browsers attributes: label: Browser - description: What browsers are you seeing the problem on? old Firefox/Waterfox versions are NOT supported) + description: What browsers are you seeing the problem on? (old Firefox/Waterfox versions are NOT supported) multiple: true options: - Chrome From 9548af7c70dc0a7ce6ad889cacc4cddb8eae000c Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 01:00:25 +0300 Subject: [PATCH 121/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index eb60d4e..ccdb086 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -18,7 +18,7 @@ body: required: true - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) to avoid opening a duplicate issue. required: true - - label: I tested the script disabling all others, and if needed in a fresh browser profile. + - label: I tested the script having disabled all others, and in a fresh browser profile if needed. required: true - type: textarea id: what-happened From 0061537a83914cb2d7d04f144cdbc414a075c00b Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 01:01:12 +0300 Subject: [PATCH 122/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index ccdb086..d65dc1a 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -2,8 +2,6 @@ name: Bug Report description: File a bug report title: "[script title] " labels: [bug, triage] -assignees: - - octocat body: - type: markdown attributes: From 6fc396d49c6566c3902418b30c380cd2ed13cccc Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 01:03:42 +0300 Subject: [PATCH 123/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index d65dc1a..dfd364e 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -10,7 +10,7 @@ body: - type: checkboxes id: terms attributes: - label: Please confirm the following + label: Please confirm the following: options: - label: "I included in the issue title the script name I'm referring to." required: true @@ -45,7 +45,7 @@ body: description: Provide a full URL where the bug appears. placeholder: example.com/page1.htm validations: - required: false + required: true - type: dropdown id: version attributes: From 3a2f0f3841aefac4430f7e81a55eaa9d8ba7e24e Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 01:04:29 +0300 Subject: [PATCH 124/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index dfd364e..482fdb3 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -10,7 +10,7 @@ body: - type: checkboxes id: terms attributes: - label: Please confirm the following: + label: "Please confirm the following:" options: - label: "I included in the issue title the script name I'm referring to." required: true From ff026399bd2fb287c6554edeca12106ae02018db Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 20:05:10 +0300 Subject: [PATCH 125/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 482fdb3..315e4a1 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -24,7 +24,7 @@ body: label: What happened? description: "Also describe, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " placeholder: Describe the issue (be as specific as possible, I need to know where to look). Provide all necessary details. - value: + value: '' validations: required: true - type: textarea @@ -67,6 +67,6 @@ body: - Chrome - Firefox - Safari - - Microsoft Edge + - Edge validations: required: true From c0d94859975972722d5205eef0c283e7d3d84e91 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 20:06:09 +0300 Subject: [PATCH 126/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 315e4a1..a76979e 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -24,7 +24,7 @@ body: label: What happened? description: "Also describe, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " placeholder: Describe the issue (be as specific as possible, I need to know where to look). Provide all necessary details. - value: '' + value: validations: required: true - type: textarea From 5706d2f30bc28a34e1c259a451873150d67c0550 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 26 Jun 2021 22:35:46 +0300 Subject: [PATCH 127/245] updated node modules --- node_modules/.package-lock.json | 12 ++++----- node_modules/regexpp/index.d.ts | 5 ++-- node_modules/regexpp/index.js | 41 +++++++++++++++++++----------- node_modules/regexpp/index.js.map | 2 +- node_modules/regexpp/index.mjs | 41 +++++++++++++++++++----------- node_modules/regexpp/index.mjs.map | 2 +- node_modules/regexpp/package.json | 9 ++++++- package-lock.json | 24 ++++++++--------- 8 files changed, 83 insertions(+), 53 deletions(-) diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index e9b4710..1e48946 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -368,9 +368,9 @@ } }, "node_modules/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", @@ -1047,9 +1047,9 @@ } }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { "node": ">=8" diff --git a/node_modules/regexpp/index.d.ts b/node_modules/regexpp/index.d.ts index a2cf3f1..aa48029 100644 --- a/node_modules/regexpp/index.d.ts +++ b/node_modules/regexpp/index.d.ts @@ -137,6 +137,7 @@ declare module 'regexpp/ast' { parent: RegExpLiteral | null; dotAll: boolean; global: boolean; + hasIndices: boolean; ignoreCase: boolean; multiline: boolean; sticky: boolean; @@ -169,7 +170,7 @@ declare module 'regexpp/validator' { ecmaVersion?: EcmaVersion; onLiteralEnter?(start: number): void; onLiteralLeave?(start: number, end: number): void; - onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean): void; + onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void; onPatternEnter?(start: number): void; onPatternLeave?(start: number, end: number): void; onDisjunctionEnter?(start: number): void; @@ -242,6 +243,6 @@ declare module 'regexpp/visitor' { } declare module 'regexpp/ecma-versions' { - export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020; + export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022; } diff --git a/node_modules/regexpp/index.js b/node_modules/regexpp/index.js index 12b4a5f..cd0e165 100644 --- a/node_modules/regexpp/index.js +++ b/node_modules/regexpp/index.js @@ -47,10 +47,10 @@ function isLargeIdContinue(cp) { (largeIdContinueRanges = initLargeIdContinueRanges())); } function initLargeIdStartRanges() { - return restoreRanges("170 0 11 0 5 0 6 22 2 30 2 457 5 11 15 4 8 0 2 0 130 4 2 1 3 3 2 0 7 0 2 2 2 0 2 19 2 82 2 138 9 165 2 37 3 0 7 40 72 26 5 3 46 42 36 1 2 98 2 0 16 1 8 1 11 2 3 0 17 0 2 29 30 88 12 0 25 32 10 1 5 0 6 21 5 0 10 0 4 0 24 24 8 10 54 20 2 17 61 53 4 0 19 0 8 9 16 15 5 7 3 1 3 21 2 6 2 0 4 3 4 0 17 0 14 1 2 2 15 1 11 0 9 5 5 1 3 21 2 6 2 1 2 1 2 1 32 3 2 0 20 2 17 8 2 2 2 21 2 6 2 1 2 4 4 0 19 0 16 1 24 0 12 7 3 1 3 21 2 6 2 1 2 4 4 0 31 1 2 2 16 0 18 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 11 23 0 53 7 2 2 2 22 2 15 4 0 27 2 6 1 31 0 5 7 2 2 2 22 2 9 2 4 4 0 33 0 2 1 16 1 18 8 2 2 2 40 3 0 17 0 6 2 9 2 25 5 6 17 4 23 2 8 2 0 3 6 59 47 2 1 13 6 59 1 2 0 2 4 2 23 2 0 2 9 2 1 10 0 3 4 2 0 22 3 33 0 64 7 2 35 28 4 116 42 21 0 17 5 5 3 4 0 4 1 8 2 5 12 13 0 18 37 2 0 6 0 3 42 2 332 2 3 3 6 2 0 2 3 3 40 2 3 3 32 2 3 3 6 2 0 2 3 3 14 2 56 2 3 3 66 38 15 17 85 3 5 4 619 3 16 2 25 6 74 4 10 8 12 2 3 15 17 15 17 15 12 2 2 16 51 36 0 5 0 68 88 8 40 2 0 6 69 11 30 50 29 3 4 12 43 5 25 55 22 10 52 83 0 94 46 18 6 56 29 14 1 11 43 27 35 42 2 11 35 3 8 8 42 3 2 42 3 2 5 2 1 4 0 6 191 65 277 3 5 3 37 3 5 3 7 2 0 2 0 2 0 2 30 3 52 2 6 2 0 4 2 2 6 4 3 3 5 5 12 6 2 2 6 117 0 14 0 17 12 102 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 15 3 3 6 4 5 0 18 40 2680 46 2 46 2 132 7 3 4 1 13 37 2 0 6 0 3 55 8 0 17 22 10 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 551 2 26 8 8 4 3 4 5 85 5 4 2 89 2 3 6 42 2 93 18 31 49 15 513 6591 65 20988 4 1164 68 45 3 268 4 15 11 1 21 46 17 30 3 79 40 8 3 102 3 52 3 8 43 12 2 2 2 3 2 22 30 51 15 49 63 5 4 0 2 1 12 27 11 22 26 28 8 46 29 0 17 4 2 9 11 4 2 40 24 2 2 7 21 22 4 0 4 49 2 0 4 1 3 4 3 0 2 0 25 2 3 10 8 2 13 5 3 5 3 5 10 6 2 6 2 42 2 13 7 114 30 11171 13 22 5 48 8453 365 3 105 39 6 13 4 6 0 2 9 2 12 2 4 2 0 2 1 2 1 2 107 34 362 19 63 3 53 41 11 117 4 2 134 37 25 7 25 12 88 4 5 3 5 3 5 3 2 36 11 2 25 2 18 2 1 2 14 3 13 35 122 70 52 268 28 4 48 48 31 14 29 6 37 11 29 3 35 5 7 2 4 43 157 19 35 5 35 5 39 9 51 157 310 10 21 11 7 153 5 3 0 2 43 2 1 4 0 3 22 11 22 10 30 66 18 2 1 11 21 11 25 71 55 7 1 65 0 16 3 2 2 2 28 43 28 4 28 36 7 2 27 28 53 11 21 11 18 14 17 111 72 56 50 14 50 14 35 349 41 7 1 79 28 11 0 9 21 107 20 28 22 13 52 76 44 33 24 27 35 30 0 3 0 9 34 4 0 13 47 15 3 22 0 2 0 36 17 2 24 85 6 2 0 2 3 2 14 2 9 8 46 39 7 3 1 3 21 2 6 2 1 2 4 4 0 19 0 13 4 159 52 19 3 21 2 31 47 21 1 2 0 185 46 42 3 37 47 21 0 60 42 14 0 72 26 230 43 117 63 32 7 3 0 3 7 2 1 2 23 16 0 2 0 95 7 3 38 17 0 2 0 29 0 11 39 8 0 22 0 12 45 20 0 35 56 264 8 2 36 18 0 50 29 113 6 2 1 2 37 22 0 26 5 2 1 2 31 15 0 328 18 190 0 80 921 103 110 18 195 2749 1070 4050 582 8634 568 8 30 114 29 19 47 17 3 32 20 6 18 689 63 129 74 6 0 67 12 65 1 2 0 29 6135 9 1237 43 8 8952 286 50 2 18 3 9 395 2309 106 6 12 4 8 8 9 5991 84 2 70 2 1 3 0 3 1 3 3 2 11 2 0 2 6 2 64 2 3 3 7 2 6 2 27 2 3 2 4 2 0 4 6 2 339 3 24 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 7 2357 44 11 6 17 0 370 43 1301 196 60 67 8 0 1205 3 2 26 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 16 6 2 2 4 2 16 4421 42717 35 4148 12 221 3 5761 15 7472 3104 541 1507 4938"); + return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 1i k 2 h 1p 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 6 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 x 0 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 c 2 3 f h f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 6 1k t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 1a 2 1a 2 3o 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t g70 4 wc 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1g 3 8 17 c 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f 4d 8m a l b 7 49 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 2z k s m d 1g 24 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o 2d 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 6e 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 z 1k 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i 5a 0 28 pl 2v 32 i 5f 24d tq 34i g6 6nu fs 8 u 36 t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6wo 7y 1e 2 i 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1th 18 b 6 h 0 aa 17 105 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyl z 378 c 65 3 4g1 f 5rk 2e8 f1 15v 3t6"); } function initLargeIdContinueRanges() { - return restoreRanges("183 0 585 111 24 0 252 4 266 44 2 0 2 1 2 1 2 0 73 10 49 30 7 0 102 6 3 5 3 1 2 3 3 9 24 0 31 26 92 10 16 9 34 8 10 0 25 3 2 8 2 2 2 4 44 2 120 14 2 32 55 2 2 17 2 6 11 1 3 9 18 2 57 0 2 6 3 1 3 2 10 0 11 1 3 9 15 0 3 2 57 0 2 4 5 1 3 2 4 0 21 11 4 0 12 2 57 0 2 7 2 2 2 2 21 1 3 9 11 5 2 2 57 0 2 6 3 1 3 2 8 2 11 1 3 9 19 0 60 4 4 2 2 3 10 0 15 9 17 4 58 6 2 2 2 3 8 1 12 1 3 9 18 2 57 0 2 6 2 2 2 3 8 1 12 1 3 9 17 3 56 1 2 6 2 2 2 3 10 0 11 1 3 9 18 2 71 0 5 5 2 0 2 7 7 9 3 1 62 0 3 6 13 7 2 9 88 0 3 8 12 5 3 9 63 1 7 9 12 0 2 0 2 0 5 1 50 19 2 1 6 10 2 35 10 0 101 19 2 9 13 3 5 2 2 2 3 6 4 3 14 11 2 14 704 2 10 8 929 2 30 2 30 1 31 1 65 31 10 0 3 9 34 2 3 9 144 0 119 11 5 11 11 9 129 10 61 4 58 9 2 28 3 10 7 9 23 13 2 1 64 4 48 16 12 9 18 8 13 2 31 12 3 9 45 13 49 19 9 9 7 9 119 2 2 20 5 0 7 0 3 2 199 57 2 4 576 1 20 0 124 12 5 0 4 11 3071 2 142 0 97 31 555 5 106 1 30086 9 70 0 5 9 33 1 81 1 273 0 4 0 5 0 24 4 5 0 84 1 51 17 11 9 7 17 14 10 29 7 26 12 45 3 48 13 16 9 12 0 11 9 48 13 13 0 9 1 3 9 34 2 51 0 2 2 3 1 6 1 2 0 42 4 6 1 237 7 2 1 3 9 20261 0 738 15 17 15 4 1 25 2 193 9 38 0 702 0 227 0 150 4 294 9 1368 2 2 1 6 3 41 2 5 0 166 1 574 3 9 9 370 1 154 10 176 2 54 14 32 9 16 3 46 10 54 9 7 2 37 13 2 9 6 1 45 0 13 2 49 13 9 3 2 11 83 11 7 0 161 11 6 9 7 3 56 1 2 6 3 1 3 2 10 0 11 1 3 6 4 4 193 17 10 9 5 0 82 19 13 9 214 6 3 8 28 1 83 16 16 9 82 12 9 9 84 14 5 9 243 14 166 9 71 5 2 1 3 3 2 0 2 1 13 9 120 6 3 6 4 0 29 9 41 6 2 3 9 0 10 10 47 15 406 7 2 7 17 9 57 21 2 13 123 5 4 0 2 1 2 6 2 0 9 9 49 4 2 1 2 4 9 9 330 3 19306 9 135 4 60 6 26 9 1014 0 2 54 8 3 82 0 12 1 19628 1 5319 4 4 5 9 7 3 6 31 3 149 2 1418 49 513 54 5 49 9 0 15 0 23 4 2 14 1361 6 2 16 3 6 2 1 2 4 262 6 10 9 419 13 1495 6 110 6 6 9 4759 9 787719 239"); + return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 3c e 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1m 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 h 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 5 3 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 2 u 2 u 1 v 1 1t v a 0 3 9 y 2 3 9 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 1 1s 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1l 2 4 g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 4a a 4w 2 1i e w 9 g 3 1a a 1i 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 4h b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 ewa 9 3r 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 43r 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 7a 6 a 9 bn d 15j 6 32 6 6 9 3o7 9 gvt3 6n"); } function isInRange(cp, ranges) { let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; @@ -72,14 +72,15 @@ function isInRange(cp, ranges) { } function restoreRanges(data) { let last = 0; - return data.split(" ").map(s => (last += parseInt(s, 10) | 0)); + return data.split(" ").map(s => (last += parseInt(s, 36) | 0)); } class DataSet { - constructor(raw2018, raw2019, raw2020) { + constructor(raw2018, raw2019, raw2020, raw2021) { this._raw2018 = raw2018; this._raw2019 = raw2019; this._raw2020 = raw2020; + this._raw2021 = raw2021; } get es2018() { return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); @@ -90,12 +91,15 @@ class DataSet { get es2020() { return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); } + get es2021() { + return (this._set2021 || (this._set2021 = new Set(this._raw2021.split(" ")))); + } } const gcNameSet = new Set(["General_Category", "gc"]); const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); -const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", ""); -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho"); -const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", ""); +const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", ""); +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"); +const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict"); function isValidUnicodeProperty(version, name, value) { if (gcNameSet.has(name)) { return version >= 2018 && gcValueSets.es2018.has(value); @@ -103,13 +107,15 @@ function isValidUnicodeProperty(version, name, value) { if (scNameSet.has(name)) { return ((version >= 2018 && scValueSets.es2018.has(value)) || (version >= 2019 && scValueSets.es2019.has(value)) || - (version >= 2020 && scValueSets.es2020.has(value))); + (version >= 2020 && scValueSets.es2020.has(value)) || + (version >= 2021 && scValueSets.es2021.has(value))); } return false; } function isValidLoneUnicodeProperty(version, value) { return ((version >= 2018 && binPropertySets.es2018.has(value)) || - (version >= 2019 && binPropertySets.es2019.has(value))); + (version >= 2019 && binPropertySets.es2019.has(value)) || + (version >= 2021 && binPropertySets.es2021.has(value))); } const Backspace = 0x08; @@ -415,6 +421,7 @@ class RegExpValidator { let sticky = false; let unicode = false; let dotAll = false; + let hasIndices = false; for (let i = start; i < end; ++i) { const flag = source.charCodeAt(i); if (existingFlags.has(flag)) { @@ -439,11 +446,14 @@ class RegExpValidator { else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { dotAll = true; } + else if (flag === LatinSmallLetterD && this.ecmaVersion >= 2022) { + hasIndices = true; + } else { this.raise(`Invalid flag '${source[i]}'`); } } - this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); } validatePattern(source, start = 0, end = source.length, uFlag = false) { this._uFlag = uFlag && this.ecmaVersion >= 2015; @@ -462,7 +472,7 @@ class RegExpValidator { return Boolean(this._options.strict || this._uFlag); } get ecmaVersion() { - return this._options.ecmaVersion || 2020; + return this._options.ecmaVersion || 2022; } onLiteralEnter(start) { if (this._options.onLiteralEnter) { @@ -474,9 +484,9 @@ class RegExpValidator { this._options.onLiteralLeave(start, end); } } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { if (this._options.onFlags) { - this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); } } onPatternEnter(start) { @@ -1516,7 +1526,7 @@ class RegExpParserState { this._capturingGroups = []; this.source = ""; this.strict = Boolean(options && options.strict); - this.ecmaVersion = (options && options.ecmaVersion) || 2020; + this.ecmaVersion = (options && options.ecmaVersion) || 2022; } get pattern() { if (this._node.type !== "Pattern") { @@ -1530,7 +1540,7 @@ class RegExpParserState { } return this._flags; } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { this._flags = { type: "Flags", parent: null, @@ -1543,6 +1553,7 @@ class RegExpParserState { unicode, sticky, dotAll, + hasIndices, }; } onPatternEnter(start) { diff --git a/node_modules/regexpp/index.js.map b/node_modules/regexpp/index.js.map index 68fc68e..db15135 100644 --- a/node_modules/regexpp/index.js.map +++ b/node_modules/regexpp/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/regexpp/index.mjs b/node_modules/regexpp/index.mjs index d02491f..bc1f59c 100644 --- a/node_modules/regexpp/index.mjs +++ b/node_modules/regexpp/index.mjs @@ -43,10 +43,10 @@ function isLargeIdContinue(cp) { (largeIdContinueRanges = initLargeIdContinueRanges())); } function initLargeIdStartRanges() { - return restoreRanges("170 0 11 0 5 0 6 22 2 30 2 457 5 11 15 4 8 0 2 0 130 4 2 1 3 3 2 0 7 0 2 2 2 0 2 19 2 82 2 138 9 165 2 37 3 0 7 40 72 26 5 3 46 42 36 1 2 98 2 0 16 1 8 1 11 2 3 0 17 0 2 29 30 88 12 0 25 32 10 1 5 0 6 21 5 0 10 0 4 0 24 24 8 10 54 20 2 17 61 53 4 0 19 0 8 9 16 15 5 7 3 1 3 21 2 6 2 0 4 3 4 0 17 0 14 1 2 2 15 1 11 0 9 5 5 1 3 21 2 6 2 1 2 1 2 1 32 3 2 0 20 2 17 8 2 2 2 21 2 6 2 1 2 4 4 0 19 0 16 1 24 0 12 7 3 1 3 21 2 6 2 1 2 4 4 0 31 1 2 2 16 0 18 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 11 23 0 53 7 2 2 2 22 2 15 4 0 27 2 6 1 31 0 5 7 2 2 2 22 2 9 2 4 4 0 33 0 2 1 16 1 18 8 2 2 2 40 3 0 17 0 6 2 9 2 25 5 6 17 4 23 2 8 2 0 3 6 59 47 2 1 13 6 59 1 2 0 2 4 2 23 2 0 2 9 2 1 10 0 3 4 2 0 22 3 33 0 64 7 2 35 28 4 116 42 21 0 17 5 5 3 4 0 4 1 8 2 5 12 13 0 18 37 2 0 6 0 3 42 2 332 2 3 3 6 2 0 2 3 3 40 2 3 3 32 2 3 3 6 2 0 2 3 3 14 2 56 2 3 3 66 38 15 17 85 3 5 4 619 3 16 2 25 6 74 4 10 8 12 2 3 15 17 15 17 15 12 2 2 16 51 36 0 5 0 68 88 8 40 2 0 6 69 11 30 50 29 3 4 12 43 5 25 55 22 10 52 83 0 94 46 18 6 56 29 14 1 11 43 27 35 42 2 11 35 3 8 8 42 3 2 42 3 2 5 2 1 4 0 6 191 65 277 3 5 3 37 3 5 3 7 2 0 2 0 2 0 2 30 3 52 2 6 2 0 4 2 2 6 4 3 3 5 5 12 6 2 2 6 117 0 14 0 17 12 102 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 15 3 3 6 4 5 0 18 40 2680 46 2 46 2 132 7 3 4 1 13 37 2 0 6 0 3 55 8 0 17 22 10 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 551 2 26 8 8 4 3 4 5 85 5 4 2 89 2 3 6 42 2 93 18 31 49 15 513 6591 65 20988 4 1164 68 45 3 268 4 15 11 1 21 46 17 30 3 79 40 8 3 102 3 52 3 8 43 12 2 2 2 3 2 22 30 51 15 49 63 5 4 0 2 1 12 27 11 22 26 28 8 46 29 0 17 4 2 9 11 4 2 40 24 2 2 7 21 22 4 0 4 49 2 0 4 1 3 4 3 0 2 0 25 2 3 10 8 2 13 5 3 5 3 5 10 6 2 6 2 42 2 13 7 114 30 11171 13 22 5 48 8453 365 3 105 39 6 13 4 6 0 2 9 2 12 2 4 2 0 2 1 2 1 2 107 34 362 19 63 3 53 41 11 117 4 2 134 37 25 7 25 12 88 4 5 3 5 3 5 3 2 36 11 2 25 2 18 2 1 2 14 3 13 35 122 70 52 268 28 4 48 48 31 14 29 6 37 11 29 3 35 5 7 2 4 43 157 19 35 5 35 5 39 9 51 157 310 10 21 11 7 153 5 3 0 2 43 2 1 4 0 3 22 11 22 10 30 66 18 2 1 11 21 11 25 71 55 7 1 65 0 16 3 2 2 2 28 43 28 4 28 36 7 2 27 28 53 11 21 11 18 14 17 111 72 56 50 14 50 14 35 349 41 7 1 79 28 11 0 9 21 107 20 28 22 13 52 76 44 33 24 27 35 30 0 3 0 9 34 4 0 13 47 15 3 22 0 2 0 36 17 2 24 85 6 2 0 2 3 2 14 2 9 8 46 39 7 3 1 3 21 2 6 2 1 2 4 4 0 19 0 13 4 159 52 19 3 21 2 31 47 21 1 2 0 185 46 42 3 37 47 21 0 60 42 14 0 72 26 230 43 117 63 32 7 3 0 3 7 2 1 2 23 16 0 2 0 95 7 3 38 17 0 2 0 29 0 11 39 8 0 22 0 12 45 20 0 35 56 264 8 2 36 18 0 50 29 113 6 2 1 2 37 22 0 26 5 2 1 2 31 15 0 328 18 190 0 80 921 103 110 18 195 2749 1070 4050 582 8634 568 8 30 114 29 19 47 17 3 32 20 6 18 689 63 129 74 6 0 67 12 65 1 2 0 29 6135 9 1237 43 8 8952 286 50 2 18 3 9 395 2309 106 6 12 4 8 8 9 5991 84 2 70 2 1 3 0 3 1 3 3 2 11 2 0 2 6 2 64 2 3 3 7 2 6 2 27 2 3 2 4 2 0 4 6 2 339 3 24 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 30 2 24 2 7 2357 44 11 6 17 0 370 43 1301 196 60 67 8 0 1205 3 2 26 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 16 6 2 2 4 2 16 4421 42717 35 4148 12 221 3 5761 15 7472 3104 541 1507 4938"); + return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 1i k 2 h 1p 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 6 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 x 0 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 c 2 3 f h f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 6 1k t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 1a 2 1a 2 3o 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t g70 4 wc 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1g 3 8 17 c 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f 4d 8m a l b 7 49 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 2z k s m d 1g 24 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o 2d 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 6e 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 z 1k 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i 5a 0 28 pl 2v 32 i 5f 24d tq 34i g6 6nu fs 8 u 36 t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6wo 7y 1e 2 i 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1th 18 b 6 h 0 aa 17 105 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyl z 378 c 65 3 4g1 f 5rk 2e8 f1 15v 3t6"); } function initLargeIdContinueRanges() { - return restoreRanges("183 0 585 111 24 0 252 4 266 44 2 0 2 1 2 1 2 0 73 10 49 30 7 0 102 6 3 5 3 1 2 3 3 9 24 0 31 26 92 10 16 9 34 8 10 0 25 3 2 8 2 2 2 4 44 2 120 14 2 32 55 2 2 17 2 6 11 1 3 9 18 2 57 0 2 6 3 1 3 2 10 0 11 1 3 9 15 0 3 2 57 0 2 4 5 1 3 2 4 0 21 11 4 0 12 2 57 0 2 7 2 2 2 2 21 1 3 9 11 5 2 2 57 0 2 6 3 1 3 2 8 2 11 1 3 9 19 0 60 4 4 2 2 3 10 0 15 9 17 4 58 6 2 2 2 3 8 1 12 1 3 9 18 2 57 0 2 6 2 2 2 3 8 1 12 1 3 9 17 3 56 1 2 6 2 2 2 3 10 0 11 1 3 9 18 2 71 0 5 5 2 0 2 7 7 9 3 1 62 0 3 6 13 7 2 9 88 0 3 8 12 5 3 9 63 1 7 9 12 0 2 0 2 0 5 1 50 19 2 1 6 10 2 35 10 0 101 19 2 9 13 3 5 2 2 2 3 6 4 3 14 11 2 14 704 2 10 8 929 2 30 2 30 1 31 1 65 31 10 0 3 9 34 2 3 9 144 0 119 11 5 11 11 9 129 10 61 4 58 9 2 28 3 10 7 9 23 13 2 1 64 4 48 16 12 9 18 8 13 2 31 12 3 9 45 13 49 19 9 9 7 9 119 2 2 20 5 0 7 0 3 2 199 57 2 4 576 1 20 0 124 12 5 0 4 11 3071 2 142 0 97 31 555 5 106 1 30086 9 70 0 5 9 33 1 81 1 273 0 4 0 5 0 24 4 5 0 84 1 51 17 11 9 7 17 14 10 29 7 26 12 45 3 48 13 16 9 12 0 11 9 48 13 13 0 9 1 3 9 34 2 51 0 2 2 3 1 6 1 2 0 42 4 6 1 237 7 2 1 3 9 20261 0 738 15 17 15 4 1 25 2 193 9 38 0 702 0 227 0 150 4 294 9 1368 2 2 1 6 3 41 2 5 0 166 1 574 3 9 9 370 1 154 10 176 2 54 14 32 9 16 3 46 10 54 9 7 2 37 13 2 9 6 1 45 0 13 2 49 13 9 3 2 11 83 11 7 0 161 11 6 9 7 3 56 1 2 6 3 1 3 2 10 0 11 1 3 6 4 4 193 17 10 9 5 0 82 19 13 9 214 6 3 8 28 1 83 16 16 9 82 12 9 9 84 14 5 9 243 14 166 9 71 5 2 1 3 3 2 0 2 1 13 9 120 6 3 6 4 0 29 9 41 6 2 3 9 0 10 10 47 15 406 7 2 7 17 9 57 21 2 13 123 5 4 0 2 1 2 6 2 0 9 9 49 4 2 1 2 4 9 9 330 3 19306 9 135 4 60 6 26 9 1014 0 2 54 8 3 82 0 12 1 19628 1 5319 4 4 5 9 7 3 6 31 3 149 2 1418 49 513 54 5 49 9 0 15 0 23 4 2 14 1361 6 2 16 3 6 2 1 2 4 262 6 10 9 419 13 1495 6 110 6 6 9 4759 9 787719 239"); + return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 3c e 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1m 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 h 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 5 3 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 2 u 2 u 1 v 1 1t v a 0 3 9 y 2 3 9 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 1 1s 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1l 2 4 g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 4a a 4w 2 1i e w 9 g 3 1a a 1i 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 4h b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 ewa 9 3r 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 43r 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 7a 6 a 9 bn d 15j 6 32 6 6 9 3o7 9 gvt3 6n"); } function isInRange(cp, ranges) { let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; @@ -68,14 +68,15 @@ function isInRange(cp, ranges) { } function restoreRanges(data) { let last = 0; - return data.split(" ").map(s => (last += parseInt(s, 10) | 0)); + return data.split(" ").map(s => (last += parseInt(s, 36) | 0)); } class DataSet { - constructor(raw2018, raw2019, raw2020) { + constructor(raw2018, raw2019, raw2020, raw2021) { this._raw2018 = raw2018; this._raw2019 = raw2019; this._raw2020 = raw2020; + this._raw2021 = raw2021; } get es2018() { return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); @@ -86,12 +87,15 @@ class DataSet { get es2020() { return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); } + get es2021() { + return (this._set2021 || (this._set2021 = new Set(this._raw2021.split(" ")))); + } } const gcNameSet = new Set(["General_Category", "gc"]); const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); -const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", ""); -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho"); -const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", ""); +const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", ""); +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"); +const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict"); function isValidUnicodeProperty(version, name, value) { if (gcNameSet.has(name)) { return version >= 2018 && gcValueSets.es2018.has(value); @@ -99,13 +103,15 @@ function isValidUnicodeProperty(version, name, value) { if (scNameSet.has(name)) { return ((version >= 2018 && scValueSets.es2018.has(value)) || (version >= 2019 && scValueSets.es2019.has(value)) || - (version >= 2020 && scValueSets.es2020.has(value))); + (version >= 2020 && scValueSets.es2020.has(value)) || + (version >= 2021 && scValueSets.es2021.has(value))); } return false; } function isValidLoneUnicodeProperty(version, value) { return ((version >= 2018 && binPropertySets.es2018.has(value)) || - (version >= 2019 && binPropertySets.es2019.has(value))); + (version >= 2019 && binPropertySets.es2019.has(value)) || + (version >= 2021 && binPropertySets.es2021.has(value))); } const Backspace = 0x08; @@ -411,6 +417,7 @@ class RegExpValidator { let sticky = false; let unicode = false; let dotAll = false; + let hasIndices = false; for (let i = start; i < end; ++i) { const flag = source.charCodeAt(i); if (existingFlags.has(flag)) { @@ -435,11 +442,14 @@ class RegExpValidator { else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { dotAll = true; } + else if (flag === LatinSmallLetterD && this.ecmaVersion >= 2022) { + hasIndices = true; + } else { this.raise(`Invalid flag '${source[i]}'`); } } - this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); } validatePattern(source, start = 0, end = source.length, uFlag = false) { this._uFlag = uFlag && this.ecmaVersion >= 2015; @@ -458,7 +468,7 @@ class RegExpValidator { return Boolean(this._options.strict || this._uFlag); } get ecmaVersion() { - return this._options.ecmaVersion || 2020; + return this._options.ecmaVersion || 2022; } onLiteralEnter(start) { if (this._options.onLiteralEnter) { @@ -470,9 +480,9 @@ class RegExpValidator { this._options.onLiteralLeave(start, end); } } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { if (this._options.onFlags) { - this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll); + this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); } } onPatternEnter(start) { @@ -1512,7 +1522,7 @@ class RegExpParserState { this._capturingGroups = []; this.source = ""; this.strict = Boolean(options && options.strict); - this.ecmaVersion = (options && options.ecmaVersion) || 2020; + this.ecmaVersion = (options && options.ecmaVersion) || 2022; } get pattern() { if (this._node.type !== "Pattern") { @@ -1526,7 +1536,7 @@ class RegExpParserState { } return this._flags; } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll) { + onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { this._flags = { type: "Flags", parent: null, @@ -1539,6 +1549,7 @@ class RegExpParserState { unicode, sticky, dotAll, + hasIndices, }; } onPatternEnter(start) { diff --git a/node_modules/regexpp/index.mjs.map b/node_modules/regexpp/index.mjs.map index ee329be..4263dfa 100644 --- a/node_modules/regexpp/index.mjs.map +++ b/node_modules/regexpp/index.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index.mjs.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.AD\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.mjs.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":";;;;;;;AAIA,IAAI,kBAAkB,GAAyB,SAAS,CAAA;AACxD,IAAI,qBAAqB,GAAyB,SAAS,CAAA;AAE3D,SAAgB,SAAS,CAAC,EAAU;IAChC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,cAAc,CAAC,EAAE,CAAC,CAAA;CAC5B;AAED,SAAgB,YAAY,CAAC,EAAU;IACnC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAA;CACrD;AAED,SAAS,cAAc,CAAC,EAAU;IAC9B,OAAO,SAAS,CACZ,EAAE,EACF,kBAAkB,KAAK,kBAAkB,GAAG,sBAAsB,EAAE,CAAC,CACxE,CAAA;CACJ;AAED,SAAS,iBAAiB,CAAC,EAAU;IACjC,OAAO,SAAS,CACZ,EAAE,EACF,qBAAqB;SAChB,qBAAqB,GAAG,yBAAyB,EAAE,CAAC,CAC5D,CAAA;CACJ;AAED,SAAS,sBAAsB;IAC3B,OAAO,aAAa,CAChB,4qFAA4qF,CAC/qF,CAAA;CACJ;AAED,SAAS,yBAAyB;IAC9B,OAAO,aAAa,CAChB,0gDAA0gD,CAC7gD,CAAA;CACJ;AAED,SAAS,SAAS,CAAC,EAAU,EAAE,MAAgB;IAC3C,IAAI,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAC3B,CAAC,GAAG,CAAC,EACL,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,CAAA;IACX,OAAO,CAAC,GAAG,CAAC,EAAE;QACV,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACnB,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACvB,IAAI,EAAE,GAAG,GAAG,EAAE;YACV,CAAC,GAAG,CAAC,CAAA;SACR;aAAM,IAAI,EAAE,GAAG,GAAG,EAAE;YACjB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SACZ;aAAM;YACH,OAAO,IAAI,CAAA;SACd;KACJ;IACD,OAAO,KAAK,CAAA;CACf;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CACjE;;AC3ED,MAAM,OAAO;IAST,YACI,OAAe,EACf,OAAe,EACf,OAAe,EACf,OAAe;QAEf,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;KAC1B;IACD,IAAW,MAAM;QACb,QACI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvE;KACJ;IACD,IAAW,MAAM;QACb,QACI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvE;KACJ;IACD,IAAW,MAAM;QACb,QACI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvE;KACJ;IACD,IAAW,MAAM;QACb,QACI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvE;KACJ;CACJ;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAA;AACrD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACvE,MAAM,WAAW,GAAG,IAAI,OAAO,CAC3B,opBAAopB,EACppB,EAAE,EACF,EAAE,EACF,EAAE,CACL,CAAA;AACD,MAAM,WAAW,GAAG,IAAI,OAAO,CAC3B,48DAA48D,EAC58D,gHAAgH,EAChH,uEAAuE,EACvE,uEAAuE,CAC1E,CAAA;AACD,MAAM,eAAe,GAAG,IAAI,OAAO,CAC/B,69BAA69B,EAC79B,uBAAuB,EACvB,EAAE,EACF,gCAAgC,CACnC,CAAA;AAED,SAAgB,sBAAsB,CAClC,OAAe,EACf,IAAY,EACZ,KAAa;IAEb,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KAC1D;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrB,QACI,CAAC,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;aAChD,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACjD,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACjD,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACrD;KACJ;IACD,OAAO,KAAK,CAAA;CACf;AAED,SAAgB,0BAA0B,CACtC,OAAe,EACf,KAAa;IAEb,QACI,CAAC,OAAO,IAAI,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;SACpD,OAAO,IAAI,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACrD,OAAO,IAAI,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACzD;CACJ;;ACtFM,MAAM,SAAS,GAAG,IAAI,CAAA;AAC7B,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,AAAO,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,AAAO,MAAM,UAAU,GAAG,IAAI,CAAA;AAC9B,AAAO,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,AAAO,MAAM,gBAAgB,GAAG,IAAI,CAAA;AACpC,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,KAAK,GAAG,IAAI,CAAA;AACzB,AAAO,MAAM,WAAW,GAAG,IAAI,CAAA;AAC/B,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,OAAO,GAAG,IAAI,CAAA;AAC3B,AAAO,MAAM,SAAS,GAAG,IAAI,CAAA;AAC7B,AAAO,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC5B,AAAO,MAAM,UAAU,GAAG,IAAI,CAAA;AAC9B,AAAO,MAAM,SAAS,GAAG,IAAI,CAAA;AAC7B,AAAO,MAAM,KAAK,GAAG,IAAI,CAAA;AACzB,AAAO,MAAM,YAAY,GAAG,IAAI,CAAA;AAChC,AAAO,MAAM,UAAU,GAAG,IAAI,CAAA;AAC9B,AAAO,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,AAAO,MAAM,YAAY,GAAG,IAAI,CAAA;AAChC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,AAAO,MAAM,OAAO,GAAG,IAAI,CAAA;AAC3B,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,AAAO,MAAM,kBAAkB,GAAG,IAAI,CAAA;AACtC,AAAO,MAAM,gBAAgB,GAAG,IAAI,CAAA;AACpC,AAAO,MAAM,gBAAgB,GAAG,IAAI,CAAA;AACpC,AAAO,MAAM,YAAY,GAAG,IAAI,CAAA;AAChC,AAAO,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,AAAO,MAAM,kBAAkB,GAAG,MAAM,CAAA;AACxC,AAAO,MAAM,eAAe,GAAG,MAAM,CAAA;AACrC,AAAO,MAAM,aAAa,GAAG,MAAM,CAAA;AACnC,AAAO,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAExC,AAAO,MAAM,YAAY,GAAG,IAAI,CAAA;AAChC,AAAO,MAAM,YAAY,GAAG,QAAQ,CAAA;AAEpC,SAAgB,aAAa,CAAC,IAAY;IACtC,QACI,CAAC,IAAI,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB;SAC1D,IAAI,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,CAAC,EAC3D;CACJ;AAED,SAAgB,cAAc,CAAC,IAAY;IACvC,OAAO,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAA;CAChD;AAED,SAAgB,YAAY,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,UAAU,CAAA;CACjD;AAED,SAAgB,UAAU,CAAC,IAAY;IACnC,QACI,CAAC,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS;SACtC,IAAI,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,CAAC;SAC3D,IAAI,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,CAAC,EAC3D;CACJ;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,QACI,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,kBAAkB,EAC9B;CACJ;AAED,SAAgB,cAAc,CAAC,IAAY;IACvC,OAAO,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAA;CACtD;AAED,SAAgB,UAAU,CAAC,IAAY;IACnC,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,EAAE;QACxD,OAAO,IAAI,GAAG,iBAAiB,GAAG,EAAE,CAAA;KACvC;IACD,IAAI,IAAI,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,EAAE;QAC5D,OAAO,IAAI,GAAG,mBAAmB,GAAG,EAAE,CAAA;KACzC;IACD,OAAO,IAAI,GAAG,SAAS,CAAA;CAC1B;AAED,SAAgB,eAAe,CAAC,IAAY;IACxC,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAA;CAC1C;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAA;CAC1C;AAED,SAAgB,oBAAoB,CAAC,IAAY,EAAE,KAAa;IAC5D,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,OAAO,CAAA;CAC9D;;ACpID,MAAM,UAAU,GAAG;IACf,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,CAAS;QAChC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;KACxC;IACD,KAAK,CAAC,CAAS;QACX,OAAO,CAAC,CAAA;KACX;CACJ,CAAA;AACD,MAAM,WAAW,GAAG;IAChB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,CAAS;QAChC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAA;KAC1C;IACD,KAAK,CAAC,CAAS;QACX,OAAO,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;KAC5B;CACJ,CAAA;AAED,MAAa,MAAM;IAAnB;QACY,UAAK,GAAG,UAAU,CAAA;QAClB,OAAE,GAAG,EAAE,CAAA;QACP,OAAE,GAAG,CAAC,CAAA;QACN,SAAI,GAAG,CAAC,CAAA;QACR,SAAI,GAAW,CAAC,CAAC,CAAA;QACjB,QAAG,GAAG,CAAC,CAAA;QACP,SAAI,GAAW,CAAC,CAAC,CAAA;QACjB,QAAG,GAAG,CAAC,CAAA;QACP,SAAI,GAAW,CAAC,CAAC,CAAA;QACjB,QAAG,GAAG,CAAC,CAAA;QACP,SAAI,GAAW,CAAC,CAAC,CAAA;KAkG5B;IAhGG,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,EAAE,CAAA;KACjB;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,EAAE,CAAA;KACjB;IAED,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAA;KACnB;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,IAAI,CAAA;KACnB;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,IAAI,CAAA;KACnB;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,IAAI,CAAA;KACnB;IAEM,KAAK,CACR,MAAc,EACd,KAAa,EACb,GAAW,EACX,KAAc;QAEd,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAA;QAC7C,IAAI,CAAC,EAAE,GAAG,MAAM,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KACrB;IAEM,MAAM,CAAC,KAAa;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACpE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CACf,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CACzC,CAAA;KACJ;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;YACvB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAA;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CACf,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAC3C,CAAA;SACJ;KACJ;IAEM,GAAG,CAAC,EAAU;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAEM,IAAI,CAAC,GAAW,EAAE,GAAW;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YACxC,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAEM,IAAI,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;CACJ;;MC9HY,iBAAkB,SAAQ,WAAW;IAE9C,YACI,MAAc,EACd,KAAc,EACd,KAAa,EACb,OAAe;QAGf,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACzB,MAAM,GAAG,IAAI,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,CAAA;aAC5C;YACD,MAAM,GAAG,KAAK,MAAM,EAAE,CAAA;SACzB;QAGD,KAAK,CAAC,6BAA6B,MAAM,KAAK,OAAO,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;KACrB;CACJ;;ACyDD,SAAS,iBAAiB,CAAC,EAAU;IACjC,QACI,EAAE,KAAK,gBAAgB;QACvB,EAAE,KAAK,UAAU;QACjB,EAAE,KAAK,cAAc;QACrB,EAAE,KAAK,QAAQ;QACf,EAAE,KAAK,QAAQ;QACf,EAAE,KAAK,QAAQ;QACf,EAAE,KAAK,YAAY;QACnB,EAAE,KAAK,eAAe;QACtB,EAAE,KAAK,gBAAgB;QACvB,EAAE,KAAK,iBAAiB;QACxB,EAAE,KAAK,kBAAkB;QACzB,EAAE,KAAK,gBAAgB;QACvB,EAAE,KAAK,iBAAiB;QACxB,EAAE,KAAK,YAAY,EACtB;CACJ;AAED,SAAS,uBAAuB,CAAC,EAAU;IACvC,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,OAAO,CAAA;CAC9D;AAED,SAAS,sBAAsB,CAAC,EAAU;IACtC,QACI,YAAY,CAAC,EAAE,CAAC;QAChB,EAAE,KAAK,UAAU;QACjB,EAAE,KAAK,OAAO;QACd,EAAE,KAAK,kBAAkB;QACzB,EAAE,KAAK,eAAe,EACzB;CACJ;AAED,SAAS,8BAA8B,CAAC,EAAU;IAC9C,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAA;CAC7C;AAED,SAAS,+BAA+B,CAAC,EAAU;IAC/C,OAAO,8BAA8B,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,CAAA;CAClE;AAsSD,MAAa,eAAe;IAoBxB,YAAmB,OAAiC;QAlBnC,YAAO,GAAG,IAAI,MAAM,EAAE,CAAA;QAC/B,WAAM,GAAG,KAAK,CAAA;QACd,WAAM,GAAG,KAAK,CAAA;QACd,kBAAa,GAAG,CAAC,CAAA;QACjB,kBAAa,GAAG,CAAC,CAAA;QACjB,kBAAa,GAAG,CAAC,CAAA;QACjB,kBAAa,GAAG,EAAE,CAAA;QAClB,kBAAa,GAAG,EAAE,CAAA;QAClB,kBAAa,GAAG,EAAE,CAAA;QAClB,iCAA4B,GAAG,KAAK,CAAA;QACpC,wBAAmB,GAAG,CAAC,CAAA;QACvB,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QAC/B,wBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;QAO3C,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAA;KAChC;IAQM,eAAe,CAClB,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAE9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAC7C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;SAChE;aAAM,IAAI,KAAK,IAAI,GAAG,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SACtB;aAAM;YACH,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACrD,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAA;SAC5C;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAClC;IAQM,aAAa,CAChB,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM;QAE3B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;QACvC,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAEjC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;aAC/C;YACD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAEvB,IAAI,IAAI,KAAK,iBAAiB,EAAE;gBAC5B,MAAM,GAAG,IAAI,CAAA;aAChB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;gBACnC,UAAU,GAAG,IAAI,CAAA;aACpB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;gBACnC,SAAS,GAAG,IAAI,CAAA;aACnB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC/D,OAAO,GAAG,IAAI,CAAA;aACjB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC/D,MAAM,GAAG,IAAI,CAAA;aAChB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC/D,MAAM,GAAG,IAAI,CAAA;aAChB;iBAAM,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC/D,UAAU,GAAG,IAAI,CAAA;aACpB;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;aAC5C;SACJ;QACD,IAAI,CAAC,OAAO,CACR,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,UAAU,CACb,CAAA;KACJ;IASM,eAAe,CAClB,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM,EAC3B,KAAK,GAAG,KAAK;QAEb,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,IACI,CAAC,IAAI,CAAC,MAAM;YACZ,IAAI,CAAC,WAAW,IAAI,IAAI;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAC3B;YACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,CAAC,cAAc,EAAE,CAAA;SACxB;KACJ;IAID,IAAY,MAAM;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;KACtD;IAED,IAAY,WAAW;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAA;KAC3C;IAEO,cAAc,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;SACtC;KACJ;IAEO,cAAc,CAAC,KAAa,EAAE,GAAW;QAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAC3C;KACJ;IAEO,OAAO,CACX,KAAa,EACb,GAAW,EACX,MAAe,EACf,UAAmB,EACnB,SAAkB,EAClB,OAAgB,EAChB,MAAe,EACf,MAAe,EACf,UAAmB;QAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjB,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,UAAU,CACb,CAAA;SACJ;KACJ;IAEO,cAAc,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;SACtC;KACJ;IAEO,cAAc,CAAC,KAAa,EAAE,GAAW;QAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAC3C;KACJ;IAEO,kBAAkB,CAAC,KAAa;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;SAC1C;KACJ;IAEO,kBAAkB,CAAC,KAAa,EAAE,GAAW;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAC/C;KACJ;IAEO,kBAAkB,CAAC,KAAa,EAAE,KAAa;QACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;SACjD;KACJ;IAEO,kBAAkB,CACtB,KAAa,EACb,GAAW,EACX,KAAa;QAEb,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;SACtD;KACJ;IAEO,YAAY,CAAC,KAAa;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;SACpC;KACJ;IAEO,YAAY,CAAC,KAAa,EAAE,GAAW;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SACzC;KACJ;IAEO,qBAAqB,CAAC,KAAa,EAAE,IAAmB;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SACnD;KACJ;IAEO,qBAAqB,CACzB,KAAa,EACb,GAAW,EACX,IAAmB;QAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;SACxD;KACJ;IAEO,YAAY,CAChB,KAAa,EACb,GAAW,EACX,GAAW,EACX,GAAW,EACX,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;SAC3D;KACJ;IAEO,0BAA0B,CAC9B,KAAa,EACb,IAAgC,EAChC,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;SAChE;KACJ;IAEO,0BAA0B,CAC9B,KAAa,EACb,GAAW,EACX,IAAgC,EAChC,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;SACrE;KACJ;IAEO,eAAe,CACnB,KAAa,EACb,GAAW,EACX,IAAqB;QAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;SAClD;KACJ;IAEO,uBAAuB,CAC3B,KAAa,EACb,GAAW,EACX,IAAY,EACZ,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;SAClE;KACJ;IAEO,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAE,IAAW;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;SACpD;KACJ;IAEO,oBAAoB,CACxB,KAAa,EACb,GAAW,EACX,IAAgC,EAChC,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;SAC/D;KACJ;IAEO,6BAA6B,CACjC,KAAa,EACb,GAAW,EACX,IAAgB,EAChB,GAAW,EACX,KAAoB,EACpB,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE;YAC7C,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CACvC,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,EACH,KAAK,EACL,MAAM,CACT,CAAA;SACJ;KACJ;IAEO,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;SAC/C;KACJ;IAEO,eAAe,CACnB,KAAa,EACb,GAAW,EACX,GAAoB;QAEpB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;SACjD;KACJ;IAEO,qBAAqB,CAAC,KAAa,EAAE,MAAe;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;SACrD;KACJ;IAEO,qBAAqB,CACzB,KAAa,EACb,GAAW,EACX,MAAe;QAEf,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;SAC1D;KACJ;IAEO,qBAAqB,CACzB,KAAa,EACb,GAAW,EACX,GAAW,EACX,GAAW;QAEX,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;SAC5D;KACJ;IAMD,IAAY,MAAM;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;KAC7B;IAED,IAAY,KAAK;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAA;KAC5B;IAED,IAAY,gBAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;KACvC;IAED,IAAY,aAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAA;KACpC;IAED,IAAY,cAAc;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAA;KACrC;IAED,IAAY,cAAc;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAA;KACrC;IAEO,KAAK,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW;QACpD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;KACtD;IAEO,MAAM,CAAC,KAAa;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAC7B;IAEO,OAAO;QACX,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;KACzB;IAEO,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;KAC9B;IAEO,IAAI,CAAC,GAAW,EAAE,GAAW;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KACrC;IAEO,IAAI,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;KAC1C;IAIO,KAAK,CAAC,OAAe;QACzB,MAAM,IAAI,iBAAiB,CACvB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,OAAO,CACV,CAAA;KACJ;IAGO,aAAa;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,SAAS;YACL,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;YAChC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE;gBACnC,MAAM,IAAI,GAAG,OAAO,GAAG,iBAAiB,GAAG,oBAAoB,CAAA;gBAC/D,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAA;aACrC;YACD,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,KAAK,CAAA;aAClB;iBAAM,IAAI,EAAE,KAAK,cAAc,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAA;aACjB;iBAAM,IAAI,EAAE,KAAK,iBAAiB,EAAE;gBACjC,OAAO,GAAG,IAAI,CAAA;aACjB;iBAAM,IAAI,EAAE,KAAK,kBAAkB,EAAE;gBAClC,OAAO,GAAG,KAAK,CAAA;aAClB;iBAAM,IACH,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,OAAO;iBAC1B,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAC3C;gBACE,MAAK;aACR;YACD,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QAED,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAA;KAC9B;IASO,cAAc;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACtD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAA;QAEhC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAEzB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,EAAE;YAC9B,IAAI,EAAE,KAAK,gBAAgB,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;aAC9B;YACD,IAAI,EAAE,KAAK,cAAc,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;aACrC;YACD,IAAI,EAAE,KAAK,kBAAkB,IAAI,EAAE,KAAK,iBAAiB,EAAE;gBACvD,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;aACzC;YACD,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAClC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAA;SAC5C;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;aACjD;SACJ;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;KACzC;IAMO,oBAAoB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,EAAE,GAAG,CAAC,CAAA;QAEV,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,MAAM,CAAC,CAAC,EAAE;YACxC,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,KAAK,CAAA;aAClB;iBAAM,IAAI,EAAE,KAAK,cAAc,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAA;aACjB;iBAAM,IAAI,EAAE,KAAK,iBAAiB,EAAE;gBACjC,OAAO,GAAG,IAAI,CAAA;aACjB;iBAAM,IAAI,EAAE,KAAK,kBAAkB,EAAE;gBAClC,OAAO,GAAG,KAAK,CAAA;aAClB;iBAAM,IACH,EAAE,KAAK,eAAe;gBACtB,CAAC,OAAO;iBACP,IAAI,CAAC,aAAa,KAAK,YAAY;qBAC/B,IAAI,CAAC,cAAc,KAAK,YAAY;wBACjC,IAAI,CAAC,cAAc,KAAK,UAAU;wBAClC,IAAI,CAAC,cAAc,KAAK,eAAe,CAAC,CAAC,EACnD;gBACE,KAAK,IAAI,CAAC,CAAA;aACb;YACD,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,KAAK,CAAA;KACf;IAUO,kBAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,CAAA;QAET,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG;YACC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAA;SAC/B,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAC;QAEhC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;SAClC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;SACzC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;KAC7C;IAUO,kBAAkB,CAAC,CAAS;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;SAE1D;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;KAChD;IAmBO,WAAW;QACf,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5B,QACI,IAAI,CAAC,gBAAgB,EAAE;iBACtB,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAC3D;SACJ;QACD,QACI,CAAC,IAAI,CAAC,gBAAgB,EAAE;aACnB,CAAC,IAAI,CAAC,4BAA4B;gBAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;aACxC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC,EACnE;KACJ;IACO,yBAAyB;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,OAAO,IAAI,CAAA;KACd;IAyBO,gBAAgB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAA;QAGzC,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAChD,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE;YAChD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE;YAC9C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC9D,OAAO,IAAI,CAAA;SACd;QAGD,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE;YAC1C,MAAM,UAAU,GACZ,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACtD,IAAI,MAAM,GAAG,KAAK,CAAA;YAClB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE;gBAC9D,MAAM,IAAI,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAA;gBACpD,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;gBACpD,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;oBAC7B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;iBACnC;gBACD,IAAI,CAAC,4BAA4B,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;gBAC/D,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;gBAChE,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QAED,OAAO,KAAK,CAAA;KACf;IAmBO,iBAAiB,CAAC,SAAS,GAAG,KAAK;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,MAAM,GAAG,KAAK,CAAA;QAGlB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpB,GAAG,GAAG,CAAC,CAAA;YACP,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAA;SACjC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,GAAG,GAAG,CAAC,CAAA;YACP,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAA;SACjC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAC/B,GAAG,GAAG,CAAC,CAAA;YACP,GAAG,GAAG,CAAC,CAAA;SACV;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;YAC5C,GAAG,GAAG,IAAI,CAAC,aAAa,CAAA;YACxB,GAAG,GAAG,IAAI,CAAC,aAAa,CAAA;SAC3B;aAAM;YACH,OAAO,KAAK,CAAA;SACf;QAGD,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAEhC,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;SACzD;QACD,OAAO,IAAI,CAAA;KACd;IAaO,mBAAmB,CAAC,OAAgB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAA;YAC7C,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;gBAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;0BACtC,IAAI,CAAC,aAAa;0BAClB,MAAM,CAAC,iBAAiB,CAAA;iBACjC;gBACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;oBAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;wBACrD,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;qBACtD;oBACD,OAAO,IAAI,CAAA;iBACd;aACJ;YACD,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC1C,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;aACtC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAeO,WAAW;QACf,QACI,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,+BAA+B,EAAE;YACtC,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE,EAC/B;KACJ;IASO,UAAU;QACd,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACzD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IASO,+BAA+B;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC1B,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IASO,uBAAuB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;aACnC;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IASO,qBAAqB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YAC3B,IAAI,IAAI,GAAkB,IAAI,CAAA;YAC9B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC1B,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;oBAC9B,IAAI,GAAG,IAAI,CAAC,aAAa,CAAA;iBAC5B;aACJ;iBAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,YAAY,EAAE;gBAC/C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;aAC9B;YAED,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;aACnC;YACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAEnD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAkBO,mBAAmB;QACvB,QACI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,+BAA+B,EAAE;YACtC,IAAI,CAAC,gCAAgC,EAAE;YACvC,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,+BAA+B,EAAE,EACzC;KACJ;IASO,gCAAgC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IACI,IAAI,CAAC,gBAAgB,KAAK,cAAc;YACxC,IAAI,CAAC,aAAa,KAAK,iBAAiB,EAC1C;YACE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAA;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;YACnD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAaO,8BAA8B;QAClC,IAAI,IAAI,CAAC,mBAAmB,CAAgB,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;SAClC;QACD,OAAO,KAAK,CAAA;KACf;IAWO,uBAAuB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;YACrC,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YACvC,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAWO,+BAA+B;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IACI,EAAE,KAAK,CAAC,CAAC;YACT,EAAE,KAAK,gBAAgB;YACvB,EAAE,KAAK,UAAU;YACjB,EAAE,KAAK,cAAc;YACrB,EAAE,KAAK,QAAQ;YACf,EAAE,KAAK,QAAQ;YACf,EAAE,KAAK,QAAQ;YACf,EAAE,KAAK,YAAY;YACnB,EAAE,KAAK,eAAe;YACtB,EAAE,KAAK,gBAAgB;YACvB,EAAE,KAAK,iBAAiB;YACxB,EAAE,KAAK,YAAY,EACrB;YACE,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YACvC,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAYO,qBAAqB;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;oBAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBACxC,OAAO,IAAI,CAAA;iBACd;gBACD,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAC7C;YACD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;SAC9B;QACD,OAAO,KAAK,CAAA;KACf;IAiBO,iBAAiB;QACrB,IACI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,2BAA2B,EAAE;YAClC,IAAI,CAAC,sBAAsB,EAAE;aAC5B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAC3C;YACE,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;SAC/B;QACD,OAAO,KAAK,CAAA;KACf;IAWO,oBAAoB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAA;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBAC9C,OAAO,IAAI,CAAA;aACd;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;aAC/B;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAoBO,2BAA2B;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAChE,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YAC/D,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAChE,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YAC/D,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC/D,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9D,OAAO,IAAI,CAAA;SACd;QAED,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IACI,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,WAAW,IAAI,IAAI;aACvB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;iBACvB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAC/C;YACE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;YACvB,IACI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC1B,IAAI,CAAC,iCAAiC,EAAE;gBACxC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAC7B;gBACE,IAAI,CAAC,6BAA6B,CAC9B,KAAK,GAAG,CAAC,EACT,IAAI,CAAC,KAAK,EACV,UAAU,EACV,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B,MAAM,CACT,CAAA;gBACD,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACtC;QAED,OAAO,KAAK,CAAA;KACf;IAiBO,sBAAsB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IACI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,8BAA8B,EAAE;aACpC,CAAC,IAAI,CAAC,MAAM;gBACT,CAAC,IAAI,CAAC,MAAM;gBACZ,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACxC,IAAI,CAAC,iBAAiB,EAAE,EAC1B;YACE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IASO,iBAAiB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;gBACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACvC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBACtD,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;SACxC;QACD,OAAO,KAAK,CAAA;KACf;IAYO,qBAAqB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACzC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACzC,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAC7C;YACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACrD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAkBO,kBAAkB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;QACzC,SAAS;YAEL,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC1B,MAAK;aACR;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAA;YAG9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACxB,SAAQ;aACX;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAGzD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC1B,MAAK;aACR;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAA;YAG9B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBAC1B,IAAI,MAAM,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;iBACxC;gBACD,SAAQ;aACX;YACD,IAAI,GAAG,GAAG,GAAG,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;aACtD;YAED,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;SAC/D;KACJ;IAiBO,gBAAgB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAEhC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,EAAE,KAAK,kBAAkB,EAAE;YACjE,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YACvB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;SACd;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC3B,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,iBAAiB,EAAE;gBAC7D,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;gBACnC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;gBACvD,OAAO,IAAI,CAAA;aACd;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;aAC/B;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QAED,OAAO,KAAK,CAAA;KACf;IAmBO,kBAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAGxB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;YAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;SACd;QAGD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAA;YAChC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;SACd;QAGD,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IACI,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,IAAI,CAAC,MAAM;YACZ,IAAI,CAAC,gBAAgB,KAAK,iBAAiB;aAC1C,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,EAC/D;YACE,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;SACd;QAED,QACI,IAAI,CAAC,2BAA2B,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EACtE;KACJ;IAWO,YAAY;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC3C;QACD,OAAO,KAAK,CAAA;KACf;IAaO,uBAAuB;QAC3B,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;YACjC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE;gBACnC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aACjE;YACD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAgBO,wBAAwB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;QAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IACI,EAAE,KAAK,cAAc;YACrB,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,EACjD;YACE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;SAC1B;aAAM,IACH,UAAU;YACV,eAAe,CAAC,EAAE,CAAC;YACnB,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACzC;YACE,EAAE,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QAED,IAAI,uBAAuB,CAAC,EAAE,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YACvB,OAAO,IAAI,CAAA;SACd;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAkBO,uBAAuB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAA;QAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IACI,EAAE,KAAK,cAAc;YACrB,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,EACjD;YACE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;SAC1B;aAAM,IACH,UAAU;YACV,eAAe,CAAC,EAAE,CAAC;YACnB,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACzC;YACE,EAAE,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QAED,IAAI,sBAAsB,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YACvB,OAAO,IAAI,CAAA;SACd;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAUO,iBAAiB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACzB,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAUO,OAAO;QACX,IACI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EACrC;YACE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAYO,gBAAgB;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;YAC7B,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;YAC7B,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;YACnC,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAA;YACxC,OAAO,IAAI,CAAA;SACd;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;YACnC,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAaO,gBAAgB;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAA;YAC9B,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAiBO,8BAA8B,CAAC,UAAU,GAAG,KAAK;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAA;QAEvC,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IACI,CAAC,KAAK,IAAI,IAAI,CAAC,mCAAmC,EAAE;gBACpD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBACxB,KAAK,IAAI,IAAI,CAAC,+BAA+B,EAAE,CAAC,EACnD;gBACE,OAAO,IAAI,CAAA;aACd;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;aACvC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QAED,OAAO,KAAK,CAAA;KACf;IAUO,mCAAmC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAA;YAC/B,IACI,eAAe,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAC3B;gBACE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;gBAChC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;oBACtD,OAAO,IAAI,CAAA;iBACd;aACJ;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QAED,OAAO,KAAK,CAAA;KACf;IAUO,+BAA+B;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IACI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EACpC;YACE,OAAO,IAAI,CAAA;SACd;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,KAAK,CAAA;KACf;IAkBO,iBAAiB;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IAAI,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE;YAChC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YACvB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IACO,qBAAqB,CAAC,EAAU;QACpC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;YACX,OAAO,KAAK,CAAA;SACf;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAA;SACjD;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;SAC3B;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,EAAE,EAAE,KAAK,iBAAiB,IAAI,EAAE,KAAK,iBAAiB,CAAC,CAAA;SACjE;QACD,OAAO,EAAE,KAAK,iBAAiB,CAAA;KAClC;IAYO,gBAAgB;QACpB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAC9B,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,SAAS,EAAE;YACnC,GAAG;gBACC,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,GAAG,SAAS,CAAC,CAAA;gBAC/D,IAAI,CAAC,OAAO,EAAE,CAAA;aACjB,QACG,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS;gBACzC,EAAE,IAAI,SAAS,EAClB;YACD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAcO,iCAAiC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAGxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;YACvC,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;gBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;gBACvC,IACI,sBAAsB,CAClB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,CACrB,EACH;oBACE,OAAO,IAAI,CAAA;iBACd;gBACD,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;aACtC;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAGlB,IAAI,IAAI,CAAC,iCAAiC,EAAE,EAAE;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAA;YACtC,IACI,sBAAsB,CAClB,IAAI,CAAC,WAAW,EAChB,kBAAkB,EAClB,WAAW,CACd,EACH;gBACE,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAA;gBACvC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAA;gBAChC,OAAO,IAAI,CAAA;aACd;YACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;gBAC3D,IAAI,CAAC,aAAa,GAAG,WAAW,CAAA;gBAChC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;gBACvB,OAAO,IAAI,CAAA;aACd;YACD,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACtC;QACD,OAAO,KAAK,CAAA;KACf;IAYO,sBAAsB;QAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,OAAO,8BAA8B,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC1D,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACjE,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,aAAa,KAAK,EAAE,CAAA;KACnC;IAYO,uBAAuB;QAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,OAAO,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACjE,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,aAAa,KAAK,EAAE,CAAA;KACnC;IAYO,iCAAiC;QACrC,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAA;KACxC;IAaO,oBAAoB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAA;aACd;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;aAC/B;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACrB;QACD,OAAO,KAAK,CAAA;KACf;IAcO,gBAAgB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,OAAO,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC1C,IAAI,CAAC,aAAa;gBACd,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC/D,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QAED,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAA;KAC9B;IAcO,YAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa;gBACd,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC/D,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAA;KAC9B;IAoBO,4BAA4B;QAChC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;YAC7B,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACjC,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAA;iBAC7D;qBAAM;oBACH,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;iBACnC;aACJ;iBAAM;gBACH,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;aAC1B;YACD,OAAO,IAAI,CAAA;SACd;QACD,OAAO,KAAK,CAAA;KACf;IAWO,aAAa;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAChC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,SAAS,CAAA;YACnC,OAAO,IAAI,CAAA;SACd;QACD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,OAAO,KAAK,CAAA;KACf;IAYO,iBAAiB,CAAC,MAAc;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAClB,OAAO,KAAK,CAAA;aACf;YACD,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;QACD,OAAO,IAAI,CAAA;KACd;CACJ;;ACh5ED,MAAM,YAAY,GAAY,EAAS,CAAA;AACvC,MAAM,UAAU,GAAU,EAAS,CAAA;AACnC,MAAM,mBAAmB,GAAmB,EAAS,CAAA;AAErD,MAAM,iBAAiB;IAUnB,YAAmB,OAA8B;QAPzC,UAAK,GAAmB,YAAY,CAAA;QACpC,WAAM,GAAU,UAAU,CAAA;QAC1B,oBAAe,GAAoB,EAAE,CAAA;QACrC,qBAAgB,GAAqB,EAAE,CAAA;QAExC,WAAM,GAAG,EAAE,CAAA;QAGd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,WAAW,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAA;KAC9D;IAED,IAAW,OAAO;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KACpB;IAED,IAAW,KAAK;QACZ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;KACrB;IAEM,OAAO,CACV,KAAa,EACb,GAAW,EACX,MAAe,EACf,UAAmB,EACnB,SAAkB,EAClB,OAAgB,EAChB,MAAe,EACf,MAAe,EACf,UAAmB;QAEnB,IAAI,CAAC,MAAM,GAAG;YACV,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;YACZ,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,MAAM;YACN,UAAU;YACV,SAAS;YACT,OAAO;YACP,MAAM;YACN,MAAM;YACN,UAAU;SACb,CAAA;KACJ;IAEM,cAAc,CAAC,KAAa;QAC/B,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI;YACZ,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,YAAY,EAAE,EAAE;SACnB,CAAA;QACD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;KACnC;IAEM,cAAc,CAAC,KAAa,EAAE,GAAW;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAE9C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAA;YACzB,MAAM,KAAK,GACP,OAAO,GAAG,KAAK,QAAQ;kBACjB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;kBAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAE,CAAA;YAC1D,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAA;YAC1B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SACnC;KACJ;IAEM,kBAAkB,CAAC,KAAa;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IACI,MAAM,CAAC,IAAI,KAAK,WAAW;YAC3B,MAAM,CAAC,IAAI,KAAK,gBAAgB;YAChC,MAAM,CAAC,IAAI,KAAK,OAAO;YACvB,MAAM,CAAC,IAAI,KAAK,SAAS,EAC3B;YACE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;SACf,CAAA;QACD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACvC;IAEM,kBAAkB,CAAC,KAAa,EAAE,GAAW;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;KAC3B;IAEM,YAAY,CAAC,KAAa;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,OAAO;YACb,MAAM;YACN,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,YAAY,EAAE,EAAE;SACnB,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACnC;IAEM,YAAY,CAAC,KAAa,EAAE,GAAW;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC7D,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;KAC3B;IAEM,qBAAqB,CAAC,KAAa,EAAE,IAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM;YACN,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;SACjB,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACzC;IAEM,qBAAqB,CAAC,KAAa,EAAE,GAAW;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IACI,IAAI,CAAC,IAAI,KAAK,gBAAgB;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EACpC;YACE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;KAC3B;IAEM,YAAY,CACf,KAAa,EACb,GAAW,EACX,GAAW,EACX,GAAW,EACX,MAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAGD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QACrC,IACI,OAAO,IAAI,IAAI;YACf,OAAO,CAAC,IAAI,KAAK,YAAY;aAC5B,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,EAChE;YACE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,GAAe;YACrB,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAC1C,GAAG;YACH,GAAG;YACH,MAAM;YACN,OAAO;SACV,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;KACxB;IAEM,0BAA0B,CAC7B,KAAa,EACb,IAAgC,EAChC,MAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,IAAyB,IAAI,CAAC,KAAK,GAAG;YAC5C,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,MAAM;YACN,YAAY,EAAE,EAAE;SACnB,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC7B;IAEM,0BAA0B,CAAC,KAAa,EAAE,GAAW;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YACjE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;KAC3B;IAEM,eAAe,CAClB,KAAa,EACb,GAAW,EACX,IAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,IAAI;SACP,CAAC,CAAA;KACL;IAEM,uBAAuB,CAC1B,KAAa,EACb,GAAW,EACX,IAAY,EACZ,MAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,IAAI;YACJ,MAAM;SACT,CAAC,CAAA;KACL;IAEM,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAE,IAAW;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,IAAI;SACP,CAAC,CAAA;KACL;IAEM,oBAAoB,CACvB,KAAa,EACb,GAAW,EACX,IAAgC,EAChC,MAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAEC,MAAM,CAAC,QAAoC,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,IAAI;YACJ,MAAM;SACT,CAAC,CAAA;KACL;IAEM,6BAA6B,CAChC,KAAa,EACb,GAAW,EACX,IAAgB,EAChB,GAAW,EACX,KAAoB,EACpB,MAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAEC,MAAM,CAAC,QAAoC,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,IAAI;YACJ,GAAG;YACH,KAAK;YACL,MAAM;SACT,CAAC,CAAA;KACL;IAEM,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAEC,MAAM,CAAC,QAAoC,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,KAAK;SACR,CAAC,CAAA;KACL;IAEM,eAAe,CAClB,KAAa,EACb,GAAW,EACX,GAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,GAAkB;YACxB,IAAI,EAAE,eAAe;YACrB,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,GAAG;YACH,QAAQ,EAAE,mBAAmB;SAChC,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAClC;IAEM,qBAAqB,CAAC,KAAa,EAAE,MAAe;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM;YACN,KAAK;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,EAAE;YACP,MAAM;YACN,QAAQ,EAAE,EAAE;SACf,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACnC;IAEM,qBAAqB,CAAC,KAAa,EAAE,GAAW;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IACI,IAAI,CAAC,IAAI,KAAK,gBAAgB;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EACpC;YACE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;KAC3B;IAEM,qBAAqB,CAAC,KAAa,EAAE,GAAW;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAGD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;QAC1B,IACI,CAAC,GAAG;YACJ,CAAC,GAAG;YACJ,CAAC,MAAM;YACP,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,MAAM,CAAC,IAAI,KAAK,WAAW;YAC3B,MAAM,CAAC,KAAK,KAAK,WAAW,EAC9B;YACE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,GAAwB;YAC9B,IAAI,EAAE,qBAAqB;YAC3B,MAAM;YACN,KAAK;YACL,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAClC,GAAG;YACH,GAAG;SACN,CAAA;QACD,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;QACjB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;QACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACtB;CACJ;AAwBD,MAAa,YAAY;IAQrB,YAAmB,OAA8B;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACrD;IASM,YAAY,CACf,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAkB;YAC3B,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,KAAK;YACL,GAAG;YACH,GAAG,EAAE,MAAM;YACX,OAAO;YACP,KAAK;SACR,CAAA;QACD,OAAO,CAAC,MAAM,GAAG,OAAO,CAAA;QACxB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAA;QACtB,OAAO,OAAO,CAAA;KACjB;IASM,UAAU,CACb,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;KAC3B;IAUM,YAAY,CACf,MAAc,EACd,KAAK,GAAG,CAAC,EACT,MAAc,MAAM,CAAC,MAAM,EAC3B,KAAK,GAAG,KAAK;QAEb,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;KAC7B;CACJ;;MC/jBY,aAAa;IAOtB,YAAmB,QAAgC;QAC/C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;KAC5B;IAMM,KAAK,CAAC,IAAU;QACnB,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,aAAa;gBACd,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;gBAC3B,MAAK;YACT,KAAK,WAAW;gBACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAK;YACT,KAAK,eAAe;gBAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBAC7B,MAAK;YACT,KAAK,gBAAgB;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAK;YACT,KAAK,WAAW;gBACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAK;YACT,KAAK,gBAAgB;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAK;YACT,KAAK,qBAAqB;gBACtB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;gBACnC,MAAK;YACT,KAAK,cAAc;gBACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBAC5B,MAAK;YACT,KAAK,OAAO;gBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACrB,MAAK;YACT,KAAK,OAAO;gBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACrB,MAAK;YACT,KAAK,SAAS;gBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBACvB,MAAK;YACT,KAAK,YAAY;gBACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;gBAC1B,MAAK;YACT,KAAK,eAAe;gBAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBAC7B,MAAK;YACT;gBACI,MAAM,IAAI,KAAK,CAAC,iBAAkB,IAAY,CAAC,IAAI,EAAE,CAAC,CAAA;SAC7D;KACJ;IAEO,gBAAgB,CAAC,IAAiB;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;SAC1C;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;SAC1C;KACJ;IACO,cAAc,CAAC,IAAe;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;SACxC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;YACzD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SAC9C;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;SACxC;KACJ;IACO,kBAAkB,CAAC,IAAmB;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SAC5C;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SAC5C;KACJ;IACO,mBAAmB,CAAC,IAAoB;QAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;SAC7C;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;SAC7C;KACJ;IACO,cAAc,CAAC,IAAe;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;SACxC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;SACxC;KACJ;IACO,mBAAmB,CAAC,IAAoB;QAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;SAC7C;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;SAC7C;KACJ;IACO,wBAAwB,CAAC,IAAyB;QACtD,IAAI,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;SAClD;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;SAClD;KACJ;IACO,iBAAiB,CAAC,IAAkB;QACxC,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;SAC3C;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;SAC3C;KACJ;IACO,UAAU,CAAC,IAAW;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;SACpC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;SACpC;KACJ;IACO,UAAU,CAAC,IAAW;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;SACpC;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;SACpC;KACJ;IACO,YAAY,CAAC,IAAa;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;SACtC;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;SACtC;KACJ;IACO,eAAe,CAAC,IAAgB;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;SACzC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;SACzC;KACJ;IACO,kBAAkB,CAAC,IAAmB;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SAC5C;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SAC5C;KACJ;CACJ;;SCzLe,kBAAkB,CAC9B,MAAuB,EACvB,OAA8B;IAE9B,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;CAChE;AAOD,SAAgB,qBAAqB,CACjC,MAAc,EACd,OAAiC;IAEjC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;CAC9D;AAED,SAAgB,cAAc,CAC1B,IAAc,EACd,QAAgC;IAEhC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;CAC1C;;;;"} \ No newline at end of file diff --git a/node_modules/regexpp/package.json b/node_modules/regexpp/package.json index 029cbe7..92dadd8 100644 --- a/node_modules/regexpp/package.json +++ b/node_modules/regexpp/package.json @@ -1,6 +1,6 @@ { "name": "regexpp", - "version": "3.1.0", + "version": "3.2.0", "description": "Regular expression parser for ECMAScript.", "engines": { "node": ">=8" @@ -9,6 +9,13 @@ "files": [ "index.*" ], + "exports": { + ".": { + "import": "./index.mjs", + "default": "./index.js" + }, + "./package.json": "./package.json" + }, "dependencies": {}, "devDependencies": { "@mysticatea/eslint-plugin": "^11.0.0", diff --git a/package-lock.json b/package-lock.json index e0bdc80..36b88a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -375,9 +375,9 @@ } }, "node_modules/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", @@ -1054,9 +1054,9 @@ } }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { "node": ">=8" @@ -1607,9 +1607,9 @@ "dev": true }, "eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", @@ -2144,9 +2144,9 @@ } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "require-from-string": { From 6eb51da0b314c2dac4bdcacbd3ccab49c3dfd8bd Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 3 Jul 2021 17:14:00 +0300 Subject: [PATCH 128/245] Update package-lock.json --- node_modules/.package-lock.json | 62 +++++++++++++--- package-lock.json | 123 ++++++++++++++++++++++++++------ 2 files changed, 155 insertions(+), 30 deletions(-) diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 1e48946..f0de717 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -126,6 +126,26 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -368,13 +388,14 @@ } }, "node_modules/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -437,9 +458,9 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", - "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", + "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", "dev": true, "dependencies": { "comment-parser": "^1.1.2", @@ -447,7 +468,8 @@ "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" + "regexpp": "^3.2.0", + "scslre": "^0.1.5" }, "peerDependencies": { "eslint": ">=6.0.0" @@ -666,9 +688,9 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", + "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", "dev": true }, "node_modules/fs.realpath": { @@ -1091,6 +1113,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/scslre": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", + "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", + "dev": true, + "dependencies": { + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.2", + "regexpp": "^3.1.0" + } + }, + "node_modules/scslre/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", diff --git a/package-lock.json b/package-lock.json index 36b88a7..ed72d72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -133,6 +133,26 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -375,13 +395,14 @@ } }, "node_modules/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -444,9 +465,9 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", - "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", + "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", "dev": true, "dependencies": { "comment-parser": "^1.1.2", @@ -454,7 +475,8 @@ "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" + "regexpp": "^3.2.0", + "scslre": "^0.1.5" }, "peerDependencies": { "eslint": ">=6.0.0" @@ -673,9 +695,9 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", + "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", "dev": true }, "node_modules/fs.realpath": { @@ -1098,6 +1120,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/scslre": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", + "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", + "dev": true, + "dependencies": { + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.2", + "regexpp": "^3.1.0" + } + }, + "node_modules/scslre/node_modules/refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1430,6 +1472,23 @@ "strip-json-comments": "^3.1.1" } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1607,13 +1666,14 @@ "dev": true }, "eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1664,9 +1724,9 @@ } }, "eslint-plugin-regexp": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.12.1.tgz", - "integrity": "sha512-kALWA1C1O/8kxLB42ypK9ildKydilhfaF2i/cSL3mvSVODgjumn9ILsfdkOpkZwjruioSn89Oe24M5tBXTU3kw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", + "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", "dev": true, "requires": { "comment-parser": "^1.1.2", @@ -1674,7 +1734,8 @@ "jsdoctypeparser": "^9.0.0", "refa": "^0.8.0", "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" + "regexpp": "^3.2.0", + "scslre": "^0.1.5" }, "dependencies": { "eslint-utils": { @@ -1839,9 +1900,9 @@ } }, "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", + "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", "dev": true }, "fs.realpath": { @@ -2170,6 +2231,28 @@ "glob": "^7.1.3" } }, + "scslre": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", + "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", + "dev": true, + "requires": { + "refa": "^0.8.0", + "regexp-ast-analysis": "^0.2.2", + "regexpp": "^3.1.0" + }, + "dependencies": { + "refa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", + "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", + "dev": true, + "requires": { + "regexpp": "^3.1.0" + } + } + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", From 6c55db1646cde03adc98e7fdf223e90ec9469e89 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 3 Jul 2021 17:14:08 +0300 Subject: [PATCH 129/245] Update .eslintrc.js --- .eslintrc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 54fba11..c233581 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,6 +12,7 @@ module.exports = { // "eslint:all", "eslint:recommended", // "plugin:clean-regex/recommended" + // "plugin:regexp/all" "plugin:regexp/recommended" ], @@ -20,7 +21,8 @@ module.exports = { "regexp" ], "parserOptions": { - "ecmaVersion": 12, + // "ecmaVersion": 12, + "ecmaVersion": 'latest', "sourceType": "script", "ecmaFeatures": { "globalReturn ": true, From 98d47c301932035e5d568ac7d4be88ce6c17e869 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 3 Jul 2021 17:16:06 +0300 Subject: [PATCH 130/245] Added support for TV Shows pages Per request https://greasyfork.org/en/scripts/21550-rarbg-convert-torrent-timestamps-to-relative-format/discussions/91794 --- ...rent_timestamps_to_relative_format.user.js | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index b913b5d..e2ebefa 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.3.28 +// @version 2021.7.3 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -9,6 +9,7 @@ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.0/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.28/moment-timezone-with-data-10-year-range.min.js +// @require https://greasyfork.org/scripts/21927-arrive-js/code/arrivejs.js // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== @@ -74,6 +75,26 @@ function convertToLocalTimezone(timestamps) { } -// const timestamps = document.querySelectorAll('tr.lista2 td:nth-child(3)'); -const timestamps = document.querySelectorAll('td[width="150px"]'); -convertToLocalTimezone(timestamps); + + +// Per request: https://greasyfork.org/en/scripts/21550-rarbg-convert-torrent-timestamps-to-relative-format/discussions/91794 +const isOnTV = window.location.href.includes('/tv/'); // example link: https://rarbgproxy.org/tv/tt1720601/ + +if (isOnTV) { + + // document.querySelectorAll('.tvshowClick').forEach((element) => { + document.querySelectorAll('div[id^="episode_"]').forEach((element) => { + element.addEventListener('click', function(){ + document.arrive('div[id^="tvcontent_"] .lista2t', function () { + convertToLocalTimezone(document.querySelectorAll('td[width="150px"]')); + }); + }); + }); + +} else { + + // const timestamps = document.querySelectorAll('tr.lista2 td:nth-child(3)'); + const timestamps = document.querySelectorAll('td[width="150px"]'); + convertToLocalTimezone(timestamps); + +} From 4f285eb6d57895b14e00b2b7cbbbb54f3e2f5e20 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 3 Jul 2021 17:17:26 +0300 Subject: [PATCH 131/245] Improved support for TV Shows pages Regarding the clicking everywhere on an episode page (example page: https://rarbgproxy.org/tv/tt8879940/) --- .../RARBG_-_torrent_and_magnet_links.user.js | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js index 8eaa831..525ed7d 100644 --- a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js +++ b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - torrent and magnet links // @namespace darkred -// @version 2020.02.02 +// @version 2021.7.3 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor sxe, dandyclubs, lx19990999 @@ -111,19 +111,24 @@ function createColumn(element){ const isOnTV = window.location.href.includes('/tv/'); // example link: https://rarbgproxy.org/tv/tt1720601/ +const tvEpisodes = 'div[id^="episode_"]'; +const tvContent = 'div[id^="tvcontent_"] .lista2t'; + if (isOnTV) { - var tvLinks = document.querySelectorAll('.tvshowClick'); + // var tvLinks = document.querySelectorAll('.tvshowClick'); + var tvLinks = document.querySelectorAll(tvEpisodes); for (let i = 0; i < tvLinks.length; i++) { - tvLinks[i].addEventListener('click', - function handler(e) { // https://stackoverflow.com/questions/26617719/turn-off-event-listener-after-triggered-once - var targetElement = e.target || e.srcElement; // https://stackoverflow.com/questions/11741070/js-how-to-get-the-element-clicked-on - targetElement.parentElement.nextElementSibling.arrive('.lista2t', function() { - createColumn(targetElement.parentElement.nextElementSibling); - targetElement.parentElement.nextElementSibling.unbindArrive('.lista2t'); - }); - } - ); + tvLinks[i].addEventListener('click', function handler(event) { // https://stackoverflow.com/questions/26617719/turn-off-event-listener-after-triggered-once + + var targetElement = ( event.target || event.srcElement ).closest(tvEpisodes); // https://stackoverflow.com/questions/11741070/js-how-to-get-the-element-clicked-on + targetElement.arrive(tvContent, function() { + // createColumn(targetElement.querySelector(tvContent)); + createColumn(this); // 'this' refers to the newly created element + targetElement.unbindArrive(tvContent); + }); + + }); } } else { createColumn(document); // the initial column 'Files' after of which the extra column will be appended); From 77737dfeada0a498bb48438fbd8291190b8e23c9 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 3 Jul 2021 22:38:49 +0300 Subject: [PATCH 132/245] Update BUG.yml --- .github/ISSUE_TEMPLATE/BUG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index a76979e..183c605 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -61,7 +61,7 @@ body: id: browsers attributes: label: Browser - description: What browsers are you seeing the problem on? (old Firefox/Waterfox versions are NOT supported) + description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions such as Waterfox are NOT supported) multiple: true options: - Chrome From a67e7e02b4b2526fb00a0a0a4b351d547875568b Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 5 Jul 2021 19:43:13 +0300 Subject: [PATCH 133/245] Rename BUG.yml to bug_report.yml --- .github/ISSUE_TEMPLATE/{BUG.yml => bug_report.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/ISSUE_TEMPLATE/{BUG.yml => bug_report.yml} (100%) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/bug_report.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/BUG.yml rename to .github/ISSUE_TEMPLATE/bug_report.yml From 5467b9506b9d638814939e7d74cbba9ee5778fa4 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 5 Jul 2021 19:57:35 +0300 Subject: [PATCH 134/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 183c605..ed33e9d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -30,8 +30,8 @@ body: - type: textarea id: screenshots attributes: - label: Screenshots - description: "Please drag'n'drop screenshots/gif so I can help you better." + label: Screenshots/video/gif + description: "Please drag'n'drop screenshots/video/gif of the issue, if it’s visual, so I can help you better." - type: textarea id: logs attributes: From a0a3c496054850a1e8cef5d09a28b6c519f0e055 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:16:20 +0300 Subject: [PATCH 135/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 38 +++++++++------------------ 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index ed33e9d..283aa0c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -14,59 +14,45 @@ body: options: - label: "I included in the issue title the script name I'm referring to." required: true - - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) to avoid opening a duplicate issue. + - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork feedback page to avoid opening a duplicate issue. required: true - label: I tested the script having disabled all others, and in a fresh browser profile if needed. required: true - type: textarea - id: what-happened + id: the-problem attributes: - label: What happened? - description: "Also describe, what did you expect to happen? Provide STR (steps to reproduce).
When the script doesn't work, is it because it doesn't run at all in the page (check TM/VM's toolbar dropdown button), or because it has errors in Console? If it's the former them its `@include` rule needs additions. If it's the latter, include the Console errors in the relevant textarea to the end. " - placeholder: Describe the issue (be as specific as possible, I need to know where to look). Provide all necessary details. - value: + label: Describe the problem and how to replicate it validations: required: true - type: textarea id: screenshots attributes: - label: Screenshots/video/gif - description: "Please drag'n'drop screenshots/video/gif of the issue, if it’s visual, so I can help you better." + label: Screenshots/video/gif showing the issue, if it’s visual + description: Files can be dropped in this field - type: textarea id: logs attributes: - label: Console output - description: Please copy and paste any relevant console log output. This will be automatically formatted into code, so no need for backticks. + label: Console errors, if any render: shell - type: input id: example-url attributes: label: Example URL - description: Provide a full URL where the bug appears. - placeholder: example.com/page1.htm + description: A REAL URL where the bug appears. + placeholder: https://example.com/page1.htm validations: required: true - - type: dropdown - id: version + - type: input + id: script-manager attributes: label: Script Manager description: What script manager are you using? (Greasemonkey is NOT supported) - multiple: true - options: - - Tampermonkey - - Violentmonkey validations: required: true - - type: dropdown + - type: input id: browsers attributes: - label: Browser + label: Browser(s) used description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions such as Waterfox are NOT supported) - multiple: true - options: - - Chrome - - Firefox - - Safari - - Edge validations: required: true From ec0cfb521eaee4ce82ec44ac9ebcf71219133388 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:17:26 +0300 Subject: [PATCH 136/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 283aa0c..5720c0a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -14,7 +14,7 @@ body: options: - label: "I included in the issue title the script name I'm referring to." required: true - - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork feedback page to avoid opening a duplicate issue. + - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. required: true - label: I tested the script having disabled all others, and in a fresh browser profile if needed. required: true From 903fe37bc0d8af1b1f7de04e21f5effa0fced555 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:19:12 +0300 Subject: [PATCH 137/245] Delete bug_report.md.old --- .github/ISSUE_TEMPLATE/bug_report.md.old | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md.old diff --git a/.github/ISSUE_TEMPLATE/bug_report.md.old b/.github/ISSUE_TEMPLATE/bug_report.md.old deleted file mode 100644 index 58503e8..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md.old +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - - From 15319ca07bf81f639c751903155a933a47af1ba1 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:22:59 +0300 Subject: [PATCH 138/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5720c0a..143986e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -10,13 +10,13 @@ body: - type: checkboxes id: terms attributes: - label: "Please confirm the following:" + label: "Please ensure:" options: - label: "I included in the issue title the script name I'm referring to." required: true - - label: I performed a cursory search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. + - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. required: true - - label: I tested the script having disabled all others, and in a fresh browser profile if needed. + - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. required: true - type: textarea id: the-problem From 61a6d24f8e113ac7702f5049f6389e37705cf352 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:25:45 +0300 Subject: [PATCH 139/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 143986e..449f7e7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,12 +1,14 @@ -name: Bug Report +name: 🐛 Report a bug description: File a bug report title: "[script title] " -labels: [bug, triage] +labels: bug body: - type: markdown attributes: value: | - Thanks for taking the time to fill out this bug report! + # Thanks for reporting a bug! ⛰ + + Help us replicate the issue by filling in this form. - type: checkboxes id: terms attributes: From 23190f3a7a491c2bb9f3fec87a7b78063b35d6d8 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:27:15 +0300 Subject: [PATCH 140/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 449f7e7..60b5075 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: 🐛 Report a bug description: File a bug report -title: "[script title] " +title: "[script title] bug description" labels: bug body: - type: markdown From 6c3f58c785a380b6ff8a441a3b9a8c20952f3b7a Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:28:11 +0300 Subject: [PATCH 141/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 60b5075..5e8519f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: 🐛 Report a bug description: File a bug report -title: "[script title] bug description" +title: "[script title] " labels: bug body: - type: markdown From 30b758e0b095f86c3c0da33a77f6dcdd26da9bbf Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:28:48 +0300 Subject: [PATCH 142/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5e8519f..95cbaad 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -18,7 +18,7 @@ body: required: true - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. required: true - - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. + - label: The bug is caused by the script itself. It doesn't happen if I disable the script, and in a fresh browser profile. required: true - type: textarea id: the-problem From 9fbec5dae9b30c7ab7db34a238808ed5faa60f19 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:31:30 +0300 Subject: [PATCH 143/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 95cbaad..5e8519f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -18,7 +18,7 @@ body: required: true - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. required: true - - label: The bug is caused by the script itself. It doesn't happen if I disable the script, and in a fresh browser profile. + - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. required: true - type: textarea id: the-problem From 07ca5388a5e0836d9f9dda838962da1edea7d371 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:38:58 +0300 Subject: [PATCH 144/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5e8519f..a0287ed 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -44,17 +44,26 @@ body: placeholder: https://example.com/page1.htm validations: required: true - - type: input + - type: dropdown id: script-manager attributes: label: Script Manager description: What script manager are you using? (Greasemonkey is NOT supported) + multiple: true + options: + - Tampermonkey + - Violentmonkey validations: required: true - - type: input + - type: dropdown id: browsers attributes: label: Browser(s) used description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions such as Waterfox are NOT supported) + multiple: true + options: + - Chrome (or Edge/Opera) + - Firefox + - Safari validations: required: true From 08f05afe2e6a5d0c886c125f7e5e1bbe704c2dd6 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:41:30 +0300 Subject: [PATCH 145/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a0287ed..2b87b18 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -48,7 +48,7 @@ body: id: script-manager attributes: label: Script Manager - description: What script manager are you using? (Greasemonkey is NOT supported) + description: What script manager are you using? (make sure it is the latest version - Greasemonkey is NOT supported) multiple: true options: - Tampermonkey From 281246a6652fc5a258b2d35480650529ae58c11d Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 16:43:57 +0300 Subject: [PATCH 146/245] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index f4e36fb..f8b7ea6 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,8 +1,8 @@ --- -name: Feature request -about: Suggest an idea for this project +name: 🆕 Suggest an improvement or new feature +about: ——— title: '' -labels: '' +labels: enhancement, under discussion assignees: '' --- @@ -10,7 +10,7 @@ assignees: '' From 644d5aca890129e1e5d55b0c9655e20667eb21dc Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 20:11:09 +0300 Subject: [PATCH 147/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 42296e7..15a8d86 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,12 +1,12 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.6.15 +// @version 2021.7.7 // @description Adds a column with torrent and magnet links in RARBG lists // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending(-week)?|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ // @grant GM_addStyle // @run-at document-idle // From da15d3ddf12523a5fa86b7f91e072f978ee8227c Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 20:11:25 +0300 Subject: [PATCH 148/245] Update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 6c433f2..fe04e22 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ Temporary Items node_modules/ + +# lockfiles +package-lock.json From 8d9044609f5b7fd9b75ee9b83833808e08156eb0 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 7 Jul 2021 20:23:02 +0300 Subject: [PATCH 149/245] .gitignore is now working --- node_modules/.package-lock.json | 1366 --------- .../eslint-plugin-clean-regex/CHANGELOG.md | 111 - .../eslint-plugin-clean-regex/LICENSE | 21 - .../eslint-plugin-clean-regex/README.md | 165 -- .../dist/ast-util.js | 1335 --------- .../dist/char-util.js | 145 - .../eslint-plugin-clean-regex/dist/configs.js | 40 - .../eslint-plugin-clean-regex/dist/fa-util.js | 57 - .../eslint-plugin-clean-regex/dist/format.js | 81 - .../eslint-plugin-clean-regex/dist/index.js | 72 - .../dist/rules-util.js | 234 -- .../dist/rules/confusing-quantifier.js | 28 - .../rules/consistent-match-all-characters.js | 117 - .../dist/rules/disjoint-alternatives.js | 138 - .../dist/rules/identity-escape.js | 282 -- .../dist/rules/no-constant-capturing-group.js | 52 - .../dist/rules/no-empty-alternative.js | 32 - .../dist/rules/no-empty-backreference.js | 29 - .../dist/rules/no-empty-lookaround.js | 30 - .../dist/rules/no-lazy-ends.js | 56 - .../dist/rules/no-obscure-range.js | 46 - .../dist/rules/no-octal-escape.js | 27 - .../dist/rules/no-optional-assertion.js | 73 - .../no-potentially-empty-backreference.js | 27 - .../rules/no-trivially-nested-lookaround.js | 82 - .../rules/no-trivially-nested-quantifier.js | 117 - .../dist/rules/no-unnecessary-assertions.js | 120 - .../rules/no-unnecessary-character-class.js | 109 - .../dist/rules/no-unnecessary-flag.js | 101 - .../dist/rules/no-unnecessary-group.js | 94 - .../dist/rules/no-unnecessary-lazy.js | 43 - .../dist/rules/no-unnecessary-quantifier.js | 38 - .../dist/rules/no-zero-quantifier.js | 32 - .../rules/optimal-concatenation-quantifier.js | 212 -- .../rules/optimal-lookaround-quantifier.js | 88 - .../dist/rules/optimized-character-class.js | 96 - .../dist/rules/prefer-character-class.js | 302 -- .../dist/rules/prefer-predefined-assertion.js | 113 - .../rules/prefer-predefined-character-set.js | 104 - .../rules/prefer-predefined-quantifiers.js | 36 - .../dist/rules/simple-constant-quantifier.js | 30 - .../dist/rules/sort-flags.js | 38 - .../eslint-plugin-clean-regex/dist/util.js | 20 - .../eslint-plugin-clean-regex/package.json | 67 - node_modules/refa/CHANGELOG.md | 213 -- node_modules/refa/LICENSE | 21 - node_modules/refa/README.md | 296 -- node_modules/refa/index.d.ts | 1524 ----------- node_modules/refa/index.js | 1 - node_modules/refa/package.json | 70 - node_modules/regexpp/LICENSE | 21 - node_modules/regexpp/README.md | 178 -- node_modules/regexpp/index.d.ts | 248 -- node_modules/regexpp/index.js | 2096 -------------- node_modules/regexpp/index.js.map | 1 - node_modules/regexpp/index.mjs | 2087 -------------- node_modules/regexpp/index.mjs.map | 1 - node_modules/regexpp/package.json | 91 - package-lock.json | 2430 ----------------- 59 files changed, 15684 deletions(-) delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/eslint-plugin-clean-regex/CHANGELOG.md delete mode 100644 node_modules/eslint-plugin-clean-regex/LICENSE delete mode 100644 node_modules/eslint-plugin-clean-regex/README.md delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/ast-util.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/char-util.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/configs.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/fa-util.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/format.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/index.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules-util.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js delete mode 100644 node_modules/eslint-plugin-clean-regex/dist/util.js delete mode 100644 node_modules/eslint-plugin-clean-regex/package.json delete mode 100644 node_modules/refa/CHANGELOG.md delete mode 100644 node_modules/refa/LICENSE delete mode 100644 node_modules/refa/README.md delete mode 100644 node_modules/refa/index.d.ts delete mode 100644 node_modules/refa/index.js delete mode 100644 node_modules/refa/package.json delete mode 100644 node_modules/regexpp/LICENSE delete mode 100644 node_modules/regexpp/README.md delete mode 100644 node_modules/regexpp/index.d.ts delete mode 100644 node_modules/regexpp/index.js delete mode 100644 node_modules/regexpp/index.js.map delete mode 100644 node_modules/regexpp/index.mjs delete mode 100644 node_modules/regexpp/index.mjs.map delete mode 100644 node_modules/regexpp/package.json delete mode 100644 package-lock.json diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index f0de717..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,1366 +0,0 @@ -{ - "name": "Userscripts", - "lockfileVersion": 2, - "requires": true, - "packages": { - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", - "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/comment-parser": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", - "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", - "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.2", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-clean-regex": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", - "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", - "dev": true, - "dependencies": { - "refa": "^0.7.1", - "regexpp": "^3.1.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/eslint-plugin-regexp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", - "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", - "dev": true, - "dependencies": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.2.0", - "scslre": "^0.1.5" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-plugin-regexp/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", - "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", - "dev": true, - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/refa": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", - "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/regexp-ast-analysis": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", - "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", - "dev": true, - "dependencies": { - "refa": "^0.8.0", - "regexpp": "^3.1.0" - } - }, - "node_modules/regexp-ast-analysis/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/scslre": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", - "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", - "dev": true, - "dependencies": { - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" - } - }, - "node_modules/scslre/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } -} diff --git a/node_modules/eslint-plugin-clean-regex/CHANGELOG.md b/node_modules/eslint-plugin-clean-regex/CHANGELOG.md deleted file mode 100644 index 780f46a..0000000 --- a/node_modules/eslint-plugin-clean-regex/CHANGELOG.md +++ /dev/null @@ -1,111 +0,0 @@ -# Changelog - - -## 0.5.1 (2021-03-25) - -Lots of minor fixes and improvements. - -### Added - -- Contributing guide and issue templates - -### Changed - -- `no-trivially-nested-quantifier`: Improved the condition that decides whether quantifiers are trivially nested. The rule will now be able to detect more cases. -- Improved many functions that analyse the RegExp AST. -- Updated to latest refa version. - -### Fixed - -- Some typos. - - -## 0.5.0 (2020-10-26) - -I ❤️ Typescript + Prettier!
-The whole project is now implemented in Typescript and uses Prettier for formatting. - -### Added - -- `no-obscure-range`: A new rule to report most likely unintended ranges in character classes due to unescaped `-`s. -- `no-empty-alternative`: A new rule to detect empty alternatives in groups and patterns that are likely a mistake. -- `prefer-predefined-assertion`: This will suggest predefined assertions (`\b\B^$`) if a lookaround behaves like one. -- `disjoint-alternatives`: A new rule to report disjoint alternatives to prevent mistakes and exponential backtracking. -- `no-trivially-nested-quantifier`: A new rule to fix trivially quantifiers. - -### Changed - -- `no-unnecessary-group`: New option to allow non-capturing groups that wrap the whole regex. -- `prefer-character-class`: The rule is now also active inside lookarounds, will reorder alternatives, and more aggressively merge into existing character classes. -- `no-unnecessary-lazy`: It can now analyse single-character quantifiers. -- `prefer-predefined-character-set`: It will now leave `0-9` as is. -- `optimal-concatenation-quantifier`: It can now merge characters and quantifiers. -- New rules table in README. -- Better error messages for a lot of rules. - -### Fixed - -- `no-empty-lookaround` didn't handle backreferences correctly. -- Many, many typos and other mistakes in the docs. - - -## 0.4.0 (2020-05-05) - -Clean regex now uses [refa](https://github.com/RunDevelopment/refa), a library for NFA and DFA operations and converting JS RegExp to NFA. -Right now, this plugin only really uses the `CharSet` API but implementing more complex rules is now possible! - -### Added - -- `no-unnecessary-assertions`: A new rule to report trivially accepting/rejecting assertions. -- `simple-constant-quantifier`: A new rule to simplify constant quantifiers with use the range syntax (e.g. `a{2,2}`). -- Added changelog. - -### Changed - -- `optimized-character-class`: Improved reporting and fixing thanks to a new implementation based on refa's character sets. - - -## 0.3.0 (2020-04-05) - -### Added - -- `no-lazy-ends`: A new rule to report lazy quantifiers at the end of the expression tree. -- `no-unnecessary-lazy`: A new rule to report and fix unnecessary lazy modifiers. -- `no-empty-backreference`: A new rule to report backreferences that will always be replaced with the empty string. -- `no-potentially-empty-backreference`: A new rule to report backreferences that might be replaced with the empty string only sometimes. - -### Fixed - -- `no-empty-backreference` didn't handle lookbehinds correctly ([#17](https://github.com/RunDevelopment/eslint-plugin-clean-regex/issues/17)) - -### Removed - -- `no-early-backreference`: Use `no-empty-backreference` instead. - - -## 0.2.2 (2020-04-01) - -### Fixed - -- Fixed examples in `README.md`. - - -## 0.2.1 (2020-04-01) - -### Fixed - -- Fixed examples in `README.md`. - - -## 0.2.0 (2020-04-01) - -### Changed - -- `no-constant-capturing-group` will now ignore non-empty constant capturing groups by default. -- Added more documentation to almost every rule. All rules are now documented. -- `README.md` now includes a small "Highlights" section. - - -## 0.1.0 (2020-03-22) - -Initial release diff --git a/node_modules/eslint-plugin-clean-regex/LICENSE b/node_modules/eslint-plugin-clean-regex/LICENSE deleted file mode 100644 index 25db79d..0000000 --- a/node_modules/eslint-plugin-clean-regex/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Michael Schmidt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/eslint-plugin-clean-regex/README.md b/node_modules/eslint-plugin-clean-regex/README.md deleted file mode 100644 index 94e14b8..0000000 --- a/node_modules/eslint-plugin-clean-regex/README.md +++ /dev/null @@ -1,165 +0,0 @@ -# eslint-plugin-clean-regex - -[![Actions Status](https://github.com/RunDevelopment/eslint-plugin-clean-regex/workflows/Node.js%20CI/badge.svg)](https://github.com/RunDevelopment/eslint-plugin-clean-regex/actions) - -An ESLint plugin for writing better regular expressions. - - -## About - -This is an [ESLint](http://eslint.org) plugin to lint JavaScript regular expressions. Its goal is to help both beginners and experts to write better regular expressions by pointing out errors and suggesting improvements. - -The plugin offers rules for possible errors, best practices, and coding style in regular expressions. - -Right now, this project is still young (and many rules are opinionated). Feel free to open an issue if you think rules are too strict/lax/inflexible. Suggestions and feature requests are welcome as well! - - -## Getting started - -You'll need to install [ESLint](http://eslint.org) and `eslint-plugin-clean-regex`: - -``` -$ npm i eslint eslint-plugin-clean-regex --save-dev -``` - -**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-clean-regex` globally. - -Add `clean-regex` to the plugins section of your `.eslintrc` configuration file (you can omit the `eslint-plugin-` prefix) and configure the rules you want: - -```json -{ - "plugins": [ - "clean-regex" - ], - "rules": { - "clean-regex/rule-name": 2 - } -} -``` - -You can also use the _recommended_ config: - -```json -{ - "plugins": [ - "clean-regex" - ], - "extends": [ - "plugin:clean-regex/recommended" - ] -} -``` - -The setting of every rule in the _recommended_ config can be found in the table below. - - -## Highlights - -Some highlights of the working and working-together of rules in the _recommended_ config. - -### Optimize character classes - -Before: - -```js -- /[0-9]/i -- /[^\s]/ -- /[a-fA-F0-9]/i -- /[a-zA-Z0-9_-]/ -- /[a-z\d\w]/ -- /[\S\d]/ -- /[\w\p{ASCII}]/u -``` - -After: - -```js -- /\d/ -- /\S/ -- /[a-f0-9]/i -- /[\w-]/ -- /\w/ -- /\S/ -- /\p{ASCII}/u -``` - -### Simplify patterns - -Before: - -```js -- /(?:\w|\d)+/ -- /(?:a|(b)|c|(?:d)|(?:ee)){0,}/ -- /(? -### Problems - -| | Rule | Description | -| :--- | :--- | :--- | -| | [confusing-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/confusing-quantifier.md) | Warn about confusing quantifiers. | -| | [disjoint-alternatives](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/disjoint-alternatives.md) | Disallow different alternatives that can match the same words. | -| | [no-empty-alternative](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-alternative.md) | Disallow alternatives without elements. | -| | [no-empty-backreference](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-backreference.md) | Disallow backreferences that will always be replaced with the empty string. | -| | [no-empty-lookaround](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-empty-lookaround.md) | Disallow lookarounds that can match the empty string. | -| | [no-lazy-ends](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-lazy-ends.md) | Disallow lazy quantifiers at the end of an expression. | -| | [no-obscure-range](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-obscure-range.md) | Disallow obscure ranges in character classes. | -| | [no-octal-escape](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-octal-escape.md) | Disallow octal escapes outside of character classes. | -| | [no-optional-assertion](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-optional-assertion.md) | Disallow optional assertions. | -| | [no-potentially-empty-backreference](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-potentially-empty-backreference.md) | Disallow backreferences that reference a group that might not be matched. | -| | [no-unnecessary-assertions](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-assertions.md) | Disallow assertions that are known to always accept (or reject). | -| :wrench: | [no-zero-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-zero-quantifier.md) | Disallow quantifiers with a maximum of 0. | -| | [optimal-lookaround-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimal-lookaround-quantifier.md) | Disallows the alternatives of lookarounds that end with a non-constant quantifier. | - -### Suggestions - -| | Rule | Description | -| :--- | :--- | :--- | -| :wrench: | [consistent-match-all-characters](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/consistent-match-all-characters.md) | Use one character class consistently whenever all characters have to be matched. | -| :wrench: | [identity-escape](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/identity-escape.md) | How to handle identity escapes. | -| | [no-constant-capturing-group](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-constant-capturing-group.md) | Disallow capturing groups that can match only one word. | -| :wrench: | [no-trivially-nested-lookaround](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-trivially-nested-lookaround.md) | Disallow lookarounds that only contain another assertion. | -| :wrench: | [no-trivially-nested-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-trivially-nested-quantifier.md) | Disallow nested quantifiers that can be rewritten as one quantifier. | -| :wrench: | [no-unnecessary-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-character-class.md) | Disallow unnecessary character classes. | -| :wrench: | [no-unnecessary-flag](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-flag.md) | Disallow unnecessary regex flags. | -| :wrench: | [no-unnecessary-group](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-group.md) | Disallow unnecessary non-capturing groups. | -| :wrench: | [no-unnecessary-lazy](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-lazy.md) | Disallow unnecessarily lazy quantifiers. | -| :wrench: | [no-unnecessary-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/no-unnecessary-quantifier.md) | Disallow unnecessary quantifiers. | -| :wrench: | [optimal-concatenation-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimal-concatenation-quantifier.md) | Use optimal quantifiers for concatenated quantified characters. | -| :wrench: | [optimized-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/optimized-character-class.md) | Disallows unnecessary elements in character classes. | -| :wrench: | [prefer-character-class](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-character-class.md) | Prefer character classes wherever possible instead of alternations. | -| :wrench: | [prefer-predefined-assertion](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-assertion.md) | Prefer predefined assertions over equivalent lookarounds. | -| :wrench: | [prefer-predefined-character-set](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-character-set.md) | Prefer predefined character sets instead of their more verbose form. | -| :wrench: | [prefer-predefined-quantifiers](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/prefer-predefined-quantifiers.md) | Prefer predefined quantifiers (+*?) instead of their more verbose form. | -| :wrench: | [simple-constant-quantifier](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/simple-constant-quantifier.md) | Prefer simple constant quantifiers over the range form. | -| :wrench: | [sort-flags](https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master/docs/rules/sort-flags.md) | Requires the regex flags to be sorted. | - diff --git a/node_modules/eslint-plugin-clean-regex/dist/ast-util.js b/node_modules/eslint-plugin-clean-regex/dist/ast-util.js deleted file mode 100644 index 547c8b2..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/ast-util.js +++ /dev/null @@ -1,1335 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getParentPrefixAndSuffix = exports.underAStar = exports.effectiveQuantifierMax = exports.getSingleConsumedChar = exports.getFirstCharAfter = exports.getFirstConsumedCharAfter = exports.followPaths = exports.getFirstCharConsumedBy = exports.getLengthRange = exports.hasAssertionWithDirection = exports.assertionKindToMatchingDirection = exports.invertMatchingDirection = exports.matchingDirection = exports.getQuantifierRaw = exports.backreferenceAlwaysAfterGroup = exports.isEmptyBackreference = exports.elementsToCharacterClass = exports.negateCharacterSetRaw = exports.quantAdd = exports.quantToString = exports.nodeAt = exports.isEscapeSequence = exports.isHexadecimalEscapeSequence = exports.isControlEscapeSequence = exports.isOctalEscapeSequence = exports.minimalHexEscape = exports.getPattern = exports.getCapturingGroupNumber = exports.areEqual = exports.hasCapturingGroup = exports.hasSomeDescendant = exports.hasSomeAncestor = exports.isPotentiallyEmpty = exports.isEmpty = exports.isPotentiallyZeroLength = exports.isZeroLength = exports.getConstant = void 0; -const refa_1 = require("refa"); -const regexpp_1 = require("regexpp"); -const char_util_1 = require("./char-util"); -const util_1 = require("./util"); -function getConstant(node, flags) { - switch (node.type) { - case "Alternative": { - let word = ""; - for (const element of node.elements) { - const elementResult = getConstant(element, flags); - if (elementResult === false) { - return false; - } - else { - word += elementResult.word; - } - } - return { word }; - } - case "Assertion": - case "Flags": { - return { word: "" }; - } - case "Backreference": { - if (isEmptyBackreference(node)) { - return { word: "" }; - } - else { - return getConstant(node.resolved, flags); - } - } - case "CapturingGroup": - case "Group": - case "Pattern": { - if (node.alternatives.length == 0) { - return { word: "" }; - } - else if (node.alternatives.length == 1) { - return getConstant(node.alternatives[0], flags); - } - else { - let word = false; - for (const alt of node.alternatives) { - const altResult = getConstant(alt, flags); - if (altResult === false) { - return false; - } - else if (word === false) { - word = altResult.word; - } - else if (word !== altResult.word) { - return false; - } - } - return word === false ? false : { word }; - } - } - case "Character": { - const string = String.fromCodePoint(node.value); - if (flags.ignoreCase && string.toLowerCase() !== string.toUpperCase()) { - return false; - } - return { word: string }; - } - case "CharacterClass": { - if (node.negate) { - return false; - } - let word = false; - for (const element of node.elements) { - const elementResult = getConstant(element, flags); - if (elementResult === false) { - return false; - } - else if (word === false) { - word = elementResult.word; - } - else if (word !== elementResult.word) { - return false; - } - } - return word === false ? false : { word }; - } - case "CharacterClassRange": { - return node.min.value == node.max.value && getConstant(node.min, flags); - } - case "CharacterSet": { - return false; - } - case "Quantifier": { - if (node.max === 0) { - return { word: "" }; - } - const elementResult = getConstant(node.element, flags); - if (elementResult !== false) { - if (elementResult.word === "") { - return elementResult; - } - else if (node.min === node.max) { - let word = ""; - for (let i = node.min; i > 0; i--) { - word += elementResult.word; - } - return { word }; - } - } - return false; - } - case "RegExpLiteral": { - return getConstant(node.pattern, flags); - } - default: - return false; - } -} -exports.getConstant = getConstant; -function isZeroLength(element) { - if (Array.isArray(element)) { - return element.every(a => isZeroLength(a)); - } - switch (element.type) { - case "Alternative": - return element.elements.every(e => isZeroLength(e)); - case "Assertion": - return true; - case "Character": - case "CharacterClass": - case "CharacterSet": - return false; - case "Quantifier": - return element.max === 0 || isZeroLength(element.element); - case "Backreference": - return isEmptyBackreference(element); - case "CapturingGroup": - case "Group": - return isZeroLength(element.alternatives); - default: - throw util_1.assertNever(element); - } -} -exports.isZeroLength = isZeroLength; -function isPotentiallyZeroLength(element) { - if (Array.isArray(element)) { - return element.some(a => isPotentiallyZeroLength(a)); - } - switch (element.type) { - case "Alternative": - return element.elements.every(e => isPotentiallyZeroLength(e)); - case "Assertion": - return true; - case "Backreference": - if (isEmptyBackreference(element)) { - return true; - } - return isPotentiallyZeroLength(element.resolved); - case "Character": - case "CharacterClass": - case "CharacterSet": - return false; - case "CapturingGroup": - case "Group": - return isPotentiallyZeroLength(element.alternatives); - case "Quantifier": - return element.min === 0 || isPotentiallyZeroLength(element.element); - default: - throw util_1.assertNever(element); - } -} -exports.isPotentiallyZeroLength = isPotentiallyZeroLength; -function isEmpty(element) { - if (Array.isArray(element)) { - return element.every(isEmpty); - } - switch (element.type) { - case "Alternative": - return element.elements.every(isEmpty); - case "Assertion": - if (element.kind === "lookahead" || element.kind === "lookbehind") { - if (!element.negate && isPotentiallyEmpty(element.alternatives)) { - return true; - } - } - return false; - case "Backreference": - if (isEmptyBackreference(element)) { - return true; - } - return isEmpty(element.resolved); - case "Character": - case "CharacterClass": - case "CharacterSet": - return false; - case "CapturingGroup": - case "Group": - return isEmpty(element.alternatives); - case "Quantifier": - return element.max === 0 || isEmpty(element.element); - default: - throw util_1.assertNever(element); - } -} -exports.isEmpty = isEmpty; -function isPotentiallyEmpty(element, options = {}) { - if (Array.isArray(element)) { - return element.some(a => isPotentiallyEmpty(a, options)); - } - switch (element.type) { - case "Alternative": - return element.elements.every(e => isPotentiallyEmpty(e, options)); - case "Assertion": - if (element.kind === "lookahead" || element.kind === "lookbehind") { - if (!element.negate && isPotentiallyEmpty(element.alternatives, options)) { - return true; - } - } - return false; - case "Backreference": - if (isEmptyBackreference(element)) { - return true; - } - if (options.backreferencesAreNonEmpty) { - return false; - } - else { - return !backreferenceAlwaysAfterGroup(element) || isPotentiallyEmpty(element.resolved, options); - } - case "Character": - case "CharacterClass": - case "CharacterSet": - return false; - case "CapturingGroup": - case "Group": - return isPotentiallyEmpty(element.alternatives, options); - case "Quantifier": - return element.min === 0 || isPotentiallyEmpty(element.element, options); - default: - throw util_1.assertNever(element); - } -} -exports.isPotentiallyEmpty = isPotentiallyEmpty; -function hasSomeAncestor(node, conditionFn) { - let parent = node.parent; - while (parent) { - if (conditionFn(parent)) { - return true; - } - parent = parent.parent; - } - return false; -} -exports.hasSomeAncestor = hasSomeAncestor; -function hasSomeDescendant(node, conditionFn, descentConditionFn) { - if (conditionFn(node)) { - return true; - } - if (descentConditionFn && !descentConditionFn(node)) { - return false; - } - switch (node.type) { - case "Alternative": - return node.elements.some(e => hasSomeDescendant(e, conditionFn, descentConditionFn)); - case "Assertion": - if (node.kind === "lookahead" || node.kind === "lookbehind") { - return node.alternatives.some(a => hasSomeDescendant(a, conditionFn, descentConditionFn)); - } - return false; - case "CapturingGroup": - case "Group": - case "Pattern": - return node.alternatives.some(a => hasSomeDescendant(a, conditionFn, descentConditionFn)); - case "CharacterClass": - return node.elements.some(e => hasSomeDescendant(e, conditionFn, descentConditionFn)); - case "CharacterClassRange": - return (hasSomeDescendant(node.min, conditionFn, descentConditionFn) || - hasSomeDescendant(node.max, conditionFn, descentConditionFn)); - case "Quantifier": - return hasSomeDescendant(node.element, conditionFn, descentConditionFn); - case "RegExpLiteral": - return (hasSomeDescendant(node.pattern, conditionFn, descentConditionFn) || - hasSomeDescendant(node.flags, conditionFn, descentConditionFn)); - } - return false; -} -exports.hasSomeDescendant = hasSomeDescendant; -function hasCapturingGroup(node) { - return hasSomeDescendant(node, d => d.type === "CapturingGroup"); -} -exports.hasCapturingGroup = hasCapturingGroup; -function areEqual(x, y) { - if (x == y) { - return true; - } - if (!x || !y || x.type != y.type) { - return false; - } - function manyAreEqual(a, b) { - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (!areEqual(a[i], b[i])) { - return false; - } - } - return true; - } - function alternativesAreEqual(a, b) { - return manyAreEqual(a.alternatives, b.alternatives); - } - switch (x.type) { - case "Alternative": { - const other = y; - return manyAreEqual(x.elements, other.elements); - } - case "Assertion": { - const other = y; - if (x.kind === other.kind) { - if (x.kind === "lookahead" || x.kind === "lookbehind") { - const otherLookaround = y; - return x.negate === otherLookaround.negate && alternativesAreEqual(x, otherLookaround); - } - else { - return x.raw === other.raw; - } - } - return false; - } - case "Backreference": { - const other = y; - return areEqual(x.resolved, other.resolved); - } - case "CapturingGroup": { - const other = y; - const p1 = getPattern(x); - const p2 = getPattern(other); - if (p1 && p2) { - const n1 = getCapturingGroupNumber(p1, x); - const n2 = getCapturingGroupNumber(p2, other); - if (n1 && n2) { - return n1 === n2 && alternativesAreEqual(x, other); - } - } - return false; - } - case "Character": { - const other = y; - return x.value === other.value; - } - case "CharacterClass": { - const other = y; - return x.negate === other.negate && manyAreEqual(x.elements, other.elements); - } - case "CharacterClassRange": { - const other = y; - return areEqual(x.min, other.min) && areEqual(x.max, other.max); - } - case "CharacterSet": { - const other = y; - if (x.kind === "property" && other.kind === "property") { - return x.negate === other.negate && x.key === other.key; - } - else { - return x.raw === other.raw; - } - } - case "Flags": { - const other = y; - return (x.dotAll === other.dotAll && - x.global === other.global && - x.ignoreCase === other.ignoreCase && - x.multiline === other.multiline && - x.sticky === other.sticky && - x.unicode === other.unicode); - } - case "Group": - case "Pattern": { - const other = y; - return alternativesAreEqual(x, other); - } - case "Quantifier": { - const other = y; - return (x.min === other.min && - x.max === other.max && - x.greedy === other.greedy && - areEqual(x.element, other.element)); - } - case "RegExpLiteral": { - const other = y; - return areEqual(x.flags, other.flags) && areEqual(x.pattern, other.pattern); - } - default: - throw util_1.assertNever(x); - } -} -exports.areEqual = areEqual; -function getCapturingGroupNumber(pattern, group) { - let found = 0; - try { - regexpp_1.visitRegExpAST(pattern, { - onCapturingGroupEnter(node) { - found++; - if (node === group) { - throw new Error(); - } - }, - }); - return null; - } - catch (error) { - return found; - } -} -exports.getCapturingGroupNumber = getCapturingGroupNumber; -function getPattern(node) { - switch (node.type) { - case "Pattern": - return node; - case "RegExpLiteral": - return node.pattern; - case "Flags": - return node.parent ? node.parent.pattern : null; - default: - return getPattern(node.parent); - } -} -exports.getPattern = getPattern; -function minimalHexEscape(codePoint) { - if (codePoint <= 0xff) { - return "\\x" + codePoint.toString(16).padStart(2, "0"); - } - else if (codePoint <= 0xffff) { - return "\\u" + codePoint.toString(16).padStart(4, "0"); - } - else { - return "\\u{" + codePoint.toString(16) + "}"; - } -} -exports.minimalHexEscape = minimalHexEscape; -function isOctalEscapeSequence(node) { - return /^\\[0-7]+$/.test(node.raw); -} -exports.isOctalEscapeSequence = isOctalEscapeSequence; -function isControlEscapeSequence(node) { - return /^\\c[A-Za-z]$/.test(node.raw); -} -exports.isControlEscapeSequence = isControlEscapeSequence; -function isHexadecimalEscapeSequence(node) { - return /^\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\})$/.test(node.raw); -} -exports.isHexadecimalEscapeSequence = isHexadecimalEscapeSequence; -function isEscapeSequence(node) { - return (isOctalEscapeSequence(node) || - isHexadecimalEscapeSequence(node) || - isControlEscapeSequence(node) || - /^\\[fnrtv]$/.test(node.raw)); -} -exports.isEscapeSequence = isEscapeSequence; -function nodeAt(root, index) { - if (index < root.start || root.end >= index) { - return undefined; - } - if (root.start == index) { - return root; - } - switch (root.type) { - case "Assertion": - case "CapturingGroup": - case "Group": - case "Pattern": - if (root.type === "Assertion" && !(root.kind === "lookahead" || root.kind === "lookbehind")) { - break; - } - for (const alt of root.alternatives) { - if (alt.end >= index) { - break; - } - const result = nodeAt(alt, index); - if (result) { - return result; - } - } - break; - case "Quantifier": { - const res = nodeAt(root.element, index); - if (res) { - return res; - } - break; - } - case "RegExpLiteral": { - let res = nodeAt(root.flags, index); - if (res) { - return res; - } - res = nodeAt(root.pattern, index); - if (res) { - return res; - } - break; - } - default: - break; - } - return root; -} -exports.nodeAt = nodeAt; -function quantToString(quant) { - if (quant.max < quant.min || - quant.min < 0 || - !Number.isInteger(quant.min) || - !(Number.isInteger(quant.max) || quant.max === Infinity)) { - throw new Error(`Invalid quantifier { min: ${quant.min}, max: ${quant.max} }`); - } - let value; - if (quant.min === 0 && quant.max === 1) { - value = "?"; - } - else if (quant.min === 0 && quant.max === Infinity) { - value = "*"; - } - else if (quant.min === 1 && quant.max === Infinity) { - value = "+"; - } - else if (quant.min === quant.max) { - value = `{${quant.min}}`; - } - else if (quant.max === Infinity) { - value = `{${quant.min},}`; - } - else { - value = `{${quant.min},${quant.max}}`; - } - if (!quant.greedy) { - return value + "?"; - } - else { - return value; - } -} -exports.quantToString = quantToString; -function quantAdd(quant, other) { - var _a; - if (typeof other === "number") { - return { - min: quant.min + other, - max: quant.max + other, - greedy: quant.greedy, - }; - } - else { - if (quant.greedy === other.greedy || quant.greedy === undefined || other.greedy === undefined) { - return { - min: quant.min + other.min, - max: quant.max + other.max, - greedy: (_a = quant.greedy) !== null && _a !== void 0 ? _a : other.greedy, - }; - } - else { - throw Error("The `greedy` property of the given quants is not compatible."); - } - } -} -exports.quantAdd = quantAdd; -function negateCharacterSetRaw(charSet) { - let type = charSet.raw[1]; - if (type.toLowerCase() === type) { - type = type.toUpperCase(); - } - else { - type = type.toLowerCase(); - } - return `\\${type}${charSet.raw.substr(2)}`; -} -exports.negateCharacterSetRaw = negateCharacterSetRaw; -function elementsToCharacterClass(elements, negate = false) { - let result = ""; - elements.forEach((e, i) => { - switch (e.type) { - case "Character": - if (e.raw === "-") { - if (i === 0 || i === elements.length - 1) { - result += "-"; - } - else { - result += "\\-"; - } - } - else if (e.raw === "^") { - if (i === 0) { - result += "\\^"; - } - else { - result += "^"; - } - } - else if (e.raw === "]") { - result += "\\]"; - } - else { - result += e.raw; - } - break; - case "CharacterClassRange": - if (e.min.raw === "^" && i === 0) { - result += "\\^-" + e.max.raw; - } - else { - result += e.min.raw + "-" + e.max.raw; - } - break; - case "CharacterSet": - result += e.raw; - break; - default: - throw util_1.assertNever(e); - } - }); - return "[" + (negate ? "^" : "") + result + "]"; -} -exports.elementsToCharacterClass = elementsToCharacterClass; -function isEmptyBackreference(backreference) { - const group = backreference.resolved; - if (hasSomeAncestor(backreference, a => a === group)) { - return true; - } - if (isZeroLength(group)) { - return true; - } - function findBackreference(node) { - const parent = node.parent; - switch (parent.type) { - case "Alternative": { - const index = parent.elements.indexOf(node); - let next; - if (matchingDirection(node) === "ltr") { - next = parent.elements.slice(index + 1); - } - else { - next = parent.elements.slice(0, index); - } - if (next.some(e => hasSomeDescendant(e, d => d === backreference))) { - return true; - } - const parentParent = parent.parent; - if (parentParent.type === "Pattern") { - return false; - } - else { - return findBackreference(parentParent); - } - } - case "Quantifier": - return findBackreference(parent); - default: - throw new Error("What happened?"); - } - } - return !findBackreference(group); -} -exports.isEmptyBackreference = isEmptyBackreference; -function backreferenceAlwaysAfterGroup(backreference) { - const group = backreference.resolved; - if (hasSomeAncestor(backreference, a => a === group)) { - return false; - } - function findBackreference(node) { - const parent = node.parent; - switch (parent.type) { - case "Alternative": { - const index = parent.elements.indexOf(node); - let next; - if (matchingDirection(node) === "ltr") { - next = parent.elements.slice(index + 1); - } - else { - next = parent.elements.slice(0, index); - } - if (next.some(e => hasSomeDescendant(e, d => d === backreference))) { - return true; - } - const parentParent = parent.parent; - if (parentParent.type === "Pattern") { - return false; - } - else { - if (parentParent.alternatives.length > 1) { - return false; - } - return findBackreference(parentParent); - } - } - case "Quantifier": - if (parent.min === 0) { - return false; - } - return findBackreference(parent); - default: - throw new Error("What happened?"); - } - } - return findBackreference(group); -} -exports.backreferenceAlwaysAfterGroup = backreferenceAlwaysAfterGroup; -function getQuantifierRaw(quantifier) { - return quantifier.raw.substr(quantifier.element.end - quantifier.start); -} -exports.getQuantifierRaw = getQuantifierRaw; -function matchingDirection(node) { - let closestLookaround; - hasSomeAncestor(node, a => { - if (a.type === "Assertion") { - closestLookaround = a; - return true; - } - return false; - }); - if (closestLookaround !== undefined && closestLookaround.kind === "lookbehind") { - return "rtl"; - } - return "ltr"; -} -exports.matchingDirection = matchingDirection; -function invertMatchingDirection(direction) { - return direction === "ltr" || direction === "lookahead" ? "rtl" : "ltr"; -} -exports.invertMatchingDirection = invertMatchingDirection; -function assertionKindToMatchingDirection(kind) { - return kind === "end" || kind === "lookahead" ? "ltr" : "rtl"; -} -exports.assertionKindToMatchingDirection = assertionKindToMatchingDirection; -function hasAssertionWithDirection(element, direction) { - return hasSomeDescendant(element, d => { - if (d.type === "Assertion") { - if (d.kind === "word") { - return true; - } - if (isPotentiallyEmpty(element)) { - return false; - } - if (direction === "lookahead" || direction === "ltr") { - return d.kind === "lookahead" || d.kind === "end"; - } - else { - return d.kind === "lookbehind" || d.kind === "start"; - } - } - return false; - }); -} -exports.hasAssertionWithDirection = hasAssertionWithDirection; -function getLengthRange(element) { - if (Array.isArray(element)) { - let min = Infinity; - let max = 0; - for (const e of element) { - const eRange = getLengthRange(e); - if (eRange) { - min = Math.min(min, eRange.min); - max = Math.max(max, eRange.max); - } - } - if (min > max) { - return undefined; - } - else { - return { min, max }; - } - } - switch (element.type) { - case "Assertion": - return { min: 0, max: 0 }; - case "Character": - case "CharacterClass": - case "CharacterSet": - return { min: 1, max: 1 }; - case "Quantifier": { - if (element.max === 0) { - return { min: 0, max: 0 }; - } - const elementRange = getLengthRange(element.element); - if (!elementRange) { - return element.min === 0 ? { min: 0, max: 0 } : undefined; - } - if (elementRange.max === 0) { - return { min: 0, max: 0 }; - } - elementRange.min *= element.min; - elementRange.max *= element.max; - return elementRange; - } - case "Alternative": { - let min = 0; - let max = 0; - for (const e of element.elements) { - const eRange = getLengthRange(e); - if (!eRange) { - return undefined; - } - min += eRange.min; - max += eRange.max; - } - return { min, max }; - } - case "CapturingGroup": - case "Group": - return getLengthRange(element.alternatives); - case "Backreference": { - if (isEmptyBackreference(element)) { - return { min: 0, max: 0 }; - } - const resolvedRange = getLengthRange(element.resolved); - if (!resolvedRange) { - return backreferenceAlwaysAfterGroup(element) ? undefined : { min: 0, max: 0 }; - } - if (resolvedRange.min > 0 && !backreferenceAlwaysAfterGroup(element)) { - resolvedRange.min = 0; - } - return resolvedRange; - } - default: - throw util_1.assertNever(element); - } -} -exports.getLengthRange = getLengthRange; -function getFirstCharConsumedBy(element, direction, flags) { - if (Array.isArray(element)) { - return firstConsumedCharUnion(element.map(e => getFirstCharConsumedBy(e, direction, flags)), flags); - } - switch (element.type) { - case "Assertion": - switch (element.kind) { - case "word": - return misdirectedAssertion(); - case "end": - case "start": - if (assertionKindToMatchingDirection(element.kind) === direction) { - if (flags.multiline) { - return lineAssertion(); - } - else { - return edgeAssertion(); - } - } - else { - return misdirectedAssertion(); - } - case "lookahead": - case "lookbehind": - if (assertionKindToMatchingDirection(element.kind) === direction) { - if (element.negate) { - if (hasSomeDescendant(element, d => d !== element && d.type === "Assertion")) { - return misdirectedAssertion(); - } - const firstChar = getFirstCharConsumedBy(element.alternatives, direction, flags); - const range = getLengthRange(element.alternatives); - if (firstChar.empty || !range) { - return { char: char_util_1.emptyCharSet(flags), empty: false, exact: true }; - } - if (!firstChar.exact || range.max !== 1) { - return misdirectedAssertion(); - } - else { - return emptyWord({ char: firstChar.char.negate(), edge: true, exact: true }); - } - } - else { - const firstChar = getFirstCharConsumedBy(element.alternatives, direction, flags); - return emptyWord(firstConsumedToLook(firstChar)); - } - } - else { - return misdirectedAssertion(); - } - default: - throw util_1.assertNever(element); - } - case "Character": - case "CharacterSet": - case "CharacterClass": - return { char: char_util_1.toCharSet(element, flags), empty: false, exact: true }; - case "Quantifier": { - if (element.max === 0) { - return emptyWord(); - } - const firstChar = getFirstCharConsumedBy(element.element, direction, flags); - if (element.min === 0) { - return firstConsumedCharUnion([emptyWord(), firstChar], flags); - } - else { - return firstChar; - } - } - case "Alternative": { - let elements = element.elements; - if (direction === "rtl") { - elements = [...elements]; - elements.reverse(); - } - return firstConsumedCharConcat((function* () { - for (const e of elements) { - yield getFirstCharConsumedBy(e, direction, flags); - } - })(), flags); - } - case "CapturingGroup": - case "Group": - return getFirstCharConsumedBy(element.alternatives, direction, flags); - case "Backreference": { - if (isEmptyBackreference(element)) { - return emptyWord(); - } - const resolvedChar = getFirstCharConsumedBy(element.resolved, direction, flags); - resolvedChar.exact = resolvedChar.exact && resolvedChar.char.size <= 1; - if (backreferenceAlwaysAfterGroup(element)) { - return resolvedChar; - } - else { - return firstConsumedCharUnion([resolvedChar, emptyWord()], flags); - } - } - default: - throw util_1.assertNever(element); - } - function misdirectedAssertion() { - return emptyWord({ - char: char_util_1.allCharSet(flags), - edge: true, - exact: false, - }); - } - function edgeAssertion() { - return emptyWord(firstLookCharEdgeAccepting(flags)); - } - function lineAssertion() { - return emptyWord({ - char: char_util_1.lineTerminatorCharSet(flags), - edge: true, - exact: true, - }); - } - function emptyWord(look) { - return firstConsumedCharEmptyWord(flags, look); - } -} -exports.getFirstCharConsumedBy = getFirstCharConsumedBy; -function firstLookCharTriviallyAccepting(flags) { - return { char: char_util_1.allCharSet(flags), edge: true, exact: true }; -} -function firstLookCharEdgeAccepting(flags) { - return { char: char_util_1.emptyCharSet(flags), edge: true, exact: true }; -} -function firstConsumedCharEmptyWord(flags, look) { - return { - char: char_util_1.emptyCharSet(flags), - empty: true, - exact: true, - look: look !== null && look !== void 0 ? look : firstLookCharTriviallyAccepting(flags), - }; -} -class CharUnion { - constructor(char) { - this.char = char; - this.exact = true; - } - add(char, exact) { - if (this.exact && !exact && !this.char.isSupersetOf(char)) { - this.exact = false; - } - else if (!this.exact && exact && char.isSupersetOf(this.char)) { - this.exact = true; - } - this.char = this.char.union(char); - } - static emptyFromFlags(flags) { - return new CharUnion(char_util_1.emptyCharSet(flags)); - } - static emptyFromMaximum(maximum) { - return new CharUnion(refa_1.CharSet.empty(maximum)); - } -} -function firstConsumedCharUnion(iter, flags) { - const union = CharUnion.emptyFromFlags(flags); - const looks = []; - for (const itemChar of iter) { - union.add(itemChar.char, itemChar.exact); - if (itemChar.empty) { - looks.push(itemChar.look); - } - } - if (looks.length > 0) { - const lookUnion = CharUnion.emptyFromFlags(flags); - let edge = false; - for (const look of looks) { - lookUnion.add(look.char, look.exact); - edge = edge || look.edge; - } - return { - char: union.char, - exact: union.exact, - empty: true, - look: { char: lookUnion.char, exact: lookUnion.exact, edge }, - }; - } - else { - return { char: union.char, exact: union.exact, empty: false }; - } -} -function firstConsumedCharConcat(iter, flags) { - const union = CharUnion.emptyFromFlags(flags); - let look = firstLookCharTriviallyAccepting(flags); - for (const item of iter) { - union.add(item.char.intersect(look.char), look.exact && item.exact); - if (item.empty) { - const charIntersection = look.char.intersect(item.look.char); - look = { - char: charIntersection, - exact: (look.exact && item.look.exact) || charIntersection.isEmpty, - edge: look.edge && item.look.edge, - }; - } - else { - return { char: union.char, exact: union.exact, empty: false }; - } - } - return { char: union.char, exact: union.exact, empty: true, look }; -} -function firstConsumedToLook(first) { - if (first.empty) { - const union = CharUnion.emptyFromMaximum(first.char.maximum); - union.add(first.char, first.exact); - union.add(first.look.char, first.look.exact); - return { - char: union.char, - exact: union.exact, - edge: first.look.edge, - }; - } - else { - return { - char: first.char, - exact: first.exact, - edge: false, - }; - } -} -function followPaths(start, startMode, initialState, operations, direction) { - function opEnter(element, state, direction) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; - state = (_b = (_a = operations.enter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : state; - const continueInto = (_d = (_c = operations.continueInto) === null || _c === void 0 ? void 0 : _c.call(operations, element, state, direction)) !== null && _d !== void 0 ? _d : true; - if (continueInto) { - switch (element.type) { - case "Assertion": { - if (element.kind === "lookahead" || element.kind === "lookbehind") { - const assertionDirection = assertionKindToMatchingDirection(element.kind); - const assertion = operations.join(element.alternatives.map(a => enterAlternative(a, operations.fork(state, direction), assertionDirection)), assertionDirection); - state = (_f = (_e = operations.endPath) === null || _e === void 0 ? void 0 : _e.call(operations, state, assertionDirection, "assertion")) !== null && _f !== void 0 ? _f : state; - state = (_h = (_g = operations.assert) === null || _g === void 0 ? void 0 : _g.call(operations, state, direction, assertion, assertionDirection)) !== null && _h !== void 0 ? _h : state; - } - break; - } - case "Group": - case "CapturingGroup": { - state = operations.join(element.alternatives.map(a => enterAlternative(a, operations.fork(state, direction), direction)), direction); - break; - } - case "Quantifier": { - if (element.max === 0) { - } - else if (element.min === 0) { - state = operations.join([state, opEnter(element.element, operations.fork(state, direction), direction)], direction); - } - else { - state = opEnter(element.element, state, direction); - } - break; - } - } - } - state = (_k = (_j = operations.leave) === null || _j === void 0 ? void 0 : _j.call(operations, element, state, direction)) !== null && _k !== void 0 ? _k : state; - return state; - } - function enterAlternative(alternative, state, direction) { - var _a, _b; - let i = direction === "ltr" ? 0 : alternative.elements.length - 1; - const increment = direction === "ltr" ? +1 : -1; - let element; - for (; (element = alternative.elements[i]); i += increment) { - state = opEnter(element, state, direction); - const continueAfter = (_b = (_a = operations.continueAfter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : true; - if (!continueAfter) { - break; - } - } - return state; - } - function opNext(element, state, direction) { - var _a, _b; - function getNextElement(element) { - var _a, _b; - const parent = element.parent; - if (parent.type === "CharacterClass" || parent.type === "CharacterClassRange") { - throw new Error("The given element cannot be part of a character class."); - } - const continuePath = (_b = (_a = operations.continueAfter) === null || _a === void 0 ? void 0 : _a.call(operations, element, state, direction)) !== null && _b !== void 0 ? _b : true; - if (!continuePath) { - return false; - } - if (parent.type === "Quantifier") { - if (parent.max <= 1) { - return getNextElement(parent); - } - else { - return [parent, getNextElement(parent)]; - } - } - else { - const nextIndex = parent.elements.indexOf(element) + (direction === "ltr" ? +1 : -1); - const nextElement = parent.elements[nextIndex]; - if (nextElement) { - return nextElement; - } - else { - const parentParent = parent.parent; - if (parentParent.type === "Pattern") { - return "pattern"; - } - else if (parentParent.type === "Assertion") { - return "assertion"; - } - else if (parentParent.type === "CapturingGroup" || parentParent.type === "Group") { - return getNextElement(parentParent); - } - throw util_1.assertNever(parentParent); - } - } - } - while (true) { - let after = getNextElement(element); - while (Array.isArray(after)) { - const [quant, other] = after; - state = operations.join([state, opEnter(quant, operations.fork(state, direction), direction)], direction); - after = other; - } - if (after === false) { - return state; - } - else if (after === "assertion" || after === "pattern") { - state = (_b = (_a = operations.endPath) === null || _a === void 0 ? void 0 : _a.call(operations, state, direction, after)) !== null && _b !== void 0 ? _b : state; - return state; - } - else { - state = opEnter(after, state, direction); - element = after; - } - } - } - if (!direction) { - direction = matchingDirection(start); - } - if (startMode === "enter") { - initialState = opEnter(start, initialState, direction); - } - return opNext(start, initialState, direction); -} -exports.followPaths = followPaths; -function getFirstConsumedCharAfter(afterThis, direction, flags) { - const result = followPaths(afterThis, "next", { char: firstConsumedCharEmptyWord(flags), elements: [] }, { - fork(state) { - return state; - }, - join(states) { - const elements = new Set(); - states.forEach(s => s.elements.forEach(e => elements.add(e))); - return { - char: firstConsumedCharUnion(states.map(s => s.char), flags), - elements: [...elements], - }; - }, - enter(element, state, direction) { - const first = getFirstCharConsumedBy(element, direction, flags); - return { - char: firstConsumedCharConcat([state.char, first], flags), - elements: [...state.elements, element], - }; - }, - continueInto() { - return false; - }, - continueAfter(_, state) { - return state.char.empty; - }, - }, direction); - return { char: result.char, elements: result.elements }; -} -exports.getFirstConsumedCharAfter = getFirstConsumedCharAfter; -function getFirstCharAfter(afterThis, direction, flags) { - const result = getFirstConsumedCharAfter(afterThis, direction, flags); - return { char: firstConsumedToLook(result.char), elements: [...result.elements] }; -} -exports.getFirstCharAfter = getFirstCharAfter; -function getSingleConsumedChar(element, ignoreAssertions, flags) { - if (Array.isArray(element)) { - let empty = false; - const union = CharUnion.emptyFromFlags(flags); - for (const a of element) { - const single = getSingleConsumedChar(a, ignoreAssertions, flags); - empty = empty || single.empty; - union.add(single.char, single.exact); - } - return { char: union.char, exact: union.exact, empty }; - } - function multipleChars() { - return { char: char_util_1.emptyCharSet(flags), exact: true, empty: false }; - } - function zeroChars() { - return { char: char_util_1.emptyCharSet(flags), exact: true, empty: true }; - } - switch (element.type) { - case "Alternative": { - let nonEmptyResult = undefined; - const emptyUnion = CharUnion.emptyFromFlags(flags); - for (const e of element.elements) { - const single = getSingleConsumedChar(e, ignoreAssertions, flags); - if (nonEmptyResult === undefined) { - if (single.empty) { - emptyUnion.add(single.char, single.exact); - } - else { - nonEmptyResult = single; - } - } - else { - if (single.empty) { - } - else { - return multipleChars(); - } - } - } - if (nonEmptyResult) { - return nonEmptyResult; - } - else { - return { char: emptyUnion.char, exact: emptyUnion.exact, empty: true }; - } - } - case "Assertion": { - return { char: char_util_1.emptyCharSet(flags), exact: false, empty: ignoreAssertions }; - } - case "Character": - case "CharacterClass": - case "CharacterSet": { - return { char: char_util_1.toCharSet(element, flags), exact: true, empty: false }; - } - case "CapturingGroup": - case "Group": { - return getSingleConsumedChar(element.alternatives, ignoreAssertions, flags); - } - case "Backreference": { - if (isEmptyBackreference(element)) { - return zeroChars(); - } - const resolvedSingle = getSingleConsumedChar(element.resolved, ignoreAssertions, flags); - resolvedSingle.exact = resolvedSingle.exact && resolvedSingle.char.size <= 1; - resolvedSingle.empty = resolvedSingle.empty || !backreferenceAlwaysAfterGroup(element); - return resolvedSingle; - } - case "Quantifier": { - if (element.max === 0) { - return zeroChars(); - } - const single = getSingleConsumedChar(element.element, ignoreAssertions, flags); - if (!single.empty) { - if (element.min === 0) { - single.empty = true; - } - else if (element.min >= 2) { - return multipleChars(); - } - } - return single; - } - default: - throw util_1.assertNever(element); - } -} -exports.getSingleConsumedChar = getSingleConsumedChar; -function effectiveQuantifierMax(node) { - if (node == null) { - return 1; - } - else { - const parent = effectiveQuantifierMax(node.parent); - if (node.type === "Quantifier") { - if (node.max === 0 || parent === 0) { - return 0; - } - else { - return parent * node.max; - } - } - else { - return parent; - } - } -} -exports.effectiveQuantifierMax = effectiveQuantifierMax; -function underAStar(node) { - return effectiveQuantifierMax(node) > 20; -} -exports.underAStar = underAStar; -function getParentPrefixAndSuffix(parent) { - switch (parent.type) { - case "Assertion": - return ["(?" + (parent.kind === "lookahead" ? "" : "<") + (parent.negate ? "!" : "="), ")"]; - case "CapturingGroup": - if (parent.name !== null) { - return ["(?<" + parent.name + ">", ")"]; - } - else { - return ["(", ")"]; - } - case "Group": - return ["(?:", ")"]; - case "Pattern": - return ["", ""]; - default: - throw util_1.assertNever(parent); - } -} -exports.getParentPrefixAndSuffix = getParentPrefixAndSuffix; diff --git a/node_modules/eslint-plugin-clean-regex/dist/char-util.js b/node_modules/eslint-plugin-clean-regex/dist/char-util.js deleted file mode 100644 index f355385..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/char-util.js +++ /dev/null @@ -1,145 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isMatchNone = exports.isMatchAll = exports.wordCharSet = exports.lineTerminatorCharSet = exports.allCharSet = exports.emptyCharSet = exports.toCharSet = void 0; -const refa_1 = require("refa"); -const util_1 = require("./util"); -function toCharSet(elements, flags) { - if (Array.isArray(elements)) { - return refa_1.JS.createCharSet(elements.map(e => { - switch (e.type) { - case "Character": - return e.value; - case "CharacterClassRange": - return { min: e.min.value, max: e.max.value }; - case "CharacterSet": - return e; - default: - throw util_1.assertNever(e); - } - }), flags); - } - else { - switch (elements.type) { - case "Character": { - return refa_1.JS.createCharSet([elements.value], flags); - } - case "CharacterClass": { - const chars = toCharSet(elements.elements, flags); - if (elements.negate) { - return chars.negate(); - } - return chars; - } - case "CharacterSet": { - return refa_1.JS.createCharSet([elements], flags); - } - default: - throw util_1.assertNever(elements); - } - } -} -exports.toCharSet = toCharSet; -const EMPTY_UTF16_CHARSET = refa_1.CharSet.empty(0xffff); -const EMPTY_UNICODE_CHARSET = refa_1.CharSet.empty(0x10ffff); -function emptyCharSet(flags) { - if (flags.unicode) { - return EMPTY_UNICODE_CHARSET; - } - else { - return EMPTY_UTF16_CHARSET; - } -} -exports.emptyCharSet = emptyCharSet; -const ALL_UTF16_CHARSET = refa_1.CharSet.all(0xffff); -const ALL_UNICODE_CHARSET = refa_1.CharSet.all(0x10ffff); -function allCharSet(flags) { - if (flags.unicode) { - return ALL_UNICODE_CHARSET; - } - else { - return ALL_UTF16_CHARSET; - } -} -exports.allCharSet = allCharSet; -const LINE_TERMINATOR_UTF16_CHARSET = refa_1.JS.createCharSet([{ kind: "any" }], { unicode: false }).negate(); -const LINE_TERMINATOR_UNICODE_CHARSET = refa_1.JS.createCharSet([{ kind: "any" }], { unicode: true }).negate(); -function lineTerminatorCharSet(flags) { - if (flags.unicode) { - return LINE_TERMINATOR_UNICODE_CHARSET; - } - else { - return LINE_TERMINATOR_UTF16_CHARSET; - } -} -exports.lineTerminatorCharSet = lineTerminatorCharSet; -const WORD_UTF16_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { unicode: false }); -const WORD_UNICODE_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { unicode: true, ignoreCase: false }); -const WORD_UNICODE_IGNORE_CASE_CHARSET = refa_1.JS.createCharSet([{ kind: "word", negate: false }], { - unicode: true, - ignoreCase: true, -}); -function wordCharSet(flags) { - if (flags.unicode) { - if (flags.ignoreCase) { - return WORD_UNICODE_IGNORE_CASE_CHARSET; - } - else { - return WORD_UNICODE_CHARSET; - } - } - else { - return WORD_UTF16_CHARSET; - } -} -exports.wordCharSet = wordCharSet; -function isMatchAll(char, flags) { - if (char.type === "CharacterSet") { - if (char.kind === "property") { - return refa_1.JS.createCharSet([char], flags).isAll; - } - else if (char.kind === "any") { - return !!flags.dotAll; - } - else { - return false; - } - } - else { - if (char.negate && char.elements.length === 0) { - return true; - } - else { - if (char.negate) { - return toCharSet(char.elements, flags).isEmpty; - } - else { - return toCharSet(char.elements, flags).isAll; - } - } - } -} -exports.isMatchAll = isMatchAll; -function isMatchNone(char, flags) { - if (char.type === "CharacterSet") { - if (char.kind === "property") { - return refa_1.JS.createCharSet([char], flags).isEmpty; - } - else { - return false; - } - } - else { - if (!char.negate && char.elements.length === 0) { - return true; - } - else { - if (char.negate) { - return toCharSet(char.elements, flags).isAll; - } - else { - return toCharSet(char.elements, flags).isEmpty; - } - } - } -} -exports.isMatchNone = isMatchNone; diff --git a/node_modules/eslint-plugin-clean-regex/dist/configs.js b/node_modules/eslint-plugin-clean-regex/dist/configs.js deleted file mode 100644 index 0d369e6..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/configs.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - recommended: { - plugins: ["clean-regex"], - rules: { - "clean-regex/confusing-quantifier": "warn", - "clean-regex/consistent-match-all-characters": "warn", - "clean-regex/disjoint-alternatives": "warn", - "clean-regex/identity-escape": "warn", - "clean-regex/no-constant-capturing-group": "warn", - "clean-regex/no-empty-alternative": "warn", - "clean-regex/no-empty-backreference": "error", - "clean-regex/no-empty-lookaround": "error", - "clean-regex/no-lazy-ends": "warn", - "clean-regex/no-obscure-range": "error", - "clean-regex/no-octal-escape": "error", - "clean-regex/no-optional-assertion": "error", - "clean-regex/no-potentially-empty-backreference": "warn", - "clean-regex/no-trivially-nested-lookaround": "warn", - "clean-regex/no-trivially-nested-quantifier": "warn", - "clean-regex/no-unnecessary-assertions": "error", - "clean-regex/no-unnecessary-character-class": "warn", - "clean-regex/no-unnecessary-flag": "warn", - "clean-regex/no-unnecessary-group": "warn", - "clean-regex/no-unnecessary-lazy": "warn", - "clean-regex/no-unnecessary-quantifier": "warn", - "clean-regex/no-zero-quantifier": "error", - "clean-regex/optimal-concatenation-quantifier": "warn", - "clean-regex/optimal-lookaround-quantifier": "warn", - "clean-regex/optimized-character-class": "warn", - "clean-regex/prefer-character-class": "warn", - "clean-regex/prefer-predefined-assertion": "warn", - "clean-regex/prefer-predefined-character-set": "warn", - "clean-regex/prefer-predefined-quantifiers": "warn", - "clean-regex/simple-constant-quantifier": "warn", - "clean-regex/sort-flags": "warn", - }, - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/fa-util.js b/node_modules/eslint-plugin-clean-regex/dist/fa-util.js deleted file mode 100644 index 62473e4..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/fa-util.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.nfaUnionAll = exports.nfaIsSubsetOf = exports.nfaIsSupersetOf = exports.nfaEquals = void 0; -const refa_1 = require("refa"); -function nfaEquals(a, b) { - if (a.isEmpty || b.isEmpty) { - return a.isEmpty === b.isEmpty; - } - if (a.options.maxCharacter !== b.options.maxCharacter) { - return false; - } - const { maxCharacter } = a.options; - const x = a.nodes; - const y = b.nodes; - if (x.finals.has(x.initial) !== y.finals.has(y.initial)) { - return false; - } - function unionAll(iter) { - let total = undefined; - for (const item of iter) { - if (total === undefined) { - total = item; - } - else { - total = total.union(item); - } - } - return total || refa_1.CharSet.empty(maxCharacter); - } - if (!unionAll(x.initial.out.values()).equals(unionAll(y.initial.out.values()))) { - return false; - } - const aDfa = refa_1.DFA.fromFA(a); - aDfa.minimize(); - const bDfa = refa_1.DFA.fromFA(b); - bDfa.minimize(); - return aDfa.structurallyEqual(bDfa); -} -exports.nfaEquals = nfaEquals; -function nfaIsSupersetOf(superset, subset) { - const union = superset.copy(); - union.union(subset); - return nfaEquals(union, superset); -} -exports.nfaIsSupersetOf = nfaIsSupersetOf; -function nfaIsSubsetOf(subset, superset) { - return nfaIsSupersetOf(superset, subset); -} -exports.nfaIsSubsetOf = nfaIsSubsetOf; -function nfaUnionAll(nfas, options) { - const total = refa_1.NFA.empty(options); - for (const nfa of nfas) { - total.union(nfa); - } - return total; -} -exports.nfaUnionAll = nfaUnionAll; diff --git a/node_modules/eslint-plugin-clean-regex/dist/format.js b/node_modules/eslint-plugin-clean-regex/dist/format.js deleted file mode 100644 index 6a34e4c..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/format.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.many = exports.mentionCharElement = exports.mention = exports.toRegExpString = exports.shorten = void 0; -const refa_1 = require("refa"); -const util_1 = require("./util"); -const ast_util_1 = require("./ast-util"); -function shorten(string, maxLength, position) { - if (string.length <= maxLength) { - return string; - } - else { - maxLength--; - if (position === "end" || position == undefined) { - return string.substr(0, maxLength) + "…"; - } - else if (position === "start") { - return "…" + string.substr(string.length - maxLength, maxLength); - } - else if (position === "center") { - const start = maxLength >>> 1; - const end = start + (maxLength % 2); - return string.substr(0, start) + "…" + string.substr(string.length - end, end); - } - else { - throw new Error("Invalid position."); - } - } -} -exports.shorten = shorten; -function toRegExpString(value) { - if ("toRegex" in value) { - const re = value.toRegex(); - const literal = refa_1.JS.toLiteral(re); - return toRegExpString(literal); - } - else { - return `/${value.source}/${value.flags}`; - } -} -exports.toRegExpString = toRegExpString; -function mention(node) { - return "`" + (typeof node === "string" ? node : node.raw) + "`"; -} -exports.mention = mention; -function mentionCharElement(element) { - switch (element.type) { - case "Character": - return `${mention(element)} (${ast_util_1.minimalHexEscape(element.value)})`; - case "CharacterClassRange": - return `${mention(element)} (${ast_util_1.minimalHexEscape(element.min.value)}-${ast_util_1.minimalHexEscape(element.max.value)})`; - case "CharacterSet": - switch (element.kind) { - case "digit": - return `${mention(element)} ([${element.negate ? "^" : ""}0-9])`; - case "word": - return `${mention(element)} ([${element.negate ? "^" : ""}0-9A-Za-z_])`; - default: - return mention(element); - } - default: - throw util_1.assertNever(element); - } -} -exports.mentionCharElement = mentionCharElement; -function many(count, unit, unitPlural) { - if (!unitPlural) { - if (unit.length > 1 && unit[unit.length - 1] === "y") { - unitPlural = unit.substr(0, unit.length - 1) + "ies"; - } - else { - unitPlural = unit + "s"; - } - } - if (count === 1) { - return "1 " + unit; - } - else { - return count + " " + unitPlural; - } -} -exports.many = many; diff --git a/node_modules/eslint-plugin-clean-regex/dist/index.js b/node_modules/eslint-plugin-clean-regex/dist/index.js deleted file mode 100644 index c336228..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/index.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.rules = exports.configs = void 0; -const configs_1 = __importDefault(require("./configs")); -const confusing_quantifier_1 = __importDefault(require("./rules/confusing-quantifier")); -const consistent_match_all_characters_1 = __importDefault(require("./rules/consistent-match-all-characters")); -const disjoint_alternatives_1 = __importDefault(require("./rules/disjoint-alternatives")); -const identity_escape_1 = __importDefault(require("./rules/identity-escape")); -const no_constant_capturing_group_1 = __importDefault(require("./rules/no-constant-capturing-group")); -const no_empty_alternative_1 = __importDefault(require("./rules/no-empty-alternative")); -const no_empty_backreference_1 = __importDefault(require("./rules/no-empty-backreference")); -const no_empty_lookaround_1 = __importDefault(require("./rules/no-empty-lookaround")); -const no_lazy_ends_1 = __importDefault(require("./rules/no-lazy-ends")); -const no_obscure_range_1 = __importDefault(require("./rules/no-obscure-range")); -const no_octal_escape_1 = __importDefault(require("./rules/no-octal-escape")); -const no_optional_assertion_1 = __importDefault(require("./rules/no-optional-assertion")); -const no_potentially_empty_backreference_1 = __importDefault(require("./rules/no-potentially-empty-backreference")); -const no_trivially_nested_lookaround_1 = __importDefault(require("./rules/no-trivially-nested-lookaround")); -const no_trivially_nested_quantifier_1 = __importDefault(require("./rules/no-trivially-nested-quantifier")); -const no_unnecessary_assertions_1 = __importDefault(require("./rules/no-unnecessary-assertions")); -const no_unnecessary_character_class_1 = __importDefault(require("./rules/no-unnecessary-character-class")); -const no_unnecessary_flag_1 = __importDefault(require("./rules/no-unnecessary-flag")); -const no_unnecessary_group_1 = __importDefault(require("./rules/no-unnecessary-group")); -const no_unnecessary_lazy_1 = __importDefault(require("./rules/no-unnecessary-lazy")); -const no_unnecessary_quantifier_1 = __importDefault(require("./rules/no-unnecessary-quantifier")); -const no_zero_quantifier_1 = __importDefault(require("./rules/no-zero-quantifier")); -const optimal_concatenation_quantifier_1 = __importDefault(require("./rules/optimal-concatenation-quantifier")); -const optimal_lookaround_quantifier_1 = __importDefault(require("./rules/optimal-lookaround-quantifier")); -const optimized_character_class_1 = __importDefault(require("./rules/optimized-character-class")); -const prefer_character_class_1 = __importDefault(require("./rules/prefer-character-class")); -const prefer_predefined_assertion_1 = __importDefault(require("./rules/prefer-predefined-assertion")); -const prefer_predefined_character_set_1 = __importDefault(require("./rules/prefer-predefined-character-set")); -const prefer_predefined_quantifiers_1 = __importDefault(require("./rules/prefer-predefined-quantifiers")); -const simple_constant_quantifier_1 = __importDefault(require("./rules/simple-constant-quantifier")); -const sort_flags_1 = __importDefault(require("./rules/sort-flags")); -exports.configs = configs_1.default; -exports.rules = { - "confusing-quantifier": confusing_quantifier_1.default, - "consistent-match-all-characters": consistent_match_all_characters_1.default, - "disjoint-alternatives": disjoint_alternatives_1.default, - "identity-escape": identity_escape_1.default, - "no-constant-capturing-group": no_constant_capturing_group_1.default, - "no-empty-alternative": no_empty_alternative_1.default, - "no-empty-backreference": no_empty_backreference_1.default, - "no-empty-lookaround": no_empty_lookaround_1.default, - "no-lazy-ends": no_lazy_ends_1.default, - "no-obscure-range": no_obscure_range_1.default, - "no-octal-escape": no_octal_escape_1.default, - "no-optional-assertion": no_optional_assertion_1.default, - "no-potentially-empty-backreference": no_potentially_empty_backreference_1.default, - "no-trivially-nested-lookaround": no_trivially_nested_lookaround_1.default, - "no-trivially-nested-quantifier": no_trivially_nested_quantifier_1.default, - "no-unnecessary-assertions": no_unnecessary_assertions_1.default, - "no-unnecessary-character-class": no_unnecessary_character_class_1.default, - "no-unnecessary-flag": no_unnecessary_flag_1.default, - "no-unnecessary-group": no_unnecessary_group_1.default, - "no-unnecessary-lazy": no_unnecessary_lazy_1.default, - "no-unnecessary-quantifier": no_unnecessary_quantifier_1.default, - "no-zero-quantifier": no_zero_quantifier_1.default, - "optimal-concatenation-quantifier": optimal_concatenation_quantifier_1.default, - "optimal-lookaround-quantifier": optimal_lookaround_quantifier_1.default, - "optimized-character-class": optimized_character_class_1.default, - "prefer-character-class": prefer_character_class_1.default, - "prefer-predefined-assertion": prefer_predefined_assertion_1.default, - "prefer-predefined-character-set": prefer_predefined_character_set_1.default, - "prefer-predefined-quantifiers": prefer_predefined_quantifiers_1.default, - "simple-constant-quantifier": simple_constant_quantifier_1.default, - "sort-flags": sort_flags_1.default, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules-util.js b/node_modules/eslint-plugin-clean-regex/dist/rules-util.js deleted file mode 100644 index 6a790bc..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules-util.js +++ /dev/null @@ -1,234 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getDocUrl = exports.filenameToRule = exports.repoTreeRoot = exports.createRuleListener = void 0; -const regexpp_1 = require("regexpp"); -const parser = new regexpp_1.RegExpParser(); -const patternCache = new Map(); -const flagsCache = new Map(); -function getPattern(source, uFlag) { - const key = `${uFlag ? "u" : ""}:${source}`; - let pattern = patternCache.get(key); - if (pattern === undefined) { - pattern = null; - try { - pattern = parser.parsePattern(source, undefined, undefined, uFlag); - } - catch (error) { - } - patternCache.set(key, pattern); - } - return pattern; -} -function getFlags(flags) { - const key = flags; - let f = flagsCache.get(key); - if (f === undefined) { - f = null; - try { - f = parser.parseFlags(flags); - } - catch (error) { - } - flagsCache.set(key, f); - } - return f; -} -function createListenerContext(regexNode) { - const pattern = getPattern(regexNode.regex.pattern, regexNode.regex.flags.indexOf("u") != -1); - const flags = getFlags(regexNode.regex.flags); - if (!pattern || !flags) { - return null; - } - function replaceLiteralImpl(patternReplacement, flagsReplacement) { - const range = regexNode.range; - if (!range) { - throw new Error("The regex literal node does not have a range associated with it."); - } - return { - loc: copyLoc(regexNode.loc), - fix: fixer => fixer.replaceTextRange(range, `/${patternReplacement}/${flagsReplacement}`), - }; - } - function replaceElementImpl(element, replacement, options) { - var _a; - if (options === null || options === void 0 ? void 0 : options.dependsOnFlags) { - const pattern = regexNode.regex.pattern; - const flags = regexNode.regex.flags; - const patternReplacement = pattern.substring(0, element.start) + replacement + pattern.substring(element.end); - return { - loc: locOfElement(regexNode, element), - fix: replaceLiteralImpl(patternReplacement, flags).fix, - }; - } - else { - const region = (_a = elementLocUnion([...toArray(options === null || options === void 0 ? void 0 : options.dependsOn), element])) !== null && _a !== void 0 ? _a : element; - if (region.start === element.start && region.end === element.end) { - return { - loc: locOfElement(regexNode, element), - fix: fixer => replaceElement(fixer, regexNode, element, replacement), - }; - } - else { - const regionPattern = regexNode.regex.pattern.substring(region.start, region.end); - const regionReplacement = regionPattern.substring(0, element.start - region.start) + - replacement + - regionPattern.substring(element.end - region.start); - return { - loc: locOfElement(regexNode, element), - fix: fixer => replaceElement(fixer, regexNode, region, regionReplacement), - }; - } - } - } - const listenerContext = { - pattern, - flags, - visitAST(handlers) { - regexpp_1.visitRegExpAST(pattern, handlers); - }, - reportElement(element) { - return { loc: locOfElement(regexNode, element) }; - }, - reportQuantifier(element) { - return { loc: locOfElement(regexNode, elementLocOfQuantifier(element)) }; - }, - reportFlags() { - return { loc: locOfRegexFlags(regexNode) }; - }, - reportElements(elements) { - const union = elementLocUnion(elements); - if (!union) { - throw new Error("There has to be at least one element to report!"); - } - return { loc: locOfElement(regexNode, union) }; - }, - replaceLiteral: replaceLiteralImpl, - replaceElement: replaceElementImpl, - replaceQuantifier(element, replacement, options) { - const quant = elementLocOfQuantifier(element); - return replaceElementImpl(quant, replacement, options); - }, - replaceFlags(replacement, options) { - if (options === null || options === void 0 ? void 0 : options.dependsOn) { - return { - loc: locOfRegexFlags(regexNode), - fix: fixer => replaceFlags(fixer, regexNode, replacement), - }; - } - else { - return { - loc: locOfRegexFlags(regexNode), - fix: replaceLiteralImpl(regexNode.regex.pattern, replacement).fix, - }; - } - }, - removeElement(element, options) { - const parent = element.parent; - if (parent && parent.type === "Alternative" && parent.elements.length === 1) { - const pattern = parent.parent; - if (pattern.type === "Pattern" && pattern.alternatives.length === 1) { - return replaceElementImpl(element, "(?:)", options); - } - } - if (parent && parent.type === "Quantifier") { - return replaceElementImpl(element, "(?:)", options); - } - return replaceElementImpl(element, "", options); - }, - parseExpression(expression) { - return getPattern(expression, regexNode.regex.flags.indexOf("u") != -1); - }, - }; - return listenerContext; -} -function createRuleListener(listener) { - return { - Literal(node) { - const regexNode = node; - if (typeof regexNode.regex === "object") { - const listenerContext = createListenerContext(regexNode); - if (listenerContext !== null) { - listener.call(this, listenerContext); - } - } - }, - }; -} -exports.createRuleListener = createRuleListener; -function elementLocUnion(array) { - if (array.length === 0) { - return undefined; - } - else { - let start = array[0].start; - let end = array[0].end; - for (const item of array) { - start = Math.min(start, item.start); - end = Math.max(end, item.end); - } - return { start, end }; - } -} -function elementLocOfQuantifier(element) { - return { start: element.element.end, end: element.end }; -} -function copyLoc(loc) { - if (!loc) { - throw new Error("The node does not include source location information!"); - } - return { - start: Object.assign({}, loc.start), - end: Object.assign({}, loc.end), - }; -} -function locOfElement(node, element) { - const loc = copyLoc(node.loc); - const offset = loc.start.column + "/".length; - loc.start.column = offset + element.start; - loc.end.column = offset + element.end; - return loc; -} -function locOfRegexFlags(node) { - const loc = copyLoc(node.loc); - const flagCount = Math.max(1, node.regex.flags.length); - loc.start.column = loc.end.column - flagCount; - return loc; -} -function replaceElement(fixer, node, element, replacement) { - if (!node.range) { - throw new Error("The given node does not have range information."); - } - const offset = node.range[0] + "/".length; - return fixer.replaceTextRange([offset + element.start, offset + element.end], replacement); -} -function replaceFlags(fixer, node, replacement) { - if (!node.range) { - throw new Error("The given node does not have range information."); - } - const start = node.range[1] - node.regex.flags.length; - return fixer.replaceTextRange([start, node.range[1]], replacement); -} -function toArray(value) { - if (Array.isArray(value)) { - return value; - } - else if (value === undefined) { - return []; - } - else { - return [value]; - } -} -exports.repoTreeRoot = "https://github.com/RunDevelopment/eslint-plugin-clean-regex/blob/master"; -function filenameToRule(filename) { - const rule = (/([-\w]+)\.[jt]s$/.exec(filename) || [undefined, undefined])[1]; - if (!rule) { - throw new Error(`Invalid rule filename: ${filename}`); - } - return rule; -} -exports.filenameToRule = filenameToRule; -function getDocUrl(rule) { - return `${exports.repoTreeRoot}/docs/rules/${rule}.md`; -} -exports.getDocUrl = getDocUrl; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js deleted file mode 100644 index 92b4546..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/confusing-quantifier.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Warn about confusing quantifiers.", - url: rules_util_1.getDocUrl("confusing-quantifier"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportQuantifier }) => { - visitAST({ - onQuantifierEnter(node) { - if (node.min > 0 && ast_util_1.isPotentiallyEmpty(node.element)) { - const proposal = ast_util_1.quantToString(Object.assign(Object.assign({}, node), { min: 0 })); - context.report(Object.assign({ message: `This quantifier is confusing because its minimum is ${node.min} but it can match the empty string.` + - ` Maybe replace it with ${format_1.mention(proposal)} to reflect that it can match the empty string?` }, reportQuantifier(node))); - return; - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js b/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js deleted file mode 100644 index 8a74e0d..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/consistent-match-all-characters.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const format_1 = require("../format"); -const util_1 = require("../util"); -const char_util_1 = require("../char-util"); -function removeDescendantNodes(nodes) { - return nodes.filter(({ node }) => { - return !nodes.some(({ node: n }) => n != node && n.start <= node.start && n.end >= node.end); - }); -} -const modes = ["dot", "dot-if-dotAll", "char-class"]; -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Use one character class consistently whenever all characters have to be matched.", - url: rules_util_1.getDocUrl("consistent-match-all-characters"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - mode: { - type: "string", - enum: modes, - }, - charClass: { - type: "string", - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - const options = context.options[0] || {}; - const mode = options.mode || "dot-if-dotAll"; - const charClass = options.charClass || "[\\s\\S]"; - function getReplacement(flags) { - switch (mode) { - case "dot": - return "."; - case "dot-if-dotAll": - if (flags.dotAll) { - return "."; - } - else { - return charClass; - } - case "char-class": - return charClass; - default: - throw util_1.assertNever(mode); - } - } - return rules_util_1.createRuleListener(({ visitAST, pattern, flags, replaceElement, replaceLiteral }) => { - const replacement = getReplacement(flags); - let nodesToReplace = []; - visitAST({ - onCharacterClassEnter(node) { - if (node.raw !== replacement && char_util_1.isMatchAll(node, flags)) { - nodesToReplace.push({ - node, - message: `Replace this character class with ${format_1.mention(replacement)}.`, - replacement, - }); - } - }, - onCharacterSetEnter(node) { - if ("." !== replacement && node.kind === "any" && flags.dotAll) { - nodesToReplace.push({ - node, - message: `Replace this dot with ${format_1.mention(replacement)}.`, - replacement, - }); - } - }, - }); - nodesToReplace = removeDescendantNodes(nodesToReplace); - if (nodesToReplace.length === 0) { - return; - } - if ((replacement === ".") === flags.dotAll) { - nodesToReplace.forEach(({ node, message, replacement }) => { - context.report(Object.assign({ message: message }, replaceElement(node, replacement, { dependsOnFlags: true }))); - }); - } - else { - let newFlags; - if (replacement === ".") { - newFlags = flags.raw + "s"; - if (flags.raw === [...flags.raw].sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join("")) { - newFlags = [...newFlags].sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join(""); - } - } - else { - newFlags = flags.raw.replace(/s/, ""); - } - nodesToReplace.sort((a, b) => a.node.start - b.node.start); - const oldPattern = pattern.raw; - let lastEndIndex = 0; - let newPattern = ""; - for (const { node, replacement } of nodesToReplace) { - newPattern += oldPattern.substr(lastEndIndex, node.start); - newPattern += replacement; - lastEndIndex = node.end; - } - newPattern += oldPattern.substr(lastEndIndex); - const manyElements = format_1.many(nodesToReplace.length, "element"); - context.report(Object.assign({ message: `${manyElements} in the pattern will be replaced with ${format_1.mention(replacement)}` + - ` and the s flag will be ${replacement === "." ? "added" : "removed"}.` }, replaceLiteral(newPattern, newFlags))); - } - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js b/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js deleted file mode 100644 index 3395432..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/disjoint-alternatives.js +++ /dev/null @@ -1,138 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const refa_1 = require("refa"); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const fa_util_1 = require("../fa-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow different alternatives that can match the same words.", - url: rules_util_1.getDocUrl("disjoint-alternatives"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, pattern, reportElement }) => { - const parser = refa_1.JS.Parser.fromAst({ pattern, flags }); - function toNfa(alt) { - try { - const result = parser.parseElement(alt, { backreferences: "disable", assertions: "disable" }); - const nfa = refa_1.NFA.fromRegex(result.expression, { maxCharacter: result.maxCharacter }); - nfa.withoutEmptyWord(); - return nfa; - } - catch (e) { - if (e instanceof refa_1.TooManyNodesError) { - return refa_1.NFA.empty({ maxCharacter: flags.unicode ? 0x10ffff : 0xffff }); - } - throw e; - } - } - function findFirstSuperset(alternatives, subset) { - for (const alt of alternatives) { - if (fa_util_1.nfaIsSupersetOf(toNfa(alt), subset)) { - return [alt]; - } - } - return []; - } - function findNonDisjoint(alternatives, set) { - return alternatives.filter(alt => { - return !areDisjoint(toNfa(alt), set); - }); - } - function areDisjoint(a, b) { - return a.isDisjointWith(b, { - maxNodes: 1000, - }); - } - function checkAlternatives(alternatives) { - if (alternatives.length < 2) { - return "disjoint"; - } - let result = "disjoint"; - let total = undefined; - for (const alt of alternatives) { - const isLast = alt === alternatives[alternatives.length - 1]; - const nfa = toNfa(alt); - if (nfa.isEmpty) { - } - else if (!total) { - if (!isLast) { - total = nfa.copy(); - } - } - else if (areDisjoint(total, nfa)) { - if (!isLast) { - total.union(nfa); - } - } - else { - const altIndex = alternatives.indexOf(alt); - const beforeAlternatives = alternatives.slice(0, altIndex); - const intersection = refa_1.NFA.fromIntersection(total, nfa); - const isSubset = fa_util_1.nfaEquals(nfa, intersection); - const cause = isSubset ? findFirstSuperset(beforeAlternatives, nfa) : []; - if (cause.length === 0) { - cause.push(...findNonDisjoint(beforeAlternatives, nfa)); - } - const causeMsg = cause ? cause.map(format_1.mention).join(" | ") : "the previous one(s)"; - const isSuperset = fa_util_1.nfaIsSupersetOf(nfa, fa_util_1.nfaUnionAll(cause.map(toNfa), nfa.options)); - let message; - if (isSubset) { - message = isSuperset - ? `This alternative is the same as ${causeMsg} and can be removed.` - : `This alternative is a subset of ${causeMsg} and can be removed.`; - if (ast_util_1.hasSomeDescendant(alt, d => d.type === "CapturingGroup")) { - message += " This alternative contains a capturing group so be careful when removing."; - } - } - else { - let sharedLanguageMsg; - try { - sharedLanguageMsg = ` The shared language is ${format_1.toRegExpString(intersection)}.`; - } - catch (e) { - sharedLanguageMsg = ""; - } - message = isSuperset - ? `This alternative is a superset of ${causeMsg}.` - : `This alternative is not disjoint with ${causeMsg}.${sharedLanguageMsg}`; - } - if (ast_util_1.underAStar(alt)) { - message += " This alternative is likely to cause exponential backtracking."; - } - context.report(Object.assign({ message }, reportElement(alt))); - result = "reported"; - } - } - return result; - } - const ignoreNodes = new Set(); - function ignoreParents(node) { - for (let parent = node.parent; parent; parent = parent.parent) { - ignoreNodes.add(parent); - } - } - function process(node) { - if (!ignoreNodes.has(node)) { - if (checkAlternatives(node.alternatives) === "reported") { - ignoreParents(node); - } - } - } - visitAST({ - onAssertionLeave(node) { - if (node.kind === "lookahead" || node.kind === "lookbehind") { - process(node); - } - }, - onCapturingGroupLeave: process, - onGroupLeave: process, - onPatternLeave: process, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js b/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js deleted file mode 100644 index 821806f..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/identity-escape.js +++ /dev/null @@ -1,282 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const regexpp_1 = require("regexpp"); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const char_util_1 = require("../char-util"); -function processLiteralEscapeOption(literalOptions) { - const escapes = []; - const parser = new regexpp_1.RegExpParser({ ecmaVersion: 2020 }); - const flags = { unicode: true }; - for (let index = 0; index < literalOptions.length; index++) { - const element = literalOptions[index]; - const characterClassRaw = element["characters"]; - const errorMessage = `The characters pattern ${JSON.stringify(characterClassRaw)} of ${element.name} is not a valid character, character class, or character set.`; - let ast; - try { - ast = parser.parsePattern(characterClassRaw, undefined, undefined, true); - } - catch (error) { - throw new SyntaxError(errorMessage); - } - let char = undefined; - if (ast.alternatives.length === 1) { - const alt = ast.alternatives[0]; - if (alt.elements.length === 1) { - const e = alt.elements[0]; - if (e.type === "CharacterClass" || e.type === "Character" || e.type === "CharacterSet") { - char = e; - } - } - } - if (char === undefined) { - throw new Error(errorMessage); - } - const set = char_util_1.toCharSet(char, flags); - let matches; - if (set.isEmpty) { - matches = () => false; - } - else if (set.isAll) { - matches = () => true; - } - else if (set.ranges.length === 1) { - const { min, max } = set.ranges[0]; - matches = c => min <= c && c <= max; - } - else { - matches = c => set.has(c); - } - escapes.push({ - matches, - context: element.context || "all", - escape: element.escape, - name: element.name || `rules[${index}]`, - }); - } - return escapes; -} -function isFirstInCharClass(char) { - const parent = char.parent; - switch (parent.type) { - case "CharacterClass": - return parent.elements[0] === char; - case "CharacterClassRange": - if (parent.min !== char) { - return false; - } - return parent.parent.elements[0] === parent; - default: - throw new Error("The given character is not part of a character class."); - } -} -function isLastInCharClass(char) { - const parent = char.parent; - switch (parent.type) { - case "CharacterClass": - return parent.elements[parent.elements.length - 1] === char; - case "CharacterClassRange": - if (parent.max !== char) { - return false; - } - return parent.parent.elements[parent.parent.elements.length - 1] === parent; - default: - throw new Error("The given character is not part of a character class."); - } -} -const SYNTAX_CHARACTERS = new Set([..."^$\\.*+?()[]{}|"]); -function canToggleLiteralEscape(char, flags) { - const inside = char.parent.type === "CharacterClass" || char.parent.type === "CharacterClassRange"; - const { unicode } = flags; - if (char.raw === "\\") { - return false; - } - if (char.raw.startsWith("\\")) { - const charString = char.raw.substr(1); - if (charString === "\\") { - return false; - } - if (charString === String.fromCodePoint(char.value)) { - if (inside) { - if (char.value === "]".charCodeAt(0)) { - return false; - } - else if (char.value === "-".charCodeAt(0)) { - return isFirstInCharClass(char) || isLastInCharClass(char); - } - else if (char.value === "^".charCodeAt(0)) { - return !isFirstInCharClass(char); - } - else { - return true; - } - } - else { - if (unicode) { - return false; - } - if (charString === "/") { - return false; - } - if (SYNTAX_CHARACTERS.has(charString)) { - return false; - } - else { - return true; - } - } - } - else { - return false; - } - } - else { - if (unicode) { - if (inside && (SYNTAX_CHARACTERS.has(char.raw) || char.raw === "/")) { - return true; - } - else { - return false; - } - } - else { - if (/^[a-zA-Z0-9]$/.test(char.raw)) { - return false; - } - else { - return true; - } - } - } -} -function charsOf(string) { - const chars = [...string].map(s => { - const cp = s.codePointAt(0); - if (cp === undefined) { - throw new Error(); - } - return cp; - }); - if (chars.length === 0) { - return () => false; - } - else if (chars.length === 1) { - const char = chars[0]; - return c => c == char; - } - else { - const set = new Set(chars); - return c => set.has(c); - } -} -const standardRules = [ - { - name: "standard:opening-square-bracket", - escape: "require", - context: "inside", - matches: charsOf("["), - }, - { - name: "standard:closing-square-bracket", - escape: "require", - context: "outside", - matches: charsOf("]"), - }, - { - name: "standard:curly-braces", - escape: "require", - context: "outside", - matches: charsOf("{}"), - }, - { - name: "standard:all", - escape: "disallow", - context: "all", - matches: () => true, - }, -]; -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "How to handle identity escapes.", - url: rules_util_1.getDocUrl("identity-escape"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - rules: { - type: "array", - items: { - type: "object", - properties: { - name: { - type: "string", - }, - escape: { - type: "string", - enum: ["require", "disallow", "allow"], - }, - context: { - type: "string", - enum: ["inside", "outside", "all"], - }, - characters: { - type: "string", - }, - }, - required: ["escape", "characters"], - additionalProperties: false, - }, - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - const options = context.options[0] || {}; - const literalEscaped = []; - literalEscaped.push(...processLiteralEscapeOption(options["rules"] || [])); - literalEscaped.push(...standardRules); - return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement }) => { - visitAST({ - onCharacterEnter(node) { - if (!canToggleLiteralEscape(node, flags)) { - return; - } - const inside = node.parent.type === "CharacterClass" || node.parent.type === "CharacterClassRange"; - const isEscaped = node.raw.startsWith("\\"); - const toggled = isEscaped ? node.raw.substr(1) : "\\" + node.raw; - for (const escapeRule of literalEscaped) { - if ((escapeRule.context === "inside" && !inside) || - (escapeRule.context === "outside" && inside)) { - continue; - } - if (escapeRule.matches(node.value)) { - const causedBy = escapeRule.name ? ` (${escapeRule.name})` : ""; - switch (escapeRule.escape) { - case "allow": - return; - case "disallow": - if (isEscaped) { - context.report(Object.assign({ message: `The character ${format_1.mentionCharElement(node)} should be unescaped${causedBy}.` }, replaceElement(node, toggled))); - } - return; - case "require": - if (!isEscaped) { - context.report(Object.assign({ message: `The character ${format_1.mentionCharElement(node)} should be escaped${causedBy}.` }, replaceElement(node, toggled))); - } - return; - default: - throw new Error(`Invalid escape option "${escapeRule.escape}".`); - } - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js deleted file mode 100644 index 6f71ec6..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-constant-capturing-group.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow capturing groups that can match only one word.", - url: rules_util_1.getDocUrl("no-constant-capturing-group"), - }, - schema: [ - { - type: "object", - properties: { - ignoreNonEmpty: { - type: "boolean", - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - let ignoreNonEmpty = (context.options[0] || {}).ignoreNonEmpty; - if (typeof ignoreNonEmpty !== "boolean") { - ignoreNonEmpty = true; - } - return rules_util_1.createRuleListener(({ visitAST, flags, reportElement }) => { - visitAST({ - onCapturingGroupEnter(node) { - if (node.alternatives.length === 1) { - const concatenation = node.alternatives[0].elements; - if (concatenation.length === 0) { - context.report(Object.assign({ message: "Empty capturing group" }, reportElement(node))); - return; - } - } - const constant = ast_util_1.getConstant(node, flags); - if (constant && !(ignoreNonEmpty && constant.word !== "")) { - const word = constant.word - ? `one word which is ${JSON.stringify(constant.word)}` - : "the empty string"; - context.report(Object.assign({ message: `The capturing group ${format_1.mention(node)} can only capture ${word}.` }, reportElement(node))); - return; - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js deleted file mode 100644 index f0bcda4..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-alternative.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow alternatives without elements.", - url: rules_util_1.getDocUrl("no-empty-alternative"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - function checkAlternatives(node) { - if (node.alternatives.length >= 2) { - for (let i = 0; i < node.alternatives.length; i++) { - const alt = node.alternatives[i]; - if (alt.elements.length === 0) { - context.report(Object.assign({ message: "No empty alternatives. Use quantifiers instead." }, reportElement(node))); - return; - } - } - } - } - visitAST({ - onGroupEnter: checkAlternatives, - onCapturingGroupEnter: checkAlternatives, - onPatternEnter: checkAlternatives, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js deleted file mode 100644 index 3c2b245..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-backreference.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow backreferences that will always be replaced with the empty string.", - url: rules_util_1.getDocUrl("no-empty-backreference"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onBackreferenceEnter(node) { - if (ast_util_1.isZeroLength(node.resolved)) { - context.report(Object.assign({ message: "The referenced capturing group can only match the empty string." }, reportElement(node))); - return; - } - if (ast_util_1.isEmptyBackreference(node)) { - context.report(Object.assign({ message: "The backreference is not reachable from the referenced capturing group without resetting the captured string." }, reportElement(node))); - return; - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js deleted file mode 100644 index 88e4f43..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-empty-lookaround.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const format_1 = require("../format"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow lookarounds that can match the empty string.", - url: rules_util_1.getDocUrl("no-empty-lookaround"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onAssertionEnter(node) { - if (node.kind !== "lookahead" && node.kind !== "lookbehind") { - return; - } - const empty = ast_util_1.isPotentiallyEmpty(node.alternatives, { backreferencesAreNonEmpty: true }); - if (empty) { - context.report(Object.assign({ message: `The ${node.kind} ${format_1.mention(node)} is non-functional as it matches the empty string.` + - ` It will always trivially ${node.negate ? "reject" : "accept"}.` }, reportElement(node))); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js deleted file mode 100644 index 563a761..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-lazy-ends.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -function getLazyEndQuantifiers(alternatives) { - const quantifiers = []; - for (const { elements } of alternatives) { - if (elements.length > 0) { - const last = elements[elements.length - 1]; - switch (last.type) { - case "Quantifier": - if (!last.greedy && last.min !== last.max) { - quantifiers.push(last); - } - else if (last.max === 1) { - const element = last.element; - if (element.type === "Group" || element.type === "CapturingGroup") { - quantifiers.push(...getLazyEndQuantifiers(element.alternatives)); - } - } - break; - case "CapturingGroup": - case "Group": - quantifiers.push(...getLazyEndQuantifiers(last.alternatives)); - break; - default: - break; - } - } - } - return quantifiers; -} -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow lazy quantifiers at the end of an expression.", - url: rules_util_1.getDocUrl("no-lazy-ends"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ pattern, reportElement, reportQuantifier }) => { - const lazyQuantifiers = getLazyEndQuantifiers(pattern.alternatives); - for (const lazy of lazyQuantifiers) { - if (lazy.min === 0) { - context.report(Object.assign({ message: "The quantifier and the quantified element can be removed because the quantifier is lazy and has a minimum of 0." }, reportElement(lazy))); - } - else if (lazy.min === 1) { - context.report(Object.assign({ message: "The quantifier can be removed because the quantifier is lazy and has a minimum of 1." }, reportQuantifier(lazy))); - } - else { - context.report(Object.assign({ message: `The quantifier can be replaced with '{${lazy.min}}' because the quantifier is lazy and has a minimum of ${lazy.min}.` }, reportQuantifier(lazy))); - } - } - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js deleted file mode 100644 index 6d8c265..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-obscure-range.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const allowedRanges = [ - { min: "0".charCodeAt(0), max: "9".charCodeAt(0) }, - { min: "A".charCodeAt(0), max: "Z".charCodeAt(0) }, - { min: "a".charCodeAt(0), max: "z".charCodeAt(0) }, -]; -function inRange(char, range) { - return range.min <= char && char <= range.max; -} -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow obscure ranges in character classes.", - url: rules_util_1.getDocUrl("no-obscure-range"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onCharacterClassRangeEnter(node) { - const { min, max } = node; - if (min.value == max.value) { - return; - } - if (ast_util_1.isControlEscapeSequence(min) && ast_util_1.isControlEscapeSequence(max)) { - return; - } - if (ast_util_1.isOctalEscapeSequence(min) && ast_util_1.isOctalEscapeSequence(max)) { - return; - } - if ((ast_util_1.isHexadecimalEscapeSequence(min) || min.value === 0) && ast_util_1.isHexadecimalEscapeSequence(max)) { - return; - } - if (allowedRanges.some(r => inRange(min.value, r) && inRange(max.value, r))) { - return; - } - context.report(Object.assign({ message: `It's not obvious what characters are matched by ${node.raw}` }, reportElement(node))); - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js deleted file mode 100644 index 8f8d6b6..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-octal-escape.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow octal escapes outside of character classes.", - url: rules_util_1.getDocUrl("no-octal-escape"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onCharacterEnter(node) { - if (node.parent.type === "CharacterClass" || node.parent.type === "CharacterClassRange") { - return; - } - if (node.value > 0 && ast_util_1.isOctalEscapeSequence(node)) { - context.report(Object.assign({ message: "Do not use octal escapes because they might be confused with backreferences." }, reportElement(node))); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js deleted file mode 100644 index b2d67d7..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-optional-assertion.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const format_1 = require("../format"); -const util_1 = require("../util"); -const ast_util_1 = require("../ast-util"); -function getZeroQuantifier(node) { - if (node.type === "Quantifier" && node.min === 0) { - return node; - } - else if (node.parent) { - return getZeroQuantifier(node.parent); - } - else { - return null; - } -} -function isOptional(assertion, quantifier) { - function isOptionalImpl(element) { - if (element.parent === quantifier) { - return true; - } - const parent = element.parent; - if (parent.type === "Alternative") { - for (const e of parent.elements) { - if (e === element) { - continue; - } - if (!ast_util_1.isZeroLength(e)) { - return false; - } - } - if (parent.parent.type === "Pattern") { - throw new Error("The given assertion is not a descendant of the given quantifier."); - } - else { - return isOptionalImpl(parent.parent); - } - } - else if (parent.type === "Quantifier") { - if (parent.max > 1 && !ast_util_1.isZeroLength(parent)) { - return false; - } - return isOptionalImpl(parent); - } - else { - throw util_1.assertNever(parent); - } - } - return isOptionalImpl(assertion); -} -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow optional assertions.", - url: rules_util_1.getDocUrl("no-optional-assertion"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onAssertionEnter(node) { - const q = getZeroQuantifier(node); - if (q && isOptional(node, q)) { - context.report(Object.assign({ message: "This assertion effectively optional and does not change the pattern." + - ` Either remove the assertion or change the parent quantifier ${format_1.mention(q.raw.substr(q.element.raw.length))}.` }, reportElement(node))); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js deleted file mode 100644 index 31b8e3b..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-potentially-empty-backreference.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow backreferences that reference a group that might not be matched.", - url: rules_util_1.getDocUrl("no-potentially-empty-backreference"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onBackreferenceEnter(node) { - if (ast_util_1.isEmptyBackreference(node)) { - return; - } - if (!ast_util_1.backreferenceAlwaysAfterGroup(node)) { - context.report(Object.assign({ message: "Some path leading to the backreference do not go through the referenced capturing group without resetting its text." }, reportElement(node))); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js deleted file mode 100644 index c4ae5b5..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-lookaround.js +++ /dev/null @@ -1,82 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -function getTriviallyNestedAssertion(node) { - const alternatives = node.alternatives; - if (alternatives.length === 1) { - const elements = alternatives[0].elements; - if (elements.length === 1) { - const element = elements[0]; - if (element.type === "Assertion") { - return element; - } - } - } - return null; -} -function negateLookaround(lookaround) { - let wasReplaced = false; - const replacement = lookaround.raw.replace(/^(\(\? { - wasReplaced = true; - return g1 + (g2 == "=" ? "!" : "="); - }); - if (!wasReplaced) { - throw new Error(`The lookaround ${lookaround.raw} could not be negated!`); - } - return replacement; -} -function negateBoundary(boundary) { - let wasReplaced = false; - const replacement = boundary.raw.replace(/^\\b/i, m => { - wasReplaced = true; - return m == "\\b" ? "\\B" : "\\b"; - }); - if (!wasReplaced) { - throw new Error(`The lookaround ${boundary.raw} could not be negated!`); - } - return replacement; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow lookarounds that only contain another assertion.", - url: rules_util_1.getDocUrl("no-trivially-nested-lookaround"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, replaceElement }) => { - visitAST({ - onAssertionEnter(node) { - if (node.kind === "lookahead" || node.kind === "lookbehind") { - const inner = getTriviallyNestedAssertion(node); - if (!inner) { - return; - } - let replacement; - if (!node.negate) { - replacement = inner.raw; - } - else { - switch (inner.kind) { - case "lookahead": - case "lookbehind": - replacement = negateLookaround(inner); - break; - case "word": - replacement = negateBoundary(inner); - break; - default: - break; - } - } - if (replacement) { - context.report(Object.assign({ message: `The outer ${node.kind} is unnecessary.` }, replaceElement(node, replacement))); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js deleted file mode 100644 index cc390ef..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-trivially-nested-quantifier.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -function getCombinedQuant(node, nested) { - if (node.max === 0 || nested.max === 0) { - return null; - } - else if (node.greedy === nested.greedy) { - const greedy = node.greedy; - const a = nested.min; - const b = nested.max; - const c = node.min; - const d = node.max; - const condition = b === Infinity && c === 0 ? a <= 1 : c === d || b * c + 1 >= a * (c + 1); - if (condition) { - return { - min: a * c, - max: b * d, - greedy, - }; - } - else { - return null; - } - } - else { - return null; - } -} -function getSimplifiedChildQuant(parent, child) { - if (parent.max === 0 || child.max === 0) { - return null; - } - else if (parent.greedy !== child.greedy) { - return null; - } - else { - let min = child.min; - let max = child.max; - if (min === 0 && parent.min === 0) { - min = 1; - } - if (parent.max === Infinity && (min === 0 || min === 1) && max > 1) { - max = 1; - } - return { min, max, greedy: child.greedy }; - } -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow nested quantifiers that can be rewritten as one quantifier.", - url: rules_util_1.getDocUrl("no-trivially-nested-quantifier"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, replaceElement }) => { - const ignore = new Set(); - visitAST({ - onQuantifierEnter(node) { - if (ast_util_1.hasSomeAncestor(node, a => ignore.has(a))) { - return; - } - if (node.max === 0) { - ignore.add(node); - return; - } - const element = node.element; - if (element.type === "Group" && - element.alternatives.length === 1 && - element.alternatives[0].elements.length === 1) { - const nested = element.alternatives[0].elements[0]; - if (nested.type === "Quantifier") { - const newQuant = getCombinedQuant(node, nested); - if (newQuant) { - const quantStr = ast_util_1.quantToString(newQuant); - const replacement = nested.element.raw + quantStr; - const messagePreview = format_1.shorten(nested.element.raw, 20, "end") + quantStr; - ignore.add(node); - context.report(Object.assign({ message: `The nested quantifiers can be rewritten as ${format_1.mention(messagePreview)}.` }, replaceElement(node, replacement))); - return; - } - } - } - if (element.type === "Group" || element.type === "CapturingGroup") { - for (const alternative of element.alternatives) { - const nested = alternative.elements[0]; - if (!(alternative.elements.length === 1 && nested.type === "Quantifier")) { - continue; - } - const newQuant = getSimplifiedChildQuant(node, nested); - if (!newQuant || (newQuant.min === nested.min && newQuant.max === nested.max)) { - continue; - } - ignore.add(node); - if (newQuant.min === 1 && newQuant.max === 1) { - const replacement = nested.element.raw; - context.report(Object.assign({ message: "The nested quantifier is unnecessary and can be replaced with its element." }, replaceElement(nested, replacement, { dependsOn: node }))); - } - else { - const quantStr = ast_util_1.quantToString(newQuant); - const replacement = nested.element.raw + quantStr; - const messagePreview = format_1.shorten(nested.element.raw, 20, "end") + quantStr; - ignore.add(node); - context.report(Object.assign({ message: `The nested quantifiers can be rewritten as ${format_1.mention(messagePreview)}.` }, replaceElement(nested, replacement, { dependsOn: node }))); - } - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js deleted file mode 100644 index dd49c97..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-assertions.js +++ /dev/null @@ -1,120 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const format_1 = require("../format"); -const refa_1 = require("refa"); -const ast_util_1 = require("../ast-util"); -const util_1 = require("../util"); -const char_util_1 = require("../char-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow assertions that are known to always accept (or reject).", - url: rules_util_1.getDocUrl("no-unnecessary-assertions"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, reportElement }) => { - function checkStartOrEnd(node) { - const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); - const next = ast_util_1.getFirstCharAfter(node, direction, flags); - const followed = node.kind === "end" ? "followed" : "preceded"; - if (!next.char.edge) { - if (!flags.multiline) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always reject because it is ${followed} by a character.` }, reportElement(node))); - } - else { - const oldDotAll = flags.dotAll; - flags.dotAll = false; - const dot = refa_1.JS.createCharSet([{ kind: "any" }], flags); - flags.dotAll = oldDotAll; - if (next.char.char.isSubsetOf(dot)) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always reject because it is ${followed} by a non-line-terminator character.` }, reportElement(node))); - } - else if (next.char.char.isDisjointWith(dot)) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always accept because it is ${followed} by a line-terminator character.` }, reportElement(node))); - } - } - } - } - function checkWordBoundary(node) { - const word = char_util_1.wordCharSet(flags); - const next = ast_util_1.getFirstCharAfter(node, "ltr", flags); - const prev = ast_util_1.getFirstCharAfter(node, "rtl", flags); - if (prev.char.edge || next.char.edge) { - return; - } - const nextIsWord = next.char.char.isSubsetOf(word); - const prevIsWord = prev.char.char.isSubsetOf(word); - const nextIsNonWord = next.char.char.isDisjointWith(word); - const prevIsNonWord = prev.char.char.isDisjointWith(word); - const accept = node.negate ? "reject" : "accept"; - const reject = node.negate ? "accept" : "reject"; - if (prevIsNonWord) { - if (nextIsWord) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always ${accept} because it is preceded by a non-word character and followed by a word character.` }, reportElement(node))); - } - if (nextIsNonWord) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always ${reject} because it is preceded by a non-word character and followed by a non-word character.` }, reportElement(node))); - } - } - if (prevIsWord) { - if (nextIsNonWord) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always ${accept} because it is preceded by a word character and followed by a non-word character.` }, reportElement(node))); - } - if (nextIsWord) { - context.report(Object.assign({ message: `${format_1.mention(node)} will always ${reject} because it is preceded by a word character and followed by a word character.` }, reportElement(node))); - } - } - } - function checkLookaround(node) { - if (ast_util_1.isPotentiallyEmpty(node.alternatives)) { - return; - } - const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); - const after = ast_util_1.getFirstCharAfter(node, direction, flags); - if (after.char.edge) { - return; - } - const firstOf = ast_util_1.getFirstCharConsumedBy(node.alternatives, direction, flags); - if (firstOf.empty) { - return; - } - const accept = node.negate ? "reject" : "accept"; - const reject = node.negate ? "accept" : "reject"; - const nodeName = `${node.negate ? "negative " : ""}${node.kind} ${format_1.mention(node)}`; - if (after.char.char.isDisjointWith(firstOf.char)) { - context.report(Object.assign({ message: `The ${nodeName} will always ${reject}.` }, reportElement(node))); - } - if (!ast_util_1.hasSomeDescendant(node, d => d !== node && d.type === "Assertion")) { - const range = ast_util_1.getLengthRange(node.alternatives); - if (range && range.max === 1) { - if (firstOf.exact && after.char.char.isSubsetOf(firstOf.char)) { - context.report(Object.assign({ message: `The ${nodeName} will always ${accept}.` }, reportElement(node))); - } - } - } - } - visitAST({ - onAssertionEnter(node) { - switch (node.kind) { - case "start": - case "end": - checkStartOrEnd(node); - break; - case "word": - checkWordBoundary(node); - break; - case "lookahead": - case "lookbehind": - checkLookaround(node); - break; - default: - throw util_1.assertNever(node); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js deleted file mode 100644 index dca7198..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-character-class.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const SPECIAL_CHARACTERS = new Set(".*+?|()[]{}^$/"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow unnecessary character classes.", - url: rules_util_1.getDocUrl("no-unnecessary-character-class"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - avoidEscape: { - type: "boolean", - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - const avoidEscape = !!(context.options[0] || {}).avoidEscape; - return rules_util_1.createRuleListener(({ visitAST, pattern, parseExpression, replaceElement }) => { - visitAST({ - onCharacterClassEnter(node) { - if (node.elements.length !== 1) { - return; - } - const element = node.elements[0]; - if (element.type === "CharacterSet") { - const set = node.negate ? ast_util_1.negateCharacterSetRaw(element) : element.raw; - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, set))); - } - else if (element.type === "Character") { - if (node.negate) { - return; - } - if (element.value > 0 && ast_util_1.isOctalEscapeSequence(element)) { - return; - } - if (element.raw === "\\b") { - if (!avoidEscape) { - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, "\\x08"))); - } - return; - } - if (SPECIAL_CHARACTERS.has(element.raw)) { - if (!avoidEscape) { - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, "\\" + element.raw))); - } - return; - } - if (ast_util_1.isEscapeSequence(element)) { - if (!avoidEscape) { - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); - } - return; - } - if (/^\\[^kbBpP]$/.test(element.raw)) { - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); - return; - } - const parent = node.parent; - const before = pattern.raw.substr(0, node.start - pattern.start); - const after = pattern.raw.substr(node.end - pattern.start); - const withoutCharacterClass = before + element.raw + after; - const ast = parseExpression(withoutCharacterClass); - if (ast) { - let equal; - if (parent.type === "Alternative") { - const parentIndex = parent.elements.indexOf(node); - const oldElements = parent.elements; - const newElements = [ - ...parent.elements.slice(0, parentIndex), - element, - ...parent.elements.slice(parentIndex + 1), - ]; - parent.elements = newElements; - try { - equal = ast_util_1.areEqual(pattern, ast); - } - finally { - parent.elements = oldElements; - } - } - else { - parent.element = element; - try { - equal = ast_util_1.areEqual(pattern, ast); - } - finally { - parent.element = node; - } - } - if (equal) { - context.report(Object.assign({ message: "Unnecessary character class." }, replaceElement(node, element.raw))); - } - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js deleted file mode 100644 index 4317644..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-flag.js +++ /dev/null @@ -1,101 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const regexpp_1 = require("regexpp"); -const rules_util_1 = require("../rules-util"); -const determiner = { - iFlag(pattern) { - let unnecessary = true; - regexpp_1.visitRegExpAST(pattern, { - onCharacterEnter(node) { - const value = String.fromCodePoint(node.value); - if (value.toLowerCase() !== value.toUpperCase()) { - unnecessary = false; - } - }, - }); - return unnecessary; - }, - mFlag(pattern) { - let unnecessary = true; - regexpp_1.visitRegExpAST(pattern, { - onAssertionEnter(node) { - if (node.kind === "start" || node.kind === "end") { - unnecessary = false; - } - }, - }); - return unnecessary; - }, - sFlag(pattern) { - let unnecessary = true; - regexpp_1.visitRegExpAST(pattern, { - onCharacterSetEnter(node) { - if (node.kind === "any") { - unnecessary = false; - } - }, - }); - return unnecessary; - }, -}; -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow unnecessary regex flags.", - url: rules_util_1.getDocUrl("no-unnecessary-flag"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - ignore: { - type: "array", - items: { - type: "string", - enum: ["i", "m", "s"], - }, - uniqueItems: true, - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - return rules_util_1.createRuleListener(({ pattern, flags, replaceFlags }) => { - const unnecessaryFlags = []; - function checkFlag(flag, reason) { - if (!flags.raw.includes(flag)) { - return; - } - if (context.options && - context.options[0] && - context.options[0].ignore && - context.options[0].ignore.includes(flag)) { - return; - } - const isUnnecessary = determiner[`${flag}Flag`](pattern); - if (isUnnecessary) { - unnecessaryFlags.push([flag, reason]); - } - } - checkFlag("i", "does not contain case-variant characters"); - checkFlag("m", "does not contain start (^) or end ($) assertions"); - checkFlag("s", "does not contain dots (.)"); - if (unnecessaryFlags.length === 1) { - const [flag, reason] = unnecessaryFlags[0]; - const newFlags = flags.raw.replace(RegExp(flag, "g"), ""); - context.report(Object.assign({ message: `The ${flag} flags is unnecessary because the pattern ${reason}.` }, replaceFlags(newFlags))); - } - else if (unnecessaryFlags.length > 1) { - const uflags = unnecessaryFlags.map(x => x[0]).join(""); - const newFlags = flags.raw.replace(RegExp(`[${uflags}]`, "g"), ""); - context.report(Object.assign({ message: `The flags ${uflags} are unnecessary because the pattern ${unnecessaryFlags - .map(x => `[${x[0]}] ${x[1]}`) - .join(", ")}` }, replaceFlags(newFlags))); - } - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js deleted file mode 100644 index cc5e5c8..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-group.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -function isTopLevel(group) { - const parent = group.parent; - if (parent.type === "Alternative" && parent.elements.length === 1) { - const parentParent = parent.parent; - if (parentParent.type === "Pattern" && parentParent.alternatives.length === 1) { - return true; - } - } - return false; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow unnecessary non-capturing groups.", - url: rules_util_1.getDocUrl("no-unnecessary-group"), - }, - fixable: "code", - }, - create(context) { - const options = context.options[0] || {}; - const allowTop = !!options.allowTop; - return rules_util_1.createRuleListener(({ visitAST, pattern, parseExpression, replaceElement }) => { - visitAST({ - onGroupEnter(node) { - if (allowTop && isTopLevel(node)) { - return; - } - if (pattern.raw === "(?:)") { - return; - } - const groupContent = node.raw.substr("(?:".length, node.raw.length - "(?:)".length); - if (node.parent.type === "Alternative" && node.parent.elements.length === 1) { - context.report(Object.assign({ message: "Unnecessary non-capturing group." }, replaceElement(node, groupContent))); - return; - } - if (node.alternatives.length !== 1) { - return; - } - const elements = node.alternatives[0].elements; - const parent = node.parent; - if (parent.type === "Quantifier") { - if (elements.length !== 1) { - return; - } - const type = elements[0].type; - if (type === "Assertion" || type === "Quantifier") { - return; - } - } - const beforeGroup = pattern.raw.substr(0, node.start - pattern.start); - const afterGroup = pattern.raw.substr(node.end - pattern.start); - const withoutGroup = beforeGroup + groupContent + afterGroup; - const ast = parseExpression(withoutGroup); - if (ast) { - let equal; - if (parent.type === "Alternative") { - const parentIndex = parent.elements.indexOf(node); - const oldElements = parent.elements; - const newElements = [ - ...parent.elements.slice(0, parentIndex), - ...elements, - ...parent.elements.slice(parentIndex + 1), - ]; - parent.elements = newElements; - try { - equal = ast_util_1.areEqual(pattern, ast); - } - finally { - parent.elements = oldElements; - } - } - else { - parent.element = elements[0]; - try { - equal = ast_util_1.areEqual(pattern, ast); - } - finally { - parent.element = node; - } - } - if (equal) { - context.report(Object.assign({ message: "Unnecessary non-capturing group." }, replaceElement(node, groupContent))); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js deleted file mode 100644 index ae9868e..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-lazy.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -function withoutLazy(node) { - let raw = ast_util_1.getQuantifierRaw(node); - raw = raw.substr(0, raw.length - 1); - return raw; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow unnecessarily lazy quantifiers.", - url: rules_util_1.getDocUrl("no-unnecessary-lazy"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, replaceQuantifier }) => { - visitAST({ - onQuantifierEnter(node) { - if (node.greedy) { - return; - } - if (node.min === node.max) { - context.report(Object.assign({ message: "The lazy modifier is unnecessary for constant quantifiers." }, replaceQuantifier(node, withoutLazy(node)))); - return; - } - const matchingDir = ast_util_1.matchingDirection(node); - const firstChar = ast_util_1.getFirstCharConsumedBy(node, matchingDir, flags); - if (!firstChar.empty) { - const after = ast_util_1.getFirstCharAfter(node, matchingDir, flags); - if (!after.char.edge && firstChar.char.isDisjointWith(after.char.char)) { - context.report(Object.assign({ message: "The lazy modifier is unnecessary because the first character of the quantified element are always different from the characters that come after the quantifier." }, replaceQuantifier(node, withoutLazy(node), { dependsOn: after.elements }))); - return; - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js deleted file mode 100644 index c1cd027..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-unnecessary-quantifier.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallow unnecessary quantifiers.", - url: rules_util_1.getDocUrl("no-unnecessary-quantifier"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, replaceElement, reportQuantifier }) => { - visitAST({ - onQuantifierEnter(node) { - if (node.min === 1 && node.max === 1) { - context.report(Object.assign({ message: "Unnecessary quantifier." }, replaceElement(node, node.element.raw))); - return; - } - if (ast_util_1.isEmpty(node.element)) { - context.report(Object.assign({ message: "The quantified element is empty, so the quantifier can be removed." }, reportQuantifier(node))); - return; - } - if (node.min === 0 && node.max === 1 && ast_util_1.isPotentiallyEmpty(node.element)) { - context.report(Object.assign({ message: "The optional quantifier can be removed because the quantified element can match the empty string." }, reportQuantifier(node))); - return; - } - if (node.min > 0 && ast_util_1.isZeroLength(node.element)) { - context.report(Object.assign({ message: "The quantified element does not consume characters, so the quantifier (minimum > 0) can be removed." }, reportQuantifier(node))); - return; - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js deleted file mode 100644 index 73e2662..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/no-zero-quantifier.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallow quantifiers with a maximum of 0.", - url: rules_util_1.getDocUrl("no-zero-quantifier"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, removeElement, reportElement }) => { - visitAST({ - onQuantifierEnter(node) { - if (node.max === 0) { - let props; - if (ast_util_1.hasSomeDescendant(node, n => n.type === "CapturingGroup")) { - props = reportElement(node); - } - else { - props = removeElement(node); - } - context.report(Object.assign({ message: "The quantifier and the quantified element can be removed." }, props)); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js deleted file mode 100644 index 9d71e04..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-concatenation-quantifier.js +++ /dev/null @@ -1,212 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const char_util_1 = require("../char-util"); -const EMPTY_UTF16 = { - chars: char_util_1.emptyCharSet({}), - complete: false, -}; -const EMPTY_UNICODE = { - chars: char_util_1.emptyCharSet({ unicode: true }), - complete: false, -}; -function createChars(element, flags) { - function empty() { - return flags.unicode ? EMPTY_UNICODE : EMPTY_UTF16; - } - switch (element.type) { - case "Character": - case "CharacterSet": - return { - chars: char_util_1.toCharSet(element, flags), - complete: true, - }; - case "CharacterClass": - return { - chars: char_util_1.toCharSet(element, flags), - complete: true, - }; - case "Group": - case "CapturingGroup": { - const results = element.alternatives.map(a => { - if (a.elements.length === 1) { - return createChars(a.elements[0], flags); - } - else { - return empty(); - } - }); - const union = empty().chars.union(...results.map(({ chars }) => chars)); - return { - chars: union, - complete: results.every(({ complete }) => complete), - }; - } - default: - return empty(); - } -} -function quantize(element, quant) { - if (quant.min === 0 && quant.max === 0) { - if (ast_util_1.hasSomeDescendant(element, d => d.type === "CapturingGroup")) { - return element.raw + "{0}"; - } - else { - return ""; - } - } - if (quant.min === 1 && quant.max === 1) { - return element.raw; - } - return element.raw + ast_util_1.quantToString(quant); -} -function short(str) { - return format_1.shorten(str, 20, "center"); -} -function isGroupOrCharacter(element) { - switch (element.type) { - case "Group": - case "CapturingGroup": - case "Character": - case "CharacterClass": - case "CharacterSet": - return true; - default: - return false; - } -} -function getReplacement(current, next, flags) { - if (current.type === "Quantifier" && - current.min !== current.max && - next.type === "Quantifier" && - next.min !== next.max && - next.greedy === current.greedy && - (current.max === Infinity || next.max === Infinity)) { - const currChars = createChars(current.element, flags); - const nextChars = createChars(next.element, flags); - const greedy = current.greedy; - let currQuant, nextQuant; - if (next.max === Infinity && currChars.complete && nextChars.chars.isSupersetOf(currChars.chars)) { - currQuant = { - min: current.min, - max: current.min, - greedy, - }; - nextQuant = next; - } - else if (current.max === Infinity && nextChars.complete && currChars.chars.isSupersetOf(nextChars.chars)) { - currQuant = current; - nextQuant = { - min: next.min, - max: next.min, - greedy, - }; - } - else { - return null; - } - const raw = quantize(current.element, currQuant) + quantize(next.element, nextQuant); - let message; - if (currQuant.max === 0 && next.max === nextQuant.max && next.min === nextQuant.min) { - message = `${short(format_1.mention(current))} can be removed because it is a subset of ${short(format_1.mention(next))}.`; - } - else if (nextQuant.max === 0 && current.max === currQuant.max && current.min === currQuant.min) { - message = `${short(format_1.mention(next))} can be removed because it is a subset of ${short(format_1.mention(current))}.`; - } - else { - message = `They should be replaced with ${format_1.mention(raw)}.`; - } - if (current.max === Infinity && next.max === Infinity) { - message += " They might cause excessive backtracking otherwise."; - } - return { raw, message }; - } - else if (current.type === "Quantifier" && isGroupOrCharacter(next)) { - const currChars = createChars(current.element, flags); - const nextChars = createChars(next, flags); - if (currChars.complete && nextChars.complete && currChars.chars.equals(nextChars.chars)) { - const raw = current.element.raw + ast_util_1.quantToString(ast_util_1.quantAdd(current, 1)); - return { - message: `${short(format_1.mention(next))} can be combined with ${short(format_1.mention(current))}.`, - raw, - }; - } - else { - return null; - } - } - else if (isGroupOrCharacter(current) && next.type === "Quantifier") { - const currChars = createChars(current, flags); - const nextChars = createChars(next.element, flags); - if (next.min === 0 && next.max === 1) { - return null; - } - if (currChars.complete && nextChars.complete && currChars.chars.equals(nextChars.chars)) { - const raw = next.element.raw + ast_util_1.quantToString(ast_util_1.quantAdd(next, 1)); - return { - message: `${short(format_1.mention(current))} can be combined with ${short(format_1.mention(next))}.`, - raw, - }; - } - else { - return null; - } - } - else { - return null; - } -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Use optimal quantifiers for concatenated quantified characters.", - url: rules_util_1.getDocUrl("optimal-concatenation-quantifier"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - fixable: { - type: "boolean", - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - const options = context.options[0] || {}; - const fixable = options.fixable != undefined ? options.fixable : true; - return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElements }) => { - visitAST({ - onAlternativeEnter(node) { - for (let i = 0; i < node.elements.length - 1; i++) { - const current = node.elements[i]; - const next = node.elements[i + 1]; - const replacement = getReplacement(current, next, flags); - if (replacement) { - let message = `The quantifiers of ${format_1.mention(short(current.raw))} and ${format_1.mention(short(next.raw))} are not optimal. ` + replacement.message; - const involvesCapturingGroup = ast_util_1.hasCapturingGroup(current) || ast_util_1.hasCapturingGroup(next); - if (fixable && !involvesCapturingGroup) { - const before = node.raw.substr(0, current.start - node.start); - const after = node.raw.substr(next.end - node.start, node.end - next.end); - context.report(Object.assign(Object.assign({ message }, replaceElement(node, before + replacement.raw + after)), reportElements([current, next]))); - } - else { - if (involvesCapturingGroup) { - message += - " This cannot be fixed automatically because it might change a capturing group."; - } - context.report(Object.assign({ message }, reportElements([current, next]))); - } - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js deleted file mode 100644 index 298d572..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/optimal-lookaround-quantifier.js +++ /dev/null @@ -1,88 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -function getEndQuantifiers(alternatives) { - const quantifiers = []; - for (const { elements } of alternatives) { - if (elements.length > 0) { - const last = elements[elements.length - 1]; - switch (last.type) { - case "Quantifier": - if (last.min != last.max) { - quantifiers.push(last); - } - break; - case "Group": - quantifiers.push(...getEndQuantifiers(last.alternatives)); - break; - default: - break; - } - } - } - return quantifiers; -} -function getStartQuantifiers(alternatives) { - const quantifiers = []; - for (const { elements } of alternatives) { - if (elements.length > 0) { - const first = elements[0]; - switch (first.type) { - case "Quantifier": - if (first.min != first.max) { - quantifiers.push(first); - } - break; - case "Group": - quantifiers.push(...getStartQuantifiers(first.alternatives)); - break; - default: - break; - } - } - } - return quantifiers; -} -exports.default = { - meta: { - type: "problem", - docs: { - description: "Disallows the alternatives of lookarounds that end with a non-constant quantifier.", - url: rules_util_1.getDocUrl("optimal-lookaround-quantifier"), - }, - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, reportElement }) => { - visitAST({ - onAssertionEnter(node) { - if (node.kind === "lookahead" || node.kind === "lookbehind") { - let endOrStart; - let quantifiers; - if (node.kind === "lookahead") { - endOrStart = "end"; - quantifiers = getEndQuantifiers(node.alternatives); - } - else { - endOrStart = "start"; - quantifiers = getStartQuantifiers(node.alternatives); - } - for (const q of quantifiers) { - let proposal; - if (q.min == 0) { - proposal = "removed"; - } - else if (q.min == 1) { - proposal = `replaced with ${q.element.raw} (no quantifier)`; - } - else { - proposal = `replaced with ${q.element.raw}{${q.min}}`; - } - context.report(Object.assign({ message: `The quantified expression ${q.raw} at the ${endOrStart} of the expression tree should only be matched a constant number of times.` + - ` The expression can be ${proposal} without affecting the lookaround.` }, reportElement(q))); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js deleted file mode 100644 index 2541b74..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/optimized-character-class.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const format_1 = require("../format"); -const rules_util_1 = require("../rules-util"); -const char_util_1 = require("../char-util"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Disallows unnecessary elements in character classes.", - url: rules_util_1.getDocUrl("optimized-character-class"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, removeElement, replaceElement }) => { - visitAST({ - onCharacterClassEnter(node) { - const elements = node.elements; - if (elements.length === 0) { - return; - } - const reports = new Map(); - function checkRangeElements(range) { - if (range.min.value === range.max.value) { - reports.set(range, { - message: `${format_1.mentionCharElement(range)} contains only a single value.`, - replacement: range.min.raw === "-" ? "\\-" : range.min.raw, - }); - } - if (range.min.value + 1 === range.max.value) { - const min = range.min.raw === "-" ? "\\-" : range.min.raw; - const max = range.max.raw === "-" ? "\\-" : range.max.raw; - reports.set(range, { - message: `${format_1.mentionCharElement(range)} contains only its two ends.`, - replacement: min + max, - }); - } - } - for (const element of elements) { - if (element.type === "CharacterClassRange") { - checkRangeElements(element); - } - } - const empty = char_util_1.emptyCharSet(flags); - const elementChars = elements.map(e => char_util_1.toCharSet([e], flags)); - const order = ["Character", "CharacterClassRange", "CharacterSet"]; - for (const currentType of order) { - for (let i = elements.length - 1; i >= 0; i--) { - const current = elements[i]; - if (current.type !== currentType) { - continue; - } - const currentChars = elementChars[i]; - const totalWithCurrent = empty.union(...elementChars.filter((_, index) => index !== i)); - if (totalWithCurrent.isSupersetOf(currentChars)) { - elementChars[i] = empty; - let simpleSuper = undefined; - for (let k = 0; k < elements.length; k++) { - if (elementChars[k].isSupersetOf(currentChars)) { - simpleSuper = elements[k]; - break; - } - } - if (simpleSuper === undefined) { - reports.set(current, { - message: `${format_1.mentionCharElement(current)} is already included by some combination of other elements.`, - replacement: "", - }); - } - else { - reports.set(current, { - message: `${format_1.mentionCharElement(current)} is already included by ${format_1.mentionCharElement(simpleSuper)}.`, - replacement: "", - }); - } - } - } - } - for (const [element, { message, replacement }] of reports) { - if (replacement) { - context.report(Object.assign({ message }, replaceElement(element, replacement, { - dependsOnFlags: true, - }))); - } - else { - context.report(Object.assign({ message }, removeElement(element, { - dependsOnFlags: true, - }))); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js deleted file mode 100644 index 393c9a6..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-character-class.js +++ /dev/null @@ -1,302 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const format_1 = require("../format"); -const ast_util_1 = require("../ast-util"); -const util_1 = require("../util"); -const char_util_1 = require("../char-util"); -function toCharacterClassElement(element) { - if (element.type === "CharacterSet") { - if (element.kind === "any") { - return null; - } - else { - return [element]; - } - } - else if (element.type === "CharacterClass") { - if (!element.negate) { - return [...element.elements]; - } - if (element.elements.length === 1 && element.elements[0].type === "CharacterSet") { - const set = element.elements[0]; - if (set.kind === "property") { - const p = set.raw.substr(0, 2); - const raw = (set.negate ? p.toLowerCase() : p.toUpperCase()) + set.raw.substr(2); - return [ - { - type: "CharacterSet", - kind: set.kind, - key: set.key, - value: set.value, - negate: !set.negate, - raw, - }, - ]; - } - else { - const raw = set.negate ? set.raw.toLowerCase() : set.raw.toUpperCase(); - return [ - { - type: "CharacterSet", - kind: set.kind, - negate: !set.negate, - raw, - }, - ]; - } - } - return null; - } - else if (element.type === "Character") { - return [element]; - } - else { - return null; - } -} -function categorizeAlternatives(alternatives, flags) { - return alternatives.map(alternative => { - if (alternative.elements.length === 1) { - const elements = toCharacterClassElement(alternative.elements[0]); - if (elements) { - return { - isCharacter: true, - alternative, - elements, - char: char_util_1.toCharSet(elements, flags), - }; - } - } - return { - isCharacter: false, - alternative, - }; - }); -} -function containsCharacterClass(alts) { - for (const alt of alts) { - if (alt.isCharacter && alt.alternative.elements.length === 1) { - const e = alt.alternative.elements[0]; - if (e.type === "CharacterClass") { - return true; - } - } - } - return false; -} -function combineElements(alternatives) { - const elements = []; - for (const a of alternatives) { - if (a.isCharacter) { - elements.push(...a.elements); - } - } - return elements; -} -function toGenericAlts(alternatives, flags) { - const result = []; - for (const a of alternatives) { - if (a.isCharacter) { - result.push({ - isCharacter: true, - elements: a.elements, - char: a.char, - raw: a.alternative.raw, - }); - } - else { - result.push({ - isCharacter: false, - firstChar: ast_util_1.getFirstCharConsumedBy(a.alternative, ast_util_1.matchingDirection(a.alternative), flags), - raw: a.alternative.raw, - }); - } - } - return result; -} -function optimizeCharacterAlternatives(alternatives, flags, reorder) { - function merge(a, b) { - const elements = [...a.elements, ...b.elements]; - return { - isCharacter: true, - char: a.char.union(b.char), - elements, - raw: ast_util_1.elementsToCharacterClass(elements), - }; - } - function mergeRuns() { - for (let i = 1; i < alternatives.length; i++) { - const prev = alternatives[i - 1]; - const curr = alternatives[i]; - if (prev.isCharacter && curr.isCharacter) { - alternatives[i - 1] = merge(prev, curr); - alternatives.splice(i, 1); - i--; - } - } - } - function mergeWithReorder() { - for (let i = 0; i < alternatives.length - 1; i++) { - let curr = alternatives[i]; - if (!curr.isCharacter) { - continue; - } - let nonCharTotal = undefined; - for (let j = i + 1; j < alternatives.length; j++) { - const far = alternatives[j]; - if (far.isCharacter) { - if (nonCharTotal === undefined || far.char.isDisjointWith(nonCharTotal)) { - curr = merge(curr, far); - alternatives.splice(j, 1); - j--; - } - else { - break; - } - } - else { - if (!far.firstChar.empty) { - if (nonCharTotal === undefined) { - nonCharTotal = far.firstChar.char; - } - else { - nonCharTotal = nonCharTotal.union(far.firstChar.char); - } - if (nonCharTotal.isAll) { - break; - } - } - else { - break; - } - } - } - alternatives[i] = curr; - } - } - if (reorder) { - mergeWithReorder(); - } - else { - mergeRuns(); - } -} -function findNonDisjointAlt(alternatives) { - let total = undefined; - for (const a of alternatives) { - if (a.isCharacter) { - if (total === undefined) { - total = a.char; - } - else { - if (!total.isDisjointWith(a.char)) { - return a; - } - total = total.union(a.char); - } - } - } - return null; -} -function totalIsAll(alternatives) { - let total = undefined; - for (const a of alternatives) { - if (a.isCharacter) { - if (total === undefined) { - total = a.char; - } - else { - total = total.union(a.char); - } - } - } - return total !== undefined && total.isAll; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Prefer character classes wherever possible instead of alternations.", - url: rules_util_1.getDocUrl("prefer-character-class"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElement, reportElements }) => { - function process(node) { - if (!("alternatives" in node)) { - return; - } - if (node.alternatives.length < 2) { - return; - } - const alts = categorizeAlternatives(node.alternatives, flags); - const characterAlternativesCount = alts.filter(a => a.isCharacter).length; - if (characterAlternativesCount < 2) { - return; - } - if (alts.every(a => a.isCharacter)) { - if (alts.length >= 3 || - findNonDisjointAlt(alts) || - totalIsAll(alts) || - containsCharacterClass(alts)) { - const [prefix, suffix] = node.type === "Group" ? ["", ""] : ast_util_1.getParentPrefixAndSuffix(node); - const replacement = prefix + ast_util_1.elementsToCharacterClass(combineElements(alts)) + suffix; - context.report(Object.assign({ message: `This can be replaced with ${format_1.mention(replacement)}.` }, replaceElement(node, replacement, { - dependsOnFlags: true, - }))); - } - return; - } - const nonDisjointAlt = findNonDisjointAlt(alts); - if (nonDisjointAlt || - characterAlternativesCount >= 3 || - totalIsAll(alts) || - containsCharacterClass(alts)) { - const genericAlts = toGenericAlts(alts, flags); - optimizeCharacterAlternatives(genericAlts, flags, true); - const [prefix, suffix] = ast_util_1.getParentPrefixAndSuffix(node); - const newRaw = prefix + genericAlts.map(a => a.raw).join("|") + suffix; - if (newRaw !== node.raw) { - const firstChanged = util_1.findIndex(genericAlts, (a, i) => a.raw !== node.alternatives[i].raw); - const lastChanged = util_1.findLastIndex(genericAlts, (a, i) => a.raw !== node.alternatives[node.alternatives.length + i - genericAlts.length].raw); - const changedNodes = [ - node.alternatives[firstChanged], - node.alternatives[node.alternatives.length + lastChanged - genericAlts.length], - ]; - const displayRaw = firstChanged === 0 && lastChanged === genericAlts.length - 1 - ? newRaw - : genericAlts - .slice(firstChanged, lastChanged + 1) - .map(a => a.raw) - .join("|"); - context.report(Object.assign(Object.assign({ message: `This can be replaced with ${format_1.mention(displayRaw)}.` }, replaceElement(node, newRaw, { - dependsOnFlags: true, - })), reportElements(changedNodes))); - return; - } - } - if (nonDisjointAlt) { - let expMessage; - if (ast_util_1.underAStar(node)) { - expMessage = "\nThis ambiguity is very likely to cause exponential backtracking."; - } - else { - expMessage = ""; - } - context.report(Object.assign({ message: `The set of characters accepted by ${format_1.mention(nonDisjointAlt.alternative)} is not disjoint with the set of characters accepted by previous alternatives.` + - " Try to remove this ambiguity." + - expMessage }, reportElement(nonDisjointAlt.alternative))); - return; - } - } - visitAST({ - onAssertionEnter: process, - onCapturingGroupEnter: process, - onGroupEnter: process, - onPatternEnter: process, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js deleted file mode 100644 index c8e7ff1..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-assertion.js +++ /dev/null @@ -1,113 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const char_util_1 = require("../char-util"); -function getCharacters(lookaround) { - if (lookaround.alternatives.length === 1) { - const alt = lookaround.alternatives[0]; - if (alt.elements.length === 1) { - const first = alt.elements[0]; - if (first.type === "CharacterSet" || first.type === "CharacterClass") { - return first; - } - } - } - return null; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Prefer predefined assertions over equivalent lookarounds.", - url: rules_util_1.getDocUrl("prefer-predefined-assertion"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement }) => { - const isWord = (chars) => chars.isSubsetOf(char_util_1.wordCharSet(flags)); - const isNonWord = (chars) => chars.isDisjointWith(char_util_1.wordCharSet(flags)); - function replaceWordAssertion(node, wordNegated) { - const direction = ast_util_1.assertionKindToMatchingDirection(node.kind); - const dependsOn = []; - let lookaroundNegated = node.negate; - if (wordNegated) { - const after = ast_util_1.getFirstCharAfter(node, direction, flags); - dependsOn.push(...after.elements); - const hasNextCharacter = !after.char.edge; - if (hasNextCharacter) { - lookaroundNegated = !lookaroundNegated; - } - else { - return; - } - } - const before = ast_util_1.getFirstCharAfter(node, ast_util_1.invertMatchingDirection(direction), flags); - dependsOn.push(...before.elements); - if (before.char.edge) { - return; - } - let otherNegated; - if (isWord(before.char.char)) { - otherNegated = false; - } - else if (isNonWord(before.char.char)) { - otherNegated = true; - } - else { - return; - } - if (lookaroundNegated === otherNegated) { - context.report(Object.assign({ message: "This assertion can be replaced with a negated word boundary assertion (\\B)." }, replaceElement(node, "\\B", { dependsOn }))); - } - else { - context.report(Object.assign({ message: "This assertion can be replaced with a word boundary assertion (\\b)." }, replaceElement(node, "\\b", { dependsOn }))); - } - } - function replaceAllAssertion(node, multiline = false) { - if (!node.negate) { - return; - } - if (flags.multiline === multiline) { - const replacement = node.kind === "lookahead" ? "$" : "^"; - context.report(Object.assign({ message: `This assertion can be replaced with ${replacement}.` }, replaceElement(node, replacement, { dependsOnFlags: true }))); - } - } - visitAST({ - onAssertionEnter(node) { - if (node.kind !== "lookahead" && node.kind !== "lookbehind") { - return; - } - const chars = getCharacters(node); - if (chars === null) { - return; - } - if (chars.type === "CharacterSet") { - if (chars.kind === "word") { - replaceWordAssertion(node, chars.negate); - } - else if (chars.kind === "any") { - if (flags.dotAll) { - replaceAllAssertion(node); - } - else { - replaceAllAssertion(node, true); - } - } - else if (chars.kind === "property") { - if (char_util_1.isMatchAll(chars, flags)) { - replaceAllAssertion(node); - } - } - } - else { - if (char_util_1.isMatchAll(chars, flags)) { - replaceAllAssertion(node); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js deleted file mode 100644 index e8893d0..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-character-set.js +++ /dev/null @@ -1,104 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const refa_1 = require("refa"); -const ast_util_1 = require("../ast-util"); -const char_util_1 = require("../char-util"); -function isDigitRange(node) { - return node.type === "CharacterClassRange" && node.min.value === 0x30 && node.max.value === 0x39; -} -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Prefer predefined character sets instead of their more verbose form.", - url: rules_util_1.getDocUrl("prefer-predefined-character-set"), - }, - fixable: "code", - schema: [ - { - type: "object", - properties: { - allowDigitRange: { - type: "boolean", - }, - }, - additionalProperties: false, - }, - ], - }, - create(context) { - const options = context.options[0] || {}; - const allowDigitRange = options.allowDigitRange === undefined ? true : !!options.allowDigitRange; - return rules_util_1.createRuleListener(({ visitAST, flags, replaceElement, reportElements }) => { - const digitChars = refa_1.JS.createCharSet([{ kind: "digit", negate: false }], flags); - const wordChars = refa_1.JS.createCharSet([{ kind: "word", negate: false }], flags); - const EMPTY = refa_1.JS.createCharSet([], flags); - visitAST({ - onCharacterClassEnter(node) { - const elements = node.elements; - if (elements.some(e => e.type === "CharacterSet" && e.kind === "word" && !e.negate)) { - return; - } - const chars = elements.map(e => char_util_1.toCharSet([e], flags)); - const hits = []; - chars.forEach((c, i) => { - if (wordChars.isSupersetOf(c)) { - hits.push(i); - } - }); - function getCharacterClass(hitReplacement) { - let first = true; - const newElements = []; - elements.forEach((e, i) => { - if (hits.indexOf(i) >= 0) { - if (first) { - newElements.push(hitReplacement); - first = false; - } - } - else { - newElements.push(e); - } - }); - return ast_util_1.elementsToCharacterClass(newElements, node.negate); - } - let union = EMPTY.union(...hits.map(i => chars[i])); - if (union.equals(wordChars)) { - const replacement = getCharacterClass({ - type: "CharacterSet", - kind: "word", - negate: false, - raw: "\\w", - }); - context.report(Object.assign(Object.assign({ message: "Some of the character class elements can be simplified to \\w." }, replaceElement(node, replacement)), reportElements(hits.map(i => elements[i])))); - return; - } - if (elements.some(e => e.type === "CharacterSet" && e.kind === "digit" && !e.negate)) { - return; - } - hits.length = 0; - chars.forEach((c, i) => { - if (digitChars.isSupersetOf(c)) { - hits.push(i); - } - }); - union = EMPTY.union(...hits.map(i => chars[i])); - if (union.equals(digitChars)) { - const isAllowedDigitRange = allowDigitRange && hits.every(i => isDigitRange(elements[i])); - if (!isAllowedDigitRange || hits.length === elements.length) { - const replacement = getCharacterClass({ - type: "CharacterSet", - kind: "digit", - negate: false, - raw: "\\d", - }); - context.report(Object.assign(Object.assign({ message: "Some of the character class elements can be simplified to \\d." }, replaceElement(node, replacement)), reportElements(hits.map(i => elements[i])))); - return; - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js b/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js deleted file mode 100644 index 2117bb0..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/prefer-predefined-quantifiers.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -const predefined = [ - { min: 0, max: Infinity, raw: "*" }, - { min: 1, max: Infinity, raw: "+" }, - { min: 0, max: 1, raw: "?" }, -]; -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Prefer predefined quantifiers (+*?) instead of their more verbose form.", - url: rules_util_1.getDocUrl("prefer-predefined-quantifiers"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, replaceQuantifier }) => { - visitAST({ - onQuantifierEnter(node) { - let currentRaw = ast_util_1.getQuantifierRaw(node); - if (!node.greedy) { - currentRaw = currentRaw.substr(0, currentRaw.length - 1); - } - for (const { min, max, raw } of predefined) { - if (node.min === min && node.max === max && currentRaw !== raw) { - context.report(Object.assign({ message: `Use the predefined quantifier ${raw} instead.` }, replaceQuantifier(node, raw + (node.greedy ? "" : "?")))); - } - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js b/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js deleted file mode 100644 index 922b570..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/simple-constant-quantifier.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -const ast_util_1 = require("../ast-util"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Prefer simple constant quantifiers over the range form.", - url: rules_util_1.getDocUrl("simple-constant-quantifier"), - }, - fixable: "code", - }, - create(context) { - return rules_util_1.createRuleListener(({ visitAST, replaceQuantifier }) => { - visitAST({ - onQuantifierEnter(node) { - if (node.min !== node.max || node.min < 2) { - return; - } - const currentRaw = ast_util_1.getQuantifierRaw(node); - const simpleRaw = ast_util_1.quantToString(node); - if (simpleRaw !== currentRaw) { - context.report(Object.assign({ message: `This constant quantifier can be simplified to "${simpleRaw}".` }, replaceQuantifier(node, simpleRaw))); - } - }, - }); - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js b/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js deleted file mode 100644 index ae186bc..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/rules/sort-flags.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const rules_util_1 = require("../rules-util"); -exports.default = { - meta: { - type: "suggestion", - docs: { - description: "Requires the regex flags to be sorted.", - url: rules_util_1.getDocUrl("sort-flags"), - }, - fixable: "code", - }, - create(context) { - const order = "gimsuy"; - const compareFn = (a, b) => { - const aIndex = order.indexOf(a); - const bIndex = order.indexOf(b); - if (aIndex === -1) { - throw new Error(`Unknown flag ${a}.`); - } - if (bIndex === -1) { - throw new Error(`Unknown flag ${b}.`); - } - return aIndex - bIndex; - }; - return rules_util_1.createRuleListener(({ flags, replaceFlags, reportFlags }) => { - try { - const sortedFlags = flags.raw.split("").sort(compareFn).join(""); - if (flags.raw !== sortedFlags) { - context.report(Object.assign({ message: `The flags ${flags.raw} should in the order ${sortedFlags}.` }, replaceFlags(sortedFlags))); - } - } - catch (e) { - context.report(Object.assign({ message: e.message }, reportFlags())); - } - }); - }, -}; diff --git a/node_modules/eslint-plugin-clean-regex/dist/util.js b/node_modules/eslint-plugin-clean-regex/dist/util.js deleted file mode 100644 index c480b98..0000000 --- a/node_modules/eslint-plugin-clean-regex/dist/util.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.findLastIndex = exports.findIndex = exports.assertNever = void 0; -function assertNever(value) { - throw new Error(`This part of the code should never be reached but ${value} made it through.`); -} -exports.assertNever = assertNever; -function findIndex(arr, condFn) { - return arr.findIndex(condFn); -} -exports.findIndex = findIndex; -function findLastIndex(arr, condFn) { - for (let i = arr.length - 1; i >= 0; i--) { - if (condFn(arr[i], i)) { - return i; - } - } - return -1; -} -exports.findLastIndex = findLastIndex; diff --git a/node_modules/eslint-plugin-clean-regex/package.json b/node_modules/eslint-plugin-clean-regex/package.json deleted file mode 100644 index cddc1e8..0000000 --- a/node_modules/eslint-plugin-clean-regex/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "eslint-plugin-clean-regex", - "version": "0.5.1", - "description": "An ESLint plugin for writing better regular expressions.", - "keywords": [ - "eslint", - "eslint-plugin", - "regex", - "regexp" - ], - "author": "Michael Schmidt", - "homepage": "https://github.com/RunDevelopment/eslint-plugin-clean-regex#readme", - "repository": { - "type": "git", - "url": "https://github.com/RunDevelopment/eslint-plugin-clean-regex.git" - }, - "main": "dist/index.js", - "scripts": { - "build": "rimraf dist/** && gulp updateSourceFile && tsc && npm run gen-doc", - "check": "npx eslint --ext .ts lib/** tests/** gulpfile.js && npm run build", - "gen-doc": "gulp doc && npm run format-doc", - "format-doc": "prettier --write --print-width 80 --tab-width 4 --prose-wrap always docs/rules/*.md CONTRIBUTING.md", - "format": "prettier --write lib/** tests/** gulpfile.js", - "prepublishOnly": "npm run check", - "test": "mocha -r ts-node/register 'tests/**/*.ts'" - }, - "dependencies": { - "refa": "^0.7.1", - "regexpp": "^3.1.0" - }, - "devDependencies": { - "@types/chai": "^4.2.11", - "@types/eslint": "^6.8.0", - "@types/gulp": "^4.0.6", - "@types/mocha": "^7.0.2", - "@types/node": "^13.13.4", - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "chai": "^4.2.0", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-prettier": "^3.1.4", - "gulp": "^4.0.2", - "husky": "^4.3.0", - "lint-staged": "^10.3.0", - "mocha": "^7.1.2", - "prettier": "^2.0.5", - "rimraf": "^3.0.2", - "ts-node": "^9.0.0", - "typescript": "^3.9.7" - }, - "engines": { - "node": ">=12.0.0" - }, - "license": "MIT", - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.ts": "eslint --cache --fix" - }, - "files": [ - "dist/**/*.js" - ] -} diff --git a/node_modules/refa/CHANGELOG.md b/node_modules/refa/CHANGELOG.md deleted file mode 100644 index dda36bd..0000000 --- a/node_modules/refa/CHANGELOG.md +++ /dev/null @@ -1,213 +0,0 @@ -# Changelog - -## 0.7.1 (2021-03-09) - -### Fixed - -- Backreferences in ignore-case JS RegExps are now correctly resolved ([#25](https://github.com/RunDevelopment/refa/issues/25)). - - -## 0.7.0 (2021-02-25) - -### Breaking changes - -- `FiniteAutomaton.test` now requires a `ReadonlyArray` instead of an `Iterable`. -- `Words.wordSetToWords` now returns an `Iterable` instead of an `IterableIterator`. -- Removed `toPatternString` function. -- Removed `NFA.FromRegexOptions.disableLookarounds`. Use `NFA.FromRegexOptions.assertions` instead. -- AST format: Quantifier nodes now have a lazy property to enable non-greedy quantifiers. -- `JS.Parser` no longer implements `JS.Literal`. Use the `JS.Parser.literal` property instead. -- `JS.Parser` now resolves backreferences differently. It now supports resolving capturing groups with finite small languages. How small the language is required to be can be controlled via the new `JS.ParseOptions.maxBackreferenceWords` option (defaults to 100 words). `JS.ParseOptions.backreferences` also works differently now. See the `JS.ParseOptions` documentation for more details. -- Some renaming: - - `JS.ParseOptions.lookarounds` -> `JS.ParseOptions.assertions` - - `ToRegexOptions.maximumNodes` -> `ToRegexOptions.maxNodes` - - `ToRegexOptions.maximumOptimizationPasses` -> `ToRegexOptions.maxOptimizationPasses` - -### Fixed - -- `Words.fromStringToUTF16` now works properly. -- `JS.toLiteral` will now properly detect predefined character sets in character classes. This didn't work properly before. - -### Added - -- Documentation. A lot of code documentation and a TypeDoc-generated website have been added. -- New `Char`, `Word`, and `ReadonlyWord` types replace the old plain number and iterable types. -- AST transformers. They can efficiently modify a given AST and are used to e.g. apply assertions. -- `JS.ParseOptions` now has a `maxNodes` option to limit the size of the parsed AST. -- `JS.Parser` now has a `maxCharacter` property. - -### Changed - -- `NFA.test` now implements [Thompson's algorithm](https://swtch.com/~rsc/regexp/regexp1.html) which guarantees efficient execution. -- The `toRegex` methods of the DFA and NFA classes now use AST transformers under the hood to produce smaller ASTs. -- The default value of `ToRegexOptions.maxOptimizationPasses` is now implementation-defined. - - -## 0.6.0 (2020-12-22) - -### Breaking changes - -- `DFA#clone` has been renamed to `DFA#copy` to be compatible with `NFA#copy`. -- The `source` property of RE AST nodes is now optional. This results in the removal/change of several types and functions. The `Simple` type has been removed; use `NoParent` instead. - -### Added - -- `JS.toLiteral` now has a `flags` options to force/disallow certain flags and a `fastCharacters` options for up to 10x better performance. -- `JS.toLiteral` now detects builtin assertions. - -### Changed - -- All DFA and NFA creation methods now have safe defaults and will throw if the FA that is being created is too large. The limit can be controlled using the `maxNodes` option. - - -## 0.5.0 (2020-10-26) - -### Breaking changes - -- Remove `NFA.fromDFA` and `DFA.fromNFA`. Use `{DFA,NFA}.fromFA` instead. -- Renamed `NFA#removeEmptyWord` to `NFA#withoutEmptyWord`. -- All `NFA`/`DFA`-specific interfaces/classes now live in the `NFA`/`DFA` namespace. - -### Added - -- New `FAIterator` interface. -- New options for `#toRegex` functions. -- `NFA#reverse` will reverse the accepted language. -- `CharSet#commonCharacter` can used to return any character two sets have in common. -- New `Words` methods to pick as-readable-as-possible words or characters from a set of words or characters. - -### Changed - -- Unified `DFA`/`NFA` API. This gives `DFA` a lot of functionality that used to be `NFA`-exclusive. -- `JS.toLiteral` will now print smaller character classes. -- New build system. - -### Fixed - -- A few minor bug fixes. - - -## 0.4.1 (2020-08-29) - -### Changed - -- NFA intersection performance optimizations by using lazy data structures. `NFA#disjointWith` is now a lot faster. - -### Fixed - -- Fixed NFA intersection always discarding the empty word. The intersection can now contain the empty word. - - -## 0.4.0 (2020-08-23) - -### Breaking changes - -- Removed `JS.toSource`. Use `JS.toLiteral` instead. - -### Added - -- `NFA#suffixes()` will change the NFA to accepts all suffixes of its language. -- New options for intersection operations. -- Added a method to count the number of nodes in DFA and NFA. -- `DFA#complement()` will make the DFA match the opposite language. -- New options for the DFA creation operation. -- New `ReadonlyDFA` interface. -- New `ReadonlyCharMap` interface. -- `CharSet#compare(CharSet)` will compare two character sets. This can be used to sort character sets. -- Added regex stress test. This will check common operations on all 2.5K regexes of the PrismJS syntax highlighter. - -### Changed - -- The RE produced by the `toRegex` functions is now optimized to be as minimal as possible. -- `JS.toLiteral` will now make efficient use of flags to produce smaller literals. - -### Fixed - -- Fixed and improved `DFA.minimize()`. -- Fixed `CharMap`'s AVL tree implementation. -- Underlying implementation of the `toRegex` functions will now the correct AST and that much faster. -- Fixed `filterMut` in util. -- `toPatternString` now correctly handles quantified empty concatenations. - - -## 0.3.1 (2020-08-09) - -### Fixed - -- The prefix and suffix optimization removed final states from the graph but not from the set of final states. -- The intersection algorithm can now handle final states not reachable from the initial states of either NFAs. - - -## 0.3.0 (2020-07-11) - -### Breaking changes - -- New `JS.Parser` API. -- Removed `MutSimple` interface. - -### Added - -- `CharSet#size` returns the number of characters in the set. -- `NFA#prefixes()` will change the NFA such that it accepts all prefixes of itself. -- New `ReadonlyNFA` interface. -- New `FAIterator` interface as an abstraction over different FA representations. This is now the basis for virtually all FA operations that don't change the underlying data structure. -- New `NoParent` and `NoSource` interface for AST nodes. - -### Changed - -- Better `Flags` interface for JS functions. -- Some minor improvements. - -### Fixed - -- The prefix and suffix optimizations of the NFA construction didn't check the equivalence of states correctly. - - -## 0.2.2 (2020-05-04) - -### Fixed - -- Added a `prepublish` script to actually publish changes. - - -## 0.2.1 (2020-05-04) - -### Fixed - -- Calling `CharSet#isSubsetOf` caused a stack overflow because of infinite recursion. - - -## 0.2.0 (2020-05-03) - -### Breaking changes - -- New `CharSet` API. This renames some of `has*` methods, to instead use names based on set relations. -- `NFA#concat` is now called `append`. -- `NodeList#final` is now called `finals` for both DFA and NFA nodes lists. -- `NFANode#in` and `NFANode#out` are now of type `ReadonlyMap` instead of `Map`. - -### Added - -- New options for `NFA.fromRegex` to disable assertions instead of throwing an error and to simplify quantifiers with a huge maximum. -- New `NFA#prepend` method. -- Added changelog. - -### Changed - -- `CharSet#toString` now uses a simple hexadecimal format. - -### Fixed - -- `NFA#append` modified the given NFA. - - -## 0.1.1 (2020-04-05) - -### Fixed - -- Fixed repository link in `package.json`. - - -## 0.1.0 (2020-04-05) - -Initial release diff --git a/node_modules/refa/LICENSE b/node_modules/refa/LICENSE deleted file mode 100644 index 18056b7..0000000 --- a/node_modules/refa/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Michael Schmidt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/refa/README.md b/node_modules/refa/README.md deleted file mode 100644 index cf24bc4..0000000 --- a/node_modules/refa/README.md +++ /dev/null @@ -1,296 +0,0 @@ -# Regular Expressions and Finite Automata (refa) - -[![Actions Status](https://github.com/RunDevelopment/refa/workflows/Node.js%20CI/badge.svg)](https://github.com/RunDevelopment/refa/actions) -[![npm](https://img.shields.io/npm/v/refa)](https://www.npmjs.com/package/refa) - -A library for regular expressions (RE) and finite automata (FA) in the context of [Javascript RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp). - - -## About - -refa is a general library for [DFA](https://en.wikipedia.org/wiki/Deterministic_finite_automaton), [NFA](https://en.wikipedia.org/wiki/Nondeterministic_finite_automaton), and REs of [formal regular languages](https://en.wikipedia.org/wiki/Induction_of_regular_languages). It also includes methods to easily convert from JS RegExp to the internal RE AST and vice versa. - - -## Installation - -Get refa from NPM: - -``` -npm i --save refa -``` - -or - -``` -yarn add refa -``` - - -## Features - -- Conversions - - * RE to NFA (_assertions are not implemented yet_) - * NFA to DFA and DFA to NFA - * NFA to RE and DFA to RE - -- DFA and NFA operations - - * Construction from other FA, the intersection of two FA, or a finite set of words - * Print internal representation in a human-readable form - * Test whether a word is accepted - * Test whether the language of an FA is the empty set/a finite set - * Accept all prefixes of a language - -- DFA specific operations - - * Minimization - * Complement - * Structural equality - -- NFA specific operations - - * Union and Concatenation with other FA - * Quantification - * Reverse - * Accept all suffixes of a language - -- JavaScript RegExp - - * RegExp to RE and RE to RegExp - * All flags are fully supported - * Unicode properties - * Change flags - * Limited support for simple backreferences - -See the [API documentation](https://rundevelopment.github.io/refa/docs/latest/) for a complete list of all currently implemented operations. - -### RE AST format - -refa uses its own AST format to represent regular expressions. The RE AST format is language agnostic and relatively simple. - -It supports: - -- Concatenation (e.g. `ab`) -- Alternation (e.g. `a|b`) -- Quantifiers (greedy and lazy) (e.g. `a{4,6}`, `a{2,}?`, `a?`, `a*`) -- Assertions (e.g. `(?=a)`, `(? false -console.log(nfa.test(Words.fromStringToUTF16("123"))); -// => true -console.log(nfa.test(Words.fromStringToUTF16("abc123"))); -// => true -console.log(nfa.test(Words.fromStringToUTF16("123abc"))); -// => false -``` - -### Finding the intersection of two JS RegExps - -```ts -const regex1 = /a+B+c+/i; -const regex2 = /Ab*C\d?/; - -const intersection = NFA.fromIntersection(toNFA(regex1), toNFA(regex2)); - -console.log(toRegExp(intersection)); -// => /Ab+C/ -``` - -### Finding the complement of a JS RegExp - -```ts -const regex = /a+b*/i; - -const dfa = toDFA(regex); -dfa.complement(); - -console.log(toRegExp(dfa)); -// => /(?:(?:[^A]|A+(?:[^AB]|B+[^B]))[^]*)?/i -``` - -### Converting a JS RegExp to an NFA - -In the above examples, we have been using the `toNFA` helper function to parse and convert RegExps. This function assumes that the given RegExp is a pure regular expression without assertions and backreferences and will throw an error if the assumption is not met. - -However, the JS parser and `NFA.fromRegex` provide some options to work around and even solve this problem. - -#### Backreferences - -Firstly, the parser will automatically resolve simple backreferences. Even `toNFA` will do this since it's on by default: - -```ts -console.log(toRegExp(toNFA(/("|').*?\1/))); -// => /".*"|'.*'/i -``` - -But it will throw an error for non-trivial backreferences that cannot be resolved: - -```ts -toNFA(/(#+).*\1|foo/); -// Error: Backreferences are not supported. -``` - -The only way to parse the RegExp despite unresolvable backreferences is to remove the backreferences. This means that the result will be imperfect but it might still be useful. - -```ts -const regex = /(#+).*\1|foo/; -const { expression } = - JS.Parser.fromLiteral(regex).parse({ backreferences: "disable" }); - -console.log(JS.toLiteral(expression)); -// => { source: 'foo', flags: '' } -``` - -Note that the `foo` alternative is kept because it is completely unaffected by the unresolvable backreferences. - -#### Assertions - -While the parser and AST format can handle assertions, the NFA construction cannot. - -```ts -const regex = /\b(?!\d)\w+\b|->/; -const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); - -console.log(JS.toLiteral(expression)); -// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } - -NFA.fromRegex(expression, { maxCharacter }); -// Error: Assertions are not supported yet. -``` - -Similarly to backreferences, we can let the parser remove them: - -```ts -const regex = /\b(?!\d)\w+\b|->/; -const { expression, maxCharacter } = - JS.Parser.fromLiteral(regex).parse({ assertions: "disable" }); - -console.log(JS.toLiteral(expression)); -// => { source: '->', flags: 'i' } - -const nfa = NFA.fromRegex(expression, { maxCharacter }); -console.log(toRegExp(nfa)); -// => /->/i -``` - -
- -Or we can let the NFA construction method remove them: - -```ts -const regex = /\b(?!\d)\w+\b|->/; -const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); - -console.log(JS.toLiteral(expression)); -// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } - -const nfa = NFA.fromRegex(expression, { maxCharacter }, { assertions: "disable" }); -console.log(toRegExp(nfa)); -// => /->/i -``` - -Prefer using the parser to remove assertions if possible. The parser is quite clever and will optimize based on that assertions can be removed resulting in faster parse times. - -
- -However, simply removing assertions is not ideal since they are a lot more common than backreferences. To work around this, refa has AST transformers. AST transformers can make changes to a given AST. While each transformer is rather simple, they can also work together to accomplish more complex tasks. Applying and removing assertions is one such task. - -The details about the transformers used in this example can be found in their documentation. - -```ts -import { combineTransformers, JS, NFA, transform, Transformers } from "refa"; - -const regex = /\b(?!\d)\w+\b|->/; -const { expression, maxCharacter } = JS.Parser.fromLiteral(regex).parse(); - -console.log(JS.toLiteral(expression)); -// => { source: '\\b(?!\\d)\\w+\\b|->', flags: 'i' } - -const applyTransformer = combineTransformers([ - Transformers.inline(), - Transformers.removeDeadBranches(), - Transformers.removeUnnecessaryAssertions(), - Transformers.sortAssertions(), - Transformers.applyAssertions(), - Transformers.removeUnnecessaryAssertions(), -]); -const modifiedExpression = transform(applyTransformer, expression); - -console.log(JS.toLiteral(modifiedExpression)); -// => { source: '(?', flags: 'i' } - -// Most assertions have been removed but the patterns are still equivalent. -// The only assertions left assert characters beyond the edge of the pattern. -// Removing those assertions is easy but slightly changes the pattern. - -const finalExpression = transform( - Transformers.patternEdgeAssertions({ remove: true }), - modifiedExpression -); - -console.log(JS.toLiteral(finalExpression)); -// => { source: '[A-Z_]\\w*|->', flags: 'i' } - -const nfa = NFA.fromRegex(finalExpression, { maxCharacter }); - -console.log(JS.toLiteral(nfa.toRegex())); -// => { source: '->|[A-Z_]\\w*', flags: 'i' } -``` - -AST transformers can handle a lot of assertions but there are limitations. Transformers cannot handle assertions that are too complex or require large-scale changes to the AST. diff --git a/node_modules/refa/index.d.ts b/node_modules/refa/index.d.ts deleted file mode 100644 index ad21396..0000000 --- a/node_modules/refa/index.d.ts +++ /dev/null @@ -1,1524 +0,0 @@ -import { RegExpParser, AST } from "regexpp"; -/** - * A character is a non-negative integer. - * - * This is one of the core concepts of refa. Instead of operating on JavaScript strings, UTF16 character codes, or - * Unicode code points, this library uses plain numbers instead. This makes refa agnostic to text encodings and even - * text in general since the integers used as character may represent arbitrary concepts. - * - * The only 2 restrictions on the numbers that can be characters: - * - * 1. They have to be non-negative integers. - * 2. They can be at most `Number.MAX_SAFE_INTEGER`. - * - * This type serves as a way to document characters. It is a clear way to signal that a value is not just any number. - */ -export type Char = number & { - __char?: never; -}; -/** - * A word is finite sequence of {@link Char}s. - * - * This one of the core concepts of refa. Instead of operating on JavaScript strings, all functions operate on - * {@link Char}s and char arrays (= words). This means that refa is agnostic to text encodings, the string - * representation of JavaScript, and even text itself. - * - * This type serves as a way to document words. It should _not_ be used interchangeably with `Char[]` or `number[]`. - */ -export type Word = Char[]; -/** - * An immutable finite sequence of {@link Char}s. - * - * This is an immutable view on a {@link Word}. - */ -export type ReadonlyWord = readonly Char[]; -/** - * An immutable interval of {@link Char}s with inclusive ends. - * - * Each interval contains all characters `x` with `min <= x <= max`. - */ -export interface CharRange { - /** - * The inclusive minimum of the interval. - * - * This value has to be less or equal to {@link max}. - */ - readonly min: Char; - /** - * The inclusive maximum of the interval. - * - * This value has to be greater or equal to {@link min}. - */ - readonly max: Char; -} -/** - * An immutable set of {@link Char}s represented as a sorted set of disjoint non-adjacent intervals ({@link CharRange}). - * - * All characters in the set have to be between 0 (inclusive) and the maximum of the set (inclusive). - */ -export class CharSet { - /** - * The greatest character which can be element of the set. - */ - readonly maximum: Char; - /** - * An array of ranges representing this character set. - * - * The array must be guaranteed to have the following properties at all times: - * - * 1. Any two ranges are disjoint. - * 2. Any two ranges are non-adjacent. - * 3. 0 <= `min` <= `max` <= `this.maximum` for all ranges. - * 4. All ranges are sorted by ascending `min`. - */ - readonly ranges: readonly CharRange[]; - /** - * Returns `true` if this set doesn't contain any characters. - */ - get isEmpty(): boolean; - /** - * Returns `true` if all characters in the range from 0 to `this.maximum`, including 0 and `this.maximum`, are in - * the set. - */ - get isAll(): boolean; - /** - * Returns the number of unique characters in the set. - * - * The returned number will be at least `0` and at most `this.maximum + 1`. - */ - get size(): number; - /** - * Returns a string representation of the character set. - */ - toString(): string; - /** - * Returns an empty character set with the given maximum. - * - * @param maximum The greatest character which can be element of the set. - */ - static empty(maximum: Char): CharSet; - /** - * Returns a complete character set with the given maximum. - * - * @param maximum The greatest character which will be element of the set. - */ - static all(maximum: Char): CharSet; - /** - * Returns whether this and the given character set are equivalent. - * - * Two `CharSet`s are equal if and only if: - * - * 1. They have the same maximum. - * 2. They have the same number of char ranges. - * 3. For every `CharRange` in this set, there exists one `CharRange` in the other set with the same minimum and - * maximum. - * - * @param other - */ - equals(other: CharSet): boolean; - /** - * Compares this set with given set and returns an integer value describing their relation. Two equivalent set are - * always guaranteed to return 0. - * - * The order defined by this function is guaranteed to be a - * [total order](https://en.wikipedia.org/wiki/Total_order). Apart from this, no other guarantees are given. - * - * @param other - */ - compare(other: CharSet): number; - /** - * Returns [the complement](https://en.wikipedia.org/wiki/Complement_(set_theory)) of this set. - * - * The returned set will have the same maximum as this set. - */ - negate(): CharSet; - /** - * Returns [the union](https://en.wikipedia.org/wiki/Union_(set_theory)) of this set and all given sets and - * character ranges. - * - * The returned set will have the same maximum as this set. - * - * @param data - * @throws `RangeError` If the maximum of one of the given sets differs from the maximum of this set or if the - * maximum of one of the given ranges is greater than the maximum of this set. - */ - union(...data: (Iterable | CharSet)[]): CharSet; - /** - * Returns [the intersection](https://en.wikipedia.org/wiki/Intersection_(set_theory)) of this set and the given set - * and character ranges. - * - * The returned set will have the same maximum as this set. - * - * @param set - * @throws `RangeError` If the maximum of the given set differs from the maximum of this set or if the maximum of - * one of the given ranges is greater than the maximum of this set. - */ - intersect(set: CharSet): CharSet; - intersect(ranges: Iterable): CharSet; - /** - * Returns a set that contains all characters of this set that are not in the given set. - * - * The returned set will have the same maximum as this set. - * - * @param set - * @throws `RangeError` If the maximum of the given set differs from the maximum of this set or if the maximum of - * one of the given ranges is greater than the maximum of this set. - */ - without(set: CharSet): CharSet; - without(ranges: Iterable): CharSet; - /** - * Returns whether this set contains the given character. - * - * @param character - */ - has(character: Char): boolean; - isSupersetOf(other: CharSet | CharRange): boolean; - isSubsetOf(other: CharSet | CharRange): boolean; - /** - * Returns whether this set and the given set (or range) are disjoint. - * - * @param other - */ - isDisjointWith(other: CharSet | CharRange): boolean; - /** - * Returns any one of the common characters of this set and the given set or range. - * - * If this character set is disjoint with the given character set/range, then `undefined` will be returned. - * - * @param other - */ - commonCharacter(other: CharSet | CharRange): Char | undefined; -} -export interface ReadonlyCharMap extends Iterable<[CharRange, T]> { - isEmpty: boolean; - /** - * Returns whether the given character is a key in the map. - * - * @param char - */ - has(char: Char): boolean; - /** - * Returns whether every character in the given range is a key in the map. - * - * This is equivalent to: `[...chars].every(char => this.has(char))`. - * - * @param chars - */ - hasEvery(chars: CharRange): boolean; - /** - * Returns whether some character in the given range is a key in the map. - * - * This is equivalent to: `[...chars].some(char => this.has(char))`. - * - * @param chars - */ - hasSome(chars: CharRange): boolean; - /** - * Returns the value associated with the given character of `undefined` if the character is not key in the map. - * - * @param char - */ - get(char: Char): T | undefined; - /** - * Invokes the given callback for every item of the character map. - * - * This method is implemented more efficiently than other iterator based methods, so chose `forEach` where every - * possible. - * - * @param callback - */ - forEach(callback: (value: T, chars: CharRange, map: ReadonlyCharMap) => void): void; - keys(): Iterable; - values(): Iterable; - entries(range?: CharRange): Iterable<[CharRange, T]>; -} -/** - * A map from characters to generic values. - * - * The map guarantees that there are no adjacent character ranges that map to the equal values, will always be iterated - * as one character range. The equality of values is given by a custom equal function or JavaScript's strict equality - * operator (`===`). - */ -export class CharMap implements ReadonlyCharMap { - constructor(equalFn?: (a: T, b: T) => boolean); - get isEmpty(): boolean; - has(char: Char): boolean; - hasEvery(chars: CharRange): boolean; - hasSome(chars: CharRange): boolean; - get(char: Char): T | undefined; - set(char: Char, value: T): void; - /** - * Sets the value for all characters in the given range. - * - * This is equivalent to `[...chars].forEach(char => this.set(char, value))`. - * - * @param chars - * @param value - */ - setEvery(chars: CharRange, value: T): void; - delete(char: Char): boolean; - /** - * Deletes all characters in the given range. - * - * This is equivalent to `[...range].forEach(char => this.delete(char))`. - * - * @param range - */ - deleteEvery(range: CharRange): void; - map(mapFn: (value: T, chars: CharRange, map: ReadonlyCharMap) => T): void; - mapRange( - range: CharRange, - mapFn: (value: T | undefined, chars: CharRange, map: ReadonlyCharMap) => T | undefined - ): void; - forEach(callback: (value: T, chars: CharRange, map: ReadonlyCharMap) => void): void; - keys(): IterableIterator; - values(): IterableIterator; - entries(range?: CharRange): IterableIterator<[CharRange, T]>; - [Symbol.iterator](): IterableIterator<[CharRange, T]>; -} -export interface FiniteAutomaton { - /** - * Returns whether this FA accepts the empty language meaning that it doesn't accept any words. - */ - readonly isEmpty: boolean; - /** - * Returns whether the formal language accepted by this FA contains finitely many words. - * - * __Note__: Finite does not mean that all words can be iterated in practice. E.g. the set of all Unicode words with - * 10 or less characters contains 2.6e54 many words and can be accepted by a DFA with only 11 states. - */ - readonly isFinite: boolean; - /** - * The maximum character that is part of the alphabet of the words that this FA can accept. - */ - readonly maxCharacter: Char; - /** - * Returns whether this FA accepts the given word. - * - * @param word The characters of the word to test. - */ - test(word: ReadonlyWord): boolean; - /** - * Returns an iterable that will yield all words accepted by this FA. Words are yielded by ascending length. - * - * If this FA accepts infinitely many words, the iterable will never end. - */ - words(): Iterable; - /** - * Returns an iterable that will yield all word sets accepted by this FA. Word sets are yielded by ascending length. - * - * If you analyse the words of this FA, consider using this method instead of `words` because this method will yield - * at most `O(n^3)` word sets while `words` will yield at most `O(n^3 * m)` words (n = number of states, m = number - * of possible characters). - * - * If this FA accepts infinitely many words, the iterable will never end. - */ - wordSets(): Iterable; - /** - * Returns a string representation of this FA. - */ - toString(): string; - /** - * Returns the AST of a regular expression that accepts the same language as this FA. - * - * @param options - */ - toRegex(options?: Readonly): NoParent; -} -export interface ToRegexOptions { - /** - * The maximum number of RE AST nodes the implementation is allowed to create. - * - * If the implementation has to create more nodes to create the RE, a `TooManyNodesError` will be thrown. This - * maximum will be check before any optimization passes. - * - * @default 10000 - */ - maxNodes?: number; - /** - * The maximum number of optimization passes that will be done after the initial RE AST was created. - * - * The initial AST is usually a lot more complex than necessary. Optimizations are then applied in order to minimize - * the AST until this limit is reached or the AST can be optimized no further. - * - * The default number of passes is implementation defined. - */ - maxOptimizationPasses?: number; -} -/** - * A graph iterator for all states of an FA with final states. - * - * @template S The type of a state in the FA to iterate. - * @template O The type of the value each state maps to. - */ -export interface FAIterator> { - /** - * The initial state of the FA. - */ - readonly initial: S; - /** - * Returns the value a state maps to. - * - * This function is guaranteed to be deterministic during the time the iterator is used. Subsequent invocations will - * always return values that are equal to the first returned value. Equality is defined by - * [the key equality of the Map class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#key_equality). - * This function is also guaranteed to be sufficiently fast, usually `O(1)` can be assumed. - */ - readonly getOut: (state: S) => O; - /** - * Returns whether the given state is a final state. - * - * This function is guaranteed to be deterministic during the time the iterator is used. It is also guaranteed to be - * sufficiently fast, usually `O(1)` can be assumed. - */ - readonly isFinal: (state: S) => boolean; -} -export interface TransitionIterable { - readonly maxCharacter: Char; - readonly transitionIterator: () => FAIterator>; -} -export interface TransitionIterableFA extends FiniteAutomaton, TransitionIterable { - /** - * Returns whether the languages of this and the other FA are disjoint. - * - * The runtime of this algorithm is `O(n * m)` (n = number of states of this NFA, m = number of states of the other - * FA) but it's a lot faster in practice with the worst case being very rare. - * - * Since this uses the intersection operation, you can supply intersection options. - * - * @param other - * @param options - */ - isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; - /** - * This is equivalent to `NFA.fromIntersection(this, other).wordSets()` but implemented more efficiently. - */ - intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; - /** - * This is equivalent to `NFA.fromIntersection(this, other).words()` but implemented more efficiently. - */ - intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; -} -export interface IntersectionOptions { - /** - * The maximum number of nodes the intersection operation is allowed to create before throwing a - * `TooManyNodesError`. - * - * If the maximum number of nodes is unset or set to `Infinity`, the intersection operation may create as many nodes - * as necessary to construct the intersection. This might cause the machine to run out of memory. - * - * @default Infinity - */ - maxNodes?: number; -} -/** - * An error that is thrown when an operation causes too many nodes to be created. - * - * Many FA operation have the potential to create a huge number of nodes (thousands and millions) which may result in - * the JavaScript runtime running out of memory and/or crashing. This error will thrown before that happens to safely - * abort an otherwise resource-intensive operation. - */ -export class TooManyNodesError extends Error {} -export interface SourceLocation { - start: number; - end: number; -} -export interface NodeBase { - type: Node["type"]; - parent: Node["parent"]; - source?: SourceLocation; -} -export type Element = CharacterClass | Alternation | Quantifier | Assertion; -export type Parent = Expression | Alternation | Quantifier | Assertion; -export type Node = Expression | CharacterClass | Alternation | Quantifier | Assertion | Concatenation; -export interface Alternation extends NodeBase { - type: "Alternation"; - parent: Concatenation; - alternatives: Concatenation[]; -} -export interface Assertion extends NodeBase { - type: "Assertion"; - parent: Concatenation; - alternatives: Concatenation[]; - kind: "ahead" | "behind"; - negate: boolean; -} -export interface Quantifier extends NodeBase { - type: "Quantifier"; - parent: Concatenation; - alternatives: Concatenation[]; - lazy: boolean; - min: number; - max: number; -} -export interface CharacterClass extends NodeBase { - type: "CharacterClass"; - parent: Concatenation; - characters: CharSet; -} -export interface Expression extends NodeBase { - type: "Expression"; - parent: null; - alternatives: Concatenation[]; -} -export interface Concatenation extends NodeBase { - type: "Concatenation"; - parent: Parent; - elements: Element[]; -} -type NodeIdent = { - type: Node["type"]; -}; -type NoParentArray = { - [K in keyof T]: NoParent; -}; -type NoParentNode = { - [K in keyof NoParentNodePick]: NoParent[K]>; -}; -type NoParentNodePick = Pick>; -/** - * A view of an AST node that hides the `parent` property. - */ -export type NoParent = T extends NodeIdent ? NoParentNode : T extends unknown[] ? NoParentArray : T; -/** - * Sets the `parent` properties of the given node and all of its child nodes. - * - * @param node - * @param parent The parent of `node`. - */ -export function setParent(node: T | NoParent, parent: T["parent"]): asserts node is T; -/** - * Sets the `source` property of the given node and all of its child nodes. - * - * If `source` is not a function, then the source object will be copied for all `source` properties to be set. The - * object will be copied using the `start` and `end` properties alone, other properties will not be copied. - * - * @param node - * @param source - * @param overwrite - */ -export function setSource( - node: NoParent, - source: SourceLocation | (() => SourceLocation), - overwrite?: boolean -): void; -export interface VisitAstHandler { - onAlternationEnter?(node: Alternation): void; - onAlternationLeave?(node: Alternation): void; - onAssertionEnter?(node: Assertion): void; - onAssertionLeave?(node: Assertion): void; - onCharacterClassEnter?(node: CharacterClass): void; - onCharacterClassLeave?(node: CharacterClass): void; - onConcatenationEnter?(node: Concatenation): void; - onConcatenationLeave?(node: Concatenation): void; - onExpressionEnter?(node: Expression): void; - onExpressionLeave?(node: Expression): void; - onQuantifierEnter?(node: Quantifier): void; - onQuantifierLeave?(node: Quantifier): void; -} -export interface VisitNoParentAstHandler { - onAlternationEnter?(node: NoParent): void; - onAlternationLeave?(node: NoParent): void; - onAssertionEnter?(node: NoParent): void; - onAssertionLeave?(node: NoParent): void; - onCharacterClassEnter?(node: NoParent): void; - onCharacterClassLeave?(node: NoParent): void; - onConcatenationEnter?(node: NoParent): void; - onConcatenationLeave?(node: NoParent): void; - onExpressionEnter?(node: NoParent): void; - onExpressionLeave?(node: NoParent): void; - onQuantifierEnter?(node: NoParent): void; - onQuantifierLeave?(node: NoParent): void; -} -/** - * Calls the given visitor on the given node and all of its children. - * - * If the given visitor throws an error, the traversal will stop and the error will be re-thrown. - * - * @param node - * @param visitor - */ -export function visitAst(node: Node, visitor: VisitAstHandler): void; -export function visitAst(node: NoParent, visitor: VisitNoParentAstHandler): void; -/** - * A transform is some algorithm that takes a AST subtree and makes any number of modifications to the given subtree. - * They cannot see or modify anything outside the given subtree. Transformers are assumed to behave like a set of pure - * functions. - * - * Transformers are always applied bottom-up. - * - * The most simple transformer is an empty object (`{}`). This is equivalent to a no-op transformer that does not change - * the given AST. - */ -export interface Transformer { - onAlternation?(node: NoParent, context: TransformContext): void; - onAssertion?(node: NoParent, context: TransformContext): void; - onCharacterClass?(node: NoParent, context: TransformContext): void; - onConcatenation?(node: NoParent, context: TransformContext): void; - onExpression?(node: NoParent, context: TransformContext): void; - onQuantifier?(node: NoParent, context: TransformContext): void; -} -export interface TransformContext { - /** - * The maximum character of all character sets in the AST. - * - * If the expression to transform does not contain any characters at the start of the transformation, then this - * value will be `0`. - */ - readonly maxCharacter: Char; - /** - * Signals that the transformer changed the AST. - */ - readonly signalMutation: () => void; -} -/** - * Creates a new transformer that performs all given transformers in sequentially in order for each node. - * - * If only one transformer is given, the returned transformer will be functionally equivalent. If no transformers are - * given, the returned transformer will be equivalent to a noop transformer. - * - * The given iterable can be changed and reused after this function returns. - * - * @param transformers - */ -export function combineTransformers(transformers: Iterable): Transformer; -export interface TransformOptions { - /** - * The maximum number of times the transformer will be applied to the AST. - * - * This is only a maximum. The transformer will be stopped before this number is reach if the AST isn't modified - * anymore. - * - * @default 10 - */ - maxPasses?: number; -} -/** - * Transforms the given expression according to the given transformer. - * - * __Do not__ use the given `ast` object again after calling this function, the object will be in an undefined state. - * - * @param transformer - * @param ast - * @param options - */ -export function transform( - transformer: Transformer, - ast: NoParent, - options?: Readonly -): NoParent; -export interface ReadonlyNFA extends TransitionIterableFA { - readonly nodes: NFA.ReadonlyNodeList; - readonly options: Readonly; - stateIterator(): FAIterator; - transitionIterator(): FAIterator>; - /** - * Create a mutable copy of this NFA. - */ - copy(): NFA; -} -/** - * A [nondeterministic finite automaton](https://en.wikipedia.org/wiki/Nondeterministic_finite_automaton). - * - * This class implements epsilon-free NFAs. - */ -export class NFA implements ReadonlyNFA { - readonly nodes: NFA.NodeList; - readonly maxCharacter: Char; - get options(): Readonly; - get isEmpty(): boolean; - get isFinite(): boolean; - stateIterator(): FAIterator; - transitionIterator(): FAIterator>; - copy(): NFA; - test(word: ReadonlyWord): boolean; - wordSets(): Iterable; - words(): Iterable; - toString(): string; - toRegex(options?: Readonly): NoParent; - isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; - intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; - intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; - /** - * Modifies this NFA to accept all words from this NFA and the given FA. - * - * @param other - */ - union(other: TransitionIterable): void; - /** - * Modifies this NFA to accept the concatenation of this NFA and the given FA. - * - * @param other - */ - append(other: TransitionIterable): void; - /** - * Modifies this NFA to accept the concatenation of the given NFA and this FA. - * - * @param other - */ - prepend(other: TransitionIterable): void; - /** - * Modifies this NFA to accept at least `min` and at most `max` concatenations of itself. - * - * Both `min` and `max` both have to be non-negative integers with `min <= max`. - * `max` is also allowed to be `Infinity`. - * - * @param min - * @param max - */ - quantify(min: number, max: number): void; - /** - * Removes the empty word from the accepted languages of this NFA. - */ - withoutEmptyWord(): void; - /** - * Modifies this NFA such that all prefixes of all accepted words are also accepted. - * - * If the language of this NFA is empty, then it will remain empty. - * - * Unreachable states will be removed by this operation. - */ - prefixes(): void; - /** - * Modifies this NFA such that all suffixes of all accepted words are also accepted. - * - * If the language of this NFA is empty, then it will remain empty. - * - * Unreachable states will be removed by this operation. - */ - suffixes(): void; - /** - * Modifies this NFA such that it accepts the reverse of all words it currently accepts. - * - * If the language of this NFA is empty, then it will remain empty. - * - * Unreachable states will be removed by this operation. - */ - reverse(): void; - /** - * Returns a new NFA which is equivalent to the intersection of the two given FA. - * - * @param left - * @param right - * @param options - */ - static fromIntersection( - left: TransitionIterable, - right: TransitionIterable, - options?: Readonly - ): NFA; - /** - * Creates a new NFA which matches no words. The language of the returned NFA is empty. - * - * @param options - */ - static empty(options: Readonly): NFA; - /** - * Creates a new NFA which matches all words. - * - * @param options - */ - static all(options: Readonly): NFA; - static fromRegex( - concat: NoParent, - options: Readonly, - creationOptions?: Readonly - ): NFA; - static fromRegex( - expression: NoParent, - options: Readonly, - creationOptions?: Readonly - ): NFA; - static fromRegex( - alternatives: readonly NoParent[], - options: Readonly, - creationOptions?: Readonly - ): NFA; - /** - * Creates a new NFA which matches all and only all of the given words. - * - * @param words - * @param options - * @param creationOptions - */ - static fromWords( - words: Iterable, - options: Readonly, - creationOptions?: Readonly - ): NFA; - static fromFA(fa: TransitionIterable, creationOptions?: Readonly): NFA; - static fromTransitionIterator( - iter: FAIterator>, - options: Readonly, - creationOptions?: Readonly - ): NFA; -} -/** - * A namespace for NFA-specific classes and interfaces. - * - * @see {@link NFA} (class) - */ -export namespace NFA { - interface ReadonlyNode { - readonly list: ReadonlyNodeList; - readonly out: ReadonlyMap; - readonly in: ReadonlyMap; - } - interface Node extends ReadonlyNode { - readonly list: NodeList; - readonly out: Map; - readonly in: Map; - } - interface ReadonlyNodeList extends Iterable { - readonly initial: ReadonlyNode; - readonly finals: ReadonlySet; - /** - * Returns the number of nodes reachable from the initial state including the initial state. - * - * This may include trap states. This will not include unreachable final states. - * - * This operation has to traverse the whole graph and runs in _O(E + V)_. - */ - count(): number; - } - class NodeList implements ReadonlyNodeList, Iterable { - /** - * The initial state of this list. - * - * The initial state is fixed an cannot be changed or removed. - */ - readonly initial: Node; - /** - * The set of final states of this list. - */ - readonly finals: Set; - constructor(); - /** - * Creates a new node associated with this node list. - */ - createNode(): Node; - /** - * Adds a transition from `from` to `to` using the given non-empty set of characters. - * - * If two nodes are already linked, the character sets will be combined. - * - * @param from - * @param to - * @param characters - */ - linkNodes(from: Node, to: Node, characters: CharSet): void; - /** - * Removes the transition from `from` to `to`. - * - * If there is no transition from `from` to `to`, an error will be thrown. - * - * @param from - * @param to - */ - unlinkNodes(from: Node, to: Node): void; - /** - * All states which cannot be reached from the initial state or cannot reach (or are) a final state, will be - * removed. - */ - removeUnreachable(): void; - count(): number; - [Symbol.iterator](): Iterator; - } - /** - * Options for the constraints on how a NFA will be created. - */ - interface CreationOptions { - /** - * The maximum number of nodes the NFA creation operation is allowed to create before throwing a - * `TooManyNodesError`. - * - * If the maximum number of nodes is set to `Infinity`, the NFA creation operation may create as many nodes as - * necessary to construct the NFA. This might cause the machine to run out of memory. I.e. some REs can only be - * represented with a huge number of states (e.g `/a{123456789}/`). - * - * Note: This limit describes maximum number of __created__ nodes. If nodes are created and subsequently - * discard, they will still count toward the limit. - * - * @default 10000 - */ - maxNodes?: number; - } - interface Options { - /** - * The maximum numerical value any character can have. - * - * This will be the maximum of all underlying {@link CharSet}s. - */ - maxCharacter: Char; - } - interface FromRegexOptions extends CreationOptions { - /** - * How to handle assertions when construction the NFA. - * - * - `"throw"` - * - * This method will throw an error when encountering an assertion. - * - * - `"disable"` - * - * This method will replace any assertion with an empty character class, effectively removing it. - * - * @default "throw" - */ - assertions?: "disable" | "throw"; - /** - * The number at which the maximum of a quantifier will be assumed to be infinity. - * - * Quantifiers with a large finite maximum (e.g. `a{1,10000}`) can create huge NFAs with thousands of states. - * Any Quantifier with a maximum greater or equal to this threshold will be assumed to be infinite. - * - * @default Infinity - */ - infinityThreshold?: number; - } -} -export interface ReadonlyDFA extends TransitionIterableFA { - readonly nodes: DFA.ReadonlyNodeList; - readonly options: Readonly; - stateIterator(): FAIterator; - transitionIterator(): FAIterator>; - /** - * Creates a new DFA equivalent to this one. - */ - copy(): DFA; - /** - * Returns whether this and the given DFA are structurally equal meaning that all nodes and all transitions are - * equal. - * - * @param other - */ - structurallyEqual(other: ReadonlyDFA): boolean; -} -/** - * A [deterministic finite automaton](https://en.wikipedia.org/wiki/Deterministic_finite_automaton). - */ -export class DFA implements ReadonlyDFA { - readonly nodes: DFA.NodeList; - readonly maxCharacter: Char; - get options(): Readonly; - get isEmpty(): boolean; - get isFinite(): boolean; - stateIterator(): FAIterator; - transitionIterator(): FAIterator>; - test(word: ReadonlyWord): boolean; - wordSets(): Iterable; - words(): Iterable; - toString(): string; - toRegex(options?: Readonly): NoParent; - isDisjointWith(other: TransitionIterable, options?: Readonly): boolean; - intersectionWordSets(other: TransitionIterable, options?: Readonly): Iterable; - intersectionWords(other: TransitionIterable, options?: Readonly): Iterable; - copy(): DFA; - structurallyEqual(other: ReadonlyDFA): boolean; - /** - * [Minimizes](https://en.wikipedia.org/wiki/DFA_minimization) this DFA. - */ - minimize(): void; - /** - * Complements this DFA. - * - * This DFA after calling this function will accept all words that are not accepted by this DFA before calling this - * function. - */ - complement(): void; - /** - * Modifies this DFA such that all prefixes of all accepted words are also accepted. - * - * If the language of this DFA is empty, then it will remain empty. - * - * Unreachable states will be removed by this operation. - */ - prefixes(): void; - /** - * Returns a new DFA which is equivalent to the intersection of the two given FA. - * - * @param left - * @param right - * @param options - */ - static fromIntersection( - left: TransitionIterable, - right: TransitionIterable, - options?: Readonly - ): DFA; - /** - * Creates a new DFA which matches no words. The language of the returned DFA is empty. - * - * @param options - */ - static empty(options: Readonly): DFA; - /** - * Creates a new DFA which matches all words. - * - * @param options - */ - static all(options: Readonly): DFA; - static fromWords( - words: Iterable, - options: Readonly, - creationOptions?: Readonly - ): DFA; - static fromFA(fa: TransitionIterable, creationOptions?: Readonly): DFA; - static fromTransitionIterator( - iter: FAIterator>, - options: Readonly, - creationOptions?: Readonly - ): DFA; -} -/** - * A namespace for DFA-specific classes and interfaces. - * - * @see {@link DFA} (class) - */ -export namespace DFA { - interface ReadonlyNode { - readonly list: ReadonlyNodeList; - readonly out: ReadonlyCharMap; - } - interface Node extends ReadonlyNode { - readonly list: NodeList; - readonly out: CharMap; - } - interface ReadonlyNodeList extends Iterable { - readonly initial: ReadonlyNode; - readonly finals: ReadonlySet; - /** - * Returns the number of nodes reachable from the initial state including the initial state. - * - * This may include trap states. This will not include unreachable final states. - * - * This operation has to traverse the whole graph and runs in _O(E + V)_. - */ - count(): number; - } - class NodeList implements ReadonlyNodeList { - readonly initial: Node; - readonly finals: Set; - constructor(); - createNode(): Node; - linkNodes(from: Node, to: Node, characters: CharSet | CharRange | Char): void; - /** @internal */ - _uncheckedLinkNodesWithCharacter(from: Node, to: Node, character: Char): void; - /** @internal */ - _uncheckedLinkNodesWithCharRange(from: Node, to: Node, characters: CharRange): void; - /** @internal */ - _uncheckedLinkNodesWithCharSet(from: Node, to: Node, characters: CharSet): void; - unlinkNodes(from: Node, to: Node): void; - removeUnreachable(): void; - count(): number; - [Symbol.iterator](): IterableIterator; - } - /** - * Options for the constraints on how a DFA will be created. - */ - interface CreationOptions { - /** - * The maximum number of nodes the DFA creation operation is allowed to create before throwing a - * `TooManyNodesError`. - * - * If the maximum number of nodes is set to `Infinity`, the DFA creation operation may create as many nodes as - * necessary to construct the DFA. This might cause the machine to run out of memory. I.e. the conversion from - * NFA to DFA may create `O(2^n)` many nodes and an intersection may created `O(n * m)` many. - * - * Note: This limit describes the maximum number of __created__ nodes. If nodes are created and subsequently - * discard, they will still count toward the limit. - * - * @default 10000 - */ - maxNodes?: number; - } - interface Options { - /** - * The maximum numerical value any character can have. - * - * This will be the maximum of all underlying {@link CharSet}s. - */ - maxCharacter: Char; - } -} -/** - * Contains all AST transformer implementations of refa. - * - * All transformer factory functions implemented here will optionally take {@link CreationOptions} or a sub-class of it. - * This can be used to control the behavior of the created transformers. - * - * @module - */ -export namespace Transformers { - interface CreationOptions { - /** - * If `true`, transformers are allowed to reorder alternatives and to change/ignore the laziness of quantifiers. - * This may cause the behavior of the regex to change. - * - * @default false - */ - ignoreOrder?: boolean; - /** - * If `true`, transformers are allowed to reduce or increase the ambiguity of the regular expression. - * - * @default false - */ - ignoreAmbiguity?: boolean; - } - /** - * This transformer will apply all trivial assertion (e.g. `/(?!0)\d/` => `/[1-9]/`) and remove all branches in - * assertions that are guaranteed to reject (e.g. `(?=\d+=|-)\w` => `(?=\d+=)\w`). - */ - function applyAssertions(_options?: Readonly): Transformer; - /** - * This will factor out common prefixes and suffixes in parent nodes. - * - * Examples: - * - * - `(?:abc|aba)` => `(?:ab(?:c|a))` - * - `(? `(? `(?:abc(?:||))` - */ - function factorOut(options?: Readonly): Transformer; - /** - * This transformer will simplify the AST by doing trivial inlining operations. - * - * It will: - * - * 1. Inline single-alternative alternations in concatenation (e.g. `a(?:b)c` => `abc`). - * 2. Inline single-alternation concatenations (e.g. `(?:(?:a|b)|c)` => `(?:a|b|c)`). - * 3. Inline constant-one quantifiers (e.g. `ab{1}c` => `abc`). - * 4. Remove constant-zero quantifiers (e.g. `ab{0}c` => `ac`). - * 5. Inline trivially nested assertions (e.g. `(?!(? `(?<=a)`). - * 6. Inline nested assertions at the end of the expression tree (e.g. `(?!a(?=b))` => `(?!ab)`). - * - * --- - * - * This transformer should be used in combination with {@link removeDeadBranches} to handle trivial simplifications. - */ - function inline(_options?: Readonly): Transformer; - /** - * This operation tries to merge as many elements as possible with existing quantifiers. - * - * Examples: - * - * - `/a*a/` => `/a+/` - * - `/a*(?:a+|c)/` => `/a*(?:a|c)/` - */ - function mergeWithQuantifier(options?: Readonly): Transformer; - /** - * This tries to simplify how a given sub-expression accepts the empty string. The goal is to modify the sub-expression - * such that exactly one path accepts the empty string. This has the emergent result that the operator that causes the - * sub-expression to accept the empty string moves closer to the root of the tree. - * - * Examples: - * - * - `a(?:b*|d?)` => `a(?:b+|d)?` - * - `||a*|b` => `(?:a+|b)?` - * - * This operation largely ignores the order of alternatives and usually reduces the ambiguity of the expression. If - * order or ambiguity have to be preserved, then the effectiveness of this transformer will be greatly reduced. - */ - function moveUpEmpty(options?: Readonly): Transformer; - /** - * This merges/optimizes nested quantifiers. - * - * Examples: - * - * - `(?:a+)*` => `a*` - * - `(?:a{2,4})+` => `a{2,}` - * - `(?:a{4}){8}` => `a{32}` - * - `(?:a*|b+c|f+)*` => `(?:a{1}|b+c|f{1})*` - * - * This operation largely ignores the order of alternatives and usually reduces the ambiguity of the expression. If - * order or ambiguity have to be preserved, then the effectiveness of this transformer will be greatly reduced. - */ - function nestedQuantifiers(options?: Readonly): Transformer; - interface PatternEdgeAssertionsCreationOptions extends CreationOptions { - /** - * @default true - */ - inline?: boolean; - /** - * @default false - */ - remove?: boolean; - } - /** - * This transformer will only touch assertion that assert characters beyond the edge of the pattern. - * - * E.g. in `/(? `/(? `/(?!\d)\w+\s* `a(?!\d)\w`, which - * may prevent some removal. Some assertions will not be removed because another may be inlined later. E.g. the `(?!\d)` - * in `(?=\w)a?(?!\d)` will not be removed because the pattern may be transformed to `(?:a|(?=\w))(?!\d)` => - * `a(?!\d)|(?=\w)(?!\d)` which can be inlined to `a(?!\d)|(?!\d)\w` and transformed to `a(?!\d)|[A-Z_a-z]`. - * - * If neither inlining nor removal are active, then this transformer won't do anything. - */ - function patternEdgeAssertions(options?: Readonly): Transformer; - /** - * This removes dead branches in the AST. - * - * Dead branches are parts of the regex that can never accept on any given input string (e.g. `[]a|b` => `b`). - * - * This operation may produce parent nodes with 0 alternatives. Quantifiers with 0 alternatives and a minimum of 0 will - * be replaced with the empty concatenation (e.g. `a(?:[]b)?c` => `ac`). - * - * --- - * - * This transformer should be used in combination with {@link inline} to handle trivial simplifications. - */ - function removeDeadBranches(_options?: Readonly): Transformer; - /** - * This will remove all assertions that are known to always reject/accept no matter the input string. - */ - function removeUnnecessaryAssertions(_options?: Readonly): Transformer; - interface RemoveAssertionsCreationOptions extends CreationOptions { - /** - * @default "empty-set" - */ - replacement?: "empty-set" | "empty-word"; - } - /** - * This transformer will all assertions with either the empty set or the empty word. - */ - function replaceAssertions(options?: Readonly): Transformer; - /** - * Sorts adjacent assertions such that lookbehinds are always to the right of lookaheads. - * - * This is operation may be necessary for other transformers to pick up on certain patterns. - * - * E.g. `(?=a)(?!b)(? `(?): Transformer; - /** - * Combines single-character alternatives. - * - * This rule will try to combine as many character classes as possible to simplify the regular expression. - * - * E.g. `a|b|c` => `[abc]`. - */ - function unionCharacters(options?: Readonly): Transformer; -} -/** - * Classes and functions to convert JavaScript RegExp to refa AST and vise versa. - * - * All classes and functions in this module/namespace are specific to JavaScript regular expressions as defined by the - * ECMAScript standard. - * - * @see {@link Parser}: A class to convert from JS RegExp to refa AST. - * @see {@link toLiteral}: A function to convert from refa AST to JS RegExp. - * - * @module - */ -export namespace JS { - type BoundaryAssertion = WordBoundaryAssertion | TextBoundaryAssertion; - interface WordBoundaryAssertion { - kind: "word"; - negate: boolean; - } - interface TextBoundaryAssertion { - kind: "end" | "start"; - } - function createAssertion(assertion: Readonly, flags: Readonly): NoParent; - type PredefinedCharacterSet = - | AnyCharacterSet - | DigitCharacterSet - | PropertyCharacterSet - | SpaceCharacterSet - | WordCharacterSet; - interface AnyCharacterSet { - kind: "any"; - } - interface DigitCharacterSet { - kind: "digit"; - negate: boolean; - } - interface PropertyCharacterSet { - kind: "property"; - key: string; - value: string | null; - negate: boolean; - } - interface SpaceCharacterSet { - kind: "space"; - negate: boolean; - } - interface WordCharacterSet { - kind: "word"; - negate: boolean; - } - /** - * Creates a new character set with the characters equivalent to a JavaScript regular expression character set. - * - * @param chars The characters in the set. - * @param flags The flags of the pattern. - */ - function createCharSet( - chars: Iterable>, - flags: Readonly - ): CharSet; - interface ToLiteralOptions { - /** - * An optional template for the flags of the JavaScript RegExp literal to be created. - * - * All flags that are set to `false` are guaranteed to be disabled in the created literal. Likewise, all flags that - * are set to `true` are guaranteed to be enabled in the created literal. - * - * Flags that are `undefined` will be enabled/disabled depending on the implementation. While no guarantees are - * given, the implementation will generally try to choose flags such that it can create literal that is as - * small/simple as possible. - * - * If the constraints on flags defined here make it impossible to create a literal, an error will be thrown. - */ - flags?: Flags; - /** - * This will force the function to print characters as fast as possible. - * - * Literals created with this option will usually be created about 10x faster but the result will usually be very - * hard to read. The is option is intended to provide performance benefits when readability is not a concern. - * - * @default false - */ - fastCharacters?: boolean; - } - /** - * Converts the given AST or AST subtree into a JS literal. - * - * The returned literal will be a literal representation of the given AST. However, assertions maybe converted to - * builtin JS RegExp assertions (e.g `\b`, `$`) instead of using the literal lookahead/lookbehind form. - */ - function toLiteral(concat: NoParent, options?: Readonly): Literal; - function toLiteral(expression: NoParent, options?: Readonly): Literal; - function toLiteral(alternatives: readonly NoParent[], options?: Readonly): Literal; - /** - * A partial set of RegExp flags. - */ - interface Flags { - /** @default false */ - dotAll?: boolean; - /** @default false */ - global?: boolean; - /** @default false */ - ignoreCase?: boolean; - /** @default false */ - multiline?: boolean; - /** @default false */ - sticky?: boolean; - /** @default false */ - unicode?: boolean; - } - /** - * A light-weight representation of a - * [JavaScript RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) object. - * - * This interface only requires the `source` and `flags` properties of a RegExp object. - */ - interface Literal { - readonly source: string; - readonly flags: string; - } - interface ParseOptions { - /** - * The maximum number of words a backreference can be replaced by. - * - * Set this to 0 to disable resolving backreferences. - * - * @default 100 - */ - maxBackreferenceWords?: number; - /** - * How to the parser will handle unresolved backreferences. - * - * - `"disable"` - * - * The parser will replace all backreferences with an empty character class. This will cause all paths containing - * a backreference to be (effectively) removed. - * - * E.g. `(a*)(\1|b)` will be parsed as `(a*)([]|b)` which is equivalent to `a*b`. - * - * - `"throw"` - * - * The parser will throw an error when encountering a backreference that cannot be removed. - * - * E.g. `(a*)b\1` will throw but `(a*)[^\s\S]\1` will not because the backreference will be removed anyway because - * of the empty character class. - * - * Backreferences that have been resolved are not affected by this option. - * - * @default "throw" - */ - backreferences?: "disable" | "throw"; - /** - * How the parser will handle assertions. - * - * - `"parse"` - * - * The parser will translate every assertion literally to an equivalent RE AST representation. Builtin assertions - * (e.g. `\b`, `$`) will be transformed into equivalent assertions. - * - * - `"disable"` - * - * The parser will disable all assertion by replacing them with an empty character class. This will cause all - * paths containing a assertion to be (effectively) removed. - * - * - `"throw"` - * - * The parser will throw an error when encountering a assertion that cannot be removed. - * - * E.g. `a\B` will throw but `a([]\b)(\b){0}` will not because none of the `\b`s can be reached. - * - * @default "parse" - */ - assertions?: "parse" | "disable" | "throw"; - /** - * By default, the parser will try to optimize the generated RE as much as possible. - * - * If set to `true`, all trivial optimizations will be disabled. This includes: - * - * - Removing alternatives where all paths go through an empty character class. - * - Removing constant 0 and constant 1 quantifiers. - * - Inlining single-alternative groups. - * - * These optimization might prevent that certain backreferences or assertions from throwing an error. - * - * @default false - */ - disableOptimizations?: boolean; - /** - * The maximum number of nodes the parser is allowed to create. - * - * If the regexes requires more nodes, a {@link TooManyNodesError} will be thrown. - * - * @default 10000 - */ - maxNodes?: number; - } - interface RegexppAst { - readonly pattern: AST.Pattern; - readonly flags: AST.Flags; - } - type ParsableElement = AST.Group | AST.CapturingGroup | AST.Pattern | AST.Alternative; - interface ParseResult { - expression: Expression; - maxCharacter: Char; - } - /** - * Converts JS RegExp to refa's RE AST format. - */ - class Parser { - /** - * The literal of the parser instance. - */ - readonly literal: Literal; - /** - * The parsed AST of the literal this parser works on. - * - * While not explicitly typed that way, the parser will assume that the AST is readonly and makes optimizations - * based on that assumption. It is not safe to change the AST in any way. - */ - readonly ast: RegexppAst; - /** - * The maximum character of all character sets in the parsed AST. - * - * This value will also be returned as part of the {@link ParseResult}. - */ - readonly maxCharacter: Char; - /** - * Creates a new parser from the given literal. - * - * This function will throw a `SyntaxError` if the given literal is not a valid RegExp literal according to the - * given RegExp parser options. - * - * @param literal - * @param parserOptions - */ - static fromLiteral(literal: Literal, parserOptions?: RegExpParser.Options): Parser; - /** - * Creates a new parser from the given [regexpp](https://github.com/mysticatea/regexpp) AST. - * - * When the JS RegExp has already been parsed using regexpp, this method can be used to avoid parsing the regex - * again. - * - * The given AST is not allowed to be changed during the lifetime of the returned parser. - * - * @param ast - */ - static fromAst(ast: RegexppAst): Parser; - /** - * Parsed the entire literal. - */ - parse(options?: Readonly): ParseResult; - /** - * Parses a specific element of the literal. - */ - parseElement(element: ParsableElement, options?: Readonly): ParseResult; - } -} -export namespace Words { - /** - * Converts the given array of UTF16 character codes into a string. - * - * All numbers in the given array must be between 0 (inclusive) and 65535 = 0xFFFF (inclusive). - * - * @param word - */ - function fromUTF16ToString(word: ReadonlyWord): string; - /** - * Converts the given array of Unicode code points into a string. - * - * All numbers in the given array must be between 0 (inclusive) and 1114111 = 0x10FFFF (inclusive). - * - * @param word - */ - function fromUnicodeToString(word: ReadonlyWord): string; - /** - * Converts the given string into an array of UTF16 character codes. - * - * All numbers in the returned array are guaranteed to be between 0 (inclusive) and 65535 = 0xFFFF (inclusive). - * - * @param string - */ - function fromStringToUTF16(string: string): Word; - /** - * Converts the given string into an array of Unicode code points. - * - * All numbers in the returned array are guaranteed to be between 0 (inclusive) and 1114111 = 0x10FFFF (inclusive). - * - * @param string - */ - function fromStringToUnicode(string: string): Word; - /** - * Iterates all words which can be constructed from the given word set (array of character sets). - * - * @param wordSet - */ - function wordSetToWords(wordSet: readonly CharSet[]): Iterable; - /** - * Returns the most humanly readable character in the given character set. Which character is picked is entirely - * implementation-defined but, generally, word characters will be picked over non-word characters and printable - * characters will be picked over non-printable characters. - * - * If the given character set is empty, `undefined` will be returned. - * - * @param set - */ - function pickMostReadableCharacter(set: CharSet): Char | undefined; - /** - * Returns a word of the given word set that is the most humanly readable. - * - * If at least one of the given character sets is empty, `undefined` will be returned. - * - * @param wordSet - */ - function pickMostReadableWord(wordSet: Iterable): Word | undefined; -} diff --git a/node_modules/refa/index.js b/node_modules/refa/index.js deleted file mode 100644 index 990e976..0000000 --- a/node_modules/refa/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var m=require("regexpp");const n=new Map,a=new Map;class i{constructor(m,n){this.maximum=m,this.ranges=n}get isEmpty(){return 0===this.ranges.length}get isAll(){return 1===this.ranges.length&&0===this.ranges[0].min&&this.ranges[0].max===this.maximum}get size(){let m=0;for(let n=0,a=this.ranges.length;nm.max||m.max>this.maximum)throw new RangeError(`min=${m.min} has to be >= 0 and <= max.`);if(m.max>this.maximum)throw new RangeError(`max=${m.max} has to be <= maximum=${this.maximum}.`);return m}equals(m){if(m===this)return!0;if(!(m instanceof i))return!1;if(this.maximum!==m.maximum)return!1;if(this.ranges.length!==m.ranges.length)return!1;for(let n=0,a=this.ranges.length;n0&&a.push({min:0,max:i.min-1});for(let n=1;nm.min-n.min)),e(x),new i(this.maximum,a)}intersect(m){let n;m instanceof i?(this._checkCompatibility(m),n=m):n=i.empty(this.maximum).union(m);const a=function(m,n){const a=[];let i=0,x=0,e=m[i],t=n[x];for(;e&&t;)e.maxt.max?(e={min:t.max+1,max:e.max},t=n[++x]):e=m[++i];for(;e;e=m[++i])a.push(e);return a}(this.ranges,n.ranges);return 0===a.length?i.empty(this.maximum):new i(this.maximum,a)}has(m){return x(this.ranges,{min:m,max:m})}isSupersetOf(m){if(!(m instanceof i))return x(this.ranges,m);const n=this.ranges,a=m.ranges;let e=0,t=0,r=n[e],s=a[t];for(;r&&s;)if(r.min<=s.min&&r.max>=s.max)s=a[++t];else{if(!(r.maxm[a-1].max)return;let e=0,t=a;for(;e>1),a=m[n],r=a.min;if(r==i)return i;if(rm[a-1].max)return!1;if(1==a)return!0;let e=0,t=a;for(;e>1),a=m[n],r=a.min;if(r==i)return x<=a.max;if(r=x.max?n++:x.min<=i.max+1?(m[a-n]={min:i.min,max:x.max},n++):m[a-n+1]=x}n&&(m.length=m.length-n)}function t(m){const{min:n,max:a}=m;if(n>a)throw new RangeError(`min has to be less or equal to max. (min=${n}, max=${a})`);if(!Number.isInteger(n)||n<0)throw new TypeError(`min has to be a non-negative integer. (min=${n})`);if(!Number.isInteger(a)||a<0)throw new TypeError(`max has to be a non-negative integer. (max=${a})`)}function r(m,n){return m===n}class s{constructor(m){this._tree=new g(m||r)}get isEmpty(){return null===this._tree.root}has(m){return!!Number.isFinite(m)&&null!==this._tree.nodeOf(m)}hasEvery(m){t(m);const{min:n,max:a}=m,i=this._tree.nodeOf(n),x=this._tree.nodeOf(a);if(null===i||null===x)return!1;let e=i;for(;e!==x;){const m=o(e);if(e.key.max+1!==m.key.min)return!1;e=m}return!0}hasSome(m){return t(m),null!==this._tree.nodeInRange(m)}get(m){if(!Number.isFinite(m))return;const n=this._tree.nodeOf(m);return n?n.value:void 0}set(m,n){!function(m){if(!Number.isInteger(m)||m<0)throw new TypeError(`The given character has to be a non-negative integer. (char=${m})`)}(m),this._tree.deleteCharacter(m),this._tree.insert({min:m,max:m},n)}setEvery(m,n){t(m),this._tree.deleteRange(m),this._tree.insert(m,n)}delete(m){if(!Number.isFinite(m))return!1;return this._tree.deleteCharacter(m)}deleteEvery(m){t(m),this._tree.deleteRange(m)}map(m){this._tree.map(((n,a)=>m(a,n,this)))}mapRange(m,n){this._tree.mapWithGaps(m,((m,a)=>n(a,m,this)))}forEach(m){const n=a=>{a&&(n(a.left),m(a.value,a.key,this),n(a.right))};n(this._tree.root)}*keys(){for(const[m]of this.entries())yield m}*values(){for(const[,m]of this.entries())yield m}*entries(m){if(m){let n=this._tree.leftmostNodeInRange(m);const a=this._tree.rightmostNodeInRange(m);for(;n&&(yield[n.key,n.value],n!==a);)n=o(n)}else{const m=[];for(this._tree.root&&m.push({leftDone:!1,node:this._tree.root});m.length>0;){const{leftDone:n,node:a}=m.pop();if(n||null===a.left){const{key:n,value:i,right:x}=a;yield[n,i],null!==x&&m.push({leftDone:!1,node:x})}else m.push({leftDone:!0,node:a}),m.push({leftDone:!1,node:a.left})}}}[Symbol.iterator](){return this.entries()}}function o(m){if(m.right)return c(m.right);{let n=m.parent;for(;n;){if(n.left===m)return n;if(n.right!==m)throw new Error("Expected the node to be a child of its parent.");m=n,n=n.parent}return null}}function l(m){if(m.left)return function(m){for(;m.right;)m=m.right;return m}(m.left);{let n=m.parent;for(;n;){if(n.right===m)return n;if(n.left!==m)throw new Error("Expected the node to be a child of its parent.");m=n,n=n.parent}return null}}function c(m){for(;m.left;)m=m.left;return m}function u(m,n){if(null===m)return null;const{min:a,max:i}=n;if(m.key.min<=a&&a<=m.key.max)return m;if(m.key.max{if(m){if(m.left&&m.left.parent!==m)throw new Error(n+": Incorrect parent.");if(m.right&&m.right.parent!==m)throw new Error(n+": Incorrect parent.");const i=a(m.left),x=a(m.right);if(Math.abs(i-x)>=2)throw new Error(n+": The tree in unbalanced.");const e=1+Math.max(i,x);if(m.height!==e)throw new Error(n+": Stored height is incorrect.");return e}return 0};a(this.root)}nodeOf(m){let n=this.root;for(;n;){const{min:a,max:i}=n.key;if(mi))return n;n=n.right}}return null}nodeInRange(m){const{min:n,max:a}=m;let i=this.root;for(;i;){const{min:m,max:x}=i.key;if(ax))return i;i=i.right}}return null}leftmostNodeInRange(m){return u(this.root,m)}rightmostNodeInRange(m){return h(this.root,m)}_mergeAdjacentLeft(m,n){if(!p(m,n.key))throw new Error("The ranges are not adjacent");let a=m.min;const i=l(n);if(i){if(i.key.max>=m.min)throw new Error("The inserted key has to be disjoint with all other keys.");p(i.key,m)&&this.equalFn(i.value,n.value)&&(a=i.key.min,this.detachNode(i))}n.key={min:a,max:n.key.max}}_mergeAdjacentRight(m,n){if(!p(m.key,n))throw new Error("The ranges are not adjacent");let a=n.max;const i=o(m);if(i){if(i.key.min<=n.max)throw new Error("The inserted key has to be disjoint with all other keys.");p(n,i.key)&&this.equalFn(m.value,i.value)&&(a=i.key.max,this.detachNode(i))}m.key={min:m.key.min,max:a}}insert(m,n){let a=null,i=this.root;for(;null!==i;)if(a=i,m.max=2){a===m.left?e===m.left.left?N(this,m):e===m.left.right&&(v(this,a),N(this,m)):a===m.right&&(e===m.right.right?v(this,m):e===m.right.left&&(N(this,a),v(this,m)));break}a=a.parent,e=e.parent}}_transplant(m,n){null===m.parent?this.root=n:m===m.parent.left?m.parent.left=n:m.parent.right=n,null!==n&&(n.parent=m.parent)}_avlDeleteFixup(m){let n=m;for(;null!==n;){if(S(n),_(n)<=-2||_(n)>=2){const m=n;let a,i;a=y(m.left)>y(m.right)?m.left:m.right,i=y(a.left)>y(a.right)?a.left:y(a.left)a)return void(i.key={min:a+1,max:i.key.max});if(this.detachNode(i),x===a)return}else{if(i.key={min:i.key.min,max:n-1},x>a)return void this.insert({min:a+1,max:x},i.value);if(x===a)return}if(m===n&&x===a)return void this.detachNode(i)}let x=this.nodeOf(m.max);if(x){const{max:m}=x.key;m>a?x.key={min:a+1,max:x.key.max}:(this.detachNode(x),x=null)}const e=[];let t=this.leftmostNodeInRange(m);for(;t;)e.push(t),t=o(t);e.forEach((m=>this.detachNode(m)))}setNode(m,n){if(this.equalFn(m.value,n))return;m.value=n;const a=l(m);a&&f(a,m)&&this.equalFn(a.value,n)&&(m.key=d(a.key,m.key),this.detachNode(a));const i=l(m);i&&f(m,i)&&this.equalFn(n,i.value)&&(m.key=d(m.key,i.key),this.detachNode(i))}map(m){if(!this.root)return;let n,a=c(this.root);for(a.value=m(a.key,a.value);n=o(a);)n.value=m(n.key,n.value),f(a,n)&&this.equalFn(a.value,n.value)&&(n.key=d(a.key,n.key),this.detachNode(a)),a=n}_applyModifications(m){if(0!==m.length){1===m.length&&this.setNode(m[0][0],m[0][1]),m.sort(((m,n)=>m[0].key.min-n[0].key.min));for(let n=0,a=m.length;n{if(a.minm.max)throw new RangeError("The range of the given gap is not within the mapping range.");const i=n(a,void 0);void 0!==i&&e.push([a,i])},r=a=>{if(a.key.minm.max)throw new RangeError("The range of the given node is not within the mapping range.");const e=n(a.key,a.value);void 0===e?i.push(a):x.push([a,e])},s=this.rightmostNodeInRange(m);m.minm.max?(e.push([{min:m.max+1,max:s.key.max},s.value]),s.key={min:s.key.min,max:m.max},r(s)):r(s),i.forEach((m=>this.detachNode(m))),this._applyModifications(x),e.forEach((([m,n])=>this.insert(m,n)))}}}function y(m){var n;return null!==(n=null==m?void 0:m.height)&&void 0!==n?n:0}function S(m){m.height=1+Math.max(y(m.right),y(m.left))}function _(m){return y(m.left)-y(m.right)}function v(m,n){const a=n.right;n.right=a.left,null!==a.left&&(a.left.parent=n),a.parent=n.parent,null===n.parent?m.root=a:n===n.parent.left?n.parent.left=a:n.parent.right=a,a.left=n,n.parent=a,S(n),S(a)}function N(m,n){const a=n.left;n.left=a.right,null!==a.right&&(a.right.parent=n),a.parent=n.parent,null===n.parent?m.root=a:n===n.parent.right?n.parent.right=a:n.parent.left=a,a.right=n,n.parent=a,S(n),S(a)}class C extends Error{}function O(m){function n(a){let i=n.cache.get(a);return void 0===i&&n.cache.set(a,i=m(a)),i}return n.cache=new Map,n}function k(m,n){let a=0;for(let i=0;i0;){const m=i[i.length-1];-1===m.nextIndex&&(a.add(m.element),m.nextElements=J(n(m.element)));const x=m.nextElements;if(!x)throw new Error("This should not happen.");if(m.nextIndex++,m.nextIndex>=x.length){i.pop();continue}const e=x[m.nextIndex];a.has(e)||i.push({element:e,nextIndex:-1})}}function*L(m,n){const a=new Set;let i=[...m],x=[];for(;i.length>0;){for(const m of i)a.has(m)||(a.add(m),yield m,x.push(...n(m)));[i,x]=[x,i],x.length=0}}function T(m,n){const a=new Set,i=[m];let x;for(;x=i.pop();)a.has(x)||(a.add(x),i.push(...n(x)))}function P(m,n){const a=new Error(n);throw a.data=m,a}function*I(m){for(const n of m)yield*n}function*D(m){for(const n of B(m)){const m=[];for(const a of n)m.push(...a);yield m}}function*R(m){for(const n of B(m))yield[...n]}class G{constructor(m){this._cache=[],this._fullyCached=!1,this._iterator=m[Symbol.iterator]()}static from(m){return m instanceof G?m:new G(m)}[Symbol.iterator](){return this._fullyCached?this._cache[Symbol.iterator]():function*(m){const{_cache:n,_iterator:a}=m;let i=0;for(;!m._fullyCached;)if(im[Symbol.iterator]())),i=[];for(const m of a){const n=m.next();if(n.done)return;i.push(n.value)}if(yield i,0!==a.length)for(;;){for(let m=a.length-1;m>=0;m--){const x=a[m].next();if(!x.done){i[m]=x.value;break}if(0===m)return;{a[m]=n[m][Symbol.iterator]();const x=a[m].next();if(x.done)throw new Error;i[m]=x.value}}yield i}}function W(m,n){F(m,n)}function F(m,n){switch(m.type){case"Concatenation":if(null===n)throw new Error("The parent of a concatenation cannot be null.");switch(n.type){case"Alternation":case"Assertion":case"Expression":case"Quantifier":m.parent=n;break;case"Concatenation":throw new Error("A concatenation cannot be parent of a concatenation.");default:throw P(n)}m.elements.forEach((n=>F(n,m)));break;case"Alternation":case"Assertion":case"CharacterClass":case"Quantifier":if(null===n)throw new Error(`The parent of a(n) ${m.type} cannot be null.`);if("Concatenation"!==n.type)throw new Error(`A(n) ${n.type} cannot be parent of a(n) ${m.type}.`);m.parent=n,"CharacterClass"!==m.type&&m.alternatives.forEach((n=>F(n,m)));break;case"Expression":if(null!==n)throw new Error(`The parent of an expression has to be null and cannot be a(n) ${n.type}.`);m.parent=null,m.alternatives.forEach((n=>F(n,m)));break;default:throw P(m)}}function Q(m,n,a){if("function"!=typeof n){const{start:m,end:a}=n;n=()=>({start:m,end:a})}H(m,n,a)}function H(m,n,a){if(a||!m.source)m.source=n();else{const{start:a,end:i}=m.source;n=()=>({start:a,end:i})}switch(m.type){case"Concatenation":m.elements.forEach((m=>H(m,n,a)));break;case"Alternation":case"Assertion":case"Expression":case"Quantifier":m.alternatives.forEach((m=>H(m,n,a)));break;case"CharacterClass":break;default:throw P(m)}}function j(m,n){const a=n["on"+m.type+"Enter"];switch(a&&a(m),m.type){case"Alternation":case"Assertion":case"Expression":case"Quantifier":for(const a of m.alternatives)j(a,n);break;case"Concatenation":for(const a of m.elements)j(a,n)}const i=n["on"+m.type+"Leave"];i&&i(m)}const z=["onAlternation","onAssertion","onCharacterClass","onConcatenation","onExpression","onQuantifier"];function U(m){var n;const a={};for(const i of m)for(const m of z){const x=i[m];if(x){(a[m]=null!==(n=a[m])&&void 0!==n?n:[]).push(x.bind(i))}}function i(m){const n=a[m];return void 0===n||0===n.length?void 0:1===n.length?n[0]:function(m,a){for(const i of n)i(m,a)}}return{onAlternation:i("onAlternation"),onAssertion:i("onAssertion"),onCharacterClass:i("onCharacterClass"),onConcatenation:i("onConcatenation"),onExpression:i("onExpression"),onQuantifier:i("onQuantifier")}}function K(m,n,a){var i;let x=null!==(i=(a=null!=a?a:{}).maxPasses)&&void 0!==i?i:10;const e={transformer:m,ast:n,maxCharacter:q(n)};for(;x>=1&&$(e);x--);return n}function q(m){try{return j(m,{onCharacterClassEnter(m){throw m.characters.maximum}}),0}catch(m){if("number"==typeof m)return m;throw m}}function $({transformer:m,ast:n,maxCharacter:a}){let i=!1;const x={maxCharacter:a,signalMutation(){i=!0}};function e(n){const a="on"+n.type,i=m[a];i&&i(n,x)}return j(n,{onAlternationLeave:e,onAssertionLeave:e,onCharacterClassLeave:e,onConcatenationLeave:e,onExpressionLeave:e,onQuantifierLeave:e}),i}function V(m){return"number"==typeof m}function X(m){const n=[...(a=m,a instanceof Set?a:new Set(a))].filter((m=>!m.isEmpty)).sort(((m,n)=>m.compare(n))).filter(((m,n,a)=>0===n||!m.equals(a[n-1])));var a;if(0===n.length)return n;if(1===n.length)return n;const x=n[0].maximum,e=[];for(const m of n){if(m.maximum!==x)throw new Error("The maximum of all given sets has to be the same.");e.push(...m.ranges)}if(0===e.length)return[];const t=i.empty(x).union(e),r=new Set;for(let m=0,n=e.length;mm-n)),o=new Map;for(let m=1,a=s.length;m{let i=a.get(m);void 0===i&&a.set(m,i=[]),i.push(n)}));const x=new Map;for(const[m,e]of a)x.set(m,i.empty(n).union(e));return x}function mm(m){m instanceof i&&(m=m.ranges);let n="";for(const{min:a,max:i}of m)""!==n&&(n+=", "),n+=a==i?a.toString(16):a.toString(16)+".."+i.toString(16);return n}function nm(m){return R(m.map(am))}function*am(m){for(const{min:n,max:a}of m.ranges)for(let m=n;m<=a;m++)yield m}function*im(m){for(const n of m)yield*nm(n)}function xm(m,n){const a=m.getOut;return{initial:m.initial,getOut:m=>n(a(m)),isFinal:m.isFinal}}function em(m,n){const a=m.getOut;return{initial:m.initial,getOut:function*(m){for(const i of a(m))yield n(i)},isFinal:m.isFinal}}const tm=Symbol();function rm(m){return m[tm]=!0,m}function sm(m){return function(m){return!0===m[tm]}(m)?m:om(m)}function om(m){const n=new Map,a=m.getOut;return rm({initial:m.initial,getOut:m=>{let i=n.get(m);return void 0===i&&(i=a(m),n.set(m,i)),i},isFinal:m.isFinal})}function lm(m){const{initial:n,getOut:a}=m;return L([n],a)}function cm(m){T(m.initial,m.getOut)}function um(m){const{isFinal:n}=m;for(const a of lm(m))if(n(a))return!0;return!1}function hm(m){const n=[...lm(m=om(xm(m,(m=>[...m]))))],a=n.filter(m.isFinal),i=function(m,n){const a=new Map;for(const n of m)a.set(n,new Set);for(const i of m)for(const m of n(i))a.get(m).add(i);return a}(n,m.getOut),x=new Set(L(a,(m=>i.get(m))));return!function(m){const{initial:n,getOut:a}=m,i=new Set,x=new Set([n]),e=[{element:n,nextIndex:-1}];for(;e.length>0;){const m=e[e.length-1];-1===m.nextIndex&&(x.add(m.element),i.add(m.element),m.nextElements=J(a(m.element)));const n=m.nextElements;if(m.nextIndex++,m.nextIndex>=n.length){x.delete(m.element),e.pop();continue}const t=n[m.nextIndex];if(x.has(t))return!0;i.has(t)||e.push({element:t,nextIndex:-1})}return!1}(function(m,n){const a=m.getOut;return{initial:m.initial,getOut:function*(m){for(const i of a(m))n(i)&&(yield i)},isFinal:m.isFinal}}(m,(m=>x.has(m))))}class fm{constructor(){this.initial=new Map,this.finals=new Set}createNode(){return new Map}linkNodes(m,n,a){const i=m.get(n);void 0===i?m.set(n,a):m.set(n,i.union(a))}}function pm(m,n,a,i){var x;n=sm(n),a=sm(a);const e=null!==(x=null==i?void 0:i.maxNodes)&&void 0!==x?x:1/0,t=dm(),r=dm(),{initial:s,finals:o}=m;n.isFinal(n.initial)&&a.isFinal(a.initial)&&o.add(s);const l=new Map;l.set(s,[n.initial,a.initial]);const c={[`${t(n.initial)};${r(a.initial)}`]:s};let u=0;function h(i,x){const s=t(i)+";"+r(x);let h=c[s];if(void 0===h){if(u>e)throw new C;u++,h=m.createNode(u),c[s]=h,l.set(h,[i,x]),n.isFinal(i)&&a.isFinal(x)&&o.add(h)}return h}const f=function(){const m={},n=new Map;function a(a){let i=n.get(a);if(void 0===i){let x=function(m){let n=65535&m.maximum;return m.ranges.forEach((({min:m,max:a})=>{n=65535&(31*n+m^31*a)})),n}(a);for(;;){const e=m[x];if(void 0===e){m[x]=a,i=n.size;break}if(e.equals(a)){i=n.get(e);break}x=x+1&65535}n.set(a,i)}return i}const i={};return(m,n)=>{const x=a(m),e=a(n);if(x==e)return m;let t;t=x(p(m),m),isFinal:m=>o.has(m)}}function dm(){const m=new Map;return n=>{let a=m.get(n);return void 0===a&&(a=m.size,m.set(n,a)),a}}function gm(m){if(Array.isArray(m))return m.every(gm);switch(m.type){case"Alternation":case"Expression":return gm(m.alternatives);case"Assertion":return!0;case"CharacterClass":return!1;case"Concatenation":return m.elements.every(gm);case"Quantifier":return 0===m.max||gm(m.alternatives);default:P(m)}}function ym(m){if(Array.isArray(m))return m.every(ym);switch(m.type){case"Alternation":case"Expression":return ym(m.alternatives);case"Assertion":return _m(m);case"CharacterClass":return!1;case"Concatenation":return m.elements.every(ym);case"Quantifier":return 0===m.max||ym(m.alternatives);default:P(m)}}function Sm(m){if(Array.isArray(m))return m.some(Sm);switch(m.type){case"Alternation":case"Expression":return Sm(m.alternatives);case"Assertion":return _m(m);case"CharacterClass":return!1;case"Concatenation":return m.elements.every(Sm);case"Quantifier":return 0===m.min||Sm(m.alternatives);default:P(m)}}function _m(m){return m.negate?0===m.alternatives.length:Sm(m.alternatives)}function vm(m,n,a){if(n(m))return!0;if(a&&!a(m))return!1;switch(m.type){case"Alternation":case"Expression":case"Assertion":case"Quantifier":return m.alternatives.some((m=>vm(m,n,a)));case"Concatenation":return m.elements.some((m=>vm(m,n,a)))}return!1}function Nm(m,n){return new Cm([...m,n])}class Cm{constructor(m){if(this.stack=m,"Expression"!==m[0].type)throw new Error("Invalid stack")}get node(){return this.stack[this.stack.length-1]}toParentPath(){return this.stack.pop(),0===this.stack.length?null:this}toChildPath(m){return this.stack.push(m),this}}const Om={min:0,max:0},km={min:1,max:1};function wm(m){if(Array.isArray(m)){let n=1/0,a=0;for(const i of m){const m=wm(i);m&&(n=Math.min(n,m.min),a=Math.max(a,m.max))}return n>a?void 0:{min:n,max:a}}switch(m.type){case"Alternation":case"Expression":return wm(m.alternatives);case"Assertion":return Om;case"CharacterClass":return m.characters.isEmpty?void 0:km;case"Concatenation":{let n=0,a=0;for(const i of m.elements){const m=wm(i);if(!m)return;n+=m.min,a+=m.max}return{min:n,max:a}}case"Quantifier":{if(0===m.max)return Om;const n=wm(m.alternatives);return n?0===n.max?Om:{min:n.min*m.min,max:n.max*m.max}:0===m.min?Om:void 0}default:throw P(m)}}const Jm={min:0,max:0,assertMax:0},bm={min:1,max:1,assertMax:1};function Am(m,n){if(Array.isArray(m)){let a=1/0,i=0,x=0;for(const e of m){const m=Am(e,n);m&&(a=Math.min(a,m.min),i=Math.max(i,m.max),x=Math.max(x,m.assertMax))}return a>i?void 0:{min:a,max:i,assertMax:x}}switch(m.type){case"Alternation":case"Expression":return Am(m.alternatives,n);case"Assertion":return m.kind===n?Am(m.alternatives,n):Jm;case"CharacterClass":return m.characters.isEmpty?void 0:bm;case"Concatenation":{let a=0,i=0,x=0;for(const e of m.elements){const m=Am(e,n);if(!m)return;x=Math.max(x,i+m.assertMax),a+=m.min,i+=m.max}return{min:a,max:i,assertMax:x}}case"Quantifier":{if(0===m.max)return Jm;const a=Am(m.alternatives,n);if(!a)return 0===m.min?Jm:void 0;if(0===a.max)return Jm;const i=a.max*m.max;return{min:a.min*m.min,max:i,assertMax:i+a.assertMax===1/0?1/0:i+a.assertMax-a.max}}default:throw P(m)}}function Em(m){return"ltr"===m||"ahead"===m?"ltr":"rtl"}function Mm(m){return"ltr"===m||"ahead"===m?"rtl":"ltr"}function Lm(m,n,a){if(Array.isArray(m))return Dm(m.map((m=>Lm(m,n,a))),a);switch(m.type){case"Alternation":case"Expression":return Lm(m.alternatives,n,a);case"Assertion":if(Em(m.kind)===n){if(m.negate){if(vm(m,(n=>n!==m&&"Assertion"===n.type)))return x();const t=Lm(m.alternatives,n,a),r=wm(m.alternatives);return t.empty||!r?{char:i.empty(a),empty:!1,exact:!0}:t.exact&&1===r.max?e({char:t.char.negate(),edge:!0,exact:!0}):x()}return e(Gm(Lm(m.alternatives,n,a)))}return x();case"CharacterClass":return{char:m.characters,empty:!1,exact:!0};case"Concatenation":{let i=m.elements;return"rtl"===n&&(i=[...i],i.reverse()),Rm(function*(){for(const m of i)yield Lm(m,n,a)}(),a)}case"Quantifier":{if(0===m.max)return e();const i=Lm(m.alternatives,n,a);return 0===m.min?Dm([e(),i],a):i}default:throw P(m)}function x(){return e({char:i.all(a),edge:!0,exact:!1})}function e(m){return Pm(a,m)}}function Tm(m){return{char:i.all(m),edge:!0,exact:!0}}function Pm(m,n){return{char:i.empty(m),empty:!0,exact:!0,look:null!=n?n:Tm(m)}}class Im{constructor(m){this.char=i.empty(m),this.exact=!0}add(m,n){!this.exact||n||this.char.isSupersetOf(m)?!this.exact&&n&&m.isSupersetOf(this.char)&&(this.exact=!0):this.exact=!1,this.char=this.char.union(m)}}function Dm(m,n){const a=new Im(n),i=[];for(const n of m)a.add(n.char,n.exact),n.empty&&i.push(n.look);if(i.length>0){const m=new Im(n);let x=!1;for(const n of i)m.add(n.char,n.exact),x=x||n.edge;return{char:a.char,exact:a.exact,empty:!0,look:{char:m.char,exact:m.exact,edge:x}}}return{char:a.char,exact:a.exact,empty:!1}}function Rm(m,n){const a=new Im(n);let i=Tm(n);for(const n of m){if(a.add(n.char.intersect(i.char),i.exact&&n.exact),!n.empty)return{char:a.char,exact:a.exact,empty:!1};{const m=i.char.intersect(n.look.char);i={char:m,exact:i.exact&&n.look.exact||m.isEmpty,edge:i.edge&&n.look.edge}}}return{char:a.char,exact:a.exact,empty:!0,look:i}}function Gm(m){if(m.empty){const n=new Im(m.char.maximum);return n.add(m.char,m.exact),n.add(m.look.char,m.look.exact),{char:n.char,exact:n.exact,edge:m.look.edge}}return{char:m.char,exact:m.exact,edge:!1}}function Bm(m,n,a,i,x){function e(m,n,a){var x,e,r,s,o,l,c,u,h,f;const p=n=null!==(e=null===(x=i.enter)||void 0===x?void 0:x.call(i,m,n,a))&&void 0!==e?e:n;if(null===(s=null===(r=i.continueInto)||void 0===r?void 0:r.call(i,m,n,a))||void 0===s||s)switch(m.type){case"Alternation":n=i.join(m.alternatives.map((m=>t(m,i.fork(n,a),a))),a);break;case"Assertion":{const x=Em(m.kind),e=i.join(m.alternatives.map((m=>t(m,i.fork(n,a),x))),x);n=null!==(l=null===(o=i.endPath)||void 0===o?void 0:o.call(i,n,x,"assertion"))&&void 0!==l?l:n,n=null!==(u=null===(c=i.assert)||void 0===c?void 0:c.call(i,n,a,e,x))&&void 0!==u?u:n;break}case"Quantifier":if(0===m.max);else{const x=m.alternatives.map((m=>t(m,i.fork(n,a),a)));0===m.min&&x.push(n),n=i.join(x,a)}}return n=null!==(f=null===(h=i.leave)||void 0===h?void 0:h.call(i,m,n,p,a))&&void 0!==f?f:n}function t(m,n,a){var x,t;let r="ltr"===a?0:m.elements.length-1;const s="ltr"===a?1:-1;let o;for(;o=m.elements[r];r+=s){n=e(o,n,a);if(!(null===(t=null===(x=i.continueAfter)||void 0===x?void 0:x.call(i,o,n,a))||void 0===t||t))break}return n}return"enter"===n&&(a=e(m.node,a,x)),function(m,n,a){var x,t;function r(m){var x,e;const t=m.node;if(!(null===(e=null===(x=i.continueAfter)||void 0===x?void 0:x.call(i,t,n,a))||void 0===e||e))return!1;const s=m.toParentPath(),o=s.node,l=o.elements.indexOf(t)+("ltr"===a?1:-1),c=o.elements[l];if(c)return s.toChildPath(c);{const m=s.toParentPath(),n=m.node;if("Expression"===n.type)return"expression";if("Assertion"===n.type)return"assertion";if("Alternation"===n.type)return r(m);if("Quantifier"===n.type)return n.max<=1?r(m):[n,r(m)];throw P(n)}}for(;;){let s=r(m);for(;Array.isArray(s);){const[m,x]=s;n=i.join([n,e(m,i.fork(n,a),a)],a),s=x}if(!1===s)return n;if("assertion"===s||"expression"===s)return n=null!==(t=null===(x=i.endPath)||void 0===x?void 0:x.call(i,n,a,s))&&void 0!==t?t:n;n=e(s.node,n,a),m=s}}(m,a,x)}function Wm(m,n,a){return Gm(function(m,n,a){return Bm(m,"next",Pm(a),{fork:m=>m,join:m=>Dm(m,a),enter:(m,n,i)=>Rm([n,Lm(m,i,a)],a),continueInto:()=>!1,continueAfter:(m,n)=>n.empty},n)}(m,n,a))}function Fm(m,n){if(Array.isArray(m))return!!Array.isArray(n)&&Qm(m,n);if(Array.isArray(n))return!1;if(m.type!==n.type)return!1;switch(m.type){case"Alternation":case"Expression":{const a=n;return Qm(m.alternatives,a.alternatives)}case"Assertion":{const a=n;return m.kind===a.kind&&m.negate===a.negate&&Qm(m.alternatives,a.alternatives)}case"CharacterClass":{const a=n;return m.characters.equals(a.characters)}case"Concatenation":{const a=n,i=m.elements.length;if(i!==a.elements.length)return!1;for(let n=0;nzm(m)))};case"Assertion":return{type:"Assertion",kind:n.kind,negate:n.negate,source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};case"CharacterClass":return{type:"CharacterClass",source:jm(n.source),characters:n.characters};case"Concatenation":return{type:"Concatenation",source:jm(n.source),elements:n.elements.map((m=>zm(m)))};case"Expression":return{type:"Expression",source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};case"Quantifier":return{type:"Quantifier",lazy:n.lazy,min:n.min,max:n.max,source:jm(n.source),alternatives:n.alternatives.map((m=>zm(m)))};default:P(n)}}(m)}function Um(m,n){return n<0&&(n+=m.length),m[n]}function Km(m,n){return nn!==m&&"Assertion"===n.type))){const a=wm(m.alternatives);if(a&&1===a.max&&s.exact&&n.isSubsetOf(s.char))return r}}}return 2;case"Alternation":return mn(m,n,a,i,x)&&(e=!0),0===m.alternatives.length?0:2;case"CharacterClass":return m.characters.isDisjointWith(n)?0:2;case"Quantifier":if(0===m.max)return 1;if(1===m.max)return mn(m,n,a,i,x)&&(e=!0),0===m.alternatives.length?0===m.min?1:0:2;{const a=Lm(m.alternatives,i,x);return!a.empty&&a.char.isDisjointWith(n)?0===m.min?1:0:2}default:P(m)}}return k(m.alternatives,(m=>{const n="ltr"===i?1:-1;for(let a="ltr"===i?0:-1;Km(m.elements,a);a+=n){const i=Um(m.elements,a),x=t(i);if(1===x)e=!0,m.elements.splice(a,1),a-=n;else{if(0===x)return e=!0,!1;if("Assertion"===i.type);else{if("Alternation"!==i.type&&("Quantifier"!==i.type||1!==i.min||1!==i.max)||1!==i.alternatives.length)return!0;e=!0,m.elements.splice(a,1,...i.alternatives[0].elements),a-=n}}}return!0})),e}function nn(m,n){return"rtl"===m&&n.reverse(),n}function an(m,n,a){"ltr"===m?n.push(a):n.unshift(a)}function xn(m,n,a){"ltr"===m?n.unshift(a):n.push(a)}function en(m,n,a){const i=Em(m.kind);if(mn(m,n.characters,!1,i,a.maxCharacter)&&a.signalMutation(),m.negate){if(1===m.alternatives.length&&1===m.alternatives[0].elements.length){const i=m.alternatives[0].elements[0];if("CharacterClass"===i.type)return n.characters=n.characters.without(i.characters),m.alternatives=[],a.signalMutation(),!0}return!1}if(1!==m.alternatives.length)return!1;{const{elements:x}=m.alternatives[0];if(0===x.length)return!1;const e=qm(i),t=Um(x,e);if("CharacterClass"===t.type){const m=t.characters.intersect(n.characters);if(m.isEmpty)throw new Error("Rejecting branch wasn't removed properly.");return a.signalMutation(),n.characters=m,x.splice(e,1),!0}return!1}}function tn(m){return"CharacterClass"===m.type||"Quantifier"===m.type&&m.min>=1&&Xm(m)}function rn(m,n,a){for(let i=n;Km(m,i);i+=a){const n=Um(m,i);if(tn(n))return n;if(!gm(n))break}}function sn(m){if("CharacterClass"===m.type)return m;{const n=m.alternatives[0].elements[0];return{type:"CharacterClass",characters:n.characters,source:jm(n.source)}}}function on(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let t=x;Km(m,t);t+=e){const x=Um(m,t);if("Assertion"!==x.type||x.kind!==n)continue;const r=rn(m,t+e,e);if(void 0===r)continue;const s=sn(r);if(en(x,s,a)){a.signalMutation(),m.splice(t,1),t-=e;const n=[s];_m(x)||an(i,n,x),"Quantifier"===r.type&&(r.min--,r.max--,an(i,n,r)),m.splice(m.indexOf(r),1,...n)}}}function ln(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);function t(n){for(let a=n;Km(m,a);a+=e){const n=Um(m,a);if(!gm(n)){if("Quantifier"===n.type||"Alternation"===n.type)return n;break}}}for(let r=x;Km(m,r);r+=e){const x=Um(m,r);if("Assertion"!==x.type||x.kind!==n)continue;if(x.negate&&!Xm(x))continue;const s=t(r+e);if(void 0===s)continue;const o=Lm(x.alternatives,i,a.maxCharacter);if(o.empty)continue;const l=x.negate?o.char.negate():o.char,c=x.negate;if("Quantifier"===s.type&&0===s.min){const n=Lm(s.alternatives,i,a.maxCharacter);if(!n.empty&&n.char.isDisjointWith(l)){a.signalMutation(),m.splice(m.indexOf(s),1);continue}}("Alternation"===s.type||"Quantifier"===s.type&&1===s.max)&&mn(s,l,c,i,a.maxCharacter)&&a.signalMutation()}}function cn(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let o=x+e;Km(m,o);o+=e){const x=o-e,l=Um(m,x);if("Assertion"!==l.type||l.kind!==n||!Xm(l))continue;const c=l.alternatives[0].elements[0].characters,u=l.negate?c.negate():c,h=o,f=Um(m,h);if("Quantifier"!==f.type||!(0===f.min&&f.max>0)||!Xm(f))continue;const p=f.alternatives[0].elements[0].characters;a.signalMutation(),f.max-=1,t=m,r=x,s={type:"Alternation",alternatives:[{type:"Concatenation",elements:nn(i,[{type:"CharacterClass",characters:p.intersect(u)},f])},{type:"Concatenation",elements:[l]}]},r<0&&(r+=t.length),t[r]=s,m.splice(h,1)}var t,r,s}function un(m,n,a){var i;if(m.length<2)return;const x=Em(n),e=qm(x),t=Vm(x);for(let s=e+t;Km(m,s);s+=t){const e=Um(m,s-t);if("Alternation"!==e.type)continue;const o=s,l=Um(m,o);let c;if(!tn(l))continue;c=l;const u="CharacterClass"===(r=c).type?r.characters:r.alternatives[0].elements[0].characters,h=new Map;if(k(e.alternatives,(m=>{const i=$m(x),e=Um(m.elements,i);if(e&&"Assertion"===e.type&&e.kind===n&&Xm(e)){const n=e.alternatives[0].elements[0].characters,x=e.negate?n.negate():n;return x.isDisjointWith(u)?(a.signalMutation(),!1):u.isSubsetOf(x)?(a.signalMutation(),m.elements.splice(i,1),!0):(a.signalMutation(),m.elements.splice(i,1),h.set(m,x.intersect(u)),!0)}return!0})),h.size>0){a.signalMutation();for(const m of e.alternatives)an(x,m.elements,{type:"CharacterClass",characters:null!==(i=h.get(m))&&void 0!==i?i:u});"CharacterClass"===c.type?m.splice(o,1):(c.min--,c.max--)}}var r}function hn(m,n,a){if(m.length<2)return;const i=Em(n),x=qm(i),e=Vm(i);for(let t=x+e;Km(m,t);t+=e){const r=t-e,s=Um(m,r);if("Assertion"!==s.type||s.kind!==n||!Xm(s))continue;const o=Um(m,t);if("Alternation"!==o.type)continue;const l=s.alternatives[0].elements[0].characters,c=s.negate?l.negate():l,u=[];let h=!1;if(k(o.alternatives,(m=>{const n=Lm(m,i,a.maxCharacter);if(!n.empty){if(n.char.isDisjointWith(c))return a.signalMutation(),!1;if(n.char.isSubsetOf(c))return!0}return m.elements.length>0&&tn(Um(m.elements,x))&&(h=!0),u.push(m),!0})),u.length>0&&(u.length0)return{char:m.char,constant:a,star:i}}}function dn(m,n,a){const i="ltr"===a?0:m.elements.length-1,x=m.elements[i];if("CharacterClass"===x.type){if(n.star||1!==n.constant)throw Error("Invalid prefix");m.elements.splice(i,1)}else if("Quantifier"===x.type){if(n.constant>x.min||n.star&&x.max!==1/0)throw Error("Invalid prefix");x.min-=n.constant,n.star?x.max=x.min:x.max-=n.constant,0===x.max?m.elements.splice(i,1):1===x.min&&1===x.max&&(m.elements[i]=x.alternatives[0].elements[0])}}function gn(m,n,a){const i=function(m,n,a){if(0===m.length)return;let i=fn(m[0],n,a);for(let x=1;x0||i.star)){let a;!function(m,n,a){for(const i of m)dn(i,n,a)}(m.alternatives,i,n),a=i.star||1!==i.constant?{type:"Quantifier",lazy:!1,min:i.constant,max:i.star?1/0:i.constant,alternatives:[{type:"Concatenation",elements:[{type:"CharacterClass",characters:i.char}]}]}:{type:"CharacterClass",characters:i.char};const x={type:"Alternation",alternatives:m.alternatives},e="ltr"===n?[a,x]:[x,a];return m.alternatives=[{type:"Concatenation",source:jm(m.source),elements:e}],!0}return!1}function yn(m){const{ignoreOrder:n=!1}=null!=m?m:{};function a(m,{signalMutation:a}){if(m.alternatives.length<2)return;const{prefix:i,suffix:x}=function(m){let n=0,a=0;const i=w(m.alternatives,(m=>m.elements.length)).elements;for(let a=0;aFm(x,m.elements[a]))))break;n++}for(let x=0;xFm(n,m.elements[m.elements.length-1-x]))))break;a++}return{prefix:i.slice(0,n),suffix:i.slice(i.length-a,i.length)}}(m);if(i.length>0||x.length>0){a();const n=m.alternatives;for(const m of n)m.elements.splice(0,i.length),m.elements.splice(m.elements.length-x.length,x.length);m.alternatives=[{type:"Concatenation",elements:[...i,{type:"Alternation",alternatives:n,source:jm(m.source)},...x],source:jm(m.source)}]}else{const i=!n;gn(m,"ltr",i)&&a(),gn(m,"rtl",i)&&a()}}return{onAlternation:a,onAssertion:a,onExpression:a,onQuantifier:a}}function Sn(m,{signalMutation:n}){for(let a=0;a!n||"Quantifier"!==n.type||!Hm(n,m)||(n.min++,n.max++,x.signalMutation(),!1))),n)for(let n=1;n{if(i&&"Quantifier"===i.type&&"Quantifier"===m.type){const x=i.min===i.max,e=m.min===m.max;if(!n&&!x&&!e)return!0;if(!a&&!(x||e||i.lazy===m.lazy||!i.lazy&&i.max===1/0||!m.lazy&&m.max===1/0))return!0;if(Fm(i.alternatives,m.alternatives))return i.min+=m.min,i.max+=m.max,t(),!1}return!0}))}}}function kn(m,{signalMutation:n}){if(m.alternatives.length<2)return;let a=!1,i=!0;k(m.alternatives,(m=>{if(ym(m))return n(),a=!0,!1;if(1===m.elements.length){const i=m.elements[0];if("Quantifier"===i.type&&0===i.min&&i.max>0)return n(),a=!0,i.min=1,1===i.max&&1===i.alternatives.length&&(m.elements=i.alternatives[0].elements),!0}return Sm(m)&&(i=!1),!0})),a&&i&&function(m,n){if(0===m.length)return void m.push({type:"Concatenation",elements:[],source:jm(n)});if(1===m.length&&1===m[0].elements.length){const n=m[0].elements[0];if("Quantifier"===n.type&&1===n.min)return void(n.min=0)}const a=[...m];m.length=0,m.push({type:"Concatenation",elements:[{type:"Quantifier",lazy:!1,min:0,max:1,alternatives:a,source:jm(n)}],source:jm(n)})}(m.alternatives,m.source)}function wn(m){return(null==m?void 0:m.ignoreOrder)&&(null==m?void 0:m.ignoreAmbiguity)?{onAlternation:kn,onAssertion:kn,onExpression:kn,onQuantifier:kn}:{}}function Jn(m,n,a){0!==m.max&&0!==n.max&&(0===n.min&&0===m.min&&(a(),n.min=1),n.max>1&&m.max===1/0&&n.min<=1&&(a(),n.max=1))}function bn(m){if(!(null==m?void 0:m.ignoreAmbiguity))return{};const{ignoreOrder:n}=m;return{onQuantifier(m,{signalMutation:a}){if(0!==m.max)if(1===m.alternatives.length){const i=m.alternatives[0];if(1===i.elements.length){const x=i.elements[0];"Quantifier"===x.type&&(n||m.lazy===x.lazy)&&function(m,n,a){if(0===m.max||0===n.max)return;const i=n.min,x=n.max,e=m.min,t=m.max;(x===1/0&&0===e?i<=1:e===t||x*e+1>=i*(e+1))&&(a(),m.min=i*e,m.max=x*t,m.alternatives=n.alternatives)}(m,x,a)}}else if(n)for(const n of m.alternatives)if(1===n.elements.length){const i=n.elements[0];"Quantifier"===i.type&&Jn(m,i,a)}}}}function An(m){const{kind:n}=m.node,a=!0,i=!1;return Bm(m,"next",0,{fork:m=>m,join(m){let n=1/0;for(const x of m){if(x===a)return a;x===i||(n=Math.min(n,x))}return n===1/0?i:n},enter(m,x){var e;if(x===a||x===i)return x;if("CharacterClass"===m.type)return m.characters.isEmpty?i:x+1;if("Assertion"===m.type&&m.kind===n){const i=Am(m.alternatives,n);if((null!==(e=null==i?void 0:i.assertMax)&&void 0!==e?e:0)>x)return a}return x},leave(m,n,x){if("Quantifier"===m.type&&m.min>1){if(n===a||n===i)return n;if(x===a||x===i||x>n)throw Error();return x+(n-x)*m.min}return n},continueAfter:(m,n)=>n!==a&&n!==i,continueInto:(m,n)=>n!==a&&n!==i&&"Assertion"!==m.type},Mm(n))===a}function En(m,n,a,i){let x=!1;for(const e of m)n.push(e),Mn(e,n,a,i)&&(x=!0),n.pop();return x}function Mn({elements:m},n,a,i){if(0===m.length)return!1;let x=!1;const e="behind"===a?1:-1,t="behind"===a?0:-1;for(let r=t;Km(m,r);r+=e){const t=Um(m,r);if("Assertion"===t.type&&t.kind===a){if(i&&An(Nm(n,t)))return!1;x=!0,m.splice(r,1),r-=e}else if(!gm(t))break}if(Km(m,t)){const e=Um(m,t);("Alternation"===e.type||"Quantifier"===e.type&&1===e.max)&&(n.push(e),En(e.alternatives,n,a,i)&&(x=!0),n.pop())}return x}function Ln(m){switch(m.type){case"Alternation":case"Expression":return m.alternatives.every((m=>Ln(m)));case"Assertion":return!1;case"CharacterClass":return m.characters.isEmpty;case"Concatenation":return 1===m.elements.length&&Ln(m.elements[0]);case"Quantifier":return m.min>0&&m.alternatives.every((m=>Ln(m)));default:P(m)}}function Tn(m,{signalMutation:n}){let a=null;for(let i=0;iLn(m)))&&(0===x.min?(m.elements.splice(i,1),n(),i--):a=x):Ln(x)&&(a=x)}a&&m.elements.length>1&&(m.elements=[a],n())}function Pn(m,{signalMutation:n}){for(let a=0;a!m.elements.some((m=>"Assertion"===m.type))||(n.signalMutation(),!1)))}function Wn(m,n){return m.kind!==n.kind?"ahead"===m.kind?1:-1:0}function Fn(m){const n=!(null==m?void 0:m.ignoreOrder),a=!(null==m?void 0:m.ignoreAmbiguity);function i(m,{signalMutation:i}){const{alternatives:x}=m;if(x.length<2)return;let e=void 0,t=!0;k(x,(m=>{if(1===(x=m).elements.length&&"CharacterClass"===x.elements[0].type){const x=m.elements[0];if(void 0===e||!t&&n)return e=x,!0;if(a){const m=e.characters.intersect(x.characters);return!!x.characters.equals(m)||(i(),e.characters=e.characters.union(x.characters),!m.isEmpty&&(x.characters=m,!0))}return i(),e.characters=e.characters.union(x.characters),!1}return t=!1,!0;var x}))}return{onAlternation:i,onAssertion:i,onExpression:i,onQuantifier:i}}var Qn=Object.freeze({__proto__:null,applyAssertions:function(m){return{onConcatenation(m,n){const a=m.elements;hn(a,"ahead",n),hn(a,"behind",n),on(a,"ahead",n),on(a,"behind",n),ln(a,"ahead",n),ln(a,"behind",n),cn(a,"ahead",n),cn(a,"behind",n),un(a,"ahead",n),un(a,"behind",n)}}},factorOut:yn,inline:Nn,mergeWithQuantifier:On,moveUpEmpty:wn,nestedQuantifiers:bn,patternEdgeAssertions:function(m){var n,a;const i=null===(n=null==m?void 0:m.inline)||void 0===n||n,x=null!==(a=null==m?void 0:m.remove)&&void 0!==a&&a;return i||x?{onExpression(m,n){i&&(Zm(m.alternatives,"ahead")||Zm(m.alternatives,"behind"))&&n.signalMutation(),x&&(En(m.alternatives,[m],"ahead",i)||En(m.alternatives,[m],"behind",i))&&n.signalMutation()}}:{}},removeDeadBranches:function(m){return{onConcatenation:Tn,onAlternation:Pn,onAssertion:Pn,onExpression:Pn,onQuantifier:Pn}},removeUnnecessaryAssertions:function(m){return{onConcatenation(m,n){Dn(m,In,n),Gn(m.elements,"ahead",n),Gn(m.elements,"behind",n)},onExpression(m,n){const a=[];function i(m){a.push(m)}function x(){a.pop()}j(m,{onAlternationEnter:i,onAssertionEnter:i,onConcatenationEnter:i,onExpressionEnter:i,onQuantifierEnter:i,onAlternationLeave:x,onAssertionLeave:x,onConcatenationLeave(m){Dn(m,(m=>function(m,n,a){const i=In(n);if(2!==i)return i;const x=n.negate?1:0,e=n.negate?0:1,t=Em(n.kind),r=Wm(Nm(m,n),t,a.maxCharacter);if(r.edge)return 2;if(mn(n,r.char,!1,t,a.maxCharacter)&&(a.signalMutation(),0===n.alternatives.length))return e;const s=Lm(n.alternatives,t,a.maxCharacter);if(s.empty)return 2;if(r.char.isDisjointWith(s.char))return e;if(!vm(n,(m=>m!==n&&"Assertion"===m.type))){const m=wm(n.alternatives);if(m&&1===m.max&&s.exact&&r.char.isSubsetOf(s.char))return x}return 2}(a,m,n)),n),x()},onExpressionLeave:x,onQuantifierLeave:x})}}},replaceAssertions:function(m){var n;return"empty-word"===(null!==(n=null==m?void 0:m.replacement)&&void 0!==n?n:"empty-set")?{onConcatenation(m,{signalMutation:n}){k(m.elements,(m=>"Assertion"!==m.type||(n(),!1)))}}:{onAlternation:Bn,onExpression:Bn,onQuantifier:Bn}},sortAssertions:function(m){return{onConcatenation(m,{signalMutation:n}){let a=0,i=0;function x(){const x=m.elements.slice(a,a+i);(function(m,n){const a=m.length;let i=!1;for(let x=0;x1&&x(),i=0)}i>1&&x()}}},unionCharacters:Fn});const Hn={ignoreAmbiguity:!0,ignoreOrder:!0},jn=U([On(Hn)]),zn=U([Fn(Hn),yn(Hn),wn(Hn),Nn()]),Un=U([bn(Hn)]),Kn=U([Nn(),Fn(Hn),yn(Hn),wn(Hn),bn(Hn),On(Hn)]);class qn{constructor(){this.initial=this.createNode(),this.finals=new Set}createNode(){return{in:new Map,out:new Map}}linkNodes(m,n,a){if(m.out.has(n))throw new Error("The two nodes are already linked");m.out.set(n,a),n.in.set(m,a)}unlinkNodes(m,n){const a=m.out.get(n);return void 0!==a&&(m.out.delete(n),n.in.delete(m)),a}relinkNodes(m,n,a){if(!m.out.has(n))throw new Error("The two nodes are not linked");m.out.set(n,a),n.in.set(m,a)}}class $n{constructor(m){this.max=m,this._counter=0}_incrementCounter(){if(++this._counter>this.max)throw new C(`Too many RE AST nodes. Reached maximum of ${this.max}.`)}concat(m){return this._incrementCounter(),{type:"Concatenation",elements:m}}emptyConcat(){return this._incrementCounter(),{type:"Concatenation",elements:[]}}alter(m){return this._incrementCounter(),{type:"Alternation",alternatives:m}}emptyAlter(){return this._incrementCounter(),{type:"Alternation",alternatives:[]}}expression(m){return this._incrementCounter(),{type:"Expression",alternatives:m}}emptyExpression(){return this._incrementCounter(),{type:"Expression",alternatives:[]}}char(m){return this._incrementCounter(),{type:"CharacterClass",characters:m}}quant(m,n,a){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:n,max:a}}quantStar(m){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:0,max:1/0}}quantPlus(m){return this._incrementCounter(),{type:"Quantifier",alternatives:m,lazy:!1,min:1,max:1/0}}copy(m){switch(m.type){case"Alternation":return this.alter(m.alternatives.map((m=>this.copy(m))));case"Concatenation":return this.concat(m.elements.map((m=>this.copy(m))));case"CharacterClass":return this.char(m.characters);case"Quantifier":return this.quant(m.alternatives.map((m=>this.copy(m))),m.min,m.max);case"Assertion":throw new Error("Assertions should not have been part of the created regex.");default:throw P(m)}}}function Vn(m,n,a){const i=m.initial,x=b(m.finals),e=new Set;M(i,(m=>(m!==i&&m!==x&&e.add(m),m.out.keys())));const t={maxCharacter:a,signalMutation:()=>{}};function r(a,i,x){const e=m.unlinkNodes(a,i);e&&(x=function(m,a){if("CharacterClass"===m.type&&"CharacterClass"===a.type)return m.characters=m.characters.union(a.characters),m;let i;if("Alternation"===m.type){if(0===m.alternatives.length)return a;if("Alternation"===a.type){if(0===a.alternatives.length)return m;m.alternatives.push(...a.alternatives)}else m.alternatives.push(l(a));i=m}else if("Alternation"===a.type){if(0===a.alternatives.length)return m;a.alternatives.push(l(m)),i=a}else i=n.alter([l(m),l(a)]);return zn.onAlternation(i,t),s(i)}(e,x)),m.linkNodes(a,i,x)}function s(m){return"Concatenation"===m.type?1===m.elements.length?s(m.elements[0]):m:"Alternation"===m.type&&1===m.alternatives.length?s(m.alternatives[0]):m}function o(m,a){let i;if("Concatenation"===m.type){if(0===m.elements.length)return a;"Concatenation"===a.type?m.elements.push(...a.elements):m.elements.push(a),i=m}else if("Concatenation"===a.type){if(0===a.elements.length)return m;a.elements.unshift(m),i=a}else i=n.concat([m,a]);return jn.onConcatenation(i,t),s(i)}function l(m){return"Concatenation"===m.type?m:"Alternation"===m.type&&1===m.alternatives.length?m.alternatives[0]:n.concat([m])}function c(m){let a;switch(m.type){case"Quantifier":if(0===m.max)return n.emptyConcat();if(0===m.min||1===m.min)return m.min=0,m.max=1/0,m;a=n.quantStar([l(m)]);break;case"Alternation":a=n.quantStar(m.alternatives);break;case"Concatenation":if(0===m.elements.length)return m;a=n.quantStar([m]);break;default:a=n.quantStar([l(m)])}return Un.onQuantifier(a,t),s(a)}function u(m){let a;switch(m.type){case"Quantifier":if(0===m.max)return n.emptyConcat();if(0===m.min||1===m.min)return m.max=1/0,m;a=n.quantPlus([l(m)]);break;case"Alternation":a=n.quantPlus(m.alternatives);break;case"Concatenation":if(0===m.elements.length)return m;a=n.quantPlus([m]);break;default:a=n.quantPlus([l(m)])}return Un.onQuantifier(a,t),s(a)}function h(n){if(n.out.has(n))if(2===n.in.size&&2===n.out.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.out),[e,t]=b(n.in);Fm(t,a)?m.relinkNodes(e,n,u(a)):Fm(a,x)?m.relinkNodes(n,i,u(a)):m.relinkNodes(n,i,o(c(a),x))}else if(2===n.out.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.out);Fm(a,x)?m.relinkNodes(n,i,u(a)):m.relinkNodes(n,i,o(c(a),x))}else if(2===n.in.size){const a=m.unlinkNodes(n,n),[i,x]=b(n.in);Fm(x,a)?m.relinkNodes(i,n,u(a)):m.relinkNodes(i,n,o(x,c(a)))}}function f(n){if(1===n.in.size&&1===n.out.size){const[a,i]=b(n.in),[x,t]=b(n.out);return m.unlinkNodes(a,n),m.unlinkNodes(n,x),r(a,x,o(i,t)),e.delete(n),[a,x]}return null}function p(m){for(;m.size>0;){const n=new Set;m.forEach((m=>{if(!e.has(m))return;h(m);const a=f(m);a&&a.forEach((m=>n.add(m)))})),m=n}}function d(a){const i=new Set([...a.in.keys(),...a.out.keys()]);i.delete(a);const x=m.unlinkNodes(a,a);if(x){const m=c(x);a.in.forEach(((i,x)=>{a.out.forEach(((a,e)=>{r(x,e,o(n.copy(i),o(n.copy(m),n.copy(a))))}))}))}else a.in.forEach(((m,i)=>{a.out.forEach(((a,x)=>{r(i,x,o(n.copy(m),n.copy(a)))}))}));return a.in.forEach(((n,i)=>{m.unlinkNodes(i,a)})),a.out.forEach(((n,i)=>{m.unlinkNodes(a,i)})),e.delete(a),i}for(p(e);e.size>0;){p(d(w(e,(m=>m.out.has(m)?(m.in.size-1)*(m.out.size-1)*3:m.in.size*m.out.size*2))))}}function Xn(m,n){const a=new $n(n),i=function(m,n){const a=new qn,i=a.createNode();a.linkNodes(a.initial,i,n.emptyConcat());const x=O((()=>a.createNode()));x.cache.set(m.initial,i);let e=void 0;if(M(m.initial,(i=>{m.isFinal(i)&&a.finals.add(x(i));const t=[...m.getOut(i)].sort((([,m],[,n])=>{const a=Number(m.isEmpty)-Number(n.isEmpty);if(0!==a)return a;for(let a=0,i=Math.min(m.ranges.length,n.ranges.length);a{if(void 0===e)e=t.maximum;else if(t.maximum!==e)throw new Error("All character sets have to have to same maximum.");a.linkNodes(x(i),x(m),n.char(t))})),t.map((m=>m[0]))})),0===a.finals.size)return null;const t=a.createNode();a.finals.forEach((m=>{a.linkNodes(m,t,n.emptyConcat())})),a.finals.clear(),a.finals.add(t);const r=new Set;M(t,(m=>(r.add(m),m.in.keys())));const s=new Set;return M(a.initial,(m=>(r.has(m)||s.add(m),m.out.keys()))),s.forEach((m=>{m.out.forEach(((n,i)=>{a.unlinkNodes(m,i)})),m.in.forEach(((n,i)=>{a.unlinkNodes(i,m)}))})),{nodeList:a,maxCharacter:null!=e?e:0}}(m,a);if(null==i)return a.emptyExpression();const{nodeList:x,maxCharacter:e}=i;Vn(x,a,e);const[t]=[...x.finals];if(1!==t.in.size||!t.in.has(x.initial))throw new Error("State elimination failed.");const r=t.in.get(x.initial);switch(r.type){case"Alternation":return a.expression(r.alternatives);case"Concatenation":return a.expression([r]);default:return a.expression([a.concat([r])])}}function Zn(m,n){var a;const i=Xn(m,null!==(a=null==n?void 0:n.maxNodes)&&void 0!==a?a:1e4);return K(Kn,i,{maxPasses:null==n?void 0:n.maxOptimizationPasses})}function Yn(m,n=String){const a=om(xm(m,(m=>[...m].map((([m,a])=>[m,n(a)])).sort((([,m],[,n])=>m.localeCompare(n)))))),i=[...lm(em(a,(([m])=>m)))],x=new Map(i.map(((m,n)=>[m,n]))),e=m=>x.get(m),t=m=>{const n=e(m);return a.isFinal(m)?`[${n}]`:`(${n})`};return i.map((m=>{const n=t(m),i=a.getOut(m).sort((([m],[n])=>e(m)-e(n)));if(0===i.length)return n+" -> none";{const m=" ".repeat(n.length);return i.map((([a,i],x)=>`${x?m:n} -> ${t(a)} : ${i}`)).join("\n")}})).join("\n\n")}function*ma(m){const{initial:n,getOut:a,isFinal:i}=m,x={state:n,parent:null,value:null},e=O((m=>[...a(m)])),t=new Map;let r=[x],s=[];function o(m){const n=[];for(;m.value;)n.push(m.value),m=m.parent;return n.reverse()}function l(m){if(!1!==function(m){const n=t.get(m);if(void 0!==n)return n;const a=new Set;return function m(n){if(a.has(n))return!1;a.add(n);const x=t.get(n);if(void 0!==x)return x;const r=e.cache.get(n);if(void 0===r)return null;let s=!1;for(const[n]of r){if(i(n)){s=!0;break}const a=m(n);if(!0===a){s=!0;break}null===a&&(s=null)}return null!==s&&t.set(n,s),s}(m)}(m.state))for(const[n,a]of e(m.state))s.push({state:n,parent:m,value:a})}for(;0===r.length&&(r=s,s=[]),0!==r.length;){const m=r.pop();i(m.state)&&(yield o(m)),l(m)}}class na{constructor(m,n){this.nodes=m,this.maxCharacter=n}get options(){return{maxCharacter:this.maxCharacter}}get isEmpty(){return 0===this.nodes.finals.size}get isFinite(){return this.isEmpty||hm(this.stateIterator())}stateIterator(){const m=this.nodes.initial,n=this.nodes.finals;return rm({initial:m,getOut:m=>m.out.keys(),isFinal:m=>n.has(m)})}transitionIterator(){const m=this.nodes.initial,n=this.nodes.finals;return rm({initial:m,getOut:m=>m.out,isFinal:m=>n.has(m)})}copy(){return na.fromFA(this)}test(m){let n=[this.nodes.initial];const a=new Set;for(const i of m){const m=[];a.clear();for(const x of n)x.out.forEach(((n,x)=>{n.has(i)&&!a.has(x)&&(m.push(x),a.add(x))}));n=m}return n.some((m=>this.nodes.finals.has(m)))}wordSets(){return ma(this.transitionIterator())}words(){return im(this.wordSets())}toString(){return Yn(this.transitionIterator(),mm)}toRegex(m){return Zn(this.transitionIterator(),m)}isDisjointWith(m,n){ea(this,m);return!um(xm(pm(new fm,this.transitionIterator(),m.transitionIterator(),n),(m=>m.keys())))}intersectionWordSets(m,n){ea(this,m);return ma(pm(new fm,this.transitionIterator(),m.transitionIterator(),n))}intersectionWords(m,n){return im(this.intersectionWordSets(m,n))}_localCopy(m){return m instanceof na?ta(this.nodes,m.nodes):ra(this.nodes,m.transitionIterator())}union(m){m===this||(ea(this,m),oa(this.nodes,this.nodes,this._localCopy(m)))}append(m){this===m?this.quantify(2,2):(ea(this,m),sa(this.nodes,this.nodes,this._localCopy(m)))}prepend(m){this===m?this.quantify(2,2):(ea(this,m),function(m,n,a){if(0===n.finals.size)return;if(0===a.finals.size)return void pa(m,n);const i=[...n.initial.out];for(const n of a.finals)for(const[a,x]of i)m.linkNodes(n,a,x);for(const[a]of i)m.unlinkNodes(n.initial,a);for(const[i,x]of a.initial.out)m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i);n.finals.has(n.initial)&&(n.finals.delete(n.initial),a.finals.forEach((m=>{m===a.initial?n.finals.add(n.initial):n.finals.add(m)})))}(this.nodes,this.nodes,this._localCopy(m)))}quantify(m,n){if(!Number.isInteger(m)||!Number.isInteger(n)&&n!==1/0||m<0||m>n)throw new RangeError("min and max both have to be non-negative integers with min <= max.");fa(this.nodes,this.nodes,m,n)}withoutEmptyWord(){this.nodes.finals.delete(this.nodes.initial)}prefixes(){if(this.nodes.removeUnreachable(),!this.isEmpty)for(const m of this.nodes)this.nodes.finals.add(m)}suffixes(){if(this.nodes.removeUnreachable(),this.isEmpty)return;function m(m){let n=void 0;if(m.in.forEach((m=>{n=void 0===n?m:n.union(m)})),void 0===n)throw new Error("The node doesn't have incoming transitions.");return n}const n=this.nodes.initial;for(const a of this.nodes)if(a!==n){const i=m(a);this.nodes.linkNodes(n,a,i)}this.nodes.finals.add(n)}reverse(){this.nodes.removeUnreachable(),function(m,n){const{initial:a,finals:i}=n;if(0===i.size||1===i.size&&i.has(a))return;const x=[...lm({initial:n.initial,getOut:m=>m.out.keys(),isFinal:m=>n.finals.has(m)})];for(const m of x){const n=m,a=n.out;n.out=n.in,n.in=a}const e=m.createNode();a.in.forEach(((n,i)=>{m.unlinkNodes(i,a),m.linkNodes(i,e,n)}));const t=new Set([e]);i.has(a)&&(i.delete(a),t.add(a));for(const n of i)n.out.forEach(((n,i)=>{m.linkNodes(a,i,n)})),0===n.in.size&&n.out.forEach(((a,i)=>{m.unlinkNodes(n,i)}));i.clear(),t.forEach((m=>i.add(m)))}(this.nodes,this.nodes)}static fromIntersection(m,n,a){var i;ea(m,n);const x=ia(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(i=>{cm(xm(pm(i,m.transitionIterator(),n.transitionIterator(),a),(m=>m.out.keys()))),i.removeUnreachable(),la(i,i)}));return new na(x,m.maxCharacter)}static empty(m){const n=new na.NodeList;return new na(n,m.maxCharacter)}static all(m){const n=new na.NodeList;n.finals.add(n.initial);const a=i.all(m.maxCharacter),x=n.createNode();return n.linkNodes(n.initial,x,a),n.linkNodes(x,x,a),n.finals.add(x),new na(n,m.maxCharacter)}static fromRegex(m,n,a){let i;if(Array.isArray(m))i=xa(m,n,a||{});else{const x=m;i="Concatenation"===x.type?xa([x],n,a||{}):xa(x.alternatives,n,a||{})}return new na(i,n.maxCharacter)}static fromWords(m,n,a){var x;const{maxCharacter:e}=n,t=ia(null!==(x=null==a?void 0:a.maxNodes)&&void 0!==x?x:1e4,(n=>{function a(m,a){if(a>e)throw new Error(`All characters have to be <= options.maxCharacter (${e}).`);if(!Number.isInteger(a))throw new Error(`All characters have to be integers, ${a} is not.`);for(const[n,i]of m.out)if(i.has(a))return n;const x=n.createNode(),t=i.empty(e).union([{min:a,max:a}]);return n.linkNodes(m,x,t),x}for(const i of m){let m=n.initial;for(const n of i)m=a(m,n);n.finals.add(m)}la(n,n),ca(n,n)}));return new na(t,e)}static fromFA(m,n){return na.fromTransitionIterator(m.transitionIterator(),{maxCharacter:m.maxCharacter},n)}static fromTransitionIterator(m,n,a){var i;const{maxCharacter:x}=n,e=ia(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{const a=O((()=>n.createNode()));a.cache.set(m.initial,n.initial),T(m.initial,(i=>{const e=a(i);m.isFinal(i)&&n.finals.add(e);const t=m.getOut(i);return t.forEach(((m,i)=>{if(m.maximum!==x)throw new Error("Some character sets do not conform to the given maximum.");n.linkNodes(e,a(i),m)})),t.keys()}))}));return new na(e,x)}}function aa(m,n,a){const i=m.get(n);void 0===i?m.set(n,a):m.set(n,i.union(a))}function ia(m,n){const a=new na.NodeList;return a._nodeLimit=m,n(a),a._nodeLimit=1/0,a}function xa(m,n,a){var i;const x=a.infinityThreshold||1/0;return ia(null!==(i=a.maxNodes)&&void 0!==i?i:1e4,(i=>{function e(m){if(0===m.length)return{initial:i.createNode(),finals:new Set};const n=t(m[0]);for(let a=1,x=m.length;ai.linkNodes(n,m,a))),t.finals.clear(),t.finals.add(m)}break}case"Quantifier":m.max>0&&sa(i,t,function(m){const n=e(m.alternatives);let a=m.max;return a>=x&&(a=1/0),fa(i,n,m.min,a),n}(m));break;default:throw P(m)}}!function(m,n,a){pa(m,n),a.finals.forEach((m=>{n.finals.add(m===a.initial?n.initial:m)}));for(const[i,x]of[...a.initial.out])m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i)}(i,i,e(m))}))}function ea(m,n){if(m.maxCharacter!==n.maxCharacter)throw new RangeError("Both NFAs have to have the same max character.")}function ta(m,n){return ra(m,{initial:n.initial,getOut:m=>m.out,isFinal:m=>n.finals.has(m)})}function ra(m,n){const a=m.createNode(),i=new Set,x=O((()=>m.createNode()));return x.cache.set(n.initial,a),T(n.initial,(a=>{const e=x(a);n.isFinal(a)&&i.add(e);const t=n.getOut(a);for(const[n,a]of t)m.linkNodes(e,x(n),a);return t.keys()})),{initial:a,finals:i}}function sa(m,n,a){if(0===n.finals.size)return;if(0===a.finals.size)return void pa(m,n);const i=[...a.initial.out];for(const a of n.finals)for(const[n,x]of i)m.linkNodes(a,n,x);for(const[n]of i)m.unlinkNodes(a.initial,n);a.finals.has(a.initial)||n.finals.clear(),a.finals.forEach((m=>{m!==a.initial&&n.finals.add(m)}))}function oa(m,n,a){a.finals.forEach((m=>{n.finals.add(m===a.initial?n.initial:m)}));for(const[i,x]of[...a.initial.out])m.linkNodes(n.initial,i,x),m.unlinkNodes(a.initial,i);la(m,n),function(m,n){const a=[n.initial];for(;a.length>0;){const i=a.pop();if(i.out.size<2)continue;const x=[];for(const m of i.out.keys())1===m.in.size&&x.push(m);for(;x.length>=2;){const e=x.pop(),t=i.out.get(e);for(let r=0,s=x.length;r{m!==n.initial&&0===m.out.size&&a.push(m)})),a.length>1){const i=a.pop();for(let x=0,e=a.length;x0;){const i=a.pop();if(i.in.size<2)continue;const x=[];for(const m of i.in.keys())1===m.out.size&&x.push(m);for(;x.length>=2;){const e=x.pop(),t=i.in.get(e);for(let r=0,s=x.length;r2;e--)sa(m,n,ta(m,x)),n.finals.forEach((m=>i.add(m)));sa(m,n,x),n.finals.forEach((m=>i.add(m))),n.finals.clear(),i.forEach((m=>n.finals.add(m)))}else{const i=ta(m,n);for(let x=a;x>2;x--)sa(m,n,ta(m,i));sa(m,n,i)}}function ha(m,n){for(const a of n.finals)if(a!==n.initial)for(const[i,x]of n.initial.out)m.linkNodes(a,i,x)}function fa(m,n,a,i){if(0===i)return pa(m,n),void n.finals.add(n.initial);if(n.finals.has(n.initial)?a=0:0===a&&n.finals.add(n.initial),1!==i){if(function(m){const n=m.initial.out;for(const a of m.finals)if(a!==m.initial){if(a.out.size!==n.size)return!1;for(const m of a.out.keys())if(!n.has(m))return!1}return!0}(n)){if(a<=1)return;const i=ta(m,n);for(const a of n.finals)for(const n of a.out.keys())m.unlinkNodes(a,n);return ua(m,n,a-1),void sa(m,n,i)}if(a===i)ua(m,n,a);else if(i<1/0){const x=ta(m,n);x.finals.add(x.initial),ua(m,x,i-a),ua(m,n,a),sa(m,n,x)}else if(a>1){const i=ta(m,n);ha(m,i),ua(m,n,a-1),sa(m,n,i)}else ha(m,n)}}function pa(m,n){for(const a of[...n.initial.out.keys()])m.unlinkNodes(n.initial,a);n.finals.clear()}!function(m){class n{constructor(){this._nodeCounter=0,this._nodeLimit=1/0,this.finals=new Set,this.initial=this.createNode()}createNode(){const m=this._nodeCounter++;if(m>this._nodeLimit)throw new C(`The NFA is not allowed to create more than ${this._nodeLimit} nodes.`);return{id:m,list:this,out:new Map,in:new Map}}linkNodes(m,n,a){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");if(a.isEmpty)throw new Error("You can't link nodes with the empty character set.");aa(m.out,n,a),aa(n.in,m,a)}unlinkNodes(m,n){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");if(!m.out.has(n))throw new Error("Can't unlink nodes which aren't linked.");m.out.delete(n),n.in.delete(m)}removeUnreachable(){const m=()=>{this.finals.clear(),this.initial.in.clear(),this.initial.out.clear()};if(0===this.finals.size)return void m();const n=m=>{if(m===this.initial)throw new Error("Cannot remove the initial state.");this.finals.delete(m);for(const n of m.out.keys())this.unlinkNodes(m,n);for(const n of m.in.keys())this.unlinkNodes(n,m)},a=new Set(this.finals);T(this.initial,(m=>(a.add(m),[...m.in.keys(),...m.out.keys()])));const i=new Set;if(T(this.initial,(m=>(i.add(m),m.out.keys()))),a.forEach((m=>{i.has(m)||n(m)})),0===this.finals.size)return void m();const x=new Set;for(const m of this.finals)T(m,(m=>x.has(m)?[]:(x.add(m),m.in.keys())));i.forEach((m=>{x.has(m)||n(m)}))}count(){let m=0;return T(this.initial,(n=>(m++,n.out.keys()))),m}[Symbol.iterator](){return lm({initial:this.initial,getOut:m=>m.out.keys(),isFinal:m=>this.finals.has(m)})[Symbol.iterator]()}}m.NodeList=n}(na||(na={}));class da{constructor(m,n){this.nodes=m,this.maxCharacter=n}get options(){return{maxCharacter:this.maxCharacter}}get isEmpty(){return 0===this.nodes.finals.size}get isFinite(){return hm(this.stateIterator())}stateIterator(){return{initial:(m=this.nodes).initial,getOut:m=>{const n=new Set;return m.out.forEach((m=>n.add(m))),n},isFinal:n=>m.finals.has(n)};var m}transitionIterator(){const m=this.nodes.finals,n=this.maxCharacter;return{initial:this.nodes.initial,getOut:m=>Y(m.out,n),isFinal:n=>m.has(n)}}test(m){let n=this.nodes.initial;for(const a of m){const m=n.out.get(a);if(void 0===m)return!1;n=m}return this.nodes.finals.has(n)}wordSets(){return this.isEmpty?[]:ma(this.transitionIterator())}words(){return im(this.wordSets())}toString(){return Yn(this.transitionIterator(),mm)}toRegex(m){return Zn(this.transitionIterator(),m)}isDisjointWith(m,n){ya(this,m);return!um(xm(pm(new fm,this.transitionIterator(),m.transitionIterator(),n),(m=>m.keys())))}intersectionWordSets(m,n){ya(this,m);return ma(pm(new fm,this.transitionIterator(),m.transitionIterator(),n))}intersectionWords(m,n){return im(this.intersectionWordSets(m,n))}copy(){const m=new da.NodeList;return Sa(this.nodes,m),new da(m,this.maxCharacter)}structurallyEqual(m){if(this===m)return!0;if(this.nodes.finals.size!==m.nodes.finals.size)return!1;const n=new Set,a=this.nodes.finals,i=m.nodes.finals,x=(m,e)=>{if(n.has(m))return!0;if(n.add(m),a.has(m)!==i.has(e))return!1;const t=[...m.out],r=[...e.out];if(t.length!==r.length)return!1;for(let m=0;mnew Map)),i=[],x=new Set;T(m.initial,(m=>{i.push(m);const e=Y(m.out,n);return e.forEach(((n,i)=>{x.add(n),a(i).set(m,n)})),e.keys()}));const e=X(x),t=O((m=>function(m,n){const a=[];for(let i=0,x=n.length;i{const n=[];return a(m).forEach(((m,a)=>{t(m).forEach((m=>{const i=n[m];i?i.push(a):n[m]=[a]}))})),n})),s=new Set([m.finals]);i.length>m.finals.size&&s.add(A(i,m.finals));const o=new Set(s);for(;o.size>0;){const m=b(o);o.delete(m);for(let n=0,a=e.length;n{const i=r(m)[n];i&&i.forEach((m=>a.add(m)))})),0===a.size)continue;const i=[],x=[];for(const m of s){const n=E(a,m);if(0===n.size)continue;const e=A(m,a);0!==e.size&&(i.push(n,e),x.push(m),o.has(m)?(o.delete(m),o.add(n),o.add(e)):n.size<=e.size?o.add(n):o.add(e))}x.forEach((m=>s.delete(m))),i.forEach((m=>s.add(m)))}}return s}(this.nodes,this.maxCharacter),n=new Map;m.forEach((m=>{let a=void 0;if(m.has(this.nodes.initial)&&(a=this.nodes.initial),0===m.size)throw new Error("Empty equivalence class");m.forEach((m=>{if(void 0===a&&(a=m),n.has(m))throw new Error("Duplicate mapping");n.set(m,a)}))}));const a=m=>{const a=n.get(m);if(void 0===a)throw new Error("Unmapped node");return a};T(this.nodes.initial,(m=>(m.out.map(a),m.out.values())));const i=[...this.nodes.finals].map(a);this.nodes.finals.clear(),i.forEach((m=>this.nodes.finals.add(m)))}complement(){const m={min:0,max:this.maxCharacter},n=this.nodes.createNode();this.nodes._uncheckedLinkNodesWithCharRange(n,n,m),T(this.nodes.initial,(a=>{const i=new Set(a.out.values());return a.out.mapRange(m,(m=>null!=m?m:n)),i}));const a=A(lm({initial:(i=this.nodes).initial,getOut:m=>{const n=new Set;return m.out.forEach((m=>n.add(m))),n},isFinal:m=>i.finals.has(m)}),this.nodes.finals);var i;this.nodes.finals.clear(),a.forEach((m=>this.nodes.finals.add(m))),this.nodes.removeUnreachable()}prefixes(){if(this.nodes.removeUnreachable(),!this.isEmpty)for(const m of this.nodes)this.nodes.finals.add(m)}static fromIntersection(m,n,a){var i;ya(m,n);const x=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(i=>{cm(xm(pm(i,m.transitionIterator(),n.transitionIterator(),a),(m=>m.out.values()))),i.removeUnreachable()}));return new da(x,m.maxCharacter)}static empty(m){const{maxCharacter:n}=m,a=new da.NodeList;return new da(a,n)}static all(m){const{maxCharacter:n}=m,a=new da.NodeList;a.finals.add(a.initial);const i={min:0,max:n},x=a.createNode();return a._uncheckedLinkNodesWithCharRange(a.initial,x,i),a._uncheckedLinkNodesWithCharRange(x,x,i),a.finals.add(x),new da(a,n)}static fromWords(m,n,a){var i;const{maxCharacter:x}=n,e=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{for(const a of m){let m=n.initial;for(const i of a){if(i>x)throw new Error(`All characters have to be <= options.maxCharacter (${x}).`);if(!Number.isInteger(i))throw new Error(`All characters have to be integers, ${i} is not.`);let a=m.out.get(i);void 0===a&&(a=n.createNode(),n._uncheckedLinkNodesWithCharacter(m,a,i)),m=a}n.finals.add(m)}}));return new da(e,x)}static fromFA(m,n){var a;if(m instanceof da){const i=ga(null!==(a=null==n?void 0:n.maxNodes)&&void 0!==a?a:1e4,(n=>{Sa(m.nodes,n)}));return new da(i,m.maxCharacter)}return da.fromTransitionIterator(m.transitionIterator(),{maxCharacter:m.maxCharacter},n)}static fromTransitionIterator(m,n,a){var i;const x=ga(null!==(i=null==a?void 0:a.maxNodes)&&void 0!==i?i:1e4,(n=>{m=sm(m);const a=new Set;T(m.initial,(n=>{const i=m.getOut(n);return i.forEach((m=>a.add(m))),i.keys()}));const i=X(a),x=new Map;function e(m){let n=x.get(m);return void 0===n&&(n=x.size,x.set(m,n)),n}const t=new Map,r=new Map;function s(m){let n="";for(let a=0,i=m.length;a{m.has(x)&&l.push(n)}));return 0===l.length?void 0:function(a){a.sort(((m,n)=>e(m)-e(n))),k(a,((m,n)=>m!==n));const i=s(a);let x=t.get(i);return void 0===x&&(x=n.createNode(),a.some((n=>m.isFinal(n)))&&n.finals.add(x),t.set(i,x),r.set(x,a)),x}(l)}t.set(s([m.initial]),n.initial),r.set(n.initial,[m.initial]),m.isFinal(m.initial)&&n.finals.add(n.initial),T(n.initial,(m=>{const a=new Set;for(const x of i){const i=o(m,x);i&&(n._uncheckedLinkNodesWithCharSet(m,i,x),a.add(i))}return a}))}));return new da(x,n.maxCharacter)}}function ga(m,n){const a=new da.NodeList;return a._nodeLimit=m,n(a),a._nodeLimit=1/0,a}function ya(m,n){if(m.maxCharacter!==n.maxCharacter)throw new RangeError("Both NFAs have to have the same max character.")}function Sa(m,n){const a=O((()=>n.createNode()));a.cache.set(m.initial,n.initial),T(m.initial,(m=>{const n=a(m),i=new Set;return m.out.forEach(((m,x)=>{i.add(m),n.out.setEvery(x,a(m))})),i})),m.finals.forEach((m=>n.finals.add(a(m))))}!function(m){class n{constructor(){this._nodeCounter=0,this._nodeLimit=1/0,this.finals=new Set,this.initial=this.createNode()}createNode(){const m=this._nodeCounter++;if(m>this._nodeLimit)throw new C(`The DFA is not allowed to create more than ${this._nodeLimit} nodes.`);return{id:m,list:this,out:new s}}linkNodes(m,n,a){if(m.list!==n.list)throw new Error("You can't link nodes from different node lists.");if(m.list!==this)throw new Error("Use the node list associated with the nodes to link them.");V(a)?this._uncheckedLinkNodesWithCharacter(m,n,a):a instanceof i?this._uncheckedLinkNodesWithCharSet(m,n,a):this._uncheckedLinkNodesWithCharRange(m,n,a)}_uncheckedLinkNodesWithCharacter(m,n,a){m.out.set(a,n)}_uncheckedLinkNodesWithCharRange(m,n,a){m.out.setEvery(a,n)}_uncheckedLinkNodesWithCharSet(m,n,a){for(const i of a.ranges)m.out.setEvery(i,n)}unlinkNodes(m,n){const a=[];for(const[i,x]of m.out)x===n&&a.push(i);for(let n=0,i=a.length;n{if(n.has(i))return;n.add(i);const x=new Set;if(i.out.forEach((m=>x.add(m))),x.forEach((m=>a(m))),this.finals.has(i))m.add(i);else for(const n of x)if(m.has(n)){m.add(i);break}};a(this.initial);for(const n of this.finals)m.has(n)||this.finals.delete(n);!function(n){const a=[];for(const[i,x]of n.out)m.has(x)||a.push(i);a.forEach((m=>n.out.deleteEvery(m)))}(this.initial)}count(){let m=0;return T(this.initial,(n=>(m++,n.out.values()))),m}*[Symbol.iterator](){const m=new Set;let n=[this.initial];for(;n.length>0;){const a=[];for(const i of n)m.has(i)||(m.add(i),yield i,i.out.forEach((m=>a.push(m))));n=a}}}m.NodeList=n}(da||(da={}));const _a={General_Category:"General_Category",gc:"General_Category",Script:"Script",sc:"Script",Script_Extensions:"Script_Extensions",scx:"Script_Extensions"},va={ASCII:"ASCII",ASCII_Hex_Digit:"ASCII_Hex_Digit",AHex:"ASCII_Hex_Digit",Alphabetic:"Alphabetic",Alpha:"Alphabetic",Any:"Any",Assigned:"Assigned",Bidi_Control:"Bidi_Control",Bidi_C:"Bidi_Control",Bidi_Mirrored:"Bidi_Mirrored",Bidi_M:"Bidi_Mirrored",Case_Ignorable:"Case_Ignorable",CI:"Case_Ignorable",Cased:"Cased",Changes_When_Casefolded:"Changes_When_Casefolded",CWCF:"Changes_When_Casefolded",Changes_When_Casemapped:"Changes_When_Casemapped",CWCM:"Changes_When_Casemapped",Changes_When_Lowercased:"Changes_When_Lowercased",CWL:"Changes_When_Lowercased",Changes_When_NFKC_Casefolded:"Changes_When_NFKC_Casefolded",CWKCF:"Changes_When_NFKC_Casefolded",Changes_When_Titlecased:"Changes_When_Titlecased",CWT:"Changes_When_Titlecased",Changes_When_Uppercased:"Changes_When_Uppercased",CWU:"Changes_When_Uppercased",Dash:"Dash",Default_Ignorable_Code_Point:"Default_Ignorable_Code_Point",DI:"Default_Ignorable_Code_Point",Deprecated:"Deprecated",Dep:"Deprecated",Diacritic:"Diacritic",Dia:"Diacritic",Emoji:"Emoji",Emoji_Component:"Emoji_Component",Emoji_Modifier:"Emoji_Modifier",Emoji_Modifier_Base:"Emoji_Modifier_Base",Emoji_Presentation:"Emoji_Presentation",Extended_Pictographic:"Extended_Pictographic",Extender:"Extender",Ext:"Extender",Grapheme_Base:"Grapheme_Base",Gr_Base:"Grapheme_Base",Grapheme_Extend:"Grapheme_Extend",Gr_Ext:"Grapheme_Extend",Hex_Digit:"Hex_Digit",Hex:"Hex_Digit",IDS_Binary_Operator:"IDS_Binary_Operator",IDSB:"IDS_Binary_Operator",IDS_Trinary_Operator:"IDS_Trinary_Operator",IDST:"IDS_Trinary_Operator",ID_Continue:"ID_Continue",IDC:"ID_Continue",ID_Start:"ID_Start",IDS:"ID_Start",Ideographic:"Ideographic",Ideo:"Ideographic",Join_Control:"Join_Control",Join_C:"Join_Control",Logical_Order_Exception:"Logical_Order_Exception",LOE:"Logical_Order_Exception",Lowercase:"Lowercase",Lower:"Lowercase",Math:"Math",Noncharacter_Code_Point:"Noncharacter_Code_Point",NChar:"Noncharacter_Code_Point",Pattern_Syntax:"Pattern_Syntax",Pat_Syn:"Pattern_Syntax",Pattern_White_Space:"Pattern_White_Space",Pat_WS:"Pattern_White_Space",Quotation_Mark:"Quotation_Mark",QMark:"Quotation_Mark",Radical:"Radical",Regional_Indicator:"Regional_Indicator",RI:"Regional_Indicator",Sentence_Terminal:"Sentence_Terminal",STerm:"Sentence_Terminal",Soft_Dotted:"Soft_Dotted",SD:"Soft_Dotted",Terminal_Punctuation:"Terminal_Punctuation",Term:"Terminal_Punctuation",Unified_Ideograph:"Unified_Ideograph",UIdeo:"Unified_Ideograph",Uppercase:"Uppercase",Upper:"Uppercase",Variation_Selector:"Variation_Selector",VS:"Variation_Selector",White_Space:"White_Space",space:"White_Space",XID_Continue:"XID_Continue",XIDC:"XID_Continue",XID_Start:"XID_Start",XIDS:"XID_Start"},Na={Cased_Letter:"Cased_Letter",LC:"Cased_Letter",Close_Punctuation:"Close_Punctuation",Pe:"Close_Punctuation",Connector_Punctuation:"Connector_Punctuation",Pc:"Connector_Punctuation",Control:"Control",Cc:"Control",cntrl:"Control",Currency_Symbol:"Currency_Symbol",Sc:"Currency_Symbol",Dash_Punctuation:"Dash_Punctuation",Pd:"Dash_Punctuation",Decimal_Number:"Decimal_Number",Nd:"Decimal_Number",digit:"Decimal_Number",Enclosing_Mark:"Enclosing_Mark",Me:"Enclosing_Mark",Final_Punctuation:"Final_Punctuation",Pf:"Final_Punctuation",Format:"Format",Cf:"Format",Initial_Punctuation:"Initial_Punctuation",Pi:"Initial_Punctuation",Letter:"Letter",L:"Letter",Letter_Number:"Letter_Number",Nl:"Letter_Number",Line_Separator:"Line_Separator",Zl:"Line_Separator",Lowercase_Letter:"Lowercase_Letter",Ll:"Lowercase_Letter",Mark:"Mark",M:"Mark",Combining_Mark:"Mark",Math_Symbol:"Math_Symbol",Sm:"Math_Symbol",Modifier_Letter:"Modifier_Letter",Lm:"Modifier_Letter",Modifier_Symbol:"Modifier_Symbol",Sk:"Modifier_Symbol",Nonspacing_Mark:"Nonspacing_Mark",Mn:"Nonspacing_Mark",Number:"Number",N:"Number",Open_Punctuation:"Open_Punctuation",Ps:"Open_Punctuation",Other:"Other",C:"Other",Other_Letter:"Other_Letter",Lo:"Other_Letter",Other_Number:"Other_Number",No:"Other_Number",Other_Punctuation:"Other_Punctuation",Po:"Other_Punctuation",Other_Symbol:"Other_Symbol",So:"Other_Symbol",Paragraph_Separator:"Paragraph_Separator",Zp:"Paragraph_Separator",Private_Use:"Private_Use",Co:"Private_Use",Punctuation:"Punctuation",P:"Punctuation",punct:"Punctuation",Separator:"Separator",Z:"Separator",Space_Separator:"Space_Separator",Zs:"Space_Separator",Spacing_Mark:"Spacing_Mark",Mc:"Spacing_Mark",Surrogate:"Surrogate",Cs:"Surrogate",Symbol:"Symbol",S:"Symbol",Titlecase_Letter:"Titlecase_Letter",Lt:"Titlecase_Letter",Unassigned:"Unassigned",Cn:"Unassigned",Uppercase_Letter:"Uppercase_Letter",Lu:"Uppercase_Letter"},Ca={Adlam:"Adlam",Adlm:"Adlam",Ahom:"Ahom",Anatolian_Hieroglyphs:"Anatolian_Hieroglyphs",Hluw:"Anatolian_Hieroglyphs",Arabic:"Arabic",Arab:"Arabic",Armenian:"Armenian",Armn:"Armenian",Avestan:"Avestan",Avst:"Avestan",Balinese:"Balinese",Bali:"Balinese",Bamum:"Bamum",Bamu:"Bamum",Bassa_Vah:"Bassa_Vah",Bass:"Bassa_Vah",Batak:"Batak",Batk:"Batak",Bengali:"Bengali",Beng:"Bengali",Bhaiksuki:"Bhaiksuki",Bhks:"Bhaiksuki",Bopomofo:"Bopomofo",Bopo:"Bopomofo",Brahmi:"Brahmi",Brah:"Brahmi",Braille:"Braille",Brai:"Braille",Buginese:"Buginese",Bugi:"Buginese",Buhid:"Buhid",Buhd:"Buhid",Canadian_Aboriginal:"Canadian_Aboriginal",Cans:"Canadian_Aboriginal",Carian:"Carian",Cari:"Carian",Caucasian_Albanian:"Caucasian_Albanian",Aghb:"Caucasian_Albanian",Chakma:"Chakma",Cakm:"Chakma",Cham:"Cham",Cherokee:"Cherokee",Cher:"Cherokee",Common:"Common",Zyyy:"Common",Coptic:"Coptic",Copt:"Coptic",Qaac:"Coptic",Cuneiform:"Cuneiform",Xsux:"Cuneiform",Cypriot:"Cypriot",Cprt:"Cypriot",Cyrillic:"Cyrillic",Cyrl:"Cyrillic",Deseret:"Deseret",Dsrt:"Deseret",Devanagari:"Devanagari",Deva:"Devanagari",Dogra:"Dogra",Dogr:"Dogra",Duployan:"Duployan",Dupl:"Duployan",Egyptian_Hieroglyphs:"Egyptian_Hieroglyphs",Egyp:"Egyptian_Hieroglyphs",Elbasan:"Elbasan",Elba:"Elbasan",Elymaic:"Elymaic",Elym:"Elymaic",Ethiopic:"Ethiopic",Ethi:"Ethiopic",Georgian:"Georgian",Geor:"Georgian",Glagolitic:"Glagolitic",Glag:"Glagolitic",Gothic:"Gothic",Goth:"Gothic",Grantha:"Grantha",Gran:"Grantha",Greek:"Greek",Grek:"Greek",Gujarati:"Gujarati",Gujr:"Gujarati",Gunjala_Gondi:"Gunjala_Gondi",Gong:"Gunjala_Gondi",Gurmukhi:"Gurmukhi",Guru:"Gurmukhi",Han:"Han",Hani:"Han",Hangul:"Hangul",Hang:"Hangul",Hanifi_Rohingya:"Hanifi_Rohingya",Rohg:"Hanifi_Rohingya",Hanunoo:"Hanunoo",Hano:"Hanunoo",Hatran:"Hatran",Hatr:"Hatran",Hebrew:"Hebrew",Hebr:"Hebrew",Hiragana:"Hiragana",Hira:"Hiragana",Imperial_Aramaic:"Imperial_Aramaic",Armi:"Imperial_Aramaic",Inherited:"Inherited",Zinh:"Inherited",Qaai:"Inherited",Inscriptional_Pahlavi:"Inscriptional_Pahlavi",Phli:"Inscriptional_Pahlavi",Inscriptional_Parthian:"Inscriptional_Parthian",Prti:"Inscriptional_Parthian",Javanese:"Javanese",Java:"Javanese",Kaithi:"Kaithi",Kthi:"Kaithi",Kannada:"Kannada",Knda:"Kannada",Katakana:"Katakana",Kana:"Katakana",Kayah_Li:"Kayah_Li",Kali:"Kayah_Li",Kharoshthi:"Kharoshthi",Khar:"Kharoshthi",Khmer:"Khmer",Khmr:"Khmer",Khojki:"Khojki",Khoj:"Khojki",Khudawadi:"Khudawadi",Sind:"Khudawadi",Lao:"Lao",Laoo:"Lao",Latin:"Latin",Latn:"Latin",Lepcha:"Lepcha",Lepc:"Lepcha",Limbu:"Limbu",Limb:"Limbu",Linear_A:"Linear_A",Lina:"Linear_A",Linear_B:"Linear_B",Linb:"Linear_B",Lisu:"Lisu",Lycian:"Lycian",Lyci:"Lycian",Lydian:"Lydian",Lydi:"Lydian",Mahajani:"Mahajani",Mahj:"Mahajani",Makasar:"Makasar",Maka:"Makasar",Malayalam:"Malayalam",Mlym:"Malayalam",Mandaic:"Mandaic",Mand:"Mandaic",Manichaean:"Manichaean",Mani:"Manichaean",Marchen:"Marchen",Marc:"Marchen",Medefaidrin:"Medefaidrin",Medf:"Medefaidrin",Masaram_Gondi:"Masaram_Gondi",Gonm:"Masaram_Gondi",Meetei_Mayek:"Meetei_Mayek",Mtei:"Meetei_Mayek",Mende_Kikakui:"Mende_Kikakui",Mend:"Mende_Kikakui",Meroitic_Cursive:"Meroitic_Cursive",Merc:"Meroitic_Cursive",Meroitic_Hieroglyphs:"Meroitic_Hieroglyphs",Mero:"Meroitic_Hieroglyphs",Miao:"Miao",Plrd:"Miao",Modi:"Modi",Mongolian:"Mongolian",Mong:"Mongolian",Mro:"Mro",Mroo:"Mro",Multani:"Multani",Mult:"Multani",Myanmar:"Myanmar",Mymr:"Myanmar",Nabataean:"Nabataean",Nbat:"Nabataean",Nandinagari:"Nandinagari",Nand:"Nandinagari",New_Tai_Lue:"New_Tai_Lue",Talu:"New_Tai_Lue",Newa:"Newa",Nko:"Nko",Nkoo:"Nko",Nushu:"Nushu",Nshu:"Nushu",Nyiakeng_Puachue_Hmong:"Nyiakeng_Puachue_Hmong",Hmnp:"Nyiakeng_Puachue_Hmong",Ogham:"Ogham",Ogam:"Ogham",Ol_Chiki:"Ol_Chiki",Olck:"Ol_Chiki",Old_Hungarian:"Old_Hungarian",Hung:"Old_Hungarian",Old_Italic:"Old_Italic",Ital:"Old_Italic",Old_North_Arabian:"Old_North_Arabian",Narb:"Old_North_Arabian",Old_Permic:"Old_Permic",Perm:"Old_Permic",Old_Persian:"Old_Persian",Xpeo:"Old_Persian",Old_Sogdian:"Old_Sogdian",Sogo:"Old_Sogdian",Old_South_Arabian:"Old_South_Arabian",Sarb:"Old_South_Arabian",Old_Turkic:"Old_Turkic",Orkh:"Old_Turkic",Oriya:"Oriya",Orya:"Oriya",Osage:"Osage",Osge:"Osage",Osmanya:"Osmanya",Osma:"Osmanya",Pahawh_Hmong:"Pahawh_Hmong",Hmng:"Pahawh_Hmong",Palmyrene:"Palmyrene",Palm:"Palmyrene",Pau_Cin_Hau:"Pau_Cin_Hau",Pauc:"Pau_Cin_Hau",Phags_Pa:"Phags_Pa",Phag:"Phags_Pa",Phoenician:"Phoenician",Phnx:"Phoenician",Psalter_Pahlavi:"Psalter_Pahlavi",Phlp:"Psalter_Pahlavi",Rejang:"Rejang",Rjng:"Rejang",Runic:"Runic",Runr:"Runic",Samaritan:"Samaritan",Samr:"Samaritan",Saurashtra:"Saurashtra",Saur:"Saurashtra",Sharada:"Sharada",Shrd:"Sharada",Shavian:"Shavian",Shaw:"Shavian",Siddham:"Siddham",Sidd:"Siddham",SignWriting:"SignWriting",Sgnw:"SignWriting",Sinhala:"Sinhala",Sinh:"Sinhala",Sogdian:"Sogdian",Sogd:"Sogdian",Sora_Sompeng:"Sora_Sompeng",Sora:"Sora_Sompeng",Soyombo:"Soyombo",Soyo:"Soyombo",Sundanese:"Sundanese",Sund:"Sundanese",Syloti_Nagri:"Syloti_Nagri",Sylo:"Syloti_Nagri",Syriac:"Syriac",Syrc:"Syriac",Tagalog:"Tagalog",Tglg:"Tagalog",Tagbanwa:"Tagbanwa",Tagb:"Tagbanwa",Tai_Le:"Tai_Le",Tale:"Tai_Le",Tai_Tham:"Tai_Tham",Lana:"Tai_Tham",Tai_Viet:"Tai_Viet",Tavt:"Tai_Viet",Takri:"Takri",Takr:"Takri",Tamil:"Tamil",Taml:"Tamil",Tangut:"Tangut",Tang:"Tangut",Telugu:"Telugu",Telu:"Telugu",Thaana:"Thaana",Thaa:"Thaana",Thai:"Thai",Tibetan:"Tibetan",Tibt:"Tibetan",Tifinagh:"Tifinagh",Tfng:"Tifinagh",Tirhuta:"Tirhuta",Tirh:"Tirhuta",Ugaritic:"Ugaritic",Ugar:"Ugaritic",Vai:"Vai",Vaii:"Vai",Wancho:"Wancho",Wcho:"Wancho",Warang_Citi:"Warang_Citi",Wara:"Warang_Citi",Yi:"Yi",Yiii:"Yi",Zanabazar_Square:"Zanabazar_Square",Zanb:"Zanabazar_Square"},Oa=JSON.parse('[{"min":0,"max":127}]'),ka=JSON.parse('[{"min":48,"max":57},{"min":65,"max":70},{"min":97,"max":102}]'),wa=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":837,"max":837},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1456,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1623},{"min":1625,"max":1631},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1761,"max":1768},{"min":1773,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1855},{"min":1869,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2071},{"min":2074,"max":2092},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2260,"max":2271},{"min":2275,"max":2281},{"min":2288,"max":2363},{"min":2365,"max":2380},{"min":2382,"max":2384},{"min":2389,"max":2403},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2510,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2636},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2672,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2764},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2809,"max":2812},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2902,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3072,"max":3075},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3148},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3276},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3406,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3654},{"min":3661,"max":3661},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3769},{"min":3771,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3789,"max":3789},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3969},{"min":3976,"max":3991},{"min":3993,"max":4028},{"min":4096,"max":4150},{"min":4152,"max":4152},{"min":4155,"max":4159},{"min":4176,"max":4239},{"min":4250,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5907},{"min":5920,"max":5939},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6067},{"min":6070,"max":6088},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6456},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6753,"max":6772},{"min":6823,"max":6823},{"min":6847,"max":6848},{"min":6912,"max":6963},{"min":6965,"max":6979},{"min":6981,"max":6987},{"min":7040,"max":7081},{"min":7084,"max":7087},{"min":7098,"max":7141},{"min":7143,"max":7153},{"min":7168,"max":7222},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7655,"max":7668},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":11823,"max":11823},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42612,"max":42619},{"min":42623,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43013},{"min":43015,"max":43047},{"min":43072,"max":43123},{"min":43136,"max":43203},{"min":43205,"max":43205},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43263},{"min":43274,"max":43306},{"min":43312,"max":43346},{"min":43360,"max":43388},{"min":43392,"max":43442},{"min":43444,"max":43455},{"min":43471,"max":43471},{"min":43488,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43616,"max":43638},{"min":43642,"max":43710},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43765},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69701},{"min":69762,"max":69816},{"min":69840,"max":69864},{"min":69888,"max":69938},{"min":69956,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70016,"max":70079},{"min":70081,"max":70084},{"min":70094,"max":70095},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70196},{"min":70199,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70376},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70476},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70656,"max":70721},{"min":70723,"max":70725},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70849},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71093},{"min":71096,"max":71102},{"min":71128,"max":71133},{"min":71168,"max":71230},{"min":71232,"max":71232},{"min":71236,"max":71236},{"min":71296,"max":71349},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71453,"max":71466},{"min":71680,"max":71736},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":71996},{"min":71999,"max":72002},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72159},{"min":72161,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72242},{"min":72245,"max":72254},{"min":72272,"max":72343},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72766},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73025},{"min":73027,"max":73027},{"min":73030,"max":73031},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73110},{"min":73112,"max":73112},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113822,"max":113822},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125255,"max":125255},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Ja=JSON.parse('[{"min":0,"max":1114111}]'),ba=JSON.parse('[{"min":0,"max":887},{"min":890,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":1536,"max":1564},{"min":1566,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2042},{"min":2045,"max":2093},{"min":2096,"max":2110},{"min":2112,"max":2139},{"min":2142,"max":2142},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":3585,"max":3642},{"min":3647,"max":3675},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4058},{"min":4096,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5120,"max":5788},{"min":5792,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5942},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6144,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6683},{"min":6686,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829},{"min":6832,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7036},{"min":7040,"max":7155},{"min":7164,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7367},{"min":7376,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8192,"max":8292},{"min":8294,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8352,"max":8383},{"min":8400,"max":8432},{"min":8448,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11507},{"min":11513,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11858},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12288,"max":12351},{"min":12353,"max":12438},{"min":12441,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12688,"max":12771},{"min":12784,"max":12830},{"min":12832,"max":40956},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":42192,"max":42539},{"min":42560,"max":42743},{"min":42752,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43052},{"min":43056,"max":43065},{"min":43072,"max":43127},{"min":43136,"max":43205},{"min":43214,"max":43225},{"min":43232,"max":43347},{"min":43359,"max":43388},{"min":43392,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43714},{"min":43739,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43883},{"min":43888,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":55296,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64449},{"min":64467,"max":64831},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65024,"max":65049},{"min":65056,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65279,"max":65279},{"min":65281,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66299},{"min":66304,"max":66339},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66463,"max":66499},{"min":66504,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":66927,"max":66927},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67671,"max":67742},{"min":67751,"max":67759},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67867},{"min":67871,"max":67897},{"min":67903,"max":67903},{"min":67968,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184},{"min":68192,"max":68255},{"min":68288,"max":68326},{"min":68331,"max":68342},{"min":68352,"max":68405},{"min":68409,"max":68437},{"min":68440,"max":68466},{"min":68472,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68903},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69248,"max":69289},{"min":69291,"max":69293},{"min":69296,"max":69297},{"min":69376,"max":69415},{"min":69424,"max":69465},{"min":69552,"max":69579},{"min":69600,"max":69622},{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69825},{"min":69837,"max":69837},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69959},{"min":69968,"max":70006},{"min":70016,"max":70111},{"min":70113,"max":70132},{"min":70144,"max":70161},{"min":70163,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70747},{"min":70749,"max":70753},{"min":70784,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71133},{"min":71168,"max":71236},{"min":71248,"max":71257},{"min":71264,"max":71276},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487},{"min":71680,"max":71739},{"min":71840,"max":71922},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72006},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164},{"min":72192,"max":72263},{"min":72272,"max":72354},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812},{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73464},{"min":73648,"max":73648},{"min":73664,"max":73713},{"min":73727,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":78896,"max":78904},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783},{"min":92880,"max":92909},{"min":92912,"max":92917},{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93850},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113827},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119272},{"min":119296,"max":119365},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215},{"min":123584,"max":123641},{"min":123647,"max":123647},{"min":124928,"max":125124},{"min":125127,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917505,"max":917505},{"min":917536,"max":917631},{"min":917760,"max":917999},{"min":983040,"max":1048573},{"min":1048576,"max":1114109}]'),Aa=JSON.parse('[{"min":1564,"max":1564},{"min":8206,"max":8207},{"min":8234,"max":8238},{"min":8294,"max":8297}]'),Ea=JSON.parse('[{"min":40,"max":41},{"min":60,"max":60},{"min":62,"max":62},{"min":91,"max":91},{"min":93,"max":93},{"min":123,"max":123},{"min":125,"max":125},{"min":171,"max":171},{"min":187,"max":187},{"min":3898,"max":3901},{"min":5787,"max":5788},{"min":8249,"max":8250},{"min":8261,"max":8262},{"min":8317,"max":8318},{"min":8333,"max":8334},{"min":8512,"max":8512},{"min":8705,"max":8708},{"min":8712,"max":8717},{"min":8721,"max":8721},{"min":8725,"max":8726},{"min":8730,"max":8733},{"min":8735,"max":8738},{"min":8740,"max":8740},{"min":8742,"max":8742},{"min":8747,"max":8755},{"min":8761,"max":8761},{"min":8763,"max":8780},{"min":8786,"max":8789},{"min":8799,"max":8800},{"min":8802,"max":8802},{"min":8804,"max":8811},{"min":8814,"max":8844},{"min":8847,"max":8850},{"min":8856,"max":8856},{"min":8866,"max":8867},{"min":8870,"max":8888},{"min":8894,"max":8895},{"min":8905,"max":8909},{"min":8912,"max":8913},{"min":8918,"max":8941},{"min":8944,"max":8959},{"min":8968,"max":8971},{"min":8992,"max":8993},{"min":9001,"max":9002},{"min":10088,"max":10101},{"min":10176,"max":10176},{"min":10179,"max":10182},{"min":10184,"max":10185},{"min":10187,"max":10189},{"min":10195,"max":10198},{"min":10204,"max":10206},{"min":10210,"max":10223},{"min":10627,"max":10648},{"min":10651,"max":10656},{"min":10658,"max":10671},{"min":10680,"max":10680},{"min":10688,"max":10693},{"min":10697,"max":10697},{"min":10702,"max":10706},{"min":10708,"max":10709},{"min":10712,"max":10716},{"min":10721,"max":10721},{"min":10723,"max":10725},{"min":10728,"max":10729},{"min":10740,"max":10745},{"min":10748,"max":10749},{"min":10762,"max":10780},{"min":10782,"max":10785},{"min":10788,"max":10788},{"min":10790,"max":10790},{"min":10793,"max":10793},{"min":10795,"max":10798},{"min":10804,"max":10805},{"min":10812,"max":10814},{"min":10839,"max":10840},{"min":10852,"max":10853},{"min":10858,"max":10861},{"min":10863,"max":10864},{"min":10867,"max":10868},{"min":10873,"max":10915},{"min":10918,"max":10925},{"min":10927,"max":10966},{"min":10972,"max":10972},{"min":10974,"max":10974},{"min":10978,"max":10982},{"min":10988,"max":10990},{"min":10995,"max":10995},{"min":10999,"max":11003},{"min":11005,"max":11005},{"min":11262,"max":11262},{"min":11778,"max":11781},{"min":11785,"max":11786},{"min":11788,"max":11789},{"min":11804,"max":11805},{"min":11808,"max":11817},{"min":12296,"max":12305},{"min":12308,"max":12315},{"min":65113,"max":65118},{"min":65124,"max":65125},{"min":65288,"max":65289},{"min":65308,"max":65308},{"min":65310,"max":65310},{"min":65339,"max":65339},{"min":65341,"max":65341},{"min":65371,"max":65371},{"min":65373,"max":65373},{"min":65375,"max":65376},{"min":65378,"max":65379},{"min":120539,"max":120539},{"min":120597,"max":120597},{"min":120655,"max":120655},{"min":120713,"max":120713},{"min":120771,"max":120771}]'),Ma=JSON.parse('[{"min":39,"max":39},{"min":46,"max":46},{"min":58,"max":58},{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":173,"max":173},{"min":175,"max":175},{"min":180,"max":180},{"min":183,"max":184},{"min":688,"max":879},{"min":884,"max":885},{"min":890,"max":890},{"min":900,"max":901},{"min":903,"max":903},{"min":1155,"max":1161},{"min":1369,"max":1369},{"min":1375,"max":1375},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1524,"max":1524},{"min":1536,"max":1541},{"min":1552,"max":1562},{"min":1564,"max":1564},{"min":1600,"max":1600},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1757},{"min":1759,"max":1768},{"min":1770,"max":1773},{"min":1807,"max":1807},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2070,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2417,"max":2417},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2879,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2902},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3654,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4348,"max":4348},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6103,"max":6103},{"min":6109,"max":6109},{"min":6155,"max":6158},{"min":6211,"max":6211},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6823,"max":6823},{"min":6832,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6964},{"min":6966,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7288,"max":7293},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7468,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7673},{"min":7675,"max":7679},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":8203,"max":8207},{"min":8216,"max":8217},{"min":8228,"max":8228},{"min":8231,"max":8231},{"min":8234,"max":8238},{"min":8288,"max":8292},{"min":8294,"max":8303},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8432},{"min":11388,"max":11389},{"min":11503,"max":11505},{"min":11631,"max":11631},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":11823,"max":11823},{"min":12293,"max":12293},{"min":12330,"max":12333},{"min":12337,"max":12341},{"min":12347,"max":12347},{"min":12441,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42232,"max":42237},{"min":42508,"max":42508},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42623,"max":42623},{"min":42652,"max":42655},{"min":42736,"max":42737},{"min":42752,"max":42785},{"min":42864,"max":42864},{"min":42888,"max":42890},{"min":43000,"max":43001},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43471,"max":43471},{"min":43493,"max":43494},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43632,"max":43632},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43741,"max":43741},{"min":43756,"max":43757},{"min":43763,"max":43764},{"min":43766,"max":43766},{"min":43867,"max":43871},{"min":43881,"max":43883},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":64434,"max":64449},{"min":65024,"max":65039},{"min":65043,"max":65043},{"min":65056,"max":65071},{"min":65106,"max":65106},{"min":65109,"max":65109},{"min":65279,"max":65279},{"min":65287,"max":65287},{"min":65294,"max":65294},{"min":65306,"max":65306},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65507,"max":65507},{"min":65529,"max":65531},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69821,"max":69821},{"min":69837,"max":69837},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70464,"max":70464},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":78896,"max":78904},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":92992,"max":92995},{"min":94031,"max":94031},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":113821,"max":113822},{"min":113824,"max":113827},{"min":119143,"max":119145},{"min":119155,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123197},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125259},{"min":127995,"max":127999},{"min":917505,"max":917505},{"min":917536,"max":917631},{"min":917760,"max":917999}]'),La=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":442},{"min":444,"max":447},{"min":452,"max":659},{"min":661,"max":696},{"min":704,"max":705},{"min":736,"max":740},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1376,"max":1416},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42653},{"min":42786,"max":42887},{"min":42891,"max":42894},{"min":42896,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43000,"max":43002},{"min":43824,"max":43866},{"min":43868,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":125184,"max":125251},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369}]'),Ta=JSON.parse('[{"min":65,"max":90},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":223},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":329,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":383,"max":383},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":453},{"min":455,"max":456},{"min":458,"max":459},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":498},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":837,"max":837},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":962,"max":962},{"min":975,"max":977},{"min":981,"max":982},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1008,"max":1009},{"min":1012,"max":1013},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":1415,"max":1415},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7834,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8064,"max":8111},{"min":8114,"max":8116},{"min":8119,"max":8124},{"min":8130,"max":8132},{"min":8135,"max":8140},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8178,"max":8180},{"min":8183,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":125184,"max":125217}]'),Pa=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":311},{"min":313,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":977},{"min":981,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1415},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":125184,"max":125251}]'),Ia=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":453},{"min":455,"max":456},{"min":458,"max":459},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":498},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8072,"max":8079},{"min":8088,"max":8095},{"min":8104,"max":8111},{"min":8120,"max":8124},{"min":8136,"max":8140},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":125184,"max":125217}]'),Da=JSON.parse('[{"min":65,"max":90},{"min":160,"max":160},{"min":168,"max":168},{"min":170,"max":170},{"min":173,"max":173},{"min":175,"max":175},{"min":178,"max":181},{"min":184,"max":186},{"min":188,"max":190},{"min":192,"max":214},{"min":216,"max":223},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":329,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":383,"max":383},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":688,"max":696},{"min":728,"max":733},{"min":736,"max":740},{"min":832,"max":833},{"min":835,"max":837},{"min":847,"max":847},{"min":880,"max":880},{"min":882,"max":882},{"min":884,"max":884},{"min":886,"max":886},{"min":890,"max":890},{"min":894,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":962,"max":962},{"min":975,"max":982},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1008,"max":1010},{"min":1012,"max":1013},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":1415,"max":1415},{"min":1564,"max":1564},{"min":1653,"max":1656},{"min":2392,"max":2399},{"min":2524,"max":2525},{"min":2527,"max":2527},{"min":2611,"max":2611},{"min":2614,"max":2614},{"min":2649,"max":2651},{"min":2654,"max":2654},{"min":2908,"max":2909},{"min":3635,"max":3635},{"min":3763,"max":3763},{"min":3804,"max":3805},{"min":3852,"max":3852},{"min":3907,"max":3907},{"min":3917,"max":3917},{"min":3922,"max":3922},{"min":3927,"max":3927},{"min":3932,"max":3932},{"min":3945,"max":3945},{"min":3955,"max":3955},{"min":3957,"max":3961},{"min":3969,"max":3969},{"min":3987,"max":3987},{"min":3997,"max":3997},{"min":4002,"max":4002},{"min":4007,"max":4007},{"min":4012,"max":4012},{"min":4025,"max":4025},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4348,"max":4348},{"min":4447,"max":4448},{"min":5112,"max":5117},{"min":6068,"max":6069},{"min":6155,"max":6158},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7468,"max":7470},{"min":7472,"max":7482},{"min":7484,"max":7501},{"min":7503,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7615},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7834,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8049,"max":8049},{"min":8051,"max":8051},{"min":8053,"max":8053},{"min":8055,"max":8055},{"min":8057,"max":8057},{"min":8059,"max":8059},{"min":8061,"max":8061},{"min":8064,"max":8111},{"min":8114,"max":8116},{"min":8119,"max":8132},{"min":8135,"max":8143},{"min":8147,"max":8147},{"min":8152,"max":8155},{"min":8157,"max":8159},{"min":8163,"max":8163},{"min":8168,"max":8175},{"min":8178,"max":8180},{"min":8183,"max":8190},{"min":8192,"max":8207},{"min":8209,"max":8209},{"min":8215,"max":8215},{"min":8228,"max":8230},{"min":8234,"max":8239},{"min":8243,"max":8244},{"min":8246,"max":8247},{"min":8252,"max":8252},{"min":8254,"max":8254},{"min":8263,"max":8265},{"min":8279,"max":8279},{"min":8287,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8360,"max":8360},{"min":8448,"max":8451},{"min":8453,"max":8455},{"min":8457,"max":8467},{"min":8469,"max":8470},{"min":8473,"max":8477},{"min":8480,"max":8482},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8507,"max":8512},{"min":8517,"max":8521},{"min":8528,"max":8575},{"min":8579,"max":8579},{"min":8585,"max":8585},{"min":8748,"max":8749},{"min":8751,"max":8752},{"min":9001,"max":9002},{"min":9312,"max":9450},{"min":10764,"max":10764},{"min":10868,"max":10870},{"min":10972,"max":10972},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11388,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":11631,"max":11631},{"min":11935,"max":11935},{"min":12019,"max":12019},{"min":12032,"max":12245},{"min":12288,"max":12288},{"min":12342,"max":12342},{"min":12344,"max":12346},{"min":12443,"max":12444},{"min":12447,"max":12447},{"min":12543,"max":12543},{"min":12593,"max":12686},{"min":12690,"max":12703},{"min":12800,"max":12830},{"min":12832,"max":12871},{"min":12880,"max":12926},{"min":12928,"max":13311},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42652,"max":42653},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42864,"max":42864},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":43000,"max":43001},{"min":43868,"max":43871},{"min":43881,"max":43881},{"min":43888,"max":43967},{"min":63744,"max":64013},{"min":64016,"max":64016},{"min":64018,"max":64018},{"min":64021,"max":64030},{"min":64032,"max":64032},{"min":64034,"max":64034},{"min":64037,"max":64038},{"min":64042,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65020},{"min":65024,"max":65049},{"min":65072,"max":65092},{"min":65095,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65138},{"min":65140,"max":65140},{"min":65142,"max":65276},{"min":65279,"max":65279},{"min":65281,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65520,"max":65528},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":113824,"max":113827},{"min":119134,"max":119140},{"min":119155,"max":119162},{"min":119227,"max":119232},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":125184,"max":125217},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":127232,"max":127242},{"min":127248,"max":127278},{"min":127280,"max":127311},{"min":127338,"max":127340},{"min":127376,"max":127376},{"min":127488,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":130032,"max":130041},{"min":194560,"max":195101},{"min":917504,"max":921599}]'),Ra=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":311},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":396},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":410},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":441},{"min":445,"max":445},{"min":447,"max":447},{"min":452,"max":452},{"min":454,"max":455},{"min":457,"max":458},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":497},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":563},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1019},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1377,"max":1415},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7835},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11379,"max":11379},{"min":11382,"max":11382},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11491},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42799},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42897,"max":42897},{"min":42899,"max":42900},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":125218,"max":125251}]'),Ga=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":311},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":396},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":410},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":441},{"min":445,"max":445},{"min":447,"max":447},{"min":453,"max":454},{"min":456,"max":457},{"min":459,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":498,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":563},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1019},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1377,"max":1415},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7835},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8119},{"min":8124,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8140,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8188,"max":8188},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11379,"max":11379},{"min":11382,"max":11382},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11491},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42799},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42897,"max":42897},{"min":42899,"max":42900},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":125218,"max":125251}]'),Ba=JSON.parse('[{"min":45,"max":45},{"min":1418,"max":1418},{"min":1470,"max":1470},{"min":5120,"max":5120},{"min":6150,"max":6150},{"min":8208,"max":8213},{"min":8275,"max":8275},{"min":8315,"max":8315},{"min":8331,"max":8331},{"min":8722,"max":8722},{"min":11799,"max":11799},{"min":11802,"max":11802},{"min":11834,"max":11835},{"min":11840,"max":11840},{"min":12316,"max":12316},{"min":12336,"max":12336},{"min":12448,"max":12448},{"min":65073,"max":65074},{"min":65112,"max":65112},{"min":65123,"max":65123},{"min":65293,"max":65293},{"min":69293,"max":69293}]'),Wa=JSON.parse('[{"min":173,"max":173},{"min":847,"max":847},{"min":1564,"max":1564},{"min":4447,"max":4448},{"min":6068,"max":6069},{"min":6155,"max":6158},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8303},{"min":12644,"max":12644},{"min":65024,"max":65039},{"min":65279,"max":65279},{"min":65440,"max":65440},{"min":65520,"max":65528},{"min":113824,"max":113827},{"min":119155,"max":119162},{"min":917504,"max":921599}]'),Fa=JSON.parse('[{"min":329,"max":329},{"min":1651,"max":1651},{"min":3959,"max":3959},{"min":3961,"max":3961},{"min":6051,"max":6052},{"min":8298,"max":8303},{"min":9001,"max":9002},{"min":917505,"max":917505}]'),Qa=JSON.parse('[{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":175,"max":175},{"min":180,"max":180},{"min":183,"max":184},{"min":688,"max":846},{"min":848,"max":855},{"min":861,"max":866},{"min":884,"max":885},{"min":890,"max":890},{"min":900,"max":901},{"min":1155,"max":1159},{"min":1369,"max":1369},{"min":1425,"max":1441},{"min":1443,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1476},{"min":1611,"max":1618},{"min":1623,"max":1624},{"min":1759,"max":1760},{"min":1765,"max":1766},{"min":1770,"max":1772},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2037},{"min":2072,"max":2073},{"min":2275,"max":2302},{"min":2364,"max":2364},{"min":2381,"max":2381},{"min":2385,"max":2388},{"min":2417,"max":2417},{"min":2492,"max":2492},{"min":2509,"max":2509},{"min":2620,"max":2620},{"min":2637,"max":2637},{"min":2748,"max":2748},{"min":2765,"max":2765},{"min":2813,"max":2815},{"min":2876,"max":2876},{"min":2893,"max":2893},{"min":2901,"max":2901},{"min":3021,"max":3021},{"min":3149,"max":3149},{"min":3260,"max":3260},{"min":3277,"max":3277},{"min":3387,"max":3388},{"min":3405,"max":3405},{"min":3530,"max":3530},{"min":3655,"max":3660},{"min":3662,"max":3662},{"min":3770,"max":3770},{"min":3784,"max":3788},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3903},{"min":3970,"max":3972},{"min":3974,"max":3975},{"min":4038,"max":4038},{"min":4151,"max":4151},{"min":4153,"max":4154},{"min":4195,"max":4196},{"min":4201,"max":4205},{"min":4231,"max":4237},{"min":4239,"max":4239},{"min":4250,"max":4251},{"min":4957,"max":4959},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6457,"max":6459},{"min":6773,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6845},{"min":6964,"max":6964},{"min":6980,"max":6980},{"min":7019,"max":7027},{"min":7082,"max":7083},{"min":7222,"max":7223},{"min":7288,"max":7293},{"min":7376,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7415,"max":7417},{"min":7468,"max":7530},{"min":7620,"max":7631},{"min":7669,"max":7673},{"min":7677,"max":7679},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":11503,"max":11505},{"min":11823,"max":11823},{"min":12330,"max":12335},{"min":12441,"max":12444},{"min":12540,"max":12540},{"min":42607,"max":42607},{"min":42620,"max":42621},{"min":42623,"max":42623},{"min":42652,"max":42653},{"min":42736,"max":42737},{"min":42752,"max":42785},{"min":42888,"max":42890},{"min":43000,"max":43001},{"min":43204,"max":43204},{"min":43232,"max":43249},{"min":43307,"max":43310},{"min":43347,"max":43347},{"min":43443,"max":43443},{"min":43456,"max":43456},{"min":43493,"max":43493},{"min":43643,"max":43645},{"min":43711,"max":43714},{"min":43766,"max":43766},{"min":43867,"max":43871},{"min":43881,"max":43883},{"min":44012,"max":44013},{"min":64286,"max":64286},{"min":65056,"max":65071},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65507,"max":65507},{"min":66272,"max":66272},{"min":68325,"max":68326},{"min":68898,"max":68903},{"min":69446,"max":69456},{"min":69817,"max":69818},{"min":69939,"max":69940},{"min":70003,"max":70003},{"min":70080,"max":70080},{"min":70090,"max":70092},{"min":70197,"max":70198},{"min":70377,"max":70378},{"min":70460,"max":70460},{"min":70477,"max":70477},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70722,"max":70722},{"min":70726,"max":70726},{"min":70850,"max":70851},{"min":71103,"max":71104},{"min":71231,"max":71231},{"min":71350,"max":71351},{"min":71467,"max":71467},{"min":71737,"max":71738},{"min":71997,"max":71998},{"min":72003,"max":72003},{"min":72160,"max":72160},{"min":72244,"max":72244},{"min":72263,"max":72263},{"min":72345,"max":72345},{"min":72767,"max":72767},{"min":73026,"max":73026},{"min":73028,"max":73029},{"min":73111,"max":73111},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94095,"max":94111},{"min":94192,"max":94193},{"min":119143,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125254},{"min":125256,"max":125258}]'),Ha=JSON.parse('[{"min":35,"max":35},{"min":42,"max":42},{"min":48,"max":57},{"min":169,"max":169},{"min":174,"max":174},{"min":8252,"max":8252},{"min":8265,"max":8265},{"min":8482,"max":8482},{"min":8505,"max":8505},{"min":8596,"max":8601},{"min":8617,"max":8618},{"min":8986,"max":8987},{"min":9000,"max":9000},{"min":9167,"max":9167},{"min":9193,"max":9203},{"min":9208,"max":9210},{"min":9410,"max":9410},{"min":9642,"max":9643},{"min":9654,"max":9654},{"min":9664,"max":9664},{"min":9723,"max":9726},{"min":9728,"max":9732},{"min":9742,"max":9742},{"min":9745,"max":9745},{"min":9748,"max":9749},{"min":9752,"max":9752},{"min":9757,"max":9757},{"min":9760,"max":9760},{"min":9762,"max":9763},{"min":9766,"max":9766},{"min":9770,"max":9770},{"min":9774,"max":9775},{"min":9784,"max":9786},{"min":9792,"max":9792},{"min":9794,"max":9794},{"min":9800,"max":9811},{"min":9823,"max":9824},{"min":9827,"max":9827},{"min":9829,"max":9830},{"min":9832,"max":9832},{"min":9851,"max":9851},{"min":9854,"max":9855},{"min":9874,"max":9879},{"min":9881,"max":9881},{"min":9883,"max":9884},{"min":9888,"max":9889},{"min":9895,"max":9895},{"min":9898,"max":9899},{"min":9904,"max":9905},{"min":9917,"max":9918},{"min":9924,"max":9925},{"min":9928,"max":9928},{"min":9934,"max":9935},{"min":9937,"max":9937},{"min":9939,"max":9940},{"min":9961,"max":9962},{"min":9968,"max":9973},{"min":9975,"max":9978},{"min":9981,"max":9981},{"min":9986,"max":9986},{"min":9989,"max":9989},{"min":9992,"max":9997},{"min":9999,"max":9999},{"min":10002,"max":10002},{"min":10004,"max":10004},{"min":10006,"max":10006},{"min":10013,"max":10013},{"min":10017,"max":10017},{"min":10024,"max":10024},{"min":10035,"max":10036},{"min":10052,"max":10052},{"min":10055,"max":10055},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10083,"max":10084},{"min":10133,"max":10135},{"min":10145,"max":10145},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":10548,"max":10549},{"min":11013,"max":11015},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12951,"max":12951},{"min":12953,"max":12953},{"min":126980,"max":126980},{"min":127183,"max":127183},{"min":127344,"max":127345},{"min":127358,"max":127359},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127546},{"min":127568,"max":127569},{"min":127744,"max":127777},{"min":127780,"max":127891},{"min":127894,"max":127895},{"min":127897,"max":127899},{"min":127902,"max":127984},{"min":127987,"max":127989},{"min":127991,"max":128253},{"min":128255,"max":128317},{"min":128329,"max":128334},{"min":128336,"max":128359},{"min":128367,"max":128368},{"min":128371,"max":128378},{"min":128391,"max":128391},{"min":128394,"max":128397},{"min":128400,"max":128400},{"min":128405,"max":128406},{"min":128420,"max":128421},{"min":128424,"max":128424},{"min":128433,"max":128434},{"min":128444,"max":128444},{"min":128450,"max":128452},{"min":128465,"max":128467},{"min":128476,"max":128478},{"min":128481,"max":128481},{"min":128483,"max":128483},{"min":128488,"max":128488},{"min":128495,"max":128495},{"min":128499,"max":128499},{"min":128506,"max":128591},{"min":128640,"max":128709},{"min":128715,"max":128722},{"min":128725,"max":128727},{"min":128736,"max":128741},{"min":128745,"max":128745},{"min":128747,"max":128748},{"min":128752,"max":128752},{"min":128755,"max":128764},{"min":128992,"max":129003},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129535},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750}]'),ja=JSON.parse('[{"min":35,"max":35},{"min":42,"max":42},{"min":48,"max":57},{"min":8205,"max":8205},{"min":8419,"max":8419},{"min":65039,"max":65039},{"min":127462,"max":127487},{"min":127995,"max":127999},{"min":129456,"max":129459},{"min":917536,"max":917631}]'),za=JSON.parse('[{"min":127995,"max":127999}]'),Ua=JSON.parse('[{"min":9757,"max":9757},{"min":9977,"max":9977},{"min":9994,"max":9997},{"min":127877,"max":127877},{"min":127938,"max":127940},{"min":127943,"max":127943},{"min":127946,"max":127948},{"min":128066,"max":128067},{"min":128070,"max":128080},{"min":128102,"max":128120},{"min":128124,"max":128124},{"min":128129,"max":128131},{"min":128133,"max":128135},{"min":128143,"max":128143},{"min":128145,"max":128145},{"min":128170,"max":128170},{"min":128372,"max":128373},{"min":128378,"max":128378},{"min":128400,"max":128400},{"min":128405,"max":128406},{"min":128581,"max":128583},{"min":128587,"max":128591},{"min":128675,"max":128675},{"min":128692,"max":128694},{"min":128704,"max":128704},{"min":128716,"max":128716},{"min":129292,"max":129292},{"min":129295,"max":129295},{"min":129304,"max":129311},{"min":129318,"max":129318},{"min":129328,"max":129337},{"min":129340,"max":129342},{"min":129399,"max":129399},{"min":129461,"max":129462},{"min":129464,"max":129465},{"min":129467,"max":129467},{"min":129485,"max":129487},{"min":129489,"max":129501}]'),Ka=JSON.parse('[{"min":8986,"max":8987},{"min":9193,"max":9196},{"min":9200,"max":9200},{"min":9203,"max":9203},{"min":9725,"max":9726},{"min":9748,"max":9749},{"min":9800,"max":9811},{"min":9855,"max":9855},{"min":9875,"max":9875},{"min":9889,"max":9889},{"min":9898,"max":9899},{"min":9917,"max":9918},{"min":9924,"max":9925},{"min":9934,"max":9934},{"min":9940,"max":9940},{"min":9962,"max":9962},{"min":9970,"max":9971},{"min":9973,"max":9973},{"min":9978,"max":9978},{"min":9981,"max":9981},{"min":9989,"max":9989},{"min":9994,"max":9995},{"min":10024,"max":10024},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10133,"max":10135},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":126980,"max":126980},{"min":127183,"max":127183},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127462,"max":127487},{"min":127489,"max":127489},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127542},{"min":127544,"max":127546},{"min":127568,"max":127569},{"min":127744,"max":127776},{"min":127789,"max":127797},{"min":127799,"max":127868},{"min":127870,"max":127891},{"min":127904,"max":127946},{"min":127951,"max":127955},{"min":127968,"max":127984},{"min":127988,"max":127988},{"min":127992,"max":128062},{"min":128064,"max":128064},{"min":128066,"max":128252},{"min":128255,"max":128317},{"min":128331,"max":128334},{"min":128336,"max":128359},{"min":128378,"max":128378},{"min":128405,"max":128406},{"min":128420,"max":128420},{"min":128507,"max":128591},{"min":128640,"max":128709},{"min":128716,"max":128716},{"min":128720,"max":128722},{"min":128725,"max":128727},{"min":128747,"max":128748},{"min":128756,"max":128764},{"min":128992,"max":129003},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129535},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750}]'),qa=JSON.parse('[{"min":169,"max":169},{"min":174,"max":174},{"min":8252,"max":8252},{"min":8265,"max":8265},{"min":8482,"max":8482},{"min":8505,"max":8505},{"min":8596,"max":8601},{"min":8617,"max":8618},{"min":8986,"max":8987},{"min":9000,"max":9000},{"min":9096,"max":9096},{"min":9167,"max":9167},{"min":9193,"max":9203},{"min":9208,"max":9210},{"min":9410,"max":9410},{"min":9642,"max":9643},{"min":9654,"max":9654},{"min":9664,"max":9664},{"min":9723,"max":9726},{"min":9728,"max":9733},{"min":9735,"max":9746},{"min":9748,"max":9861},{"min":9872,"max":9989},{"min":9992,"max":10002},{"min":10004,"max":10004},{"min":10006,"max":10006},{"min":10013,"max":10013},{"min":10017,"max":10017},{"min":10024,"max":10024},{"min":10035,"max":10036},{"min":10052,"max":10052},{"min":10055,"max":10055},{"min":10060,"max":10060},{"min":10062,"max":10062},{"min":10067,"max":10069},{"min":10071,"max":10071},{"min":10083,"max":10087},{"min":10133,"max":10135},{"min":10145,"max":10145},{"min":10160,"max":10160},{"min":10175,"max":10175},{"min":10548,"max":10549},{"min":11013,"max":11015},{"min":11035,"max":11036},{"min":11088,"max":11088},{"min":11093,"max":11093},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12951,"max":12951},{"min":12953,"max":12953},{"min":126976,"max":127231},{"min":127245,"max":127247},{"min":127279,"max":127279},{"min":127340,"max":127345},{"min":127358,"max":127359},{"min":127374,"max":127374},{"min":127377,"max":127386},{"min":127405,"max":127461},{"min":127489,"max":127503},{"min":127514,"max":127514},{"min":127535,"max":127535},{"min":127538,"max":127546},{"min":127548,"max":127551},{"min":127561,"max":127994},{"min":128000,"max":128317},{"min":128326,"max":128591},{"min":128640,"max":128767},{"min":128884,"max":128895},{"min":128981,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129279},{"min":129292,"max":129338},{"min":129340,"max":129349},{"min":129351,"max":129791},{"min":130048,"max":131069}]'),$a=JSON.parse('[{"min":183,"max":183},{"min":720,"max":721},{"min":1600,"max":1600},{"min":2042,"max":2042},{"min":2901,"max":2901},{"min":3654,"max":3654},{"min":3782,"max":3782},{"min":6154,"max":6154},{"min":6211,"max":6211},{"min":6823,"max":6823},{"min":7222,"max":7222},{"min":7291,"max":7291},{"min":12293,"max":12293},{"min":12337,"max":12341},{"min":12445,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42508,"max":42508},{"min":43471,"max":43471},{"min":43494,"max":43494},{"min":43632,"max":43632},{"min":43741,"max":43741},{"min":43763,"max":43764},{"min":65392,"max":65392},{"min":70493,"max":70493},{"min":71110,"max":71112},{"min":72344,"max":72344},{"min":92994,"max":92995},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":123196,"max":123197},{"min":125252,"max":125254}]'),Va=JSON.parse('[{"min":32,"max":126},{"min":160,"max":172},{"min":174,"max":767},{"min":880,"max":887},{"min":890,"max":895},{"min":900,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1154},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":1470,"max":1470},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":1542,"max":1551},{"min":1563,"max":1563},{"min":1566,"max":1610},{"min":1632,"max":1647},{"min":1649,"max":1749},{"min":1758,"max":1758},{"min":1765,"max":1766},{"min":1769,"max":1769},{"min":1774,"max":1805},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1984,"max":2026},{"min":2036,"max":2042},{"min":2046,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2096,"max":2110},{"min":2112,"max":2136},{"min":2142,"max":2142},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2307,"max":2361},{"min":2363,"max":2363},{"min":2365,"max":2368},{"min":2377,"max":2380},{"min":2382,"max":2384},{"min":2392,"max":2401},{"min":2404,"max":2432},{"min":2434,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2495,"max":2496},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2534,"max":2557},{"min":2563,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2622,"max":2624},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2671},{"min":2674,"max":2676},{"min":2678,"max":2678},{"min":2691,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2752},{"min":2761,"max":2761},{"min":2763,"max":2764},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2790,"max":2801},{"min":2809,"max":2809},{"min":2818,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2880,"max":2880},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2918,"max":2935},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3007,"max":3007},{"min":3009,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3024,"max":3024},{"min":3046,"max":3066},{"min":3073,"max":3075},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3137,"max":3140},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3174,"max":3183},{"min":3191,"max":3200},{"min":3202,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3262},{"min":3264,"max":3265},{"min":3267,"max":3268},{"min":3271,"max":3272},{"min":3274,"max":3275},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3330,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3391,"max":3392},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3406,"max":3407},{"min":3412,"max":3414},{"min":3416,"max":3425},{"min":3430,"max":3455},{"min":3458,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3536,"max":3537},{"min":3544,"max":3550},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3647,"max":3654},{"min":3663,"max":3675},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3863},{"min":3866,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":3898,"max":3911},{"min":3913,"max":3948},{"min":3967,"max":3967},{"min":3973,"max":3973},{"min":3976,"max":3980},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4058},{"min":4096,"max":4140},{"min":4145,"max":4145},{"min":4152,"max":4152},{"min":4155,"max":4156},{"min":4159,"max":4183},{"min":4186,"max":4189},{"min":4193,"max":4208},{"min":4213,"max":4225},{"min":4227,"max":4228},{"min":4231,"max":4236},{"min":4238,"max":4252},{"min":4254,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4960,"max":4988},{"min":4992,"max":5017},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5120,"max":5788},{"min":5792,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5941,"max":5942},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6070,"max":6070},{"min":6078,"max":6085},{"min":6087,"max":6088},{"min":6100,"max":6108},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6144,"max":6154},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6435,"max":6438},{"min":6441,"max":6443},{"min":6448,"max":6449},{"min":6451,"max":6456},{"min":6464,"max":6464},{"min":6468,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6678},{"min":6681,"max":6682},{"min":6686,"max":6741},{"min":6743,"max":6743},{"min":6753,"max":6753},{"min":6755,"max":6756},{"min":6765,"max":6770},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829},{"min":6916,"max":6963},{"min":6971,"max":6971},{"min":6973,"max":6977},{"min":6979,"max":6987},{"min":6992,"max":7018},{"min":7028,"max":7036},{"min":7042,"max":7073},{"min":7078,"max":7079},{"min":7082,"max":7082},{"min":7086,"max":7141},{"min":7143,"max":7143},{"min":7146,"max":7148},{"min":7150,"max":7150},{"min":7154,"max":7155},{"min":7164,"max":7211},{"min":7220,"max":7221},{"min":7227,"max":7241},{"min":7245,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7367},{"min":7379,"max":7379},{"min":7393,"max":7393},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7415},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8192,"max":8202},{"min":8208,"max":8231},{"min":8239,"max":8287},{"min":8304,"max":8305},{"min":8308,"max":8334},{"min":8336,"max":8348},{"min":8352,"max":8383},{"min":8448,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11502},{"min":11506,"max":11507},{"min":11513,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11776,"max":11858},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12288,"max":12329},{"min":12336,"max":12351},{"min":12353,"max":12438},{"min":12443,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12688,"max":12771},{"min":12784,"max":12830},{"min":12832,"max":40956},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":42192,"max":42539},{"min":42560,"max":42606},{"min":42611,"max":42611},{"min":42622,"max":42653},{"min":42656,"max":42735},{"min":42738,"max":42743},{"min":42752,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43044},{"min":43047,"max":43051},{"min":43056,"max":43065},{"min":43072,"max":43127},{"min":43136,"max":43203},{"min":43214,"max":43225},{"min":43250,"max":43262},{"min":43264,"max":43301},{"min":43310,"max":43334},{"min":43346,"max":43347},{"min":43359,"max":43388},{"min":43395,"max":43442},{"min":43444,"max":43445},{"min":43450,"max":43451},{"min":43454,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43492},{"min":43494,"max":43518},{"min":43520,"max":43560},{"min":43567,"max":43568},{"min":43571,"max":43572},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43597,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43643},{"min":43645,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43755},{"min":43758,"max":43765},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43883},{"min":43888,"max":44004},{"min":44006,"max":44007},{"min":44009,"max":44012},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64449},{"min":64467,"max":64831},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65281,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65532,"max":65533},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66273,"max":66299},{"min":66304,"max":66339},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66463,"max":66499},{"min":66504,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":66927,"max":66927},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67671,"max":67742},{"min":67751,"max":67759},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67867},{"min":67871,"max":67897},{"min":67903,"max":67903},{"min":67968,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68160,"max":68168},{"min":68176,"max":68184},{"min":68192,"max":68255},{"min":68288,"max":68324},{"min":68331,"max":68342},{"min":68352,"max":68405},{"min":68409,"max":68437},{"min":68440,"max":68466},{"min":68472,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68899},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69248,"max":69289},{"min":69293,"max":69293},{"min":69296,"max":69297},{"min":69376,"max":69415},{"min":69424,"max":69445},{"min":69457,"max":69465},{"min":69552,"max":69579},{"min":69600,"max":69622},{"min":69632,"max":69632},{"min":69634,"max":69687},{"min":69703,"max":69709},{"min":69714,"max":69743},{"min":69762,"max":69810},{"min":69815,"max":69816},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69891,"max":69926},{"min":69932,"max":69932},{"min":69942,"max":69959},{"min":69968,"max":70002},{"min":70004,"max":70006},{"min":70018,"max":70069},{"min":70079,"max":70088},{"min":70093,"max":70094},{"min":70096,"max":70111},{"min":70113,"max":70132},{"min":70144,"max":70161},{"min":70163,"max":70190},{"min":70194,"max":70195},{"min":70197,"max":70197},{"min":70200,"max":70205},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313},{"min":70320,"max":70366},{"min":70368,"max":70370},{"min":70384,"max":70393},{"min":70402,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70463,"max":70463},{"min":70465,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70493,"max":70499},{"min":70656,"max":70711},{"min":70720,"max":70721},{"min":70725,"max":70725},{"min":70727,"max":70747},{"min":70749,"max":70749},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70833,"max":70834},{"min":70841,"max":70841},{"min":70843,"max":70844},{"min":70846,"max":70846},{"min":70849,"max":70849},{"min":70852,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71086},{"min":71088,"max":71089},{"min":71096,"max":71099},{"min":71102,"max":71102},{"min":71105,"max":71131},{"min":71168,"max":71218},{"min":71227,"max":71228},{"min":71230,"max":71230},{"min":71233,"max":71236},{"min":71248,"max":71257},{"min":71264,"max":71276},{"min":71296,"max":71338},{"min":71340,"max":71340},{"min":71342,"max":71343},{"min":71350,"max":71350},{"min":71352,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71456,"max":71457},{"min":71462,"max":71462},{"min":71472,"max":71487},{"min":71680,"max":71726},{"min":71736,"max":71736},{"min":71739,"max":71739},{"min":71840,"max":71922},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71985,"max":71989},{"min":71991,"max":71992},{"min":71997,"max":71997},{"min":71999,"max":72002},{"min":72004,"max":72006},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72147},{"min":72156,"max":72159},{"min":72161,"max":72164},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72249,"max":72250},{"min":72255,"max":72262},{"min":72272,"max":72272},{"min":72279,"max":72280},{"min":72284,"max":72329},{"min":72343,"max":72343},{"min":72346,"max":72354},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72751},{"min":72766,"max":72766},{"min":72768,"max":72773},{"min":72784,"max":72812},{"min":72816,"max":72847},{"min":72873,"max":72873},{"min":72881,"max":72881},{"min":72884,"max":72884},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73107,"max":73108},{"min":73110,"max":73110},{"min":73112,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73458},{"min":73461,"max":73464},{"min":73648,"max":73648},{"min":73664,"max":73713},{"min":73727,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783},{"min":92880,"max":92909},{"min":92917,"max":92917},{"min":92928,"max":92975},{"min":92983,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93850},{"min":93952,"max":94026},{"min":94032,"max":94087},{"min":94099,"max":94111},{"min":94176,"max":94179},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113820},{"min":113823,"max":113823},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119142,"max":119142},{"min":119146,"max":119149},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121483},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215},{"min":123584,"max":123627},{"min":123632,"max":123641},{"min":123647,"max":123647},{"min":124928,"max":125124},{"min":125127,"max":125135},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Xa=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1161},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2494,"max":2494},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2519,"max":2519},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2878,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2903},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3006,"max":3006},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3031,"max":3031},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3266,"max":3266},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3285,"max":3286},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3390,"max":3390},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3415,"max":3415},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3535,"max":3535},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3551,"max":3551},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8204},{"min":8400,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12335},{"min":12441,"max":12442},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43493,"max":43493},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43756,"max":43757},{"min":43766,"max":43766},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65438,"max":65439},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70462,"max":70462},{"min":70464,"max":70464},{"min":70487,"max":70487},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70832,"max":70832},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70845,"max":70845},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71087,"max":71087},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71984,"max":71984},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":113821,"max":113822},{"min":119141,"max":119141},{"min":119143,"max":119145},{"min":119150,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917536,"max":917631},{"min":917760,"max":917999}]'),Za=JSON.parse('[{"min":48,"max":57},{"min":65,"max":70},{"min":97,"max":102},{"min":65296,"max":65305},{"min":65313,"max":65318},{"min":65345,"max":65350}]'),Ya=JSON.parse('[{"min":12272,"max":12273},{"min":12276,"max":12283}]'),mi=JSON.parse('[{"min":12274,"max":12275}]'),ni=JSON.parse('[{"min":48,"max":57},{"min":65,"max":90},{"min":95,"max":95},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":183,"max":183},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":768,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1155,"max":1159},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1641},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1759,"max":1768},{"min":1770,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2048,"max":2093},{"min":2112,"max":2139},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2403},{"min":2406,"max":2415},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2545},{"min":2556,"max":2556},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2799},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2927},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3055},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3430,"max":3439},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3662},{"min":3664,"max":3673},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3864,"max":3865},{"min":3872,"max":3881},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3972},{"min":3974,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4096,"max":4169},{"min":4176,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4959},{"min":4969,"max":4977},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5940},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6099},{"min":6103,"max":6103},{"min":6108,"max":6109},{"min":6112,"max":6121},{"min":6155,"max":6157},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6470,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6823,"max":6823},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7001},{"min":7019,"max":7027},{"min":7040,"max":7155},{"min":7168,"max":7223},{"min":7232,"max":7241},{"min":7245,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7376,"max":7378},{"min":7380,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":12293,"max":12295},{"min":12321,"max":12335},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12441,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42539},{"min":42560,"max":42607},{"min":42612,"max":42621},{"min":42623,"max":42737},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43047},{"min":43052,"max":43052},{"min":43072,"max":43123},{"min":43136,"max":43205},{"min":43216,"max":43225},{"min":43232,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43309},{"min":43312,"max":43347},{"min":43360,"max":43388},{"min":43392,"max":43456},{"min":43471,"max":43481},{"min":43488,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43616,"max":43638},{"min":43642,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44012,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65296,"max":65305},{"min":65313,"max":65338},{"min":65343,"max":65343},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66045,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66272},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68326},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":68912,"max":68921},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69456},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69702},{"min":69734,"max":69743},{"min":69759,"max":69818},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69951},{"min":69956,"max":69959},{"min":69968,"max":70003},{"min":70006,"max":70006},{"min":70016,"max":70084},{"min":70089,"max":70092},{"min":70094,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70730},{"min":70736,"max":70745},{"min":70750,"max":70753},{"min":70784,"max":70853},{"min":70855,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71104},{"min":71128,"max":71133},{"min":71168,"max":71232},{"min":71236,"max":71236},{"min":71248,"max":71257},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71481},{"min":71680,"max":71738},{"min":71840,"max":71913},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72003},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72254},{"min":72263,"max":72263},{"min":72272,"max":72345},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72768},{"min":72784,"max":72793},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92880,"max":92909},{"min":92912,"max":92916},{"min":92928,"max":92982},{"min":92992,"max":92995},{"min":93008,"max":93017},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":120782,"max":120831},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123214},{"min":123584,"max":123641},{"min":124928,"max":125124},{"min":125136,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917760,"max":917999}]'),ai=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12443,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),ii=JSON.parse('[{"min":12294,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":94180,"max":94180},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110960,"max":111355},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),xi=JSON.parse('[{"min":8204,"max":8205}]'),ei=JSON.parse('[{"min":3648,"max":3652},{"min":3776,"max":3780},{"min":6581,"max":6583},{"min":6586,"max":6586},{"min":43701,"max":43702},{"min":43705,"max":43705},{"min":43707,"max":43708}]'),ti=JSON.parse('[{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":312},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":397},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":411},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":426,"max":427},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":442},{"min":445,"max":447},{"min":454,"max":454},{"min":457,"max":457},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":545,"max":545},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":569},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":659},{"min":661,"max":696},{"min":704,"max":705},{"min":736,"max":740},{"min":837,"max":837},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":890,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1020},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1376,"max":1416},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7424,"max":7615},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7837},{"min":7839,"max":7839},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8458,"max":8458},{"min":8462,"max":8463},{"min":8467,"max":8467},{"min":8495,"max":8495},{"min":8500,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8509},{"min":8518,"max":8521},{"min":8526,"max":8526},{"min":8560,"max":8575},{"min":8580,"max":8580},{"min":9424,"max":9449},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11377,"max":11377},{"min":11379,"max":11380},{"min":11382,"max":11389},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11492},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42653},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42801},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42872},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42894,"max":42894},{"min":42897,"max":42897},{"min":42899,"max":42901},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42927,"max":42927},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43000,"max":43002},{"min":43824,"max":43866},{"min":43868,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":119834,"max":119859},{"min":119886,"max":119892},{"min":119894,"max":119911},{"min":119938,"max":119963},{"min":119990,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120015},{"min":120042,"max":120067},{"min":120094,"max":120119},{"min":120146,"max":120171},{"min":120198,"max":120223},{"min":120250,"max":120275},{"min":120302,"max":120327},{"min":120354,"max":120379},{"min":120406,"max":120431},{"min":120458,"max":120485},{"min":120514,"max":120538},{"min":120540,"max":120545},{"min":120572,"max":120596},{"min":120598,"max":120603},{"min":120630,"max":120654},{"min":120656,"max":120661},{"min":120688,"max":120712},{"min":120714,"max":120719},{"min":120746,"max":120770},{"min":120772,"max":120777},{"min":120779,"max":120779},{"min":125218,"max":125251}]'),ri=JSON.parse('[{"min":43,"max":43},{"min":60,"max":62},{"min":94,"max":94},{"min":124,"max":124},{"min":126,"max":126},{"min":172,"max":172},{"min":177,"max":177},{"min":215,"max":215},{"min":247,"max":247},{"min":976,"max":978},{"min":981,"max":981},{"min":1008,"max":1009},{"min":1012,"max":1014},{"min":1542,"max":1544},{"min":8214,"max":8214},{"min":8242,"max":8244},{"min":8256,"max":8256},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8289,"max":8292},{"min":8314,"max":8318},{"min":8330,"max":8334},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8422},{"min":8427,"max":8431},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8488,"max":8489},{"min":8492,"max":8493},{"min":8495,"max":8497},{"min":8499,"max":8504},{"min":8508,"max":8521},{"min":8523,"max":8523},{"min":8592,"max":8615},{"min":8617,"max":8622},{"min":8624,"max":8625},{"min":8630,"max":8631},{"min":8636,"max":8667},{"min":8669,"max":8669},{"min":8676,"max":8677},{"min":8692,"max":8959},{"min":8968,"max":8971},{"min":8992,"max":8993},{"min":9084,"max":9084},{"min":9115,"max":9141},{"min":9143,"max":9143},{"min":9168,"max":9168},{"min":9180,"max":9186},{"min":9632,"max":9633},{"min":9646,"max":9655},{"min":9660,"max":9665},{"min":9670,"max":9671},{"min":9674,"max":9675},{"min":9679,"max":9683},{"min":9698,"max":9698},{"min":9700,"max":9700},{"min":9703,"max":9708},{"min":9720,"max":9727},{"min":9733,"max":9734},{"min":9792,"max":9792},{"min":9794,"max":9794},{"min":9824,"max":9827},{"min":9837,"max":9839},{"min":10176,"max":10239},{"min":10496,"max":11007},{"min":11056,"max":11076},{"min":11079,"max":11084},{"min":64297,"max":64297},{"min":65121,"max":65126},{"min":65128,"max":65128},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65340,"max":65340},{"min":65342,"max":65342},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65506,"max":65506},{"min":65513,"max":65516},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),si=JSON.parse('[{"min":64976,"max":65007},{"min":65534,"max":65535},{"min":131070,"max":131071},{"min":196606,"max":196607},{"min":262142,"max":262143},{"min":327678,"max":327679},{"min":393214,"max":393215},{"min":458750,"max":458751},{"min":524286,"max":524287},{"min":589822,"max":589823},{"min":655358,"max":655359},{"min":720894,"max":720895},{"min":786430,"max":786431},{"min":851966,"max":851967},{"min":917502,"max":917503},{"min":983038,"max":983039},{"min":1048574,"max":1048575},{"min":1114110,"max":1114111}]'),oi=JSON.parse('[{"min":33,"max":47},{"min":58,"max":64},{"min":91,"max":94},{"min":96,"max":96},{"min":123,"max":126},{"min":161,"max":167},{"min":169,"max":169},{"min":171,"max":172},{"min":174,"max":174},{"min":176,"max":177},{"min":182,"max":182},{"min":187,"max":187},{"min":191,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":8208,"max":8231},{"min":8240,"max":8254},{"min":8257,"max":8275},{"min":8277,"max":8286},{"min":8592,"max":9311},{"min":9472,"max":10101},{"min":10132,"max":11263},{"min":11776,"max":11903},{"min":12289,"max":12291},{"min":12296,"max":12320},{"min":12336,"max":12336},{"min":64830,"max":64831},{"min":65093,"max":65094}]'),li=JSON.parse('[{"min":9,"max":13},{"min":32,"max":32},{"min":133,"max":133},{"min":8206,"max":8207},{"min":8232,"max":8233}]'),ci=JSON.parse('[{"min":34,"max":34},{"min":39,"max":39},{"min":171,"max":171},{"min":187,"max":187},{"min":8216,"max":8223},{"min":8249,"max":8250},{"min":11842,"max":11842},{"min":12300,"max":12303},{"min":12317,"max":12319},{"min":65089,"max":65092},{"min":65282,"max":65282},{"min":65287,"max":65287},{"min":65378,"max":65379}]'),ui=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245}]'),hi=JSON.parse('[{"min":127462,"max":127487}]'),fi=JSON.parse('[{"min":33,"max":33},{"min":46,"max":46},{"min":63,"max":63},{"min":1417,"max":1417},{"min":1566,"max":1567},{"min":1748,"max":1748},{"min":1792,"max":1794},{"min":2041,"max":2041},{"min":2103,"max":2103},{"min":2105,"max":2105},{"min":2109,"max":2110},{"min":2404,"max":2405},{"min":4170,"max":4171},{"min":4962,"max":4962},{"min":4967,"max":4968},{"min":5742,"max":5742},{"min":5941,"max":5942},{"min":6147,"max":6147},{"min":6153,"max":6153},{"min":6468,"max":6469},{"min":6824,"max":6827},{"min":7002,"max":7003},{"min":7006,"max":7007},{"min":7227,"max":7228},{"min":7294,"max":7295},{"min":8252,"max":8253},{"min":8263,"max":8265},{"min":11822,"max":11822},{"min":11836,"max":11836},{"min":12290,"max":12290},{"min":42239,"max":42239},{"min":42510,"max":42511},{"min":42739,"max":42739},{"min":42743,"max":42743},{"min":43126,"max":43127},{"min":43214,"max":43215},{"min":43311,"max":43311},{"min":43464,"max":43465},{"min":43613,"max":43615},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65106,"max":65106},{"min":65110,"max":65111},{"min":65281,"max":65281},{"min":65294,"max":65294},{"min":65311,"max":65311},{"min":65377,"max":65377},{"min":68182,"max":68183},{"min":69461,"max":69465},{"min":69703,"max":69704},{"min":69822,"max":69825},{"min":69953,"max":69955},{"min":70085,"max":70086},{"min":70093,"max":70093},{"min":70110,"max":70111},{"min":70200,"max":70201},{"min":70203,"max":70204},{"min":70313,"max":70313},{"min":70731,"max":70732},{"min":71106,"max":71107},{"min":71113,"max":71127},{"min":71233,"max":71234},{"min":71484,"max":71486},{"min":72004,"max":72004},{"min":72006,"max":72006},{"min":72258,"max":72259},{"min":72347,"max":72348},{"min":72769,"max":72770},{"min":73463,"max":73464},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92984},{"min":92996,"max":92996},{"min":93848,"max":93848},{"min":113823,"max":113823},{"min":121480,"max":121480}]'),pi=JSON.parse('[{"min":105,"max":106},{"min":303,"max":303},{"min":585,"max":585},{"min":616,"max":616},{"min":669,"max":669},{"min":690,"max":690},{"min":1011,"max":1011},{"min":1110,"max":1110},{"min":1112,"max":1112},{"min":7522,"max":7522},{"min":7574,"max":7574},{"min":7588,"max":7588},{"min":7592,"max":7592},{"min":7725,"max":7725},{"min":7883,"max":7883},{"min":8305,"max":8305},{"min":8520,"max":8521},{"min":11388,"max":11388},{"min":119842,"max":119843},{"min":119894,"max":119895},{"min":119946,"max":119947},{"min":119998,"max":119999},{"min":120050,"max":120051},{"min":120102,"max":120103},{"min":120154,"max":120155},{"min":120206,"max":120207},{"min":120258,"max":120259},{"min":120310,"max":120311},{"min":120362,"max":120363},{"min":120414,"max":120415},{"min":120466,"max":120467}]'),di=JSON.parse('[{"min":33,"max":33},{"min":44,"max":44},{"min":46,"max":46},{"min":58,"max":59},{"min":63,"max":63},{"min":894,"max":894},{"min":903,"max":903},{"min":1417,"max":1417},{"min":1475,"max":1475},{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1748,"max":1748},{"min":1792,"max":1802},{"min":1804,"max":1804},{"min":2040,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":3674,"max":3675},{"min":3848,"max":3848},{"min":3853,"max":3858},{"min":4170,"max":4171},{"min":4961,"max":4968},{"min":5742,"max":5742},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6106,"max":6106},{"min":6146,"max":6149},{"min":6152,"max":6153},{"min":6468,"max":6469},{"min":6824,"max":6827},{"min":7002,"max":7003},{"min":7005,"max":7007},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":8252,"max":8253},{"min":8263,"max":8265},{"min":11822,"max":11822},{"min":11836,"max":11836},{"min":11841,"max":11841},{"min":11852,"max":11852},{"min":11854,"max":11855},{"min":12289,"max":12290},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42739,"max":42743},{"min":43126,"max":43127},{"min":43214,"max":43215},{"min":43311,"max":43311},{"min":43463,"max":43465},{"min":43613,"max":43615},{"min":43743,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65104,"max":65106},{"min":65108,"max":65111},{"min":65281,"max":65281},{"min":65292,"max":65292},{"min":65294,"max":65294},{"min":65306,"max":65307},{"min":65311,"max":65311},{"min":65377,"max":65377},{"min":65380,"max":65380},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":68182,"max":68183},{"min":68336,"max":68341},{"min":68410,"max":68415},{"min":68505,"max":68508},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69822,"max":69825},{"min":69953,"max":69955},{"min":70085,"max":70086},{"min":70093,"max":70093},{"min":70110,"max":70111},{"min":70200,"max":70204},{"min":70313,"max":70313},{"min":70731,"max":70733},{"min":70746,"max":70747},{"min":71106,"max":71109},{"min":71113,"max":71127},{"min":71233,"max":71234},{"min":71484,"max":71486},{"min":72004,"max":72004},{"min":72006,"max":72006},{"min":72258,"max":72259},{"min":72347,"max":72348},{"min":72353,"max":72354},{"min":72769,"max":72771},{"min":72817,"max":72817},{"min":73463,"max":73464},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92985},{"min":92996,"max":92996},{"min":93847,"max":93848},{"min":113823,"max":113823},{"min":121479,"max":121482}]'),gi=JSON.parse('[{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":64014,"max":64015},{"min":64017,"max":64017},{"min":64019,"max":64020},{"min":64031,"max":64031},{"min":64033,"max":64033},{"min":64035,"max":64036},{"min":64039,"max":64041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":196608,"max":201546}]'),yi=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":452},{"min":455,"max":455},{"min":458,"max":458},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":497},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":978,"max":980},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8120,"max":8123},{"min":8136,"max":8139},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8459,"max":8461},{"min":8464,"max":8466},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8496,"max":8499},{"min":8510,"max":8511},{"min":8517,"max":8517},{"min":8544,"max":8559},{"min":8579,"max":8579},{"min":9398,"max":9423},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":119808,"max":119833},{"min":119860,"max":119885},{"min":119912,"max":119937},{"min":119964,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119989},{"min":120016,"max":120041},{"min":120068,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120120,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120172,"max":120197},{"min":120224,"max":120249},{"min":120276,"max":120301},{"min":120328,"max":120353},{"min":120380,"max":120405},{"min":120432,"max":120457},{"min":120488,"max":120512},{"min":120546,"max":120570},{"min":120604,"max":120628},{"min":120662,"max":120686},{"min":120720,"max":120744},{"min":120778,"max":120778},{"min":125184,"max":125217},{"min":127280,"max":127305},{"min":127312,"max":127337},{"min":127344,"max":127369}]'),Si=JSON.parse('[{"min":6155,"max":6157},{"min":65024,"max":65039},{"min":917760,"max":917999}]'),_i=JSON.parse('[{"min":9,"max":13},{"min":32,"max":32},{"min":133,"max":133},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8232,"max":8233},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),vi=JSON.parse('[{"min":48,"max":57},{"min":65,"max":90},{"min":95,"max":95},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":183,"max":183},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":768,"max":884},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1155,"max":1159},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1552,"max":1562},{"min":1568,"max":1641},{"min":1646,"max":1747},{"min":1749,"max":1756},{"min":1759,"max":1768},{"min":1770,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1866},{"min":1869,"max":1969},{"min":1984,"max":2037},{"min":2042,"max":2042},{"min":2045,"max":2045},{"min":2048,"max":2093},{"min":2112,"max":2139},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2403},{"min":2406,"max":2415},{"min":2417,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2545},{"min":2556,"max":2556},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2677},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2799},{"min":2809,"max":2815},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2927},{"min":2929,"max":2929},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3055},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3200,"max":3203},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3406},{"min":3412,"max":3415},{"min":3423,"max":3427},{"min":3430,"max":3439},{"min":3450,"max":3455},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3571},{"min":3585,"max":3642},{"min":3648,"max":3662},{"min":3664,"max":3673},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3864,"max":3865},{"min":3872,"max":3881},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3972},{"min":3974,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4096,"max":4169},{"min":4176,"max":4253},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4959},{"min":4969,"max":4977},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5920,"max":5940},{"min":5952,"max":5971},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003},{"min":6016,"max":6099},{"min":6103,"max":6103},{"min":6108,"max":6109},{"min":6112,"max":6121},{"min":6155,"max":6157},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6470,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6656,"max":6683},{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6823,"max":6823},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6987},{"min":6992,"max":7001},{"min":7019,"max":7027},{"min":7040,"max":7155},{"min":7168,"max":7223},{"min":7232,"max":7241},{"min":7245,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7376,"max":7378},{"min":7380,"max":7418},{"min":7424,"max":7673},{"min":7675,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11647,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11744,"max":11775},{"min":12293,"max":12295},{"min":12321,"max":12335},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12441,"max":12442},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42539},{"min":42560,"max":42607},{"min":42612,"max":42621},{"min":42623,"max":42737},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43047},{"min":43052,"max":43052},{"min":43072,"max":43123},{"min":43136,"max":43205},{"min":43216,"max":43225},{"min":43232,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43309},{"min":43312,"max":43347},{"min":43360,"max":43388},{"min":43392,"max":43456},{"min":43471,"max":43481},{"min":43488,"max":43518},{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43616,"max":43638},{"min":43642,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43759},{"min":43762,"max":43766},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44010},{"min":44012,"max":44013},{"min":44016,"max":44025},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64605},{"min":64612,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65017},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65137,"max":65137},{"min":65139,"max":65139},{"min":65143,"max":65143},{"min":65145,"max":65145},{"min":65147,"max":65147},{"min":65149,"max":65149},{"min":65151,"max":65276},{"min":65296,"max":65305},{"min":65313,"max":65338},{"min":65343,"max":65343},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66045,"max":66045},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66272,"max":66272},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66426},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66720,"max":66729},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68326},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68903},{"min":68912,"max":68921},{"min":69248,"max":69289},{"min":69291,"max":69292},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69456},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69632,"max":69702},{"min":69734,"max":69743},{"min":69759,"max":69818},{"min":69840,"max":69864},{"min":69872,"max":69881},{"min":69888,"max":69940},{"min":69942,"max":69951},{"min":69956,"max":69959},{"min":69968,"max":70003},{"min":70006,"max":70006},{"min":70016,"max":70084},{"min":70089,"max":70092},{"min":70094,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70199},{"min":70206,"max":70206},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70378},{"min":70384,"max":70393},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70656,"max":70730},{"min":70736,"max":70745},{"min":70750,"max":70753},{"min":70784,"max":70853},{"min":70855,"max":70855},{"min":70864,"max":70873},{"min":71040,"max":71093},{"min":71096,"max":71104},{"min":71128,"max":71133},{"min":71168,"max":71232},{"min":71236,"max":71236},{"min":71248,"max":71257},{"min":71296,"max":71352},{"min":71360,"max":71369},{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71481},{"min":71680,"max":71738},{"min":71840,"max":71913},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":72003},{"min":72016,"max":72025},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72161},{"min":72163,"max":72164},{"min":72192,"max":72254},{"min":72263,"max":72263},{"min":72272,"max":72345},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72768},{"min":72784,"max":72793},{"min":72818,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129},{"min":73440,"max":73462},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92880,"max":92909},{"min":92912,"max":92916},{"min":92928,"max":92982},{"min":92992,"max":92995},{"min":93008,"max":93017},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94180},{"min":94192,"max":94193},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":120782,"max":120831},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123214},{"min":123584,"max":123641},{"min":124928,"max":125124},{"min":125136,"max":125142},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":130032,"max":130041},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546},{"min":917760,"max":917999}]'),Ni=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3634},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3762},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5870,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8472,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12293,"max":12295},{"min":12321,"max":12329},{"min":12337,"max":12341},{"min":12344,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42735},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64605},{"min":64612,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65017},{"min":65137,"max":65137},{"min":65139,"max":65139},{"min":65143,"max":65143},{"min":65145,"max":65145},{"min":65147,"max":65147},{"min":65149,"max":65149},{"min":65151,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65856,"max":65908},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66378},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66513,"max":66517},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]');var Ci=Object.freeze({__proto__:null,ASCII:Oa,ASCII_Hex_Digit:ka,Alphabetic:wa,Any:Ja,Assigned:ba,Bidi_Control:Aa,Bidi_Mirrored:Ea,Case_Ignorable:Ma,Cased:La,Changes_When_Casefolded:Ta,Changes_When_Casemapped:Pa,Changes_When_Lowercased:Ia,Changes_When_NFKC_Casefolded:Da,Changes_When_Titlecased:Ra,Changes_When_Uppercased:Ga,Dash:Ba,Default_Ignorable_Code_Point:Wa,Deprecated:Fa,Diacritic:Qa,Emoji:Ha,Emoji_Component:ja,Emoji_Modifier:za,Emoji_Modifier_Base:Ua,Emoji_Presentation:Ka,Extended_Pictographic:qa,Extender:$a,Grapheme_Base:Va,Grapheme_Extend:Xa,Hex_Digit:Za,IDS_Binary_Operator:Ya,IDS_Trinary_Operator:mi,ID_Continue:ni,ID_Start:ai,Ideographic:ii,Join_Control:xi,Logical_Order_Exception:ei,Lowercase:ti,Math:ri,Noncharacter_Code_Point:si,Pattern_Syntax:oi,Pattern_White_Space:li,Quotation_Mark:ci,Radical:ui,Regional_Indicator:hi,Sentence_Terminal:fi,Soft_Dotted:pi,Terminal_Punctuation:di,Unified_Ideograph:gi,Uppercase:yi,Variation_Selector:Si,White_Space:_i,XID_Continue:vi,XID_Start:Ni});const Oi=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":442},{"min":444,"max":447},{"min":452,"max":659},{"min":661,"max":687},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1376,"max":1416},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7424,"max":7467},{"min":7531,"max":7543},{"min":7545,"max":7578},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8579,"max":8580},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11387},{"min":11390,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42863},{"min":42865,"max":42887},{"min":42891,"max":42894},{"min":42896,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43002,"max":43002},{"min":43824,"max":43866},{"min":43872,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":125184,"max":125251}]'),ki=JSON.parse('[{"min":41,"max":41},{"min":93,"max":93},{"min":125,"max":125},{"min":3899,"max":3899},{"min":3901,"max":3901},{"min":5788,"max":5788},{"min":8262,"max":8262},{"min":8318,"max":8318},{"min":8334,"max":8334},{"min":8969,"max":8969},{"min":8971,"max":8971},{"min":9002,"max":9002},{"min":10089,"max":10089},{"min":10091,"max":10091},{"min":10093,"max":10093},{"min":10095,"max":10095},{"min":10097,"max":10097},{"min":10099,"max":10099},{"min":10101,"max":10101},{"min":10182,"max":10182},{"min":10215,"max":10215},{"min":10217,"max":10217},{"min":10219,"max":10219},{"min":10221,"max":10221},{"min":10223,"max":10223},{"min":10628,"max":10628},{"min":10630,"max":10630},{"min":10632,"max":10632},{"min":10634,"max":10634},{"min":10636,"max":10636},{"min":10638,"max":10638},{"min":10640,"max":10640},{"min":10642,"max":10642},{"min":10644,"max":10644},{"min":10646,"max":10646},{"min":10648,"max":10648},{"min":10713,"max":10713},{"min":10715,"max":10715},{"min":10749,"max":10749},{"min":11811,"max":11811},{"min":11813,"max":11813},{"min":11815,"max":11815},{"min":11817,"max":11817},{"min":12297,"max":12297},{"min":12299,"max":12299},{"min":12301,"max":12301},{"min":12303,"max":12303},{"min":12305,"max":12305},{"min":12309,"max":12309},{"min":12311,"max":12311},{"min":12313,"max":12313},{"min":12315,"max":12315},{"min":12318,"max":12319},{"min":64830,"max":64830},{"min":65048,"max":65048},{"min":65078,"max":65078},{"min":65080,"max":65080},{"min":65082,"max":65082},{"min":65084,"max":65084},{"min":65086,"max":65086},{"min":65088,"max":65088},{"min":65090,"max":65090},{"min":65092,"max":65092},{"min":65096,"max":65096},{"min":65114,"max":65114},{"min":65116,"max":65116},{"min":65118,"max":65118},{"min":65289,"max":65289},{"min":65341,"max":65341},{"min":65373,"max":65373},{"min":65376,"max":65376},{"min":65379,"max":65379}]'),wi=JSON.parse('[{"min":95,"max":95},{"min":8255,"max":8256},{"min":8276,"max":8276},{"min":65075,"max":65076},{"min":65101,"max":65103},{"min":65343,"max":65343}]'),Ji=JSON.parse('[{"min":0,"max":31},{"min":127,"max":159}]'),bi=JSON.parse('[{"min":36,"max":36},{"min":162,"max":165},{"min":1423,"max":1423},{"min":1547,"max":1547},{"min":2046,"max":2047},{"min":2546,"max":2547},{"min":2555,"max":2555},{"min":2801,"max":2801},{"min":3065,"max":3065},{"min":3647,"max":3647},{"min":6107,"max":6107},{"min":8352,"max":8383},{"min":43064,"max":43064},{"min":65020,"max":65020},{"min":65129,"max":65129},{"min":65284,"max":65284},{"min":65504,"max":65505},{"min":65509,"max":65510},{"min":73693,"max":73696},{"min":123647,"max":123647},{"min":126128,"max":126128}]'),Ai=JSON.parse('[{"min":45,"max":45},{"min":1418,"max":1418},{"min":1470,"max":1470},{"min":5120,"max":5120},{"min":6150,"max":6150},{"min":8208,"max":8213},{"min":11799,"max":11799},{"min":11802,"max":11802},{"min":11834,"max":11835},{"min":11840,"max":11840},{"min":12316,"max":12316},{"min":12336,"max":12336},{"min":12448,"max":12448},{"min":65073,"max":65074},{"min":65112,"max":65112},{"min":65123,"max":65123},{"min":65293,"max":65293},{"min":69293,"max":69293}]'),Ei=JSON.parse('[{"min":48,"max":57},{"min":1632,"max":1641},{"min":1776,"max":1785},{"min":1984,"max":1993},{"min":2406,"max":2415},{"min":2534,"max":2543},{"min":2662,"max":2671},{"min":2790,"max":2799},{"min":2918,"max":2927},{"min":3046,"max":3055},{"min":3174,"max":3183},{"min":3302,"max":3311},{"min":3430,"max":3439},{"min":3558,"max":3567},{"min":3664,"max":3673},{"min":3792,"max":3801},{"min":3872,"max":3881},{"min":4160,"max":4169},{"min":4240,"max":4249},{"min":6112,"max":6121},{"min":6160,"max":6169},{"min":6470,"max":6479},{"min":6608,"max":6617},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6992,"max":7001},{"min":7088,"max":7097},{"min":7232,"max":7241},{"min":7248,"max":7257},{"min":42528,"max":42537},{"min":43216,"max":43225},{"min":43264,"max":43273},{"min":43472,"max":43481},{"min":43504,"max":43513},{"min":43600,"max":43609},{"min":44016,"max":44025},{"min":65296,"max":65305},{"min":66720,"max":66729},{"min":68912,"max":68921},{"min":69734,"max":69743},{"min":69872,"max":69881},{"min":69942,"max":69951},{"min":70096,"max":70105},{"min":70384,"max":70393},{"min":70736,"max":70745},{"min":70864,"max":70873},{"min":71248,"max":71257},{"min":71360,"max":71369},{"min":71472,"max":71481},{"min":71904,"max":71913},{"min":72016,"max":72025},{"min":72784,"max":72793},{"min":73040,"max":73049},{"min":73120,"max":73129},{"min":92768,"max":92777},{"min":93008,"max":93017},{"min":120782,"max":120831},{"min":123200,"max":123209},{"min":123632,"max":123641},{"min":125264,"max":125273},{"min":130032,"max":130041}]'),Mi=JSON.parse('[{"min":1160,"max":1161},{"min":6846,"max":6846},{"min":8413,"max":8416},{"min":8418,"max":8420},{"min":42608,"max":42610}]'),Li=JSON.parse('[{"min":187,"max":187},{"min":8217,"max":8217},{"min":8221,"max":8221},{"min":8250,"max":8250},{"min":11779,"max":11779},{"min":11781,"max":11781},{"min":11786,"max":11786},{"min":11789,"max":11789},{"min":11805,"max":11805},{"min":11809,"max":11809}]'),Ti=JSON.parse('[{"min":173,"max":173},{"min":1536,"max":1541},{"min":1564,"max":1564},{"min":1757,"max":1757},{"min":1807,"max":1807},{"min":2274,"max":2274},{"min":6158,"max":6158},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8292},{"min":8294,"max":8303},{"min":65279,"max":65279},{"min":65529,"max":65531},{"min":69821,"max":69821},{"min":69837,"max":69837},{"min":78896,"max":78904},{"min":113824,"max":113827},{"min":119155,"max":119162},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Pi=JSON.parse('[{"min":171,"max":171},{"min":8216,"max":8216},{"min":8219,"max":8220},{"min":8223,"max":8223},{"min":8249,"max":8249},{"min":11778,"max":11778},{"min":11780,"max":11780},{"min":11785,"max":11785},{"min":11788,"max":11788},{"min":11804,"max":11804},{"min":11808,"max":11808}]'),Ii=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":181,"max":181},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":880,"max":884},{"min":886,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":1013},{"min":1015,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1369,"max":1369},{"min":1376,"max":1416},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1765,"max":1766},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2048,"max":2069},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2417,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3654},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5873,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6103,"max":6103},{"min":6108,"max":6108},{"min":6176,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6823,"max":6823},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7293},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":7424,"max":7615},{"min":7680,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8124},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8140},{"min":8144,"max":8147},{"min":8150,"max":8155},{"min":8160,"max":8172},{"min":8178,"max":8180},{"min":8182,"max":8188},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8458,"max":8467},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8495,"max":8505},{"min":8508,"max":8511},{"min":8517,"max":8521},{"min":8526,"max":8526},{"min":8579,"max":8580},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11492},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":11568,"max":11623},{"min":11631,"max":11631},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":11823,"max":11823},{"min":12293,"max":12294},{"min":12337,"max":12341},{"min":12347,"max":12348},{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":12449,"max":12538},{"min":12540,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":42124},{"min":42192,"max":42237},{"min":42240,"max":42508},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42560,"max":42606},{"min":42623,"max":42653},{"min":42656,"max":42725},{"min":42775,"max":42783},{"min":42786,"max":42888},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43471,"max":43471},{"min":43488,"max":43492},{"min":43494,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43741},{"min":43744,"max":43754},{"min":43762,"max":43764},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43824,"max":43866},{"min":43868,"max":43881},{"min":43888,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":65382,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66368},{"min":66370,"max":66377},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66560,"max":66717},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71840,"max":71903},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":92992,"max":92995},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93760,"max":93823},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120512},{"min":120514,"max":120538},{"min":120540,"max":120570},{"min":120572,"max":120596},{"min":120598,"max":120628},{"min":120630,"max":120654},{"min":120656,"max":120686},{"min":120688,"max":120712},{"min":120714,"max":120744},{"min":120746,"max":120770},{"min":120772,"max":120779},{"min":123136,"max":123180},{"min":123191,"max":123197},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":125184,"max":125251},{"min":125259,"max":125259},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),Di=JSON.parse('[{"min":5870,"max":5872},{"min":8544,"max":8578},{"min":8581,"max":8584},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":42726,"max":42735},{"min":65856,"max":65908},{"min":66369,"max":66369},{"min":66378,"max":66378},{"min":66513,"max":66517},{"min":74752,"max":74862}]'),Ri=JSON.parse('[{"min":8232,"max":8232}]'),Gi=JSON.parse('[{"min":97,"max":122},{"min":181,"max":181},{"min":223,"max":246},{"min":248,"max":255},{"min":257,"max":257},{"min":259,"max":259},{"min":261,"max":261},{"min":263,"max":263},{"min":265,"max":265},{"min":267,"max":267},{"min":269,"max":269},{"min":271,"max":271},{"min":273,"max":273},{"min":275,"max":275},{"min":277,"max":277},{"min":279,"max":279},{"min":281,"max":281},{"min":283,"max":283},{"min":285,"max":285},{"min":287,"max":287},{"min":289,"max":289},{"min":291,"max":291},{"min":293,"max":293},{"min":295,"max":295},{"min":297,"max":297},{"min":299,"max":299},{"min":301,"max":301},{"min":303,"max":303},{"min":305,"max":305},{"min":307,"max":307},{"min":309,"max":309},{"min":311,"max":312},{"min":314,"max":314},{"min":316,"max":316},{"min":318,"max":318},{"min":320,"max":320},{"min":322,"max":322},{"min":324,"max":324},{"min":326,"max":326},{"min":328,"max":329},{"min":331,"max":331},{"min":333,"max":333},{"min":335,"max":335},{"min":337,"max":337},{"min":339,"max":339},{"min":341,"max":341},{"min":343,"max":343},{"min":345,"max":345},{"min":347,"max":347},{"min":349,"max":349},{"min":351,"max":351},{"min":353,"max":353},{"min":355,"max":355},{"min":357,"max":357},{"min":359,"max":359},{"min":361,"max":361},{"min":363,"max":363},{"min":365,"max":365},{"min":367,"max":367},{"min":369,"max":369},{"min":371,"max":371},{"min":373,"max":373},{"min":375,"max":375},{"min":378,"max":378},{"min":380,"max":380},{"min":382,"max":384},{"min":387,"max":387},{"min":389,"max":389},{"min":392,"max":392},{"min":396,"max":397},{"min":402,"max":402},{"min":405,"max":405},{"min":409,"max":411},{"min":414,"max":414},{"min":417,"max":417},{"min":419,"max":419},{"min":421,"max":421},{"min":424,"max":424},{"min":426,"max":427},{"min":429,"max":429},{"min":432,"max":432},{"min":436,"max":436},{"min":438,"max":438},{"min":441,"max":442},{"min":445,"max":447},{"min":454,"max":454},{"min":457,"max":457},{"min":460,"max":460},{"min":462,"max":462},{"min":464,"max":464},{"min":466,"max":466},{"min":468,"max":468},{"min":470,"max":470},{"min":472,"max":472},{"min":474,"max":474},{"min":476,"max":477},{"min":479,"max":479},{"min":481,"max":481},{"min":483,"max":483},{"min":485,"max":485},{"min":487,"max":487},{"min":489,"max":489},{"min":491,"max":491},{"min":493,"max":493},{"min":495,"max":496},{"min":499,"max":499},{"min":501,"max":501},{"min":505,"max":505},{"min":507,"max":507},{"min":509,"max":509},{"min":511,"max":511},{"min":513,"max":513},{"min":515,"max":515},{"min":517,"max":517},{"min":519,"max":519},{"min":521,"max":521},{"min":523,"max":523},{"min":525,"max":525},{"min":527,"max":527},{"min":529,"max":529},{"min":531,"max":531},{"min":533,"max":533},{"min":535,"max":535},{"min":537,"max":537},{"min":539,"max":539},{"min":541,"max":541},{"min":543,"max":543},{"min":545,"max":545},{"min":547,"max":547},{"min":549,"max":549},{"min":551,"max":551},{"min":553,"max":553},{"min":555,"max":555},{"min":557,"max":557},{"min":559,"max":559},{"min":561,"max":561},{"min":563,"max":569},{"min":572,"max":572},{"min":575,"max":576},{"min":578,"max":578},{"min":583,"max":583},{"min":585,"max":585},{"min":587,"max":587},{"min":589,"max":589},{"min":591,"max":659},{"min":661,"max":687},{"min":881,"max":881},{"min":883,"max":883},{"min":887,"max":887},{"min":891,"max":893},{"min":912,"max":912},{"min":940,"max":974},{"min":976,"max":977},{"min":981,"max":983},{"min":985,"max":985},{"min":987,"max":987},{"min":989,"max":989},{"min":991,"max":991},{"min":993,"max":993},{"min":995,"max":995},{"min":997,"max":997},{"min":999,"max":999},{"min":1001,"max":1001},{"min":1003,"max":1003},{"min":1005,"max":1005},{"min":1007,"max":1011},{"min":1013,"max":1013},{"min":1016,"max":1016},{"min":1019,"max":1020},{"min":1072,"max":1119},{"min":1121,"max":1121},{"min":1123,"max":1123},{"min":1125,"max":1125},{"min":1127,"max":1127},{"min":1129,"max":1129},{"min":1131,"max":1131},{"min":1133,"max":1133},{"min":1135,"max":1135},{"min":1137,"max":1137},{"min":1139,"max":1139},{"min":1141,"max":1141},{"min":1143,"max":1143},{"min":1145,"max":1145},{"min":1147,"max":1147},{"min":1149,"max":1149},{"min":1151,"max":1151},{"min":1153,"max":1153},{"min":1163,"max":1163},{"min":1165,"max":1165},{"min":1167,"max":1167},{"min":1169,"max":1169},{"min":1171,"max":1171},{"min":1173,"max":1173},{"min":1175,"max":1175},{"min":1177,"max":1177},{"min":1179,"max":1179},{"min":1181,"max":1181},{"min":1183,"max":1183},{"min":1185,"max":1185},{"min":1187,"max":1187},{"min":1189,"max":1189},{"min":1191,"max":1191},{"min":1193,"max":1193},{"min":1195,"max":1195},{"min":1197,"max":1197},{"min":1199,"max":1199},{"min":1201,"max":1201},{"min":1203,"max":1203},{"min":1205,"max":1205},{"min":1207,"max":1207},{"min":1209,"max":1209},{"min":1211,"max":1211},{"min":1213,"max":1213},{"min":1215,"max":1215},{"min":1218,"max":1218},{"min":1220,"max":1220},{"min":1222,"max":1222},{"min":1224,"max":1224},{"min":1226,"max":1226},{"min":1228,"max":1228},{"min":1230,"max":1231},{"min":1233,"max":1233},{"min":1235,"max":1235},{"min":1237,"max":1237},{"min":1239,"max":1239},{"min":1241,"max":1241},{"min":1243,"max":1243},{"min":1245,"max":1245},{"min":1247,"max":1247},{"min":1249,"max":1249},{"min":1251,"max":1251},{"min":1253,"max":1253},{"min":1255,"max":1255},{"min":1257,"max":1257},{"min":1259,"max":1259},{"min":1261,"max":1261},{"min":1263,"max":1263},{"min":1265,"max":1265},{"min":1267,"max":1267},{"min":1269,"max":1269},{"min":1271,"max":1271},{"min":1273,"max":1273},{"min":1275,"max":1275},{"min":1277,"max":1277},{"min":1279,"max":1279},{"min":1281,"max":1281},{"min":1283,"max":1283},{"min":1285,"max":1285},{"min":1287,"max":1287},{"min":1289,"max":1289},{"min":1291,"max":1291},{"min":1293,"max":1293},{"min":1295,"max":1295},{"min":1297,"max":1297},{"min":1299,"max":1299},{"min":1301,"max":1301},{"min":1303,"max":1303},{"min":1305,"max":1305},{"min":1307,"max":1307},{"min":1309,"max":1309},{"min":1311,"max":1311},{"min":1313,"max":1313},{"min":1315,"max":1315},{"min":1317,"max":1317},{"min":1319,"max":1319},{"min":1321,"max":1321},{"min":1323,"max":1323},{"min":1325,"max":1325},{"min":1327,"max":1327},{"min":1376,"max":1416},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7424,"max":7467},{"min":7531,"max":7543},{"min":7545,"max":7578},{"min":7681,"max":7681},{"min":7683,"max":7683},{"min":7685,"max":7685},{"min":7687,"max":7687},{"min":7689,"max":7689},{"min":7691,"max":7691},{"min":7693,"max":7693},{"min":7695,"max":7695},{"min":7697,"max":7697},{"min":7699,"max":7699},{"min":7701,"max":7701},{"min":7703,"max":7703},{"min":7705,"max":7705},{"min":7707,"max":7707},{"min":7709,"max":7709},{"min":7711,"max":7711},{"min":7713,"max":7713},{"min":7715,"max":7715},{"min":7717,"max":7717},{"min":7719,"max":7719},{"min":7721,"max":7721},{"min":7723,"max":7723},{"min":7725,"max":7725},{"min":7727,"max":7727},{"min":7729,"max":7729},{"min":7731,"max":7731},{"min":7733,"max":7733},{"min":7735,"max":7735},{"min":7737,"max":7737},{"min":7739,"max":7739},{"min":7741,"max":7741},{"min":7743,"max":7743},{"min":7745,"max":7745},{"min":7747,"max":7747},{"min":7749,"max":7749},{"min":7751,"max":7751},{"min":7753,"max":7753},{"min":7755,"max":7755},{"min":7757,"max":7757},{"min":7759,"max":7759},{"min":7761,"max":7761},{"min":7763,"max":7763},{"min":7765,"max":7765},{"min":7767,"max":7767},{"min":7769,"max":7769},{"min":7771,"max":7771},{"min":7773,"max":7773},{"min":7775,"max":7775},{"min":7777,"max":7777},{"min":7779,"max":7779},{"min":7781,"max":7781},{"min":7783,"max":7783},{"min":7785,"max":7785},{"min":7787,"max":7787},{"min":7789,"max":7789},{"min":7791,"max":7791},{"min":7793,"max":7793},{"min":7795,"max":7795},{"min":7797,"max":7797},{"min":7799,"max":7799},{"min":7801,"max":7801},{"min":7803,"max":7803},{"min":7805,"max":7805},{"min":7807,"max":7807},{"min":7809,"max":7809},{"min":7811,"max":7811},{"min":7813,"max":7813},{"min":7815,"max":7815},{"min":7817,"max":7817},{"min":7819,"max":7819},{"min":7821,"max":7821},{"min":7823,"max":7823},{"min":7825,"max":7825},{"min":7827,"max":7827},{"min":7829,"max":7837},{"min":7839,"max":7839},{"min":7841,"max":7841},{"min":7843,"max":7843},{"min":7845,"max":7845},{"min":7847,"max":7847},{"min":7849,"max":7849},{"min":7851,"max":7851},{"min":7853,"max":7853},{"min":7855,"max":7855},{"min":7857,"max":7857},{"min":7859,"max":7859},{"min":7861,"max":7861},{"min":7863,"max":7863},{"min":7865,"max":7865},{"min":7867,"max":7867},{"min":7869,"max":7869},{"min":7871,"max":7871},{"min":7873,"max":7873},{"min":7875,"max":7875},{"min":7877,"max":7877},{"min":7879,"max":7879},{"min":7881,"max":7881},{"min":7883,"max":7883},{"min":7885,"max":7885},{"min":7887,"max":7887},{"min":7889,"max":7889},{"min":7891,"max":7891},{"min":7893,"max":7893},{"min":7895,"max":7895},{"min":7897,"max":7897},{"min":7899,"max":7899},{"min":7901,"max":7901},{"min":7903,"max":7903},{"min":7905,"max":7905},{"min":7907,"max":7907},{"min":7909,"max":7909},{"min":7911,"max":7911},{"min":7913,"max":7913},{"min":7915,"max":7915},{"min":7917,"max":7917},{"min":7919,"max":7919},{"min":7921,"max":7921},{"min":7923,"max":7923},{"min":7925,"max":7925},{"min":7927,"max":7927},{"min":7929,"max":7929},{"min":7931,"max":7931},{"min":7933,"max":7933},{"min":7935,"max":7943},{"min":7952,"max":7957},{"min":7968,"max":7975},{"min":7984,"max":7991},{"min":8000,"max":8005},{"min":8016,"max":8023},{"min":8032,"max":8039},{"min":8048,"max":8061},{"min":8064,"max":8071},{"min":8080,"max":8087},{"min":8096,"max":8103},{"min":8112,"max":8116},{"min":8118,"max":8119},{"min":8126,"max":8126},{"min":8130,"max":8132},{"min":8134,"max":8135},{"min":8144,"max":8147},{"min":8150,"max":8151},{"min":8160,"max":8167},{"min":8178,"max":8180},{"min":8182,"max":8183},{"min":8458,"max":8458},{"min":8462,"max":8463},{"min":8467,"max":8467},{"min":8495,"max":8495},{"min":8500,"max":8500},{"min":8505,"max":8505},{"min":8508,"max":8509},{"min":8518,"max":8521},{"min":8526,"max":8526},{"min":8580,"max":8580},{"min":11312,"max":11358},{"min":11361,"max":11361},{"min":11365,"max":11366},{"min":11368,"max":11368},{"min":11370,"max":11370},{"min":11372,"max":11372},{"min":11377,"max":11377},{"min":11379,"max":11380},{"min":11382,"max":11387},{"min":11393,"max":11393},{"min":11395,"max":11395},{"min":11397,"max":11397},{"min":11399,"max":11399},{"min":11401,"max":11401},{"min":11403,"max":11403},{"min":11405,"max":11405},{"min":11407,"max":11407},{"min":11409,"max":11409},{"min":11411,"max":11411},{"min":11413,"max":11413},{"min":11415,"max":11415},{"min":11417,"max":11417},{"min":11419,"max":11419},{"min":11421,"max":11421},{"min":11423,"max":11423},{"min":11425,"max":11425},{"min":11427,"max":11427},{"min":11429,"max":11429},{"min":11431,"max":11431},{"min":11433,"max":11433},{"min":11435,"max":11435},{"min":11437,"max":11437},{"min":11439,"max":11439},{"min":11441,"max":11441},{"min":11443,"max":11443},{"min":11445,"max":11445},{"min":11447,"max":11447},{"min":11449,"max":11449},{"min":11451,"max":11451},{"min":11453,"max":11453},{"min":11455,"max":11455},{"min":11457,"max":11457},{"min":11459,"max":11459},{"min":11461,"max":11461},{"min":11463,"max":11463},{"min":11465,"max":11465},{"min":11467,"max":11467},{"min":11469,"max":11469},{"min":11471,"max":11471},{"min":11473,"max":11473},{"min":11475,"max":11475},{"min":11477,"max":11477},{"min":11479,"max":11479},{"min":11481,"max":11481},{"min":11483,"max":11483},{"min":11485,"max":11485},{"min":11487,"max":11487},{"min":11489,"max":11489},{"min":11491,"max":11492},{"min":11500,"max":11500},{"min":11502,"max":11502},{"min":11507,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42561,"max":42561},{"min":42563,"max":42563},{"min":42565,"max":42565},{"min":42567,"max":42567},{"min":42569,"max":42569},{"min":42571,"max":42571},{"min":42573,"max":42573},{"min":42575,"max":42575},{"min":42577,"max":42577},{"min":42579,"max":42579},{"min":42581,"max":42581},{"min":42583,"max":42583},{"min":42585,"max":42585},{"min":42587,"max":42587},{"min":42589,"max":42589},{"min":42591,"max":42591},{"min":42593,"max":42593},{"min":42595,"max":42595},{"min":42597,"max":42597},{"min":42599,"max":42599},{"min":42601,"max":42601},{"min":42603,"max":42603},{"min":42605,"max":42605},{"min":42625,"max":42625},{"min":42627,"max":42627},{"min":42629,"max":42629},{"min":42631,"max":42631},{"min":42633,"max":42633},{"min":42635,"max":42635},{"min":42637,"max":42637},{"min":42639,"max":42639},{"min":42641,"max":42641},{"min":42643,"max":42643},{"min":42645,"max":42645},{"min":42647,"max":42647},{"min":42649,"max":42649},{"min":42651,"max":42651},{"min":42787,"max":42787},{"min":42789,"max":42789},{"min":42791,"max":42791},{"min":42793,"max":42793},{"min":42795,"max":42795},{"min":42797,"max":42797},{"min":42799,"max":42801},{"min":42803,"max":42803},{"min":42805,"max":42805},{"min":42807,"max":42807},{"min":42809,"max":42809},{"min":42811,"max":42811},{"min":42813,"max":42813},{"min":42815,"max":42815},{"min":42817,"max":42817},{"min":42819,"max":42819},{"min":42821,"max":42821},{"min":42823,"max":42823},{"min":42825,"max":42825},{"min":42827,"max":42827},{"min":42829,"max":42829},{"min":42831,"max":42831},{"min":42833,"max":42833},{"min":42835,"max":42835},{"min":42837,"max":42837},{"min":42839,"max":42839},{"min":42841,"max":42841},{"min":42843,"max":42843},{"min":42845,"max":42845},{"min":42847,"max":42847},{"min":42849,"max":42849},{"min":42851,"max":42851},{"min":42853,"max":42853},{"min":42855,"max":42855},{"min":42857,"max":42857},{"min":42859,"max":42859},{"min":42861,"max":42861},{"min":42863,"max":42863},{"min":42865,"max":42872},{"min":42874,"max":42874},{"min":42876,"max":42876},{"min":42879,"max":42879},{"min":42881,"max":42881},{"min":42883,"max":42883},{"min":42885,"max":42885},{"min":42887,"max":42887},{"min":42892,"max":42892},{"min":42894,"max":42894},{"min":42897,"max":42897},{"min":42899,"max":42901},{"min":42903,"max":42903},{"min":42905,"max":42905},{"min":42907,"max":42907},{"min":42909,"max":42909},{"min":42911,"max":42911},{"min":42913,"max":42913},{"min":42915,"max":42915},{"min":42917,"max":42917},{"min":42919,"max":42919},{"min":42921,"max":42921},{"min":42927,"max":42927},{"min":42933,"max":42933},{"min":42935,"max":42935},{"min":42937,"max":42937},{"min":42939,"max":42939},{"min":42941,"max":42941},{"min":42943,"max":42943},{"min":42947,"max":42947},{"min":42952,"max":42952},{"min":42954,"max":42954},{"min":42998,"max":42998},{"min":43002,"max":43002},{"min":43824,"max":43866},{"min":43872,"max":43880},{"min":43888,"max":43967},{"min":64256,"max":64262},{"min":64275,"max":64279},{"min":65345,"max":65370},{"min":66600,"max":66639},{"min":66776,"max":66811},{"min":68800,"max":68850},{"min":71872,"max":71903},{"min":93792,"max":93823},{"min":119834,"max":119859},{"min":119886,"max":119892},{"min":119894,"max":119911},{"min":119938,"max":119963},{"min":119990,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120015},{"min":120042,"max":120067},{"min":120094,"max":120119},{"min":120146,"max":120171},{"min":120198,"max":120223},{"min":120250,"max":120275},{"min":120302,"max":120327},{"min":120354,"max":120379},{"min":120406,"max":120431},{"min":120458,"max":120485},{"min":120514,"max":120538},{"min":120540,"max":120545},{"min":120572,"max":120596},{"min":120598,"max":120603},{"min":120630,"max":120654},{"min":120656,"max":120661},{"min":120688,"max":120712},{"min":120714,"max":120719},{"min":120746,"max":120770},{"min":120772,"max":120777},{"min":120779,"max":120779},{"min":125218,"max":125251}]'),Bi=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1161},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2307},{"min":2362,"max":2364},{"min":2366,"max":2383},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2435},{"min":2492,"max":2492},{"min":2494,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2509},{"min":2519,"max":2519},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2563},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2691},{"min":2748,"max":2748},{"min":2750,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2819},{"min":2876,"max":2876},{"min":2878,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3031,"max":3031},{"min":3072,"max":3076},{"min":3134,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3203},{"min":3260,"max":3260},{"min":3262,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3298,"max":3299},{"min":3328,"max":3331},{"min":3387,"max":3388},{"min":3390,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3405},{"min":3415,"max":3415},{"min":3426,"max":3427},{"min":3457,"max":3459},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3902,"max":3903},{"min":3953,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4139,"max":4158},{"min":4182,"max":4185},{"min":4190,"max":4192},{"min":4194,"max":4196},{"min":4199,"max":4205},{"min":4209,"max":4212},{"min":4226,"max":4237},{"min":4239,"max":4239},{"min":4250,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6679,"max":6683},{"min":6741,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6848},{"min":6912,"max":6916},{"min":6964,"max":6980},{"min":7019,"max":7027},{"min":7040,"max":7042},{"min":7073,"max":7085},{"min":7142,"max":7155},{"min":7204,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7415,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8400,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12335},{"min":12441,"max":12442},{"min":42607,"max":42610},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43043,"max":43047},{"min":43052,"max":43052},{"min":43136,"max":43137},{"min":43188,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43347},{"min":43392,"max":43395},{"min":43443,"max":43456},{"min":43493,"max":43493},{"min":43561,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43597},{"min":43643,"max":43645},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43755,"max":43759},{"min":43765,"max":43766},{"min":44003,"max":44010},{"min":44012,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69632,"max":69634},{"min":69688,"max":69702},{"min":69759,"max":69762},{"min":69808,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69940},{"min":69957,"max":69958},{"min":70003,"max":70003},{"min":70016,"max":70018},{"min":70067,"max":70080},{"min":70089,"max":70092},{"min":70094,"max":70095},{"min":70188,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70378},{"min":70400,"max":70403},{"min":70459,"max":70460},{"min":70462,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70487,"max":70487},{"min":70498,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70709,"max":70726},{"min":70750,"max":70750},{"min":70832,"max":70851},{"min":71087,"max":71093},{"min":71096,"max":71104},{"min":71132,"max":71133},{"min":71216,"max":71232},{"min":71339,"max":71351},{"min":71453,"max":71467},{"min":71724,"max":71738},{"min":71984,"max":71989},{"min":71991,"max":71992},{"min":71995,"max":71998},{"min":72000,"max":72000},{"min":72002,"max":72003},{"min":72145,"max":72151},{"min":72154,"max":72160},{"min":72164,"max":72164},{"min":72193,"max":72202},{"min":72243,"max":72249},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72283},{"min":72330,"max":72345},{"min":72751,"max":72758},{"min":72760,"max":72767},{"min":72850,"max":72871},{"min":72873,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73098,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73111},{"min":73459,"max":73462},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94033,"max":94087},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":94192,"max":94193},{"min":113821,"max":113822},{"min":119141,"max":119145},{"min":119149,"max":119154},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917760,"max":917999}]'),Wi=JSON.parse('[{"min":43,"max":43},{"min":60,"max":62},{"min":124,"max":124},{"min":126,"max":126},{"min":172,"max":172},{"min":177,"max":177},{"min":215,"max":215},{"min":247,"max":247},{"min":1014,"max":1014},{"min":1542,"max":1544},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8314,"max":8316},{"min":8330,"max":8332},{"min":8472,"max":8472},{"min":8512,"max":8516},{"min":8523,"max":8523},{"min":8592,"max":8596},{"min":8602,"max":8603},{"min":8608,"max":8608},{"min":8611,"max":8611},{"min":8614,"max":8614},{"min":8622,"max":8622},{"min":8654,"max":8655},{"min":8658,"max":8658},{"min":8660,"max":8660},{"min":8692,"max":8959},{"min":8992,"max":8993},{"min":9084,"max":9084},{"min":9115,"max":9139},{"min":9180,"max":9185},{"min":9655,"max":9655},{"min":9665,"max":9665},{"min":9720,"max":9727},{"min":9839,"max":9839},{"min":10176,"max":10180},{"min":10183,"max":10213},{"min":10224,"max":10239},{"min":10496,"max":10626},{"min":10649,"max":10711},{"min":10716,"max":10747},{"min":10750,"max":11007},{"min":11056,"max":11076},{"min":11079,"max":11084},{"min":64297,"max":64297},{"min":65122,"max":65122},{"min":65124,"max":65126},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65506,"max":65506},{"min":65513,"max":65516},{"min":120513,"max":120513},{"min":120539,"max":120539},{"min":120571,"max":120571},{"min":120597,"max":120597},{"min":120629,"max":120629},{"min":120655,"max":120655},{"min":120687,"max":120687},{"min":120713,"max":120713},{"min":120745,"max":120745},{"min":120771,"max":120771},{"min":126704,"max":126705}]'),Fi=JSON.parse('[{"min":688,"max":705},{"min":710,"max":721},{"min":736,"max":740},{"min":748,"max":748},{"min":750,"max":750},{"min":884,"max":884},{"min":890,"max":890},{"min":1369,"max":1369},{"min":1600,"max":1600},{"min":1765,"max":1766},{"min":2036,"max":2037},{"min":2042,"max":2042},{"min":2074,"max":2074},{"min":2084,"max":2084},{"min":2088,"max":2088},{"min":2417,"max":2417},{"min":3654,"max":3654},{"min":3782,"max":3782},{"min":4348,"max":4348},{"min":6103,"max":6103},{"min":6211,"max":6211},{"min":6823,"max":6823},{"min":7288,"max":7293},{"min":7468,"max":7530},{"min":7544,"max":7544},{"min":7579,"max":7615},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":11388,"max":11389},{"min":11631,"max":11631},{"min":11823,"max":11823},{"min":12293,"max":12293},{"min":12337,"max":12341},{"min":12347,"max":12347},{"min":12445,"max":12446},{"min":12540,"max":12542},{"min":40981,"max":40981},{"min":42232,"max":42237},{"min":42508,"max":42508},{"min":42623,"max":42623},{"min":42652,"max":42653},{"min":42775,"max":42783},{"min":42864,"max":42864},{"min":42888,"max":42888},{"min":43000,"max":43001},{"min":43471,"max":43471},{"min":43494,"max":43494},{"min":43632,"max":43632},{"min":43741,"max":43741},{"min":43763,"max":43764},{"min":43868,"max":43871},{"min":43881,"max":43881},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":92992,"max":92995},{"min":94099,"max":94111},{"min":94176,"max":94177},{"min":94179,"max":94179},{"min":123191,"max":123197},{"min":125259,"max":125259}]'),Qi=JSON.parse('[{"min":94,"max":94},{"min":96,"max":96},{"min":168,"max":168},{"min":175,"max":175},{"min":180,"max":180},{"min":184,"max":184},{"min":706,"max":709},{"min":722,"max":735},{"min":741,"max":747},{"min":749,"max":749},{"min":751,"max":767},{"min":885,"max":885},{"min":900,"max":901},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":12443,"max":12444},{"min":42752,"max":42774},{"min":42784,"max":42785},{"min":42889,"max":42890},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64434,"max":64449},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65507,"max":65507},{"min":127995,"max":127999}]'),Hi=JSON.parse('[{"min":768,"max":879},{"min":1155,"max":1159},{"min":1425,"max":1469},{"min":1471,"max":1471},{"min":1473,"max":1474},{"min":1476,"max":1477},{"min":1479,"max":1479},{"min":1552,"max":1562},{"min":1611,"max":1631},{"min":1648,"max":1648},{"min":1750,"max":1756},{"min":1759,"max":1764},{"min":1767,"max":1768},{"min":1770,"max":1773},{"min":1809,"max":1809},{"min":1840,"max":1866},{"min":1958,"max":1968},{"min":2027,"max":2035},{"min":2045,"max":2045},{"min":2070,"max":2073},{"min":2075,"max":2083},{"min":2085,"max":2087},{"min":2089,"max":2093},{"min":2137,"max":2139},{"min":2259,"max":2273},{"min":2275,"max":2306},{"min":2362,"max":2362},{"min":2364,"max":2364},{"min":2369,"max":2376},{"min":2381,"max":2381},{"min":2385,"max":2391},{"min":2402,"max":2403},{"min":2433,"max":2433},{"min":2492,"max":2492},{"min":2497,"max":2500},{"min":2509,"max":2509},{"min":2530,"max":2531},{"min":2558,"max":2558},{"min":2561,"max":2562},{"min":2620,"max":2620},{"min":2625,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2672,"max":2673},{"min":2677,"max":2677},{"min":2689,"max":2690},{"min":2748,"max":2748},{"min":2753,"max":2757},{"min":2759,"max":2760},{"min":2765,"max":2765},{"min":2786,"max":2787},{"min":2810,"max":2815},{"min":2817,"max":2817},{"min":2876,"max":2876},{"min":2879,"max":2879},{"min":2881,"max":2884},{"min":2893,"max":2893},{"min":2901,"max":2902},{"min":2914,"max":2915},{"min":2946,"max":2946},{"min":3008,"max":3008},{"min":3021,"max":3021},{"min":3072,"max":3072},{"min":3076,"max":3076},{"min":3134,"max":3136},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3170,"max":3171},{"min":3201,"max":3201},{"min":3260,"max":3260},{"min":3263,"max":3263},{"min":3270,"max":3270},{"min":3276,"max":3277},{"min":3298,"max":3299},{"min":3328,"max":3329},{"min":3387,"max":3388},{"min":3393,"max":3396},{"min":3405,"max":3405},{"min":3426,"max":3427},{"min":3457,"max":3457},{"min":3530,"max":3530},{"min":3538,"max":3540},{"min":3542,"max":3542},{"min":3633,"max":3633},{"min":3636,"max":3642},{"min":3655,"max":3662},{"min":3761,"max":3761},{"min":3764,"max":3772},{"min":3784,"max":3789},{"min":3864,"max":3865},{"min":3893,"max":3893},{"min":3895,"max":3895},{"min":3897,"max":3897},{"min":3953,"max":3966},{"min":3968,"max":3972},{"min":3974,"max":3975},{"min":3981,"max":3991},{"min":3993,"max":4028},{"min":4038,"max":4038},{"min":4141,"max":4144},{"min":4146,"max":4151},{"min":4153,"max":4154},{"min":4157,"max":4158},{"min":4184,"max":4185},{"min":4190,"max":4192},{"min":4209,"max":4212},{"min":4226,"max":4226},{"min":4229,"max":4230},{"min":4237,"max":4237},{"min":4253,"max":4253},{"min":4957,"max":4959},{"min":5906,"max":5908},{"min":5938,"max":5940},{"min":5970,"max":5971},{"min":6002,"max":6003},{"min":6068,"max":6069},{"min":6071,"max":6077},{"min":6086,"max":6086},{"min":6089,"max":6099},{"min":6109,"max":6109},{"min":6155,"max":6157},{"min":6277,"max":6278},{"min":6313,"max":6313},{"min":6432,"max":6434},{"min":6439,"max":6440},{"min":6450,"max":6450},{"min":6457,"max":6459},{"min":6679,"max":6680},{"min":6683,"max":6683},{"min":6742,"max":6742},{"min":6744,"max":6750},{"min":6752,"max":6752},{"min":6754,"max":6754},{"min":6757,"max":6764},{"min":6771,"max":6780},{"min":6783,"max":6783},{"min":6832,"max":6845},{"min":6847,"max":6848},{"min":6912,"max":6915},{"min":6964,"max":6964},{"min":6966,"max":6970},{"min":6972,"max":6972},{"min":6978,"max":6978},{"min":7019,"max":7027},{"min":7040,"max":7041},{"min":7074,"max":7077},{"min":7080,"max":7081},{"min":7083,"max":7085},{"min":7142,"max":7142},{"min":7144,"max":7145},{"min":7149,"max":7149},{"min":7151,"max":7153},{"min":7212,"max":7219},{"min":7222,"max":7223},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8400,"max":8412},{"min":8417,"max":8417},{"min":8421,"max":8432},{"min":11503,"max":11505},{"min":11647,"max":11647},{"min":11744,"max":11775},{"min":12330,"max":12333},{"min":12441,"max":12442},{"min":42607,"max":42607},{"min":42612,"max":42621},{"min":42654,"max":42655},{"min":42736,"max":42737},{"min":43010,"max":43010},{"min":43014,"max":43014},{"min":43019,"max":43019},{"min":43045,"max":43046},{"min":43052,"max":43052},{"min":43204,"max":43205},{"min":43232,"max":43249},{"min":43263,"max":43263},{"min":43302,"max":43309},{"min":43335,"max":43345},{"min":43392,"max":43394},{"min":43443,"max":43443},{"min":43446,"max":43449},{"min":43452,"max":43453},{"min":43493,"max":43493},{"min":43561,"max":43566},{"min":43569,"max":43570},{"min":43573,"max":43574},{"min":43587,"max":43587},{"min":43596,"max":43596},{"min":43644,"max":43644},{"min":43696,"max":43696},{"min":43698,"max":43700},{"min":43703,"max":43704},{"min":43710,"max":43711},{"min":43713,"max":43713},{"min":43756,"max":43757},{"min":43766,"max":43766},{"min":44005,"max":44005},{"min":44008,"max":44008},{"min":44013,"max":44013},{"min":64286,"max":64286},{"min":65024,"max":65039},{"min":65056,"max":65071},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":66422,"max":66426},{"min":68097,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68111},{"min":68152,"max":68154},{"min":68159,"max":68159},{"min":68325,"max":68326},{"min":68900,"max":68903},{"min":69291,"max":69292},{"min":69446,"max":69456},{"min":69633,"max":69633},{"min":69688,"max":69702},{"min":69759,"max":69761},{"min":69811,"max":69814},{"min":69817,"max":69818},{"min":69888,"max":69890},{"min":69927,"max":69931},{"min":69933,"max":69940},{"min":70003,"max":70003},{"min":70016,"max":70017},{"min":70070,"max":70078},{"min":70089,"max":70092},{"min":70095,"max":70095},{"min":70191,"max":70193},{"min":70196,"max":70196},{"min":70198,"max":70199},{"min":70206,"max":70206},{"min":70367,"max":70367},{"min":70371,"max":70378},{"min":70400,"max":70401},{"min":70459,"max":70460},{"min":70464,"max":70464},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":70712,"max":70719},{"min":70722,"max":70724},{"min":70726,"max":70726},{"min":70750,"max":70750},{"min":70835,"max":70840},{"min":70842,"max":70842},{"min":70847,"max":70848},{"min":70850,"max":70851},{"min":71090,"max":71093},{"min":71100,"max":71101},{"min":71103,"max":71104},{"min":71132,"max":71133},{"min":71219,"max":71226},{"min":71229,"max":71229},{"min":71231,"max":71232},{"min":71339,"max":71339},{"min":71341,"max":71341},{"min":71344,"max":71349},{"min":71351,"max":71351},{"min":71453,"max":71455},{"min":71458,"max":71461},{"min":71463,"max":71467},{"min":71727,"max":71735},{"min":71737,"max":71738},{"min":71995,"max":71996},{"min":71998,"max":71998},{"min":72003,"max":72003},{"min":72148,"max":72151},{"min":72154,"max":72155},{"min":72160,"max":72160},{"min":72193,"max":72202},{"min":72243,"max":72248},{"min":72251,"max":72254},{"min":72263,"max":72263},{"min":72273,"max":72278},{"min":72281,"max":72283},{"min":72330,"max":72342},{"min":72344,"max":72345},{"min":72752,"max":72758},{"min":72760,"max":72765},{"min":72767,"max":72767},{"min":72850,"max":72871},{"min":72874,"max":72880},{"min":72882,"max":72883},{"min":72885,"max":72886},{"min":73009,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73029},{"min":73031,"max":73031},{"min":73104,"max":73105},{"min":73109,"max":73109},{"min":73111,"max":73111},{"min":73459,"max":73460},{"min":92912,"max":92916},{"min":92976,"max":92982},{"min":94031,"max":94031},{"min":94095,"max":94098},{"min":94180,"max":94180},{"min":113821,"max":113822},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":119362,"max":119364},{"min":121344,"max":121398},{"min":121403,"max":121452},{"min":121461,"max":121461},{"min":121476,"max":121476},{"min":121499,"max":121503},{"min":121505,"max":121519},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922},{"min":123184,"max":123190},{"min":123628,"max":123631},{"min":125136,"max":125142},{"min":125252,"max":125258},{"min":917760,"max":917999}]'),ji=JSON.parse('[{"min":48,"max":57},{"min":178,"max":179},{"min":185,"max":185},{"min":188,"max":190},{"min":1632,"max":1641},{"min":1776,"max":1785},{"min":1984,"max":1993},{"min":2406,"max":2415},{"min":2534,"max":2543},{"min":2548,"max":2553},{"min":2662,"max":2671},{"min":2790,"max":2799},{"min":2918,"max":2927},{"min":2930,"max":2935},{"min":3046,"max":3058},{"min":3174,"max":3183},{"min":3192,"max":3198},{"min":3302,"max":3311},{"min":3416,"max":3422},{"min":3430,"max":3448},{"min":3558,"max":3567},{"min":3664,"max":3673},{"min":3792,"max":3801},{"min":3872,"max":3891},{"min":4160,"max":4169},{"min":4240,"max":4249},{"min":4969,"max":4988},{"min":5870,"max":5872},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6160,"max":6169},{"min":6470,"max":6479},{"min":6608,"max":6618},{"min":6784,"max":6793},{"min":6800,"max":6809},{"min":6992,"max":7001},{"min":7088,"max":7097},{"min":7232,"max":7241},{"min":7248,"max":7257},{"min":8304,"max":8304},{"min":8308,"max":8313},{"min":8320,"max":8329},{"min":8528,"max":8578},{"min":8581,"max":8585},{"min":9312,"max":9371},{"min":9450,"max":9471},{"min":10102,"max":10131},{"min":11517,"max":11517},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12346},{"min":12690,"max":12693},{"min":12832,"max":12841},{"min":12872,"max":12879},{"min":12881,"max":12895},{"min":12928,"max":12937},{"min":12977,"max":12991},{"min":42528,"max":42537},{"min":42726,"max":42735},{"min":43056,"max":43061},{"min":43216,"max":43225},{"min":43264,"max":43273},{"min":43472,"max":43481},{"min":43504,"max":43513},{"min":43600,"max":43609},{"min":44016,"max":44025},{"min":65296,"max":65305},{"min":65799,"max":65843},{"min":65856,"max":65912},{"min":65930,"max":65931},{"min":66273,"max":66299},{"min":66336,"max":66339},{"min":66369,"max":66369},{"min":66378,"max":66378},{"min":66513,"max":66517},{"min":66720,"max":66729},{"min":67672,"max":67679},{"min":67705,"max":67711},{"min":67751,"max":67759},{"min":67835,"max":67839},{"min":67862,"max":67867},{"min":68028,"max":68029},{"min":68032,"max":68047},{"min":68050,"max":68095},{"min":68160,"max":68168},{"min":68221,"max":68222},{"min":68253,"max":68255},{"min":68331,"max":68335},{"min":68440,"max":68447},{"min":68472,"max":68479},{"min":68521,"max":68527},{"min":68858,"max":68863},{"min":68912,"max":68921},{"min":69216,"max":69246},{"min":69405,"max":69414},{"min":69457,"max":69460},{"min":69573,"max":69579},{"min":69714,"max":69743},{"min":69872,"max":69881},{"min":69942,"max":69951},{"min":70096,"max":70105},{"min":70113,"max":70132},{"min":70384,"max":70393},{"min":70736,"max":70745},{"min":70864,"max":70873},{"min":71248,"max":71257},{"min":71360,"max":71369},{"min":71472,"max":71483},{"min":71904,"max":71922},{"min":72016,"max":72025},{"min":72784,"max":72812},{"min":73040,"max":73049},{"min":73120,"max":73129},{"min":73664,"max":73684},{"min":74752,"max":74862},{"min":92768,"max":92777},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93824,"max":93846},{"min":119520,"max":119539},{"min":119648,"max":119672},{"min":120782,"max":120831},{"min":123200,"max":123209},{"min":123632,"max":123641},{"min":125127,"max":125135},{"min":125264,"max":125273},{"min":126065,"max":126123},{"min":126125,"max":126127},{"min":126129,"max":126132},{"min":126209,"max":126253},{"min":126255,"max":126269},{"min":127232,"max":127244},{"min":130032,"max":130041}]'),zi=JSON.parse('[{"min":40,"max":40},{"min":91,"max":91},{"min":123,"max":123},{"min":3898,"max":3898},{"min":3900,"max":3900},{"min":5787,"max":5787},{"min":8218,"max":8218},{"min":8222,"max":8222},{"min":8261,"max":8261},{"min":8317,"max":8317},{"min":8333,"max":8333},{"min":8968,"max":8968},{"min":8970,"max":8970},{"min":9001,"max":9001},{"min":10088,"max":10088},{"min":10090,"max":10090},{"min":10092,"max":10092},{"min":10094,"max":10094},{"min":10096,"max":10096},{"min":10098,"max":10098},{"min":10100,"max":10100},{"min":10181,"max":10181},{"min":10214,"max":10214},{"min":10216,"max":10216},{"min":10218,"max":10218},{"min":10220,"max":10220},{"min":10222,"max":10222},{"min":10627,"max":10627},{"min":10629,"max":10629},{"min":10631,"max":10631},{"min":10633,"max":10633},{"min":10635,"max":10635},{"min":10637,"max":10637},{"min":10639,"max":10639},{"min":10641,"max":10641},{"min":10643,"max":10643},{"min":10645,"max":10645},{"min":10647,"max":10647},{"min":10712,"max":10712},{"min":10714,"max":10714},{"min":10748,"max":10748},{"min":11810,"max":11810},{"min":11812,"max":11812},{"min":11814,"max":11814},{"min":11816,"max":11816},{"min":11842,"max":11842},{"min":12296,"max":12296},{"min":12298,"max":12298},{"min":12300,"max":12300},{"min":12302,"max":12302},{"min":12304,"max":12304},{"min":12308,"max":12308},{"min":12310,"max":12310},{"min":12312,"max":12312},{"min":12314,"max":12314},{"min":12317,"max":12317},{"min":64831,"max":64831},{"min":65047,"max":65047},{"min":65077,"max":65077},{"min":65079,"max":65079},{"min":65081,"max":65081},{"min":65083,"max":65083},{"min":65085,"max":65085},{"min":65087,"max":65087},{"min":65089,"max":65089},{"min":65091,"max":65091},{"min":65095,"max":65095},{"min":65113,"max":65113},{"min":65115,"max":65115},{"min":65117,"max":65117},{"min":65288,"max":65288},{"min":65339,"max":65339},{"min":65371,"max":65371},{"min":65375,"max":65375},{"min":65378,"max":65378}]'),Ui=JSON.parse('[{"min":0,"max":31},{"min":127,"max":159},{"min":173,"max":173},{"min":888,"max":889},{"min":896,"max":899},{"min":907,"max":907},{"min":909,"max":909},{"min":930,"max":930},{"min":1328,"max":1328},{"min":1367,"max":1368},{"min":1419,"max":1420},{"min":1424,"max":1424},{"min":1480,"max":1487},{"min":1515,"max":1518},{"min":1525,"max":1541},{"min":1564,"max":1565},{"min":1757,"max":1757},{"min":1806,"max":1807},{"min":1867,"max":1868},{"min":1970,"max":1983},{"min":2043,"max":2044},{"min":2094,"max":2095},{"min":2111,"max":2111},{"min":2140,"max":2141},{"min":2143,"max":2143},{"min":2155,"max":2207},{"min":2229,"max":2229},{"min":2248,"max":2258},{"min":2274,"max":2274},{"min":2436,"max":2436},{"min":2445,"max":2446},{"min":2449,"max":2450},{"min":2473,"max":2473},{"min":2481,"max":2481},{"min":2483,"max":2485},{"min":2490,"max":2491},{"min":2501,"max":2502},{"min":2505,"max":2506},{"min":2511,"max":2518},{"min":2520,"max":2523},{"min":2526,"max":2526},{"min":2532,"max":2533},{"min":2559,"max":2560},{"min":2564,"max":2564},{"min":2571,"max":2574},{"min":2577,"max":2578},{"min":2601,"max":2601},{"min":2609,"max":2609},{"min":2612,"max":2612},{"min":2615,"max":2615},{"min":2618,"max":2619},{"min":2621,"max":2621},{"min":2627,"max":2630},{"min":2633,"max":2634},{"min":2638,"max":2640},{"min":2642,"max":2648},{"min":2653,"max":2653},{"min":2655,"max":2661},{"min":2679,"max":2688},{"min":2692,"max":2692},{"min":2702,"max":2702},{"min":2706,"max":2706},{"min":2729,"max":2729},{"min":2737,"max":2737},{"min":2740,"max":2740},{"min":2746,"max":2747},{"min":2758,"max":2758},{"min":2762,"max":2762},{"min":2766,"max":2767},{"min":2769,"max":2783},{"min":2788,"max":2789},{"min":2802,"max":2808},{"min":2816,"max":2816},{"min":2820,"max":2820},{"min":2829,"max":2830},{"min":2833,"max":2834},{"min":2857,"max":2857},{"min":2865,"max":2865},{"min":2868,"max":2868},{"min":2874,"max":2875},{"min":2885,"max":2886},{"min":2889,"max":2890},{"min":2894,"max":2900},{"min":2904,"max":2907},{"min":2910,"max":2910},{"min":2916,"max":2917},{"min":2936,"max":2945},{"min":2948,"max":2948},{"min":2955,"max":2957},{"min":2961,"max":2961},{"min":2966,"max":2968},{"min":2971,"max":2971},{"min":2973,"max":2973},{"min":2976,"max":2978},{"min":2981,"max":2983},{"min":2987,"max":2989},{"min":3002,"max":3005},{"min":3011,"max":3013},{"min":3017,"max":3017},{"min":3022,"max":3023},{"min":3025,"max":3030},{"min":3032,"max":3045},{"min":3067,"max":3071},{"min":3085,"max":3085},{"min":3089,"max":3089},{"min":3113,"max":3113},{"min":3130,"max":3132},{"min":3141,"max":3141},{"min":3145,"max":3145},{"min":3150,"max":3156},{"min":3159,"max":3159},{"min":3163,"max":3167},{"min":3172,"max":3173},{"min":3184,"max":3190},{"min":3213,"max":3213},{"min":3217,"max":3217},{"min":3241,"max":3241},{"min":3252,"max":3252},{"min":3258,"max":3259},{"min":3269,"max":3269},{"min":3273,"max":3273},{"min":3278,"max":3284},{"min":3287,"max":3293},{"min":3295,"max":3295},{"min":3300,"max":3301},{"min":3312,"max":3312},{"min":3315,"max":3327},{"min":3341,"max":3341},{"min":3345,"max":3345},{"min":3397,"max":3397},{"min":3401,"max":3401},{"min":3408,"max":3411},{"min":3428,"max":3429},{"min":3456,"max":3456},{"min":3460,"max":3460},{"min":3479,"max":3481},{"min":3506,"max":3506},{"min":3516,"max":3516},{"min":3518,"max":3519},{"min":3527,"max":3529},{"min":3531,"max":3534},{"min":3541,"max":3541},{"min":3543,"max":3543},{"min":3552,"max":3557},{"min":3568,"max":3569},{"min":3573,"max":3584},{"min":3643,"max":3646},{"min":3676,"max":3712},{"min":3715,"max":3715},{"min":3717,"max":3717},{"min":3723,"max":3723},{"min":3748,"max":3748},{"min":3750,"max":3750},{"min":3774,"max":3775},{"min":3781,"max":3781},{"min":3783,"max":3783},{"min":3790,"max":3791},{"min":3802,"max":3803},{"min":3808,"max":3839},{"min":3912,"max":3912},{"min":3949,"max":3952},{"min":3992,"max":3992},{"min":4029,"max":4029},{"min":4045,"max":4045},{"min":4059,"max":4095},{"min":4294,"max":4294},{"min":4296,"max":4300},{"min":4302,"max":4303},{"min":4681,"max":4681},{"min":4686,"max":4687},{"min":4695,"max":4695},{"min":4697,"max":4697},{"min":4702,"max":4703},{"min":4745,"max":4745},{"min":4750,"max":4751},{"min":4785,"max":4785},{"min":4790,"max":4791},{"min":4799,"max":4799},{"min":4801,"max":4801},{"min":4806,"max":4807},{"min":4823,"max":4823},{"min":4881,"max":4881},{"min":4886,"max":4887},{"min":4955,"max":4956},{"min":4989,"max":4991},{"min":5018,"max":5023},{"min":5110,"max":5111},{"min":5118,"max":5119},{"min":5789,"max":5791},{"min":5881,"max":5887},{"min":5901,"max":5901},{"min":5909,"max":5919},{"min":5943,"max":5951},{"min":5972,"max":5983},{"min":5997,"max":5997},{"min":6001,"max":6001},{"min":6004,"max":6015},{"min":6110,"max":6111},{"min":6122,"max":6127},{"min":6138,"max":6143},{"min":6158,"max":6159},{"min":6170,"max":6175},{"min":6265,"max":6271},{"min":6315,"max":6319},{"min":6390,"max":6399},{"min":6431,"max":6431},{"min":6444,"max":6447},{"min":6460,"max":6463},{"min":6465,"max":6467},{"min":6510,"max":6511},{"min":6517,"max":6527},{"min":6572,"max":6575},{"min":6602,"max":6607},{"min":6619,"max":6621},{"min":6684,"max":6685},{"min":6751,"max":6751},{"min":6781,"max":6782},{"min":6794,"max":6799},{"min":6810,"max":6815},{"min":6830,"max":6831},{"min":6849,"max":6911},{"min":6988,"max":6991},{"min":7037,"max":7039},{"min":7156,"max":7163},{"min":7224,"max":7226},{"min":7242,"max":7244},{"min":7305,"max":7311},{"min":7355,"max":7356},{"min":7368,"max":7375},{"min":7419,"max":7423},{"min":7674,"max":7674},{"min":7958,"max":7959},{"min":7966,"max":7967},{"min":8006,"max":8007},{"min":8014,"max":8015},{"min":8024,"max":8024},{"min":8026,"max":8026},{"min":8028,"max":8028},{"min":8030,"max":8030},{"min":8062,"max":8063},{"min":8117,"max":8117},{"min":8133,"max":8133},{"min":8148,"max":8149},{"min":8156,"max":8156},{"min":8176,"max":8177},{"min":8181,"max":8181},{"min":8191,"max":8191},{"min":8203,"max":8207},{"min":8234,"max":8238},{"min":8288,"max":8303},{"min":8306,"max":8307},{"min":8335,"max":8335},{"min":8349,"max":8351},{"min":8384,"max":8399},{"min":8433,"max":8447},{"min":8588,"max":8591},{"min":9255,"max":9279},{"min":9291,"max":9311},{"min":11124,"max":11125},{"min":11158,"max":11158},{"min":11311,"max":11311},{"min":11359,"max":11359},{"min":11508,"max":11512},{"min":11558,"max":11558},{"min":11560,"max":11564},{"min":11566,"max":11567},{"min":11624,"max":11630},{"min":11633,"max":11646},{"min":11671,"max":11679},{"min":11687,"max":11687},{"min":11695,"max":11695},{"min":11703,"max":11703},{"min":11711,"max":11711},{"min":11719,"max":11719},{"min":11727,"max":11727},{"min":11735,"max":11735},{"min":11743,"max":11743},{"min":11859,"max":11903},{"min":11930,"max":11930},{"min":12020,"max":12031},{"min":12246,"max":12271},{"min":12284,"max":12287},{"min":12352,"max":12352},{"min":12439,"max":12440},{"min":12544,"max":12548},{"min":12592,"max":12592},{"min":12687,"max":12687},{"min":12772,"max":12783},{"min":12831,"max":12831},{"min":40957,"max":40959},{"min":42125,"max":42127},{"min":42183,"max":42191},{"min":42540,"max":42559},{"min":42744,"max":42751},{"min":42944,"max":42945},{"min":42955,"max":42996},{"min":43053,"max":43055},{"min":43066,"max":43071},{"min":43128,"max":43135},{"min":43206,"max":43213},{"min":43226,"max":43231},{"min":43348,"max":43358},{"min":43389,"max":43391},{"min":43470,"max":43470},{"min":43482,"max":43485},{"min":43519,"max":43519},{"min":43575,"max":43583},{"min":43598,"max":43599},{"min":43610,"max":43611},{"min":43715,"max":43738},{"min":43767,"max":43776},{"min":43783,"max":43784},{"min":43791,"max":43792},{"min":43799,"max":43807},{"min":43815,"max":43815},{"min":43823,"max":43823},{"min":43884,"max":43887},{"min":44014,"max":44015},{"min":44026,"max":44031},{"min":55204,"max":55215},{"min":55239,"max":55242},{"min":55292,"max":63743},{"min":64110,"max":64111},{"min":64218,"max":64255},{"min":64263,"max":64274},{"min":64280,"max":64284},{"min":64311,"max":64311},{"min":64317,"max":64317},{"min":64319,"max":64319},{"min":64322,"max":64322},{"min":64325,"max":64325},{"min":64450,"max":64466},{"min":64832,"max":64847},{"min":64912,"max":64913},{"min":64968,"max":65007},{"min":65022,"max":65023},{"min":65050,"max":65055},{"min":65107,"max":65107},{"min":65127,"max":65127},{"min":65132,"max":65135},{"min":65141,"max":65141},{"min":65277,"max":65280},{"min":65471,"max":65473},{"min":65480,"max":65481},{"min":65488,"max":65489},{"min":65496,"max":65497},{"min":65501,"max":65503},{"min":65511,"max":65511},{"min":65519,"max":65531},{"min":65534,"max":65535},{"min":65548,"max":65548},{"min":65575,"max":65575},{"min":65595,"max":65595},{"min":65598,"max":65598},{"min":65614,"max":65615},{"min":65630,"max":65663},{"min":65787,"max":65791},{"min":65795,"max":65798},{"min":65844,"max":65846},{"min":65935,"max":65935},{"min":65949,"max":65951},{"min":65953,"max":65999},{"min":66046,"max":66175},{"min":66205,"max":66207},{"min":66257,"max":66271},{"min":66300,"max":66303},{"min":66340,"max":66348},{"min":66379,"max":66383},{"min":66427,"max":66431},{"min":66462,"max":66462},{"min":66500,"max":66503},{"min":66518,"max":66559},{"min":66718,"max":66719},{"min":66730,"max":66735},{"min":66772,"max":66775},{"min":66812,"max":66815},{"min":66856,"max":66863},{"min":66916,"max":66926},{"min":66928,"max":67071},{"min":67383,"max":67391},{"min":67414,"max":67423},{"min":67432,"max":67583},{"min":67590,"max":67591},{"min":67593,"max":67593},{"min":67638,"max":67638},{"min":67641,"max":67643},{"min":67645,"max":67646},{"min":67670,"max":67670},{"min":67743,"max":67750},{"min":67760,"max":67807},{"min":67827,"max":67827},{"min":67830,"max":67834},{"min":67868,"max":67870},{"min":67898,"max":67902},{"min":67904,"max":67967},{"min":68024,"max":68027},{"min":68048,"max":68049},{"min":68100,"max":68100},{"min":68103,"max":68107},{"min":68116,"max":68116},{"min":68120,"max":68120},{"min":68150,"max":68151},{"min":68155,"max":68158},{"min":68169,"max":68175},{"min":68185,"max":68191},{"min":68256,"max":68287},{"min":68327,"max":68330},{"min":68343,"max":68351},{"min":68406,"max":68408},{"min":68438,"max":68439},{"min":68467,"max":68471},{"min":68498,"max":68504},{"min":68509,"max":68520},{"min":68528,"max":68607},{"min":68681,"max":68735},{"min":68787,"max":68799},{"min":68851,"max":68857},{"min":68904,"max":68911},{"min":68922,"max":69215},{"min":69247,"max":69247},{"min":69290,"max":69290},{"min":69294,"max":69295},{"min":69298,"max":69375},{"min":69416,"max":69423},{"min":69466,"max":69551},{"min":69580,"max":69599},{"min":69623,"max":69631},{"min":69710,"max":69713},{"min":69744,"max":69758},{"min":69821,"max":69821},{"min":69826,"max":69839},{"min":69865,"max":69871},{"min":69882,"max":69887},{"min":69941,"max":69941},{"min":69960,"max":69967},{"min":70007,"max":70015},{"min":70112,"max":70112},{"min":70133,"max":70143},{"min":70162,"max":70162},{"min":70207,"max":70271},{"min":70279,"max":70279},{"min":70281,"max":70281},{"min":70286,"max":70286},{"min":70302,"max":70302},{"min":70314,"max":70319},{"min":70379,"max":70383},{"min":70394,"max":70399},{"min":70404,"max":70404},{"min":70413,"max":70414},{"min":70417,"max":70418},{"min":70441,"max":70441},{"min":70449,"max":70449},{"min":70452,"max":70452},{"min":70458,"max":70458},{"min":70469,"max":70470},{"min":70473,"max":70474},{"min":70478,"max":70479},{"min":70481,"max":70486},{"min":70488,"max":70492},{"min":70500,"max":70501},{"min":70509,"max":70511},{"min":70517,"max":70655},{"min":70748,"max":70748},{"min":70754,"max":70783},{"min":70856,"max":70863},{"min":70874,"max":71039},{"min":71094,"max":71095},{"min":71134,"max":71167},{"min":71237,"max":71247},{"min":71258,"max":71263},{"min":71277,"max":71295},{"min":71353,"max":71359},{"min":71370,"max":71423},{"min":71451,"max":71452},{"min":71468,"max":71471},{"min":71488,"max":71679},{"min":71740,"max":71839},{"min":71923,"max":71934},{"min":71943,"max":71944},{"min":71946,"max":71947},{"min":71956,"max":71956},{"min":71959,"max":71959},{"min":71990,"max":71990},{"min":71993,"max":71994},{"min":72007,"max":72015},{"min":72026,"max":72095},{"min":72104,"max":72105},{"min":72152,"max":72153},{"min":72165,"max":72191},{"min":72264,"max":72271},{"min":72355,"max":72383},{"min":72441,"max":72703},{"min":72713,"max":72713},{"min":72759,"max":72759},{"min":72774,"max":72783},{"min":72813,"max":72815},{"min":72848,"max":72849},{"min":72872,"max":72872},{"min":72887,"max":72959},{"min":72967,"max":72967},{"min":72970,"max":72970},{"min":73015,"max":73017},{"min":73019,"max":73019},{"min":73022,"max":73022},{"min":73032,"max":73039},{"min":73050,"max":73055},{"min":73062,"max":73062},{"min":73065,"max":73065},{"min":73103,"max":73103},{"min":73106,"max":73106},{"min":73113,"max":73119},{"min":73130,"max":73439},{"min":73465,"max":73647},{"min":73649,"max":73663},{"min":73714,"max":73726},{"min":74650,"max":74751},{"min":74863,"max":74863},{"min":74869,"max":74879},{"min":75076,"max":77823},{"min":78895,"max":82943},{"min":83527,"max":92159},{"min":92729,"max":92735},{"min":92767,"max":92767},{"min":92778,"max":92781},{"min":92784,"max":92879},{"min":92910,"max":92911},{"min":92918,"max":92927},{"min":92998,"max":93007},{"min":93018,"max":93018},{"min":93026,"max":93026},{"min":93048,"max":93052},{"min":93072,"max":93759},{"min":93851,"max":93951},{"min":94027,"max":94030},{"min":94088,"max":94094},{"min":94112,"max":94175},{"min":94181,"max":94191},{"min":94194,"max":94207},{"min":100344,"max":100351},{"min":101590,"max":101631},{"min":101641,"max":110591},{"min":110879,"max":110927},{"min":110931,"max":110947},{"min":110952,"max":110959},{"min":111356,"max":113663},{"min":113771,"max":113775},{"min":113789,"max":113791},{"min":113801,"max":113807},{"min":113818,"max":113819},{"min":113824,"max":118783},{"min":119030,"max":119039},{"min":119079,"max":119080},{"min":119155,"max":119162},{"min":119273,"max":119295},{"min":119366,"max":119519},{"min":119540,"max":119551},{"min":119639,"max":119647},{"min":119673,"max":119807},{"min":119893,"max":119893},{"min":119965,"max":119965},{"min":119968,"max":119969},{"min":119971,"max":119972},{"min":119975,"max":119976},{"min":119981,"max":119981},{"min":119994,"max":119994},{"min":119996,"max":119996},{"min":120004,"max":120004},{"min":120070,"max":120070},{"min":120075,"max":120076},{"min":120085,"max":120085},{"min":120093,"max":120093},{"min":120122,"max":120122},{"min":120127,"max":120127},{"min":120133,"max":120133},{"min":120135,"max":120137},{"min":120145,"max":120145},{"min":120486,"max":120487},{"min":120780,"max":120781},{"min":121484,"max":121498},{"min":121504,"max":121504},{"min":121520,"max":122879},{"min":122887,"max":122887},{"min":122905,"max":122906},{"min":122914,"max":122914},{"min":122917,"max":122917},{"min":122923,"max":123135},{"min":123181,"max":123183},{"min":123198,"max":123199},{"min":123210,"max":123213},{"min":123216,"max":123583},{"min":123642,"max":123646},{"min":123648,"max":124927},{"min":125125,"max":125126},{"min":125143,"max":125183},{"min":125260,"max":125263},{"min":125274,"max":125277},{"min":125280,"max":126064},{"min":126133,"max":126208},{"min":126270,"max":126463},{"min":126468,"max":126468},{"min":126496,"max":126496},{"min":126499,"max":126499},{"min":126501,"max":126502},{"min":126504,"max":126504},{"min":126515,"max":126515},{"min":126520,"max":126520},{"min":126522,"max":126522},{"min":126524,"max":126529},{"min":126531,"max":126534},{"min":126536,"max":126536},{"min":126538,"max":126538},{"min":126540,"max":126540},{"min":126544,"max":126544},{"min":126547,"max":126547},{"min":126549,"max":126550},{"min":126552,"max":126552},{"min":126554,"max":126554},{"min":126556,"max":126556},{"min":126558,"max":126558},{"min":126560,"max":126560},{"min":126563,"max":126563},{"min":126565,"max":126566},{"min":126571,"max":126571},{"min":126579,"max":126579},{"min":126584,"max":126584},{"min":126589,"max":126589},{"min":126591,"max":126591},{"min":126602,"max":126602},{"min":126620,"max":126624},{"min":126628,"max":126628},{"min":126634,"max":126634},{"min":126652,"max":126703},{"min":126706,"max":126975},{"min":127020,"max":127023},{"min":127124,"max":127135},{"min":127151,"max":127152},{"min":127168,"max":127168},{"min":127184,"max":127184},{"min":127222,"max":127231},{"min":127406,"max":127461},{"min":127491,"max":127503},{"min":127548,"max":127551},{"min":127561,"max":127567},{"min":127570,"max":127583},{"min":127590,"max":127743},{"min":128728,"max":128735},{"min":128749,"max":128751},{"min":128765,"max":128767},{"min":128884,"max":128895},{"min":128985,"max":128991},{"min":129004,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129199},{"min":129202,"max":129279},{"min":129401,"max":129401},{"min":129484,"max":129484},{"min":129620,"max":129631},{"min":129646,"max":129647},{"min":129653,"max":129655},{"min":129659,"max":129663},{"min":129671,"max":129679},{"min":129705,"max":129711},{"min":129719,"max":129727},{"min":129731,"max":129743},{"min":129751,"max":129791},{"min":129939,"max":129939},{"min":129995,"max":130031},{"min":130042,"max":131071},{"min":173790,"max":173823},{"min":177973,"max":177983},{"min":178206,"max":178207},{"min":183970,"max":183983},{"min":191457,"max":194559},{"min":195102,"max":196607},{"min":201547,"max":917759},{"min":918000,"max":1114111}]'),Ki=JSON.parse('[{"min":170,"max":170},{"min":186,"max":186},{"min":443,"max":443},{"min":448,"max":451},{"min":660,"max":660},{"min":1488,"max":1514},{"min":1519,"max":1522},{"min":1568,"max":1599},{"min":1601,"max":1610},{"min":1646,"max":1647},{"min":1649,"max":1747},{"min":1749,"max":1749},{"min":1774,"max":1775},{"min":1786,"max":1788},{"min":1791,"max":1791},{"min":1808,"max":1808},{"min":1810,"max":1839},{"min":1869,"max":1957},{"min":1969,"max":1969},{"min":1994,"max":2026},{"min":2048,"max":2069},{"min":2112,"max":2136},{"min":2144,"max":2154},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2308,"max":2361},{"min":2365,"max":2365},{"min":2384,"max":2384},{"min":2392,"max":2401},{"min":2418,"max":2432},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2493,"max":2493},{"min":2510,"max":2510},{"min":2524,"max":2525},{"min":2527,"max":2529},{"min":2544,"max":2545},{"min":2556,"max":2556},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2674,"max":2676},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2749,"max":2749},{"min":2768,"max":2768},{"min":2784,"max":2785},{"min":2809,"max":2809},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2877,"max":2877},{"min":2908,"max":2909},{"min":2911,"max":2913},{"min":2929,"max":2929},{"min":2947,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3024,"max":3024},{"min":3077,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3133},{"min":3160,"max":3162},{"min":3168,"max":3169},{"min":3200,"max":3200},{"min":3205,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3261,"max":3261},{"min":3294,"max":3294},{"min":3296,"max":3297},{"min":3313,"max":3314},{"min":3332,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3386},{"min":3389,"max":3389},{"min":3406,"max":3406},{"min":3412,"max":3414},{"min":3423,"max":3425},{"min":3450,"max":3455},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3585,"max":3632},{"min":3634,"max":3635},{"min":3648,"max":3653},{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3760},{"min":3762,"max":3763},{"min":3773,"max":3773},{"min":3776,"max":3780},{"min":3804,"max":3807},{"min":3840,"max":3840},{"min":3904,"max":3911},{"min":3913,"max":3948},{"min":3976,"max":3980},{"min":4096,"max":4138},{"min":4159,"max":4159},{"min":4176,"max":4181},{"min":4186,"max":4189},{"min":4193,"max":4193},{"min":4197,"max":4198},{"min":4206,"max":4208},{"min":4213,"max":4225},{"min":4238,"max":4238},{"min":4352,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4992,"max":5007},{"min":5121,"max":5740},{"min":5743,"max":5759},{"min":5761,"max":5786},{"min":5792,"max":5866},{"min":5873,"max":5880},{"min":5888,"max":5900},{"min":5902,"max":5905},{"min":5920,"max":5937},{"min":5952,"max":5969},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6016,"max":6067},{"min":6108,"max":6108},{"min":6176,"max":6210},{"min":6212,"max":6264},{"min":6272,"max":6276},{"min":6279,"max":6312},{"min":6314,"max":6314},{"min":6320,"max":6389},{"min":6400,"max":6430},{"min":6480,"max":6509},{"min":6512,"max":6516},{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6656,"max":6678},{"min":6688,"max":6740},{"min":6917,"max":6963},{"min":6981,"max":6987},{"min":7043,"max":7072},{"min":7086,"max":7087},{"min":7098,"max":7141},{"min":7168,"max":7203},{"min":7245,"max":7247},{"min":7258,"max":7287},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7414},{"min":7418,"max":7418},{"min":8501,"max":8504},{"min":11568,"max":11623},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":12294,"max":12294},{"min":12348,"max":12348},{"min":12353,"max":12438},{"min":12447,"max":12447},{"min":12449,"max":12538},{"min":12543,"max":12543},{"min":12549,"max":12591},{"min":12593,"max":12686},{"min":12704,"max":12735},{"min":12784,"max":12799},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":40960,"max":40980},{"min":40982,"max":42124},{"min":42192,"max":42231},{"min":42240,"max":42507},{"min":42512,"max":42527},{"min":42538,"max":42539},{"min":42606,"max":42606},{"min":42656,"max":42725},{"min":42895,"max":42895},{"min":42999,"max":42999},{"min":43003,"max":43009},{"min":43011,"max":43013},{"min":43015,"max":43018},{"min":43020,"max":43042},{"min":43072,"max":43123},{"min":43138,"max":43187},{"min":43250,"max":43255},{"min":43259,"max":43259},{"min":43261,"max":43262},{"min":43274,"max":43301},{"min":43312,"max":43334},{"min":43360,"max":43388},{"min":43396,"max":43442},{"min":43488,"max":43492},{"min":43495,"max":43503},{"min":43514,"max":43518},{"min":43520,"max":43560},{"min":43584,"max":43586},{"min":43588,"max":43595},{"min":43616,"max":43631},{"min":43633,"max":43638},{"min":43642,"max":43642},{"min":43646,"max":43695},{"min":43697,"max":43697},{"min":43701,"max":43702},{"min":43705,"max":43709},{"min":43712,"max":43712},{"min":43714,"max":43714},{"min":43739,"max":43740},{"min":43744,"max":43754},{"min":43762,"max":43762},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822},{"min":43968,"max":44002},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":64285,"max":64285},{"min":64287,"max":64296},{"min":64298,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64433},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65019},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":65382,"max":65391},{"min":65393,"max":65437},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500},{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":66176,"max":66204},{"min":66208,"max":66256},{"min":66304,"max":66335},{"min":66349,"max":66368},{"min":66370,"max":66377},{"min":66384,"max":66421},{"min":66432,"max":66461},{"min":66464,"max":66499},{"min":66504,"max":66511},{"min":66640,"max":66717},{"min":66816,"max":66855},{"min":66864,"max":66915},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67669},{"min":67680,"max":67702},{"min":67712,"max":67742},{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67840,"max":67861},{"min":67872,"max":67897},{"min":67968,"max":68023},{"min":68030,"max":68031},{"min":68096,"max":68096},{"min":68112,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68192,"max":68220},{"min":68224,"max":68252},{"min":68288,"max":68295},{"min":68297,"max":68324},{"min":68352,"max":68405},{"min":68416,"max":68437},{"min":68448,"max":68466},{"min":68480,"max":68497},{"min":68608,"max":68680},{"min":68864,"max":68899},{"min":69248,"max":69289},{"min":69296,"max":69297},{"min":69376,"max":69404},{"min":69415,"max":69415},{"min":69424,"max":69445},{"min":69552,"max":69572},{"min":69600,"max":69622},{"min":69635,"max":69687},{"min":69763,"max":69807},{"min":69840,"max":69864},{"min":69891,"max":69926},{"min":69956,"max":69956},{"min":69959,"max":69959},{"min":69968,"max":70002},{"min":70006,"max":70006},{"min":70019,"max":70066},{"min":70081,"max":70084},{"min":70106,"max":70106},{"min":70108,"max":70108},{"min":70144,"max":70161},{"min":70163,"max":70187},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70312},{"min":70320,"max":70366},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70461,"max":70461},{"min":70480,"max":70480},{"min":70493,"max":70497},{"min":70656,"max":70708},{"min":70727,"max":70730},{"min":70751,"max":70753},{"min":70784,"max":70831},{"min":70852,"max":70853},{"min":70855,"max":70855},{"min":71040,"max":71086},{"min":71128,"max":71131},{"min":71168,"max":71215},{"min":71236,"max":71236},{"min":71296,"max":71338},{"min":71352,"max":71352},{"min":71424,"max":71450},{"min":71680,"max":71723},{"min":71935,"max":71942},{"min":71945,"max":71945},{"min":71948,"max":71955},{"min":71957,"max":71958},{"min":71960,"max":71983},{"min":71999,"max":71999},{"min":72001,"max":72001},{"min":72096,"max":72103},{"min":72106,"max":72144},{"min":72161,"max":72161},{"min":72163,"max":72163},{"min":72192,"max":72192},{"min":72203,"max":72242},{"min":72250,"max":72250},{"min":72272,"max":72272},{"min":72284,"max":72329},{"min":72349,"max":72349},{"min":72384,"max":72440},{"min":72704,"max":72712},{"min":72714,"max":72750},{"min":72768,"max":72768},{"min":72818,"max":72847},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73008},{"min":73030,"max":73030},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73097},{"min":73112,"max":73112},{"min":73440,"max":73458},{"min":73648,"max":73648},{"min":73728,"max":74649},{"min":74880,"max":75075},{"min":77824,"max":78894},{"min":82944,"max":83526},{"min":92160,"max":92728},{"min":92736,"max":92766},{"min":92880,"max":92909},{"min":92928,"max":92975},{"min":93027,"max":93047},{"min":93053,"max":93071},{"min":93952,"max":94026},{"min":94032,"max":94032},{"min":94208,"max":100343},{"min":100352,"max":101589},{"min":101632,"max":101640},{"min":110592,"max":110878},{"min":110928,"max":110930},{"min":110948,"max":110951},{"min":110960,"max":111355},{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":123136,"max":123180},{"min":123214,"max":123214},{"min":123584,"max":123627},{"min":124928,"max":125124},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),qi=JSON.parse('[{"min":178,"max":179},{"min":185,"max":185},{"min":188,"max":190},{"min":2548,"max":2553},{"min":2930,"max":2935},{"min":3056,"max":3058},{"min":3192,"max":3198},{"min":3416,"max":3422},{"min":3440,"max":3448},{"min":3882,"max":3891},{"min":4969,"max":4988},{"min":6128,"max":6137},{"min":6618,"max":6618},{"min":8304,"max":8304},{"min":8308,"max":8313},{"min":8320,"max":8329},{"min":8528,"max":8543},{"min":8585,"max":8585},{"min":9312,"max":9371},{"min":9450,"max":9471},{"min":10102,"max":10131},{"min":11517,"max":11517},{"min":12690,"max":12693},{"min":12832,"max":12841},{"min":12872,"max":12879},{"min":12881,"max":12895},{"min":12928,"max":12937},{"min":12977,"max":12991},{"min":43056,"max":43061},{"min":65799,"max":65843},{"min":65909,"max":65912},{"min":65930,"max":65931},{"min":66273,"max":66299},{"min":66336,"max":66339},{"min":67672,"max":67679},{"min":67705,"max":67711},{"min":67751,"max":67759},{"min":67835,"max":67839},{"min":67862,"max":67867},{"min":68028,"max":68029},{"min":68032,"max":68047},{"min":68050,"max":68095},{"min":68160,"max":68168},{"min":68221,"max":68222},{"min":68253,"max":68255},{"min":68331,"max":68335},{"min":68440,"max":68447},{"min":68472,"max":68479},{"min":68521,"max":68527},{"min":68858,"max":68863},{"min":69216,"max":69246},{"min":69405,"max":69414},{"min":69457,"max":69460},{"min":69573,"max":69579},{"min":69714,"max":69733},{"min":70113,"max":70132},{"min":71482,"max":71483},{"min":71914,"max":71922},{"min":72794,"max":72812},{"min":73664,"max":73684},{"min":93019,"max":93025},{"min":93824,"max":93846},{"min":119520,"max":119539},{"min":119648,"max":119672},{"min":125127,"max":125135},{"min":126065,"max":126123},{"min":126125,"max":126127},{"min":126129,"max":126132},{"min":126209,"max":126253},{"min":126255,"max":126269},{"min":127232,"max":127244}]'),$i=JSON.parse('[{"min":33,"max":35},{"min":37,"max":39},{"min":42,"max":42},{"min":44,"max":44},{"min":46,"max":47},{"min":58,"max":59},{"min":63,"max":64},{"min":92,"max":92},{"min":161,"max":161},{"min":167,"max":167},{"min":182,"max":183},{"min":191,"max":191},{"min":894,"max":894},{"min":903,"max":903},{"min":1370,"max":1375},{"min":1417,"max":1417},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1523,"max":1524},{"min":1545,"max":1546},{"min":1548,"max":1549},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1642,"max":1645},{"min":1748,"max":1748},{"min":1792,"max":1805},{"min":2039,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":2416,"max":2416},{"min":2557,"max":2557},{"min":2678,"max":2678},{"min":2800,"max":2800},{"min":3191,"max":3191},{"min":3204,"max":3204},{"min":3572,"max":3572},{"min":3663,"max":3663},{"min":3674,"max":3675},{"min":3844,"max":3858},{"min":3860,"max":3860},{"min":3973,"max":3973},{"min":4048,"max":4052},{"min":4057,"max":4058},{"min":4170,"max":4175},{"min":4347,"max":4347},{"min":4960,"max":4968},{"min":5742,"max":5742},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6104,"max":6106},{"min":6144,"max":6149},{"min":6151,"max":6154},{"min":6468,"max":6469},{"min":6686,"max":6687},{"min":6816,"max":6822},{"min":6824,"max":6829},{"min":7002,"max":7008},{"min":7164,"max":7167},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":7360,"max":7367},{"min":7379,"max":7379},{"min":8214,"max":8215},{"min":8224,"max":8231},{"min":8240,"max":8248},{"min":8251,"max":8254},{"min":8257,"max":8259},{"min":8263,"max":8273},{"min":8275,"max":8275},{"min":8277,"max":8286},{"min":11513,"max":11516},{"min":11518,"max":11519},{"min":11632,"max":11632},{"min":11776,"max":11777},{"min":11782,"max":11784},{"min":11787,"max":11787},{"min":11790,"max":11798},{"min":11800,"max":11801},{"min":11803,"max":11803},{"min":11806,"max":11807},{"min":11818,"max":11822},{"min":11824,"max":11833},{"min":11836,"max":11839},{"min":11841,"max":11841},{"min":11843,"max":11855},{"min":11858,"max":11858},{"min":12289,"max":12291},{"min":12349,"max":12349},{"min":12539,"max":12539},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42611,"max":42611},{"min":42622,"max":42622},{"min":42738,"max":42743},{"min":43124,"max":43127},{"min":43214,"max":43215},{"min":43256,"max":43258},{"min":43260,"max":43260},{"min":43310,"max":43311},{"min":43359,"max":43359},{"min":43457,"max":43469},{"min":43486,"max":43487},{"min":43612,"max":43615},{"min":43742,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":65040,"max":65046},{"min":65049,"max":65049},{"min":65072,"max":65072},{"min":65093,"max":65094},{"min":65097,"max":65100},{"min":65104,"max":65106},{"min":65108,"max":65111},{"min":65119,"max":65121},{"min":65128,"max":65128},{"min":65130,"max":65131},{"min":65281,"max":65283},{"min":65285,"max":65287},{"min":65290,"max":65290},{"min":65292,"max":65292},{"min":65294,"max":65295},{"min":65306,"max":65307},{"min":65311,"max":65312},{"min":65340,"max":65340},{"min":65377,"max":65377},{"min":65380,"max":65381},{"min":65792,"max":65794},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":66927,"max":66927},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":67903,"max":67903},{"min":68176,"max":68184},{"min":68223,"max":68223},{"min":68336,"max":68342},{"min":68409,"max":68415},{"min":68505,"max":68508},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69952,"max":69955},{"min":70004,"max":70005},{"min":70085,"max":70088},{"min":70093,"max":70093},{"min":70107,"max":70107},{"min":70109,"max":70111},{"min":70200,"max":70205},{"min":70313,"max":70313},{"min":70731,"max":70735},{"min":70746,"max":70747},{"min":70749,"max":70749},{"min":70854,"max":70854},{"min":71105,"max":71127},{"min":71233,"max":71235},{"min":71264,"max":71276},{"min":71484,"max":71486},{"min":71739,"max":71739},{"min":72004,"max":72006},{"min":72162,"max":72162},{"min":72255,"max":72262},{"min":72346,"max":72348},{"min":72350,"max":72354},{"min":72769,"max":72773},{"min":72816,"max":72817},{"min":73463,"max":73464},{"min":73727,"max":73727},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92987},{"min":92996,"max":92996},{"min":93847,"max":93850},{"min":94178,"max":94178},{"min":113823,"max":113823},{"min":121479,"max":121483},{"min":125278,"max":125279}]'),Vi=JSON.parse('[{"min":166,"max":166},{"min":169,"max":169},{"min":174,"max":174},{"min":176,"max":176},{"min":1154,"max":1154},{"min":1421,"max":1422},{"min":1550,"max":1551},{"min":1758,"max":1758},{"min":1769,"max":1769},{"min":1789,"max":1790},{"min":2038,"max":2038},{"min":2554,"max":2554},{"min":2928,"max":2928},{"min":3059,"max":3064},{"min":3066,"max":3066},{"min":3199,"max":3199},{"min":3407,"max":3407},{"min":3449,"max":3449},{"min":3841,"max":3843},{"min":3859,"max":3859},{"min":3861,"max":3863},{"min":3866,"max":3871},{"min":3892,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4047},{"min":4053,"max":4056},{"min":4254,"max":4255},{"min":5008,"max":5017},{"min":5741,"max":5741},{"min":6464,"max":6464},{"min":6622,"max":6655},{"min":7009,"max":7018},{"min":7028,"max":7036},{"min":8448,"max":8449},{"min":8451,"max":8454},{"min":8456,"max":8457},{"min":8468,"max":8468},{"min":8470,"max":8471},{"min":8478,"max":8483},{"min":8485,"max":8485},{"min":8487,"max":8487},{"min":8489,"max":8489},{"min":8494,"max":8494},{"min":8506,"max":8507},{"min":8522,"max":8522},{"min":8524,"max":8525},{"min":8527,"max":8527},{"min":8586,"max":8587},{"min":8597,"max":8601},{"min":8604,"max":8607},{"min":8609,"max":8610},{"min":8612,"max":8613},{"min":8615,"max":8621},{"min":8623,"max":8653},{"min":8656,"max":8657},{"min":8659,"max":8659},{"min":8661,"max":8691},{"min":8960,"max":8967},{"min":8972,"max":8991},{"min":8994,"max":9000},{"min":9003,"max":9083},{"min":9085,"max":9114},{"min":9140,"max":9179},{"min":9186,"max":9254},{"min":9280,"max":9290},{"min":9372,"max":9449},{"min":9472,"max":9654},{"min":9656,"max":9664},{"min":9666,"max":9719},{"min":9728,"max":9838},{"min":9840,"max":10087},{"min":10132,"max":10175},{"min":10240,"max":10495},{"min":11008,"max":11055},{"min":11077,"max":11078},{"min":11085,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11493,"max":11498},{"min":11856,"max":11857},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12292,"max":12292},{"min":12306,"max":12307},{"min":12320,"max":12320},{"min":12342,"max":12343},{"min":12350,"max":12351},{"min":12688,"max":12689},{"min":12694,"max":12703},{"min":12736,"max":12771},{"min":12800,"max":12830},{"min":12842,"max":12871},{"min":12880,"max":12880},{"min":12896,"max":12927},{"min":12938,"max":12976},{"min":12992,"max":13311},{"min":19904,"max":19967},{"min":42128,"max":42182},{"min":43048,"max":43051},{"min":43062,"max":43063},{"min":43065,"max":43065},{"min":43639,"max":43641},{"min":65021,"max":65021},{"min":65508,"max":65508},{"min":65512,"max":65512},{"min":65517,"max":65518},{"min":65532,"max":65533},{"min":65847,"max":65855},{"min":65913,"max":65929},{"min":65932,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":67703,"max":67704},{"min":68296,"max":68296},{"min":71487,"max":71487},{"min":73685,"max":73692},{"min":73697,"max":73713},{"min":92988,"max":92991},{"min":92997,"max":92997},{"min":113820,"max":113820},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119146,"max":119148},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119552,"max":119638},{"min":120832,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121478},{"min":123215,"max":123215},{"min":126124,"max":126124},{"min":126254,"max":126254},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127245,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":127994},{"min":128000,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994}]'),Xi=JSON.parse('[{"min":8233,"max":8233}]'),Zi=JSON.parse('[{"min":57344,"max":63743},{"min":983040,"max":1048573},{"min":1048576,"max":1114109}]'),Yi=JSON.parse('[{"min":33,"max":35},{"min":37,"max":42},{"min":44,"max":47},{"min":58,"max":59},{"min":63,"max":64},{"min":91,"max":93},{"min":95,"max":95},{"min":123,"max":123},{"min":125,"max":125},{"min":161,"max":161},{"min":167,"max":167},{"min":171,"max":171},{"min":182,"max":183},{"min":187,"max":187},{"min":191,"max":191},{"min":894,"max":894},{"min":903,"max":903},{"min":1370,"max":1375},{"min":1417,"max":1418},{"min":1470,"max":1470},{"min":1472,"max":1472},{"min":1475,"max":1475},{"min":1478,"max":1478},{"min":1523,"max":1524},{"min":1545,"max":1546},{"min":1548,"max":1549},{"min":1563,"max":1563},{"min":1566,"max":1567},{"min":1642,"max":1645},{"min":1748,"max":1748},{"min":1792,"max":1805},{"min":2039,"max":2041},{"min":2096,"max":2110},{"min":2142,"max":2142},{"min":2404,"max":2405},{"min":2416,"max":2416},{"min":2557,"max":2557},{"min":2678,"max":2678},{"min":2800,"max":2800},{"min":3191,"max":3191},{"min":3204,"max":3204},{"min":3572,"max":3572},{"min":3663,"max":3663},{"min":3674,"max":3675},{"min":3844,"max":3858},{"min":3860,"max":3860},{"min":3898,"max":3901},{"min":3973,"max":3973},{"min":4048,"max":4052},{"min":4057,"max":4058},{"min":4170,"max":4175},{"min":4347,"max":4347},{"min":4960,"max":4968},{"min":5120,"max":5120},{"min":5742,"max":5742},{"min":5787,"max":5788},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6100,"max":6102},{"min":6104,"max":6106},{"min":6144,"max":6154},{"min":6468,"max":6469},{"min":6686,"max":6687},{"min":6816,"max":6822},{"min":6824,"max":6829},{"min":7002,"max":7008},{"min":7164,"max":7167},{"min":7227,"max":7231},{"min":7294,"max":7295},{"min":7360,"max":7367},{"min":7379,"max":7379},{"min":8208,"max":8231},{"min":8240,"max":8259},{"min":8261,"max":8273},{"min":8275,"max":8286},{"min":8317,"max":8318},{"min":8333,"max":8334},{"min":8968,"max":8971},{"min":9001,"max":9002},{"min":10088,"max":10101},{"min":10181,"max":10182},{"min":10214,"max":10223},{"min":10627,"max":10648},{"min":10712,"max":10715},{"min":10748,"max":10749},{"min":11513,"max":11516},{"min":11518,"max":11519},{"min":11632,"max":11632},{"min":11776,"max":11822},{"min":11824,"max":11855},{"min":11858,"max":11858},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12308,"max":12319},{"min":12336,"max":12336},{"min":12349,"max":12349},{"min":12448,"max":12448},{"min":12539,"max":12539},{"min":42238,"max":42239},{"min":42509,"max":42511},{"min":42611,"max":42611},{"min":42622,"max":42622},{"min":42738,"max":42743},{"min":43124,"max":43127},{"min":43214,"max":43215},{"min":43256,"max":43258},{"min":43260,"max":43260},{"min":43310,"max":43311},{"min":43359,"max":43359},{"min":43457,"max":43469},{"min":43486,"max":43487},{"min":43612,"max":43615},{"min":43742,"max":43743},{"min":43760,"max":43761},{"min":44011,"max":44011},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65121},{"min":65123,"max":65123},{"min":65128,"max":65128},{"min":65130,"max":65131},{"min":65281,"max":65283},{"min":65285,"max":65290},{"min":65292,"max":65295},{"min":65306,"max":65307},{"min":65311,"max":65312},{"min":65339,"max":65341},{"min":65343,"max":65343},{"min":65371,"max":65371},{"min":65373,"max":65373},{"min":65375,"max":65381},{"min":65792,"max":65794},{"min":66463,"max":66463},{"min":66512,"max":66512},{"min":66927,"max":66927},{"min":67671,"max":67671},{"min":67871,"max":67871},{"min":67903,"max":67903},{"min":68176,"max":68184},{"min":68223,"max":68223},{"min":68336,"max":68342},{"min":68409,"max":68415},{"min":68505,"max":68508},{"min":69293,"max":69293},{"min":69461,"max":69465},{"min":69703,"max":69709},{"min":69819,"max":69820},{"min":69822,"max":69825},{"min":69952,"max":69955},{"min":70004,"max":70005},{"min":70085,"max":70088},{"min":70093,"max":70093},{"min":70107,"max":70107},{"min":70109,"max":70111},{"min":70200,"max":70205},{"min":70313,"max":70313},{"min":70731,"max":70735},{"min":70746,"max":70747},{"min":70749,"max":70749},{"min":70854,"max":70854},{"min":71105,"max":71127},{"min":71233,"max":71235},{"min":71264,"max":71276},{"min":71484,"max":71486},{"min":71739,"max":71739},{"min":72004,"max":72006},{"min":72162,"max":72162},{"min":72255,"max":72262},{"min":72346,"max":72348},{"min":72350,"max":72354},{"min":72769,"max":72773},{"min":72816,"max":72817},{"min":73463,"max":73464},{"min":73727,"max":73727},{"min":74864,"max":74868},{"min":92782,"max":92783},{"min":92917,"max":92917},{"min":92983,"max":92987},{"min":92996,"max":92996},{"min":93847,"max":93850},{"min":94178,"max":94178},{"min":113823,"max":113823},{"min":121479,"max":121483},{"min":125278,"max":125279}]'),mx=JSON.parse('[{"min":32,"max":32},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8232,"max":8233},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),nx=JSON.parse('[{"min":32,"max":32},{"min":160,"max":160},{"min":5760,"max":5760},{"min":8192,"max":8202},{"min":8239,"max":8239},{"min":8287,"max":8287},{"min":12288,"max":12288}]'),ax=JSON.parse('[{"min":2307,"max":2307},{"min":2363,"max":2363},{"min":2366,"max":2368},{"min":2377,"max":2380},{"min":2382,"max":2383},{"min":2434,"max":2435},{"min":2494,"max":2496},{"min":2503,"max":2504},{"min":2507,"max":2508},{"min":2519,"max":2519},{"min":2563,"max":2563},{"min":2622,"max":2624},{"min":2691,"max":2691},{"min":2750,"max":2752},{"min":2761,"max":2761},{"min":2763,"max":2764},{"min":2818,"max":2819},{"min":2878,"max":2878},{"min":2880,"max":2880},{"min":2887,"max":2888},{"min":2891,"max":2892},{"min":2903,"max":2903},{"min":3006,"max":3007},{"min":3009,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3020},{"min":3031,"max":3031},{"min":3073,"max":3075},{"min":3137,"max":3140},{"min":3202,"max":3203},{"min":3262,"max":3262},{"min":3264,"max":3268},{"min":3271,"max":3272},{"min":3274,"max":3275},{"min":3285,"max":3286},{"min":3330,"max":3331},{"min":3390,"max":3392},{"min":3398,"max":3400},{"min":3402,"max":3404},{"min":3415,"max":3415},{"min":3458,"max":3459},{"min":3535,"max":3537},{"min":3544,"max":3551},{"min":3570,"max":3571},{"min":3902,"max":3903},{"min":3967,"max":3967},{"min":4139,"max":4140},{"min":4145,"max":4145},{"min":4152,"max":4152},{"min":4155,"max":4156},{"min":4182,"max":4183},{"min":4194,"max":4196},{"min":4199,"max":4205},{"min":4227,"max":4228},{"min":4231,"max":4236},{"min":4239,"max":4239},{"min":4250,"max":4252},{"min":6070,"max":6070},{"min":6078,"max":6085},{"min":6087,"max":6088},{"min":6435,"max":6438},{"min":6441,"max":6443},{"min":6448,"max":6449},{"min":6451,"max":6456},{"min":6681,"max":6682},{"min":6741,"max":6741},{"min":6743,"max":6743},{"min":6753,"max":6753},{"min":6755,"max":6756},{"min":6765,"max":6770},{"min":6916,"max":6916},{"min":6965,"max":6965},{"min":6971,"max":6971},{"min":6973,"max":6977},{"min":6979,"max":6980},{"min":7042,"max":7042},{"min":7073,"max":7073},{"min":7078,"max":7079},{"min":7082,"max":7082},{"min":7143,"max":7143},{"min":7146,"max":7148},{"min":7150,"max":7150},{"min":7154,"max":7155},{"min":7204,"max":7211},{"min":7220,"max":7221},{"min":7393,"max":7393},{"min":7415,"max":7415},{"min":12334,"max":12335},{"min":43043,"max":43044},{"min":43047,"max":43047},{"min":43136,"max":43137},{"min":43188,"max":43203},{"min":43346,"max":43347},{"min":43395,"max":43395},{"min":43444,"max":43445},{"min":43450,"max":43451},{"min":43454,"max":43456},{"min":43567,"max":43568},{"min":43571,"max":43572},{"min":43597,"max":43597},{"min":43643,"max":43643},{"min":43645,"max":43645},{"min":43755,"max":43755},{"min":43758,"max":43759},{"min":43765,"max":43765},{"min":44003,"max":44004},{"min":44006,"max":44007},{"min":44009,"max":44010},{"min":44012,"max":44012},{"min":69632,"max":69632},{"min":69634,"max":69634},{"min":69762,"max":69762},{"min":69808,"max":69810},{"min":69815,"max":69816},{"min":69932,"max":69932},{"min":69957,"max":69958},{"min":70018,"max":70018},{"min":70067,"max":70069},{"min":70079,"max":70080},{"min":70094,"max":70094},{"min":70188,"max":70190},{"min":70194,"max":70195},{"min":70197,"max":70197},{"min":70368,"max":70370},{"min":70402,"max":70403},{"min":70462,"max":70463},{"min":70465,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70487,"max":70487},{"min":70498,"max":70499},{"min":70709,"max":70711},{"min":70720,"max":70721},{"min":70725,"max":70725},{"min":70832,"max":70834},{"min":70841,"max":70841},{"min":70843,"max":70846},{"min":70849,"max":70849},{"min":71087,"max":71089},{"min":71096,"max":71099},{"min":71102,"max":71102},{"min":71216,"max":71218},{"min":71227,"max":71228},{"min":71230,"max":71230},{"min":71340,"max":71340},{"min":71342,"max":71343},{"min":71350,"max":71350},{"min":71456,"max":71457},{"min":71462,"max":71462},{"min":71724,"max":71726},{"min":71736,"max":71736},{"min":71984,"max":71989},{"min":71991,"max":71992},{"min":71997,"max":71997},{"min":72000,"max":72000},{"min":72002,"max":72002},{"min":72145,"max":72147},{"min":72156,"max":72159},{"min":72164,"max":72164},{"min":72249,"max":72249},{"min":72279,"max":72280},{"min":72343,"max":72343},{"min":72751,"max":72751},{"min":72766,"max":72766},{"min":72873,"max":72873},{"min":72881,"max":72881},{"min":72884,"max":72884},{"min":73098,"max":73102},{"min":73107,"max":73108},{"min":73110,"max":73110},{"min":73461,"max":73462},{"min":94033,"max":94087},{"min":94192,"max":94193},{"min":119141,"max":119142},{"min":119149,"max":119154}]'),ix=JSON.parse('[{"min":55296,"max":57343}]'),xx=JSON.parse('[{"min":36,"max":36},{"min":43,"max":43},{"min":60,"max":62},{"min":94,"max":94},{"min":96,"max":96},{"min":124,"max":124},{"min":126,"max":126},{"min":162,"max":166},{"min":168,"max":169},{"min":172,"max":172},{"min":174,"max":177},{"min":180,"max":180},{"min":184,"max":184},{"min":215,"max":215},{"min":247,"max":247},{"min":706,"max":709},{"min":722,"max":735},{"min":741,"max":747},{"min":749,"max":749},{"min":751,"max":767},{"min":885,"max":885},{"min":900,"max":901},{"min":1014,"max":1014},{"min":1154,"max":1154},{"min":1421,"max":1423},{"min":1542,"max":1544},{"min":1547,"max":1547},{"min":1550,"max":1551},{"min":1758,"max":1758},{"min":1769,"max":1769},{"min":1789,"max":1790},{"min":2038,"max":2038},{"min":2046,"max":2047},{"min":2546,"max":2547},{"min":2554,"max":2555},{"min":2801,"max":2801},{"min":2928,"max":2928},{"min":3059,"max":3066},{"min":3199,"max":3199},{"min":3407,"max":3407},{"min":3449,"max":3449},{"min":3647,"max":3647},{"min":3841,"max":3843},{"min":3859,"max":3859},{"min":3861,"max":3863},{"min":3866,"max":3871},{"min":3892,"max":3892},{"min":3894,"max":3894},{"min":3896,"max":3896},{"min":4030,"max":4037},{"min":4039,"max":4044},{"min":4046,"max":4047},{"min":4053,"max":4056},{"min":4254,"max":4255},{"min":5008,"max":5017},{"min":5741,"max":5741},{"min":6107,"max":6107},{"min":6464,"max":6464},{"min":6622,"max":6655},{"min":7009,"max":7018},{"min":7028,"max":7036},{"min":8125,"max":8125},{"min":8127,"max":8129},{"min":8141,"max":8143},{"min":8157,"max":8159},{"min":8173,"max":8175},{"min":8189,"max":8190},{"min":8260,"max":8260},{"min":8274,"max":8274},{"min":8314,"max":8316},{"min":8330,"max":8332},{"min":8352,"max":8383},{"min":8448,"max":8449},{"min":8451,"max":8454},{"min":8456,"max":8457},{"min":8468,"max":8468},{"min":8470,"max":8472},{"min":8478,"max":8483},{"min":8485,"max":8485},{"min":8487,"max":8487},{"min":8489,"max":8489},{"min":8494,"max":8494},{"min":8506,"max":8507},{"min":8512,"max":8516},{"min":8522,"max":8525},{"min":8527,"max":8527},{"min":8586,"max":8587},{"min":8592,"max":8967},{"min":8972,"max":9000},{"min":9003,"max":9254},{"min":9280,"max":9290},{"min":9372,"max":9449},{"min":9472,"max":10087},{"min":10132,"max":10180},{"min":10183,"max":10213},{"min":10224,"max":10626},{"min":10649,"max":10711},{"min":10716,"max":10747},{"min":10750,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11493,"max":11498},{"min":11856,"max":11857},{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12272,"max":12283},{"min":12292,"max":12292},{"min":12306,"max":12307},{"min":12320,"max":12320},{"min":12342,"max":12343},{"min":12350,"max":12351},{"min":12443,"max":12444},{"min":12688,"max":12689},{"min":12694,"max":12703},{"min":12736,"max":12771},{"min":12800,"max":12830},{"min":12842,"max":12871},{"min":12880,"max":12880},{"min":12896,"max":12927},{"min":12938,"max":12976},{"min":12992,"max":13311},{"min":19904,"max":19967},{"min":42128,"max":42182},{"min":42752,"max":42774},{"min":42784,"max":42785},{"min":42889,"max":42890},{"min":43048,"max":43051},{"min":43062,"max":43065},{"min":43639,"max":43641},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64297,"max":64297},{"min":64434,"max":64449},{"min":65020,"max":65021},{"min":65122,"max":65122},{"min":65124,"max":65126},{"min":65129,"max":65129},{"min":65284,"max":65284},{"min":65291,"max":65291},{"min":65308,"max":65310},{"min":65342,"max":65342},{"min":65344,"max":65344},{"min":65372,"max":65372},{"min":65374,"max":65374},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65532,"max":65533},{"min":65847,"max":65855},{"min":65913,"max":65929},{"min":65932,"max":65934},{"min":65936,"max":65948},{"min":65952,"max":65952},{"min":66000,"max":66044},{"min":67703,"max":67704},{"min":68296,"max":68296},{"min":71487,"max":71487},{"min":73685,"max":73713},{"min":92988,"max":92991},{"min":92997,"max":92997},{"min":113820,"max":113820},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119140},{"min":119146,"max":119148},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119296,"max":119361},{"min":119365,"max":119365},{"min":119552,"max":119638},{"min":120513,"max":120513},{"min":120539,"max":120539},{"min":120571,"max":120571},{"min":120597,"max":120597},{"min":120629,"max":120629},{"min":120655,"max":120655},{"min":120687,"max":120687},{"min":120713,"max":120713},{"min":120745,"max":120745},{"min":120771,"max":120771},{"min":120832,"max":121343},{"min":121399,"max":121402},{"min":121453,"max":121460},{"min":121462,"max":121475},{"min":121477,"max":121478},{"min":123215,"max":123215},{"min":123647,"max":123647},{"min":126124,"max":126124},{"min":126128,"max":126128},{"min":126254,"max":126254},{"min":126704,"max":126705},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127245,"max":127405},{"min":127462,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994}]'),ex=JSON.parse('[{"min":453,"max":453},{"min":456,"max":456},{"min":459,"max":459},{"min":498,"max":498},{"min":8072,"max":8079},{"min":8088,"max":8095},{"min":8104,"max":8111},{"min":8124,"max":8124},{"min":8140,"max":8140},{"min":8188,"max":8188}]'),tx=JSON.parse('[{"min":888,"max":889},{"min":896,"max":899},{"min":907,"max":907},{"min":909,"max":909},{"min":930,"max":930},{"min":1328,"max":1328},{"min":1367,"max":1368},{"min":1419,"max":1420},{"min":1424,"max":1424},{"min":1480,"max":1487},{"min":1515,"max":1518},{"min":1525,"max":1535},{"min":1565,"max":1565},{"min":1806,"max":1806},{"min":1867,"max":1868},{"min":1970,"max":1983},{"min":2043,"max":2044},{"min":2094,"max":2095},{"min":2111,"max":2111},{"min":2140,"max":2141},{"min":2143,"max":2143},{"min":2155,"max":2207},{"min":2229,"max":2229},{"min":2248,"max":2258},{"min":2436,"max":2436},{"min":2445,"max":2446},{"min":2449,"max":2450},{"min":2473,"max":2473},{"min":2481,"max":2481},{"min":2483,"max":2485},{"min":2490,"max":2491},{"min":2501,"max":2502},{"min":2505,"max":2506},{"min":2511,"max":2518},{"min":2520,"max":2523},{"min":2526,"max":2526},{"min":2532,"max":2533},{"min":2559,"max":2560},{"min":2564,"max":2564},{"min":2571,"max":2574},{"min":2577,"max":2578},{"min":2601,"max":2601},{"min":2609,"max":2609},{"min":2612,"max":2612},{"min":2615,"max":2615},{"min":2618,"max":2619},{"min":2621,"max":2621},{"min":2627,"max":2630},{"min":2633,"max":2634},{"min":2638,"max":2640},{"min":2642,"max":2648},{"min":2653,"max":2653},{"min":2655,"max":2661},{"min":2679,"max":2688},{"min":2692,"max":2692},{"min":2702,"max":2702},{"min":2706,"max":2706},{"min":2729,"max":2729},{"min":2737,"max":2737},{"min":2740,"max":2740},{"min":2746,"max":2747},{"min":2758,"max":2758},{"min":2762,"max":2762},{"min":2766,"max":2767},{"min":2769,"max":2783},{"min":2788,"max":2789},{"min":2802,"max":2808},{"min":2816,"max":2816},{"min":2820,"max":2820},{"min":2829,"max":2830},{"min":2833,"max":2834},{"min":2857,"max":2857},{"min":2865,"max":2865},{"min":2868,"max":2868},{"min":2874,"max":2875},{"min":2885,"max":2886},{"min":2889,"max":2890},{"min":2894,"max":2900},{"min":2904,"max":2907},{"min":2910,"max":2910},{"min":2916,"max":2917},{"min":2936,"max":2945},{"min":2948,"max":2948},{"min":2955,"max":2957},{"min":2961,"max":2961},{"min":2966,"max":2968},{"min":2971,"max":2971},{"min":2973,"max":2973},{"min":2976,"max":2978},{"min":2981,"max":2983},{"min":2987,"max":2989},{"min":3002,"max":3005},{"min":3011,"max":3013},{"min":3017,"max":3017},{"min":3022,"max":3023},{"min":3025,"max":3030},{"min":3032,"max":3045},{"min":3067,"max":3071},{"min":3085,"max":3085},{"min":3089,"max":3089},{"min":3113,"max":3113},{"min":3130,"max":3132},{"min":3141,"max":3141},{"min":3145,"max":3145},{"min":3150,"max":3156},{"min":3159,"max":3159},{"min":3163,"max":3167},{"min":3172,"max":3173},{"min":3184,"max":3190},{"min":3213,"max":3213},{"min":3217,"max":3217},{"min":3241,"max":3241},{"min":3252,"max":3252},{"min":3258,"max":3259},{"min":3269,"max":3269},{"min":3273,"max":3273},{"min":3278,"max":3284},{"min":3287,"max":3293},{"min":3295,"max":3295},{"min":3300,"max":3301},{"min":3312,"max":3312},{"min":3315,"max":3327},{"min":3341,"max":3341},{"min":3345,"max":3345},{"min":3397,"max":3397},{"min":3401,"max":3401},{"min":3408,"max":3411},{"min":3428,"max":3429},{"min":3456,"max":3456},{"min":3460,"max":3460},{"min":3479,"max":3481},{"min":3506,"max":3506},{"min":3516,"max":3516},{"min":3518,"max":3519},{"min":3527,"max":3529},{"min":3531,"max":3534},{"min":3541,"max":3541},{"min":3543,"max":3543},{"min":3552,"max":3557},{"min":3568,"max":3569},{"min":3573,"max":3584},{"min":3643,"max":3646},{"min":3676,"max":3712},{"min":3715,"max":3715},{"min":3717,"max":3717},{"min":3723,"max":3723},{"min":3748,"max":3748},{"min":3750,"max":3750},{"min":3774,"max":3775},{"min":3781,"max":3781},{"min":3783,"max":3783},{"min":3790,"max":3791},{"min":3802,"max":3803},{"min":3808,"max":3839},{"min":3912,"max":3912},{"min":3949,"max":3952},{"min":3992,"max":3992},{"min":4029,"max":4029},{"min":4045,"max":4045},{"min":4059,"max":4095},{"min":4294,"max":4294},{"min":4296,"max":4300},{"min":4302,"max":4303},{"min":4681,"max":4681},{"min":4686,"max":4687},{"min":4695,"max":4695},{"min":4697,"max":4697},{"min":4702,"max":4703},{"min":4745,"max":4745},{"min":4750,"max":4751},{"min":4785,"max":4785},{"min":4790,"max":4791},{"min":4799,"max":4799},{"min":4801,"max":4801},{"min":4806,"max":4807},{"min":4823,"max":4823},{"min":4881,"max":4881},{"min":4886,"max":4887},{"min":4955,"max":4956},{"min":4989,"max":4991},{"min":5018,"max":5023},{"min":5110,"max":5111},{"min":5118,"max":5119},{"min":5789,"max":5791},{"min":5881,"max":5887},{"min":5901,"max":5901},{"min":5909,"max":5919},{"min":5943,"max":5951},{"min":5972,"max":5983},{"min":5997,"max":5997},{"min":6001,"max":6001},{"min":6004,"max":6015},{"min":6110,"max":6111},{"min":6122,"max":6127},{"min":6138,"max":6143},{"min":6159,"max":6159},{"min":6170,"max":6175},{"min":6265,"max":6271},{"min":6315,"max":6319},{"min":6390,"max":6399},{"min":6431,"max":6431},{"min":6444,"max":6447},{"min":6460,"max":6463},{"min":6465,"max":6467},{"min":6510,"max":6511},{"min":6517,"max":6527},{"min":6572,"max":6575},{"min":6602,"max":6607},{"min":6619,"max":6621},{"min":6684,"max":6685},{"min":6751,"max":6751},{"min":6781,"max":6782},{"min":6794,"max":6799},{"min":6810,"max":6815},{"min":6830,"max":6831},{"min":6849,"max":6911},{"min":6988,"max":6991},{"min":7037,"max":7039},{"min":7156,"max":7163},{"min":7224,"max":7226},{"min":7242,"max":7244},{"min":7305,"max":7311},{"min":7355,"max":7356},{"min":7368,"max":7375},{"min":7419,"max":7423},{"min":7674,"max":7674},{"min":7958,"max":7959},{"min":7966,"max":7967},{"min":8006,"max":8007},{"min":8014,"max":8015},{"min":8024,"max":8024},{"min":8026,"max":8026},{"min":8028,"max":8028},{"min":8030,"max":8030},{"min":8062,"max":8063},{"min":8117,"max":8117},{"min":8133,"max":8133},{"min":8148,"max":8149},{"min":8156,"max":8156},{"min":8176,"max":8177},{"min":8181,"max":8181},{"min":8191,"max":8191},{"min":8293,"max":8293},{"min":8306,"max":8307},{"min":8335,"max":8335},{"min":8349,"max":8351},{"min":8384,"max":8399},{"min":8433,"max":8447},{"min":8588,"max":8591},{"min":9255,"max":9279},{"min":9291,"max":9311},{"min":11124,"max":11125},{"min":11158,"max":11158},{"min":11311,"max":11311},{"min":11359,"max":11359},{"min":11508,"max":11512},{"min":11558,"max":11558},{"min":11560,"max":11564},{"min":11566,"max":11567},{"min":11624,"max":11630},{"min":11633,"max":11646},{"min":11671,"max":11679},{"min":11687,"max":11687},{"min":11695,"max":11695},{"min":11703,"max":11703},{"min":11711,"max":11711},{"min":11719,"max":11719},{"min":11727,"max":11727},{"min":11735,"max":11735},{"min":11743,"max":11743},{"min":11859,"max":11903},{"min":11930,"max":11930},{"min":12020,"max":12031},{"min":12246,"max":12271},{"min":12284,"max":12287},{"min":12352,"max":12352},{"min":12439,"max":12440},{"min":12544,"max":12548},{"min":12592,"max":12592},{"min":12687,"max":12687},{"min":12772,"max":12783},{"min":12831,"max":12831},{"min":40957,"max":40959},{"min":42125,"max":42127},{"min":42183,"max":42191},{"min":42540,"max":42559},{"min":42744,"max":42751},{"min":42944,"max":42945},{"min":42955,"max":42996},{"min":43053,"max":43055},{"min":43066,"max":43071},{"min":43128,"max":43135},{"min":43206,"max":43213},{"min":43226,"max":43231},{"min":43348,"max":43358},{"min":43389,"max":43391},{"min":43470,"max":43470},{"min":43482,"max":43485},{"min":43519,"max":43519},{"min":43575,"max":43583},{"min":43598,"max":43599},{"min":43610,"max":43611},{"min":43715,"max":43738},{"min":43767,"max":43776},{"min":43783,"max":43784},{"min":43791,"max":43792},{"min":43799,"max":43807},{"min":43815,"max":43815},{"min":43823,"max":43823},{"min":43884,"max":43887},{"min":44014,"max":44015},{"min":44026,"max":44031},{"min":55204,"max":55215},{"min":55239,"max":55242},{"min":55292,"max":55295},{"min":64110,"max":64111},{"min":64218,"max":64255},{"min":64263,"max":64274},{"min":64280,"max":64284},{"min":64311,"max":64311},{"min":64317,"max":64317},{"min":64319,"max":64319},{"min":64322,"max":64322},{"min":64325,"max":64325},{"min":64450,"max":64466},{"min":64832,"max":64847},{"min":64912,"max":64913},{"min":64968,"max":65007},{"min":65022,"max":65023},{"min":65050,"max":65055},{"min":65107,"max":65107},{"min":65127,"max":65127},{"min":65132,"max":65135},{"min":65141,"max":65141},{"min":65277,"max":65278},{"min":65280,"max":65280},{"min":65471,"max":65473},{"min":65480,"max":65481},{"min":65488,"max":65489},{"min":65496,"max":65497},{"min":65501,"max":65503},{"min":65511,"max":65511},{"min":65519,"max":65528},{"min":65534,"max":65535},{"min":65548,"max":65548},{"min":65575,"max":65575},{"min":65595,"max":65595},{"min":65598,"max":65598},{"min":65614,"max":65615},{"min":65630,"max":65663},{"min":65787,"max":65791},{"min":65795,"max":65798},{"min":65844,"max":65846},{"min":65935,"max":65935},{"min":65949,"max":65951},{"min":65953,"max":65999},{"min":66046,"max":66175},{"min":66205,"max":66207},{"min":66257,"max":66271},{"min":66300,"max":66303},{"min":66340,"max":66348},{"min":66379,"max":66383},{"min":66427,"max":66431},{"min":66462,"max":66462},{"min":66500,"max":66503},{"min":66518,"max":66559},{"min":66718,"max":66719},{"min":66730,"max":66735},{"min":66772,"max":66775},{"min":66812,"max":66815},{"min":66856,"max":66863},{"min":66916,"max":66926},{"min":66928,"max":67071},{"min":67383,"max":67391},{"min":67414,"max":67423},{"min":67432,"max":67583},{"min":67590,"max":67591},{"min":67593,"max":67593},{"min":67638,"max":67638},{"min":67641,"max":67643},{"min":67645,"max":67646},{"min":67670,"max":67670},{"min":67743,"max":67750},{"min":67760,"max":67807},{"min":67827,"max":67827},{"min":67830,"max":67834},{"min":67868,"max":67870},{"min":67898,"max":67902},{"min":67904,"max":67967},{"min":68024,"max":68027},{"min":68048,"max":68049},{"min":68100,"max":68100},{"min":68103,"max":68107},{"min":68116,"max":68116},{"min":68120,"max":68120},{"min":68150,"max":68151},{"min":68155,"max":68158},{"min":68169,"max":68175},{"min":68185,"max":68191},{"min":68256,"max":68287},{"min":68327,"max":68330},{"min":68343,"max":68351},{"min":68406,"max":68408},{"min":68438,"max":68439},{"min":68467,"max":68471},{"min":68498,"max":68504},{"min":68509,"max":68520},{"min":68528,"max":68607},{"min":68681,"max":68735},{"min":68787,"max":68799},{"min":68851,"max":68857},{"min":68904,"max":68911},{"min":68922,"max":69215},{"min":69247,"max":69247},{"min":69290,"max":69290},{"min":69294,"max":69295},{"min":69298,"max":69375},{"min":69416,"max":69423},{"min":69466,"max":69551},{"min":69580,"max":69599},{"min":69623,"max":69631},{"min":69710,"max":69713},{"min":69744,"max":69758},{"min":69826,"max":69836},{"min":69838,"max":69839},{"min":69865,"max":69871},{"min":69882,"max":69887},{"min":69941,"max":69941},{"min":69960,"max":69967},{"min":70007,"max":70015},{"min":70112,"max":70112},{"min":70133,"max":70143},{"min":70162,"max":70162},{"min":70207,"max":70271},{"min":70279,"max":70279},{"min":70281,"max":70281},{"min":70286,"max":70286},{"min":70302,"max":70302},{"min":70314,"max":70319},{"min":70379,"max":70383},{"min":70394,"max":70399},{"min":70404,"max":70404},{"min":70413,"max":70414},{"min":70417,"max":70418},{"min":70441,"max":70441},{"min":70449,"max":70449},{"min":70452,"max":70452},{"min":70458,"max":70458},{"min":70469,"max":70470},{"min":70473,"max":70474},{"min":70478,"max":70479},{"min":70481,"max":70486},{"min":70488,"max":70492},{"min":70500,"max":70501},{"min":70509,"max":70511},{"min":70517,"max":70655},{"min":70748,"max":70748},{"min":70754,"max":70783},{"min":70856,"max":70863},{"min":70874,"max":71039},{"min":71094,"max":71095},{"min":71134,"max":71167},{"min":71237,"max":71247},{"min":71258,"max":71263},{"min":71277,"max":71295},{"min":71353,"max":71359},{"min":71370,"max":71423},{"min":71451,"max":71452},{"min":71468,"max":71471},{"min":71488,"max":71679},{"min":71740,"max":71839},{"min":71923,"max":71934},{"min":71943,"max":71944},{"min":71946,"max":71947},{"min":71956,"max":71956},{"min":71959,"max":71959},{"min":71990,"max":71990},{"min":71993,"max":71994},{"min":72007,"max":72015},{"min":72026,"max":72095},{"min":72104,"max":72105},{"min":72152,"max":72153},{"min":72165,"max":72191},{"min":72264,"max":72271},{"min":72355,"max":72383},{"min":72441,"max":72703},{"min":72713,"max":72713},{"min":72759,"max":72759},{"min":72774,"max":72783},{"min":72813,"max":72815},{"min":72848,"max":72849},{"min":72872,"max":72872},{"min":72887,"max":72959},{"min":72967,"max":72967},{"min":72970,"max":72970},{"min":73015,"max":73017},{"min":73019,"max":73019},{"min":73022,"max":73022},{"min":73032,"max":73039},{"min":73050,"max":73055},{"min":73062,"max":73062},{"min":73065,"max":73065},{"min":73103,"max":73103},{"min":73106,"max":73106},{"min":73113,"max":73119},{"min":73130,"max":73439},{"min":73465,"max":73647},{"min":73649,"max":73663},{"min":73714,"max":73726},{"min":74650,"max":74751},{"min":74863,"max":74863},{"min":74869,"max":74879},{"min":75076,"max":77823},{"min":78895,"max":78895},{"min":78905,"max":82943},{"min":83527,"max":92159},{"min":92729,"max":92735},{"min":92767,"max":92767},{"min":92778,"max":92781},{"min":92784,"max":92879},{"min":92910,"max":92911},{"min":92918,"max":92927},{"min":92998,"max":93007},{"min":93018,"max":93018},{"min":93026,"max":93026},{"min":93048,"max":93052},{"min":93072,"max":93759},{"min":93851,"max":93951},{"min":94027,"max":94030},{"min":94088,"max":94094},{"min":94112,"max":94175},{"min":94181,"max":94191},{"min":94194,"max":94207},{"min":100344,"max":100351},{"min":101590,"max":101631},{"min":101641,"max":110591},{"min":110879,"max":110927},{"min":110931,"max":110947},{"min":110952,"max":110959},{"min":111356,"max":113663},{"min":113771,"max":113775},{"min":113789,"max":113791},{"min":113801,"max":113807},{"min":113818,"max":113819},{"min":113828,"max":118783},{"min":119030,"max":119039},{"min":119079,"max":119080},{"min":119273,"max":119295},{"min":119366,"max":119519},{"min":119540,"max":119551},{"min":119639,"max":119647},{"min":119673,"max":119807},{"min":119893,"max":119893},{"min":119965,"max":119965},{"min":119968,"max":119969},{"min":119971,"max":119972},{"min":119975,"max":119976},{"min":119981,"max":119981},{"min":119994,"max":119994},{"min":119996,"max":119996},{"min":120004,"max":120004},{"min":120070,"max":120070},{"min":120075,"max":120076},{"min":120085,"max":120085},{"min":120093,"max":120093},{"min":120122,"max":120122},{"min":120127,"max":120127},{"min":120133,"max":120133},{"min":120135,"max":120137},{"min":120145,"max":120145},{"min":120486,"max":120487},{"min":120780,"max":120781},{"min":121484,"max":121498},{"min":121504,"max":121504},{"min":121520,"max":122879},{"min":122887,"max":122887},{"min":122905,"max":122906},{"min":122914,"max":122914},{"min":122917,"max":122917},{"min":122923,"max":123135},{"min":123181,"max":123183},{"min":123198,"max":123199},{"min":123210,"max":123213},{"min":123216,"max":123583},{"min":123642,"max":123646},{"min":123648,"max":124927},{"min":125125,"max":125126},{"min":125143,"max":125183},{"min":125260,"max":125263},{"min":125274,"max":125277},{"min":125280,"max":126064},{"min":126133,"max":126208},{"min":126270,"max":126463},{"min":126468,"max":126468},{"min":126496,"max":126496},{"min":126499,"max":126499},{"min":126501,"max":126502},{"min":126504,"max":126504},{"min":126515,"max":126515},{"min":126520,"max":126520},{"min":126522,"max":126522},{"min":126524,"max":126529},{"min":126531,"max":126534},{"min":126536,"max":126536},{"min":126538,"max":126538},{"min":126540,"max":126540},{"min":126544,"max":126544},{"min":126547,"max":126547},{"min":126549,"max":126550},{"min":126552,"max":126552},{"min":126554,"max":126554},{"min":126556,"max":126556},{"min":126558,"max":126558},{"min":126560,"max":126560},{"min":126563,"max":126563},{"min":126565,"max":126566},{"min":126571,"max":126571},{"min":126579,"max":126579},{"min":126584,"max":126584},{"min":126589,"max":126589},{"min":126591,"max":126591},{"min":126602,"max":126602},{"min":126620,"max":126624},{"min":126628,"max":126628},{"min":126634,"max":126634},{"min":126652,"max":126703},{"min":126706,"max":126975},{"min":127020,"max":127023},{"min":127124,"max":127135},{"min":127151,"max":127152},{"min":127168,"max":127168},{"min":127184,"max":127184},{"min":127222,"max":127231},{"min":127406,"max":127461},{"min":127491,"max":127503},{"min":127548,"max":127551},{"min":127561,"max":127567},{"min":127570,"max":127583},{"min":127590,"max":127743},{"min":128728,"max":128735},{"min":128749,"max":128751},{"min":128765,"max":128767},{"min":128884,"max":128895},{"min":128985,"max":128991},{"min":129004,"max":129023},{"min":129036,"max":129039},{"min":129096,"max":129103},{"min":129114,"max":129119},{"min":129160,"max":129167},{"min":129198,"max":129199},{"min":129202,"max":129279},{"min":129401,"max":129401},{"min":129484,"max":129484},{"min":129620,"max":129631},{"min":129646,"max":129647},{"min":129653,"max":129655},{"min":129659,"max":129663},{"min":129671,"max":129679},{"min":129705,"max":129711},{"min":129719,"max":129727},{"min":129731,"max":129743},{"min":129751,"max":129791},{"min":129939,"max":129939},{"min":129995,"max":130031},{"min":130042,"max":131071},{"min":173790,"max":173823},{"min":177973,"max":177983},{"min":178206,"max":178207},{"min":183970,"max":183983},{"min":191457,"max":194559},{"min":195102,"max":196607},{"min":201547,"max":917504},{"min":917506,"max":917535},{"min":917632,"max":917759},{"min":918000,"max":983039},{"min":1048574,"max":1048575},{"min":1114110,"max":1114111}]'),rx=JSON.parse('[{"min":65,"max":90},{"min":192,"max":214},{"min":216,"max":222},{"min":256,"max":256},{"min":258,"max":258},{"min":260,"max":260},{"min":262,"max":262},{"min":264,"max":264},{"min":266,"max":266},{"min":268,"max":268},{"min":270,"max":270},{"min":272,"max":272},{"min":274,"max":274},{"min":276,"max":276},{"min":278,"max":278},{"min":280,"max":280},{"min":282,"max":282},{"min":284,"max":284},{"min":286,"max":286},{"min":288,"max":288},{"min":290,"max":290},{"min":292,"max":292},{"min":294,"max":294},{"min":296,"max":296},{"min":298,"max":298},{"min":300,"max":300},{"min":302,"max":302},{"min":304,"max":304},{"min":306,"max":306},{"min":308,"max":308},{"min":310,"max":310},{"min":313,"max":313},{"min":315,"max":315},{"min":317,"max":317},{"min":319,"max":319},{"min":321,"max":321},{"min":323,"max":323},{"min":325,"max":325},{"min":327,"max":327},{"min":330,"max":330},{"min":332,"max":332},{"min":334,"max":334},{"min":336,"max":336},{"min":338,"max":338},{"min":340,"max":340},{"min":342,"max":342},{"min":344,"max":344},{"min":346,"max":346},{"min":348,"max":348},{"min":350,"max":350},{"min":352,"max":352},{"min":354,"max":354},{"min":356,"max":356},{"min":358,"max":358},{"min":360,"max":360},{"min":362,"max":362},{"min":364,"max":364},{"min":366,"max":366},{"min":368,"max":368},{"min":370,"max":370},{"min":372,"max":372},{"min":374,"max":374},{"min":376,"max":377},{"min":379,"max":379},{"min":381,"max":381},{"min":385,"max":386},{"min":388,"max":388},{"min":390,"max":391},{"min":393,"max":395},{"min":398,"max":401},{"min":403,"max":404},{"min":406,"max":408},{"min":412,"max":413},{"min":415,"max":416},{"min":418,"max":418},{"min":420,"max":420},{"min":422,"max":423},{"min":425,"max":425},{"min":428,"max":428},{"min":430,"max":431},{"min":433,"max":435},{"min":437,"max":437},{"min":439,"max":440},{"min":444,"max":444},{"min":452,"max":452},{"min":455,"max":455},{"min":458,"max":458},{"min":461,"max":461},{"min":463,"max":463},{"min":465,"max":465},{"min":467,"max":467},{"min":469,"max":469},{"min":471,"max":471},{"min":473,"max":473},{"min":475,"max":475},{"min":478,"max":478},{"min":480,"max":480},{"min":482,"max":482},{"min":484,"max":484},{"min":486,"max":486},{"min":488,"max":488},{"min":490,"max":490},{"min":492,"max":492},{"min":494,"max":494},{"min":497,"max":497},{"min":500,"max":500},{"min":502,"max":504},{"min":506,"max":506},{"min":508,"max":508},{"min":510,"max":510},{"min":512,"max":512},{"min":514,"max":514},{"min":516,"max":516},{"min":518,"max":518},{"min":520,"max":520},{"min":522,"max":522},{"min":524,"max":524},{"min":526,"max":526},{"min":528,"max":528},{"min":530,"max":530},{"min":532,"max":532},{"min":534,"max":534},{"min":536,"max":536},{"min":538,"max":538},{"min":540,"max":540},{"min":542,"max":542},{"min":544,"max":544},{"min":546,"max":546},{"min":548,"max":548},{"min":550,"max":550},{"min":552,"max":552},{"min":554,"max":554},{"min":556,"max":556},{"min":558,"max":558},{"min":560,"max":560},{"min":562,"max":562},{"min":570,"max":571},{"min":573,"max":574},{"min":577,"max":577},{"min":579,"max":582},{"min":584,"max":584},{"min":586,"max":586},{"min":588,"max":588},{"min":590,"max":590},{"min":880,"max":880},{"min":882,"max":882},{"min":886,"max":886},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":939},{"min":975,"max":975},{"min":978,"max":980},{"min":984,"max":984},{"min":986,"max":986},{"min":988,"max":988},{"min":990,"max":990},{"min":992,"max":992},{"min":994,"max":994},{"min":996,"max":996},{"min":998,"max":998},{"min":1000,"max":1000},{"min":1002,"max":1002},{"min":1004,"max":1004},{"min":1006,"max":1006},{"min":1012,"max":1012},{"min":1015,"max":1015},{"min":1017,"max":1018},{"min":1021,"max":1071},{"min":1120,"max":1120},{"min":1122,"max":1122},{"min":1124,"max":1124},{"min":1126,"max":1126},{"min":1128,"max":1128},{"min":1130,"max":1130},{"min":1132,"max":1132},{"min":1134,"max":1134},{"min":1136,"max":1136},{"min":1138,"max":1138},{"min":1140,"max":1140},{"min":1142,"max":1142},{"min":1144,"max":1144},{"min":1146,"max":1146},{"min":1148,"max":1148},{"min":1150,"max":1150},{"min":1152,"max":1152},{"min":1162,"max":1162},{"min":1164,"max":1164},{"min":1166,"max":1166},{"min":1168,"max":1168},{"min":1170,"max":1170},{"min":1172,"max":1172},{"min":1174,"max":1174},{"min":1176,"max":1176},{"min":1178,"max":1178},{"min":1180,"max":1180},{"min":1182,"max":1182},{"min":1184,"max":1184},{"min":1186,"max":1186},{"min":1188,"max":1188},{"min":1190,"max":1190},{"min":1192,"max":1192},{"min":1194,"max":1194},{"min":1196,"max":1196},{"min":1198,"max":1198},{"min":1200,"max":1200},{"min":1202,"max":1202},{"min":1204,"max":1204},{"min":1206,"max":1206},{"min":1208,"max":1208},{"min":1210,"max":1210},{"min":1212,"max":1212},{"min":1214,"max":1214},{"min":1216,"max":1217},{"min":1219,"max":1219},{"min":1221,"max":1221},{"min":1223,"max":1223},{"min":1225,"max":1225},{"min":1227,"max":1227},{"min":1229,"max":1229},{"min":1232,"max":1232},{"min":1234,"max":1234},{"min":1236,"max":1236},{"min":1238,"max":1238},{"min":1240,"max":1240},{"min":1242,"max":1242},{"min":1244,"max":1244},{"min":1246,"max":1246},{"min":1248,"max":1248},{"min":1250,"max":1250},{"min":1252,"max":1252},{"min":1254,"max":1254},{"min":1256,"max":1256},{"min":1258,"max":1258},{"min":1260,"max":1260},{"min":1262,"max":1262},{"min":1264,"max":1264},{"min":1266,"max":1266},{"min":1268,"max":1268},{"min":1270,"max":1270},{"min":1272,"max":1272},{"min":1274,"max":1274},{"min":1276,"max":1276},{"min":1278,"max":1278},{"min":1280,"max":1280},{"min":1282,"max":1282},{"min":1284,"max":1284},{"min":1286,"max":1286},{"min":1288,"max":1288},{"min":1290,"max":1290},{"min":1292,"max":1292},{"min":1294,"max":1294},{"min":1296,"max":1296},{"min":1298,"max":1298},{"min":1300,"max":1300},{"min":1302,"max":1302},{"min":1304,"max":1304},{"min":1306,"max":1306},{"min":1308,"max":1308},{"min":1310,"max":1310},{"min":1312,"max":1312},{"min":1314,"max":1314},{"min":1316,"max":1316},{"min":1318,"max":1318},{"min":1320,"max":1320},{"min":1322,"max":1322},{"min":1324,"max":1324},{"min":1326,"max":1326},{"min":1329,"max":1366},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":5024,"max":5109},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7680,"max":7680},{"min":7682,"max":7682},{"min":7684,"max":7684},{"min":7686,"max":7686},{"min":7688,"max":7688},{"min":7690,"max":7690},{"min":7692,"max":7692},{"min":7694,"max":7694},{"min":7696,"max":7696},{"min":7698,"max":7698},{"min":7700,"max":7700},{"min":7702,"max":7702},{"min":7704,"max":7704},{"min":7706,"max":7706},{"min":7708,"max":7708},{"min":7710,"max":7710},{"min":7712,"max":7712},{"min":7714,"max":7714},{"min":7716,"max":7716},{"min":7718,"max":7718},{"min":7720,"max":7720},{"min":7722,"max":7722},{"min":7724,"max":7724},{"min":7726,"max":7726},{"min":7728,"max":7728},{"min":7730,"max":7730},{"min":7732,"max":7732},{"min":7734,"max":7734},{"min":7736,"max":7736},{"min":7738,"max":7738},{"min":7740,"max":7740},{"min":7742,"max":7742},{"min":7744,"max":7744},{"min":7746,"max":7746},{"min":7748,"max":7748},{"min":7750,"max":7750},{"min":7752,"max":7752},{"min":7754,"max":7754},{"min":7756,"max":7756},{"min":7758,"max":7758},{"min":7760,"max":7760},{"min":7762,"max":7762},{"min":7764,"max":7764},{"min":7766,"max":7766},{"min":7768,"max":7768},{"min":7770,"max":7770},{"min":7772,"max":7772},{"min":7774,"max":7774},{"min":7776,"max":7776},{"min":7778,"max":7778},{"min":7780,"max":7780},{"min":7782,"max":7782},{"min":7784,"max":7784},{"min":7786,"max":7786},{"min":7788,"max":7788},{"min":7790,"max":7790},{"min":7792,"max":7792},{"min":7794,"max":7794},{"min":7796,"max":7796},{"min":7798,"max":7798},{"min":7800,"max":7800},{"min":7802,"max":7802},{"min":7804,"max":7804},{"min":7806,"max":7806},{"min":7808,"max":7808},{"min":7810,"max":7810},{"min":7812,"max":7812},{"min":7814,"max":7814},{"min":7816,"max":7816},{"min":7818,"max":7818},{"min":7820,"max":7820},{"min":7822,"max":7822},{"min":7824,"max":7824},{"min":7826,"max":7826},{"min":7828,"max":7828},{"min":7838,"max":7838},{"min":7840,"max":7840},{"min":7842,"max":7842},{"min":7844,"max":7844},{"min":7846,"max":7846},{"min":7848,"max":7848},{"min":7850,"max":7850},{"min":7852,"max":7852},{"min":7854,"max":7854},{"min":7856,"max":7856},{"min":7858,"max":7858},{"min":7860,"max":7860},{"min":7862,"max":7862},{"min":7864,"max":7864},{"min":7866,"max":7866},{"min":7868,"max":7868},{"min":7870,"max":7870},{"min":7872,"max":7872},{"min":7874,"max":7874},{"min":7876,"max":7876},{"min":7878,"max":7878},{"min":7880,"max":7880},{"min":7882,"max":7882},{"min":7884,"max":7884},{"min":7886,"max":7886},{"min":7888,"max":7888},{"min":7890,"max":7890},{"min":7892,"max":7892},{"min":7894,"max":7894},{"min":7896,"max":7896},{"min":7898,"max":7898},{"min":7900,"max":7900},{"min":7902,"max":7902},{"min":7904,"max":7904},{"min":7906,"max":7906},{"min":7908,"max":7908},{"min":7910,"max":7910},{"min":7912,"max":7912},{"min":7914,"max":7914},{"min":7916,"max":7916},{"min":7918,"max":7918},{"min":7920,"max":7920},{"min":7922,"max":7922},{"min":7924,"max":7924},{"min":7926,"max":7926},{"min":7928,"max":7928},{"min":7930,"max":7930},{"min":7932,"max":7932},{"min":7934,"max":7934},{"min":7944,"max":7951},{"min":7960,"max":7965},{"min":7976,"max":7983},{"min":7992,"max":7999},{"min":8008,"max":8013},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8031},{"min":8040,"max":8047},{"min":8120,"max":8123},{"min":8136,"max":8139},{"min":8152,"max":8155},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8450,"max":8450},{"min":8455,"max":8455},{"min":8459,"max":8461},{"min":8464,"max":8466},{"min":8469,"max":8469},{"min":8473,"max":8477},{"min":8484,"max":8484},{"min":8486,"max":8486},{"min":8488,"max":8488},{"min":8490,"max":8493},{"min":8496,"max":8499},{"min":8510,"max":8511},{"min":8517,"max":8517},{"min":8579,"max":8579},{"min":11264,"max":11310},{"min":11360,"max":11360},{"min":11362,"max":11364},{"min":11367,"max":11367},{"min":11369,"max":11369},{"min":11371,"max":11371},{"min":11373,"max":11376},{"min":11378,"max":11378},{"min":11381,"max":11381},{"min":11390,"max":11392},{"min":11394,"max":11394},{"min":11396,"max":11396},{"min":11398,"max":11398},{"min":11400,"max":11400},{"min":11402,"max":11402},{"min":11404,"max":11404},{"min":11406,"max":11406},{"min":11408,"max":11408},{"min":11410,"max":11410},{"min":11412,"max":11412},{"min":11414,"max":11414},{"min":11416,"max":11416},{"min":11418,"max":11418},{"min":11420,"max":11420},{"min":11422,"max":11422},{"min":11424,"max":11424},{"min":11426,"max":11426},{"min":11428,"max":11428},{"min":11430,"max":11430},{"min":11432,"max":11432},{"min":11434,"max":11434},{"min":11436,"max":11436},{"min":11438,"max":11438},{"min":11440,"max":11440},{"min":11442,"max":11442},{"min":11444,"max":11444},{"min":11446,"max":11446},{"min":11448,"max":11448},{"min":11450,"max":11450},{"min":11452,"max":11452},{"min":11454,"max":11454},{"min":11456,"max":11456},{"min":11458,"max":11458},{"min":11460,"max":11460},{"min":11462,"max":11462},{"min":11464,"max":11464},{"min":11466,"max":11466},{"min":11468,"max":11468},{"min":11470,"max":11470},{"min":11472,"max":11472},{"min":11474,"max":11474},{"min":11476,"max":11476},{"min":11478,"max":11478},{"min":11480,"max":11480},{"min":11482,"max":11482},{"min":11484,"max":11484},{"min":11486,"max":11486},{"min":11488,"max":11488},{"min":11490,"max":11490},{"min":11499,"max":11499},{"min":11501,"max":11501},{"min":11506,"max":11506},{"min":42560,"max":42560},{"min":42562,"max":42562},{"min":42564,"max":42564},{"min":42566,"max":42566},{"min":42568,"max":42568},{"min":42570,"max":42570},{"min":42572,"max":42572},{"min":42574,"max":42574},{"min":42576,"max":42576},{"min":42578,"max":42578},{"min":42580,"max":42580},{"min":42582,"max":42582},{"min":42584,"max":42584},{"min":42586,"max":42586},{"min":42588,"max":42588},{"min":42590,"max":42590},{"min":42592,"max":42592},{"min":42594,"max":42594},{"min":42596,"max":42596},{"min":42598,"max":42598},{"min":42600,"max":42600},{"min":42602,"max":42602},{"min":42604,"max":42604},{"min":42624,"max":42624},{"min":42626,"max":42626},{"min":42628,"max":42628},{"min":42630,"max":42630},{"min":42632,"max":42632},{"min":42634,"max":42634},{"min":42636,"max":42636},{"min":42638,"max":42638},{"min":42640,"max":42640},{"min":42642,"max":42642},{"min":42644,"max":42644},{"min":42646,"max":42646},{"min":42648,"max":42648},{"min":42650,"max":42650},{"min":42786,"max":42786},{"min":42788,"max":42788},{"min":42790,"max":42790},{"min":42792,"max":42792},{"min":42794,"max":42794},{"min":42796,"max":42796},{"min":42798,"max":42798},{"min":42802,"max":42802},{"min":42804,"max":42804},{"min":42806,"max":42806},{"min":42808,"max":42808},{"min":42810,"max":42810},{"min":42812,"max":42812},{"min":42814,"max":42814},{"min":42816,"max":42816},{"min":42818,"max":42818},{"min":42820,"max":42820},{"min":42822,"max":42822},{"min":42824,"max":42824},{"min":42826,"max":42826},{"min":42828,"max":42828},{"min":42830,"max":42830},{"min":42832,"max":42832},{"min":42834,"max":42834},{"min":42836,"max":42836},{"min":42838,"max":42838},{"min":42840,"max":42840},{"min":42842,"max":42842},{"min":42844,"max":42844},{"min":42846,"max":42846},{"min":42848,"max":42848},{"min":42850,"max":42850},{"min":42852,"max":42852},{"min":42854,"max":42854},{"min":42856,"max":42856},{"min":42858,"max":42858},{"min":42860,"max":42860},{"min":42862,"max":42862},{"min":42873,"max":42873},{"min":42875,"max":42875},{"min":42877,"max":42878},{"min":42880,"max":42880},{"min":42882,"max":42882},{"min":42884,"max":42884},{"min":42886,"max":42886},{"min":42891,"max":42891},{"min":42893,"max":42893},{"min":42896,"max":42896},{"min":42898,"max":42898},{"min":42902,"max":42902},{"min":42904,"max":42904},{"min":42906,"max":42906},{"min":42908,"max":42908},{"min":42910,"max":42910},{"min":42912,"max":42912},{"min":42914,"max":42914},{"min":42916,"max":42916},{"min":42918,"max":42918},{"min":42920,"max":42920},{"min":42922,"max":42926},{"min":42928,"max":42932},{"min":42934,"max":42934},{"min":42936,"max":42936},{"min":42938,"max":42938},{"min":42940,"max":42940},{"min":42942,"max":42942},{"min":42946,"max":42946},{"min":42948,"max":42951},{"min":42953,"max":42953},{"min":42997,"max":42997},{"min":65313,"max":65338},{"min":66560,"max":66599},{"min":66736,"max":66771},{"min":68736,"max":68786},{"min":71840,"max":71871},{"min":93760,"max":93791},{"min":119808,"max":119833},{"min":119860,"max":119885},{"min":119912,"max":119937},{"min":119964,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119989},{"min":120016,"max":120041},{"min":120068,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120120,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120172,"max":120197},{"min":120224,"max":120249},{"min":120276,"max":120301},{"min":120328,"max":120353},{"min":120380,"max":120405},{"min":120432,"max":120457},{"min":120488,"max":120512},{"min":120546,"max":120570},{"min":120604,"max":120628},{"min":120662,"max":120686},{"min":120720,"max":120744},{"min":120778,"max":120778},{"min":125184,"max":125217}]');var sx=Object.freeze({__proto__:null,Cased_Letter:Oi,Close_Punctuation:ki,Connector_Punctuation:wi,Control:Ji,Currency_Symbol:bi,Dash_Punctuation:Ai,Decimal_Number:Ei,Enclosing_Mark:Mi,Final_Punctuation:Li,Format:Ti,Initial_Punctuation:Pi,Letter:Ii,Letter_Number:Di,Line_Separator:Ri,Lowercase_Letter:Gi,Mark:Bi,Math_Symbol:Wi,Modifier_Letter:Fi,Modifier_Symbol:Qi,Nonspacing_Mark:Hi,Number:ji,Open_Punctuation:zi,Other:Ui,Other_Letter:Ki,Other_Number:qi,Other_Punctuation:$i,Other_Symbol:Vi,Paragraph_Separator:Xi,Private_Use:Zi,Punctuation:Yi,Separator:mx,Space_Separator:nx,Spacing_Mark:ax,Surrogate:ix,Symbol:xx,Titlecase_Letter:ex,Unassigned:tx,Uppercase_Letter:rx});const ox=JSON.parse('[{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279}]'),lx=JSON.parse('[{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487}]'),cx=JSON.parse('[{"min":82944,"max":83526}]'),ux=JSON.parse('[{"min":1536,"max":1540},{"min":1542,"max":1547},{"min":1549,"max":1562},{"min":1564,"max":1564},{"min":1566,"max":1566},{"min":1568,"max":1599},{"min":1601,"max":1610},{"min":1622,"max":1647},{"min":1649,"max":1756},{"min":1758,"max":1791},{"min":1872,"max":1919},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2303},{"min":64336,"max":64449},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":69216,"max":69246},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),hx=JSON.parse('[{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":64275,"max":64279}]'),fx=JSON.parse('[{"min":68352,"max":68405},{"min":68409,"max":68415}]'),px=JSON.parse('[{"min":6912,"max":6987},{"min":6992,"max":7036}]'),dx=JSON.parse('[{"min":42656,"max":42743},{"min":92160,"max":92728}]'),gx=JSON.parse('[{"min":92880,"max":92909},{"min":92912,"max":92917}]'),yx=JSON.parse('[{"min":7104,"max":7155},{"min":7164,"max":7167}]'),Sx=JSON.parse('[{"min":2432,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558}]'),_x=JSON.parse('[{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812}]'),vx=JSON.parse('[{"min":746,"max":747},{"min":12549,"max":12591},{"min":12704,"max":12735}]'),Nx=JSON.parse('[{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69759}]'),Cx=JSON.parse('[{"min":10240,"max":10495}]'),Ox=JSON.parse('[{"min":6656,"max":6683},{"min":6686,"max":6687}]'),kx=JSON.parse('[{"min":5952,"max":5971}]'),wx=JSON.parse('[{"min":5120,"max":5759},{"min":6320,"max":6389}]'),Jx=JSON.parse('[{"min":66208,"max":66256}]'),bx=JSON.parse('[{"min":66864,"max":66915},{"min":66927,"max":66927}]'),Ax=JSON.parse('[{"min":69888,"max":69940},{"min":69942,"max":69959}]'),Ex=JSON.parse('[{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43615}]'),Mx=JSON.parse('[{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":43888,"max":43967}]'),Lx=JSON.parse('[{"min":0,"max":64},{"min":91,"max":96},{"min":123,"max":169},{"min":171,"max":185},{"min":187,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":697,"max":735},{"min":741,"max":745},{"min":748,"max":767},{"min":884,"max":884},{"min":894,"max":894},{"min":901,"max":901},{"min":903,"max":903},{"min":1541,"max":1541},{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1757,"max":1757},{"min":2274,"max":2274},{"min":2404,"max":2405},{"min":3647,"max":3647},{"min":4053,"max":4056},{"min":4347,"max":4347},{"min":5867,"max":5869},{"min":5941,"max":5942},{"min":6146,"max":6147},{"min":6149,"max":6149},{"min":7379,"max":7379},{"min":7393,"max":7393},{"min":7401,"max":7404},{"min":7406,"max":7411},{"min":7413,"max":7415},{"min":7418,"max":7418},{"min":8192,"max":8203},{"min":8206,"max":8292},{"min":8294,"max":8304},{"min":8308,"max":8318},{"min":8320,"max":8334},{"min":8352,"max":8383},{"min":8448,"max":8485},{"min":8487,"max":8489},{"min":8492,"max":8497},{"min":8499,"max":8525},{"min":8527,"max":8543},{"min":8585,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":10239},{"min":10496,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11776,"max":11858},{"min":12272,"max":12283},{"min":12288,"max":12292},{"min":12294,"max":12294},{"min":12296,"max":12320},{"min":12336,"max":12343},{"min":12348,"max":12351},{"min":12443,"max":12444},{"min":12448,"max":12448},{"min":12539,"max":12540},{"min":12688,"max":12703},{"min":12736,"max":12771},{"min":12832,"max":12895},{"min":12927,"max":13007},{"min":13055,"max":13055},{"min":13144,"max":13311},{"min":19904,"max":19967},{"min":42752,"max":42785},{"min":42888,"max":42890},{"min":43056,"max":43065},{"min":43310,"max":43310},{"min":43471,"max":43471},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65279,"max":65279},{"min":65281,"max":65312},{"min":65339,"max":65344},{"min":65371,"max":65381},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855},{"min":65936,"max":65948},{"min":66000,"max":66044},{"min":66273,"max":66299},{"min":94178,"max":94179},{"min":113824,"max":113827},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119142},{"min":119146,"max":119162},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119648,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127568,"max":127569},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Tx=JSON.parse('[{"min":994,"max":1007},{"min":11392,"max":11507},{"min":11513,"max":11519}]'),Px=JSON.parse('[{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075}]'),Ix=JSON.parse('[{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67647}]'),Dx=JSON.parse('[{"min":1024,"max":1156},{"min":1159,"max":1327},{"min":7296,"max":7304},{"min":7467,"max":7467},{"min":7544,"max":7544},{"min":11744,"max":11775},{"min":42560,"max":42655},{"min":65070,"max":65071}]'),Rx=JSON.parse('[{"min":66560,"max":66639}]'),Gx=JSON.parse('[{"min":2304,"max":2384},{"min":2389,"max":2403},{"min":2406,"max":2431},{"min":43232,"max":43263}]'),Bx=JSON.parse('[{"min":71680,"max":71739}]'),Wx=JSON.parse('[{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113823}]'),Fx=JSON.parse('[{"min":77824,"max":78894},{"min":78896,"max":78904}]'),Qx=JSON.parse('[{"min":66816,"max":66855}]'),Hx=JSON.parse('[{"min":69600,"max":69622}]'),jx=JSON.parse('[{"min":4608,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822}]'),zx=JSON.parse('[{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4348,"max":4351},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565}]'),Ux=JSON.parse('[{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922}]'),Kx=JSON.parse('[{"min":66352,"max":66378}]'),qx=JSON.parse('[{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70460,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516}]'),$x=JSON.parse('[{"min":880,"max":883},{"min":885,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":900,"max":900},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":993},{"min":1008,"max":1023},{"min":7462,"max":7466},{"min":7517,"max":7521},{"min":7526,"max":7530},{"min":7615,"max":7615},{"min":7936,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8486,"max":8486},{"min":43877,"max":43877},{"min":65856,"max":65934},{"min":65952,"max":65952},{"min":119296,"max":119365}]'),Vx=JSON.parse('[{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815}]'),Xx=JSON.parse('[{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129}]'),Zx=JSON.parse('[{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678}]'),Yx=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12293,"max":12293},{"min":12295,"max":12295},{"min":12321,"max":12329},{"min":12344,"max":12347},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":94192,"max":94193},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),me=JSON.parse('[{"min":4352,"max":4607},{"min":12334,"max":12335},{"min":12593,"max":12686},{"min":12800,"max":12830},{"min":12896,"max":12926},{"min":43360,"max":43388},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500}]'),ne=JSON.parse('[{"min":68864,"max":68903},{"min":68912,"max":68921}]'),ae=JSON.parse('[{"min":5920,"max":5940}]'),ie=JSON.parse('[{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67839}]'),xe=JSON.parse('[{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64335}]'),ee=JSON.parse('[{"min":12353,"max":12438},{"min":12445,"max":12447},{"min":110593,"max":110878},{"min":110928,"max":110930},{"min":127488,"max":127488}]'),te=JSON.parse('[{"min":67648,"max":67669},{"min":67671,"max":67679}]'),re=JSON.parse('[{"min":768,"max":879},{"min":1157,"max":1158},{"min":1611,"max":1621},{"min":1648,"max":1648},{"min":2385,"max":2388},{"min":6832,"max":6848},{"min":7376,"max":7378},{"min":7380,"max":7392},{"min":7394,"max":7400},{"min":7405,"max":7405},{"min":7412,"max":7412},{"min":7416,"max":7417},{"min":7616,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8205},{"min":8400,"max":8432},{"min":12330,"max":12333},{"min":12441,"max":12442},{"min":65024,"max":65039},{"min":65056,"max":65069},{"min":66045,"max":66045},{"min":66272,"max":66272},{"min":70459,"max":70459},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":917760,"max":917999}]'),se=JSON.parse('[{"min":68448,"max":68466},{"min":68472,"max":68479}]'),oe=JSON.parse('[{"min":68416,"max":68437},{"min":68440,"max":68447}]'),le=JSON.parse('[{"min":43392,"max":43469},{"min":43472,"max":43481},{"min":43486,"max":43487}]'),ce=JSON.parse('[{"min":69760,"max":69825},{"min":69837,"max":69837}]'),ue=JSON.parse('[{"min":3200,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314}]'),he=JSON.parse('[{"min":12449,"max":12538},{"min":12541,"max":12543},{"min":12784,"max":12799},{"min":13008,"max":13054},{"min":13056,"max":13143},{"min":65382,"max":65391},{"min":65393,"max":65437},{"min":110592,"max":110592},{"min":110948,"max":110951}]'),fe=JSON.parse('[{"min":43264,"max":43309},{"min":43311,"max":43311}]'),pe=JSON.parse('[{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184}]'),de=JSON.parse('[{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6624,"max":6655}]'),ge=JSON.parse('[{"min":70144,"max":70161},{"min":70163,"max":70206}]'),ye=JSON.parse('[{"min":70320,"max":70378},{"min":70384,"max":70393}]'),Se=JSON.parse('[{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807}]'),_e=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":696},{"min":736,"max":740},{"min":7424,"max":7461},{"min":7468,"max":7516},{"min":7522,"max":7525},{"min":7531,"max":7543},{"min":7545,"max":7614},{"min":7680,"max":7935},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11360,"max":11391},{"min":42786,"max":42887},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43007},{"min":43824,"max":43866},{"min":43868,"max":43876},{"min":43878,"max":43881},{"min":64256,"max":64262},{"min":65313,"max":65338},{"min":65345,"max":65370}]'),ve=JSON.parse('[{"min":7168,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7247}]'),Ne=JSON.parse('[{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6479}]'),Ce=JSON.parse('[{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431}]'),Oe=JSON.parse('[{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786}]'),ke=JSON.parse('[{"min":42192,"max":42239},{"min":73648,"max":73648}]'),we=JSON.parse('[{"min":66176,"max":66204}]'),Je=JSON.parse('[{"min":67872,"max":67897},{"min":67903,"max":67903}]'),be=JSON.parse('[{"min":69968,"max":70006}]'),Ae=JSON.parse('[{"min":73440,"max":73464}]'),Ee=JSON.parse('[{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455}]'),Me=JSON.parse('[{"min":2112,"max":2139},{"min":2142,"max":2142}]'),Le=JSON.parse('[{"min":68288,"max":68326},{"min":68331,"max":68342}]'),Te=JSON.parse('[{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886}]'),Pe=JSON.parse('[{"min":93760,"max":93850}]'),Ie=JSON.parse('[{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049}]'),De=JSON.parse('[{"min":43744,"max":43766},{"min":43968,"max":44013},{"min":44016,"max":44025}]'),Re=JSON.parse('[{"min":124928,"max":125124},{"min":125127,"max":125142}]'),Ge=JSON.parse('[{"min":68000,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68095}]'),Be=JSON.parse('[{"min":67968,"max":67999}]'),We=JSON.parse('[{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111}]'),Fe=JSON.parse('[{"min":71168,"max":71236},{"min":71248,"max":71257}]'),Qe=JSON.parse('[{"min":6144,"max":6145},{"min":6148,"max":6148},{"min":6150,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":71264,"max":71276}]'),He=JSON.parse('[{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783}]'),je=JSON.parse('[{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313}]'),ze=JSON.parse('[{"min":4096,"max":4255},{"min":43488,"max":43518},{"min":43616,"max":43647}]'),Ue=JSON.parse('[{"min":67712,"max":67742},{"min":67751,"max":67759}]'),Ke=JSON.parse('[{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164}]'),qe=JSON.parse('[{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6623}]'),$e=JSON.parse('[{"min":70656,"max":70747},{"min":70749,"max":70753}]'),Ve=JSON.parse('[{"min":1984,"max":2042},{"min":2045,"max":2047}]'),Xe=JSON.parse('[{"min":94177,"max":94177},{"min":110960,"max":111355}]'),Ze=JSON.parse('[{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215}]'),Ye=JSON.parse('[{"min":5760,"max":5788}]'),mt=JSON.parse('[{"min":7248,"max":7295}]'),nt=JSON.parse('[{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68863}]'),at=JSON.parse('[{"min":66304,"max":66339},{"min":66349,"max":66351}]'),it=JSON.parse('[{"min":68224,"max":68255}]'),xt=JSON.parse('[{"min":66384,"max":66426}]'),et=JSON.parse('[{"min":66464,"max":66499},{"min":66504,"max":66517}]'),tt=JSON.parse('[{"min":69376,"max":69415}]'),rt=JSON.parse('[{"min":68192,"max":68223}]'),st=JSON.parse('[{"min":68608,"max":68680}]'),ot=JSON.parse('[{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935}]'),lt=JSON.parse('[{"min":66736,"max":66771},{"min":66776,"max":66811}]'),ct=JSON.parse('[{"min":66688,"max":66717},{"min":66720,"max":66729}]'),ut=JSON.parse('[{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071}]'),ht=JSON.parse('[{"min":67680,"max":67711}]'),ft=JSON.parse('[{"min":72384,"max":72440}]'),pt=JSON.parse('[{"min":43072,"max":43127}]'),dt=JSON.parse('[{"min":67840,"max":67867},{"min":67871,"max":67871}]'),gt=JSON.parse('[{"min":68480,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527}]'),yt=JSON.parse('[{"min":43312,"max":43347},{"min":43359,"max":43359}]'),St=JSON.parse('[{"min":5792,"max":5866},{"min":5870,"max":5880}]'),_t=JSON.parse('[{"min":2048,"max":2093},{"min":2096,"max":2110}]'),vt=JSON.parse('[{"min":43136,"max":43205},{"min":43214,"max":43225}]'),Nt=JSON.parse('[{"min":70016,"max":70111}]'),Ct=JSON.parse('[{"min":66640,"max":66687}]'),Ot=JSON.parse('[{"min":71040,"max":71093},{"min":71096,"max":71133}]'),kt=JSON.parse('[{"min":120832,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519}]'),wt=JSON.parse('[{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":70113,"max":70132}]'),Jt=JSON.parse('[{"min":69424,"max":69465}]'),bt=JSON.parse('[{"min":69840,"max":69864},{"min":69872,"max":69881}]'),At=JSON.parse('[{"min":72272,"max":72354}]'),Et=JSON.parse('[{"min":7040,"max":7103},{"min":7360,"max":7367}]'),Mt=JSON.parse('[{"min":43008,"max":43052}]'),Lt=JSON.parse('[{"min":1792,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1871},{"min":2144,"max":2154}]'),Tt=JSON.parse('[{"min":5888,"max":5900},{"min":5902,"max":5908}]'),Pt=JSON.parse('[{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003}]'),It=JSON.parse('[{"min":6480,"max":6509},{"min":6512,"max":6516}]'),Dt=JSON.parse('[{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829}]'),Rt=JSON.parse('[{"min":43648,"max":43714},{"min":43739,"max":43743}]'),Gt=JSON.parse('[{"min":71296,"max":71352},{"min":71360,"max":71369}]'),Bt=JSON.parse('[{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":73664,"max":73713},{"min":73727,"max":73727}]'),Wt=JSON.parse('[{"min":94176,"max":94176},{"min":94208,"max":100343},{"min":100352,"max":101119},{"min":101632,"max":101640}]'),Ft=JSON.parse('[{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3199}]'),Qt=JSON.parse('[{"min":1920,"max":1969}]'),Ht=JSON.parse('[{"min":3585,"max":3642},{"min":3648,"max":3675}]'),jt=JSON.parse('[{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4052},{"min":4057,"max":4058}]'),zt=JSON.parse('[{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11647}]'),Ut=JSON.parse('[{"min":70784,"max":70855},{"min":70864,"max":70873}]'),Kt=JSON.parse('[{"min":66432,"max":66461},{"min":66463,"max":66463}]'),qt=JSON.parse('[{"min":42240,"max":42539}]'),$t=JSON.parse('[{"min":123584,"max":123641},{"min":123647,"max":123647}]'),Vt=JSON.parse('[{"min":71840,"max":71922},{"min":71935,"max":71935}]'),Xt=JSON.parse('[{"min":40960,"max":42124},{"min":42128,"max":42182}]'),Zt=JSON.parse('[{"min":72192,"max":72263}]');var Yt=Object.freeze({__proto__:null,Adlam:ox,Ahom:lx,Anatolian_Hieroglyphs:cx,Arabic:ux,Armenian:hx,Avestan:fx,Balinese:px,Bamum:dx,Bassa_Vah:gx,Batak:yx,Bengali:Sx,Bhaiksuki:_x,Bopomofo:vx,Brahmi:Nx,Braille:Cx,Buginese:Ox,Buhid:kx,Canadian_Aboriginal:wx,Carian:Jx,Caucasian_Albanian:bx,Chakma:Ax,Cham:Ex,Cherokee:Mx,Common:Lx,Coptic:Tx,Cuneiform:Px,Cypriot:Ix,Cyrillic:Dx,Deseret:Rx,Devanagari:Gx,Dogra:Bx,Duployan:Wx,Egyptian_Hieroglyphs:Fx,Elbasan:Qx,Elymaic:Hx,Ethiopic:jx,Georgian:zx,Glagolitic:Ux,Gothic:Kx,Grantha:qx,Greek:$x,Gujarati:Vx,Gunjala_Gondi:Xx,Gurmukhi:Zx,Han:Yx,Hangul:me,Hanifi_Rohingya:ne,Hanunoo:ae,Hatran:ie,Hebrew:xe,Hiragana:ee,Imperial_Aramaic:te,Inherited:re,Inscriptional_Pahlavi:se,Inscriptional_Parthian:oe,Javanese:le,Kaithi:ce,Kannada:ue,Katakana:he,Kayah_Li:fe,Kharoshthi:pe,Khmer:de,Khojki:ge,Khudawadi:ye,Lao:Se,Latin:_e,Lepcha:ve,Limbu:Ne,Linear_A:Ce,Linear_B:Oe,Lisu:ke,Lycian:we,Lydian:Je,Mahajani:be,Makasar:Ae,Malayalam:Ee,Mandaic:Me,Manichaean:Le,Marchen:Te,Medefaidrin:Pe,Masaram_Gondi:Ie,Meetei_Mayek:De,Mende_Kikakui:Re,Meroitic_Cursive:Ge,Meroitic_Hieroglyphs:Be,Miao:We,Modi:Fe,Mongolian:Qe,Mro:He,Multani:je,Myanmar:ze,Nabataean:Ue,Nandinagari:Ke,New_Tai_Lue:qe,Newa:$e,Nko:Ve,Nushu:Xe,Nyiakeng_Puachue_Hmong:Ze,Ogham:Ye,Ol_Chiki:mt,Old_Hungarian:nt,Old_Italic:at,Old_North_Arabian:it,Old_Permic:xt,Old_Persian:et,Old_Sogdian:tt,Old_South_Arabian:rt,Old_Turkic:st,Oriya:ot,Osage:lt,Osmanya:ct,Pahawh_Hmong:ut,Palmyrene:ht,Pau_Cin_Hau:ft,Phags_Pa:pt,Phoenician:dt,Psalter_Pahlavi:gt,Rejang:yt,Runic:St,Samaritan:_t,Saurashtra:vt,Sharada:Nt,Shavian:Ct,Siddham:Ot,SignWriting:kt,Sinhala:wt,Sogdian:Jt,Sora_Sompeng:bt,Soyombo:At,Sundanese:Et,Syloti_Nagri:Mt,Syriac:Lt,Tagalog:Tt,Tagbanwa:Pt,Tai_Le:It,Tai_Tham:Dt,Tai_Viet:Rt,Takri:Gt,Tamil:Bt,Tangut:Wt,Telugu:Ft,Thaana:Qt,Thai:Ht,Tibetan:jt,Tifinagh:zt,Tirhuta:Ut,Ugaritic:Kt,Vai:qt,Wancho:$t,Warang_Citi:Vt,Yi:Xt,Zanabazar_Square:Zt});const mr=JSON.parse('[{"min":1600,"max":1600},{"min":125184,"max":125259},{"min":125264,"max":125273},{"min":125278,"max":125279}]'),nr=JSON.parse('[{"min":71424,"max":71450},{"min":71453,"max":71467},{"min":71472,"max":71487}]'),ar=JSON.parse('[{"min":82944,"max":83526}]'),ir=JSON.parse('[{"min":1536,"max":1540},{"min":1542,"max":1564},{"min":1566,"max":1756},{"min":1758,"max":1791},{"min":1872,"max":1919},{"min":2208,"max":2228},{"min":2230,"max":2247},{"min":2259,"max":2273},{"min":2275,"max":2303},{"min":64336,"max":64449},{"min":64467,"max":64829},{"min":64848,"max":64911},{"min":64914,"max":64967},{"min":65008,"max":65021},{"min":65136,"max":65140},{"min":65142,"max":65276},{"min":66272,"max":66299},{"min":69216,"max":69246},{"min":126464,"max":126467},{"min":126469,"max":126495},{"min":126497,"max":126498},{"min":126500,"max":126500},{"min":126503,"max":126503},{"min":126505,"max":126514},{"min":126516,"max":126519},{"min":126521,"max":126521},{"min":126523,"max":126523},{"min":126530,"max":126530},{"min":126535,"max":126535},{"min":126537,"max":126537},{"min":126539,"max":126539},{"min":126541,"max":126543},{"min":126545,"max":126546},{"min":126548,"max":126548},{"min":126551,"max":126551},{"min":126553,"max":126553},{"min":126555,"max":126555},{"min":126557,"max":126557},{"min":126559,"max":126559},{"min":126561,"max":126562},{"min":126564,"max":126564},{"min":126567,"max":126570},{"min":126572,"max":126578},{"min":126580,"max":126583},{"min":126585,"max":126588},{"min":126590,"max":126590},{"min":126592,"max":126601},{"min":126603,"max":126619},{"min":126625,"max":126627},{"min":126629,"max":126633},{"min":126635,"max":126651},{"min":126704,"max":126705}]'),xr=JSON.parse('[{"min":1329,"max":1366},{"min":1369,"max":1418},{"min":1421,"max":1423},{"min":64275,"max":64279}]'),er=JSON.parse('[{"min":68352,"max":68405},{"min":68409,"max":68415}]'),tr=JSON.parse('[{"min":6912,"max":6987},{"min":6992,"max":7036}]'),rr=JSON.parse('[{"min":42656,"max":42743},{"min":92160,"max":92728}]'),sr=JSON.parse('[{"min":92880,"max":92909},{"min":92912,"max":92917}]'),or=JSON.parse('[{"min":7104,"max":7155},{"min":7164,"max":7167}]'),lr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2432,"max":2435},{"min":2437,"max":2444},{"min":2447,"max":2448},{"min":2451,"max":2472},{"min":2474,"max":2480},{"min":2482,"max":2482},{"min":2486,"max":2489},{"min":2492,"max":2500},{"min":2503,"max":2504},{"min":2507,"max":2510},{"min":2519,"max":2519},{"min":2524,"max":2525},{"min":2527,"max":2531},{"min":2534,"max":2558},{"min":7376,"max":7376},{"min":7378,"max":7378},{"min":7381,"max":7382},{"min":7384,"max":7384},{"min":7393,"max":7393},{"min":7402,"max":7402},{"min":7405,"max":7405},{"min":7410,"max":7410},{"min":7413,"max":7415},{"min":43249,"max":43249}]'),cr=JSON.parse('[{"min":72704,"max":72712},{"min":72714,"max":72758},{"min":72760,"max":72773},{"min":72784,"max":72812}]'),ur=JSON.parse('[{"min":746,"max":747},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12330,"max":12333},{"min":12336,"max":12336},{"min":12343,"max":12343},{"min":12539,"max":12539},{"min":12549,"max":12591},{"min":12704,"max":12735},{"min":65093,"max":65094},{"min":65377,"max":65381}]'),hr=JSON.parse('[{"min":69632,"max":69709},{"min":69714,"max":69743},{"min":69759,"max":69759}]'),fr=JSON.parse('[{"min":10240,"max":10495}]'),pr=JSON.parse('[{"min":6656,"max":6683},{"min":6686,"max":6687},{"min":43471,"max":43471}]'),dr=JSON.parse('[{"min":5941,"max":5942},{"min":5952,"max":5971}]'),gr=JSON.parse('[{"min":5120,"max":5759},{"min":6320,"max":6389}]'),yr=JSON.parse('[{"min":66208,"max":66256}]'),Sr=JSON.parse('[{"min":66864,"max":66915},{"min":66927,"max":66927}]'),_r=JSON.parse('[{"min":2534,"max":2543},{"min":4160,"max":4169},{"min":69888,"max":69940},{"min":69942,"max":69959}]'),vr=JSON.parse('[{"min":43520,"max":43574},{"min":43584,"max":43597},{"min":43600,"max":43609},{"min":43612,"max":43615}]'),Nr=JSON.parse('[{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":43888,"max":43967}]'),Cr=JSON.parse('[{"min":0,"max":64},{"min":91,"max":96},{"min":123,"max":169},{"min":171,"max":185},{"min":187,"max":191},{"min":215,"max":215},{"min":247,"max":247},{"min":697,"max":735},{"min":741,"max":745},{"min":748,"max":767},{"min":884,"max":884},{"min":894,"max":894},{"min":901,"max":901},{"min":903,"max":903},{"min":1541,"max":1541},{"min":1757,"max":1757},{"min":2274,"max":2274},{"min":3647,"max":3647},{"min":4053,"max":4056},{"min":5867,"max":5869},{"min":8192,"max":8203},{"min":8206,"max":8238},{"min":8240,"max":8292},{"min":8294,"max":8304},{"min":8308,"max":8318},{"min":8320,"max":8334},{"min":8352,"max":8383},{"min":8448,"max":8485},{"min":8487,"max":8489},{"min":8492,"max":8497},{"min":8499,"max":8525},{"min":8527,"max":8543},{"min":8585,"max":8587},{"min":8592,"max":9254},{"min":9280,"max":9290},{"min":9312,"max":10239},{"min":10496,"max":11123},{"min":11126,"max":11157},{"min":11159,"max":11263},{"min":11776,"max":11842},{"min":11844,"max":11858},{"min":12272,"max":12283},{"min":12288,"max":12288},{"min":12292,"max":12292},{"min":12306,"max":12306},{"min":12320,"max":12320},{"min":12342,"max":12342},{"min":12872,"max":12895},{"min":12927,"max":12927},{"min":12977,"max":12991},{"min":13004,"max":13007},{"min":13169,"max":13178},{"min":13184,"max":13279},{"min":13311,"max":13311},{"min":19904,"max":19967},{"min":42760,"max":42785},{"min":42888,"max":42890},{"min":43867,"max":43867},{"min":43882,"max":43883},{"min":64830,"max":64831},{"min":65040,"max":65049},{"min":65072,"max":65092},{"min":65095,"max":65106},{"min":65108,"max":65126},{"min":65128,"max":65131},{"min":65279,"max":65279},{"min":65281,"max":65312},{"min":65339,"max":65344},{"min":65371,"max":65376},{"min":65504,"max":65510},{"min":65512,"max":65518},{"min":65529,"max":65533},{"min":65936,"max":65948},{"min":66000,"max":66044},{"min":94178,"max":94179},{"min":118784,"max":119029},{"min":119040,"max":119078},{"min":119081,"max":119142},{"min":119146,"max":119162},{"min":119171,"max":119172},{"min":119180,"max":119209},{"min":119214,"max":119272},{"min":119520,"max":119539},{"min":119552,"max":119638},{"min":119666,"max":119672},{"min":119808,"max":119892},{"min":119894,"max":119964},{"min":119966,"max":119967},{"min":119970,"max":119970},{"min":119973,"max":119974},{"min":119977,"max":119980},{"min":119982,"max":119993},{"min":119995,"max":119995},{"min":119997,"max":120003},{"min":120005,"max":120069},{"min":120071,"max":120074},{"min":120077,"max":120084},{"min":120086,"max":120092},{"min":120094,"max":120121},{"min":120123,"max":120126},{"min":120128,"max":120132},{"min":120134,"max":120134},{"min":120138,"max":120144},{"min":120146,"max":120485},{"min":120488,"max":120779},{"min":120782,"max":120831},{"min":126065,"max":126132},{"min":126209,"max":126269},{"min":126976,"max":127019},{"min":127024,"max":127123},{"min":127136,"max":127150},{"min":127153,"max":127167},{"min":127169,"max":127183},{"min":127185,"max":127221},{"min":127232,"max":127405},{"min":127462,"max":127487},{"min":127489,"max":127490},{"min":127504,"max":127547},{"min":127552,"max":127560},{"min":127584,"max":127589},{"min":127744,"max":128727},{"min":128736,"max":128748},{"min":128752,"max":128764},{"min":128768,"max":128883},{"min":128896,"max":128984},{"min":128992,"max":129003},{"min":129024,"max":129035},{"min":129040,"max":129095},{"min":129104,"max":129113},{"min":129120,"max":129159},{"min":129168,"max":129197},{"min":129200,"max":129201},{"min":129280,"max":129400},{"min":129402,"max":129483},{"min":129485,"max":129619},{"min":129632,"max":129645},{"min":129648,"max":129652},{"min":129656,"max":129658},{"min":129664,"max":129670},{"min":129680,"max":129704},{"min":129712,"max":129718},{"min":129728,"max":129730},{"min":129744,"max":129750},{"min":129792,"max":129938},{"min":129940,"max":129994},{"min":130032,"max":130041},{"min":917505,"max":917505},{"min":917536,"max":917631}]'),Or=JSON.parse('[{"min":994,"max":1007},{"min":11392,"max":11507},{"min":11513,"max":11519},{"min":66272,"max":66299}]'),kr=JSON.parse('[{"min":73728,"max":74649},{"min":74752,"max":74862},{"min":74864,"max":74868},{"min":74880,"max":75075}]'),wr=JSON.parse('[{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855},{"min":67584,"max":67589},{"min":67592,"max":67592},{"min":67594,"max":67637},{"min":67639,"max":67640},{"min":67644,"max":67644},{"min":67647,"max":67647}]'),Jr=JSON.parse('[{"min":1024,"max":1327},{"min":7296,"max":7304},{"min":7467,"max":7467},{"min":7544,"max":7544},{"min":7672,"max":7672},{"min":11744,"max":11775},{"min":11843,"max":11843},{"min":42560,"max":42655},{"min":65070,"max":65071}]'),br=JSON.parse('[{"min":66560,"max":66639}]'),Ar=JSON.parse('[{"min":2304,"max":2386},{"min":2389,"max":2431},{"min":7376,"max":7414},{"min":7416,"max":7417},{"min":8432,"max":8432},{"min":43056,"max":43065},{"min":43232,"max":43263}]'),Er=JSON.parse('[{"min":2404,"max":2415},{"min":43056,"max":43065},{"min":71680,"max":71739}]'),Mr=JSON.parse('[{"min":113664,"max":113770},{"min":113776,"max":113788},{"min":113792,"max":113800},{"min":113808,"max":113817},{"min":113820,"max":113827}]'),Lr=JSON.parse('[{"min":77824,"max":78894},{"min":78896,"max":78904}]'),Tr=JSON.parse('[{"min":66816,"max":66855}]'),Pr=JSON.parse('[{"min":69600,"max":69622}]'),Ir=JSON.parse('[{"min":4608,"max":4680},{"min":4682,"max":4685},{"min":4688,"max":4694},{"min":4696,"max":4696},{"min":4698,"max":4701},{"min":4704,"max":4744},{"min":4746,"max":4749},{"min":4752,"max":4784},{"min":4786,"max":4789},{"min":4792,"max":4798},{"min":4800,"max":4800},{"min":4802,"max":4805},{"min":4808,"max":4822},{"min":4824,"max":4880},{"min":4882,"max":4885},{"min":4888,"max":4954},{"min":4957,"max":4988},{"min":4992,"max":5017},{"min":11648,"max":11670},{"min":11680,"max":11686},{"min":11688,"max":11694},{"min":11696,"max":11702},{"min":11704,"max":11710},{"min":11712,"max":11718},{"min":11720,"max":11726},{"min":11728,"max":11734},{"min":11736,"max":11742},{"min":43777,"max":43782},{"min":43785,"max":43790},{"min":43793,"max":43798},{"min":43808,"max":43814},{"min":43816,"max":43822}]'),Dr=JSON.parse('[{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4351},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565}]'),Rr=JSON.parse('[{"min":1156,"max":1156},{"min":1159,"max":1159},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11843,"max":11843},{"min":42607,"max":42607},{"min":122880,"max":122886},{"min":122888,"max":122904},{"min":122907,"max":122913},{"min":122915,"max":122916},{"min":122918,"max":122922}]'),Gr=JSON.parse('[{"min":66352,"max":66378}]'),Br=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3046,"max":3059},{"min":7376,"max":7376},{"min":7378,"max":7379},{"min":7410,"max":7412},{"min":7416,"max":7417},{"min":8432,"max":8432},{"min":70400,"max":70403},{"min":70405,"max":70412},{"min":70415,"max":70416},{"min":70419,"max":70440},{"min":70442,"max":70448},{"min":70450,"max":70451},{"min":70453,"max":70457},{"min":70459,"max":70468},{"min":70471,"max":70472},{"min":70475,"max":70477},{"min":70480,"max":70480},{"min":70487,"max":70487},{"min":70493,"max":70499},{"min":70502,"max":70508},{"min":70512,"max":70516},{"min":73680,"max":73681},{"min":73683,"max":73683}]'),Wr=JSON.parse('[{"min":834,"max":834},{"min":837,"max":837},{"min":880,"max":883},{"min":885,"max":887},{"min":890,"max":893},{"min":895,"max":895},{"min":900,"max":900},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":929},{"min":931,"max":993},{"min":1008,"max":1023},{"min":7462,"max":7466},{"min":7517,"max":7521},{"min":7526,"max":7530},{"min":7615,"max":7617},{"min":7936,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8016,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8116},{"min":8118,"max":8132},{"min":8134,"max":8147},{"min":8150,"max":8155},{"min":8157,"max":8175},{"min":8178,"max":8180},{"min":8182,"max":8190},{"min":8486,"max":8486},{"min":43877,"max":43877},{"min":65856,"max":65934},{"min":65952,"max":65952},{"min":119296,"max":119365}]'),Fr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2689,"max":2691},{"min":2693,"max":2701},{"min":2703,"max":2705},{"min":2707,"max":2728},{"min":2730,"max":2736},{"min":2738,"max":2739},{"min":2741,"max":2745},{"min":2748,"max":2757},{"min":2759,"max":2761},{"min":2763,"max":2765},{"min":2768,"max":2768},{"min":2784,"max":2787},{"min":2790,"max":2801},{"min":2809,"max":2815},{"min":43056,"max":43065}]'),Qr=JSON.parse('[{"min":2404,"max":2405},{"min":73056,"max":73061},{"min":73063,"max":73064},{"min":73066,"max":73102},{"min":73104,"max":73105},{"min":73107,"max":73112},{"min":73120,"max":73129}]'),Hr=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2561,"max":2563},{"min":2565,"max":2570},{"min":2575,"max":2576},{"min":2579,"max":2600},{"min":2602,"max":2608},{"min":2610,"max":2611},{"min":2613,"max":2614},{"min":2616,"max":2617},{"min":2620,"max":2620},{"min":2622,"max":2626},{"min":2631,"max":2632},{"min":2635,"max":2637},{"min":2641,"max":2641},{"min":2649,"max":2652},{"min":2654,"max":2654},{"min":2662,"max":2678},{"min":43056,"max":43065}]'),jr=JSON.parse('[{"min":11904,"max":11929},{"min":11931,"max":12019},{"min":12032,"max":12245},{"min":12289,"max":12291},{"min":12293,"max":12305},{"min":12307,"max":12319},{"min":12321,"max":12333},{"min":12336,"max":12336},{"min":12343,"max":12351},{"min":12539,"max":12539},{"min":12688,"max":12703},{"min":12736,"max":12771},{"min":12832,"max":12871},{"min":12928,"max":12976},{"min":12992,"max":13003},{"min":13055,"max":13055},{"min":13144,"max":13168},{"min":13179,"max":13183},{"min":13280,"max":13310},{"min":13312,"max":19903},{"min":19968,"max":40956},{"min":42752,"max":42759},{"min":63744,"max":64109},{"min":64112,"max":64217},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":94192,"max":94193},{"min":119648,"max":119665},{"min":127568,"max":127569},{"min":131072,"max":173789},{"min":173824,"max":177972},{"min":177984,"max":178205},{"min":178208,"max":183969},{"min":183984,"max":191456},{"min":194560,"max":195101},{"min":196608,"max":201546}]'),zr=JSON.parse('[{"min":4352,"max":4607},{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12334,"max":12336},{"min":12343,"max":12343},{"min":12539,"max":12539},{"min":12593,"max":12686},{"min":12800,"max":12830},{"min":12896,"max":12926},{"min":43360,"max":43388},{"min":44032,"max":55203},{"min":55216,"max":55238},{"min":55243,"max":55291},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":65440,"max":65470},{"min":65474,"max":65479},{"min":65482,"max":65487},{"min":65490,"max":65495},{"min":65498,"max":65500}]'),Ur=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1563},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1748,"max":1748},{"min":68864,"max":68903},{"min":68912,"max":68921}]'),Kr=JSON.parse('[{"min":5920,"max":5942}]'),qr=JSON.parse('[{"min":67808,"max":67826},{"min":67828,"max":67829},{"min":67835,"max":67839}]'),$r=JSON.parse('[{"min":1425,"max":1479},{"min":1488,"max":1514},{"min":1519,"max":1524},{"min":64285,"max":64310},{"min":64312,"max":64316},{"min":64318,"max":64318},{"min":64320,"max":64321},{"min":64323,"max":64324},{"min":64326,"max":64335}]'),Vr=JSON.parse('[{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12336,"max":12341},{"min":12343,"max":12343},{"min":12348,"max":12349},{"min":12353,"max":12438},{"min":12441,"max":12448},{"min":12539,"max":12540},{"min":65093,"max":65094},{"min":65377,"max":65381},{"min":65392,"max":65392},{"min":65438,"max":65439},{"min":110593,"max":110878},{"min":110928,"max":110930},{"min":127488,"max":127488}]'),Xr=JSON.parse('[{"min":67648,"max":67669},{"min":67671,"max":67679}]'),Zr=JSON.parse('[{"min":768,"max":833},{"min":835,"max":836},{"min":838,"max":866},{"min":2387,"max":2388},{"min":6832,"max":6848},{"min":7618,"max":7671},{"min":7673,"max":7673},{"min":7675,"max":7679},{"min":8204,"max":8205},{"min":8400,"max":8431},{"min":65024,"max":65039},{"min":65056,"max":65069},{"min":66045,"max":66045},{"min":119143,"max":119145},{"min":119163,"max":119170},{"min":119173,"max":119179},{"min":119210,"max":119213},{"min":917760,"max":917999}]'),Yr=JSON.parse('[{"min":68448,"max":68466},{"min":68472,"max":68479}]'),ms=JSON.parse('[{"min":68416,"max":68437},{"min":68440,"max":68447}]'),ns=JSON.parse('[{"min":43392,"max":43469},{"min":43471,"max":43481},{"min":43486,"max":43487}]'),as=JSON.parse('[{"min":2406,"max":2415},{"min":43056,"max":43065},{"min":69760,"max":69825},{"min":69837,"max":69837}]'),is=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3200,"max":3212},{"min":3214,"max":3216},{"min":3218,"max":3240},{"min":3242,"max":3251},{"min":3253,"max":3257},{"min":3260,"max":3268},{"min":3270,"max":3272},{"min":3274,"max":3277},{"min":3285,"max":3286},{"min":3294,"max":3294},{"min":3296,"max":3299},{"min":3302,"max":3311},{"min":3313,"max":3314},{"min":7376,"max":7376},{"min":7378,"max":7378},{"min":7386,"max":7386},{"min":7410,"max":7410},{"min":7412,"max":7412},{"min":43056,"max":43061}]'),xs=JSON.parse('[{"min":12289,"max":12291},{"min":12296,"max":12305},{"min":12307,"max":12319},{"min":12336,"max":12341},{"min":12343,"max":12343},{"min":12348,"max":12349},{"min":12441,"max":12444},{"min":12448,"max":12543},{"min":12784,"max":12799},{"min":13008,"max":13054},{"min":13056,"max":13143},{"min":65093,"max":65094},{"min":65377,"max":65439},{"min":110592,"max":110592},{"min":110948,"max":110951}]'),es=JSON.parse('[{"min":43264,"max":43311}]'),ts=JSON.parse('[{"min":68096,"max":68099},{"min":68101,"max":68102},{"min":68108,"max":68115},{"min":68117,"max":68119},{"min":68121,"max":68149},{"min":68152,"max":68154},{"min":68159,"max":68168},{"min":68176,"max":68184}]'),rs=JSON.parse('[{"min":6016,"max":6109},{"min":6112,"max":6121},{"min":6128,"max":6137},{"min":6624,"max":6655}]'),ss=JSON.parse('[{"min":2790,"max":2799},{"min":43056,"max":43065},{"min":70144,"max":70161},{"min":70163,"max":70206}]'),os=JSON.parse('[{"min":2404,"max":2405},{"min":43056,"max":43065},{"min":70320,"max":70378},{"min":70384,"max":70393}]'),ls=JSON.parse('[{"min":3713,"max":3714},{"min":3716,"max":3716},{"min":3718,"max":3722},{"min":3724,"max":3747},{"min":3749,"max":3749},{"min":3751,"max":3773},{"min":3776,"max":3780},{"min":3782,"max":3782},{"min":3784,"max":3789},{"min":3792,"max":3801},{"min":3804,"max":3807}]'),cs=JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":170,"max":170},{"min":186,"max":186},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":696},{"min":736,"max":740},{"min":867,"max":879},{"min":1157,"max":1158},{"min":2385,"max":2386},{"min":4347,"max":4347},{"min":7424,"max":7461},{"min":7468,"max":7516},{"min":7522,"max":7525},{"min":7531,"max":7543},{"min":7545,"max":7614},{"min":7680,"max":7935},{"min":8239,"max":8239},{"min":8305,"max":8305},{"min":8319,"max":8319},{"min":8336,"max":8348},{"min":8432,"max":8432},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8584},{"min":11360,"max":11391},{"min":42752,"max":42759},{"min":42786,"max":42887},{"min":42891,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":43007},{"min":43310,"max":43310},{"min":43824,"max":43866},{"min":43868,"max":43876},{"min":43878,"max":43881},{"min":64256,"max":64262},{"min":65313,"max":65338},{"min":65345,"max":65370}]'),us=JSON.parse('[{"min":7168,"max":7223},{"min":7227,"max":7241},{"min":7245,"max":7247}]'),hs=JSON.parse('[{"min":2405,"max":2405},{"min":6400,"max":6430},{"min":6432,"max":6443},{"min":6448,"max":6459},{"min":6464,"max":6464},{"min":6468,"max":6479}]'),fs=JSON.parse('[{"min":65799,"max":65843},{"min":67072,"max":67382},{"min":67392,"max":67413},{"min":67424,"max":67431}]'),ps=JSON.parse('[{"min":65536,"max":65547},{"min":65549,"max":65574},{"min":65576,"max":65594},{"min":65596,"max":65597},{"min":65599,"max":65613},{"min":65616,"max":65629},{"min":65664,"max":65786},{"min":65792,"max":65794},{"min":65799,"max":65843},{"min":65847,"max":65855}]'),ds=JSON.parse('[{"min":42192,"max":42239},{"min":73648,"max":73648}]'),gs=JSON.parse('[{"min":66176,"max":66204}]'),ys=JSON.parse('[{"min":67872,"max":67897},{"min":67903,"max":67903}]'),Ss=JSON.parse('[{"min":2404,"max":2415},{"min":43056,"max":43065},{"min":69968,"max":70006}]'),_s=JSON.parse('[{"min":73440,"max":73464}]'),vs=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3328,"max":3340},{"min":3342,"max":3344},{"min":3346,"max":3396},{"min":3398,"max":3400},{"min":3402,"max":3407},{"min":3412,"max":3427},{"min":3430,"max":3455},{"min":7386,"max":7386},{"min":43056,"max":43058}]'),Ns=JSON.parse('[{"min":1600,"max":1600},{"min":2112,"max":2139},{"min":2142,"max":2142}]'),Cs=JSON.parse('[{"min":1600,"max":1600},{"min":68288,"max":68326},{"min":68331,"max":68342}]'),Os=JSON.parse('[{"min":72816,"max":72847},{"min":72850,"max":72871},{"min":72873,"max":72886}]'),ks=JSON.parse('[{"min":93760,"max":93850}]'),ws=JSON.parse('[{"min":2404,"max":2405},{"min":72960,"max":72966},{"min":72968,"max":72969},{"min":72971,"max":73014},{"min":73018,"max":73018},{"min":73020,"max":73021},{"min":73023,"max":73031},{"min":73040,"max":73049}]'),Js=JSON.parse('[{"min":43744,"max":43766},{"min":43968,"max":44013},{"min":44016,"max":44025}]'),bs=JSON.parse('[{"min":124928,"max":125124},{"min":125127,"max":125142}]'),As=JSON.parse('[{"min":68000,"max":68023},{"min":68028,"max":68047},{"min":68050,"max":68095}]'),Es=JSON.parse('[{"min":67968,"max":67999}]'),Ms=JSON.parse('[{"min":93952,"max":94026},{"min":94031,"max":94087},{"min":94095,"max":94111}]'),Ls=JSON.parse('[{"min":43056,"max":43065},{"min":71168,"max":71236},{"min":71248,"max":71257}]'),Ts=JSON.parse('[{"min":6144,"max":6158},{"min":6160,"max":6169},{"min":6176,"max":6264},{"min":6272,"max":6314},{"min":8239,"max":8239},{"min":71264,"max":71276}]'),Ps=JSON.parse('[{"min":92736,"max":92766},{"min":92768,"max":92777},{"min":92782,"max":92783}]'),Is=JSON.parse('[{"min":2662,"max":2671},{"min":70272,"max":70278},{"min":70280,"max":70280},{"min":70282,"max":70285},{"min":70287,"max":70301},{"min":70303,"max":70313}]'),Ds=JSON.parse('[{"min":4096,"max":4255},{"min":43310,"max":43310},{"min":43488,"max":43518},{"min":43616,"max":43647}]'),Rs=JSON.parse('[{"min":67712,"max":67742},{"min":67751,"max":67759}]'),Gs=JSON.parse('[{"min":2404,"max":2405},{"min":3302,"max":3311},{"min":7401,"max":7401},{"min":7410,"max":7410},{"min":7418,"max":7418},{"min":43056,"max":43061},{"min":72096,"max":72103},{"min":72106,"max":72151},{"min":72154,"max":72164}]'),Bs=JSON.parse('[{"min":6528,"max":6571},{"min":6576,"max":6601},{"min":6608,"max":6618},{"min":6622,"max":6623}]'),Ws=JSON.parse('[{"min":70656,"max":70747},{"min":70749,"max":70753}]'),Fs=JSON.parse('[{"min":1984,"max":2042},{"min":2045,"max":2047}]'),Qs=JSON.parse('[{"min":94177,"max":94177},{"min":110960,"max":111355}]'),Hs=JSON.parse('[{"min":123136,"max":123180},{"min":123184,"max":123197},{"min":123200,"max":123209},{"min":123214,"max":123215}]'),js=JSON.parse('[{"min":5760,"max":5788}]'),zs=JSON.parse('[{"min":7248,"max":7295}]'),Us=JSON.parse('[{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":68858,"max":68863}]'),Ks=JSON.parse('[{"min":66304,"max":66339},{"min":66349,"max":66351}]'),qs=JSON.parse('[{"min":68224,"max":68255}]'),$s=JSON.parse('[{"min":1155,"max":1155},{"min":66384,"max":66426}]'),Vs=JSON.parse('[{"min":66464,"max":66499},{"min":66504,"max":66517}]'),Xs=JSON.parse('[{"min":69376,"max":69415}]'),Zs=JSON.parse('[{"min":68192,"max":68223}]'),Ys=JSON.parse('[{"min":68608,"max":68680}]'),mo=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2817,"max":2819},{"min":2821,"max":2828},{"min":2831,"max":2832},{"min":2835,"max":2856},{"min":2858,"max":2864},{"min":2866,"max":2867},{"min":2869,"max":2873},{"min":2876,"max":2884},{"min":2887,"max":2888},{"min":2891,"max":2893},{"min":2901,"max":2903},{"min":2908,"max":2909},{"min":2911,"max":2915},{"min":2918,"max":2935},{"min":7386,"max":7386},{"min":7410,"max":7410}]'),no=JSON.parse('[{"min":66736,"max":66771},{"min":66776,"max":66811}]'),ao=JSON.parse('[{"min":66688,"max":66717},{"min":66720,"max":66729}]'),io=JSON.parse('[{"min":92928,"max":92997},{"min":93008,"max":93017},{"min":93019,"max":93025},{"min":93027,"max":93047},{"min":93053,"max":93071}]'),xo=JSON.parse('[{"min":67680,"max":67711}]'),eo=JSON.parse('[{"min":72384,"max":72440}]'),to=JSON.parse('[{"min":6146,"max":6147},{"min":6149,"max":6149},{"min":43072,"max":43127}]'),ro=JSON.parse('[{"min":67840,"max":67867},{"min":67871,"max":67871}]'),so=JSON.parse('[{"min":1600,"max":1600},{"min":68480,"max":68497},{"min":68505,"max":68508},{"min":68521,"max":68527}]'),oo=JSON.parse('[{"min":43312,"max":43347},{"min":43359,"max":43359}]'),lo=JSON.parse('[{"min":5792,"max":5866},{"min":5870,"max":5880}]'),co=JSON.parse('[{"min":2048,"max":2093},{"min":2096,"max":2110}]'),uo=JSON.parse('[{"min":43136,"max":43205},{"min":43214,"max":43225}]'),ho=JSON.parse('[{"min":2385,"max":2385},{"min":7383,"max":7383},{"min":7385,"max":7385},{"min":7388,"max":7389},{"min":7392,"max":7392},{"min":70016,"max":70111}]'),fo=JSON.parse('[{"min":66640,"max":66687}]'),po=JSON.parse('[{"min":71040,"max":71093},{"min":71096,"max":71133}]'),go=JSON.parse('[{"min":120832,"max":121483},{"min":121499,"max":121503},{"min":121505,"max":121519}]'),yo=JSON.parse('[{"min":2404,"max":2405},{"min":3457,"max":3459},{"min":3461,"max":3478},{"min":3482,"max":3505},{"min":3507,"max":3515},{"min":3517,"max":3517},{"min":3520,"max":3526},{"min":3530,"max":3530},{"min":3535,"max":3540},{"min":3542,"max":3542},{"min":3544,"max":3551},{"min":3558,"max":3567},{"min":3570,"max":3572},{"min":70113,"max":70132}]'),So=JSON.parse('[{"min":1600,"max":1600},{"min":69424,"max":69465}]'),_o=JSON.parse('[{"min":69840,"max":69864},{"min":69872,"max":69881}]'),vo=JSON.parse('[{"min":72272,"max":72354}]'),No=JSON.parse('[{"min":7040,"max":7103},{"min":7360,"max":7367}]'),Co=JSON.parse('[{"min":2404,"max":2405},{"min":2534,"max":2543},{"min":43008,"max":43052}]'),Oo=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1564},{"min":1567,"max":1567},{"min":1600,"max":1600},{"min":1611,"max":1621},{"min":1648,"max":1648},{"min":1792,"max":1805},{"min":1807,"max":1866},{"min":1869,"max":1871},{"min":2144,"max":2154},{"min":7672,"max":7672}]'),ko=JSON.parse('[{"min":5888,"max":5900},{"min":5902,"max":5908},{"min":5941,"max":5942}]'),wo=JSON.parse('[{"min":5941,"max":5942},{"min":5984,"max":5996},{"min":5998,"max":6000},{"min":6002,"max":6003}]'),Jo=JSON.parse('[{"min":4160,"max":4169},{"min":6480,"max":6509},{"min":6512,"max":6516}]'),bo=JSON.parse('[{"min":6688,"max":6750},{"min":6752,"max":6780},{"min":6783,"max":6793},{"min":6800,"max":6809},{"min":6816,"max":6829}]'),Ao=JSON.parse('[{"min":43648,"max":43714},{"min":43739,"max":43743}]'),Eo=JSON.parse('[{"min":2404,"max":2405},{"min":43056,"max":43065},{"min":71296,"max":71352},{"min":71360,"max":71369}]'),Mo=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":2946,"max":2947},{"min":2949,"max":2954},{"min":2958,"max":2960},{"min":2962,"max":2965},{"min":2969,"max":2970},{"min":2972,"max":2972},{"min":2974,"max":2975},{"min":2979,"max":2980},{"min":2984,"max":2986},{"min":2990,"max":3001},{"min":3006,"max":3010},{"min":3014,"max":3016},{"min":3018,"max":3021},{"min":3024,"max":3024},{"min":3031,"max":3031},{"min":3046,"max":3066},{"min":7386,"max":7386},{"min":43251,"max":43251},{"min":70401,"max":70401},{"min":70403,"max":70403},{"min":70459,"max":70460},{"min":73664,"max":73713},{"min":73727,"max":73727}]'),Lo=JSON.parse('[{"min":94176,"max":94176},{"min":94208,"max":100343},{"min":100352,"max":101119},{"min":101632,"max":101640}]'),To=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":3072,"max":3084},{"min":3086,"max":3088},{"min":3090,"max":3112},{"min":3114,"max":3129},{"min":3133,"max":3140},{"min":3142,"max":3144},{"min":3146,"max":3149},{"min":3157,"max":3158},{"min":3160,"max":3162},{"min":3168,"max":3171},{"min":3174,"max":3183},{"min":3191,"max":3199},{"min":7386,"max":7386},{"min":7410,"max":7410}]'),Po=JSON.parse('[{"min":1548,"max":1548},{"min":1563,"max":1564},{"min":1567,"max":1567},{"min":1632,"max":1641},{"min":1920,"max":1969},{"min":65010,"max":65010},{"min":65021,"max":65021}]'),Io=JSON.parse('[{"min":3585,"max":3642},{"min":3648,"max":3675}]'),Do=JSON.parse('[{"min":3840,"max":3911},{"min":3913,"max":3948},{"min":3953,"max":3991},{"min":3993,"max":4028},{"min":4030,"max":4044},{"min":4046,"max":4052},{"min":4057,"max":4058}]'),Ro=JSON.parse('[{"min":11568,"max":11623},{"min":11631,"max":11632},{"min":11647,"max":11647}]'),Go=JSON.parse('[{"min":2385,"max":2386},{"min":2404,"max":2405},{"min":7410,"max":7410},{"min":43056,"max":43065},{"min":70784,"max":70855},{"min":70864,"max":70873}]'),Bo=JSON.parse('[{"min":66432,"max":66461},{"min":66463,"max":66463}]'),Wo=JSON.parse('[{"min":42240,"max":42539}]'),Fo=JSON.parse('[{"min":123584,"max":123641},{"min":123647,"max":123647}]'),Qo=JSON.parse('[{"min":71840,"max":71922},{"min":71935,"max":71935}]'),Ho=JSON.parse('[{"min":12289,"max":12290},{"min":12296,"max":12305},{"min":12308,"max":12315},{"min":12539,"max":12539},{"min":40960,"max":42124},{"min":42128,"max":42182},{"min":65377,"max":65381}]'),jo=JSON.parse('[{"min":72192,"max":72263}]');var zo=Object.freeze({__proto__:null,Adlam:mr,Ahom:nr,Anatolian_Hieroglyphs:ar,Arabic:ir,Armenian:xr,Avestan:er,Balinese:tr,Bamum:rr,Bassa_Vah:sr,Batak:or,Bengali:lr,Bhaiksuki:cr,Bopomofo:ur,Brahmi:hr,Braille:fr,Buginese:pr,Buhid:dr,Canadian_Aboriginal:gr,Carian:yr,Caucasian_Albanian:Sr,Chakma:_r,Cham:vr,Cherokee:Nr,Common:Cr,Coptic:Or,Cuneiform:kr,Cypriot:wr,Cyrillic:Jr,Deseret:br,Devanagari:Ar,Dogra:Er,Duployan:Mr,Egyptian_Hieroglyphs:Lr,Elbasan:Tr,Elymaic:Pr,Ethiopic:Ir,Georgian:Dr,Glagolitic:Rr,Gothic:Gr,Grantha:Br,Greek:Wr,Gujarati:Fr,Gunjala_Gondi:Qr,Gurmukhi:Hr,Han:jr,Hangul:zr,Hanifi_Rohingya:Ur,Hanunoo:Kr,Hatran:qr,Hebrew:$r,Hiragana:Vr,Imperial_Aramaic:Xr,Inherited:Zr,Inscriptional_Pahlavi:Yr,Inscriptional_Parthian:ms,Javanese:ns,Kaithi:as,Kannada:is,Katakana:xs,Kayah_Li:es,Kharoshthi:ts,Khmer:rs,Khojki:ss,Khudawadi:os,Lao:ls,Latin:cs,Lepcha:us,Limbu:hs,Linear_A:fs,Linear_B:ps,Lisu:ds,Lycian:gs,Lydian:ys,Mahajani:Ss,Makasar:_s,Malayalam:vs,Mandaic:Ns,Manichaean:Cs,Marchen:Os,Medefaidrin:ks,Masaram_Gondi:ws,Meetei_Mayek:Js,Mende_Kikakui:bs,Meroitic_Cursive:As,Meroitic_Hieroglyphs:Es,Miao:Ms,Modi:Ls,Mongolian:Ts,Mro:Ps,Multani:Is,Myanmar:Ds,Nabataean:Rs,Nandinagari:Gs,New_Tai_Lue:Bs,Newa:Ws,Nko:Fs,Nushu:Qs,Nyiakeng_Puachue_Hmong:Hs,Ogham:js,Ol_Chiki:zs,Old_Hungarian:Us,Old_Italic:Ks,Old_North_Arabian:qs,Old_Permic:$s,Old_Persian:Vs,Old_Sogdian:Xs,Old_South_Arabian:Zs,Old_Turkic:Ys,Oriya:mo,Osage:no,Osmanya:ao,Pahawh_Hmong:io,Palmyrene:xo,Pau_Cin_Hau:eo,Phags_Pa:to,Phoenician:ro,Psalter_Pahlavi:so,Rejang:oo,Runic:lo,Samaritan:co,Saurashtra:uo,Sharada:ho,Shavian:fo,Siddham:po,SignWriting:go,Sinhala:yo,Sogdian:So,Sora_Sompeng:_o,Soyombo:vo,Sundanese:No,Syloti_Nagri:Co,Syriac:Oo,Tagalog:ko,Tagbanwa:wo,Tai_Le:Jo,Tai_Tham:bo,Tai_Viet:Ao,Takri:Eo,Tamil:Mo,Tangut:Lo,Telugu:To,Thaana:Po,Thai:Io,Tibetan:Do,Tifinagh:Ro,Tirhuta:Go,Ugaritic:Bo,Vai:Wo,Wancho:Fo,Warang_Citi:Qo,Yi:Ho,Zanabazar_Square:jo});const Uo=i.empty(1114111).union(JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":246},{"min":248,"max":303},{"min":306,"max":311},{"min":313,"max":328},{"min":330,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":495},{"min":497,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":943},{"min":945,"max":977},{"min":981,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1414},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7829},{"min":7835,"max":7835},{"min":7838,"max":7838},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8017,"max":8017},{"min":8019,"max":8019},{"min":8021,"max":8021},{"min":8023,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8064,"max":8113},{"min":8115,"max":8115},{"min":8120,"max":8124},{"min":8126,"max":8126},{"min":8131,"max":8131},{"min":8136,"max":8140},{"min":8144,"max":8145},{"min":8152,"max":8155},{"min":8160,"max":8161},{"min":8165,"max":8165},{"min":8168,"max":8172},{"min":8179,"max":8179},{"min":8184,"max":8188},{"min":8486,"max":8486},{"min":8490,"max":8491},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":65313,"max":65338},{"min":65345,"max":65370},{"min":66560,"max":66639},{"min":66736,"max":66771},{"min":66776,"max":66811},{"min":68736,"max":68786},{"min":68800,"max":68850},{"min":71840,"max":71903},{"min":93760,"max":93823},{"min":125184,"max":125251}]')),Ko=JSON.parse('{"65":[65,97],"66":[66,98],"67":[67,99],"68":[68,100],"69":[69,101],"70":[70,102],"71":[71,103],"72":[72,104],"73":[73,105],"74":[74,106],"75":[75,107,8490],"76":[76,108],"77":[77,109],"78":[78,110],"79":[79,111],"80":[80,112],"81":[81,113],"82":[82,114],"83":[83,115,383],"84":[84,116],"85":[85,117],"86":[86,118],"87":[87,119],"88":[88,120],"89":[89,121],"90":[90,122],"97":[65,97],"98":[66,98],"99":[67,99],"100":[68,100],"101":[69,101],"102":[70,102],"103":[71,103],"104":[72,104],"105":[73,105],"106":[74,106],"107":[75,107,8490],"108":[76,108],"109":[77,109],"110":[78,110],"111":[79,111],"112":[80,112],"113":[81,113],"114":[82,114],"115":[83,115,383],"116":[84,116],"117":[85,117],"118":[86,118],"119":[87,119],"120":[88,120],"121":[89,121],"122":[90,122],"181":[181,924,956],"192":[192,224],"193":[193,225],"194":[194,226],"195":[195,227],"196":[196,228],"197":[197,229,8491],"198":[198,230],"199":[199,231],"200":[200,232],"201":[201,233],"202":[202,234],"203":[203,235],"204":[204,236],"205":[205,237],"206":[206,238],"207":[207,239],"208":[208,240],"209":[209,241],"210":[210,242],"211":[211,243],"212":[212,244],"213":[213,245],"214":[214,246],"216":[216,248],"217":[217,249],"218":[218,250],"219":[219,251],"220":[220,252],"221":[221,253],"222":[222,254],"223":[223,7838],"224":[192,224],"225":[193,225],"226":[194,226],"227":[195,227],"228":[196,228],"229":[197,229,8491],"230":[198,230],"231":[199,231],"232":[200,232],"233":[201,233],"234":[202,234],"235":[203,235],"236":[204,236],"237":[205,237],"238":[206,238],"239":[207,239],"240":[208,240],"241":[209,241],"242":[210,242],"243":[211,243],"244":[212,244],"245":[213,245],"246":[214,246],"248":[216,248],"249":[217,249],"250":[218,250],"251":[219,251],"252":[220,252],"253":[221,253],"254":[222,254],"255":[255,376],"256":[256,257],"257":[256,257],"258":[258,259],"259":[258,259],"260":[260,261],"261":[260,261],"262":[262,263],"263":[262,263],"264":[264,265],"265":[264,265],"266":[266,267],"267":[266,267],"268":[268,269],"269":[268,269],"270":[270,271],"271":[270,271],"272":[272,273],"273":[272,273],"274":[274,275],"275":[274,275],"276":[276,277],"277":[276,277],"278":[278,279],"279":[278,279],"280":[280,281],"281":[280,281],"282":[282,283],"283":[282,283],"284":[284,285],"285":[284,285],"286":[286,287],"287":[286,287],"288":[288,289],"289":[288,289],"290":[290,291],"291":[290,291],"292":[292,293],"293":[292,293],"294":[294,295],"295":[294,295],"296":[296,297],"297":[296,297],"298":[298,299],"299":[298,299],"300":[300,301],"301":[300,301],"302":[302,303],"303":[302,303],"306":[306,307],"307":[306,307],"308":[308,309],"309":[308,309],"310":[310,311],"311":[310,311],"313":[313,314],"314":[313,314],"315":[315,316],"316":[315,316],"317":[317,318],"318":[317,318],"319":[319,320],"320":[319,320],"321":[321,322],"322":[321,322],"323":[323,324],"324":[323,324],"325":[325,326],"326":[325,326],"327":[327,328],"328":[327,328],"330":[330,331],"331":[330,331],"332":[332,333],"333":[332,333],"334":[334,335],"335":[334,335],"336":[336,337],"337":[336,337],"338":[338,339],"339":[338,339],"340":[340,341],"341":[340,341],"342":[342,343],"343":[342,343],"344":[344,345],"345":[344,345],"346":[346,347],"347":[346,347],"348":[348,349],"349":[348,349],"350":[350,351],"351":[350,351],"352":[352,353],"353":[352,353],"354":[354,355],"355":[354,355],"356":[356,357],"357":[356,357],"358":[358,359],"359":[358,359],"360":[360,361],"361":[360,361],"362":[362,363],"363":[362,363],"364":[364,365],"365":[364,365],"366":[366,367],"367":[366,367],"368":[368,369],"369":[368,369],"370":[370,371],"371":[370,371],"372":[372,373],"373":[372,373],"374":[374,375],"375":[374,375],"376":[255,376],"377":[377,378],"378":[377,378],"379":[379,380],"380":[379,380],"381":[381,382],"382":[381,382],"383":[83,115,383],"384":[384,579],"385":[385,595],"386":[386,387],"387":[386,387],"388":[388,389],"389":[388,389],"390":[390,596],"391":[391,392],"392":[391,392],"393":[393,598],"394":[394,599],"395":[395,396],"396":[395,396],"398":[398,477],"399":[399,601],"400":[400,603],"401":[401,402],"402":[401,402],"403":[403,608],"404":[404,611],"405":[405,502],"406":[406,617],"407":[407,616],"408":[408,409],"409":[408,409],"410":[410,573],"412":[412,623],"413":[413,626],"414":[414,544],"415":[415,629],"416":[416,417],"417":[416,417],"418":[418,419],"419":[418,419],"420":[420,421],"421":[420,421],"422":[422,640],"423":[423,424],"424":[423,424],"425":[425,643],"428":[428,429],"429":[428,429],"430":[430,648],"431":[431,432],"432":[431,432],"433":[433,650],"434":[434,651],"435":[435,436],"436":[435,436],"437":[437,438],"438":[437,438],"439":[439,658],"440":[440,441],"441":[440,441],"444":[444,445],"445":[444,445],"447":[447,503],"452":[452,453,454],"453":[452,453,454],"454":[452,453,454],"455":[455,456,457],"456":[455,456,457],"457":[455,456,457],"458":[458,459,460],"459":[458,459,460],"460":[458,459,460],"461":[461,462],"462":[461,462],"463":[463,464],"464":[463,464],"465":[465,466],"466":[465,466],"467":[467,468],"468":[467,468],"469":[469,470],"470":[469,470],"471":[471,472],"472":[471,472],"473":[473,474],"474":[473,474],"475":[475,476],"476":[475,476],"477":[398,477],"478":[478,479],"479":[478,479],"480":[480,481],"481":[480,481],"482":[482,483],"483":[482,483],"484":[484,485],"485":[484,485],"486":[486,487],"487":[486,487],"488":[488,489],"489":[488,489],"490":[490,491],"491":[490,491],"492":[492,493],"493":[492,493],"494":[494,495],"495":[494,495],"497":[497,498,499],"498":[497,498,499],"499":[497,498,499],"500":[500,501],"501":[500,501],"502":[405,502],"503":[447,503],"504":[504,505],"505":[504,505],"506":[506,507],"507":[506,507],"508":[508,509],"509":[508,509],"510":[510,511],"511":[510,511],"512":[512,513],"513":[512,513],"514":[514,515],"515":[514,515],"516":[516,517],"517":[516,517],"518":[518,519],"519":[518,519],"520":[520,521],"521":[520,521],"522":[522,523],"523":[522,523],"524":[524,525],"525":[524,525],"526":[526,527],"527":[526,527],"528":[528,529],"529":[528,529],"530":[530,531],"531":[530,531],"532":[532,533],"533":[532,533],"534":[534,535],"535":[534,535],"536":[536,537],"537":[536,537],"538":[538,539],"539":[538,539],"540":[540,541],"541":[540,541],"542":[542,543],"543":[542,543],"544":[414,544],"546":[546,547],"547":[546,547],"548":[548,549],"549":[548,549],"550":[550,551],"551":[550,551],"552":[552,553],"553":[552,553],"554":[554,555],"555":[554,555],"556":[556,557],"557":[556,557],"558":[558,559],"559":[558,559],"560":[560,561],"561":[560,561],"562":[562,563],"563":[562,563],"570":[570,11365],"571":[571,572],"572":[571,572],"573":[410,573],"574":[574,11366],"575":[575,11390],"576":[576,11391],"577":[577,578],"578":[577,578],"579":[384,579],"580":[580,649],"581":[581,652],"582":[582,583],"583":[582,583],"584":[584,585],"585":[584,585],"586":[586,587],"587":[586,587],"588":[588,589],"589":[588,589],"590":[590,591],"591":[590,591],"592":[592,11375],"593":[593,11373],"594":[594,11376],"595":[385,595],"596":[390,596],"598":[393,598],"599":[394,599],"601":[399,601],"603":[400,603],"604":[604,42923],"608":[403,608],"609":[609,42924],"611":[404,611],"613":[613,42893],"614":[614,42922],"616":[407,616],"617":[406,617],"618":[618,42926],"619":[619,11362],"620":[620,42925],"623":[412,623],"625":[625,11374],"626":[413,626],"629":[415,629],"637":[637,11364],"640":[422,640],"642":[642,42949],"643":[425,643],"647":[647,42929],"648":[430,648],"649":[580,649],"650":[433,650],"651":[434,651],"652":[581,652],"658":[439,658],"669":[669,42930],"670":[670,42928],"837":[837,921,953,8126],"880":[880,881],"881":[880,881],"882":[882,883],"883":[882,883],"886":[886,887],"887":[886,887],"891":[891,1021],"892":[892,1022],"893":[893,1023],"895":[895,1011],"902":[902,940],"904":[904,941],"905":[905,942],"906":[906,943],"908":[908,972],"910":[910,973],"911":[911,974],"913":[913,945],"914":[914,946,976],"915":[915,947],"916":[916,948],"917":[917,949,1013],"918":[918,950],"919":[919,951],"920":[920,952,977,1012],"921":[837,921,953,8126],"922":[922,954,1008],"923":[923,955],"924":[181,924,956],"925":[925,957],"926":[926,958],"927":[927,959],"928":[928,960,982],"929":[929,961,1009],"931":[931,962,963],"932":[932,964],"933":[933,965],"934":[934,966,981],"935":[935,967],"936":[936,968],"937":[937,969,8486],"938":[938,970],"939":[939,971],"940":[902,940],"941":[904,941],"942":[905,942],"943":[906,943],"945":[913,945],"946":[914,946,976],"947":[915,947],"948":[916,948],"949":[917,949,1013],"950":[918,950],"951":[919,951],"952":[920,952,977,1012],"953":[837,921,953,8126],"954":[922,954,1008],"955":[923,955],"956":[181,924,956],"957":[925,957],"958":[926,958],"959":[927,959],"960":[928,960,982],"961":[929,961,1009],"962":[931,962,963],"963":[931,962,963],"964":[932,964],"965":[933,965],"966":[934,966,981],"967":[935,967],"968":[936,968],"969":[937,969,8486],"970":[938,970],"971":[939,971],"972":[908,972],"973":[910,973],"974":[911,974],"975":[975,983],"976":[914,946,976],"977":[920,952,977,1012],"981":[934,966,981],"982":[928,960,982],"983":[975,983],"984":[984,985],"985":[984,985],"986":[986,987],"987":[986,987],"988":[988,989],"989":[988,989],"990":[990,991],"991":[990,991],"992":[992,993],"993":[992,993],"994":[994,995],"995":[994,995],"996":[996,997],"997":[996,997],"998":[998,999],"999":[998,999],"1000":[1000,1001],"1001":[1000,1001],"1002":[1002,1003],"1003":[1002,1003],"1004":[1004,1005],"1005":[1004,1005],"1006":[1006,1007],"1007":[1006,1007],"1008":[922,954,1008],"1009":[929,961,1009],"1010":[1010,1017],"1011":[895,1011],"1012":[920,952,977,1012],"1013":[917,949,1013],"1015":[1015,1016],"1016":[1015,1016],"1017":[1010,1017],"1018":[1018,1019],"1019":[1018,1019],"1021":[891,1021],"1022":[892,1022],"1023":[893,1023],"1024":[1024,1104],"1025":[1025,1105],"1026":[1026,1106],"1027":[1027,1107],"1028":[1028,1108],"1029":[1029,1109],"1030":[1030,1110],"1031":[1031,1111],"1032":[1032,1112],"1033":[1033,1113],"1034":[1034,1114],"1035":[1035,1115],"1036":[1036,1116],"1037":[1037,1117],"1038":[1038,1118],"1039":[1039,1119],"1040":[1040,1072],"1041":[1041,1073],"1042":[1042,1074,7296],"1043":[1043,1075],"1044":[1044,1076,7297],"1045":[1045,1077],"1046":[1046,1078],"1047":[1047,1079],"1048":[1048,1080],"1049":[1049,1081],"1050":[1050,1082],"1051":[1051,1083],"1052":[1052,1084],"1053":[1053,1085],"1054":[1054,1086,7298],"1055":[1055,1087],"1056":[1056,1088],"1057":[1057,1089,7299],"1058":[1058,1090,7300,7301],"1059":[1059,1091],"1060":[1060,1092],"1061":[1061,1093],"1062":[1062,1094],"1063":[1063,1095],"1064":[1064,1096],"1065":[1065,1097],"1066":[1066,1098,7302],"1067":[1067,1099],"1068":[1068,1100],"1069":[1069,1101],"1070":[1070,1102],"1071":[1071,1103],"1072":[1040,1072],"1073":[1041,1073],"1074":[1042,1074,7296],"1075":[1043,1075],"1076":[1044,1076,7297],"1077":[1045,1077],"1078":[1046,1078],"1079":[1047,1079],"1080":[1048,1080],"1081":[1049,1081],"1082":[1050,1082],"1083":[1051,1083],"1084":[1052,1084],"1085":[1053,1085],"1086":[1054,1086,7298],"1087":[1055,1087],"1088":[1056,1088],"1089":[1057,1089,7299],"1090":[1058,1090,7300,7301],"1091":[1059,1091],"1092":[1060,1092],"1093":[1061,1093],"1094":[1062,1094],"1095":[1063,1095],"1096":[1064,1096],"1097":[1065,1097],"1098":[1066,1098,7302],"1099":[1067,1099],"1100":[1068,1100],"1101":[1069,1101],"1102":[1070,1102],"1103":[1071,1103],"1104":[1024,1104],"1105":[1025,1105],"1106":[1026,1106],"1107":[1027,1107],"1108":[1028,1108],"1109":[1029,1109],"1110":[1030,1110],"1111":[1031,1111],"1112":[1032,1112],"1113":[1033,1113],"1114":[1034,1114],"1115":[1035,1115],"1116":[1036,1116],"1117":[1037,1117],"1118":[1038,1118],"1119":[1039,1119],"1120":[1120,1121],"1121":[1120,1121],"1122":[1122,1123,7303],"1123":[1122,1123,7303],"1124":[1124,1125],"1125":[1124,1125],"1126":[1126,1127],"1127":[1126,1127],"1128":[1128,1129],"1129":[1128,1129],"1130":[1130,1131],"1131":[1130,1131],"1132":[1132,1133],"1133":[1132,1133],"1134":[1134,1135],"1135":[1134,1135],"1136":[1136,1137],"1137":[1136,1137],"1138":[1138,1139],"1139":[1138,1139],"1140":[1140,1141],"1141":[1140,1141],"1142":[1142,1143],"1143":[1142,1143],"1144":[1144,1145],"1145":[1144,1145],"1146":[1146,1147],"1147":[1146,1147],"1148":[1148,1149],"1149":[1148,1149],"1150":[1150,1151],"1151":[1150,1151],"1152":[1152,1153],"1153":[1152,1153],"1162":[1162,1163],"1163":[1162,1163],"1164":[1164,1165],"1165":[1164,1165],"1166":[1166,1167],"1167":[1166,1167],"1168":[1168,1169],"1169":[1168,1169],"1170":[1170,1171],"1171":[1170,1171],"1172":[1172,1173],"1173":[1172,1173],"1174":[1174,1175],"1175":[1174,1175],"1176":[1176,1177],"1177":[1176,1177],"1178":[1178,1179],"1179":[1178,1179],"1180":[1180,1181],"1181":[1180,1181],"1182":[1182,1183],"1183":[1182,1183],"1184":[1184,1185],"1185":[1184,1185],"1186":[1186,1187],"1187":[1186,1187],"1188":[1188,1189],"1189":[1188,1189],"1190":[1190,1191],"1191":[1190,1191],"1192":[1192,1193],"1193":[1192,1193],"1194":[1194,1195],"1195":[1194,1195],"1196":[1196,1197],"1197":[1196,1197],"1198":[1198,1199],"1199":[1198,1199],"1200":[1200,1201],"1201":[1200,1201],"1202":[1202,1203],"1203":[1202,1203],"1204":[1204,1205],"1205":[1204,1205],"1206":[1206,1207],"1207":[1206,1207],"1208":[1208,1209],"1209":[1208,1209],"1210":[1210,1211],"1211":[1210,1211],"1212":[1212,1213],"1213":[1212,1213],"1214":[1214,1215],"1215":[1214,1215],"1216":[1216,1231],"1217":[1217,1218],"1218":[1217,1218],"1219":[1219,1220],"1220":[1219,1220],"1221":[1221,1222],"1222":[1221,1222],"1223":[1223,1224],"1224":[1223,1224],"1225":[1225,1226],"1226":[1225,1226],"1227":[1227,1228],"1228":[1227,1228],"1229":[1229,1230],"1230":[1229,1230],"1231":[1216,1231],"1232":[1232,1233],"1233":[1232,1233],"1234":[1234,1235],"1235":[1234,1235],"1236":[1236,1237],"1237":[1236,1237],"1238":[1238,1239],"1239":[1238,1239],"1240":[1240,1241],"1241":[1240,1241],"1242":[1242,1243],"1243":[1242,1243],"1244":[1244,1245],"1245":[1244,1245],"1246":[1246,1247],"1247":[1246,1247],"1248":[1248,1249],"1249":[1248,1249],"1250":[1250,1251],"1251":[1250,1251],"1252":[1252,1253],"1253":[1252,1253],"1254":[1254,1255],"1255":[1254,1255],"1256":[1256,1257],"1257":[1256,1257],"1258":[1258,1259],"1259":[1258,1259],"1260":[1260,1261],"1261":[1260,1261],"1262":[1262,1263],"1263":[1262,1263],"1264":[1264,1265],"1265":[1264,1265],"1266":[1266,1267],"1267":[1266,1267],"1268":[1268,1269],"1269":[1268,1269],"1270":[1270,1271],"1271":[1270,1271],"1272":[1272,1273],"1273":[1272,1273],"1274":[1274,1275],"1275":[1274,1275],"1276":[1276,1277],"1277":[1276,1277],"1278":[1278,1279],"1279":[1278,1279],"1280":[1280,1281],"1281":[1280,1281],"1282":[1282,1283],"1283":[1282,1283],"1284":[1284,1285],"1285":[1284,1285],"1286":[1286,1287],"1287":[1286,1287],"1288":[1288,1289],"1289":[1288,1289],"1290":[1290,1291],"1291":[1290,1291],"1292":[1292,1293],"1293":[1292,1293],"1294":[1294,1295],"1295":[1294,1295],"1296":[1296,1297],"1297":[1296,1297],"1298":[1298,1299],"1299":[1298,1299],"1300":[1300,1301],"1301":[1300,1301],"1302":[1302,1303],"1303":[1302,1303],"1304":[1304,1305],"1305":[1304,1305],"1306":[1306,1307],"1307":[1306,1307],"1308":[1308,1309],"1309":[1308,1309],"1310":[1310,1311],"1311":[1310,1311],"1312":[1312,1313],"1313":[1312,1313],"1314":[1314,1315],"1315":[1314,1315],"1316":[1316,1317],"1317":[1316,1317],"1318":[1318,1319],"1319":[1318,1319],"1320":[1320,1321],"1321":[1320,1321],"1322":[1322,1323],"1323":[1322,1323],"1324":[1324,1325],"1325":[1324,1325],"1326":[1326,1327],"1327":[1326,1327],"1329":[1329,1377],"1330":[1330,1378],"1331":[1331,1379],"1332":[1332,1380],"1333":[1333,1381],"1334":[1334,1382],"1335":[1335,1383],"1336":[1336,1384],"1337":[1337,1385],"1338":[1338,1386],"1339":[1339,1387],"1340":[1340,1388],"1341":[1341,1389],"1342":[1342,1390],"1343":[1343,1391],"1344":[1344,1392],"1345":[1345,1393],"1346":[1346,1394],"1347":[1347,1395],"1348":[1348,1396],"1349":[1349,1397],"1350":[1350,1398],"1351":[1351,1399],"1352":[1352,1400],"1353":[1353,1401],"1354":[1354,1402],"1355":[1355,1403],"1356":[1356,1404],"1357":[1357,1405],"1358":[1358,1406],"1359":[1359,1407],"1360":[1360,1408],"1361":[1361,1409],"1362":[1362,1410],"1363":[1363,1411],"1364":[1364,1412],"1365":[1365,1413],"1366":[1366,1414],"1377":[1329,1377],"1378":[1330,1378],"1379":[1331,1379],"1380":[1332,1380],"1381":[1333,1381],"1382":[1334,1382],"1383":[1335,1383],"1384":[1336,1384],"1385":[1337,1385],"1386":[1338,1386],"1387":[1339,1387],"1388":[1340,1388],"1389":[1341,1389],"1390":[1342,1390],"1391":[1343,1391],"1392":[1344,1392],"1393":[1345,1393],"1394":[1346,1394],"1395":[1347,1395],"1396":[1348,1396],"1397":[1349,1397],"1398":[1350,1398],"1399":[1351,1399],"1400":[1352,1400],"1401":[1353,1401],"1402":[1354,1402],"1403":[1355,1403],"1404":[1356,1404],"1405":[1357,1405],"1406":[1358,1406],"1407":[1359,1407],"1408":[1360,1408],"1409":[1361,1409],"1410":[1362,1410],"1411":[1363,1411],"1412":[1364,1412],"1413":[1365,1413],"1414":[1366,1414],"4256":[4256,11520],"4257":[4257,11521],"4258":[4258,11522],"4259":[4259,11523],"4260":[4260,11524],"4261":[4261,11525],"4262":[4262,11526],"4263":[4263,11527],"4264":[4264,11528],"4265":[4265,11529],"4266":[4266,11530],"4267":[4267,11531],"4268":[4268,11532],"4269":[4269,11533],"4270":[4270,11534],"4271":[4271,11535],"4272":[4272,11536],"4273":[4273,11537],"4274":[4274,11538],"4275":[4275,11539],"4276":[4276,11540],"4277":[4277,11541],"4278":[4278,11542],"4279":[4279,11543],"4280":[4280,11544],"4281":[4281,11545],"4282":[4282,11546],"4283":[4283,11547],"4284":[4284,11548],"4285":[4285,11549],"4286":[4286,11550],"4287":[4287,11551],"4288":[4288,11552],"4289":[4289,11553],"4290":[4290,11554],"4291":[4291,11555],"4292":[4292,11556],"4293":[4293,11557],"4295":[4295,11559],"4301":[4301,11565],"4304":[4304,7312],"4305":[4305,7313],"4306":[4306,7314],"4307":[4307,7315],"4308":[4308,7316],"4309":[4309,7317],"4310":[4310,7318],"4311":[4311,7319],"4312":[4312,7320],"4313":[4313,7321],"4314":[4314,7322],"4315":[4315,7323],"4316":[4316,7324],"4317":[4317,7325],"4318":[4318,7326],"4319":[4319,7327],"4320":[4320,7328],"4321":[4321,7329],"4322":[4322,7330],"4323":[4323,7331],"4324":[4324,7332],"4325":[4325,7333],"4326":[4326,7334],"4327":[4327,7335],"4328":[4328,7336],"4329":[4329,7337],"4330":[4330,7338],"4331":[4331,7339],"4332":[4332,7340],"4333":[4333,7341],"4334":[4334,7342],"4335":[4335,7343],"4336":[4336,7344],"4337":[4337,7345],"4338":[4338,7346],"4339":[4339,7347],"4340":[4340,7348],"4341":[4341,7349],"4342":[4342,7350],"4343":[4343,7351],"4344":[4344,7352],"4345":[4345,7353],"4346":[4346,7354],"4349":[4349,7357],"4350":[4350,7358],"4351":[4351,7359],"5024":[5024,43888],"5025":[5025,43889],"5026":[5026,43890],"5027":[5027,43891],"5028":[5028,43892],"5029":[5029,43893],"5030":[5030,43894],"5031":[5031,43895],"5032":[5032,43896],"5033":[5033,43897],"5034":[5034,43898],"5035":[5035,43899],"5036":[5036,43900],"5037":[5037,43901],"5038":[5038,43902],"5039":[5039,43903],"5040":[5040,43904],"5041":[5041,43905],"5042":[5042,43906],"5043":[5043,43907],"5044":[5044,43908],"5045":[5045,43909],"5046":[5046,43910],"5047":[5047,43911],"5048":[5048,43912],"5049":[5049,43913],"5050":[5050,43914],"5051":[5051,43915],"5052":[5052,43916],"5053":[5053,43917],"5054":[5054,43918],"5055":[5055,43919],"5056":[5056,43920],"5057":[5057,43921],"5058":[5058,43922],"5059":[5059,43923],"5060":[5060,43924],"5061":[5061,43925],"5062":[5062,43926],"5063":[5063,43927],"5064":[5064,43928],"5065":[5065,43929],"5066":[5066,43930],"5067":[5067,43931],"5068":[5068,43932],"5069":[5069,43933],"5070":[5070,43934],"5071":[5071,43935],"5072":[5072,43936],"5073":[5073,43937],"5074":[5074,43938],"5075":[5075,43939],"5076":[5076,43940],"5077":[5077,43941],"5078":[5078,43942],"5079":[5079,43943],"5080":[5080,43944],"5081":[5081,43945],"5082":[5082,43946],"5083":[5083,43947],"5084":[5084,43948],"5085":[5085,43949],"5086":[5086,43950],"5087":[5087,43951],"5088":[5088,43952],"5089":[5089,43953],"5090":[5090,43954],"5091":[5091,43955],"5092":[5092,43956],"5093":[5093,43957],"5094":[5094,43958],"5095":[5095,43959],"5096":[5096,43960],"5097":[5097,43961],"5098":[5098,43962],"5099":[5099,43963],"5100":[5100,43964],"5101":[5101,43965],"5102":[5102,43966],"5103":[5103,43967],"5104":[5104,5112],"5105":[5105,5113],"5106":[5106,5114],"5107":[5107,5115],"5108":[5108,5116],"5109":[5109,5117],"5112":[5104,5112],"5113":[5105,5113],"5114":[5106,5114],"5115":[5107,5115],"5116":[5108,5116],"5117":[5109,5117],"7296":[1042,1074,7296],"7297":[1044,1076,7297],"7298":[1054,1086,7298],"7299":[1057,1089,7299],"7300":[1058,1090,7300,7301],"7301":[1058,1090,7300,7301],"7302":[1066,1098,7302],"7303":[1122,1123,7303],"7304":[7304,42570,42571],"7312":[4304,7312],"7313":[4305,7313],"7314":[4306,7314],"7315":[4307,7315],"7316":[4308,7316],"7317":[4309,7317],"7318":[4310,7318],"7319":[4311,7319],"7320":[4312,7320],"7321":[4313,7321],"7322":[4314,7322],"7323":[4315,7323],"7324":[4316,7324],"7325":[4317,7325],"7326":[4318,7326],"7327":[4319,7327],"7328":[4320,7328],"7329":[4321,7329],"7330":[4322,7330],"7331":[4323,7331],"7332":[4324,7332],"7333":[4325,7333],"7334":[4326,7334],"7335":[4327,7335],"7336":[4328,7336],"7337":[4329,7337],"7338":[4330,7338],"7339":[4331,7339],"7340":[4332,7340],"7341":[4333,7341],"7342":[4334,7342],"7343":[4335,7343],"7344":[4336,7344],"7345":[4337,7345],"7346":[4338,7346],"7347":[4339,7347],"7348":[4340,7348],"7349":[4341,7349],"7350":[4342,7350],"7351":[4343,7351],"7352":[4344,7352],"7353":[4345,7353],"7354":[4346,7354],"7357":[4349,7357],"7358":[4350,7358],"7359":[4351,7359],"7545":[7545,42877],"7549":[7549,11363],"7566":[7566,42950],"7680":[7680,7681],"7681":[7680,7681],"7682":[7682,7683],"7683":[7682,7683],"7684":[7684,7685],"7685":[7684,7685],"7686":[7686,7687],"7687":[7686,7687],"7688":[7688,7689],"7689":[7688,7689],"7690":[7690,7691],"7691":[7690,7691],"7692":[7692,7693],"7693":[7692,7693],"7694":[7694,7695],"7695":[7694,7695],"7696":[7696,7697],"7697":[7696,7697],"7698":[7698,7699],"7699":[7698,7699],"7700":[7700,7701],"7701":[7700,7701],"7702":[7702,7703],"7703":[7702,7703],"7704":[7704,7705],"7705":[7704,7705],"7706":[7706,7707],"7707":[7706,7707],"7708":[7708,7709],"7709":[7708,7709],"7710":[7710,7711],"7711":[7710,7711],"7712":[7712,7713],"7713":[7712,7713],"7714":[7714,7715],"7715":[7714,7715],"7716":[7716,7717],"7717":[7716,7717],"7718":[7718,7719],"7719":[7718,7719],"7720":[7720,7721],"7721":[7720,7721],"7722":[7722,7723],"7723":[7722,7723],"7724":[7724,7725],"7725":[7724,7725],"7726":[7726,7727],"7727":[7726,7727],"7728":[7728,7729],"7729":[7728,7729],"7730":[7730,7731],"7731":[7730,7731],"7732":[7732,7733],"7733":[7732,7733],"7734":[7734,7735],"7735":[7734,7735],"7736":[7736,7737],"7737":[7736,7737],"7738":[7738,7739],"7739":[7738,7739],"7740":[7740,7741],"7741":[7740,7741],"7742":[7742,7743],"7743":[7742,7743],"7744":[7744,7745],"7745":[7744,7745],"7746":[7746,7747],"7747":[7746,7747],"7748":[7748,7749],"7749":[7748,7749],"7750":[7750,7751],"7751":[7750,7751],"7752":[7752,7753],"7753":[7752,7753],"7754":[7754,7755],"7755":[7754,7755],"7756":[7756,7757],"7757":[7756,7757],"7758":[7758,7759],"7759":[7758,7759],"7760":[7760,7761],"7761":[7760,7761],"7762":[7762,7763],"7763":[7762,7763],"7764":[7764,7765],"7765":[7764,7765],"7766":[7766,7767],"7767":[7766,7767],"7768":[7768,7769],"7769":[7768,7769],"7770":[7770,7771],"7771":[7770,7771],"7772":[7772,7773],"7773":[7772,7773],"7774":[7774,7775],"7775":[7774,7775],"7776":[7776,7777,7835],"7777":[7776,7777,7835],"7778":[7778,7779],"7779":[7778,7779],"7780":[7780,7781],"7781":[7780,7781],"7782":[7782,7783],"7783":[7782,7783],"7784":[7784,7785],"7785":[7784,7785],"7786":[7786,7787],"7787":[7786,7787],"7788":[7788,7789],"7789":[7788,7789],"7790":[7790,7791],"7791":[7790,7791],"7792":[7792,7793],"7793":[7792,7793],"7794":[7794,7795],"7795":[7794,7795],"7796":[7796,7797],"7797":[7796,7797],"7798":[7798,7799],"7799":[7798,7799],"7800":[7800,7801],"7801":[7800,7801],"7802":[7802,7803],"7803":[7802,7803],"7804":[7804,7805],"7805":[7804,7805],"7806":[7806,7807],"7807":[7806,7807],"7808":[7808,7809],"7809":[7808,7809],"7810":[7810,7811],"7811":[7810,7811],"7812":[7812,7813],"7813":[7812,7813],"7814":[7814,7815],"7815":[7814,7815],"7816":[7816,7817],"7817":[7816,7817],"7818":[7818,7819],"7819":[7818,7819],"7820":[7820,7821],"7821":[7820,7821],"7822":[7822,7823],"7823":[7822,7823],"7824":[7824,7825],"7825":[7824,7825],"7826":[7826,7827],"7827":[7826,7827],"7828":[7828,7829],"7829":[7828,7829],"7835":[7776,7777,7835],"7838":[223,7838],"7840":[7840,7841],"7841":[7840,7841],"7842":[7842,7843],"7843":[7842,7843],"7844":[7844,7845],"7845":[7844,7845],"7846":[7846,7847],"7847":[7846,7847],"7848":[7848,7849],"7849":[7848,7849],"7850":[7850,7851],"7851":[7850,7851],"7852":[7852,7853],"7853":[7852,7853],"7854":[7854,7855],"7855":[7854,7855],"7856":[7856,7857],"7857":[7856,7857],"7858":[7858,7859],"7859":[7858,7859],"7860":[7860,7861],"7861":[7860,7861],"7862":[7862,7863],"7863":[7862,7863],"7864":[7864,7865],"7865":[7864,7865],"7866":[7866,7867],"7867":[7866,7867],"7868":[7868,7869],"7869":[7868,7869],"7870":[7870,7871],"7871":[7870,7871],"7872":[7872,7873],"7873":[7872,7873],"7874":[7874,7875],"7875":[7874,7875],"7876":[7876,7877],"7877":[7876,7877],"7878":[7878,7879],"7879":[7878,7879],"7880":[7880,7881],"7881":[7880,7881],"7882":[7882,7883],"7883":[7882,7883],"7884":[7884,7885],"7885":[7884,7885],"7886":[7886,7887],"7887":[7886,7887],"7888":[7888,7889],"7889":[7888,7889],"7890":[7890,7891],"7891":[7890,7891],"7892":[7892,7893],"7893":[7892,7893],"7894":[7894,7895],"7895":[7894,7895],"7896":[7896,7897],"7897":[7896,7897],"7898":[7898,7899],"7899":[7898,7899],"7900":[7900,7901],"7901":[7900,7901],"7902":[7902,7903],"7903":[7902,7903],"7904":[7904,7905],"7905":[7904,7905],"7906":[7906,7907],"7907":[7906,7907],"7908":[7908,7909],"7909":[7908,7909],"7910":[7910,7911],"7911":[7910,7911],"7912":[7912,7913],"7913":[7912,7913],"7914":[7914,7915],"7915":[7914,7915],"7916":[7916,7917],"7917":[7916,7917],"7918":[7918,7919],"7919":[7918,7919],"7920":[7920,7921],"7921":[7920,7921],"7922":[7922,7923],"7923":[7922,7923],"7924":[7924,7925],"7925":[7924,7925],"7926":[7926,7927],"7927":[7926,7927],"7928":[7928,7929],"7929":[7928,7929],"7930":[7930,7931],"7931":[7930,7931],"7932":[7932,7933],"7933":[7932,7933],"7934":[7934,7935],"7935":[7934,7935],"7936":[7936,7944],"7937":[7937,7945],"7938":[7938,7946],"7939":[7939,7947],"7940":[7940,7948],"7941":[7941,7949],"7942":[7942,7950],"7943":[7943,7951],"7944":[7936,7944],"7945":[7937,7945],"7946":[7938,7946],"7947":[7939,7947],"7948":[7940,7948],"7949":[7941,7949],"7950":[7942,7950],"7951":[7943,7951],"7952":[7952,7960],"7953":[7953,7961],"7954":[7954,7962],"7955":[7955,7963],"7956":[7956,7964],"7957":[7957,7965],"7960":[7952,7960],"7961":[7953,7961],"7962":[7954,7962],"7963":[7955,7963],"7964":[7956,7964],"7965":[7957,7965],"7968":[7968,7976],"7969":[7969,7977],"7970":[7970,7978],"7971":[7971,7979],"7972":[7972,7980],"7973":[7973,7981],"7974":[7974,7982],"7975":[7975,7983],"7976":[7968,7976],"7977":[7969,7977],"7978":[7970,7978],"7979":[7971,7979],"7980":[7972,7980],"7981":[7973,7981],"7982":[7974,7982],"7983":[7975,7983],"7984":[7984,7992],"7985":[7985,7993],"7986":[7986,7994],"7987":[7987,7995],"7988":[7988,7996],"7989":[7989,7997],"7990":[7990,7998],"7991":[7991,7999],"7992":[7984,7992],"7993":[7985,7993],"7994":[7986,7994],"7995":[7987,7995],"7996":[7988,7996],"7997":[7989,7997],"7998":[7990,7998],"7999":[7991,7999],"8000":[8000,8008],"8001":[8001,8009],"8002":[8002,8010],"8003":[8003,8011],"8004":[8004,8012],"8005":[8005,8013],"8008":[8000,8008],"8009":[8001,8009],"8010":[8002,8010],"8011":[8003,8011],"8012":[8004,8012],"8013":[8005,8013],"8017":[8017,8025],"8019":[8019,8027],"8021":[8021,8029],"8023":[8023,8031],"8025":[8017,8025],"8027":[8019,8027],"8029":[8021,8029],"8031":[8023,8031],"8032":[8032,8040],"8033":[8033,8041],"8034":[8034,8042],"8035":[8035,8043],"8036":[8036,8044],"8037":[8037,8045],"8038":[8038,8046],"8039":[8039,8047],"8040":[8032,8040],"8041":[8033,8041],"8042":[8034,8042],"8043":[8035,8043],"8044":[8036,8044],"8045":[8037,8045],"8046":[8038,8046],"8047":[8039,8047],"8048":[8048,8122],"8049":[8049,8123],"8050":[8050,8136],"8051":[8051,8137],"8052":[8052,8138],"8053":[8053,8139],"8054":[8054,8154],"8055":[8055,8155],"8056":[8056,8184],"8057":[8057,8185],"8058":[8058,8170],"8059":[8059,8171],"8060":[8060,8186],"8061":[8061,8187],"8064":[8064,8072],"8065":[8065,8073],"8066":[8066,8074],"8067":[8067,8075],"8068":[8068,8076],"8069":[8069,8077],"8070":[8070,8078],"8071":[8071,8079],"8072":[8064,8072],"8073":[8065,8073],"8074":[8066,8074],"8075":[8067,8075],"8076":[8068,8076],"8077":[8069,8077],"8078":[8070,8078],"8079":[8071,8079],"8080":[8080,8088],"8081":[8081,8089],"8082":[8082,8090],"8083":[8083,8091],"8084":[8084,8092],"8085":[8085,8093],"8086":[8086,8094],"8087":[8087,8095],"8088":[8080,8088],"8089":[8081,8089],"8090":[8082,8090],"8091":[8083,8091],"8092":[8084,8092],"8093":[8085,8093],"8094":[8086,8094],"8095":[8087,8095],"8096":[8096,8104],"8097":[8097,8105],"8098":[8098,8106],"8099":[8099,8107],"8100":[8100,8108],"8101":[8101,8109],"8102":[8102,8110],"8103":[8103,8111],"8104":[8096,8104],"8105":[8097,8105],"8106":[8098,8106],"8107":[8099,8107],"8108":[8100,8108],"8109":[8101,8109],"8110":[8102,8110],"8111":[8103,8111],"8112":[8112,8120],"8113":[8113,8121],"8115":[8115,8124],"8120":[8112,8120],"8121":[8113,8121],"8122":[8048,8122],"8123":[8049,8123],"8124":[8115,8124],"8126":[837,921,953,8126],"8131":[8131,8140],"8136":[8050,8136],"8137":[8051,8137],"8138":[8052,8138],"8139":[8053,8139],"8140":[8131,8140],"8144":[8144,8152],"8145":[8145,8153],"8152":[8144,8152],"8153":[8145,8153],"8154":[8054,8154],"8155":[8055,8155],"8160":[8160,8168],"8161":[8161,8169],"8165":[8165,8172],"8168":[8160,8168],"8169":[8161,8169],"8170":[8058,8170],"8171":[8059,8171],"8172":[8165,8172],"8179":[8179,8188],"8184":[8056,8184],"8185":[8057,8185],"8186":[8060,8186],"8187":[8061,8187],"8188":[8179,8188],"8486":[937,969,8486],"8490":[75,107,8490],"8491":[197,229,8491],"8498":[8498,8526],"8526":[8498,8526],"8544":[8544,8560],"8545":[8545,8561],"8546":[8546,8562],"8547":[8547,8563],"8548":[8548,8564],"8549":[8549,8565],"8550":[8550,8566],"8551":[8551,8567],"8552":[8552,8568],"8553":[8553,8569],"8554":[8554,8570],"8555":[8555,8571],"8556":[8556,8572],"8557":[8557,8573],"8558":[8558,8574],"8559":[8559,8575],"8560":[8544,8560],"8561":[8545,8561],"8562":[8546,8562],"8563":[8547,8563],"8564":[8548,8564],"8565":[8549,8565],"8566":[8550,8566],"8567":[8551,8567],"8568":[8552,8568],"8569":[8553,8569],"8570":[8554,8570],"8571":[8555,8571],"8572":[8556,8572],"8573":[8557,8573],"8574":[8558,8574],"8575":[8559,8575],"8579":[8579,8580],"8580":[8579,8580],"9398":[9398,9424],"9399":[9399,9425],"9400":[9400,9426],"9401":[9401,9427],"9402":[9402,9428],"9403":[9403,9429],"9404":[9404,9430],"9405":[9405,9431],"9406":[9406,9432],"9407":[9407,9433],"9408":[9408,9434],"9409":[9409,9435],"9410":[9410,9436],"9411":[9411,9437],"9412":[9412,9438],"9413":[9413,9439],"9414":[9414,9440],"9415":[9415,9441],"9416":[9416,9442],"9417":[9417,9443],"9418":[9418,9444],"9419":[9419,9445],"9420":[9420,9446],"9421":[9421,9447],"9422":[9422,9448],"9423":[9423,9449],"9424":[9398,9424],"9425":[9399,9425],"9426":[9400,9426],"9427":[9401,9427],"9428":[9402,9428],"9429":[9403,9429],"9430":[9404,9430],"9431":[9405,9431],"9432":[9406,9432],"9433":[9407,9433],"9434":[9408,9434],"9435":[9409,9435],"9436":[9410,9436],"9437":[9411,9437],"9438":[9412,9438],"9439":[9413,9439],"9440":[9414,9440],"9441":[9415,9441],"9442":[9416,9442],"9443":[9417,9443],"9444":[9418,9444],"9445":[9419,9445],"9446":[9420,9446],"9447":[9421,9447],"9448":[9422,9448],"9449":[9423,9449],"11264":[11264,11312],"11265":[11265,11313],"11266":[11266,11314],"11267":[11267,11315],"11268":[11268,11316],"11269":[11269,11317],"11270":[11270,11318],"11271":[11271,11319],"11272":[11272,11320],"11273":[11273,11321],"11274":[11274,11322],"11275":[11275,11323],"11276":[11276,11324],"11277":[11277,11325],"11278":[11278,11326],"11279":[11279,11327],"11280":[11280,11328],"11281":[11281,11329],"11282":[11282,11330],"11283":[11283,11331],"11284":[11284,11332],"11285":[11285,11333],"11286":[11286,11334],"11287":[11287,11335],"11288":[11288,11336],"11289":[11289,11337],"11290":[11290,11338],"11291":[11291,11339],"11292":[11292,11340],"11293":[11293,11341],"11294":[11294,11342],"11295":[11295,11343],"11296":[11296,11344],"11297":[11297,11345],"11298":[11298,11346],"11299":[11299,11347],"11300":[11300,11348],"11301":[11301,11349],"11302":[11302,11350],"11303":[11303,11351],"11304":[11304,11352],"11305":[11305,11353],"11306":[11306,11354],"11307":[11307,11355],"11308":[11308,11356],"11309":[11309,11357],"11310":[11310,11358],"11312":[11264,11312],"11313":[11265,11313],"11314":[11266,11314],"11315":[11267,11315],"11316":[11268,11316],"11317":[11269,11317],"11318":[11270,11318],"11319":[11271,11319],"11320":[11272,11320],"11321":[11273,11321],"11322":[11274,11322],"11323":[11275,11323],"11324":[11276,11324],"11325":[11277,11325],"11326":[11278,11326],"11327":[11279,11327],"11328":[11280,11328],"11329":[11281,11329],"11330":[11282,11330],"11331":[11283,11331],"11332":[11284,11332],"11333":[11285,11333],"11334":[11286,11334],"11335":[11287,11335],"11336":[11288,11336],"11337":[11289,11337],"11338":[11290,11338],"11339":[11291,11339],"11340":[11292,11340],"11341":[11293,11341],"11342":[11294,11342],"11343":[11295,11343],"11344":[11296,11344],"11345":[11297,11345],"11346":[11298,11346],"11347":[11299,11347],"11348":[11300,11348],"11349":[11301,11349],"11350":[11302,11350],"11351":[11303,11351],"11352":[11304,11352],"11353":[11305,11353],"11354":[11306,11354],"11355":[11307,11355],"11356":[11308,11356],"11357":[11309,11357],"11358":[11310,11358],"11360":[11360,11361],"11361":[11360,11361],"11362":[619,11362],"11363":[7549,11363],"11364":[637,11364],"11365":[570,11365],"11366":[574,11366],"11367":[11367,11368],"11368":[11367,11368],"11369":[11369,11370],"11370":[11369,11370],"11371":[11371,11372],"11372":[11371,11372],"11373":[593,11373],"11374":[625,11374],"11375":[592,11375],"11376":[594,11376],"11378":[11378,11379],"11379":[11378,11379],"11381":[11381,11382],"11382":[11381,11382],"11390":[575,11390],"11391":[576,11391],"11392":[11392,11393],"11393":[11392,11393],"11394":[11394,11395],"11395":[11394,11395],"11396":[11396,11397],"11397":[11396,11397],"11398":[11398,11399],"11399":[11398,11399],"11400":[11400,11401],"11401":[11400,11401],"11402":[11402,11403],"11403":[11402,11403],"11404":[11404,11405],"11405":[11404,11405],"11406":[11406,11407],"11407":[11406,11407],"11408":[11408,11409],"11409":[11408,11409],"11410":[11410,11411],"11411":[11410,11411],"11412":[11412,11413],"11413":[11412,11413],"11414":[11414,11415],"11415":[11414,11415],"11416":[11416,11417],"11417":[11416,11417],"11418":[11418,11419],"11419":[11418,11419],"11420":[11420,11421],"11421":[11420,11421],"11422":[11422,11423],"11423":[11422,11423],"11424":[11424,11425],"11425":[11424,11425],"11426":[11426,11427],"11427":[11426,11427],"11428":[11428,11429],"11429":[11428,11429],"11430":[11430,11431],"11431":[11430,11431],"11432":[11432,11433],"11433":[11432,11433],"11434":[11434,11435],"11435":[11434,11435],"11436":[11436,11437],"11437":[11436,11437],"11438":[11438,11439],"11439":[11438,11439],"11440":[11440,11441],"11441":[11440,11441],"11442":[11442,11443],"11443":[11442,11443],"11444":[11444,11445],"11445":[11444,11445],"11446":[11446,11447],"11447":[11446,11447],"11448":[11448,11449],"11449":[11448,11449],"11450":[11450,11451],"11451":[11450,11451],"11452":[11452,11453],"11453":[11452,11453],"11454":[11454,11455],"11455":[11454,11455],"11456":[11456,11457],"11457":[11456,11457],"11458":[11458,11459],"11459":[11458,11459],"11460":[11460,11461],"11461":[11460,11461],"11462":[11462,11463],"11463":[11462,11463],"11464":[11464,11465],"11465":[11464,11465],"11466":[11466,11467],"11467":[11466,11467],"11468":[11468,11469],"11469":[11468,11469],"11470":[11470,11471],"11471":[11470,11471],"11472":[11472,11473],"11473":[11472,11473],"11474":[11474,11475],"11475":[11474,11475],"11476":[11476,11477],"11477":[11476,11477],"11478":[11478,11479],"11479":[11478,11479],"11480":[11480,11481],"11481":[11480,11481],"11482":[11482,11483],"11483":[11482,11483],"11484":[11484,11485],"11485":[11484,11485],"11486":[11486,11487],"11487":[11486,11487],"11488":[11488,11489],"11489":[11488,11489],"11490":[11490,11491],"11491":[11490,11491],"11499":[11499,11500],"11500":[11499,11500],"11501":[11501,11502],"11502":[11501,11502],"11506":[11506,11507],"11507":[11506,11507],"11520":[4256,11520],"11521":[4257,11521],"11522":[4258,11522],"11523":[4259,11523],"11524":[4260,11524],"11525":[4261,11525],"11526":[4262,11526],"11527":[4263,11527],"11528":[4264,11528],"11529":[4265,11529],"11530":[4266,11530],"11531":[4267,11531],"11532":[4268,11532],"11533":[4269,11533],"11534":[4270,11534],"11535":[4271,11535],"11536":[4272,11536],"11537":[4273,11537],"11538":[4274,11538],"11539":[4275,11539],"11540":[4276,11540],"11541":[4277,11541],"11542":[4278,11542],"11543":[4279,11543],"11544":[4280,11544],"11545":[4281,11545],"11546":[4282,11546],"11547":[4283,11547],"11548":[4284,11548],"11549":[4285,11549],"11550":[4286,11550],"11551":[4287,11551],"11552":[4288,11552],"11553":[4289,11553],"11554":[4290,11554],"11555":[4291,11555],"11556":[4292,11556],"11557":[4293,11557],"11559":[4295,11559],"11565":[4301,11565],"42560":[42560,42561],"42561":[42560,42561],"42562":[42562,42563],"42563":[42562,42563],"42564":[42564,42565],"42565":[42564,42565],"42566":[42566,42567],"42567":[42566,42567],"42568":[42568,42569],"42569":[42568,42569],"42570":[7304,42570,42571],"42571":[7304,42570,42571],"42572":[42572,42573],"42573":[42572,42573],"42574":[42574,42575],"42575":[42574,42575],"42576":[42576,42577],"42577":[42576,42577],"42578":[42578,42579],"42579":[42578,42579],"42580":[42580,42581],"42581":[42580,42581],"42582":[42582,42583],"42583":[42582,42583],"42584":[42584,42585],"42585":[42584,42585],"42586":[42586,42587],"42587":[42586,42587],"42588":[42588,42589],"42589":[42588,42589],"42590":[42590,42591],"42591":[42590,42591],"42592":[42592,42593],"42593":[42592,42593],"42594":[42594,42595],"42595":[42594,42595],"42596":[42596,42597],"42597":[42596,42597],"42598":[42598,42599],"42599":[42598,42599],"42600":[42600,42601],"42601":[42600,42601],"42602":[42602,42603],"42603":[42602,42603],"42604":[42604,42605],"42605":[42604,42605],"42624":[42624,42625],"42625":[42624,42625],"42626":[42626,42627],"42627":[42626,42627],"42628":[42628,42629],"42629":[42628,42629],"42630":[42630,42631],"42631":[42630,42631],"42632":[42632,42633],"42633":[42632,42633],"42634":[42634,42635],"42635":[42634,42635],"42636":[42636,42637],"42637":[42636,42637],"42638":[42638,42639],"42639":[42638,42639],"42640":[42640,42641],"42641":[42640,42641],"42642":[42642,42643],"42643":[42642,42643],"42644":[42644,42645],"42645":[42644,42645],"42646":[42646,42647],"42647":[42646,42647],"42648":[42648,42649],"42649":[42648,42649],"42650":[42650,42651],"42651":[42650,42651],"42786":[42786,42787],"42787":[42786,42787],"42788":[42788,42789],"42789":[42788,42789],"42790":[42790,42791],"42791":[42790,42791],"42792":[42792,42793],"42793":[42792,42793],"42794":[42794,42795],"42795":[42794,42795],"42796":[42796,42797],"42797":[42796,42797],"42798":[42798,42799],"42799":[42798,42799],"42802":[42802,42803],"42803":[42802,42803],"42804":[42804,42805],"42805":[42804,42805],"42806":[42806,42807],"42807":[42806,42807],"42808":[42808,42809],"42809":[42808,42809],"42810":[42810,42811],"42811":[42810,42811],"42812":[42812,42813],"42813":[42812,42813],"42814":[42814,42815],"42815":[42814,42815],"42816":[42816,42817],"42817":[42816,42817],"42818":[42818,42819],"42819":[42818,42819],"42820":[42820,42821],"42821":[42820,42821],"42822":[42822,42823],"42823":[42822,42823],"42824":[42824,42825],"42825":[42824,42825],"42826":[42826,42827],"42827":[42826,42827],"42828":[42828,42829],"42829":[42828,42829],"42830":[42830,42831],"42831":[42830,42831],"42832":[42832,42833],"42833":[42832,42833],"42834":[42834,42835],"42835":[42834,42835],"42836":[42836,42837],"42837":[42836,42837],"42838":[42838,42839],"42839":[42838,42839],"42840":[42840,42841],"42841":[42840,42841],"42842":[42842,42843],"42843":[42842,42843],"42844":[42844,42845],"42845":[42844,42845],"42846":[42846,42847],"42847":[42846,42847],"42848":[42848,42849],"42849":[42848,42849],"42850":[42850,42851],"42851":[42850,42851],"42852":[42852,42853],"42853":[42852,42853],"42854":[42854,42855],"42855":[42854,42855],"42856":[42856,42857],"42857":[42856,42857],"42858":[42858,42859],"42859":[42858,42859],"42860":[42860,42861],"42861":[42860,42861],"42862":[42862,42863],"42863":[42862,42863],"42873":[42873,42874],"42874":[42873,42874],"42875":[42875,42876],"42876":[42875,42876],"42877":[7545,42877],"42878":[42878,42879],"42879":[42878,42879],"42880":[42880,42881],"42881":[42880,42881],"42882":[42882,42883],"42883":[42882,42883],"42884":[42884,42885],"42885":[42884,42885],"42886":[42886,42887],"42887":[42886,42887],"42891":[42891,42892],"42892":[42891,42892],"42893":[613,42893],"42896":[42896,42897],"42897":[42896,42897],"42898":[42898,42899],"42899":[42898,42899],"42900":[42900,42948],"42902":[42902,42903],"42903":[42902,42903],"42904":[42904,42905],"42905":[42904,42905],"42906":[42906,42907],"42907":[42906,42907],"42908":[42908,42909],"42909":[42908,42909],"42910":[42910,42911],"42911":[42910,42911],"42912":[42912,42913],"42913":[42912,42913],"42914":[42914,42915],"42915":[42914,42915],"42916":[42916,42917],"42917":[42916,42917],"42918":[42918,42919],"42919":[42918,42919],"42920":[42920,42921],"42921":[42920,42921],"42922":[614,42922],"42923":[604,42923],"42924":[609,42924],"42925":[620,42925],"42926":[618,42926],"42928":[670,42928],"42929":[647,42929],"42930":[669,42930],"42931":[42931,43859],"42932":[42932,42933],"42933":[42932,42933],"42934":[42934,42935],"42935":[42934,42935],"42936":[42936,42937],"42937":[42936,42937],"42938":[42938,42939],"42939":[42938,42939],"42940":[42940,42941],"42941":[42940,42941],"42942":[42942,42943],"42943":[42942,42943],"42946":[42946,42947],"42947":[42946,42947],"42948":[42900,42948],"42949":[642,42949],"42950":[7566,42950],"42951":[42951,42952],"42952":[42951,42952],"42953":[42953,42954],"42954":[42953,42954],"42997":[42997,42998],"42998":[42997,42998],"43859":[42931,43859],"43888":[5024,43888],"43889":[5025,43889],"43890":[5026,43890],"43891":[5027,43891],"43892":[5028,43892],"43893":[5029,43893],"43894":[5030,43894],"43895":[5031,43895],"43896":[5032,43896],"43897":[5033,43897],"43898":[5034,43898],"43899":[5035,43899],"43900":[5036,43900],"43901":[5037,43901],"43902":[5038,43902],"43903":[5039,43903],"43904":[5040,43904],"43905":[5041,43905],"43906":[5042,43906],"43907":[5043,43907],"43908":[5044,43908],"43909":[5045,43909],"43910":[5046,43910],"43911":[5047,43911],"43912":[5048,43912],"43913":[5049,43913],"43914":[5050,43914],"43915":[5051,43915],"43916":[5052,43916],"43917":[5053,43917],"43918":[5054,43918],"43919":[5055,43919],"43920":[5056,43920],"43921":[5057,43921],"43922":[5058,43922],"43923":[5059,43923],"43924":[5060,43924],"43925":[5061,43925],"43926":[5062,43926],"43927":[5063,43927],"43928":[5064,43928],"43929":[5065,43929],"43930":[5066,43930],"43931":[5067,43931],"43932":[5068,43932],"43933":[5069,43933],"43934":[5070,43934],"43935":[5071,43935],"43936":[5072,43936],"43937":[5073,43937],"43938":[5074,43938],"43939":[5075,43939],"43940":[5076,43940],"43941":[5077,43941],"43942":[5078,43942],"43943":[5079,43943],"43944":[5080,43944],"43945":[5081,43945],"43946":[5082,43946],"43947":[5083,43947],"43948":[5084,43948],"43949":[5085,43949],"43950":[5086,43950],"43951":[5087,43951],"43952":[5088,43952],"43953":[5089,43953],"43954":[5090,43954],"43955":[5091,43955],"43956":[5092,43956],"43957":[5093,43957],"43958":[5094,43958],"43959":[5095,43959],"43960":[5096,43960],"43961":[5097,43961],"43962":[5098,43962],"43963":[5099,43963],"43964":[5100,43964],"43965":[5101,43965],"43966":[5102,43966],"43967":[5103,43967],"65313":[65313,65345],"65314":[65314,65346],"65315":[65315,65347],"65316":[65316,65348],"65317":[65317,65349],"65318":[65318,65350],"65319":[65319,65351],"65320":[65320,65352],"65321":[65321,65353],"65322":[65322,65354],"65323":[65323,65355],"65324":[65324,65356],"65325":[65325,65357],"65326":[65326,65358],"65327":[65327,65359],"65328":[65328,65360],"65329":[65329,65361],"65330":[65330,65362],"65331":[65331,65363],"65332":[65332,65364],"65333":[65333,65365],"65334":[65334,65366],"65335":[65335,65367],"65336":[65336,65368],"65337":[65337,65369],"65338":[65338,65370],"65345":[65313,65345],"65346":[65314,65346],"65347":[65315,65347],"65348":[65316,65348],"65349":[65317,65349],"65350":[65318,65350],"65351":[65319,65351],"65352":[65320,65352],"65353":[65321,65353],"65354":[65322,65354],"65355":[65323,65355],"65356":[65324,65356],"65357":[65325,65357],"65358":[65326,65358],"65359":[65327,65359],"65360":[65328,65360],"65361":[65329,65361],"65362":[65330,65362],"65363":[65331,65363],"65364":[65332,65364],"65365":[65333,65365],"65366":[65334,65366],"65367":[65335,65367],"65368":[65336,65368],"65369":[65337,65369],"65370":[65338,65370],"66560":[66560,66600],"66561":[66561,66601],"66562":[66562,66602],"66563":[66563,66603],"66564":[66564,66604],"66565":[66565,66605],"66566":[66566,66606],"66567":[66567,66607],"66568":[66568,66608],"66569":[66569,66609],"66570":[66570,66610],"66571":[66571,66611],"66572":[66572,66612],"66573":[66573,66613],"66574":[66574,66614],"66575":[66575,66615],"66576":[66576,66616],"66577":[66577,66617],"66578":[66578,66618],"66579":[66579,66619],"66580":[66580,66620],"66581":[66581,66621],"66582":[66582,66622],"66583":[66583,66623],"66584":[66584,66624],"66585":[66585,66625],"66586":[66586,66626],"66587":[66587,66627],"66588":[66588,66628],"66589":[66589,66629],"66590":[66590,66630],"66591":[66591,66631],"66592":[66592,66632],"66593":[66593,66633],"66594":[66594,66634],"66595":[66595,66635],"66596":[66596,66636],"66597":[66597,66637],"66598":[66598,66638],"66599":[66599,66639],"66600":[66560,66600],"66601":[66561,66601],"66602":[66562,66602],"66603":[66563,66603],"66604":[66564,66604],"66605":[66565,66605],"66606":[66566,66606],"66607":[66567,66607],"66608":[66568,66608],"66609":[66569,66609],"66610":[66570,66610],"66611":[66571,66611],"66612":[66572,66612],"66613":[66573,66613],"66614":[66574,66614],"66615":[66575,66615],"66616":[66576,66616],"66617":[66577,66617],"66618":[66578,66618],"66619":[66579,66619],"66620":[66580,66620],"66621":[66581,66621],"66622":[66582,66622],"66623":[66583,66623],"66624":[66584,66624],"66625":[66585,66625],"66626":[66586,66626],"66627":[66587,66627],"66628":[66588,66628],"66629":[66589,66629],"66630":[66590,66630],"66631":[66591,66631],"66632":[66592,66632],"66633":[66593,66633],"66634":[66594,66634],"66635":[66595,66635],"66636":[66596,66636],"66637":[66597,66637],"66638":[66598,66638],"66639":[66599,66639],"66736":[66736,66776],"66737":[66737,66777],"66738":[66738,66778],"66739":[66739,66779],"66740":[66740,66780],"66741":[66741,66781],"66742":[66742,66782],"66743":[66743,66783],"66744":[66744,66784],"66745":[66745,66785],"66746":[66746,66786],"66747":[66747,66787],"66748":[66748,66788],"66749":[66749,66789],"66750":[66750,66790],"66751":[66751,66791],"66752":[66752,66792],"66753":[66753,66793],"66754":[66754,66794],"66755":[66755,66795],"66756":[66756,66796],"66757":[66757,66797],"66758":[66758,66798],"66759":[66759,66799],"66760":[66760,66800],"66761":[66761,66801],"66762":[66762,66802],"66763":[66763,66803],"66764":[66764,66804],"66765":[66765,66805],"66766":[66766,66806],"66767":[66767,66807],"66768":[66768,66808],"66769":[66769,66809],"66770":[66770,66810],"66771":[66771,66811],"66776":[66736,66776],"66777":[66737,66777],"66778":[66738,66778],"66779":[66739,66779],"66780":[66740,66780],"66781":[66741,66781],"66782":[66742,66782],"66783":[66743,66783],"66784":[66744,66784],"66785":[66745,66785],"66786":[66746,66786],"66787":[66747,66787],"66788":[66748,66788],"66789":[66749,66789],"66790":[66750,66790],"66791":[66751,66791],"66792":[66752,66792],"66793":[66753,66793],"66794":[66754,66794],"66795":[66755,66795],"66796":[66756,66796],"66797":[66757,66797],"66798":[66758,66798],"66799":[66759,66799],"66800":[66760,66800],"66801":[66761,66801],"66802":[66762,66802],"66803":[66763,66803],"66804":[66764,66804],"66805":[66765,66805],"66806":[66766,66806],"66807":[66767,66807],"66808":[66768,66808],"66809":[66769,66809],"66810":[66770,66810],"66811":[66771,66811],"68736":[68736,68800],"68737":[68737,68801],"68738":[68738,68802],"68739":[68739,68803],"68740":[68740,68804],"68741":[68741,68805],"68742":[68742,68806],"68743":[68743,68807],"68744":[68744,68808],"68745":[68745,68809],"68746":[68746,68810],"68747":[68747,68811],"68748":[68748,68812],"68749":[68749,68813],"68750":[68750,68814],"68751":[68751,68815],"68752":[68752,68816],"68753":[68753,68817],"68754":[68754,68818],"68755":[68755,68819],"68756":[68756,68820],"68757":[68757,68821],"68758":[68758,68822],"68759":[68759,68823],"68760":[68760,68824],"68761":[68761,68825],"68762":[68762,68826],"68763":[68763,68827],"68764":[68764,68828],"68765":[68765,68829],"68766":[68766,68830],"68767":[68767,68831],"68768":[68768,68832],"68769":[68769,68833],"68770":[68770,68834],"68771":[68771,68835],"68772":[68772,68836],"68773":[68773,68837],"68774":[68774,68838],"68775":[68775,68839],"68776":[68776,68840],"68777":[68777,68841],"68778":[68778,68842],"68779":[68779,68843],"68780":[68780,68844],"68781":[68781,68845],"68782":[68782,68846],"68783":[68783,68847],"68784":[68784,68848],"68785":[68785,68849],"68786":[68786,68850],"68800":[68736,68800],"68801":[68737,68801],"68802":[68738,68802],"68803":[68739,68803],"68804":[68740,68804],"68805":[68741,68805],"68806":[68742,68806],"68807":[68743,68807],"68808":[68744,68808],"68809":[68745,68809],"68810":[68746,68810],"68811":[68747,68811],"68812":[68748,68812],"68813":[68749,68813],"68814":[68750,68814],"68815":[68751,68815],"68816":[68752,68816],"68817":[68753,68817],"68818":[68754,68818],"68819":[68755,68819],"68820":[68756,68820],"68821":[68757,68821],"68822":[68758,68822],"68823":[68759,68823],"68824":[68760,68824],"68825":[68761,68825],"68826":[68762,68826],"68827":[68763,68827],"68828":[68764,68828],"68829":[68765,68829],"68830":[68766,68830],"68831":[68767,68831],"68832":[68768,68832],"68833":[68769,68833],"68834":[68770,68834],"68835":[68771,68835],"68836":[68772,68836],"68837":[68773,68837],"68838":[68774,68838],"68839":[68775,68839],"68840":[68776,68840],"68841":[68777,68841],"68842":[68778,68842],"68843":[68779,68843],"68844":[68780,68844],"68845":[68781,68845],"68846":[68782,68846],"68847":[68783,68847],"68848":[68784,68848],"68849":[68785,68849],"68850":[68786,68850],"71840":[71840,71872],"71841":[71841,71873],"71842":[71842,71874],"71843":[71843,71875],"71844":[71844,71876],"71845":[71845,71877],"71846":[71846,71878],"71847":[71847,71879],"71848":[71848,71880],"71849":[71849,71881],"71850":[71850,71882],"71851":[71851,71883],"71852":[71852,71884],"71853":[71853,71885],"71854":[71854,71886],"71855":[71855,71887],"71856":[71856,71888],"71857":[71857,71889],"71858":[71858,71890],"71859":[71859,71891],"71860":[71860,71892],"71861":[71861,71893],"71862":[71862,71894],"71863":[71863,71895],"71864":[71864,71896],"71865":[71865,71897],"71866":[71866,71898],"71867":[71867,71899],"71868":[71868,71900],"71869":[71869,71901],"71870":[71870,71902],"71871":[71871,71903],"71872":[71840,71872],"71873":[71841,71873],"71874":[71842,71874],"71875":[71843,71875],"71876":[71844,71876],"71877":[71845,71877],"71878":[71846,71878],"71879":[71847,71879],"71880":[71848,71880],"71881":[71849,71881],"71882":[71850,71882],"71883":[71851,71883],"71884":[71852,71884],"71885":[71853,71885],"71886":[71854,71886],"71887":[71855,71887],"71888":[71856,71888],"71889":[71857,71889],"71890":[71858,71890],"71891":[71859,71891],"71892":[71860,71892],"71893":[71861,71893],"71894":[71862,71894],"71895":[71863,71895],"71896":[71864,71896],"71897":[71865,71897],"71898":[71866,71898],"71899":[71867,71899],"71900":[71868,71900],"71901":[71869,71901],"71902":[71870,71902],"71903":[71871,71903],"93760":[93760,93792],"93761":[93761,93793],"93762":[93762,93794],"93763":[93763,93795],"93764":[93764,93796],"93765":[93765,93797],"93766":[93766,93798],"93767":[93767,93799],"93768":[93768,93800],"93769":[93769,93801],"93770":[93770,93802],"93771":[93771,93803],"93772":[93772,93804],"93773":[93773,93805],"93774":[93774,93806],"93775":[93775,93807],"93776":[93776,93808],"93777":[93777,93809],"93778":[93778,93810],"93779":[93779,93811],"93780":[93780,93812],"93781":[93781,93813],"93782":[93782,93814],"93783":[93783,93815],"93784":[93784,93816],"93785":[93785,93817],"93786":[93786,93818],"93787":[93787,93819],"93788":[93788,93820],"93789":[93789,93821],"93790":[93790,93822],"93791":[93791,93823],"93792":[93760,93792],"93793":[93761,93793],"93794":[93762,93794],"93795":[93763,93795],"93796":[93764,93796],"93797":[93765,93797],"93798":[93766,93798],"93799":[93767,93799],"93800":[93768,93800],"93801":[93769,93801],"93802":[93770,93802],"93803":[93771,93803],"93804":[93772,93804],"93805":[93773,93805],"93806":[93774,93806],"93807":[93775,93807],"93808":[93776,93808],"93809":[93777,93809],"93810":[93778,93810],"93811":[93779,93811],"93812":[93780,93812],"93813":[93781,93813],"93814":[93782,93814],"93815":[93783,93815],"93816":[93784,93816],"93817":[93785,93817],"93818":[93786,93818],"93819":[93787,93819],"93820":[93788,93820],"93821":[93789,93821],"93822":[93790,93822],"93823":[93791,93823],"125184":[125184,125218],"125185":[125185,125219],"125186":[125186,125220],"125187":[125187,125221],"125188":[125188,125222],"125189":[125189,125223],"125190":[125190,125224],"125191":[125191,125225],"125192":[125192,125226],"125193":[125193,125227],"125194":[125194,125228],"125195":[125195,125229],"125196":[125196,125230],"125197":[125197,125231],"125198":[125198,125232],"125199":[125199,125233],"125200":[125200,125234],"125201":[125201,125235],"125202":[125202,125236],"125203":[125203,125237],"125204":[125204,125238],"125205":[125205,125239],"125206":[125206,125240],"125207":[125207,125241],"125208":[125208,125242],"125209":[125209,125243],"125210":[125210,125244],"125211":[125211,125245],"125212":[125212,125246],"125213":[125213,125247],"125214":[125214,125248],"125215":[125215,125249],"125216":[125216,125250],"125217":[125217,125251],"125218":[125184,125218],"125219":[125185,125219],"125220":[125186,125220],"125221":[125187,125221],"125222":[125188,125222],"125223":[125189,125223],"125224":[125190,125224],"125225":[125191,125225],"125226":[125192,125226],"125227":[125193,125227],"125228":[125194,125228],"125229":[125195,125229],"125230":[125196,125230],"125231":[125197,125231],"125232":[125198,125232],"125233":[125199,125233],"125234":[125200,125234],"125235":[125201,125235],"125236":[125202,125236],"125237":[125203,125237],"125238":[125204,125238],"125239":[125205,125239],"125240":[125206,125240],"125241":[125207,125241],"125242":[125208,125242],"125243":[125209,125243],"125244":[125210,125244],"125245":[125211,125245],"125246":[125212,125246],"125247":[125213,125247],"125248":[125214,125248],"125249":[125215,125249],"125250":[125216,125250],"125251":[125217,125251]}');function qo(m,n,a){if(m.isSupersetOf(a))return m;const i=m.intersect(a);if(i.isEmpty)return m;const x=new Set;for(const{min:m,max:a}of i.ranges)for(let i=m;i<=a;i++){const m=n[i];for(let n=0,a=m.length;nm-n)),m.union(function*(m){let n=-1,a=0;for(const i of m)-1===n?(n=i,a=1):i===n+a?a++:(yield{min:n,max:n+a-1},n=i,a=1);a>0&&(yield{min:n,max:n+a-1})}(e))}const $o=[{min:48,max:57}],Vo=[{min:9,max:13},{min:32,max:32},{min:160,max:160},{min:5760,max:5760},{min:8192,max:8202},{min:8232,max:8233},{min:8239,max:8239},{min:8287,max:8287},{min:12288,max:12288},{min:65279,max:65279}],Xo=[{min:48,max:57},{min:65,max:90},{min:95,max:95},{min:97,max:122}],Zo=[{min:10,max:10},{min:13,max:13},{min:8232,max:8233}],Yo=qo(i.empty(1114111).union(Xo),Ko,Uo).ranges;function ml(m,n){const a=n.unicode?1114111:65535;switch(m.kind){case"end":case"start":{const x=n.multiline?i.empty(a).union(Zo).negate():i.all(a);return nl(!0,"start"===m.kind?"behind":"ahead",x)}case"word":{const x=n.ignoreCase&&n.unicode?Yo:Xo,e=i.empty(a).union(x);return{type:"Alternation",alternatives:[{type:"Concatenation",elements:[nl(!m.negate,"behind",e),nl(!1,"ahead",e)]},{type:"Concatenation",elements:[nl(m.negate,"behind",e),nl(!0,"ahead",e)]}]}}default:throw P(m,"Unknown assertion type")}}function nl(m,n,a){return{type:"Assertion",negate:m,kind:n,alternatives:[{type:"Concatenation",elements:[{type:"CharacterClass",characters:a}]}]}}const al=i.empty(65535).union(JSON.parse('[{"min":65,"max":90},{"min":97,"max":122},{"min":181,"max":181},{"min":192,"max":214},{"min":216,"max":222},{"min":224,"max":246},{"min":248,"max":303},{"min":306,"max":311},{"min":313,"max":328},{"min":330,"max":382},{"min":384,"max":396},{"min":398,"max":410},{"min":412,"max":425},{"min":428,"max":441},{"min":444,"max":445},{"min":447,"max":447},{"min":452,"max":495},{"min":497,"max":544},{"min":546,"max":563},{"min":570,"max":596},{"min":598,"max":599},{"min":601,"max":601},{"min":603,"max":604},{"min":608,"max":609},{"min":611,"max":611},{"min":613,"max":614},{"min":616,"max":620},{"min":623,"max":623},{"min":625,"max":626},{"min":629,"max":629},{"min":637,"max":637},{"min":640,"max":640},{"min":642,"max":643},{"min":647,"max":652},{"min":658,"max":658},{"min":669,"max":670},{"min":837,"max":837},{"min":880,"max":883},{"min":886,"max":887},{"min":891,"max":893},{"min":895,"max":895},{"min":902,"max":902},{"min":904,"max":906},{"min":908,"max":908},{"min":910,"max":911},{"min":913,"max":929},{"min":931,"max":943},{"min":945,"max":977},{"min":981,"max":1011},{"min":1013,"max":1013},{"min":1015,"max":1019},{"min":1021,"max":1153},{"min":1162,"max":1327},{"min":1329,"max":1366},{"min":1377,"max":1414},{"min":4256,"max":4293},{"min":4295,"max":4295},{"min":4301,"max":4301},{"min":4304,"max":4346},{"min":4349,"max":4351},{"min":5024,"max":5109},{"min":5112,"max":5117},{"min":7296,"max":7304},{"min":7312,"max":7354},{"min":7357,"max":7359},{"min":7545,"max":7545},{"min":7549,"max":7549},{"min":7566,"max":7566},{"min":7680,"max":7829},{"min":7835,"max":7835},{"min":7840,"max":7957},{"min":7960,"max":7965},{"min":7968,"max":8005},{"min":8008,"max":8013},{"min":8017,"max":8017},{"min":8019,"max":8019},{"min":8021,"max":8021},{"min":8023,"max":8023},{"min":8025,"max":8025},{"min":8027,"max":8027},{"min":8029,"max":8029},{"min":8031,"max":8061},{"min":8112,"max":8113},{"min":8120,"max":8123},{"min":8126,"max":8126},{"min":8136,"max":8139},{"min":8144,"max":8145},{"min":8152,"max":8155},{"min":8160,"max":8161},{"min":8165,"max":8165},{"min":8168,"max":8172},{"min":8184,"max":8187},{"min":8498,"max":8498},{"min":8526,"max":8526},{"min":8544,"max":8575},{"min":8579,"max":8580},{"min":9398,"max":9449},{"min":11264,"max":11310},{"min":11312,"max":11358},{"min":11360,"max":11376},{"min":11378,"max":11379},{"min":11381,"max":11382},{"min":11390,"max":11491},{"min":11499,"max":11502},{"min":11506,"max":11507},{"min":11520,"max":11557},{"min":11559,"max":11559},{"min":11565,"max":11565},{"min":42560,"max":42605},{"min":42624,"max":42651},{"min":42786,"max":42799},{"min":42802,"max":42863},{"min":42873,"max":42887},{"min":42891,"max":42893},{"min":42896,"max":42900},{"min":42902,"max":42926},{"min":42928,"max":42943},{"min":42946,"max":42954},{"min":42997,"max":42998},{"min":43859,"max":43859},{"min":43888,"max":43967},{"min":65313,"max":65338},{"min":65345,"max":65370}]')),il=JSON.parse('{"65":[65,97],"66":[66,98],"67":[67,99],"68":[68,100],"69":[69,101],"70":[70,102],"71":[71,103],"72":[72,104],"73":[73,105],"74":[74,106],"75":[75,107],"76":[76,108],"77":[77,109],"78":[78,110],"79":[79,111],"80":[80,112],"81":[81,113],"82":[82,114],"83":[83,115],"84":[84,116],"85":[85,117],"86":[86,118],"87":[87,119],"88":[88,120],"89":[89,121],"90":[90,122],"97":[65,97],"98":[66,98],"99":[67,99],"100":[68,100],"101":[69,101],"102":[70,102],"103":[71,103],"104":[72,104],"105":[73,105],"106":[74,106],"107":[75,107],"108":[76,108],"109":[77,109],"110":[78,110],"111":[79,111],"112":[80,112],"113":[81,113],"114":[82,114],"115":[83,115],"116":[84,116],"117":[85,117],"118":[86,118],"119":[87,119],"120":[88,120],"121":[89,121],"122":[90,122],"181":[181,924,956],"192":[192,224],"193":[193,225],"194":[194,226],"195":[195,227],"196":[196,228],"197":[197,229],"198":[198,230],"199":[199,231],"200":[200,232],"201":[201,233],"202":[202,234],"203":[203,235],"204":[204,236],"205":[205,237],"206":[206,238],"207":[207,239],"208":[208,240],"209":[209,241],"210":[210,242],"211":[211,243],"212":[212,244],"213":[213,245],"214":[214,246],"216":[216,248],"217":[217,249],"218":[218,250],"219":[219,251],"220":[220,252],"221":[221,253],"222":[222,254],"224":[192,224],"225":[193,225],"226":[194,226],"227":[195,227],"228":[196,228],"229":[197,229],"230":[198,230],"231":[199,231],"232":[200,232],"233":[201,233],"234":[202,234],"235":[203,235],"236":[204,236],"237":[205,237],"238":[206,238],"239":[207,239],"240":[208,240],"241":[209,241],"242":[210,242],"243":[211,243],"244":[212,244],"245":[213,245],"246":[214,246],"248":[216,248],"249":[217,249],"250":[218,250],"251":[219,251],"252":[220,252],"253":[221,253],"254":[222,254],"255":[255,376],"256":[256,257],"257":[256,257],"258":[258,259],"259":[258,259],"260":[260,261],"261":[260,261],"262":[262,263],"263":[262,263],"264":[264,265],"265":[264,265],"266":[266,267],"267":[266,267],"268":[268,269],"269":[268,269],"270":[270,271],"271":[270,271],"272":[272,273],"273":[272,273],"274":[274,275],"275":[274,275],"276":[276,277],"277":[276,277],"278":[278,279],"279":[278,279],"280":[280,281],"281":[280,281],"282":[282,283],"283":[282,283],"284":[284,285],"285":[284,285],"286":[286,287],"287":[286,287],"288":[288,289],"289":[288,289],"290":[290,291],"291":[290,291],"292":[292,293],"293":[292,293],"294":[294,295],"295":[294,295],"296":[296,297],"297":[296,297],"298":[298,299],"299":[298,299],"300":[300,301],"301":[300,301],"302":[302,303],"303":[302,303],"306":[306,307],"307":[306,307],"308":[308,309],"309":[308,309],"310":[310,311],"311":[310,311],"313":[313,314],"314":[313,314],"315":[315,316],"316":[315,316],"317":[317,318],"318":[317,318],"319":[319,320],"320":[319,320],"321":[321,322],"322":[321,322],"323":[323,324],"324":[323,324],"325":[325,326],"326":[325,326],"327":[327,328],"328":[327,328],"330":[330,331],"331":[330,331],"332":[332,333],"333":[332,333],"334":[334,335],"335":[334,335],"336":[336,337],"337":[336,337],"338":[338,339],"339":[338,339],"340":[340,341],"341":[340,341],"342":[342,343],"343":[342,343],"344":[344,345],"345":[344,345],"346":[346,347],"347":[346,347],"348":[348,349],"349":[348,349],"350":[350,351],"351":[350,351],"352":[352,353],"353":[352,353],"354":[354,355],"355":[354,355],"356":[356,357],"357":[356,357],"358":[358,359],"359":[358,359],"360":[360,361],"361":[360,361],"362":[362,363],"363":[362,363],"364":[364,365],"365":[364,365],"366":[366,367],"367":[366,367],"368":[368,369],"369":[368,369],"370":[370,371],"371":[370,371],"372":[372,373],"373":[372,373],"374":[374,375],"375":[374,375],"376":[255,376],"377":[377,378],"378":[377,378],"379":[379,380],"380":[379,380],"381":[381,382],"382":[381,382],"384":[384,579],"385":[385,595],"386":[386,387],"387":[386,387],"388":[388,389],"389":[388,389],"390":[390,596],"391":[391,392],"392":[391,392],"393":[393,598],"394":[394,599],"395":[395,396],"396":[395,396],"398":[398,477],"399":[399,601],"400":[400,603],"401":[401,402],"402":[401,402],"403":[403,608],"404":[404,611],"405":[405,502],"406":[406,617],"407":[407,616],"408":[408,409],"409":[408,409],"410":[410,573],"412":[412,623],"413":[413,626],"414":[414,544],"415":[415,629],"416":[416,417],"417":[416,417],"418":[418,419],"419":[418,419],"420":[420,421],"421":[420,421],"422":[422,640],"423":[423,424],"424":[423,424],"425":[425,643],"428":[428,429],"429":[428,429],"430":[430,648],"431":[431,432],"432":[431,432],"433":[433,650],"434":[434,651],"435":[435,436],"436":[435,436],"437":[437,438],"438":[437,438],"439":[439,658],"440":[440,441],"441":[440,441],"444":[444,445],"445":[444,445],"447":[447,503],"452":[452,453,454],"453":[452,453,454],"454":[452,453,454],"455":[455,456,457],"456":[455,456,457],"457":[455,456,457],"458":[458,459,460],"459":[458,459,460],"460":[458,459,460],"461":[461,462],"462":[461,462],"463":[463,464],"464":[463,464],"465":[465,466],"466":[465,466],"467":[467,468],"468":[467,468],"469":[469,470],"470":[469,470],"471":[471,472],"472":[471,472],"473":[473,474],"474":[473,474],"475":[475,476],"476":[475,476],"477":[398,477],"478":[478,479],"479":[478,479],"480":[480,481],"481":[480,481],"482":[482,483],"483":[482,483],"484":[484,485],"485":[484,485],"486":[486,487],"487":[486,487],"488":[488,489],"489":[488,489],"490":[490,491],"491":[490,491],"492":[492,493],"493":[492,493],"494":[494,495],"495":[494,495],"497":[497,498,499],"498":[497,498,499],"499":[497,498,499],"500":[500,501],"501":[500,501],"502":[405,502],"503":[447,503],"504":[504,505],"505":[504,505],"506":[506,507],"507":[506,507],"508":[508,509],"509":[508,509],"510":[510,511],"511":[510,511],"512":[512,513],"513":[512,513],"514":[514,515],"515":[514,515],"516":[516,517],"517":[516,517],"518":[518,519],"519":[518,519],"520":[520,521],"521":[520,521],"522":[522,523],"523":[522,523],"524":[524,525],"525":[524,525],"526":[526,527],"527":[526,527],"528":[528,529],"529":[528,529],"530":[530,531],"531":[530,531],"532":[532,533],"533":[532,533],"534":[534,535],"535":[534,535],"536":[536,537],"537":[536,537],"538":[538,539],"539":[538,539],"540":[540,541],"541":[540,541],"542":[542,543],"543":[542,543],"544":[414,544],"546":[546,547],"547":[546,547],"548":[548,549],"549":[548,549],"550":[550,551],"551":[550,551],"552":[552,553],"553":[552,553],"554":[554,555],"555":[554,555],"556":[556,557],"557":[556,557],"558":[558,559],"559":[558,559],"560":[560,561],"561":[560,561],"562":[562,563],"563":[562,563],"570":[570,11365],"571":[571,572],"572":[571,572],"573":[410,573],"574":[574,11366],"575":[575,11390],"576":[576,11391],"577":[577,578],"578":[577,578],"579":[384,579],"580":[580,649],"581":[581,652],"582":[582,583],"583":[582,583],"584":[584,585],"585":[584,585],"586":[586,587],"587":[586,587],"588":[588,589],"589":[588,589],"590":[590,591],"591":[590,591],"592":[592,11375],"593":[593,11373],"594":[594,11376],"595":[385,595],"596":[390,596],"598":[393,598],"599":[394,599],"601":[399,601],"603":[400,603],"604":[604,42923],"608":[403,608],"609":[609,42924],"611":[404,611],"613":[613,42893],"614":[614,42922],"616":[407,616],"617":[406,617],"618":[618,42926],"619":[619,11362],"620":[620,42925],"623":[412,623],"625":[625,11374],"626":[413,626],"629":[415,629],"637":[637,11364],"640":[422,640],"642":[642,42949],"643":[425,643],"647":[647,42929],"648":[430,648],"649":[580,649],"650":[433,650],"651":[434,651],"652":[581,652],"658":[439,658],"669":[669,42930],"670":[670,42928],"837":[837,921,953,8126],"880":[880,881],"881":[880,881],"882":[882,883],"883":[882,883],"886":[886,887],"887":[886,887],"891":[891,1021],"892":[892,1022],"893":[893,1023],"895":[895,1011],"902":[902,940],"904":[904,941],"905":[905,942],"906":[906,943],"908":[908,972],"910":[910,973],"911":[911,974],"913":[913,945],"914":[914,946,976],"915":[915,947],"916":[916,948],"917":[917,949,1013],"918":[918,950],"919":[919,951],"920":[920,952,977],"921":[837,921,953,8126],"922":[922,954,1008],"923":[923,955],"924":[181,924,956],"925":[925,957],"926":[926,958],"927":[927,959],"928":[928,960,982],"929":[929,961,1009],"931":[931,962,963],"932":[932,964],"933":[933,965],"934":[934,966,981],"935":[935,967],"936":[936,968],"937":[937,969],"938":[938,970],"939":[939,971],"940":[902,940],"941":[904,941],"942":[905,942],"943":[906,943],"945":[913,945],"946":[914,946,976],"947":[915,947],"948":[916,948],"949":[917,949,1013],"950":[918,950],"951":[919,951],"952":[920,952,977],"953":[837,921,953,8126],"954":[922,954,1008],"955":[923,955],"956":[181,924,956],"957":[925,957],"958":[926,958],"959":[927,959],"960":[928,960,982],"961":[929,961,1009],"962":[931,962,963],"963":[931,962,963],"964":[932,964],"965":[933,965],"966":[934,966,981],"967":[935,967],"968":[936,968],"969":[937,969],"970":[938,970],"971":[939,971],"972":[908,972],"973":[910,973],"974":[911,974],"975":[975,983],"976":[914,946,976],"977":[920,952,977],"981":[934,966,981],"982":[928,960,982],"983":[975,983],"984":[984,985],"985":[984,985],"986":[986,987],"987":[986,987],"988":[988,989],"989":[988,989],"990":[990,991],"991":[990,991],"992":[992,993],"993":[992,993],"994":[994,995],"995":[994,995],"996":[996,997],"997":[996,997],"998":[998,999],"999":[998,999],"1000":[1000,1001],"1001":[1000,1001],"1002":[1002,1003],"1003":[1002,1003],"1004":[1004,1005],"1005":[1004,1005],"1006":[1006,1007],"1007":[1006,1007],"1008":[922,954,1008],"1009":[929,961,1009],"1010":[1010,1017],"1011":[895,1011],"1013":[917,949,1013],"1015":[1015,1016],"1016":[1015,1016],"1017":[1010,1017],"1018":[1018,1019],"1019":[1018,1019],"1021":[891,1021],"1022":[892,1022],"1023":[893,1023],"1024":[1024,1104],"1025":[1025,1105],"1026":[1026,1106],"1027":[1027,1107],"1028":[1028,1108],"1029":[1029,1109],"1030":[1030,1110],"1031":[1031,1111],"1032":[1032,1112],"1033":[1033,1113],"1034":[1034,1114],"1035":[1035,1115],"1036":[1036,1116],"1037":[1037,1117],"1038":[1038,1118],"1039":[1039,1119],"1040":[1040,1072],"1041":[1041,1073],"1042":[1042,1074,7296],"1043":[1043,1075],"1044":[1044,1076,7297],"1045":[1045,1077],"1046":[1046,1078],"1047":[1047,1079],"1048":[1048,1080],"1049":[1049,1081],"1050":[1050,1082],"1051":[1051,1083],"1052":[1052,1084],"1053":[1053,1085],"1054":[1054,1086,7298],"1055":[1055,1087],"1056":[1056,1088],"1057":[1057,1089,7299],"1058":[1058,1090,7300,7301],"1059":[1059,1091],"1060":[1060,1092],"1061":[1061,1093],"1062":[1062,1094],"1063":[1063,1095],"1064":[1064,1096],"1065":[1065,1097],"1066":[1066,1098,7302],"1067":[1067,1099],"1068":[1068,1100],"1069":[1069,1101],"1070":[1070,1102],"1071":[1071,1103],"1072":[1040,1072],"1073":[1041,1073],"1074":[1042,1074,7296],"1075":[1043,1075],"1076":[1044,1076,7297],"1077":[1045,1077],"1078":[1046,1078],"1079":[1047,1079],"1080":[1048,1080],"1081":[1049,1081],"1082":[1050,1082],"1083":[1051,1083],"1084":[1052,1084],"1085":[1053,1085],"1086":[1054,1086,7298],"1087":[1055,1087],"1088":[1056,1088],"1089":[1057,1089,7299],"1090":[1058,1090,7300,7301],"1091":[1059,1091],"1092":[1060,1092],"1093":[1061,1093],"1094":[1062,1094],"1095":[1063,1095],"1096":[1064,1096],"1097":[1065,1097],"1098":[1066,1098,7302],"1099":[1067,1099],"1100":[1068,1100],"1101":[1069,1101],"1102":[1070,1102],"1103":[1071,1103],"1104":[1024,1104],"1105":[1025,1105],"1106":[1026,1106],"1107":[1027,1107],"1108":[1028,1108],"1109":[1029,1109],"1110":[1030,1110],"1111":[1031,1111],"1112":[1032,1112],"1113":[1033,1113],"1114":[1034,1114],"1115":[1035,1115],"1116":[1036,1116],"1117":[1037,1117],"1118":[1038,1118],"1119":[1039,1119],"1120":[1120,1121],"1121":[1120,1121],"1122":[1122,1123,7303],"1123":[1122,1123,7303],"1124":[1124,1125],"1125":[1124,1125],"1126":[1126,1127],"1127":[1126,1127],"1128":[1128,1129],"1129":[1128,1129],"1130":[1130,1131],"1131":[1130,1131],"1132":[1132,1133],"1133":[1132,1133],"1134":[1134,1135],"1135":[1134,1135],"1136":[1136,1137],"1137":[1136,1137],"1138":[1138,1139],"1139":[1138,1139],"1140":[1140,1141],"1141":[1140,1141],"1142":[1142,1143],"1143":[1142,1143],"1144":[1144,1145],"1145":[1144,1145],"1146":[1146,1147],"1147":[1146,1147],"1148":[1148,1149],"1149":[1148,1149],"1150":[1150,1151],"1151":[1150,1151],"1152":[1152,1153],"1153":[1152,1153],"1162":[1162,1163],"1163":[1162,1163],"1164":[1164,1165],"1165":[1164,1165],"1166":[1166,1167],"1167":[1166,1167],"1168":[1168,1169],"1169":[1168,1169],"1170":[1170,1171],"1171":[1170,1171],"1172":[1172,1173],"1173":[1172,1173],"1174":[1174,1175],"1175":[1174,1175],"1176":[1176,1177],"1177":[1176,1177],"1178":[1178,1179],"1179":[1178,1179],"1180":[1180,1181],"1181":[1180,1181],"1182":[1182,1183],"1183":[1182,1183],"1184":[1184,1185],"1185":[1184,1185],"1186":[1186,1187],"1187":[1186,1187],"1188":[1188,1189],"1189":[1188,1189],"1190":[1190,1191],"1191":[1190,1191],"1192":[1192,1193],"1193":[1192,1193],"1194":[1194,1195],"1195":[1194,1195],"1196":[1196,1197],"1197":[1196,1197],"1198":[1198,1199],"1199":[1198,1199],"1200":[1200,1201],"1201":[1200,1201],"1202":[1202,1203],"1203":[1202,1203],"1204":[1204,1205],"1205":[1204,1205],"1206":[1206,1207],"1207":[1206,1207],"1208":[1208,1209],"1209":[1208,1209],"1210":[1210,1211],"1211":[1210,1211],"1212":[1212,1213],"1213":[1212,1213],"1214":[1214,1215],"1215":[1214,1215],"1216":[1216,1231],"1217":[1217,1218],"1218":[1217,1218],"1219":[1219,1220],"1220":[1219,1220],"1221":[1221,1222],"1222":[1221,1222],"1223":[1223,1224],"1224":[1223,1224],"1225":[1225,1226],"1226":[1225,1226],"1227":[1227,1228],"1228":[1227,1228],"1229":[1229,1230],"1230":[1229,1230],"1231":[1216,1231],"1232":[1232,1233],"1233":[1232,1233],"1234":[1234,1235],"1235":[1234,1235],"1236":[1236,1237],"1237":[1236,1237],"1238":[1238,1239],"1239":[1238,1239],"1240":[1240,1241],"1241":[1240,1241],"1242":[1242,1243],"1243":[1242,1243],"1244":[1244,1245],"1245":[1244,1245],"1246":[1246,1247],"1247":[1246,1247],"1248":[1248,1249],"1249":[1248,1249],"1250":[1250,1251],"1251":[1250,1251],"1252":[1252,1253],"1253":[1252,1253],"1254":[1254,1255],"1255":[1254,1255],"1256":[1256,1257],"1257":[1256,1257],"1258":[1258,1259],"1259":[1258,1259],"1260":[1260,1261],"1261":[1260,1261],"1262":[1262,1263],"1263":[1262,1263],"1264":[1264,1265],"1265":[1264,1265],"1266":[1266,1267],"1267":[1266,1267],"1268":[1268,1269],"1269":[1268,1269],"1270":[1270,1271],"1271":[1270,1271],"1272":[1272,1273],"1273":[1272,1273],"1274":[1274,1275],"1275":[1274,1275],"1276":[1276,1277],"1277":[1276,1277],"1278":[1278,1279],"1279":[1278,1279],"1280":[1280,1281],"1281":[1280,1281],"1282":[1282,1283],"1283":[1282,1283],"1284":[1284,1285],"1285":[1284,1285],"1286":[1286,1287],"1287":[1286,1287],"1288":[1288,1289],"1289":[1288,1289],"1290":[1290,1291],"1291":[1290,1291],"1292":[1292,1293],"1293":[1292,1293],"1294":[1294,1295],"1295":[1294,1295],"1296":[1296,1297],"1297":[1296,1297],"1298":[1298,1299],"1299":[1298,1299],"1300":[1300,1301],"1301":[1300,1301],"1302":[1302,1303],"1303":[1302,1303],"1304":[1304,1305],"1305":[1304,1305],"1306":[1306,1307],"1307":[1306,1307],"1308":[1308,1309],"1309":[1308,1309],"1310":[1310,1311],"1311":[1310,1311],"1312":[1312,1313],"1313":[1312,1313],"1314":[1314,1315],"1315":[1314,1315],"1316":[1316,1317],"1317":[1316,1317],"1318":[1318,1319],"1319":[1318,1319],"1320":[1320,1321],"1321":[1320,1321],"1322":[1322,1323],"1323":[1322,1323],"1324":[1324,1325],"1325":[1324,1325],"1326":[1326,1327],"1327":[1326,1327],"1329":[1329,1377],"1330":[1330,1378],"1331":[1331,1379],"1332":[1332,1380],"1333":[1333,1381],"1334":[1334,1382],"1335":[1335,1383],"1336":[1336,1384],"1337":[1337,1385],"1338":[1338,1386],"1339":[1339,1387],"1340":[1340,1388],"1341":[1341,1389],"1342":[1342,1390],"1343":[1343,1391],"1344":[1344,1392],"1345":[1345,1393],"1346":[1346,1394],"1347":[1347,1395],"1348":[1348,1396],"1349":[1349,1397],"1350":[1350,1398],"1351":[1351,1399],"1352":[1352,1400],"1353":[1353,1401],"1354":[1354,1402],"1355":[1355,1403],"1356":[1356,1404],"1357":[1357,1405],"1358":[1358,1406],"1359":[1359,1407],"1360":[1360,1408],"1361":[1361,1409],"1362":[1362,1410],"1363":[1363,1411],"1364":[1364,1412],"1365":[1365,1413],"1366":[1366,1414],"1377":[1329,1377],"1378":[1330,1378],"1379":[1331,1379],"1380":[1332,1380],"1381":[1333,1381],"1382":[1334,1382],"1383":[1335,1383],"1384":[1336,1384],"1385":[1337,1385],"1386":[1338,1386],"1387":[1339,1387],"1388":[1340,1388],"1389":[1341,1389],"1390":[1342,1390],"1391":[1343,1391],"1392":[1344,1392],"1393":[1345,1393],"1394":[1346,1394],"1395":[1347,1395],"1396":[1348,1396],"1397":[1349,1397],"1398":[1350,1398],"1399":[1351,1399],"1400":[1352,1400],"1401":[1353,1401],"1402":[1354,1402],"1403":[1355,1403],"1404":[1356,1404],"1405":[1357,1405],"1406":[1358,1406],"1407":[1359,1407],"1408":[1360,1408],"1409":[1361,1409],"1410":[1362,1410],"1411":[1363,1411],"1412":[1364,1412],"1413":[1365,1413],"1414":[1366,1414],"4256":[4256,11520],"4257":[4257,11521],"4258":[4258,11522],"4259":[4259,11523],"4260":[4260,11524],"4261":[4261,11525],"4262":[4262,11526],"4263":[4263,11527],"4264":[4264,11528],"4265":[4265,11529],"4266":[4266,11530],"4267":[4267,11531],"4268":[4268,11532],"4269":[4269,11533],"4270":[4270,11534],"4271":[4271,11535],"4272":[4272,11536],"4273":[4273,11537],"4274":[4274,11538],"4275":[4275,11539],"4276":[4276,11540],"4277":[4277,11541],"4278":[4278,11542],"4279":[4279,11543],"4280":[4280,11544],"4281":[4281,11545],"4282":[4282,11546],"4283":[4283,11547],"4284":[4284,11548],"4285":[4285,11549],"4286":[4286,11550],"4287":[4287,11551],"4288":[4288,11552],"4289":[4289,11553],"4290":[4290,11554],"4291":[4291,11555],"4292":[4292,11556],"4293":[4293,11557],"4295":[4295,11559],"4301":[4301,11565],"4304":[4304,7312],"4305":[4305,7313],"4306":[4306,7314],"4307":[4307,7315],"4308":[4308,7316],"4309":[4309,7317],"4310":[4310,7318],"4311":[4311,7319],"4312":[4312,7320],"4313":[4313,7321],"4314":[4314,7322],"4315":[4315,7323],"4316":[4316,7324],"4317":[4317,7325],"4318":[4318,7326],"4319":[4319,7327],"4320":[4320,7328],"4321":[4321,7329],"4322":[4322,7330],"4323":[4323,7331],"4324":[4324,7332],"4325":[4325,7333],"4326":[4326,7334],"4327":[4327,7335],"4328":[4328,7336],"4329":[4329,7337],"4330":[4330,7338],"4331":[4331,7339],"4332":[4332,7340],"4333":[4333,7341],"4334":[4334,7342],"4335":[4335,7343],"4336":[4336,7344],"4337":[4337,7345],"4338":[4338,7346],"4339":[4339,7347],"4340":[4340,7348],"4341":[4341,7349],"4342":[4342,7350],"4343":[4343,7351],"4344":[4344,7352],"4345":[4345,7353],"4346":[4346,7354],"4349":[4349,7357],"4350":[4350,7358],"4351":[4351,7359],"5024":[5024,43888],"5025":[5025,43889],"5026":[5026,43890],"5027":[5027,43891],"5028":[5028,43892],"5029":[5029,43893],"5030":[5030,43894],"5031":[5031,43895],"5032":[5032,43896],"5033":[5033,43897],"5034":[5034,43898],"5035":[5035,43899],"5036":[5036,43900],"5037":[5037,43901],"5038":[5038,43902],"5039":[5039,43903],"5040":[5040,43904],"5041":[5041,43905],"5042":[5042,43906],"5043":[5043,43907],"5044":[5044,43908],"5045":[5045,43909],"5046":[5046,43910],"5047":[5047,43911],"5048":[5048,43912],"5049":[5049,43913],"5050":[5050,43914],"5051":[5051,43915],"5052":[5052,43916],"5053":[5053,43917],"5054":[5054,43918],"5055":[5055,43919],"5056":[5056,43920],"5057":[5057,43921],"5058":[5058,43922],"5059":[5059,43923],"5060":[5060,43924],"5061":[5061,43925],"5062":[5062,43926],"5063":[5063,43927],"5064":[5064,43928],"5065":[5065,43929],"5066":[5066,43930],"5067":[5067,43931],"5068":[5068,43932],"5069":[5069,43933],"5070":[5070,43934],"5071":[5071,43935],"5072":[5072,43936],"5073":[5073,43937],"5074":[5074,43938],"5075":[5075,43939],"5076":[5076,43940],"5077":[5077,43941],"5078":[5078,43942],"5079":[5079,43943],"5080":[5080,43944],"5081":[5081,43945],"5082":[5082,43946],"5083":[5083,43947],"5084":[5084,43948],"5085":[5085,43949],"5086":[5086,43950],"5087":[5087,43951],"5088":[5088,43952],"5089":[5089,43953],"5090":[5090,43954],"5091":[5091,43955],"5092":[5092,43956],"5093":[5093,43957],"5094":[5094,43958],"5095":[5095,43959],"5096":[5096,43960],"5097":[5097,43961],"5098":[5098,43962],"5099":[5099,43963],"5100":[5100,43964],"5101":[5101,43965],"5102":[5102,43966],"5103":[5103,43967],"5104":[5104,5112],"5105":[5105,5113],"5106":[5106,5114],"5107":[5107,5115],"5108":[5108,5116],"5109":[5109,5117],"5112":[5104,5112],"5113":[5105,5113],"5114":[5106,5114],"5115":[5107,5115],"5116":[5108,5116],"5117":[5109,5117],"7296":[1042,1074,7296],"7297":[1044,1076,7297],"7298":[1054,1086,7298],"7299":[1057,1089,7299],"7300":[1058,1090,7300,7301],"7301":[1058,1090,7300,7301],"7302":[1066,1098,7302],"7303":[1122,1123,7303],"7304":[7304,42570,42571],"7312":[4304,7312],"7313":[4305,7313],"7314":[4306,7314],"7315":[4307,7315],"7316":[4308,7316],"7317":[4309,7317],"7318":[4310,7318],"7319":[4311,7319],"7320":[4312,7320],"7321":[4313,7321],"7322":[4314,7322],"7323":[4315,7323],"7324":[4316,7324],"7325":[4317,7325],"7326":[4318,7326],"7327":[4319,7327],"7328":[4320,7328],"7329":[4321,7329],"7330":[4322,7330],"7331":[4323,7331],"7332":[4324,7332],"7333":[4325,7333],"7334":[4326,7334],"7335":[4327,7335],"7336":[4328,7336],"7337":[4329,7337],"7338":[4330,7338],"7339":[4331,7339],"7340":[4332,7340],"7341":[4333,7341],"7342":[4334,7342],"7343":[4335,7343],"7344":[4336,7344],"7345":[4337,7345],"7346":[4338,7346],"7347":[4339,7347],"7348":[4340,7348],"7349":[4341,7349],"7350":[4342,7350],"7351":[4343,7351],"7352":[4344,7352],"7353":[4345,7353],"7354":[4346,7354],"7357":[4349,7357],"7358":[4350,7358],"7359":[4351,7359],"7545":[7545,42877],"7549":[7549,11363],"7566":[7566,42950],"7680":[7680,7681],"7681":[7680,7681],"7682":[7682,7683],"7683":[7682,7683],"7684":[7684,7685],"7685":[7684,7685],"7686":[7686,7687],"7687":[7686,7687],"7688":[7688,7689],"7689":[7688,7689],"7690":[7690,7691],"7691":[7690,7691],"7692":[7692,7693],"7693":[7692,7693],"7694":[7694,7695],"7695":[7694,7695],"7696":[7696,7697],"7697":[7696,7697],"7698":[7698,7699],"7699":[7698,7699],"7700":[7700,7701],"7701":[7700,7701],"7702":[7702,7703],"7703":[7702,7703],"7704":[7704,7705],"7705":[7704,7705],"7706":[7706,7707],"7707":[7706,7707],"7708":[7708,7709],"7709":[7708,7709],"7710":[7710,7711],"7711":[7710,7711],"7712":[7712,7713],"7713":[7712,7713],"7714":[7714,7715],"7715":[7714,7715],"7716":[7716,7717],"7717":[7716,7717],"7718":[7718,7719],"7719":[7718,7719],"7720":[7720,7721],"7721":[7720,7721],"7722":[7722,7723],"7723":[7722,7723],"7724":[7724,7725],"7725":[7724,7725],"7726":[7726,7727],"7727":[7726,7727],"7728":[7728,7729],"7729":[7728,7729],"7730":[7730,7731],"7731":[7730,7731],"7732":[7732,7733],"7733":[7732,7733],"7734":[7734,7735],"7735":[7734,7735],"7736":[7736,7737],"7737":[7736,7737],"7738":[7738,7739],"7739":[7738,7739],"7740":[7740,7741],"7741":[7740,7741],"7742":[7742,7743],"7743":[7742,7743],"7744":[7744,7745],"7745":[7744,7745],"7746":[7746,7747],"7747":[7746,7747],"7748":[7748,7749],"7749":[7748,7749],"7750":[7750,7751],"7751":[7750,7751],"7752":[7752,7753],"7753":[7752,7753],"7754":[7754,7755],"7755":[7754,7755],"7756":[7756,7757],"7757":[7756,7757],"7758":[7758,7759],"7759":[7758,7759],"7760":[7760,7761],"7761":[7760,7761],"7762":[7762,7763],"7763":[7762,7763],"7764":[7764,7765],"7765":[7764,7765],"7766":[7766,7767],"7767":[7766,7767],"7768":[7768,7769],"7769":[7768,7769],"7770":[7770,7771],"7771":[7770,7771],"7772":[7772,7773],"7773":[7772,7773],"7774":[7774,7775],"7775":[7774,7775],"7776":[7776,7777,7835],"7777":[7776,7777,7835],"7778":[7778,7779],"7779":[7778,7779],"7780":[7780,7781],"7781":[7780,7781],"7782":[7782,7783],"7783":[7782,7783],"7784":[7784,7785],"7785":[7784,7785],"7786":[7786,7787],"7787":[7786,7787],"7788":[7788,7789],"7789":[7788,7789],"7790":[7790,7791],"7791":[7790,7791],"7792":[7792,7793],"7793":[7792,7793],"7794":[7794,7795],"7795":[7794,7795],"7796":[7796,7797],"7797":[7796,7797],"7798":[7798,7799],"7799":[7798,7799],"7800":[7800,7801],"7801":[7800,7801],"7802":[7802,7803],"7803":[7802,7803],"7804":[7804,7805],"7805":[7804,7805],"7806":[7806,7807],"7807":[7806,7807],"7808":[7808,7809],"7809":[7808,7809],"7810":[7810,7811],"7811":[7810,7811],"7812":[7812,7813],"7813":[7812,7813],"7814":[7814,7815],"7815":[7814,7815],"7816":[7816,7817],"7817":[7816,7817],"7818":[7818,7819],"7819":[7818,7819],"7820":[7820,7821],"7821":[7820,7821],"7822":[7822,7823],"7823":[7822,7823],"7824":[7824,7825],"7825":[7824,7825],"7826":[7826,7827],"7827":[7826,7827],"7828":[7828,7829],"7829":[7828,7829],"7835":[7776,7777,7835],"7840":[7840,7841],"7841":[7840,7841],"7842":[7842,7843],"7843":[7842,7843],"7844":[7844,7845],"7845":[7844,7845],"7846":[7846,7847],"7847":[7846,7847],"7848":[7848,7849],"7849":[7848,7849],"7850":[7850,7851],"7851":[7850,7851],"7852":[7852,7853],"7853":[7852,7853],"7854":[7854,7855],"7855":[7854,7855],"7856":[7856,7857],"7857":[7856,7857],"7858":[7858,7859],"7859":[7858,7859],"7860":[7860,7861],"7861":[7860,7861],"7862":[7862,7863],"7863":[7862,7863],"7864":[7864,7865],"7865":[7864,7865],"7866":[7866,7867],"7867":[7866,7867],"7868":[7868,7869],"7869":[7868,7869],"7870":[7870,7871],"7871":[7870,7871],"7872":[7872,7873],"7873":[7872,7873],"7874":[7874,7875],"7875":[7874,7875],"7876":[7876,7877],"7877":[7876,7877],"7878":[7878,7879],"7879":[7878,7879],"7880":[7880,7881],"7881":[7880,7881],"7882":[7882,7883],"7883":[7882,7883],"7884":[7884,7885],"7885":[7884,7885],"7886":[7886,7887],"7887":[7886,7887],"7888":[7888,7889],"7889":[7888,7889],"7890":[7890,7891],"7891":[7890,7891],"7892":[7892,7893],"7893":[7892,7893],"7894":[7894,7895],"7895":[7894,7895],"7896":[7896,7897],"7897":[7896,7897],"7898":[7898,7899],"7899":[7898,7899],"7900":[7900,7901],"7901":[7900,7901],"7902":[7902,7903],"7903":[7902,7903],"7904":[7904,7905],"7905":[7904,7905],"7906":[7906,7907],"7907":[7906,7907],"7908":[7908,7909],"7909":[7908,7909],"7910":[7910,7911],"7911":[7910,7911],"7912":[7912,7913],"7913":[7912,7913],"7914":[7914,7915],"7915":[7914,7915],"7916":[7916,7917],"7917":[7916,7917],"7918":[7918,7919],"7919":[7918,7919],"7920":[7920,7921],"7921":[7920,7921],"7922":[7922,7923],"7923":[7922,7923],"7924":[7924,7925],"7925":[7924,7925],"7926":[7926,7927],"7927":[7926,7927],"7928":[7928,7929],"7929":[7928,7929],"7930":[7930,7931],"7931":[7930,7931],"7932":[7932,7933],"7933":[7932,7933],"7934":[7934,7935],"7935":[7934,7935],"7936":[7936,7944],"7937":[7937,7945],"7938":[7938,7946],"7939":[7939,7947],"7940":[7940,7948],"7941":[7941,7949],"7942":[7942,7950],"7943":[7943,7951],"7944":[7936,7944],"7945":[7937,7945],"7946":[7938,7946],"7947":[7939,7947],"7948":[7940,7948],"7949":[7941,7949],"7950":[7942,7950],"7951":[7943,7951],"7952":[7952,7960],"7953":[7953,7961],"7954":[7954,7962],"7955":[7955,7963],"7956":[7956,7964],"7957":[7957,7965],"7960":[7952,7960],"7961":[7953,7961],"7962":[7954,7962],"7963":[7955,7963],"7964":[7956,7964],"7965":[7957,7965],"7968":[7968,7976],"7969":[7969,7977],"7970":[7970,7978],"7971":[7971,7979],"7972":[7972,7980],"7973":[7973,7981],"7974":[7974,7982],"7975":[7975,7983],"7976":[7968,7976],"7977":[7969,7977],"7978":[7970,7978],"7979":[7971,7979],"7980":[7972,7980],"7981":[7973,7981],"7982":[7974,7982],"7983":[7975,7983],"7984":[7984,7992],"7985":[7985,7993],"7986":[7986,7994],"7987":[7987,7995],"7988":[7988,7996],"7989":[7989,7997],"7990":[7990,7998],"7991":[7991,7999],"7992":[7984,7992],"7993":[7985,7993],"7994":[7986,7994],"7995":[7987,7995],"7996":[7988,7996],"7997":[7989,7997],"7998":[7990,7998],"7999":[7991,7999],"8000":[8000,8008],"8001":[8001,8009],"8002":[8002,8010],"8003":[8003,8011],"8004":[8004,8012],"8005":[8005,8013],"8008":[8000,8008],"8009":[8001,8009],"8010":[8002,8010],"8011":[8003,8011],"8012":[8004,8012],"8013":[8005,8013],"8017":[8017,8025],"8019":[8019,8027],"8021":[8021,8029],"8023":[8023,8031],"8025":[8017,8025],"8027":[8019,8027],"8029":[8021,8029],"8031":[8023,8031],"8032":[8032,8040],"8033":[8033,8041],"8034":[8034,8042],"8035":[8035,8043],"8036":[8036,8044],"8037":[8037,8045],"8038":[8038,8046],"8039":[8039,8047],"8040":[8032,8040],"8041":[8033,8041],"8042":[8034,8042],"8043":[8035,8043],"8044":[8036,8044],"8045":[8037,8045],"8046":[8038,8046],"8047":[8039,8047],"8048":[8048,8122],"8049":[8049,8123],"8050":[8050,8136],"8051":[8051,8137],"8052":[8052,8138],"8053":[8053,8139],"8054":[8054,8154],"8055":[8055,8155],"8056":[8056,8184],"8057":[8057,8185],"8058":[8058,8170],"8059":[8059,8171],"8060":[8060,8186],"8061":[8061,8187],"8112":[8112,8120],"8113":[8113,8121],"8120":[8112,8120],"8121":[8113,8121],"8122":[8048,8122],"8123":[8049,8123],"8126":[837,921,953,8126],"8136":[8050,8136],"8137":[8051,8137],"8138":[8052,8138],"8139":[8053,8139],"8144":[8144,8152],"8145":[8145,8153],"8152":[8144,8152],"8153":[8145,8153],"8154":[8054,8154],"8155":[8055,8155],"8160":[8160,8168],"8161":[8161,8169],"8165":[8165,8172],"8168":[8160,8168],"8169":[8161,8169],"8170":[8058,8170],"8171":[8059,8171],"8172":[8165,8172],"8184":[8056,8184],"8185":[8057,8185],"8186":[8060,8186],"8187":[8061,8187],"8498":[8498,8526],"8526":[8498,8526],"8544":[8544,8560],"8545":[8545,8561],"8546":[8546,8562],"8547":[8547,8563],"8548":[8548,8564],"8549":[8549,8565],"8550":[8550,8566],"8551":[8551,8567],"8552":[8552,8568],"8553":[8553,8569],"8554":[8554,8570],"8555":[8555,8571],"8556":[8556,8572],"8557":[8557,8573],"8558":[8558,8574],"8559":[8559,8575],"8560":[8544,8560],"8561":[8545,8561],"8562":[8546,8562],"8563":[8547,8563],"8564":[8548,8564],"8565":[8549,8565],"8566":[8550,8566],"8567":[8551,8567],"8568":[8552,8568],"8569":[8553,8569],"8570":[8554,8570],"8571":[8555,8571],"8572":[8556,8572],"8573":[8557,8573],"8574":[8558,8574],"8575":[8559,8575],"8579":[8579,8580],"8580":[8579,8580],"9398":[9398,9424],"9399":[9399,9425],"9400":[9400,9426],"9401":[9401,9427],"9402":[9402,9428],"9403":[9403,9429],"9404":[9404,9430],"9405":[9405,9431],"9406":[9406,9432],"9407":[9407,9433],"9408":[9408,9434],"9409":[9409,9435],"9410":[9410,9436],"9411":[9411,9437],"9412":[9412,9438],"9413":[9413,9439],"9414":[9414,9440],"9415":[9415,9441],"9416":[9416,9442],"9417":[9417,9443],"9418":[9418,9444],"9419":[9419,9445],"9420":[9420,9446],"9421":[9421,9447],"9422":[9422,9448],"9423":[9423,9449],"9424":[9398,9424],"9425":[9399,9425],"9426":[9400,9426],"9427":[9401,9427],"9428":[9402,9428],"9429":[9403,9429],"9430":[9404,9430],"9431":[9405,9431],"9432":[9406,9432],"9433":[9407,9433],"9434":[9408,9434],"9435":[9409,9435],"9436":[9410,9436],"9437":[9411,9437],"9438":[9412,9438],"9439":[9413,9439],"9440":[9414,9440],"9441":[9415,9441],"9442":[9416,9442],"9443":[9417,9443],"9444":[9418,9444],"9445":[9419,9445],"9446":[9420,9446],"9447":[9421,9447],"9448":[9422,9448],"9449":[9423,9449],"11264":[11264,11312],"11265":[11265,11313],"11266":[11266,11314],"11267":[11267,11315],"11268":[11268,11316],"11269":[11269,11317],"11270":[11270,11318],"11271":[11271,11319],"11272":[11272,11320],"11273":[11273,11321],"11274":[11274,11322],"11275":[11275,11323],"11276":[11276,11324],"11277":[11277,11325],"11278":[11278,11326],"11279":[11279,11327],"11280":[11280,11328],"11281":[11281,11329],"11282":[11282,11330],"11283":[11283,11331],"11284":[11284,11332],"11285":[11285,11333],"11286":[11286,11334],"11287":[11287,11335],"11288":[11288,11336],"11289":[11289,11337],"11290":[11290,11338],"11291":[11291,11339],"11292":[11292,11340],"11293":[11293,11341],"11294":[11294,11342],"11295":[11295,11343],"11296":[11296,11344],"11297":[11297,11345],"11298":[11298,11346],"11299":[11299,11347],"11300":[11300,11348],"11301":[11301,11349],"11302":[11302,11350],"11303":[11303,11351],"11304":[11304,11352],"11305":[11305,11353],"11306":[11306,11354],"11307":[11307,11355],"11308":[11308,11356],"11309":[11309,11357],"11310":[11310,11358],"11312":[11264,11312],"11313":[11265,11313],"11314":[11266,11314],"11315":[11267,11315],"11316":[11268,11316],"11317":[11269,11317],"11318":[11270,11318],"11319":[11271,11319],"11320":[11272,11320],"11321":[11273,11321],"11322":[11274,11322],"11323":[11275,11323],"11324":[11276,11324],"11325":[11277,11325],"11326":[11278,11326],"11327":[11279,11327],"11328":[11280,11328],"11329":[11281,11329],"11330":[11282,11330],"11331":[11283,11331],"11332":[11284,11332],"11333":[11285,11333],"11334":[11286,11334],"11335":[11287,11335],"11336":[11288,11336],"11337":[11289,11337],"11338":[11290,11338],"11339":[11291,11339],"11340":[11292,11340],"11341":[11293,11341],"11342":[11294,11342],"11343":[11295,11343],"11344":[11296,11344],"11345":[11297,11345],"11346":[11298,11346],"11347":[11299,11347],"11348":[11300,11348],"11349":[11301,11349],"11350":[11302,11350],"11351":[11303,11351],"11352":[11304,11352],"11353":[11305,11353],"11354":[11306,11354],"11355":[11307,11355],"11356":[11308,11356],"11357":[11309,11357],"11358":[11310,11358],"11360":[11360,11361],"11361":[11360,11361],"11362":[619,11362],"11363":[7549,11363],"11364":[637,11364],"11365":[570,11365],"11366":[574,11366],"11367":[11367,11368],"11368":[11367,11368],"11369":[11369,11370],"11370":[11369,11370],"11371":[11371,11372],"11372":[11371,11372],"11373":[593,11373],"11374":[625,11374],"11375":[592,11375],"11376":[594,11376],"11378":[11378,11379],"11379":[11378,11379],"11381":[11381,11382],"11382":[11381,11382],"11390":[575,11390],"11391":[576,11391],"11392":[11392,11393],"11393":[11392,11393],"11394":[11394,11395],"11395":[11394,11395],"11396":[11396,11397],"11397":[11396,11397],"11398":[11398,11399],"11399":[11398,11399],"11400":[11400,11401],"11401":[11400,11401],"11402":[11402,11403],"11403":[11402,11403],"11404":[11404,11405],"11405":[11404,11405],"11406":[11406,11407],"11407":[11406,11407],"11408":[11408,11409],"11409":[11408,11409],"11410":[11410,11411],"11411":[11410,11411],"11412":[11412,11413],"11413":[11412,11413],"11414":[11414,11415],"11415":[11414,11415],"11416":[11416,11417],"11417":[11416,11417],"11418":[11418,11419],"11419":[11418,11419],"11420":[11420,11421],"11421":[11420,11421],"11422":[11422,11423],"11423":[11422,11423],"11424":[11424,11425],"11425":[11424,11425],"11426":[11426,11427],"11427":[11426,11427],"11428":[11428,11429],"11429":[11428,11429],"11430":[11430,11431],"11431":[11430,11431],"11432":[11432,11433],"11433":[11432,11433],"11434":[11434,11435],"11435":[11434,11435],"11436":[11436,11437],"11437":[11436,11437],"11438":[11438,11439],"11439":[11438,11439],"11440":[11440,11441],"11441":[11440,11441],"11442":[11442,11443],"11443":[11442,11443],"11444":[11444,11445],"11445":[11444,11445],"11446":[11446,11447],"11447":[11446,11447],"11448":[11448,11449],"11449":[11448,11449],"11450":[11450,11451],"11451":[11450,11451],"11452":[11452,11453],"11453":[11452,11453],"11454":[11454,11455],"11455":[11454,11455],"11456":[11456,11457],"11457":[11456,11457],"11458":[11458,11459],"11459":[11458,11459],"11460":[11460,11461],"11461":[11460,11461],"11462":[11462,11463],"11463":[11462,11463],"11464":[11464,11465],"11465":[11464,11465],"11466":[11466,11467],"11467":[11466,11467],"11468":[11468,11469],"11469":[11468,11469],"11470":[11470,11471],"11471":[11470,11471],"11472":[11472,11473],"11473":[11472,11473],"11474":[11474,11475],"11475":[11474,11475],"11476":[11476,11477],"11477":[11476,11477],"11478":[11478,11479],"11479":[11478,11479],"11480":[11480,11481],"11481":[11480,11481],"11482":[11482,11483],"11483":[11482,11483],"11484":[11484,11485],"11485":[11484,11485],"11486":[11486,11487],"11487":[11486,11487],"11488":[11488,11489],"11489":[11488,11489],"11490":[11490,11491],"11491":[11490,11491],"11499":[11499,11500],"11500":[11499,11500],"11501":[11501,11502],"11502":[11501,11502],"11506":[11506,11507],"11507":[11506,11507],"11520":[4256,11520],"11521":[4257,11521],"11522":[4258,11522],"11523":[4259,11523],"11524":[4260,11524],"11525":[4261,11525],"11526":[4262,11526],"11527":[4263,11527],"11528":[4264,11528],"11529":[4265,11529],"11530":[4266,11530],"11531":[4267,11531],"11532":[4268,11532],"11533":[4269,11533],"11534":[4270,11534],"11535":[4271,11535],"11536":[4272,11536],"11537":[4273,11537],"11538":[4274,11538],"11539":[4275,11539],"11540":[4276,11540],"11541":[4277,11541],"11542":[4278,11542],"11543":[4279,11543],"11544":[4280,11544],"11545":[4281,11545],"11546":[4282,11546],"11547":[4283,11547],"11548":[4284,11548],"11549":[4285,11549],"11550":[4286,11550],"11551":[4287,11551],"11552":[4288,11552],"11553":[4289,11553],"11554":[4290,11554],"11555":[4291,11555],"11556":[4292,11556],"11557":[4293,11557],"11559":[4295,11559],"11565":[4301,11565],"42560":[42560,42561],"42561":[42560,42561],"42562":[42562,42563],"42563":[42562,42563],"42564":[42564,42565],"42565":[42564,42565],"42566":[42566,42567],"42567":[42566,42567],"42568":[42568,42569],"42569":[42568,42569],"42570":[7304,42570,42571],"42571":[7304,42570,42571],"42572":[42572,42573],"42573":[42572,42573],"42574":[42574,42575],"42575":[42574,42575],"42576":[42576,42577],"42577":[42576,42577],"42578":[42578,42579],"42579":[42578,42579],"42580":[42580,42581],"42581":[42580,42581],"42582":[42582,42583],"42583":[42582,42583],"42584":[42584,42585],"42585":[42584,42585],"42586":[42586,42587],"42587":[42586,42587],"42588":[42588,42589],"42589":[42588,42589],"42590":[42590,42591],"42591":[42590,42591],"42592":[42592,42593],"42593":[42592,42593],"42594":[42594,42595],"42595":[42594,42595],"42596":[42596,42597],"42597":[42596,42597],"42598":[42598,42599],"42599":[42598,42599],"42600":[42600,42601],"42601":[42600,42601],"42602":[42602,42603],"42603":[42602,42603],"42604":[42604,42605],"42605":[42604,42605],"42624":[42624,42625],"42625":[42624,42625],"42626":[42626,42627],"42627":[42626,42627],"42628":[42628,42629],"42629":[42628,42629],"42630":[42630,42631],"42631":[42630,42631],"42632":[42632,42633],"42633":[42632,42633],"42634":[42634,42635],"42635":[42634,42635],"42636":[42636,42637],"42637":[42636,42637],"42638":[42638,42639],"42639":[42638,42639],"42640":[42640,42641],"42641":[42640,42641],"42642":[42642,42643],"42643":[42642,42643],"42644":[42644,42645],"42645":[42644,42645],"42646":[42646,42647],"42647":[42646,42647],"42648":[42648,42649],"42649":[42648,42649],"42650":[42650,42651],"42651":[42650,42651],"42786":[42786,42787],"42787":[42786,42787],"42788":[42788,42789],"42789":[42788,42789],"42790":[42790,42791],"42791":[42790,42791],"42792":[42792,42793],"42793":[42792,42793],"42794":[42794,42795],"42795":[42794,42795],"42796":[42796,42797],"42797":[42796,42797],"42798":[42798,42799],"42799":[42798,42799],"42802":[42802,42803],"42803":[42802,42803],"42804":[42804,42805],"42805":[42804,42805],"42806":[42806,42807],"42807":[42806,42807],"42808":[42808,42809],"42809":[42808,42809],"42810":[42810,42811],"42811":[42810,42811],"42812":[42812,42813],"42813":[42812,42813],"42814":[42814,42815],"42815":[42814,42815],"42816":[42816,42817],"42817":[42816,42817],"42818":[42818,42819],"42819":[42818,42819],"42820":[42820,42821],"42821":[42820,42821],"42822":[42822,42823],"42823":[42822,42823],"42824":[42824,42825],"42825":[42824,42825],"42826":[42826,42827],"42827":[42826,42827],"42828":[42828,42829],"42829":[42828,42829],"42830":[42830,42831],"42831":[42830,42831],"42832":[42832,42833],"42833":[42832,42833],"42834":[42834,42835],"42835":[42834,42835],"42836":[42836,42837],"42837":[42836,42837],"42838":[42838,42839],"42839":[42838,42839],"42840":[42840,42841],"42841":[42840,42841],"42842":[42842,42843],"42843":[42842,42843],"42844":[42844,42845],"42845":[42844,42845],"42846":[42846,42847],"42847":[42846,42847],"42848":[42848,42849],"42849":[42848,42849],"42850":[42850,42851],"42851":[42850,42851],"42852":[42852,42853],"42853":[42852,42853],"42854":[42854,42855],"42855":[42854,42855],"42856":[42856,42857],"42857":[42856,42857],"42858":[42858,42859],"42859":[42858,42859],"42860":[42860,42861],"42861":[42860,42861],"42862":[42862,42863],"42863":[42862,42863],"42873":[42873,42874],"42874":[42873,42874],"42875":[42875,42876],"42876":[42875,42876],"42877":[7545,42877],"42878":[42878,42879],"42879":[42878,42879],"42880":[42880,42881],"42881":[42880,42881],"42882":[42882,42883],"42883":[42882,42883],"42884":[42884,42885],"42885":[42884,42885],"42886":[42886,42887],"42887":[42886,42887],"42891":[42891,42892],"42892":[42891,42892],"42893":[613,42893],"42896":[42896,42897],"42897":[42896,42897],"42898":[42898,42899],"42899":[42898,42899],"42900":[42900,42948],"42902":[42902,42903],"42903":[42902,42903],"42904":[42904,42905],"42905":[42904,42905],"42906":[42906,42907],"42907":[42906,42907],"42908":[42908,42909],"42909":[42908,42909],"42910":[42910,42911],"42911":[42910,42911],"42912":[42912,42913],"42913":[42912,42913],"42914":[42914,42915],"42915":[42914,42915],"42916":[42916,42917],"42917":[42916,42917],"42918":[42918,42919],"42919":[42918,42919],"42920":[42920,42921],"42921":[42920,42921],"42922":[614,42922],"42923":[604,42923],"42924":[609,42924],"42925":[620,42925],"42926":[618,42926],"42928":[670,42928],"42929":[647,42929],"42930":[669,42930],"42931":[42931,43859],"42932":[42932,42933],"42933":[42932,42933],"42934":[42934,42935],"42935":[42934,42935],"42936":[42936,42937],"42937":[42936,42937],"42938":[42938,42939],"42939":[42938,42939],"42940":[42940,42941],"42941":[42940,42941],"42942":[42942,42943],"42943":[42942,42943],"42946":[42946,42947],"42947":[42946,42947],"42948":[42900,42948],"42949":[642,42949],"42950":[7566,42950],"42951":[42951,42952],"42952":[42951,42952],"42953":[42953,42954],"42954":[42953,42954],"42997":[42997,42998],"42998":[42997,42998],"43859":[42931,43859],"43888":[5024,43888],"43889":[5025,43889],"43890":[5026,43890],"43891":[5027,43891],"43892":[5028,43892],"43893":[5029,43893],"43894":[5030,43894],"43895":[5031,43895],"43896":[5032,43896],"43897":[5033,43897],"43898":[5034,43898],"43899":[5035,43899],"43900":[5036,43900],"43901":[5037,43901],"43902":[5038,43902],"43903":[5039,43903],"43904":[5040,43904],"43905":[5041,43905],"43906":[5042,43906],"43907":[5043,43907],"43908":[5044,43908],"43909":[5045,43909],"43910":[5046,43910],"43911":[5047,43911],"43912":[5048,43912],"43913":[5049,43913],"43914":[5050,43914],"43915":[5051,43915],"43916":[5052,43916],"43917":[5053,43917],"43918":[5054,43918],"43919":[5055,43919],"43920":[5056,43920],"43921":[5057,43921],"43922":[5058,43922],"43923":[5059,43923],"43924":[5060,43924],"43925":[5061,43925],"43926":[5062,43926],"43927":[5063,43927],"43928":[5064,43928],"43929":[5065,43929],"43930":[5066,43930],"43931":[5067,43931],"43932":[5068,43932],"43933":[5069,43933],"43934":[5070,43934],"43935":[5071,43935],"43936":[5072,43936],"43937":[5073,43937],"43938":[5074,43938],"43939":[5075,43939],"43940":[5076,43940],"43941":[5077,43941],"43942":[5078,43942],"43943":[5079,43943],"43944":[5080,43944],"43945":[5081,43945],"43946":[5082,43946],"43947":[5083,43947],"43948":[5084,43948],"43949":[5085,43949],"43950":[5086,43950],"43951":[5087,43951],"43952":[5088,43952],"43953":[5089,43953],"43954":[5090,43954],"43955":[5091,43955],"43956":[5092,43956],"43957":[5093,43957],"43958":[5094,43958],"43959":[5095,43959],"43960":[5096,43960],"43961":[5097,43961],"43962":[5098,43962],"43963":[5099,43963],"43964":[5100,43964],"43965":[5101,43965],"43966":[5102,43966],"43967":[5103,43967],"65313":[65313,65345],"65314":[65314,65346],"65315":[65315,65347],"65316":[65316,65348],"65317":[65317,65349],"65318":[65318,65350],"65319":[65319,65351],"65320":[65320,65352],"65321":[65321,65353],"65322":[65322,65354],"65323":[65323,65355],"65324":[65324,65356],"65325":[65325,65357],"65326":[65326,65358],"65327":[65327,65359],"65328":[65328,65360],"65329":[65329,65361],"65330":[65330,65362],"65331":[65331,65363],"65332":[65332,65364],"65333":[65333,65365],"65334":[65334,65366],"65335":[65335,65367],"65336":[65336,65368],"65337":[65337,65369],"65338":[65338,65370],"65345":[65313,65345],"65346":[65314,65346],"65347":[65315,65347],"65348":[65316,65348],"65349":[65317,65349],"65350":[65318,65350],"65351":[65319,65351],"65352":[65320,65352],"65353":[65321,65353],"65354":[65322,65354],"65355":[65323,65355],"65356":[65324,65356],"65357":[65325,65357],"65358":[65326,65358],"65359":[65327,65359],"65360":[65328,65360],"65361":[65329,65361],"65362":[65330,65362],"65363":[65331,65363],"65364":[65332,65364],"65365":[65333,65365],"65366":[65334,65366],"65367":[65335,65367],"65368":[65336,65368],"65369":[65337,65369],"65370":[65338,65370]}'),xl=i.empty(1114111).union(Zo).negate(),el=i.empty(65535).union(Zo).negate();function tl(m,n){const{unicode:a,ignoreCase:x,dotAll:e}=n,t=a?1114111:65535,r=a?Ko:il,s=a?Uo:al,o=s.ranges[0].min,l=s.ranges[s.ranges.length-1].max,c=[];let u=!1;function h(m){if(x&&!u){const n=r[m];if(n){for(let m=0,a=n.length;m=l||s.isDisjointWith(m)||(u=!0),c.push(m)):h(m.min)}function p(m,n){if(n)for(const n of rl(m,t))f(n);else m.forEach(f)}for(const n of m)if(V(n))h(n);else if("kind"in n)switch(n.kind){case"any":if(e)return i.all(t);c.push(...(a?xl:el).ranges);break;case"property":{if(!a)throw new Error("Unicode property escapes cannot be used without the u flag.");const{key:m,value:e,negate:o}=n,l=sl(m,e);if(x&&o){let m=i.empty(t).union(l);m=qo(m,r,s),c.push(...rl(m.ranges,t))}else p(l,o);break}case"digit":case"space":{const m="digit"===n.kind?$o:Vo;n.negate?c.push(...rl(m,t)):c.push(...m);break}case"word":{const m=a&&x?Yo:Xo;n.negate?c.push(...rl(m,t)):c.push(...m);break}default:throw P(n,"Invalid predefined character set type")}else f(n);const d=i.empty(t).union(c);return u?qo(d,r,s):d}function rl(m,n){return i.empty(n).union(m).negate().ranges}function sl(m,n){if(null==n){if(m in va){return Ci[va[m]]}if(m in Na){return sx[Na[m]]}throw new Error(`Unknown lone Unicode property name or value ${m}.`)}{if(!(m in _a))throw new Error(`Unknown Unicode property name ${m}.`);const a=_a[m];let i,x;if("General_Category"===a)i=Na,x=sx;else if("Script"===a)i=Ca,x=Yt;else{if("Script_Extensions"!==a)throw P(a);i=Ca,x=zo}if(!(n in i))throw new Error(`Unknown Unicode property value ${n} for the name ${m}.`);return x[i[n]]}}function ol(m,n,a){if(Array.isArray(m)){const i=m;return 0===i.length?"[]":i.map((m=>ol(m,n,a))).join("|")}{const i=m;if("Concatenation"===i.type){let m="";for(const x of i.elements)m+=ll(x,n,a);return m}return ol(i.alternatives,n,a)}}function ll(m,n,a){const x=n.unicode?1114111:65535;switch(m.type){case"Alternation":{const i=function(m,n){if(2!==m.alternatives.length)return!1;const a=m.alternatives[0],i=m.alternatives[1];if(2!==a.elements.length||2!==i.elements.length)return!1;const x=a.elements[0],e=a.elements[1],t=i.elements[0],r=i.elements[1];if("Assertion"!==x.type||"Assertion"!==e.type||"Assertion"!==t.type||"Assertion"!==r.type)return!1;if(x.kind===e.kind||t.kind===r.kind)return!1;const s=cl(x),o=cl(e),l=cl(t),c=cl(r);if(!(s&&o&&l&&c))return!1;const u=n.unicode&&n.ignoreCase?Yo:Xo;if(!(Tl(s.ranges,u)&&Tl(o.ranges,u)&&Tl(l.ranges,u)&&Tl(c.ranges,u)))return!1;if(x.negate===e.negate&&t.negate===r.negate&&x.negate!==t.negate)return"\\B";if(x.negate!==e.negate&&t.negate!==r.negate&&x.kind===t.kind!=(x.negate===t.negate))return"\\b";return!1}(m,n);return i||"(?:"+ol(m.alternatives,n,a)+")"}case"Assertion":{if(function(m,n){if(m.negate){const a=cl(m);if(a)return n.multiline&&vl(a,n.unicode)||!n.multiline&&a.isAll}return!1}(m,n))return"behind"===m.kind?"^":"$";let i="(?";return"behind"===m.kind&&(i+="<"),i+=m.negate?"!":"=",i+=ol(m.alternatives,n,a),i+=")",i}case"CharacterClass":if(m.characters.maximum!==x)throw new Error(`All characters were expected to have a maximum of ${x}.`);return a.fastCharacters?`[${Pl(m.characters)}]`:function(m,n,a){if(m.isAll)return n.dotAll?".":"[^]";if(m.isEmpty)return"[]";const x=m.ranges[0].min;if(1===m.ranges.length&&x===m.ranges[0].max)return Ll(x);if(n.ignoreCase){const a=function(m,n){const a=(n?Ko:il)[m];return a?i.empty(n?1114111:65535).union(a.map((m=>({min:m,max:m})))):null}(x,!!n.unicode);if(a&&a.equals(m))return Ll(x)}if(0!==x){if(Tl(m.ranges,a.digit.ranges))return"\\d";if(Tl(m.ranges,a.space.ranges))return"\\s";if(Tl(m.ranges,a.word.ranges))return"\\w"}else{if(Tl(m.ranges,a.notDigit.ranges))return"\\D";if(Tl(m.ranges,a.notSpace.ranges))return"\\S";if(Tl(m.ranges,a.notWord.ranges))return"\\W";if(!n.dotAll&&Tl(m.ranges,a.notLineTerminator.ranges))return"."}const e=Dl(m,n,a),t=Dl(m.negate(),n,a);return e.length<=t.length?`[${e}]`:`[^${t}]`}(m.characters,n,a.predefinedCS);case"Quantifier":{let i;if(1===m.alternatives.length&&1===m.alternatives[0].elements.length){const x=m.alternatives[0].elements[0];i="Alternation"===x.type||"CharacterClass"===x.type?ol(m.alternatives[0],n,a):"(?:"+ol(m.alternatives,n,a)+")"}else i="(?:"+ol(m.alternatives,n,a)+")";return 0===m.min&&m.max===1/0?i+="*":1===m.min&&m.max===1/0?i+="+":0===m.min&&1===m.max?i+="?":m.max===1/0?i+=`{${m.min},}`:m.min===m.max?i+=`{${m.min}}`:i+=`{${m.min},${m.max}}`,m.lazy&&(i+="?"),i}default:throw P(m)}}function cl(m){if(1===m.alternatives.length){const n=m.alternatives[0];if(1===n.elements.length){const m=n.elements[0];if("CharacterClass"===m.type)return m.characters}}}function ul(m,n){return n?qo(m,Ko,Uo):qo(m,il,al)}function hl(m,n){let a=!1,i=!1,x=!1,e=!1;for(const t of m)j(t,{onAssertionEnter(m){if(m.negate&&1===m.alternatives.length){const t=m.alternatives[0];if(1===t.elements.length){const r=t.elements[0];if("CharacterClass"===r.type){const t=r.characters;t.isAll?"ahead"===m.kind?i=!0:a=!0:vl(t,n)&&("ahead"===m.kind?e=!0:x=!0)}}}}});return!!x||!a&&(!!e||!i&&void 0)}function fl(m,n,a){var i,x,e;const t=null==n?void 0:n.flags,r=null!==(i=null==t?void 0:t.unicode)&&void 0!==i?i:function(m){try{for(const n of m)j(n,{onCharacterClassEnter(m){throw 1114111===m.characters.maximum||65535!==m.characters.maximum&&new Error("All character sets have to have a maximum of either 0xFFFF or 0x10FFFF.")}})}catch(m){if("boolean"==typeof m)return m;throw m}}(m),s=null==t?void 0:t.ignoreCase;let o;if(o=!(a&&!s)&&(null!==(x=function(m,n){let a=void 0;try{for(const i of m)j(i,{onCharacterClassEnter(m){const i=m.characters;if(!i.equals(ul(i,n)))throw a=!1,new Error}})}catch(m){}return a}(m,!!r))&&void 0!==x?x:s),(null!=s?s:o)!==o)throw new Error(`Incompatible flags: The i flag is ${o?"required":"forbidden"} to create a literal but ${s?"required":"forbidden"} by the options.`);return{dotAll:null==t?void 0:t.dotAll,global:null==t?void 0:t.global,ignoreCase:null==o||o,multiline:null!==(e=null==t?void 0:t.multiline)&&void 0!==e?e:hl(m,!!r),sticky:null==t?void 0:t.sticky,unicode:r}}const pl={digit:i.empty(65535).union($o),notDigit:i.empty(65535).union($o).negate(),space:i.empty(65535).union(Vo),notSpace:i.empty(65535).union(Vo).negate(),word:i.empty(65535).union(Xo),notWord:i.empty(65535).union(Xo).negate(),lineTerminator:i.empty(65535).union(Zo),notLineTerminator:i.empty(65535).union(Zo).negate()},dl={digit:i.empty(1114111).union($o),notDigit:i.empty(1114111).union($o).negate(),space:i.empty(1114111).union(Vo),notSpace:i.empty(1114111).union(Vo).negate(),word:i.empty(1114111).union(Xo),notWord:i.empty(1114111).union(Xo).negate(),lineTerminator:i.empty(1114111).union(Zo),notLineTerminator:i.empty(1114111).union(Zo).negate()},gl={digit:i.empty(1114111).union($o),notDigit:i.empty(1114111).union($o).negate(),space:i.empty(1114111).union(Vo),notSpace:i.empty(1114111).union(Vo).negate(),word:i.empty(1114111).union(Yo),notWord:i.empty(1114111).union(Yo).negate(),lineTerminator:i.empty(1114111).union(Zo),notLineTerminator:i.empty(1114111).union(Zo).negate()};function yl(m){return m.unicode?m.ignoreCase?gl:dl:pl}const Sl=i.empty(1114111).union(Zo).negate(),_l=i.empty(65535).union(Zo).negate();function vl(m,n){return n?m.equals(Sl):m.equals(_l)}const Nl=new Map([["\n".charCodeAt(0),"\\n"],["\f".charCodeAt(0),"\\f"],["\t".charCodeAt(0),"\\t"],["\r".charCodeAt(0),"\\r"]]);function Cl(m){return 0===m?"\\0":m<16?"\\x0"+m.toString(16):m<256?"\\x"+m.toString(16):m<4096?"\\u0"+m.toString(16):m<65536?"\\u"+m.toString(16):"\\u{"+m.toString(16)+"}"}const Ol=new Set([..."\\]-^"].map((m=>m.charCodeAt(0))));function kl(m){if(Ol.has(m))return"\\"+String.fromCharCode(m);const n=Nl.get(m);return n||(m>=32&&m<127?String.fromCharCode(m):Cl(m))}const wl=[{min:48,max:57},{min:65,max:90},{min:97,max:122}],Jl=Math.min(...wl.map((m=>m.min))),bl=Math.max(...wl.map((m=>m.max)));function Al(m){return Jl<=m.min&&m.max<=bl&&wl.some((({min:n,max:a})=>n<=m.min&&m.max<=a))?String.fromCharCode(m.min)+"-"+String.fromCharCode(m.max):Cl(m.min)+"-"+Cl(m.max)}function El(m){if(m.min===m.max)return kl(m.min);if(m.min===m.max-1)return kl(m.min)+kl(m.max);if(m.max-m.min+1<=6){let n="";for(let a=m.min;a<=m.max;a++)n+=kl(a);return Il(n,Al(m))}return Al(m)}const Ml=new Set([..."()[]{}*+?|\\.^$/"].map((m=>m.charCodeAt(0))));function Ll(m){if(Ml.has(m))return"\\"+String.fromCharCode(m);const n=Nl.get(m);return n||(m>=32&&m<127?String.fromCharCode(m):Cl(m))}function Tl(m,n){const a=m.length;if(a!==n.length)return!1;for(let i=0;i{let a=Pl(m);return n.ignoreCase&&(a=Il(a,function(m){const n=1114111===m.maximum;let a=i.empty(m.maximum),x="";for(const e of m.ranges)a.isSupersetOf(e)||(x+=El(e),a=a.union(ul(i.empty(m.maximum).union([e]),n)));return x}(m))),a},e=m=>{let n=m,i="";return n.isSupersetOf(a.space)&&(i+="\\s",n=n.without(a.space)),n.isSupersetOf(a.word)&&(i+="\\w",n=n.without(a.word)),n.isSupersetOf(a.digit)&&(i+="\\d",n=n.without(a.digit)),m===n||n.ranges.length>2*m.ranges.length+2?x(m):Il(x(m),i+x(n))},t=m=>{if(m.has(45)&&!m.has(46)){const n=m.without([{min:45,max:45}]);return Il(e(m),"-"+e(n))}return e(m)};return(m=>{if(m.ranges.length>1&&m.has(94)&&!m.has(93)){const n=m.without([{min:94,max:94}]);return Il(t(m),t(n)+"^")}return t(m)})(m)}function Rl(m,n){if(n(m))return!0;switch(m.type){case"Alternative":return m.elements.some((m=>Rl(m,n)));case"Assertion":return("lookahead"===m.kind||"lookbehind"===m.kind)&&m.alternatives.some((m=>Rl(m,n)));case"CapturingGroup":case"Group":case"Pattern":return m.alternatives.some((m=>Rl(m,n)));case"CharacterClass":return m.elements.some((m=>Rl(m,n)));case"CharacterClassRange":return Rl(m.min,n)||Rl(m.max,n);case"Quantifier":return Rl(m.element,n);case"RegExpLiteral":return Rl(m.pattern,n)||Rl(m.flags,n)}return!1}function Gl(m,n){let a=m.parent;for(;a;){if(n(a))return!0;a=a.parent}return!1}function Bl(m){let n=m.parent;for(;n;){if("Assertion"===n.type)return"lookahead"===n.kind?"ltr":"rtl";n=n.parent}return"ltr"}class Wl{constructor(m){this._charCache=new Map,this._simpleCharCache=new Map,this._backRefCanReachGroupCache=new Map,this._backRefAlwaysAfterGroupCache=new Map,this._constantResolveCache=new Map,this._groupReferencesCache=new Map,this.literal={source:m.pattern.raw,flags:m.flags.raw},this.ast=m,this.maxCharacter=this.ast.flags.unicode?1114111:65535,this._charSetToCharFn=function(m){if(m.ignoreCase){const n=m.unicode?Ko:il,a=m.unicode?1114111:65535,x=new Map;return function*(m){const e=new Set;for(const t of am(m)){if(e.has(t))continue;const m=n[t];if(m){for(const n of m)e.add(n);let n=x.get(m);void 0===n&&(n=i.empty(a).union(m.map((m=>({min:m,max:m})))),x.set(m,n)),yield n}else yield t}}}return am}(this.ast.flags)}static fromLiteral(n,a){const i=new m.RegExpParser(a),x=i.parseFlags(n.flags),e=i.parsePattern(n.source,void 0,void 0,x.unicode);return new Wl({pattern:e,flags:x})}static fromAst(m){return new Wl(m)}parse(m){return this.parseElement(this.ast.pattern,m)}parseElement(m,n){var a,i,x,e,t;const r={maxBackreferenceWords:Math.round(null!==(a=null==n?void 0:n.maxBackreferenceWords)&&void 0!==a?a:100),backreferences:null!==(i=null==n?void 0:n.backreferences)&&void 0!==i?i:"throw",assertions:null!==(x=null==n?void 0:n.assertions)&&void 0!==x?x:"parse",disableSimplification:null!==(e=null==n?void 0:n.disableOptimizations)&&void 0!==e&&e,nc:new Fl(null!==(t=null==n?void 0:n.maxNodes)&&void 0!==t?t:1e4),matchingDir:Bl(m),variableResolved:new Map},s=this._parseElement(m,r);return W(s,null),{expression:s,maxCharacter:this.maxCharacter}}_parseElement(m,n){const a={type:"Expression",alternatives:[],source:Hl(m)};return"Alternative"===m.type?this._addAlternatives([m],a,n):this._addAlternatives(m.alternatives,a,n),a}_addAlternatives(m,n,a){for(const i of m){const m=this._createConcatenation(i,a);1!==m&&(a.disableSimplification?n.alternatives.push(m):1===m.elements.length&&"Alternation"===m.elements[0].type?n.alternatives.push(...m.elements[0].alternatives):n.alternatives.push(m))}}_createConcatenation(m,n){const a="ltr"===n.matchingDir?m.elements:[...m.elements].reverse(),i=this._createElements(a,n);if(1===i)return 1;"rtl"===n.matchingDir&&i.reverse();const x=n.nc.newConcat(m);return this._setConcatenationElements(x,i,n),x}_setConcatenationElements(m,n,a){if(a.disableSimplification)m.elements=n;else{m.elements.length>0&&(m.elements=[]);for(const a of n)"Alternation"===a.type&&1===a.alternatives.length?m.elements.push(...a.alternatives[0].elements):m.elements.push(a)}}_createElements(m,n){const a=[];let i=void 0;for(let x=0;x0)try{const r=this._variableResolveGroup(e,t,m.slice(x+1),n);i=!0,a.push(r.resolved),x+=r.skip}catch(m){}i||a.push(t)}}if(void 0!==i)throw i;return a}_variableResolveGroup(m,n,a,i){if(0===this._getResolvableGroupReferencesUnder(m,m.parent).length)throw new Error("No backreferences that resolve this capturing group");const x=Vl(ql(n,this._charSetToCharFn),i.maxBackreferenceWords);if(0===x.length)throw new Error("Cannot resolve dead capturing group");const e=[...a];this._trimAffectedSlice(m,e);const t=[];for(const n of x){const a=this._createElements(e,Ql(i,m,n));if(1===a)continue;const x=[],r=this._wordToElement(m,n,i);2!==r&&x.push(r),x.push(...a),"rtl"===i.matchingDir&&x.reverse();const s=i.nc.newConcat(m);this._setConcatenationElements(s,x,i),t.push(s)}const r=i.nc.newAlt(m);return r.alternatives=t,{resolved:r,skip:e.length}}_trimAffectedSlice(m,n){const a=this._affectedSliceLength(m,n);n.length>a&&n.splice(a,n.length-a)}_affectedSliceLength(m,n){const a=function(m){for(let a=n.length-1;a>=0;a--)if(m.has(n[a]))return a;throw-1}(new Set(this._getResolvableGroupReferencesUnder(m,m.parent).map((function(n){let a=n;for(;a;){if(a.parent===m.parent)return a;a=a.parent}throw new Error})))),i=[a];for(let m=0;m<=a;m++){const a=n[m];"CapturingGroup"===a.type&&i.push(m+1+this._affectedSliceLength(a,n.slice(m+1)))}return Math.max(...i)+1}_createElement(m,n){switch(m.type){case"Assertion":return this._createAssertion(m,n);case"CapturingGroup":case"Group":return this._createGroup(m,n);case"Character":case"CharacterClass":case"CharacterSet":return this._createCharacterClass(m,n);case"Quantifier":return this._createQuantifier(m,n);case"Backreference":return this._createBackreference(m,n);default:throw P(m,"Unsupported element")}}_createAssertion(m,n){if("throw"===n.assertions)throw new Error("Assertions are not supported.");if("disable"===n.assertions)return n.disableSimplification?this._createEmptyCharacterClass(m,n):1;switch(m.kind){case"lookahead":case"lookbehind":{const a=n.nc.newAssertion(m,"lookahead"===m.kind?"ahead":"behind",m.negate),i="lookahead"===m.kind?"ltr":"rtl";if(this._addAlternatives(m.alternatives,a,i===n.matchingDir?n:Object.assign(Object.assign({},n),{matchingDir:i})),!n.disableSimplification){let m=2;if(0===a.alternatives.length?m=a.negate?1:0:Sm(a.alternatives)&&(m=a.negate?0:1),1===m)return 2;if(0===m)return 1}return a}case"end":case"start":case"word":{const n=ml(m,this.ast.flags);return Q(n,Hl(m)),n}default:throw P(m,"Unsupported element")}}_createCharacterClass(m,n){let a,i;i="Character"===m.type||"CharacterSet"===m.type?jl([m]):jl(m.elements,m.negate);const x=this._charCache.get(i);return void 0!==x?a=x:("Character"===m.type?a=tl([m.value],this.ast.flags):"CharacterSet"===m.type?a=tl([m],this.ast.flags):(a=tl(m.elements.map((m=>{switch(m.type){case"Character":return m.value;case"CharacterClassRange":return{min:m.min.value,max:m.max.value};case"CharacterSet":return m;default:throw P(m,"Unsupported element")}})),this.ast.flags),m.negate&&(a=a.negate())),this._charCache.set(i,a)),!n.disableSimplification&&a.isEmpty?1:n.nc.newCharClass(m,a)}_createGroup(m,n){const a=n.nc.newAlt(m);if(this._addAlternatives(m.alternatives,a,n),!n.disableSimplification){if(0===a.alternatives.length)return 1;if(1===a.alternatives.length&&0===a.alternatives[0].elements.length)return 2}return a}_createQuantifier(m,n){const a=m.min,i=m.max;if(!n.disableSimplification){if(0===i)return 2;if(1===a&&1===i)return this._createElement(m.element,n)}const x=n.nc.newQuant(m,a,i,!m.greedy),e=m.element;if("CapturingGroup"===e.type||"Group"===e.type)this._addAlternatives(e.alternatives,x,n);else{const m=this._createElement(e,n);if(1!==m){const a=n.nc.newConcat(e);x.alternatives.push(a),2!==m&&a.elements.push(m)}}if(!n.disableSimplification){if(0===x.alternatives.length)return 0===a?2:1;if(1===x.alternatives.length&&0===x.alternatives[0].elements.length)return 2}return x}_createEmptyCharacterClass(m,n){return n.nc.newCharClass(m,i.empty(this.maxCharacter))}_createBackreference(m,n){var a;if(n.maxBackreferenceWords>0){if(!this._backRefCanReachGroup(m))return 2;const i=m.resolved,x=null!==(a=n.variableResolved.get(i))&&void 0!==a?a:this._constantResolveGroup(i,n);if(null!==x){if(0===x.length)return 2;if(this._backRefAlwaysAfterGroup(m))return this._wordToElement(m,x,n)}}if("throw"===n.backreferences)throw new Error("Backreferences are not supported.");return n.disableSimplification?this._createEmptyCharacterClass(m,n):1}_constantResolveGroup(m,n){const a=this._constantResolveCache.get(m);if(void 0!==a)return a;const i=this._parseElement(m,Object.assign(Object.assign({},n),{backreferences:"throw",disableSimplification:!1}));zl(i),Ul(i);let x=void 0;try{x=Vl(ql(i,this._charSetToCharFn),1)}catch(m){}let e=null;if(x)if(0===x.length)e=[];else{if(1!==x.length)throw new Error("More than one words were returned.");e=x[0]}return this._constantResolveCache.set(m,e),e}_backRefCanReachGroup(m){let n=this._backRefCanReachGroupCache.get(m);return void 0===n&&(n=function(m){const n=m.resolved;return!Gl(m,(m=>m===n))&&function n(a){const i=a.parent;switch(i.type){case"Alternative":{const x=i.elements.indexOf(a);let e;if(e="ltr"===Bl(a)?i.elements.slice(x+1):i.elements.slice(0,x),e.some((n=>Rl(n,(n=>n===m)))))return!0;const t=i.parent;return"Pattern"!==t.type&&n(t)}case"Quantifier":return n(i);default:throw new Error("What happened?")}}(n)}(m),this._backRefCanReachGroupCache.set(m,n)),n}_backRefAlwaysAfterGroup(m){let n=this._backRefAlwaysAfterGroupCache.get(m);return void 0===n&&(n=function(m){const n=m.resolved;return!Gl(m,(m=>m===n))&&function n(a){const i=a.parent;switch(i.type){case"Alternative":{const x=i.elements.indexOf(a);let e;if(e="ltr"===Bl(a)?i.elements.slice(x+1):i.elements.slice(0,x),e.some((n=>Rl(n,(n=>n===m)))))return!0;const t=i.parent;return"Pattern"!==t.type&&!(t.alternatives.length>1)&&n(t)}case"Quantifier":return 0!==i.min&&n(i);default:throw new Error("What happened?")}}(n)}(m),this._backRefAlwaysAfterGroupCache.set(m,n)),n}_wordToElement(m,n,a){if(0===n.length)return 2;if(1===n.length){const x=n[0],e=x instanceof i?x:this._charToCharSet(x);return a.nc.newCharClass(m,e)}{const x=a.nc.newConcat(m);for(const e of n){const n=e instanceof i?e:this._charToCharSet(e);x.elements.push(a.nc.newCharClass(m,n))}const e=a.nc.newAlt(m);return e.alternatives.push(x),e}}_charToCharSet(m){let n=this._simpleCharCache.get(m);return void 0===n&&(n=i.empty(this.maxCharacter).union([{min:m,max:m}]),this._simpleCharCache.set(m,n)),n}_getGroupReferences(n){if(0===this._groupReferencesCache.size){const n=m=>{let n=this._groupReferencesCache.get(m);return void 0===n&&(n=[],this._groupReferencesCache.set(m,n)),n};m.visitRegExpAST(this.ast.pattern,{onBackreferenceEnter(m){n(m.resolved).push(m)},onCapturingGroupEnter(m){n(m)}})}const a=this._groupReferencesCache.get(n);if(!a)throw new Error("Unknown capturing group. The capturing group is not part of the AST of this parser.");return a}_getResolvableGroupReferences(m){return this._getGroupReferences(m).filter((m=>this._backRefCanReachGroup(m)&&this._backRefAlwaysAfterGroup(m)))}_getResolvableGroupReferencesUnder(m,n){return this._getResolvableGroupReferences(m).filter((m=>Gl(m,(m=>m===n))))}}class Fl{constructor(m){this._nodeCounter=0,this._nodeLimit=m}_checkLimit(){if(++this._nodeCounter>this._nodeLimit)throw new C(`The parser is not allowed to create more than ${this._nodeLimit} nodes.`)}newAlt(m){return this._checkLimit(),{type:"Alternation",alternatives:[],source:Hl(m)}}newAssertion(m,n,a){return this._checkLimit(),{type:"Assertion",alternatives:[],kind:n,negate:a,source:Hl(m)}}newCharClass(m,n){return this._checkLimit(),{type:"CharacterClass",characters:n,source:Hl(m)}}newConcat(m){return this._checkLimit(),{type:"Concatenation",elements:[],source:Hl(m)}}newQuant(m,n,a,i){return this._checkLimit(),{type:"Quantifier",alternatives:[],lazy:i,min:n,max:a,source:Hl(m)}}}function Ql(m,n,a){const i=new Map(m.variableResolved);return i.set(n,a),Object.assign(Object.assign({},m),{variableResolved:i})}function Hl(m){return{start:m.start,end:m.end}}function jl(m,n){let a=n?"^":"";for(const n of m)switch(n.type){case"Character":a+="\\"+n.value.toString(16);break;case"CharacterClassRange":a+="\\"+n.min.value.toString(16)+"-\\"+n.max.value.toString(16);break;case"CharacterSet":a+=n.raw;break;default:throw P(n)}return a}function zl(m){for(const n of m.alternatives)for(;n.elements.length>0;){const m=n.elements[0];if("Assertion"!==m.type||"behind"!==m.kind){if("Alternation"!==m.type&&"Quantifier"!==m.type||(zl(m),1!==m.alternatives.length||0!==m.alternatives[0].elements.length))break;n.elements.splice(0,1)}else n.elements.splice(0,1)}Kl(m)}function Ul(m){for(const n of m.alternatives)for(;n.elements.length>0;){const m=n.elements[n.elements.length-1];if("Assertion"!==m.type||"ahead"!==m.kind){if("Alternation"!==m.type&&"Quantifier"!==m.type||(Ul(m),1!==m.alternatives.length||0!==m.alternatives[0].elements.length))break;n.elements.pop()}else n.elements.pop()}Kl(m)}function Kl(m){let n=!1;m.alternatives=m.alternatives.filter((m=>0!==m.elements.length||!n&&(n=!0,!0)))}function ql(m,n){return function*(m,n){for(const a of m)yield*R(a.map(n))}($l(m),n)}function $l(m){switch(m.type){case"Alternation":case"Expression":return I(m.alternatives.map($l));case"Assertion":throw new Error;case"CharacterClass":return m.characters.isEmpty?[]:[[m.characters]];case"Concatenation":return D(m.elements.map($l));case"Quantifier":{if(m.max===1/0)throw new Error;let n;return n=m.lazy?function*(){for(let n=m.min;n<=m.max;n++)yield n}():function*(){for(let n=m.max;n>=m.min;n--)yield n}(),function*(m,n,a){n=G.from(n);for(const i of m){const m=[];for(let a=0;an)throw new Error("Too many items.");return a}var Xl=Object.freeze({__proto__:null,createAssertion:ml,createCharSet:tl,toLiteral:function(m,n){var a;const i=null!==(a=null==n?void 0:n.fastCharacters)&&void 0!==a&&a;let x;if(Array.isArray(m)){x=fl(m,n,i)}else{x=fl([m],n,i)}let e="";return x.global&&(e+="g"),x.ignoreCase&&(e+="i"),x.multiline&&(e+="m"),x.dotAll&&(e+="s"),x.unicode&&(e+="u"),x.sticky&&(e+="y"),{source:ol(m,x,{fastCharacters:i,predefinedCS:yl(x)}),flags:e}},Parser:Wl});const Zl=[{min:65,max:90},{min:97,max:122},{min:48,max:57},{min:45,max:45},{min:95,max:95},{min:32,max:32},{min:32,max:126},{min:9,max:9},{min:10,max:10},{min:13,max:13}];function Yl(m){if(0!==m.ranges.length){if(1===m.ranges.length){const{min:n,max:a}=m.ranges[0];if(n===a)return n}for(const n of Zl){const a=m.commonCharacter(n);if(void 0!==a)return a}return m.ranges[0].min}}var mc=Object.freeze({__proto__:null,fromUTF16ToString:function(m){return String.fromCharCode(...m)},fromUnicodeToString:function(m){return String.fromCodePoint(...m)},fromStringToUTF16:function(m){const n=[];for(let a=0,i=m.length;a=55296&&x<56320&&a+1=56320&&i<57344){n.push(65536+(x-55296<<10)+(i-56320)),a++;continue}}n.push(x)}return n},wordSetToWords:function(m){return nm(m)},pickMostReadableCharacter:Yl,pickMostReadableWord:function(m){const n=[];for(const a of m){const m=Yl(a);if(void 0===m)return;n.push(m)}return n}});exports.CharMap=s,exports.CharSet=i,exports.DFA=da,exports.JS=Xl,exports.NFA=na,exports.TooManyNodesError=C,exports.Transformers=Qn,exports.Words=mc,exports.combineTransformers=U,exports.setParent=W,exports.setSource=Q,exports.transform=K,exports.visitAst=j; diff --git a/node_modules/refa/package.json b/node_modules/refa/package.json deleted file mode 100644 index 60ca685..0000000 --- a/node_modules/refa/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "refa", - "version": "0.7.1", - "description": "A library for finite automata and regular expressions in the context of JS RegExp", - "main": "index", - "scripts": { - "check": "npm run lint && npm run check:dependencies && npx tsc --noEmit && cd tests && npx tsc --noEmit && cd ../scripts && npx tsc --noEmit", - "check:dependencies": "npx depcruise --validate .dependency-cruiser.js src", - "lint": "npx eslint --ignore-path .gitignore **/*.ts", - "test": "cd tests && mocha -r ts-node/register '**/*.ts'", - "test:fast": "cd tests && mocha -r ts-node/register '**/*.ts' --exclude regex-stress-test.ts", - "build": "npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts", - "build:dts": "dts-bundle --main ./.out/index.d.ts --name refa --out ../index.d.ts && npm run scripts:flat-dts && prettier --write ./index.d.ts", - "build:docs": "typedoc", - "coverage": "npx nyc --reporter=html --reporter=text npm run test", - "scripts:create-case-folding": "npx ts-node --project scripts/tsconfig.json scripts/create-case-folding.ts", - "scripts:create-unicode": "npx ts-node --project scripts/tsconfig.json scripts/create-unicode.ts", - "scripts:debug": "npx ts-node --project scripts/tsconfig.json scripts/debug.ts", - "scripts:flat-dts": "npx ts-node --project scripts/tsconfig.json scripts/flat-dts.ts", - "scripts:perf": "npx ts-node --project scripts/tsconfig.json scripts/perf.ts", - "prepublishOnly": "npm run build" - }, - "keywords": [ - "dfa", - "nfa", - "regex", - "regexp", - "regular", - "expression" - ], - "author": "Michael Schmidt", - "homepage": "https://github.com/RunDevelopment/refa#readme", - "repository": { - "type": "git", - "url": "https://github.com/RunDevelopment/refa.git" - }, - "license": "MIT", - "devDependencies": { - "@rollup/plugin-node-resolve": "^9.0.0", - "@types/chai": "^4.2.14", - "@types/mocha": "^7.0.2", - "@types/node": "^12.19.16", - "@typescript-eslint/eslint-plugin": "^4.14.2", - "@typescript-eslint/parser": "^4.14.2", - "chai": "^4.3.0", - "dependency-cruiser": "^9.22.1", - "dts-bundle": "^0.7.3", - "eslint": "^7.19.0", - "eslint-config-prettier": "^6.15.0", - "eslint-plugin-prettier": "^3.3.1", - "mocha": "^7.2.0", - "nyc": "^15.1.0", - "prettier": "^2.2.1", - "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-terser": "^7.0.2", - "ts-node": "^8.10.2", - "typedoc": "^0.20.25", - "typescript": "^4.1.3", - "unicode-13.0.0": "^0.8.0" - }, - "dependencies": { - "regexpp": "^3.1.0" - }, - "files": [ - "index.js", - "index.mjs", - "index.d.ts" - ] -} diff --git a/node_modules/regexpp/LICENSE b/node_modules/regexpp/LICENSE deleted file mode 100644 index 883ee1f..0000000 --- a/node_modules/regexpp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Toru Nagashima - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/regexpp/README.md b/node_modules/regexpp/README.md deleted file mode 100644 index a5e2e14..0000000 --- a/node_modules/regexpp/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# regexpp - -[![npm version](https://img.shields.io/npm/v/regexpp.svg)](https://www.npmjs.com/package/regexpp) -[![Downloads/month](https://img.shields.io/npm/dm/regexpp.svg)](http://www.npmtrends.com/regexpp) -[![Build Status](https://github.com/mysticatea/regexpp/workflows/CI/badge.svg)](https://github.com/mysticatea/regexpp/actions) -[![codecov](https://codecov.io/gh/mysticatea/regexpp/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/regexpp) -[![Dependency Status](https://david-dm.org/mysticatea/regexpp.svg)](https://david-dm.org/mysticatea/regexpp) - -A regular expression parser for ECMAScript. - -## 💿 Installation - -```bash -$ npm install regexpp -``` - -- require Node.js 8 or newer. - -## 📖 Usage - -```ts -import { - AST, - RegExpParser, - RegExpValidator, - RegExpVisitor, - parseRegExpLiteral, - validateRegExpLiteral, - visitRegExpAST -} from "regexpp" -``` - -### parseRegExpLiteral(source, options?) - -Parse a given regular expression literal then make AST object. - -This is equivalent to `new RegExpParser(options).parseLiteral(source)`. - -- **Parameters:** - - `source` (`string | RegExp`) The source code to parse. - - `options?` ([`RegExpParser.Options`]) The options to parse. -- **Return:** - - The AST of the regular expression. - -### validateRegExpLiteral(source, options?) - -Validate a given regular expression literal. - -This is equivalent to `new RegExpValidator(options).validateLiteral(source)`. - -- **Parameters:** - - `source` (`string`) The source code to validate. - - `options?` ([`RegExpValidator.Options`]) The options to validate. - -### visitRegExpAST(ast, handlers) - -Visit each node of a given AST. - -This is equivalent to `new RegExpVisitor(handlers).visit(ast)`. - -- **Parameters:** - - `ast` ([`AST.Node`]) The AST to visit. - - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. - -### RegExpParser - -#### new RegExpParser(options?) - -- **Parameters:** - - `options?` ([`RegExpParser.Options`]) The options to parse. - -#### parser.parseLiteral(source, start?, end?) - -Parse a regular expression literal. - -- **Parameters:** - - `source` (`string`) The source code to parse. E.g. `"/abc/g"`. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. -- **Return:** - - The AST of the regular expression. - -#### parser.parsePattern(source, start?, end?, uFlag?) - -Parse a regular expression pattern. - -- **Parameters:** - - `source` (`string`) The source code to parse. E.g. `"abc"`. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. - - `uFlag?` (`boolean`) The flag to enable Unicode mode. -- **Return:** - - The AST of the regular expression pattern. - -#### parser.parseFlags(source, start?, end?) - -Parse a regular expression flags. - -- **Parameters:** - - `source` (`string`) The source code to parse. E.g. `"gim"`. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. -- **Return:** - - The AST of the regular expression flags. - -### RegExpValidator - -#### new RegExpValidator(options) - -- **Parameters:** - - `options` ([`RegExpValidator.Options`]) The options to validate. - -#### validator.validateLiteral(source, start, end) - -Validate a regular expression literal. - -- **Parameters:** - - `source` (`string`) The source code to validate. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. - -#### validator.validatePattern(source, start, end, uFlag) - -Validate a regular expression pattern. - -- **Parameters:** - - `source` (`string`) The source code to validate. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. - - `uFlag?` (`boolean`) The flag to enable Unicode mode. - -#### validator.validateFlags(source, start, end) - -Validate a regular expression flags. - -- **Parameters:** - - `source` (`string`) The source code to validate. - - `start?` (`number`) The start index in the source code. Default is `0`. - - `end?` (`number`) The end index in the source code. Default is `source.length`. - -### RegExpVisitor - -#### new RegExpVisitor(handlers) - -- **Parameters:** - - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. - -#### visitor.visit(ast) - -Validate a regular expression literal. - -- **Parameters:** - - `ast` ([`AST.Node`]) The AST to visit. - -## 📰 Changelog - -- [GitHub Releases](https://github.com/mysticatea/regexpp/releases) - -## 🍻 Contributing - -Welcome contributing! - -Please use GitHub's Issues/PRs. - -### Development Tools - -- `npm test` runs tests and measures coverage. -- `npm run build` compiles TypeScript source code to `index.js`, `index.js.map`, and `index.d.ts`. -- `npm run clean` removes the temporary files which are created by `npm test` and `npm run build`. -- `npm run lint` runs ESLint. -- `npm run update:test` updates test fixtures. -- `npm run update:ids` updates `src/unicode/ids.ts`. -- `npm run watch` runs tests with `--watch` option. - -[`AST.Node`]: src/ast.ts#L4 -[`RegExpParser.Options`]: src/parser.ts#L539 -[`RegExpValidator.Options`]: src/validator.ts#L127 -[`RegExpVisitor.Handlers`]: src/visitor.ts#L204 diff --git a/node_modules/regexpp/index.d.ts b/node_modules/regexpp/index.d.ts deleted file mode 100644 index aa48029..0000000 --- a/node_modules/regexpp/index.d.ts +++ /dev/null @@ -1,248 +0,0 @@ -// Generated by dts-bundle v0.7.3 - -declare module 'regexpp' { - import * as AST from "regexpp/ast"; - import { RegExpParser } from "regexpp/parser"; - import { RegExpValidator } from "regexpp/validator"; - import { RegExpVisitor } from "regexpp/visitor"; - export { AST, RegExpParser, RegExpValidator }; - export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral; - export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void; - export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void; -} - -declare module 'regexpp/ast' { - export type Node = BranchNode | LeafNode; - export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange; - export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags; - export type Element = Assertion | Quantifier | QuantifiableElement; - export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion; - export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange; - export interface NodeBase { - type: Node["type"]; - parent: Node["parent"]; - start: number; - end: number; - raw: string; - } - export interface RegExpLiteral extends NodeBase { - type: "RegExpLiteral"; - parent: null; - pattern: Pattern; - flags: Flags; - } - export interface Pattern extends NodeBase { - type: "Pattern"; - parent: RegExpLiteral | null; - alternatives: Alternative[]; - } - export interface Alternative extends NodeBase { - type: "Alternative"; - parent: Pattern | Group | CapturingGroup | LookaroundAssertion; - elements: Element[]; - } - export interface Group extends NodeBase { - type: "Group"; - parent: Alternative | Quantifier; - alternatives: Alternative[]; - } - export interface CapturingGroup extends NodeBase { - type: "CapturingGroup"; - parent: Alternative | Quantifier; - name: string | null; - alternatives: Alternative[]; - references: Backreference[]; - } - export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion; - export interface LookaheadAssertion extends NodeBase { - type: "Assertion"; - parent: Alternative | Quantifier; - kind: "lookahead"; - negate: boolean; - alternatives: Alternative[]; - } - export interface LookbehindAssertion extends NodeBase { - type: "Assertion"; - parent: Alternative; - kind: "lookbehind"; - negate: boolean; - alternatives: Alternative[]; - } - export interface Quantifier extends NodeBase { - type: "Quantifier"; - parent: Alternative; - min: number; - max: number; - greedy: boolean; - element: QuantifiableElement; - } - export interface CharacterClass extends NodeBase { - type: "CharacterClass"; - parent: Alternative | Quantifier; - negate: boolean; - elements: CharacterClassElement[]; - } - export interface CharacterClassRange extends NodeBase { - type: "CharacterClassRange"; - parent: CharacterClass; - min: Character; - max: Character; - } - export type Assertion = BoundaryAssertion | LookaroundAssertion; - export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion; - export interface EdgeAssertion extends NodeBase { - type: "Assertion"; - parent: Alternative | Quantifier; - kind: "start" | "end"; - } - export interface WordBoundaryAssertion extends NodeBase { - type: "Assertion"; - parent: Alternative | Quantifier; - kind: "word"; - negate: boolean; - } - export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet; - export interface AnyCharacterSet extends NodeBase { - type: "CharacterSet"; - parent: Alternative | Quantifier; - kind: "any"; - } - export interface EscapeCharacterSet extends NodeBase { - type: "CharacterSet"; - parent: Alternative | Quantifier | CharacterClass; - kind: "digit" | "space" | "word"; - negate: boolean; - } - export interface UnicodePropertyCharacterSet extends NodeBase { - type: "CharacterSet"; - parent: Alternative | Quantifier | CharacterClass; - kind: "property"; - key: string; - value: string | null; - negate: boolean; - } - export interface Character extends NodeBase { - type: "Character"; - parent: Alternative | Quantifier | CharacterClass | CharacterClassRange; - value: number; - } - export interface Backreference extends NodeBase { - type: "Backreference"; - parent: Alternative | Quantifier; - ref: number | string; - resolved: CapturingGroup; - } - export interface Flags extends NodeBase { - type: "Flags"; - parent: RegExpLiteral | null; - dotAll: boolean; - global: boolean; - hasIndices: boolean; - ignoreCase: boolean; - multiline: boolean; - sticky: boolean; - unicode: boolean; - } -} - -declare module 'regexpp/parser' { - import { Flags, RegExpLiteral, Pattern } from "regexpp/ast"; - import { EcmaVersion } from "regexpp/ecma-versions"; - export namespace RegExpParser { - interface Options { - strict?: boolean; - ecmaVersion?: EcmaVersion; - } - } - export class RegExpParser { - constructor(options?: RegExpParser.Options); - parseLiteral(source: string, start?: number, end?: number): RegExpLiteral; - parseFlags(source: string, start?: number, end?: number): Flags; - parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern; - } -} - -declare module 'regexpp/validator' { - import { EcmaVersion } from "regexpp/ecma-versions"; - export namespace RegExpValidator { - interface Options { - strict?: boolean; - ecmaVersion?: EcmaVersion; - onLiteralEnter?(start: number): void; - onLiteralLeave?(start: number, end: number): void; - onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void; - onPatternEnter?(start: number): void; - onPatternLeave?(start: number, end: number): void; - onDisjunctionEnter?(start: number): void; - onDisjunctionLeave?(start: number, end: number): void; - onAlternativeEnter?(start: number, index: number): void; - onAlternativeLeave?(start: number, end: number, index: number): void; - onGroupEnter?(start: number): void; - onGroupLeave?(start: number, end: number): void; - onCapturingGroupEnter?(start: number, name: string | null): void; - onCapturingGroupLeave?(start: number, end: number, name: string | null): void; - onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void; - onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void; - onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void; - onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void; - onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void; - onAnyCharacterSet?(start: number, end: number, kind: "any"): void; - onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void; - onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void; - onCharacter?(start: number, end: number, value: number): void; - onBackreference?(start: number, end: number, ref: number | string): void; - onCharacterClassEnter?(start: number, negate: boolean): void; - onCharacterClassLeave?(start: number, end: number, negate: boolean): void; - onCharacterClassRange?(start: number, end: number, min: number, max: number): void; - } - } - export class RegExpValidator { - constructor(options?: RegExpValidator.Options); - validateLiteral(source: string, start?: number, end?: number): void; - validateFlags(source: string, start?: number, end?: number): void; - validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void; - } -} - -declare module 'regexpp/visitor' { - import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast"; - export class RegExpVisitor { - constructor(handlers: RegExpVisitor.Handlers); - visit(node: Node): void; - } - export namespace RegExpVisitor { - interface Handlers { - onAlternativeEnter?(node: Alternative): void; - onAlternativeLeave?(node: Alternative): void; - onAssertionEnter?(node: Assertion): void; - onAssertionLeave?(node: Assertion): void; - onBackreferenceEnter?(node: Backreference): void; - onBackreferenceLeave?(node: Backreference): void; - onCapturingGroupEnter?(node: CapturingGroup): void; - onCapturingGroupLeave?(node: CapturingGroup): void; - onCharacterEnter?(node: Character): void; - onCharacterLeave?(node: Character): void; - onCharacterClassEnter?(node: CharacterClass): void; - onCharacterClassLeave?(node: CharacterClass): void; - onCharacterClassRangeEnter?(node: CharacterClassRange): void; - onCharacterClassRangeLeave?(node: CharacterClassRange): void; - onCharacterSetEnter?(node: CharacterSet): void; - onCharacterSetLeave?(node: CharacterSet): void; - onFlagsEnter?(node: Flags): void; - onFlagsLeave?(node: Flags): void; - onGroupEnter?(node: Group): void; - onGroupLeave?(node: Group): void; - onPatternEnter?(node: Pattern): void; - onPatternLeave?(node: Pattern): void; - onQuantifierEnter?(node: Quantifier): void; - onQuantifierLeave?(node: Quantifier): void; - onRegExpLiteralEnter?(node: RegExpLiteral): void; - onRegExpLiteralLeave?(node: RegExpLiteral): void; - } - } -} - -declare module 'regexpp/ecma-versions' { - export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022; -} - diff --git a/node_modules/regexpp/index.js b/node_modules/regexpp/index.js deleted file mode 100644 index cd0e165..0000000 --- a/node_modules/regexpp/index.js +++ /dev/null @@ -1,2096 +0,0 @@ -/*! @author Toru Nagashima */ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - - - -var ast = /*#__PURE__*/Object.freeze({ - -}); - -let largeIdStartRanges = undefined; -let largeIdContinueRanges = undefined; -function isIdStart(cp) { - if (cp < 0x41) - return false; - if (cp < 0x5b) - return true; - if (cp < 0x61) - return false; - if (cp < 0x7b) - return true; - return isLargeIdStart(cp); -} -function isIdContinue(cp) { - if (cp < 0x30) - return false; - if (cp < 0x3a) - return true; - if (cp < 0x41) - return false; - if (cp < 0x5b) - return true; - if (cp === 0x5f) - return true; - if (cp < 0x61) - return false; - if (cp < 0x7b) - return true; - return isLargeIdStart(cp) || isLargeIdContinue(cp); -} -function isLargeIdStart(cp) { - return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges())); -} -function isLargeIdContinue(cp) { - return isInRange(cp, largeIdContinueRanges || - (largeIdContinueRanges = initLargeIdContinueRanges())); -} -function initLargeIdStartRanges() { - return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 1i k 2 h 1p 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 6 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 x 0 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 c 2 3 f h f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 6 1k t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 1a 2 1a 2 3o 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t g70 4 wc 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1g 3 8 17 c 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f 4d 8m a l b 7 49 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 2z k s m d 1g 24 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o 2d 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 6e 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 z 1k 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i 5a 0 28 pl 2v 32 i 5f 24d tq 34i g6 6nu fs 8 u 36 t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6wo 7y 1e 2 i 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1th 18 b 6 h 0 aa 17 105 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyl z 378 c 65 3 4g1 f 5rk 2e8 f1 15v 3t6"); -} -function initLargeIdContinueRanges() { - return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 3c e 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1m 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 h 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 5 3 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 2 u 2 u 1 v 1 1t v a 0 3 9 y 2 3 9 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 1 1s 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1l 2 4 g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 4a a 4w 2 1i e w 9 g 3 1a a 1i 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 4h b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 ewa 9 3r 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 43r 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 7a 6 a 9 bn d 15j 6 32 6 6 9 3o7 9 gvt3 6n"); -} -function isInRange(cp, ranges) { - let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; - while (l < r) { - i = ((l + r) / 2) | 0; - min = ranges[2 * i]; - max = ranges[2 * i + 1]; - if (cp < min) { - r = i; - } - else if (cp > max) { - l = i + 1; - } - else { - return true; - } - } - return false; -} -function restoreRanges(data) { - let last = 0; - return data.split(" ").map(s => (last += parseInt(s, 36) | 0)); -} - -class DataSet { - constructor(raw2018, raw2019, raw2020, raw2021) { - this._raw2018 = raw2018; - this._raw2019 = raw2019; - this._raw2020 = raw2020; - this._raw2021 = raw2021; - } - get es2018() { - return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); - } - get es2019() { - return (this._set2019 || (this._set2019 = new Set(this._raw2019.split(" ")))); - } - get es2020() { - return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); - } - get es2021() { - return (this._set2021 || (this._set2021 = new Set(this._raw2021.split(" ")))); - } -} -const gcNameSet = new Set(["General_Category", "gc"]); -const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); -const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", ""); -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"); -const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict"); -function isValidUnicodeProperty(version, name, value) { - if (gcNameSet.has(name)) { - return version >= 2018 && gcValueSets.es2018.has(value); - } - if (scNameSet.has(name)) { - return ((version >= 2018 && scValueSets.es2018.has(value)) || - (version >= 2019 && scValueSets.es2019.has(value)) || - (version >= 2020 && scValueSets.es2020.has(value)) || - (version >= 2021 && scValueSets.es2021.has(value))); - } - return false; -} -function isValidLoneUnicodeProperty(version, value) { - return ((version >= 2018 && binPropertySets.es2018.has(value)) || - (version >= 2019 && binPropertySets.es2019.has(value)) || - (version >= 2021 && binPropertySets.es2021.has(value))); -} - -const Backspace = 0x08; -const CharacterTabulation = 0x09; -const LineFeed = 0x0a; -const LineTabulation = 0x0b; -const FormFeed = 0x0c; -const CarriageReturn = 0x0d; -const ExclamationMark = 0x21; -const DollarSign = 0x24; -const LeftParenthesis = 0x28; -const RightParenthesis = 0x29; -const Asterisk = 0x2a; -const PlusSign = 0x2b; -const Comma = 0x2c; -const HyphenMinus = 0x2d; -const FullStop = 0x2e; -const Solidus = 0x2f; -const DigitZero = 0x30; -const DigitOne = 0x31; -const DigitSeven = 0x37; -const DigitNine = 0x39; -const Colon = 0x3a; -const LessThanSign = 0x3c; -const EqualsSign = 0x3d; -const GreaterThanSign = 0x3e; -const QuestionMark = 0x3f; -const LatinCapitalLetterA = 0x41; -const LatinCapitalLetterB = 0x42; -const LatinCapitalLetterD = 0x44; -const LatinCapitalLetterF = 0x46; -const LatinCapitalLetterP = 0x50; -const LatinCapitalLetterS = 0x53; -const LatinCapitalLetterW = 0x57; -const LatinCapitalLetterZ = 0x5a; -const LowLine = 0x5f; -const LatinSmallLetterA = 0x61; -const LatinSmallLetterB = 0x62; -const LatinSmallLetterC = 0x63; -const LatinSmallLetterD = 0x64; -const LatinSmallLetterF = 0x66; -const LatinSmallLetterG = 0x67; -const LatinSmallLetterI = 0x69; -const LatinSmallLetterK = 0x6b; -const LatinSmallLetterM = 0x6d; -const LatinSmallLetterN = 0x6e; -const LatinSmallLetterP = 0x70; -const LatinSmallLetterR = 0x72; -const LatinSmallLetterS = 0x73; -const LatinSmallLetterT = 0x74; -const LatinSmallLetterU = 0x75; -const LatinSmallLetterV = 0x76; -const LatinSmallLetterW = 0x77; -const LatinSmallLetterX = 0x78; -const LatinSmallLetterY = 0x79; -const LatinSmallLetterZ = 0x7a; -const LeftSquareBracket = 0x5b; -const ReverseSolidus = 0x5c; -const RightSquareBracket = 0x5d; -const CircumflexAccent = 0x5e; -const LeftCurlyBracket = 0x7b; -const VerticalLine = 0x7c; -const RightCurlyBracket = 0x7d; -const ZeroWidthNonJoiner = 0x200c; -const ZeroWidthJoiner = 0x200d; -const LineSeparator = 0x2028; -const ParagraphSeparator = 0x2029; -const MinCodePoint = 0x00; -const MaxCodePoint = 0x10ffff; -function isLatinLetter(code) { - return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) || - (code >= LatinSmallLetterA && code <= LatinSmallLetterZ)); -} -function isDecimalDigit(code) { - return code >= DigitZero && code <= DigitNine; -} -function isOctalDigit(code) { - return code >= DigitZero && code <= DigitSeven; -} -function isHexDigit(code) { - return ((code >= DigitZero && code <= DigitNine) || - (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) || - (code >= LatinSmallLetterA && code <= LatinSmallLetterF)); -} -function isLineTerminator(code) { - return (code === LineFeed || - code === CarriageReturn || - code === LineSeparator || - code === ParagraphSeparator); -} -function isValidUnicode(code) { - return code >= MinCodePoint && code <= MaxCodePoint; -} -function digitToInt(code) { - if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) { - return code - LatinSmallLetterA + 10; - } - if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) { - return code - LatinCapitalLetterA + 10; - } - return code - DigitZero; -} -function isLeadSurrogate(code) { - return code >= 0xd800 && code <= 0xdbff; -} -function isTrailSurrogate(code) { - return code >= 0xdc00 && code <= 0xdfff; -} -function combineSurrogatePair(lead, trail) { - return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000; -} - -const legacyImpl = { - at(s, end, i) { - return i < end ? s.charCodeAt(i) : -1; - }, - width(c) { - return 1; - }, -}; -const unicodeImpl = { - at(s, end, i) { - return i < end ? s.codePointAt(i) : -1; - }, - width(c) { - return c > 0xffff ? 2 : 1; - }, -}; -class Reader { - constructor() { - this._impl = legacyImpl; - this._s = ""; - this._i = 0; - this._end = 0; - this._cp1 = -1; - this._w1 = 1; - this._cp2 = -1; - this._w2 = 1; - this._cp3 = -1; - this._w3 = 1; - this._cp4 = -1; - } - get source() { - return this._s; - } - get index() { - return this._i; - } - get currentCodePoint() { - return this._cp1; - } - get nextCodePoint() { - return this._cp2; - } - get nextCodePoint2() { - return this._cp3; - } - get nextCodePoint3() { - return this._cp4; - } - reset(source, start, end, uFlag) { - this._impl = uFlag ? unicodeImpl : legacyImpl; - this._s = source; - this._end = end; - this.rewind(start); - } - rewind(index) { - const impl = this._impl; - this._i = index; - this._cp1 = impl.at(this._s, this._end, index); - this._w1 = impl.width(this._cp1); - this._cp2 = impl.at(this._s, this._end, index + this._w1); - this._w2 = impl.width(this._cp2); - this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2); - this._w3 = impl.width(this._cp3); - this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3); - } - advance() { - if (this._cp1 !== -1) { - const impl = this._impl; - this._i += this._w1; - this._cp1 = this._cp2; - this._w1 = this._w2; - this._cp2 = this._cp3; - this._w2 = impl.width(this._cp2); - this._cp3 = this._cp4; - this._w3 = impl.width(this._cp3); - this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3); - } - } - eat(cp) { - if (this._cp1 === cp) { - this.advance(); - return true; - } - return false; - } - eat2(cp1, cp2) { - if (this._cp1 === cp1 && this._cp2 === cp2) { - this.advance(); - this.advance(); - return true; - } - return false; - } - eat3(cp1, cp2, cp3) { - if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) { - this.advance(); - this.advance(); - this.advance(); - return true; - } - return false; - } -} - -class RegExpSyntaxError extends SyntaxError { - constructor(source, uFlag, index, message) { - if (source) { - if (!source.startsWith("/")) { - source = `/${source}/${uFlag ? "u" : ""}`; - } - source = `: ${source}`; - } - super(`Invalid regular expression${source}: ${message}`); - this.index = index; - } -} - -function isSyntaxCharacter(cp) { - return (cp === CircumflexAccent || - cp === DollarSign || - cp === ReverseSolidus || - cp === FullStop || - cp === Asterisk || - cp === PlusSign || - cp === QuestionMark || - cp === LeftParenthesis || - cp === RightParenthesis || - cp === LeftSquareBracket || - cp === RightSquareBracket || - cp === LeftCurlyBracket || - cp === RightCurlyBracket || - cp === VerticalLine); -} -function isRegExpIdentifierStart(cp) { - return isIdStart(cp) || cp === DollarSign || cp === LowLine; -} -function isRegExpIdentifierPart(cp) { - return (isIdContinue(cp) || - cp === DollarSign || - cp === LowLine || - cp === ZeroWidthNonJoiner || - cp === ZeroWidthJoiner); -} -function isUnicodePropertyNameCharacter(cp) { - return isLatinLetter(cp) || cp === LowLine; -} -function isUnicodePropertyValueCharacter(cp) { - return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp); -} -class RegExpValidator { - constructor(options) { - this._reader = new Reader(); - this._uFlag = false; - this._nFlag = false; - this._lastIntValue = 0; - this._lastMinValue = 0; - this._lastMaxValue = 0; - this._lastStrValue = ""; - this._lastKeyValue = ""; - this._lastValValue = ""; - this._lastAssertionIsQuantifiable = false; - this._numCapturingParens = 0; - this._groupNames = new Set(); - this._backreferenceNames = new Set(); - this._options = options || {}; - } - validateLiteral(source, start = 0, end = source.length) { - this._uFlag = this._nFlag = false; - this.reset(source, start, end); - this.onLiteralEnter(start); - if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) { - const flagStart = this.index; - const uFlag = source.includes("u", flagStart); - this.validateFlags(source, flagStart, end); - this.validatePattern(source, start + 1, flagStart - 1, uFlag); - } - else if (start >= end) { - this.raise("Empty"); - } - else { - const c = String.fromCodePoint(this.currentCodePoint); - this.raise(`Unexpected character '${c}'`); - } - this.onLiteralLeave(start, end); - } - validateFlags(source, start = 0, end = source.length) { - const existingFlags = new Set(); - let global = false; - let ignoreCase = false; - let multiline = false; - let sticky = false; - let unicode = false; - let dotAll = false; - let hasIndices = false; - for (let i = start; i < end; ++i) { - const flag = source.charCodeAt(i); - if (existingFlags.has(flag)) { - this.raise(`Duplicated flag '${source[i]}'`); - } - existingFlags.add(flag); - if (flag === LatinSmallLetterG) { - global = true; - } - else if (flag === LatinSmallLetterI) { - ignoreCase = true; - } - else if (flag === LatinSmallLetterM) { - multiline = true; - } - else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) { - unicode = true; - } - else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) { - sticky = true; - } - else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { - dotAll = true; - } - else if (flag === LatinSmallLetterD && this.ecmaVersion >= 2022) { - hasIndices = true; - } - else { - this.raise(`Invalid flag '${source[i]}'`); - } - } - this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); - } - validatePattern(source, start = 0, end = source.length, uFlag = false) { - this._uFlag = uFlag && this.ecmaVersion >= 2015; - this._nFlag = uFlag && this.ecmaVersion >= 2018; - this.reset(source, start, end); - this.consumePattern(); - if (!this._nFlag && - this.ecmaVersion >= 2018 && - this._groupNames.size > 0) { - this._nFlag = true; - this.rewind(start); - this.consumePattern(); - } - } - get strict() { - return Boolean(this._options.strict || this._uFlag); - } - get ecmaVersion() { - return this._options.ecmaVersion || 2022; - } - onLiteralEnter(start) { - if (this._options.onLiteralEnter) { - this._options.onLiteralEnter(start); - } - } - onLiteralLeave(start, end) { - if (this._options.onLiteralLeave) { - this._options.onLiteralLeave(start, end); - } - } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { - if (this._options.onFlags) { - this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); - } - } - onPatternEnter(start) { - if (this._options.onPatternEnter) { - this._options.onPatternEnter(start); - } - } - onPatternLeave(start, end) { - if (this._options.onPatternLeave) { - this._options.onPatternLeave(start, end); - } - } - onDisjunctionEnter(start) { - if (this._options.onDisjunctionEnter) { - this._options.onDisjunctionEnter(start); - } - } - onDisjunctionLeave(start, end) { - if (this._options.onDisjunctionLeave) { - this._options.onDisjunctionLeave(start, end); - } - } - onAlternativeEnter(start, index) { - if (this._options.onAlternativeEnter) { - this._options.onAlternativeEnter(start, index); - } - } - onAlternativeLeave(start, end, index) { - if (this._options.onAlternativeLeave) { - this._options.onAlternativeLeave(start, end, index); - } - } - onGroupEnter(start) { - if (this._options.onGroupEnter) { - this._options.onGroupEnter(start); - } - } - onGroupLeave(start, end) { - if (this._options.onGroupLeave) { - this._options.onGroupLeave(start, end); - } - } - onCapturingGroupEnter(start, name) { - if (this._options.onCapturingGroupEnter) { - this._options.onCapturingGroupEnter(start, name); - } - } - onCapturingGroupLeave(start, end, name) { - if (this._options.onCapturingGroupLeave) { - this._options.onCapturingGroupLeave(start, end, name); - } - } - onQuantifier(start, end, min, max, greedy) { - if (this._options.onQuantifier) { - this._options.onQuantifier(start, end, min, max, greedy); - } - } - onLookaroundAssertionEnter(start, kind, negate) { - if (this._options.onLookaroundAssertionEnter) { - this._options.onLookaroundAssertionEnter(start, kind, negate); - } - } - onLookaroundAssertionLeave(start, end, kind, negate) { - if (this._options.onLookaroundAssertionLeave) { - this._options.onLookaroundAssertionLeave(start, end, kind, negate); - } - } - onEdgeAssertion(start, end, kind) { - if (this._options.onEdgeAssertion) { - this._options.onEdgeAssertion(start, end, kind); - } - } - onWordBoundaryAssertion(start, end, kind, negate) { - if (this._options.onWordBoundaryAssertion) { - this._options.onWordBoundaryAssertion(start, end, kind, negate); - } - } - onAnyCharacterSet(start, end, kind) { - if (this._options.onAnyCharacterSet) { - this._options.onAnyCharacterSet(start, end, kind); - } - } - onEscapeCharacterSet(start, end, kind, negate) { - if (this._options.onEscapeCharacterSet) { - this._options.onEscapeCharacterSet(start, end, kind, negate); - } - } - onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { - if (this._options.onUnicodePropertyCharacterSet) { - this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate); - } - } - onCharacter(start, end, value) { - if (this._options.onCharacter) { - this._options.onCharacter(start, end, value); - } - } - onBackreference(start, end, ref) { - if (this._options.onBackreference) { - this._options.onBackreference(start, end, ref); - } - } - onCharacterClassEnter(start, negate) { - if (this._options.onCharacterClassEnter) { - this._options.onCharacterClassEnter(start, negate); - } - } - onCharacterClassLeave(start, end, negate) { - if (this._options.onCharacterClassLeave) { - this._options.onCharacterClassLeave(start, end, negate); - } - } - onCharacterClassRange(start, end, min, max) { - if (this._options.onCharacterClassRange) { - this._options.onCharacterClassRange(start, end, min, max); - } - } - get source() { - return this._reader.source; - } - get index() { - return this._reader.index; - } - get currentCodePoint() { - return this._reader.currentCodePoint; - } - get nextCodePoint() { - return this._reader.nextCodePoint; - } - get nextCodePoint2() { - return this._reader.nextCodePoint2; - } - get nextCodePoint3() { - return this._reader.nextCodePoint3; - } - reset(source, start, end) { - this._reader.reset(source, start, end, this._uFlag); - } - rewind(index) { - this._reader.rewind(index); - } - advance() { - this._reader.advance(); - } - eat(cp) { - return this._reader.eat(cp); - } - eat2(cp1, cp2) { - return this._reader.eat2(cp1, cp2); - } - eat3(cp1, cp2, cp3) { - return this._reader.eat3(cp1, cp2, cp3); - } - raise(message) { - throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message); - } - eatRegExpBody() { - const start = this.index; - let inClass = false; - let escaped = false; - for (;;) { - const cp = this.currentCodePoint; - if (cp === -1 || isLineTerminator(cp)) { - const kind = inClass ? "character class" : "regular expression"; - this.raise(`Unterminated ${kind}`); - } - if (escaped) { - escaped = false; - } - else if (cp === ReverseSolidus) { - escaped = true; - } - else if (cp === LeftSquareBracket) { - inClass = true; - } - else if (cp === RightSquareBracket) { - inClass = false; - } - else if ((cp === Solidus && !inClass) || - (cp === Asterisk && this.index === start)) { - break; - } - this.advance(); - } - return this.index !== start; - } - consumePattern() { - const start = this.index; - this._numCapturingParens = this.countCapturingParens(); - this._groupNames.clear(); - this._backreferenceNames.clear(); - this.onPatternEnter(start); - this.consumeDisjunction(); - const cp = this.currentCodePoint; - if (this.currentCodePoint !== -1) { - if (cp === RightParenthesis) { - this.raise("Unmatched ')'"); - } - if (cp === ReverseSolidus) { - this.raise("\\ at end of pattern"); - } - if (cp === RightSquareBracket || cp === RightCurlyBracket) { - this.raise("Lone quantifier brackets"); - } - const c = String.fromCodePoint(cp); - this.raise(`Unexpected character '${c}'`); - } - for (const name of this._backreferenceNames) { - if (!this._groupNames.has(name)) { - this.raise("Invalid named capture referenced"); - } - } - this.onPatternLeave(start, this.index); - } - countCapturingParens() { - const start = this.index; - let inClass = false; - let escaped = false; - let count = 0; - let cp = 0; - while ((cp = this.currentCodePoint) !== -1) { - if (escaped) { - escaped = false; - } - else if (cp === ReverseSolidus) { - escaped = true; - } - else if (cp === LeftSquareBracket) { - inClass = true; - } - else if (cp === RightSquareBracket) { - inClass = false; - } - else if (cp === LeftParenthesis && - !inClass && - (this.nextCodePoint !== QuestionMark || - (this.nextCodePoint2 === LessThanSign && - this.nextCodePoint3 !== EqualsSign && - this.nextCodePoint3 !== ExclamationMark))) { - count += 1; - } - this.advance(); - } - this.rewind(start); - return count; - } - consumeDisjunction() { - const start = this.index; - let i = 0; - this.onDisjunctionEnter(start); - do { - this.consumeAlternative(i++); - } while (this.eat(VerticalLine)); - if (this.consumeQuantifier(true)) { - this.raise("Nothing to repeat"); - } - if (this.eat(LeftCurlyBracket)) { - this.raise("Lone quantifier brackets"); - } - this.onDisjunctionLeave(start, this.index); - } - consumeAlternative(i) { - const start = this.index; - this.onAlternativeEnter(start, i); - while (this.currentCodePoint !== -1 && this.consumeTerm()) { - } - this.onAlternativeLeave(start, this.index, i); - } - consumeTerm() { - if (this._uFlag || this.strict) { - return (this.consumeAssertion() || - (this.consumeAtom() && this.consumeOptionalQuantifier())); - } - return ((this.consumeAssertion() && - (!this._lastAssertionIsQuantifiable || - this.consumeOptionalQuantifier())) || - (this.consumeExtendedAtom() && this.consumeOptionalQuantifier())); - } - consumeOptionalQuantifier() { - this.consumeQuantifier(); - return true; - } - consumeAssertion() { - const start = this.index; - this._lastAssertionIsQuantifiable = false; - if (this.eat(CircumflexAccent)) { - this.onEdgeAssertion(start, this.index, "start"); - return true; - } - if (this.eat(DollarSign)) { - this.onEdgeAssertion(start, this.index, "end"); - return true; - } - if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) { - this.onWordBoundaryAssertion(start, this.index, "word", true); - return true; - } - if (this.eat2(ReverseSolidus, LatinSmallLetterB)) { - this.onWordBoundaryAssertion(start, this.index, "word", false); - return true; - } - if (this.eat2(LeftParenthesis, QuestionMark)) { - const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign); - let negate = false; - if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) { - const kind = lookbehind ? "lookbehind" : "lookahead"; - this.onLookaroundAssertionEnter(start, kind, negate); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this._lastAssertionIsQuantifiable = !lookbehind && !this.strict; - this.onLookaroundAssertionLeave(start, this.index, kind, negate); - return true; - } - this.rewind(start); - } - return false; - } - consumeQuantifier(noConsume = false) { - const start = this.index; - let min = 0; - let max = 0; - let greedy = false; - if (this.eat(Asterisk)) { - min = 0; - max = Number.POSITIVE_INFINITY; - } - else if (this.eat(PlusSign)) { - min = 1; - max = Number.POSITIVE_INFINITY; - } - else if (this.eat(QuestionMark)) { - min = 0; - max = 1; - } - else if (this.eatBracedQuantifier(noConsume)) { - min = this._lastMinValue; - max = this._lastMaxValue; - } - else { - return false; - } - greedy = !this.eat(QuestionMark); - if (!noConsume) { - this.onQuantifier(start, this.index, min, max, greedy); - } - return true; - } - eatBracedQuantifier(noError) { - const start = this.index; - if (this.eat(LeftCurlyBracket)) { - this._lastMinValue = 0; - this._lastMaxValue = Number.POSITIVE_INFINITY; - if (this.eatDecimalDigits()) { - this._lastMinValue = this._lastMaxValue = this._lastIntValue; - if (this.eat(Comma)) { - this._lastMaxValue = this.eatDecimalDigits() - ? this._lastIntValue - : Number.POSITIVE_INFINITY; - } - if (this.eat(RightCurlyBracket)) { - if (!noError && this._lastMaxValue < this._lastMinValue) { - this.raise("numbers out of order in {} quantifier"); - } - return true; - } - } - if (!noError && (this._uFlag || this.strict)) { - this.raise("Incomplete quantifier"); - } - this.rewind(start); - } - return false; - } - consumeAtom() { - return (this.consumePatternCharacter() || - this.consumeDot() || - this.consumeReverseSolidusAtomEscape() || - this.consumeCharacterClass() || - this.consumeUncapturingGroup() || - this.consumeCapturingGroup()); - } - consumeDot() { - if (this.eat(FullStop)) { - this.onAnyCharacterSet(this.index - 1, this.index, "any"); - return true; - } - return false; - } - consumeReverseSolidusAtomEscape() { - const start = this.index; - if (this.eat(ReverseSolidus)) { - if (this.consumeAtomEscape()) { - return true; - } - this.rewind(start); - } - return false; - } - consumeUncapturingGroup() { - const start = this.index; - if (this.eat3(LeftParenthesis, QuestionMark, Colon)) { - this.onGroupEnter(start); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this.onGroupLeave(start, this.index); - return true; - } - return false; - } - consumeCapturingGroup() { - const start = this.index; - if (this.eat(LeftParenthesis)) { - let name = null; - if (this.ecmaVersion >= 2018) { - if (this.consumeGroupSpecifier()) { - name = this._lastStrValue; - } - } - else if (this.currentCodePoint === QuestionMark) { - this.raise("Invalid group"); - } - this.onCapturingGroupEnter(start, name); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this.onCapturingGroupLeave(start, this.index, name); - return true; - } - return false; - } - consumeExtendedAtom() { - return (this.consumeDot() || - this.consumeReverseSolidusAtomEscape() || - this.consumeReverseSolidusFollowedByC() || - this.consumeCharacterClass() || - this.consumeUncapturingGroup() || - this.consumeCapturingGroup() || - this.consumeInvalidBracedQuantifier() || - this.consumeExtendedPatternCharacter()); - } - consumeReverseSolidusFollowedByC() { - const start = this.index; - if (this.currentCodePoint === ReverseSolidus && - this.nextCodePoint === LatinSmallLetterC) { - this._lastIntValue = this.currentCodePoint; - this.advance(); - this.onCharacter(start, this.index, ReverseSolidus); - return true; - } - return false; - } - consumeInvalidBracedQuantifier() { - if (this.eatBracedQuantifier(true)) { - this.raise("Nothing to repeat"); - } - return false; - } - consumePatternCharacter() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && !isSyntaxCharacter(cp)) { - this.advance(); - this.onCharacter(start, this.index, cp); - return true; - } - return false; - } - consumeExtendedPatternCharacter() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && - cp !== CircumflexAccent && - cp !== DollarSign && - cp !== ReverseSolidus && - cp !== FullStop && - cp !== Asterisk && - cp !== PlusSign && - cp !== QuestionMark && - cp !== LeftParenthesis && - cp !== RightParenthesis && - cp !== LeftSquareBracket && - cp !== VerticalLine) { - this.advance(); - this.onCharacter(start, this.index, cp); - return true; - } - return false; - } - consumeGroupSpecifier() { - if (this.eat(QuestionMark)) { - if (this.eatGroupName()) { - if (!this._groupNames.has(this._lastStrValue)) { - this._groupNames.add(this._lastStrValue); - return true; - } - this.raise("Duplicate capture group name"); - } - this.raise("Invalid group"); - } - return false; - } - consumeAtomEscape() { - if (this.consumeBackreference() || - this.consumeCharacterClassEscape() || - this.consumeCharacterEscape() || - (this._nFlag && this.consumeKGroupName())) { - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - return false; - } - consumeBackreference() { - const start = this.index; - if (this.eatDecimalEscape()) { - const n = this._lastIntValue; - if (n <= this._numCapturingParens) { - this.onBackreference(start - 1, this.index, n); - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - consumeCharacterClassEscape() { - const start = this.index; - if (this.eat(LatinSmallLetterD)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "digit", false); - return true; - } - if (this.eat(LatinCapitalLetterD)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "digit", true); - return true; - } - if (this.eat(LatinSmallLetterS)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "space", false); - return true; - } - if (this.eat(LatinCapitalLetterS)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "space", true); - return true; - } - if (this.eat(LatinSmallLetterW)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "word", false); - return true; - } - if (this.eat(LatinCapitalLetterW)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "word", true); - return true; - } - let negate = false; - if (this._uFlag && - this.ecmaVersion >= 2018 && - (this.eat(LatinSmallLetterP) || - (negate = this.eat(LatinCapitalLetterP)))) { - this._lastIntValue = -1; - if (this.eat(LeftCurlyBracket) && - this.eatUnicodePropertyValueExpression() && - this.eat(RightCurlyBracket)) { - this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate); - return true; - } - this.raise("Invalid property name"); - } - return false; - } - consumeCharacterEscape() { - const start = this.index; - if (this.eatControlEscape() || - this.eatCControlLetter() || - this.eatZero() || - this.eatHexEscapeSequence() || - this.eatRegExpUnicodeEscapeSequence() || - (!this.strict && - !this._uFlag && - this.eatLegacyOctalEscapeSequence()) || - this.eatIdentityEscape()) { - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - return false; - } - consumeKGroupName() { - const start = this.index; - if (this.eat(LatinSmallLetterK)) { - if (this.eatGroupName()) { - const groupName = this._lastStrValue; - this._backreferenceNames.add(groupName); - this.onBackreference(start - 1, this.index, groupName); - return true; - } - this.raise("Invalid named reference"); - } - return false; - } - consumeCharacterClass() { - const start = this.index; - if (this.eat(LeftSquareBracket)) { - const negate = this.eat(CircumflexAccent); - this.onCharacterClassEnter(start, negate); - this.consumeClassRanges(); - if (!this.eat(RightSquareBracket)) { - this.raise("Unterminated character class"); - } - this.onCharacterClassLeave(start, this.index, negate); - return true; - } - return false; - } - consumeClassRanges() { - const strict = this.strict || this._uFlag; - for (;;) { - const rangeStart = this.index; - if (!this.consumeClassAtom()) { - break; - } - const min = this._lastIntValue; - if (!this.eat(HyphenMinus)) { - continue; - } - this.onCharacter(this.index - 1, this.index, HyphenMinus); - if (!this.consumeClassAtom()) { - break; - } - const max = this._lastIntValue; - if (min === -1 || max === -1) { - if (strict) { - this.raise("Invalid character class"); - } - continue; - } - if (min > max) { - this.raise("Range out of order in character class"); - } - this.onCharacterClassRange(rangeStart, this.index, min, max); - } - } - consumeClassAtom() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && cp !== ReverseSolidus && cp !== RightSquareBracket) { - this.advance(); - this._lastIntValue = cp; - this.onCharacter(start, this.index, this._lastIntValue); - return true; - } - if (this.eat(ReverseSolidus)) { - if (this.consumeClassEscape()) { - return true; - } - if (!this.strict && this.currentCodePoint === LatinSmallLetterC) { - this._lastIntValue = ReverseSolidus; - this.onCharacter(start, this.index, this._lastIntValue); - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - consumeClassEscape() { - const start = this.index; - if (this.eat(LatinSmallLetterB)) { - this._lastIntValue = Backspace; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - if (this._uFlag && this.eat(HyphenMinus)) { - this._lastIntValue = HyphenMinus; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - let cp = 0; - if (!this.strict && - !this._uFlag && - this.currentCodePoint === LatinSmallLetterC && - (isDecimalDigit((cp = this.nextCodePoint)) || cp === LowLine)) { - this.advance(); - this.advance(); - this._lastIntValue = cp % 0x20; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - return (this.consumeCharacterClassEscape() || this.consumeCharacterEscape()); - } - eatGroupName() { - if (this.eat(LessThanSign)) { - if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) { - return true; - } - this.raise("Invalid capture group name"); - } - return false; - } - eatRegExpIdentifierName() { - if (this.eatRegExpIdentifierStart()) { - this._lastStrValue = String.fromCodePoint(this._lastIntValue); - while (this.eatRegExpIdentifierPart()) { - this._lastStrValue += String.fromCodePoint(this._lastIntValue); - } - return true; - } - return false; - } - eatRegExpIdentifierStart() { - const start = this.index; - const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; - let cp = this.currentCodePoint; - this.advance(); - if (cp === ReverseSolidus && - this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { - cp = this._lastIntValue; - } - else if (forceUFlag && - isLeadSurrogate(cp) && - isTrailSurrogate(this.currentCodePoint)) { - cp = combineSurrogatePair(cp, this.currentCodePoint); - this.advance(); - } - if (isRegExpIdentifierStart(cp)) { - this._lastIntValue = cp; - return true; - } - if (this.index !== start) { - this.rewind(start); - } - return false; - } - eatRegExpIdentifierPart() { - const start = this.index; - const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; - let cp = this.currentCodePoint; - this.advance(); - if (cp === ReverseSolidus && - this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { - cp = this._lastIntValue; - } - else if (forceUFlag && - isLeadSurrogate(cp) && - isTrailSurrogate(this.currentCodePoint)) { - cp = combineSurrogatePair(cp, this.currentCodePoint); - this.advance(); - } - if (isRegExpIdentifierPart(cp)) { - this._lastIntValue = cp; - return true; - } - if (this.index !== start) { - this.rewind(start); - } - return false; - } - eatCControlLetter() { - const start = this.index; - if (this.eat(LatinSmallLetterC)) { - if (this.eatControlLetter()) { - return true; - } - this.rewind(start); - } - return false; - } - eatZero() { - if (this.currentCodePoint === DigitZero && - !isDecimalDigit(this.nextCodePoint)) { - this._lastIntValue = 0; - this.advance(); - return true; - } - return false; - } - eatControlEscape() { - if (this.eat(LatinSmallLetterF)) { - this._lastIntValue = FormFeed; - return true; - } - if (this.eat(LatinSmallLetterN)) { - this._lastIntValue = LineFeed; - return true; - } - if (this.eat(LatinSmallLetterR)) { - this._lastIntValue = CarriageReturn; - return true; - } - if (this.eat(LatinSmallLetterT)) { - this._lastIntValue = CharacterTabulation; - return true; - } - if (this.eat(LatinSmallLetterV)) { - this._lastIntValue = LineTabulation; - return true; - } - return false; - } - eatControlLetter() { - const cp = this.currentCodePoint; - if (isLatinLetter(cp)) { - this.advance(); - this._lastIntValue = cp % 0x20; - return true; - } - return false; - } - eatRegExpUnicodeEscapeSequence(forceUFlag = false) { - const start = this.index; - const uFlag = forceUFlag || this._uFlag; - if (this.eat(LatinSmallLetterU)) { - if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) || - this.eatFixedHexDigits(4) || - (uFlag && this.eatRegExpUnicodeCodePointEscape())) { - return true; - } - if (this.strict || uFlag) { - this.raise("Invalid unicode escape"); - } - this.rewind(start); - } - return false; - } - eatRegExpUnicodeSurrogatePairEscape() { - const start = this.index; - if (this.eatFixedHexDigits(4)) { - const lead = this._lastIntValue; - if (isLeadSurrogate(lead) && - this.eat(ReverseSolidus) && - this.eat(LatinSmallLetterU) && - this.eatFixedHexDigits(4)) { - const trail = this._lastIntValue; - if (isTrailSurrogate(trail)) { - this._lastIntValue = combineSurrogatePair(lead, trail); - return true; - } - } - this.rewind(start); - } - return false; - } - eatRegExpUnicodeCodePointEscape() { - const start = this.index; - if (this.eat(LeftCurlyBracket) && - this.eatHexDigits() && - this.eat(RightCurlyBracket) && - isValidUnicode(this._lastIntValue)) { - return true; - } - this.rewind(start); - return false; - } - eatIdentityEscape() { - const cp = this.currentCodePoint; - if (this.isValidIdentityEscape(cp)) { - this._lastIntValue = cp; - this.advance(); - return true; - } - return false; - } - isValidIdentityEscape(cp) { - if (cp === -1) { - return false; - } - if (this._uFlag) { - return isSyntaxCharacter(cp) || cp === Solidus; - } - if (this.strict) { - return !isIdContinue(cp); - } - if (this._nFlag) { - return !(cp === LatinSmallLetterC || cp === LatinSmallLetterK); - } - return cp !== LatinSmallLetterC; - } - eatDecimalEscape() { - this._lastIntValue = 0; - let cp = this.currentCodePoint; - if (cp >= DigitOne && cp <= DigitNine) { - do { - this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero); - this.advance(); - } while ((cp = this.currentCodePoint) >= DigitZero && - cp <= DigitNine); - return true; - } - return false; - } - eatUnicodePropertyValueExpression() { - const start = this.index; - if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) { - this._lastKeyValue = this._lastStrValue; - if (this.eatUnicodePropertyValue()) { - this._lastValValue = this._lastStrValue; - if (isValidUnicodeProperty(this.ecmaVersion, this._lastKeyValue, this._lastValValue)) { - return true; - } - this.raise("Invalid property name"); - } - } - this.rewind(start); - if (this.eatLoneUnicodePropertyNameOrValue()) { - const nameOrValue = this._lastStrValue; - if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) { - this._lastKeyValue = "General_Category"; - this._lastValValue = nameOrValue; - return true; - } - if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) { - this._lastKeyValue = nameOrValue; - this._lastValValue = ""; - return true; - } - this.raise("Invalid property name"); - } - return false; - } - eatUnicodePropertyName() { - this._lastStrValue = ""; - while (isUnicodePropertyNameCharacter(this.currentCodePoint)) { - this._lastStrValue += String.fromCodePoint(this.currentCodePoint); - this.advance(); - } - return this._lastStrValue !== ""; - } - eatUnicodePropertyValue() { - this._lastStrValue = ""; - while (isUnicodePropertyValueCharacter(this.currentCodePoint)) { - this._lastStrValue += String.fromCodePoint(this.currentCodePoint); - this.advance(); - } - return this._lastStrValue !== ""; - } - eatLoneUnicodePropertyNameOrValue() { - return this.eatUnicodePropertyValue(); - } - eatHexEscapeSequence() { - const start = this.index; - if (this.eat(LatinSmallLetterX)) { - if (this.eatFixedHexDigits(2)) { - return true; - } - if (this._uFlag || this.strict) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - eatDecimalDigits() { - const start = this.index; - this._lastIntValue = 0; - while (isDecimalDigit(this.currentCodePoint)) { - this._lastIntValue = - 10 * this._lastIntValue + digitToInt(this.currentCodePoint); - this.advance(); - } - return this.index !== start; - } - eatHexDigits() { - const start = this.index; - this._lastIntValue = 0; - while (isHexDigit(this.currentCodePoint)) { - this._lastIntValue = - 16 * this._lastIntValue + digitToInt(this.currentCodePoint); - this.advance(); - } - return this.index !== start; - } - eatLegacyOctalEscapeSequence() { - if (this.eatOctalDigit()) { - const n1 = this._lastIntValue; - if (this.eatOctalDigit()) { - const n2 = this._lastIntValue; - if (n1 <= 3 && this.eatOctalDigit()) { - this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue; - } - else { - this._lastIntValue = n1 * 8 + n2; - } - } - else { - this._lastIntValue = n1; - } - return true; - } - return false; - } - eatOctalDigit() { - const cp = this.currentCodePoint; - if (isOctalDigit(cp)) { - this.advance(); - this._lastIntValue = cp - DigitZero; - return true; - } - this._lastIntValue = 0; - return false; - } - eatFixedHexDigits(length) { - const start = this.index; - this._lastIntValue = 0; - for (let i = 0; i < length; ++i) { - const cp = this.currentCodePoint; - if (!isHexDigit(cp)) { - this.rewind(start); - return false; - } - this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp); - this.advance(); - } - return true; - } -} - -const DummyPattern = {}; -const DummyFlags = {}; -const DummyCapturingGroup = {}; -class RegExpParserState { - constructor(options) { - this._node = DummyPattern; - this._flags = DummyFlags; - this._backreferences = []; - this._capturingGroups = []; - this.source = ""; - this.strict = Boolean(options && options.strict); - this.ecmaVersion = (options && options.ecmaVersion) || 2022; - } - get pattern() { - if (this._node.type !== "Pattern") { - throw new Error("UnknownError"); - } - return this._node; - } - get flags() { - if (this._flags.type !== "Flags") { - throw new Error("UnknownError"); - } - return this._flags; - } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { - this._flags = { - type: "Flags", - parent: null, - start, - end, - raw: this.source.slice(start, end), - global, - ignoreCase, - multiline, - unicode, - sticky, - dotAll, - hasIndices, - }; - } - onPatternEnter(start) { - this._node = { - type: "Pattern", - parent: null, - start, - end: start, - raw: "", - alternatives: [], - }; - this._backreferences.length = 0; - this._capturingGroups.length = 0; - } - onPatternLeave(start, end) { - this._node.end = end; - this._node.raw = this.source.slice(start, end); - for (const reference of this._backreferences) { - const ref = reference.ref; - const group = typeof ref === "number" - ? this._capturingGroups[ref - 1] - : this._capturingGroups.find(g => g.name === ref); - reference.resolved = group; - group.references.push(reference); - } - } - onAlternativeEnter(start) { - const parent = this._node; - if (parent.type !== "Assertion" && - parent.type !== "CapturingGroup" && - parent.type !== "Group" && - parent.type !== "Pattern") { - throw new Error("UnknownError"); - } - this._node = { - type: "Alternative", - parent, - start, - end: start, - raw: "", - elements: [], - }; - parent.alternatives.push(this._node); - } - onAlternativeLeave(start, end) { - const node = this._node; - if (node.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onGroupEnter(start) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "Group", - parent, - start, - end: start, - raw: "", - alternatives: [], - }; - parent.elements.push(this._node); - } - onGroupLeave(start, end) { - const node = this._node; - if (node.type !== "Group" || node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onCapturingGroupEnter(start, name) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "CapturingGroup", - parent, - start, - end: start, - raw: "", - name, - alternatives: [], - references: [], - }; - parent.elements.push(this._node); - this._capturingGroups.push(this._node); - } - onCapturingGroupLeave(start, end) { - const node = this._node; - if (node.type !== "CapturingGroup" || - node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onQuantifier(start, end, min, max, greedy) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const element = parent.elements.pop(); - if (element == null || - element.type === "Quantifier" || - (element.type === "Assertion" && element.kind !== "lookahead")) { - throw new Error("UnknownError"); - } - const node = { - type: "Quantifier", - parent, - start: element.start, - end, - raw: this.source.slice(element.start, end), - min, - max, - greedy, - element, - }; - parent.elements.push(node); - element.parent = node; - } - onLookaroundAssertionEnter(start, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const node = (this._node = { - type: "Assertion", - parent, - start, - end: start, - raw: "", - kind, - negate, - alternatives: [], - }); - parent.elements.push(node); - } - onLookaroundAssertionLeave(start, end) { - const node = this._node; - if (node.type !== "Assertion" || node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onEdgeAssertion(start, end, kind) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Assertion", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - }); - } - onWordBoundaryAssertion(start, end, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Assertion", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - negate, - }); - } - onAnyCharacterSet(start, end, kind) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - }); - } - onEscapeCharacterSet(start, end, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - negate, - }); - } - onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - key, - value, - negate, - }); - } - onCharacter(start, end, value) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Character", - parent, - start, - end, - raw: this.source.slice(start, end), - value, - }); - } - onBackreference(start, end, ref) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const node = { - type: "Backreference", - parent, - start, - end, - raw: this.source.slice(start, end), - ref, - resolved: DummyCapturingGroup, - }; - parent.elements.push(node); - this._backreferences.push(node); - } - onCharacterClassEnter(start, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "CharacterClass", - parent, - start, - end: start, - raw: "", - negate, - elements: [], - }; - parent.elements.push(this._node); - } - onCharacterClassLeave(start, end) { - const node = this._node; - if (node.type !== "CharacterClass" || - node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onCharacterClassRange(start, end) { - const parent = this._node; - if (parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - const elements = parent.elements; - const max = elements.pop(); - const hyphen = elements.pop(); - const min = elements.pop(); - if (!min || - !max || - !hyphen || - min.type !== "Character" || - max.type !== "Character" || - hyphen.type !== "Character" || - hyphen.value !== HyphenMinus) { - throw new Error("UnknownError"); - } - const node = { - type: "CharacterClassRange", - parent, - start, - end, - raw: this.source.slice(start, end), - min, - max, - }; - min.parent = node; - max.parent = node; - elements.push(node); - } -} -class RegExpParser { - constructor(options) { - this._state = new RegExpParserState(options); - this._validator = new RegExpValidator(this._state); - } - parseLiteral(source, start = 0, end = source.length) { - this._state.source = source; - this._validator.validateLiteral(source, start, end); - const pattern = this._state.pattern; - const flags = this._state.flags; - const literal = { - type: "RegExpLiteral", - parent: null, - start, - end, - raw: source, - pattern, - flags, - }; - pattern.parent = literal; - flags.parent = literal; - return literal; - } - parseFlags(source, start = 0, end = source.length) { - this._state.source = source; - this._validator.validateFlags(source, start, end); - return this._state.flags; - } - parsePattern(source, start = 0, end = source.length, uFlag = false) { - this._state.source = source; - this._validator.validatePattern(source, start, end, uFlag); - return this._state.pattern; - } -} - -class RegExpVisitor { - constructor(handlers) { - this._handlers = handlers; - } - visit(node) { - switch (node.type) { - case "Alternative": - this.visitAlternative(node); - break; - case "Assertion": - this.visitAssertion(node); - break; - case "Backreference": - this.visitBackreference(node); - break; - case "CapturingGroup": - this.visitCapturingGroup(node); - break; - case "Character": - this.visitCharacter(node); - break; - case "CharacterClass": - this.visitCharacterClass(node); - break; - case "CharacterClassRange": - this.visitCharacterClassRange(node); - break; - case "CharacterSet": - this.visitCharacterSet(node); - break; - case "Flags": - this.visitFlags(node); - break; - case "Group": - this.visitGroup(node); - break; - case "Pattern": - this.visitPattern(node); - break; - case "Quantifier": - this.visitQuantifier(node); - break; - case "RegExpLiteral": - this.visitRegExpLiteral(node); - break; - default: - throw new Error(`Unknown type: ${node.type}`); - } - } - visitAlternative(node) { - if (this._handlers.onAlternativeEnter) { - this._handlers.onAlternativeEnter(node); - } - node.elements.forEach(this.visit, this); - if (this._handlers.onAlternativeLeave) { - this._handlers.onAlternativeLeave(node); - } - } - visitAssertion(node) { - if (this._handlers.onAssertionEnter) { - this._handlers.onAssertionEnter(node); - } - if (node.kind === "lookahead" || node.kind === "lookbehind") { - node.alternatives.forEach(this.visit, this); - } - if (this._handlers.onAssertionLeave) { - this._handlers.onAssertionLeave(node); - } - } - visitBackreference(node) { - if (this._handlers.onBackreferenceEnter) { - this._handlers.onBackreferenceEnter(node); - } - if (this._handlers.onBackreferenceLeave) { - this._handlers.onBackreferenceLeave(node); - } - } - visitCapturingGroup(node) { - if (this._handlers.onCapturingGroupEnter) { - this._handlers.onCapturingGroupEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onCapturingGroupLeave) { - this._handlers.onCapturingGroupLeave(node); - } - } - visitCharacter(node) { - if (this._handlers.onCharacterEnter) { - this._handlers.onCharacterEnter(node); - } - if (this._handlers.onCharacterLeave) { - this._handlers.onCharacterLeave(node); - } - } - visitCharacterClass(node) { - if (this._handlers.onCharacterClassEnter) { - this._handlers.onCharacterClassEnter(node); - } - node.elements.forEach(this.visit, this); - if (this._handlers.onCharacterClassLeave) { - this._handlers.onCharacterClassLeave(node); - } - } - visitCharacterClassRange(node) { - if (this._handlers.onCharacterClassRangeEnter) { - this._handlers.onCharacterClassRangeEnter(node); - } - this.visitCharacter(node.min); - this.visitCharacter(node.max); - if (this._handlers.onCharacterClassRangeLeave) { - this._handlers.onCharacterClassRangeLeave(node); - } - } - visitCharacterSet(node) { - if (this._handlers.onCharacterSetEnter) { - this._handlers.onCharacterSetEnter(node); - } - if (this._handlers.onCharacterSetLeave) { - this._handlers.onCharacterSetLeave(node); - } - } - visitFlags(node) { - if (this._handlers.onFlagsEnter) { - this._handlers.onFlagsEnter(node); - } - if (this._handlers.onFlagsLeave) { - this._handlers.onFlagsLeave(node); - } - } - visitGroup(node) { - if (this._handlers.onGroupEnter) { - this._handlers.onGroupEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onGroupLeave) { - this._handlers.onGroupLeave(node); - } - } - visitPattern(node) { - if (this._handlers.onPatternEnter) { - this._handlers.onPatternEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onPatternLeave) { - this._handlers.onPatternLeave(node); - } - } - visitQuantifier(node) { - if (this._handlers.onQuantifierEnter) { - this._handlers.onQuantifierEnter(node); - } - this.visit(node.element); - if (this._handlers.onQuantifierLeave) { - this._handlers.onQuantifierLeave(node); - } - } - visitRegExpLiteral(node) { - if (this._handlers.onRegExpLiteralEnter) { - this._handlers.onRegExpLiteralEnter(node); - } - this.visitPattern(node.pattern); - this.visitFlags(node.flags); - if (this._handlers.onRegExpLiteralLeave) { - this._handlers.onRegExpLiteralLeave(node); - } - } -} - -function parseRegExpLiteral(source, options) { - return new RegExpParser(options).parseLiteral(String(source)); -} -function validateRegExpLiteral(source, options) { - return new RegExpValidator(options).validateLiteral(source); -} -function visitRegExpAST(node, handlers) { - new RegExpVisitor(handlers).visit(node); -} - -exports.AST = ast; -exports.RegExpParser = RegExpParser; -exports.RegExpValidator = RegExpValidator; -exports.parseRegExpLiteral = parseRegExpLiteral; -exports.validateRegExpLiteral = validateRegExpLiteral; -exports.visitRegExpAST = visitRegExpAST; -//# sourceMappingURL=index.js.map diff --git a/node_modules/regexpp/index.js.map b/node_modules/regexpp/index.js.map deleted file mode 100644 index db15135..0000000 --- a/node_modules/regexpp/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/regexpp/index.mjs b/node_modules/regexpp/index.mjs deleted file mode 100644 index bc1f59c..0000000 --- a/node_modules/regexpp/index.mjs +++ /dev/null @@ -1,2087 +0,0 @@ -/*! @author Toru Nagashima */ - - -var ast = /*#__PURE__*/Object.freeze({ - -}); - -let largeIdStartRanges = undefined; -let largeIdContinueRanges = undefined; -function isIdStart(cp) { - if (cp < 0x41) - return false; - if (cp < 0x5b) - return true; - if (cp < 0x61) - return false; - if (cp < 0x7b) - return true; - return isLargeIdStart(cp); -} -function isIdContinue(cp) { - if (cp < 0x30) - return false; - if (cp < 0x3a) - return true; - if (cp < 0x41) - return false; - if (cp < 0x5b) - return true; - if (cp === 0x5f) - return true; - if (cp < 0x61) - return false; - if (cp < 0x7b) - return true; - return isLargeIdStart(cp) || isLargeIdContinue(cp); -} -function isLargeIdStart(cp) { - return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges())); -} -function isLargeIdContinue(cp) { - return isInRange(cp, largeIdContinueRanges || - (largeIdContinueRanges = initLargeIdContinueRanges())); -} -function initLargeIdStartRanges() { - return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 1i k 2 h 1p 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 6 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 x 0 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 c 2 3 f h f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 6 1k t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 1a 2 1a 2 3o 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t g70 4 wc 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1g 3 8 17 c 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f 4d 8m a l b 7 49 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 2z k s m d 1g 24 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o 2d 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 6e 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 z 1k 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i 5a 0 28 pl 2v 32 i 5f 24d tq 34i g6 6nu fs 8 u 36 t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6wo 7y 1e 2 i 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1th 18 b 6 h 0 aa 17 105 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyl z 378 c 65 3 4g1 f 5rk 2e8 f1 15v 3t6"); -} -function initLargeIdContinueRanges() { - return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 3c e 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1m 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 h 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 5 3 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 2 u 2 u 1 v 1 1t v a 0 3 9 y 2 3 9 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 1 1s 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1l 2 4 g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 4a a 4w 2 1i e w 9 g 3 1a a 1i 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 4h b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 ewa 9 3r 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 43r 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 7a 6 a 9 bn d 15j 6 32 6 6 9 3o7 9 gvt3 6n"); -} -function isInRange(cp, ranges) { - let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0; - while (l < r) { - i = ((l + r) / 2) | 0; - min = ranges[2 * i]; - max = ranges[2 * i + 1]; - if (cp < min) { - r = i; - } - else if (cp > max) { - l = i + 1; - } - else { - return true; - } - } - return false; -} -function restoreRanges(data) { - let last = 0; - return data.split(" ").map(s => (last += parseInt(s, 36) | 0)); -} - -class DataSet { - constructor(raw2018, raw2019, raw2020, raw2021) { - this._raw2018 = raw2018; - this._raw2019 = raw2019; - this._raw2020 = raw2020; - this._raw2021 = raw2021; - } - get es2018() { - return (this._set2018 || (this._set2018 = new Set(this._raw2018.split(" ")))); - } - get es2019() { - return (this._set2019 || (this._set2019 = new Set(this._raw2019.split(" ")))); - } - get es2020() { - return (this._set2020 || (this._set2020 = new Set(this._raw2020.split(" ")))); - } - get es2021() { - return (this._set2021 || (this._set2021 = new Set(this._raw2021.split(" ")))); - } -} -const gcNameSet = new Set(["General_Category", "gc"]); -const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]); -const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", ""); -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"); -const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict"); -function isValidUnicodeProperty(version, name, value) { - if (gcNameSet.has(name)) { - return version >= 2018 && gcValueSets.es2018.has(value); - } - if (scNameSet.has(name)) { - return ((version >= 2018 && scValueSets.es2018.has(value)) || - (version >= 2019 && scValueSets.es2019.has(value)) || - (version >= 2020 && scValueSets.es2020.has(value)) || - (version >= 2021 && scValueSets.es2021.has(value))); - } - return false; -} -function isValidLoneUnicodeProperty(version, value) { - return ((version >= 2018 && binPropertySets.es2018.has(value)) || - (version >= 2019 && binPropertySets.es2019.has(value)) || - (version >= 2021 && binPropertySets.es2021.has(value))); -} - -const Backspace = 0x08; -const CharacterTabulation = 0x09; -const LineFeed = 0x0a; -const LineTabulation = 0x0b; -const FormFeed = 0x0c; -const CarriageReturn = 0x0d; -const ExclamationMark = 0x21; -const DollarSign = 0x24; -const LeftParenthesis = 0x28; -const RightParenthesis = 0x29; -const Asterisk = 0x2a; -const PlusSign = 0x2b; -const Comma = 0x2c; -const HyphenMinus = 0x2d; -const FullStop = 0x2e; -const Solidus = 0x2f; -const DigitZero = 0x30; -const DigitOne = 0x31; -const DigitSeven = 0x37; -const DigitNine = 0x39; -const Colon = 0x3a; -const LessThanSign = 0x3c; -const EqualsSign = 0x3d; -const GreaterThanSign = 0x3e; -const QuestionMark = 0x3f; -const LatinCapitalLetterA = 0x41; -const LatinCapitalLetterB = 0x42; -const LatinCapitalLetterD = 0x44; -const LatinCapitalLetterF = 0x46; -const LatinCapitalLetterP = 0x50; -const LatinCapitalLetterS = 0x53; -const LatinCapitalLetterW = 0x57; -const LatinCapitalLetterZ = 0x5a; -const LowLine = 0x5f; -const LatinSmallLetterA = 0x61; -const LatinSmallLetterB = 0x62; -const LatinSmallLetterC = 0x63; -const LatinSmallLetterD = 0x64; -const LatinSmallLetterF = 0x66; -const LatinSmallLetterG = 0x67; -const LatinSmallLetterI = 0x69; -const LatinSmallLetterK = 0x6b; -const LatinSmallLetterM = 0x6d; -const LatinSmallLetterN = 0x6e; -const LatinSmallLetterP = 0x70; -const LatinSmallLetterR = 0x72; -const LatinSmallLetterS = 0x73; -const LatinSmallLetterT = 0x74; -const LatinSmallLetterU = 0x75; -const LatinSmallLetterV = 0x76; -const LatinSmallLetterW = 0x77; -const LatinSmallLetterX = 0x78; -const LatinSmallLetterY = 0x79; -const LatinSmallLetterZ = 0x7a; -const LeftSquareBracket = 0x5b; -const ReverseSolidus = 0x5c; -const RightSquareBracket = 0x5d; -const CircumflexAccent = 0x5e; -const LeftCurlyBracket = 0x7b; -const VerticalLine = 0x7c; -const RightCurlyBracket = 0x7d; -const ZeroWidthNonJoiner = 0x200c; -const ZeroWidthJoiner = 0x200d; -const LineSeparator = 0x2028; -const ParagraphSeparator = 0x2029; -const MinCodePoint = 0x00; -const MaxCodePoint = 0x10ffff; -function isLatinLetter(code) { - return ((code >= LatinCapitalLetterA && code <= LatinCapitalLetterZ) || - (code >= LatinSmallLetterA && code <= LatinSmallLetterZ)); -} -function isDecimalDigit(code) { - return code >= DigitZero && code <= DigitNine; -} -function isOctalDigit(code) { - return code >= DigitZero && code <= DigitSeven; -} -function isHexDigit(code) { - return ((code >= DigitZero && code <= DigitNine) || - (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) || - (code >= LatinSmallLetterA && code <= LatinSmallLetterF)); -} -function isLineTerminator(code) { - return (code === LineFeed || - code === CarriageReturn || - code === LineSeparator || - code === ParagraphSeparator); -} -function isValidUnicode(code) { - return code >= MinCodePoint && code <= MaxCodePoint; -} -function digitToInt(code) { - if (code >= LatinSmallLetterA && code <= LatinSmallLetterF) { - return code - LatinSmallLetterA + 10; - } - if (code >= LatinCapitalLetterA && code <= LatinCapitalLetterF) { - return code - LatinCapitalLetterA + 10; - } - return code - DigitZero; -} -function isLeadSurrogate(code) { - return code >= 0xd800 && code <= 0xdbff; -} -function isTrailSurrogate(code) { - return code >= 0xdc00 && code <= 0xdfff; -} -function combineSurrogatePair(lead, trail) { - return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000; -} - -const legacyImpl = { - at(s, end, i) { - return i < end ? s.charCodeAt(i) : -1; - }, - width(c) { - return 1; - }, -}; -const unicodeImpl = { - at(s, end, i) { - return i < end ? s.codePointAt(i) : -1; - }, - width(c) { - return c > 0xffff ? 2 : 1; - }, -}; -class Reader { - constructor() { - this._impl = legacyImpl; - this._s = ""; - this._i = 0; - this._end = 0; - this._cp1 = -1; - this._w1 = 1; - this._cp2 = -1; - this._w2 = 1; - this._cp3 = -1; - this._w3 = 1; - this._cp4 = -1; - } - get source() { - return this._s; - } - get index() { - return this._i; - } - get currentCodePoint() { - return this._cp1; - } - get nextCodePoint() { - return this._cp2; - } - get nextCodePoint2() { - return this._cp3; - } - get nextCodePoint3() { - return this._cp4; - } - reset(source, start, end, uFlag) { - this._impl = uFlag ? unicodeImpl : legacyImpl; - this._s = source; - this._end = end; - this.rewind(start); - } - rewind(index) { - const impl = this._impl; - this._i = index; - this._cp1 = impl.at(this._s, this._end, index); - this._w1 = impl.width(this._cp1); - this._cp2 = impl.at(this._s, this._end, index + this._w1); - this._w2 = impl.width(this._cp2); - this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2); - this._w3 = impl.width(this._cp3); - this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3); - } - advance() { - if (this._cp1 !== -1) { - const impl = this._impl; - this._i += this._w1; - this._cp1 = this._cp2; - this._w1 = this._w2; - this._cp2 = this._cp3; - this._w2 = impl.width(this._cp2); - this._cp3 = this._cp4; - this._w3 = impl.width(this._cp3); - this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3); - } - } - eat(cp) { - if (this._cp1 === cp) { - this.advance(); - return true; - } - return false; - } - eat2(cp1, cp2) { - if (this._cp1 === cp1 && this._cp2 === cp2) { - this.advance(); - this.advance(); - return true; - } - return false; - } - eat3(cp1, cp2, cp3) { - if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) { - this.advance(); - this.advance(); - this.advance(); - return true; - } - return false; - } -} - -class RegExpSyntaxError extends SyntaxError { - constructor(source, uFlag, index, message) { - if (source) { - if (!source.startsWith("/")) { - source = `/${source}/${uFlag ? "u" : ""}`; - } - source = `: ${source}`; - } - super(`Invalid regular expression${source}: ${message}`); - this.index = index; - } -} - -function isSyntaxCharacter(cp) { - return (cp === CircumflexAccent || - cp === DollarSign || - cp === ReverseSolidus || - cp === FullStop || - cp === Asterisk || - cp === PlusSign || - cp === QuestionMark || - cp === LeftParenthesis || - cp === RightParenthesis || - cp === LeftSquareBracket || - cp === RightSquareBracket || - cp === LeftCurlyBracket || - cp === RightCurlyBracket || - cp === VerticalLine); -} -function isRegExpIdentifierStart(cp) { - return isIdStart(cp) || cp === DollarSign || cp === LowLine; -} -function isRegExpIdentifierPart(cp) { - return (isIdContinue(cp) || - cp === DollarSign || - cp === LowLine || - cp === ZeroWidthNonJoiner || - cp === ZeroWidthJoiner); -} -function isUnicodePropertyNameCharacter(cp) { - return isLatinLetter(cp) || cp === LowLine; -} -function isUnicodePropertyValueCharacter(cp) { - return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp); -} -class RegExpValidator { - constructor(options) { - this._reader = new Reader(); - this._uFlag = false; - this._nFlag = false; - this._lastIntValue = 0; - this._lastMinValue = 0; - this._lastMaxValue = 0; - this._lastStrValue = ""; - this._lastKeyValue = ""; - this._lastValValue = ""; - this._lastAssertionIsQuantifiable = false; - this._numCapturingParens = 0; - this._groupNames = new Set(); - this._backreferenceNames = new Set(); - this._options = options || {}; - } - validateLiteral(source, start = 0, end = source.length) { - this._uFlag = this._nFlag = false; - this.reset(source, start, end); - this.onLiteralEnter(start); - if (this.eat(Solidus) && this.eatRegExpBody() && this.eat(Solidus)) { - const flagStart = this.index; - const uFlag = source.includes("u", flagStart); - this.validateFlags(source, flagStart, end); - this.validatePattern(source, start + 1, flagStart - 1, uFlag); - } - else if (start >= end) { - this.raise("Empty"); - } - else { - const c = String.fromCodePoint(this.currentCodePoint); - this.raise(`Unexpected character '${c}'`); - } - this.onLiteralLeave(start, end); - } - validateFlags(source, start = 0, end = source.length) { - const existingFlags = new Set(); - let global = false; - let ignoreCase = false; - let multiline = false; - let sticky = false; - let unicode = false; - let dotAll = false; - let hasIndices = false; - for (let i = start; i < end; ++i) { - const flag = source.charCodeAt(i); - if (existingFlags.has(flag)) { - this.raise(`Duplicated flag '${source[i]}'`); - } - existingFlags.add(flag); - if (flag === LatinSmallLetterG) { - global = true; - } - else if (flag === LatinSmallLetterI) { - ignoreCase = true; - } - else if (flag === LatinSmallLetterM) { - multiline = true; - } - else if (flag === LatinSmallLetterU && this.ecmaVersion >= 2015) { - unicode = true; - } - else if (flag === LatinSmallLetterY && this.ecmaVersion >= 2015) { - sticky = true; - } - else if (flag === LatinSmallLetterS && this.ecmaVersion >= 2018) { - dotAll = true; - } - else if (flag === LatinSmallLetterD && this.ecmaVersion >= 2022) { - hasIndices = true; - } - else { - this.raise(`Invalid flag '${source[i]}'`); - } - } - this.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); - } - validatePattern(source, start = 0, end = source.length, uFlag = false) { - this._uFlag = uFlag && this.ecmaVersion >= 2015; - this._nFlag = uFlag && this.ecmaVersion >= 2018; - this.reset(source, start, end); - this.consumePattern(); - if (!this._nFlag && - this.ecmaVersion >= 2018 && - this._groupNames.size > 0) { - this._nFlag = true; - this.rewind(start); - this.consumePattern(); - } - } - get strict() { - return Boolean(this._options.strict || this._uFlag); - } - get ecmaVersion() { - return this._options.ecmaVersion || 2022; - } - onLiteralEnter(start) { - if (this._options.onLiteralEnter) { - this._options.onLiteralEnter(start); - } - } - onLiteralLeave(start, end) { - if (this._options.onLiteralLeave) { - this._options.onLiteralLeave(start, end); - } - } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { - if (this._options.onFlags) { - this._options.onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices); - } - } - onPatternEnter(start) { - if (this._options.onPatternEnter) { - this._options.onPatternEnter(start); - } - } - onPatternLeave(start, end) { - if (this._options.onPatternLeave) { - this._options.onPatternLeave(start, end); - } - } - onDisjunctionEnter(start) { - if (this._options.onDisjunctionEnter) { - this._options.onDisjunctionEnter(start); - } - } - onDisjunctionLeave(start, end) { - if (this._options.onDisjunctionLeave) { - this._options.onDisjunctionLeave(start, end); - } - } - onAlternativeEnter(start, index) { - if (this._options.onAlternativeEnter) { - this._options.onAlternativeEnter(start, index); - } - } - onAlternativeLeave(start, end, index) { - if (this._options.onAlternativeLeave) { - this._options.onAlternativeLeave(start, end, index); - } - } - onGroupEnter(start) { - if (this._options.onGroupEnter) { - this._options.onGroupEnter(start); - } - } - onGroupLeave(start, end) { - if (this._options.onGroupLeave) { - this._options.onGroupLeave(start, end); - } - } - onCapturingGroupEnter(start, name) { - if (this._options.onCapturingGroupEnter) { - this._options.onCapturingGroupEnter(start, name); - } - } - onCapturingGroupLeave(start, end, name) { - if (this._options.onCapturingGroupLeave) { - this._options.onCapturingGroupLeave(start, end, name); - } - } - onQuantifier(start, end, min, max, greedy) { - if (this._options.onQuantifier) { - this._options.onQuantifier(start, end, min, max, greedy); - } - } - onLookaroundAssertionEnter(start, kind, negate) { - if (this._options.onLookaroundAssertionEnter) { - this._options.onLookaroundAssertionEnter(start, kind, negate); - } - } - onLookaroundAssertionLeave(start, end, kind, negate) { - if (this._options.onLookaroundAssertionLeave) { - this._options.onLookaroundAssertionLeave(start, end, kind, negate); - } - } - onEdgeAssertion(start, end, kind) { - if (this._options.onEdgeAssertion) { - this._options.onEdgeAssertion(start, end, kind); - } - } - onWordBoundaryAssertion(start, end, kind, negate) { - if (this._options.onWordBoundaryAssertion) { - this._options.onWordBoundaryAssertion(start, end, kind, negate); - } - } - onAnyCharacterSet(start, end, kind) { - if (this._options.onAnyCharacterSet) { - this._options.onAnyCharacterSet(start, end, kind); - } - } - onEscapeCharacterSet(start, end, kind, negate) { - if (this._options.onEscapeCharacterSet) { - this._options.onEscapeCharacterSet(start, end, kind, negate); - } - } - onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { - if (this._options.onUnicodePropertyCharacterSet) { - this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate); - } - } - onCharacter(start, end, value) { - if (this._options.onCharacter) { - this._options.onCharacter(start, end, value); - } - } - onBackreference(start, end, ref) { - if (this._options.onBackreference) { - this._options.onBackreference(start, end, ref); - } - } - onCharacterClassEnter(start, negate) { - if (this._options.onCharacterClassEnter) { - this._options.onCharacterClassEnter(start, negate); - } - } - onCharacterClassLeave(start, end, negate) { - if (this._options.onCharacterClassLeave) { - this._options.onCharacterClassLeave(start, end, negate); - } - } - onCharacterClassRange(start, end, min, max) { - if (this._options.onCharacterClassRange) { - this._options.onCharacterClassRange(start, end, min, max); - } - } - get source() { - return this._reader.source; - } - get index() { - return this._reader.index; - } - get currentCodePoint() { - return this._reader.currentCodePoint; - } - get nextCodePoint() { - return this._reader.nextCodePoint; - } - get nextCodePoint2() { - return this._reader.nextCodePoint2; - } - get nextCodePoint3() { - return this._reader.nextCodePoint3; - } - reset(source, start, end) { - this._reader.reset(source, start, end, this._uFlag); - } - rewind(index) { - this._reader.rewind(index); - } - advance() { - this._reader.advance(); - } - eat(cp) { - return this._reader.eat(cp); - } - eat2(cp1, cp2) { - return this._reader.eat2(cp1, cp2); - } - eat3(cp1, cp2, cp3) { - return this._reader.eat3(cp1, cp2, cp3); - } - raise(message) { - throw new RegExpSyntaxError(this.source, this._uFlag, this.index, message); - } - eatRegExpBody() { - const start = this.index; - let inClass = false; - let escaped = false; - for (;;) { - const cp = this.currentCodePoint; - if (cp === -1 || isLineTerminator(cp)) { - const kind = inClass ? "character class" : "regular expression"; - this.raise(`Unterminated ${kind}`); - } - if (escaped) { - escaped = false; - } - else if (cp === ReverseSolidus) { - escaped = true; - } - else if (cp === LeftSquareBracket) { - inClass = true; - } - else if (cp === RightSquareBracket) { - inClass = false; - } - else if ((cp === Solidus && !inClass) || - (cp === Asterisk && this.index === start)) { - break; - } - this.advance(); - } - return this.index !== start; - } - consumePattern() { - const start = this.index; - this._numCapturingParens = this.countCapturingParens(); - this._groupNames.clear(); - this._backreferenceNames.clear(); - this.onPatternEnter(start); - this.consumeDisjunction(); - const cp = this.currentCodePoint; - if (this.currentCodePoint !== -1) { - if (cp === RightParenthesis) { - this.raise("Unmatched ')'"); - } - if (cp === ReverseSolidus) { - this.raise("\\ at end of pattern"); - } - if (cp === RightSquareBracket || cp === RightCurlyBracket) { - this.raise("Lone quantifier brackets"); - } - const c = String.fromCodePoint(cp); - this.raise(`Unexpected character '${c}'`); - } - for (const name of this._backreferenceNames) { - if (!this._groupNames.has(name)) { - this.raise("Invalid named capture referenced"); - } - } - this.onPatternLeave(start, this.index); - } - countCapturingParens() { - const start = this.index; - let inClass = false; - let escaped = false; - let count = 0; - let cp = 0; - while ((cp = this.currentCodePoint) !== -1) { - if (escaped) { - escaped = false; - } - else if (cp === ReverseSolidus) { - escaped = true; - } - else if (cp === LeftSquareBracket) { - inClass = true; - } - else if (cp === RightSquareBracket) { - inClass = false; - } - else if (cp === LeftParenthesis && - !inClass && - (this.nextCodePoint !== QuestionMark || - (this.nextCodePoint2 === LessThanSign && - this.nextCodePoint3 !== EqualsSign && - this.nextCodePoint3 !== ExclamationMark))) { - count += 1; - } - this.advance(); - } - this.rewind(start); - return count; - } - consumeDisjunction() { - const start = this.index; - let i = 0; - this.onDisjunctionEnter(start); - do { - this.consumeAlternative(i++); - } while (this.eat(VerticalLine)); - if (this.consumeQuantifier(true)) { - this.raise("Nothing to repeat"); - } - if (this.eat(LeftCurlyBracket)) { - this.raise("Lone quantifier brackets"); - } - this.onDisjunctionLeave(start, this.index); - } - consumeAlternative(i) { - const start = this.index; - this.onAlternativeEnter(start, i); - while (this.currentCodePoint !== -1 && this.consumeTerm()) { - } - this.onAlternativeLeave(start, this.index, i); - } - consumeTerm() { - if (this._uFlag || this.strict) { - return (this.consumeAssertion() || - (this.consumeAtom() && this.consumeOptionalQuantifier())); - } - return ((this.consumeAssertion() && - (!this._lastAssertionIsQuantifiable || - this.consumeOptionalQuantifier())) || - (this.consumeExtendedAtom() && this.consumeOptionalQuantifier())); - } - consumeOptionalQuantifier() { - this.consumeQuantifier(); - return true; - } - consumeAssertion() { - const start = this.index; - this._lastAssertionIsQuantifiable = false; - if (this.eat(CircumflexAccent)) { - this.onEdgeAssertion(start, this.index, "start"); - return true; - } - if (this.eat(DollarSign)) { - this.onEdgeAssertion(start, this.index, "end"); - return true; - } - if (this.eat2(ReverseSolidus, LatinCapitalLetterB)) { - this.onWordBoundaryAssertion(start, this.index, "word", true); - return true; - } - if (this.eat2(ReverseSolidus, LatinSmallLetterB)) { - this.onWordBoundaryAssertion(start, this.index, "word", false); - return true; - } - if (this.eat2(LeftParenthesis, QuestionMark)) { - const lookbehind = this.ecmaVersion >= 2018 && this.eat(LessThanSign); - let negate = false; - if (this.eat(EqualsSign) || (negate = this.eat(ExclamationMark))) { - const kind = lookbehind ? "lookbehind" : "lookahead"; - this.onLookaroundAssertionEnter(start, kind, negate); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this._lastAssertionIsQuantifiable = !lookbehind && !this.strict; - this.onLookaroundAssertionLeave(start, this.index, kind, negate); - return true; - } - this.rewind(start); - } - return false; - } - consumeQuantifier(noConsume = false) { - const start = this.index; - let min = 0; - let max = 0; - let greedy = false; - if (this.eat(Asterisk)) { - min = 0; - max = Number.POSITIVE_INFINITY; - } - else if (this.eat(PlusSign)) { - min = 1; - max = Number.POSITIVE_INFINITY; - } - else if (this.eat(QuestionMark)) { - min = 0; - max = 1; - } - else if (this.eatBracedQuantifier(noConsume)) { - min = this._lastMinValue; - max = this._lastMaxValue; - } - else { - return false; - } - greedy = !this.eat(QuestionMark); - if (!noConsume) { - this.onQuantifier(start, this.index, min, max, greedy); - } - return true; - } - eatBracedQuantifier(noError) { - const start = this.index; - if (this.eat(LeftCurlyBracket)) { - this._lastMinValue = 0; - this._lastMaxValue = Number.POSITIVE_INFINITY; - if (this.eatDecimalDigits()) { - this._lastMinValue = this._lastMaxValue = this._lastIntValue; - if (this.eat(Comma)) { - this._lastMaxValue = this.eatDecimalDigits() - ? this._lastIntValue - : Number.POSITIVE_INFINITY; - } - if (this.eat(RightCurlyBracket)) { - if (!noError && this._lastMaxValue < this._lastMinValue) { - this.raise("numbers out of order in {} quantifier"); - } - return true; - } - } - if (!noError && (this._uFlag || this.strict)) { - this.raise("Incomplete quantifier"); - } - this.rewind(start); - } - return false; - } - consumeAtom() { - return (this.consumePatternCharacter() || - this.consumeDot() || - this.consumeReverseSolidusAtomEscape() || - this.consumeCharacterClass() || - this.consumeUncapturingGroup() || - this.consumeCapturingGroup()); - } - consumeDot() { - if (this.eat(FullStop)) { - this.onAnyCharacterSet(this.index - 1, this.index, "any"); - return true; - } - return false; - } - consumeReverseSolidusAtomEscape() { - const start = this.index; - if (this.eat(ReverseSolidus)) { - if (this.consumeAtomEscape()) { - return true; - } - this.rewind(start); - } - return false; - } - consumeUncapturingGroup() { - const start = this.index; - if (this.eat3(LeftParenthesis, QuestionMark, Colon)) { - this.onGroupEnter(start); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this.onGroupLeave(start, this.index); - return true; - } - return false; - } - consumeCapturingGroup() { - const start = this.index; - if (this.eat(LeftParenthesis)) { - let name = null; - if (this.ecmaVersion >= 2018) { - if (this.consumeGroupSpecifier()) { - name = this._lastStrValue; - } - } - else if (this.currentCodePoint === QuestionMark) { - this.raise("Invalid group"); - } - this.onCapturingGroupEnter(start, name); - this.consumeDisjunction(); - if (!this.eat(RightParenthesis)) { - this.raise("Unterminated group"); - } - this.onCapturingGroupLeave(start, this.index, name); - return true; - } - return false; - } - consumeExtendedAtom() { - return (this.consumeDot() || - this.consumeReverseSolidusAtomEscape() || - this.consumeReverseSolidusFollowedByC() || - this.consumeCharacterClass() || - this.consumeUncapturingGroup() || - this.consumeCapturingGroup() || - this.consumeInvalidBracedQuantifier() || - this.consumeExtendedPatternCharacter()); - } - consumeReverseSolidusFollowedByC() { - const start = this.index; - if (this.currentCodePoint === ReverseSolidus && - this.nextCodePoint === LatinSmallLetterC) { - this._lastIntValue = this.currentCodePoint; - this.advance(); - this.onCharacter(start, this.index, ReverseSolidus); - return true; - } - return false; - } - consumeInvalidBracedQuantifier() { - if (this.eatBracedQuantifier(true)) { - this.raise("Nothing to repeat"); - } - return false; - } - consumePatternCharacter() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && !isSyntaxCharacter(cp)) { - this.advance(); - this.onCharacter(start, this.index, cp); - return true; - } - return false; - } - consumeExtendedPatternCharacter() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && - cp !== CircumflexAccent && - cp !== DollarSign && - cp !== ReverseSolidus && - cp !== FullStop && - cp !== Asterisk && - cp !== PlusSign && - cp !== QuestionMark && - cp !== LeftParenthesis && - cp !== RightParenthesis && - cp !== LeftSquareBracket && - cp !== VerticalLine) { - this.advance(); - this.onCharacter(start, this.index, cp); - return true; - } - return false; - } - consumeGroupSpecifier() { - if (this.eat(QuestionMark)) { - if (this.eatGroupName()) { - if (!this._groupNames.has(this._lastStrValue)) { - this._groupNames.add(this._lastStrValue); - return true; - } - this.raise("Duplicate capture group name"); - } - this.raise("Invalid group"); - } - return false; - } - consumeAtomEscape() { - if (this.consumeBackreference() || - this.consumeCharacterClassEscape() || - this.consumeCharacterEscape() || - (this._nFlag && this.consumeKGroupName())) { - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - return false; - } - consumeBackreference() { - const start = this.index; - if (this.eatDecimalEscape()) { - const n = this._lastIntValue; - if (n <= this._numCapturingParens) { - this.onBackreference(start - 1, this.index, n); - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - consumeCharacterClassEscape() { - const start = this.index; - if (this.eat(LatinSmallLetterD)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "digit", false); - return true; - } - if (this.eat(LatinCapitalLetterD)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "digit", true); - return true; - } - if (this.eat(LatinSmallLetterS)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "space", false); - return true; - } - if (this.eat(LatinCapitalLetterS)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "space", true); - return true; - } - if (this.eat(LatinSmallLetterW)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "word", false); - return true; - } - if (this.eat(LatinCapitalLetterW)) { - this._lastIntValue = -1; - this.onEscapeCharacterSet(start - 1, this.index, "word", true); - return true; - } - let negate = false; - if (this._uFlag && - this.ecmaVersion >= 2018 && - (this.eat(LatinSmallLetterP) || - (negate = this.eat(LatinCapitalLetterP)))) { - this._lastIntValue = -1; - if (this.eat(LeftCurlyBracket) && - this.eatUnicodePropertyValueExpression() && - this.eat(RightCurlyBracket)) { - this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", this._lastKeyValue, this._lastValValue || null, negate); - return true; - } - this.raise("Invalid property name"); - } - return false; - } - consumeCharacterEscape() { - const start = this.index; - if (this.eatControlEscape() || - this.eatCControlLetter() || - this.eatZero() || - this.eatHexEscapeSequence() || - this.eatRegExpUnicodeEscapeSequence() || - (!this.strict && - !this._uFlag && - this.eatLegacyOctalEscapeSequence()) || - this.eatIdentityEscape()) { - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - return false; - } - consumeKGroupName() { - const start = this.index; - if (this.eat(LatinSmallLetterK)) { - if (this.eatGroupName()) { - const groupName = this._lastStrValue; - this._backreferenceNames.add(groupName); - this.onBackreference(start - 1, this.index, groupName); - return true; - } - this.raise("Invalid named reference"); - } - return false; - } - consumeCharacterClass() { - const start = this.index; - if (this.eat(LeftSquareBracket)) { - const negate = this.eat(CircumflexAccent); - this.onCharacterClassEnter(start, negate); - this.consumeClassRanges(); - if (!this.eat(RightSquareBracket)) { - this.raise("Unterminated character class"); - } - this.onCharacterClassLeave(start, this.index, negate); - return true; - } - return false; - } - consumeClassRanges() { - const strict = this.strict || this._uFlag; - for (;;) { - const rangeStart = this.index; - if (!this.consumeClassAtom()) { - break; - } - const min = this._lastIntValue; - if (!this.eat(HyphenMinus)) { - continue; - } - this.onCharacter(this.index - 1, this.index, HyphenMinus); - if (!this.consumeClassAtom()) { - break; - } - const max = this._lastIntValue; - if (min === -1 || max === -1) { - if (strict) { - this.raise("Invalid character class"); - } - continue; - } - if (min > max) { - this.raise("Range out of order in character class"); - } - this.onCharacterClassRange(rangeStart, this.index, min, max); - } - } - consumeClassAtom() { - const start = this.index; - const cp = this.currentCodePoint; - if (cp !== -1 && cp !== ReverseSolidus && cp !== RightSquareBracket) { - this.advance(); - this._lastIntValue = cp; - this.onCharacter(start, this.index, this._lastIntValue); - return true; - } - if (this.eat(ReverseSolidus)) { - if (this.consumeClassEscape()) { - return true; - } - if (!this.strict && this.currentCodePoint === LatinSmallLetterC) { - this._lastIntValue = ReverseSolidus; - this.onCharacter(start, this.index, this._lastIntValue); - return true; - } - if (this.strict || this._uFlag) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - consumeClassEscape() { - const start = this.index; - if (this.eat(LatinSmallLetterB)) { - this._lastIntValue = Backspace; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - if (this._uFlag && this.eat(HyphenMinus)) { - this._lastIntValue = HyphenMinus; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - let cp = 0; - if (!this.strict && - !this._uFlag && - this.currentCodePoint === LatinSmallLetterC && - (isDecimalDigit((cp = this.nextCodePoint)) || cp === LowLine)) { - this.advance(); - this.advance(); - this._lastIntValue = cp % 0x20; - this.onCharacter(start - 1, this.index, this._lastIntValue); - return true; - } - return (this.consumeCharacterClassEscape() || this.consumeCharacterEscape()); - } - eatGroupName() { - if (this.eat(LessThanSign)) { - if (this.eatRegExpIdentifierName() && this.eat(GreaterThanSign)) { - return true; - } - this.raise("Invalid capture group name"); - } - return false; - } - eatRegExpIdentifierName() { - if (this.eatRegExpIdentifierStart()) { - this._lastStrValue = String.fromCodePoint(this._lastIntValue); - while (this.eatRegExpIdentifierPart()) { - this._lastStrValue += String.fromCodePoint(this._lastIntValue); - } - return true; - } - return false; - } - eatRegExpIdentifierStart() { - const start = this.index; - const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; - let cp = this.currentCodePoint; - this.advance(); - if (cp === ReverseSolidus && - this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { - cp = this._lastIntValue; - } - else if (forceUFlag && - isLeadSurrogate(cp) && - isTrailSurrogate(this.currentCodePoint)) { - cp = combineSurrogatePair(cp, this.currentCodePoint); - this.advance(); - } - if (isRegExpIdentifierStart(cp)) { - this._lastIntValue = cp; - return true; - } - if (this.index !== start) { - this.rewind(start); - } - return false; - } - eatRegExpIdentifierPart() { - const start = this.index; - const forceUFlag = !this._uFlag && this.ecmaVersion >= 2020; - let cp = this.currentCodePoint; - this.advance(); - if (cp === ReverseSolidus && - this.eatRegExpUnicodeEscapeSequence(forceUFlag)) { - cp = this._lastIntValue; - } - else if (forceUFlag && - isLeadSurrogate(cp) && - isTrailSurrogate(this.currentCodePoint)) { - cp = combineSurrogatePair(cp, this.currentCodePoint); - this.advance(); - } - if (isRegExpIdentifierPart(cp)) { - this._lastIntValue = cp; - return true; - } - if (this.index !== start) { - this.rewind(start); - } - return false; - } - eatCControlLetter() { - const start = this.index; - if (this.eat(LatinSmallLetterC)) { - if (this.eatControlLetter()) { - return true; - } - this.rewind(start); - } - return false; - } - eatZero() { - if (this.currentCodePoint === DigitZero && - !isDecimalDigit(this.nextCodePoint)) { - this._lastIntValue = 0; - this.advance(); - return true; - } - return false; - } - eatControlEscape() { - if (this.eat(LatinSmallLetterF)) { - this._lastIntValue = FormFeed; - return true; - } - if (this.eat(LatinSmallLetterN)) { - this._lastIntValue = LineFeed; - return true; - } - if (this.eat(LatinSmallLetterR)) { - this._lastIntValue = CarriageReturn; - return true; - } - if (this.eat(LatinSmallLetterT)) { - this._lastIntValue = CharacterTabulation; - return true; - } - if (this.eat(LatinSmallLetterV)) { - this._lastIntValue = LineTabulation; - return true; - } - return false; - } - eatControlLetter() { - const cp = this.currentCodePoint; - if (isLatinLetter(cp)) { - this.advance(); - this._lastIntValue = cp % 0x20; - return true; - } - return false; - } - eatRegExpUnicodeEscapeSequence(forceUFlag = false) { - const start = this.index; - const uFlag = forceUFlag || this._uFlag; - if (this.eat(LatinSmallLetterU)) { - if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) || - this.eatFixedHexDigits(4) || - (uFlag && this.eatRegExpUnicodeCodePointEscape())) { - return true; - } - if (this.strict || uFlag) { - this.raise("Invalid unicode escape"); - } - this.rewind(start); - } - return false; - } - eatRegExpUnicodeSurrogatePairEscape() { - const start = this.index; - if (this.eatFixedHexDigits(4)) { - const lead = this._lastIntValue; - if (isLeadSurrogate(lead) && - this.eat(ReverseSolidus) && - this.eat(LatinSmallLetterU) && - this.eatFixedHexDigits(4)) { - const trail = this._lastIntValue; - if (isTrailSurrogate(trail)) { - this._lastIntValue = combineSurrogatePair(lead, trail); - return true; - } - } - this.rewind(start); - } - return false; - } - eatRegExpUnicodeCodePointEscape() { - const start = this.index; - if (this.eat(LeftCurlyBracket) && - this.eatHexDigits() && - this.eat(RightCurlyBracket) && - isValidUnicode(this._lastIntValue)) { - return true; - } - this.rewind(start); - return false; - } - eatIdentityEscape() { - const cp = this.currentCodePoint; - if (this.isValidIdentityEscape(cp)) { - this._lastIntValue = cp; - this.advance(); - return true; - } - return false; - } - isValidIdentityEscape(cp) { - if (cp === -1) { - return false; - } - if (this._uFlag) { - return isSyntaxCharacter(cp) || cp === Solidus; - } - if (this.strict) { - return !isIdContinue(cp); - } - if (this._nFlag) { - return !(cp === LatinSmallLetterC || cp === LatinSmallLetterK); - } - return cp !== LatinSmallLetterC; - } - eatDecimalEscape() { - this._lastIntValue = 0; - let cp = this.currentCodePoint; - if (cp >= DigitOne && cp <= DigitNine) { - do { - this._lastIntValue = 10 * this._lastIntValue + (cp - DigitZero); - this.advance(); - } while ((cp = this.currentCodePoint) >= DigitZero && - cp <= DigitNine); - return true; - } - return false; - } - eatUnicodePropertyValueExpression() { - const start = this.index; - if (this.eatUnicodePropertyName() && this.eat(EqualsSign)) { - this._lastKeyValue = this._lastStrValue; - if (this.eatUnicodePropertyValue()) { - this._lastValValue = this._lastStrValue; - if (isValidUnicodeProperty(this.ecmaVersion, this._lastKeyValue, this._lastValValue)) { - return true; - } - this.raise("Invalid property name"); - } - } - this.rewind(start); - if (this.eatLoneUnicodePropertyNameOrValue()) { - const nameOrValue = this._lastStrValue; - if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) { - this._lastKeyValue = "General_Category"; - this._lastValValue = nameOrValue; - return true; - } - if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) { - this._lastKeyValue = nameOrValue; - this._lastValValue = ""; - return true; - } - this.raise("Invalid property name"); - } - return false; - } - eatUnicodePropertyName() { - this._lastStrValue = ""; - while (isUnicodePropertyNameCharacter(this.currentCodePoint)) { - this._lastStrValue += String.fromCodePoint(this.currentCodePoint); - this.advance(); - } - return this._lastStrValue !== ""; - } - eatUnicodePropertyValue() { - this._lastStrValue = ""; - while (isUnicodePropertyValueCharacter(this.currentCodePoint)) { - this._lastStrValue += String.fromCodePoint(this.currentCodePoint); - this.advance(); - } - return this._lastStrValue !== ""; - } - eatLoneUnicodePropertyNameOrValue() { - return this.eatUnicodePropertyValue(); - } - eatHexEscapeSequence() { - const start = this.index; - if (this.eat(LatinSmallLetterX)) { - if (this.eatFixedHexDigits(2)) { - return true; - } - if (this._uFlag || this.strict) { - this.raise("Invalid escape"); - } - this.rewind(start); - } - return false; - } - eatDecimalDigits() { - const start = this.index; - this._lastIntValue = 0; - while (isDecimalDigit(this.currentCodePoint)) { - this._lastIntValue = - 10 * this._lastIntValue + digitToInt(this.currentCodePoint); - this.advance(); - } - return this.index !== start; - } - eatHexDigits() { - const start = this.index; - this._lastIntValue = 0; - while (isHexDigit(this.currentCodePoint)) { - this._lastIntValue = - 16 * this._lastIntValue + digitToInt(this.currentCodePoint); - this.advance(); - } - return this.index !== start; - } - eatLegacyOctalEscapeSequence() { - if (this.eatOctalDigit()) { - const n1 = this._lastIntValue; - if (this.eatOctalDigit()) { - const n2 = this._lastIntValue; - if (n1 <= 3 && this.eatOctalDigit()) { - this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue; - } - else { - this._lastIntValue = n1 * 8 + n2; - } - } - else { - this._lastIntValue = n1; - } - return true; - } - return false; - } - eatOctalDigit() { - const cp = this.currentCodePoint; - if (isOctalDigit(cp)) { - this.advance(); - this._lastIntValue = cp - DigitZero; - return true; - } - this._lastIntValue = 0; - return false; - } - eatFixedHexDigits(length) { - const start = this.index; - this._lastIntValue = 0; - for (let i = 0; i < length; ++i) { - const cp = this.currentCodePoint; - if (!isHexDigit(cp)) { - this.rewind(start); - return false; - } - this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp); - this.advance(); - } - return true; - } -} - -const DummyPattern = {}; -const DummyFlags = {}; -const DummyCapturingGroup = {}; -class RegExpParserState { - constructor(options) { - this._node = DummyPattern; - this._flags = DummyFlags; - this._backreferences = []; - this._capturingGroups = []; - this.source = ""; - this.strict = Boolean(options && options.strict); - this.ecmaVersion = (options && options.ecmaVersion) || 2022; - } - get pattern() { - if (this._node.type !== "Pattern") { - throw new Error("UnknownError"); - } - return this._node; - } - get flags() { - if (this._flags.type !== "Flags") { - throw new Error("UnknownError"); - } - return this._flags; - } - onFlags(start, end, global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices) { - this._flags = { - type: "Flags", - parent: null, - start, - end, - raw: this.source.slice(start, end), - global, - ignoreCase, - multiline, - unicode, - sticky, - dotAll, - hasIndices, - }; - } - onPatternEnter(start) { - this._node = { - type: "Pattern", - parent: null, - start, - end: start, - raw: "", - alternatives: [], - }; - this._backreferences.length = 0; - this._capturingGroups.length = 0; - } - onPatternLeave(start, end) { - this._node.end = end; - this._node.raw = this.source.slice(start, end); - for (const reference of this._backreferences) { - const ref = reference.ref; - const group = typeof ref === "number" - ? this._capturingGroups[ref - 1] - : this._capturingGroups.find(g => g.name === ref); - reference.resolved = group; - group.references.push(reference); - } - } - onAlternativeEnter(start) { - const parent = this._node; - if (parent.type !== "Assertion" && - parent.type !== "CapturingGroup" && - parent.type !== "Group" && - parent.type !== "Pattern") { - throw new Error("UnknownError"); - } - this._node = { - type: "Alternative", - parent, - start, - end: start, - raw: "", - elements: [], - }; - parent.alternatives.push(this._node); - } - onAlternativeLeave(start, end) { - const node = this._node; - if (node.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onGroupEnter(start) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "Group", - parent, - start, - end: start, - raw: "", - alternatives: [], - }; - parent.elements.push(this._node); - } - onGroupLeave(start, end) { - const node = this._node; - if (node.type !== "Group" || node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onCapturingGroupEnter(start, name) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "CapturingGroup", - parent, - start, - end: start, - raw: "", - name, - alternatives: [], - references: [], - }; - parent.elements.push(this._node); - this._capturingGroups.push(this._node); - } - onCapturingGroupLeave(start, end) { - const node = this._node; - if (node.type !== "CapturingGroup" || - node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onQuantifier(start, end, min, max, greedy) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const element = parent.elements.pop(); - if (element == null || - element.type === "Quantifier" || - (element.type === "Assertion" && element.kind !== "lookahead")) { - throw new Error("UnknownError"); - } - const node = { - type: "Quantifier", - parent, - start: element.start, - end, - raw: this.source.slice(element.start, end), - min, - max, - greedy, - element, - }; - parent.elements.push(node); - element.parent = node; - } - onLookaroundAssertionEnter(start, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const node = (this._node = { - type: "Assertion", - parent, - start, - end: start, - raw: "", - kind, - negate, - alternatives: [], - }); - parent.elements.push(node); - } - onLookaroundAssertionLeave(start, end) { - const node = this._node; - if (node.type !== "Assertion" || node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onEdgeAssertion(start, end, kind) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Assertion", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - }); - } - onWordBoundaryAssertion(start, end, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Assertion", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - negate, - }); - } - onAnyCharacterSet(start, end, kind) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - }); - } - onEscapeCharacterSet(start, end, kind, negate) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - negate, - }); - } - onUnicodePropertyCharacterSet(start, end, kind, key, value, negate) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "CharacterSet", - parent, - start, - end, - raw: this.source.slice(start, end), - kind, - key, - value, - negate, - }); - } - onCharacter(start, end, value) { - const parent = this._node; - if (parent.type !== "Alternative" && parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - parent.elements.push({ - type: "Character", - parent, - start, - end, - raw: this.source.slice(start, end), - value, - }); - } - onBackreference(start, end, ref) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - const node = { - type: "Backreference", - parent, - start, - end, - raw: this.source.slice(start, end), - ref, - resolved: DummyCapturingGroup, - }; - parent.elements.push(node); - this._backreferences.push(node); - } - onCharacterClassEnter(start, negate) { - const parent = this._node; - if (parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - this._node = { - type: "CharacterClass", - parent, - start, - end: start, - raw: "", - negate, - elements: [], - }; - parent.elements.push(this._node); - } - onCharacterClassLeave(start, end) { - const node = this._node; - if (node.type !== "CharacterClass" || - node.parent.type !== "Alternative") { - throw new Error("UnknownError"); - } - node.end = end; - node.raw = this.source.slice(start, end); - this._node = node.parent; - } - onCharacterClassRange(start, end) { - const parent = this._node; - if (parent.type !== "CharacterClass") { - throw new Error("UnknownError"); - } - const elements = parent.elements; - const max = elements.pop(); - const hyphen = elements.pop(); - const min = elements.pop(); - if (!min || - !max || - !hyphen || - min.type !== "Character" || - max.type !== "Character" || - hyphen.type !== "Character" || - hyphen.value !== HyphenMinus) { - throw new Error("UnknownError"); - } - const node = { - type: "CharacterClassRange", - parent, - start, - end, - raw: this.source.slice(start, end), - min, - max, - }; - min.parent = node; - max.parent = node; - elements.push(node); - } -} -class RegExpParser { - constructor(options) { - this._state = new RegExpParserState(options); - this._validator = new RegExpValidator(this._state); - } - parseLiteral(source, start = 0, end = source.length) { - this._state.source = source; - this._validator.validateLiteral(source, start, end); - const pattern = this._state.pattern; - const flags = this._state.flags; - const literal = { - type: "RegExpLiteral", - parent: null, - start, - end, - raw: source, - pattern, - flags, - }; - pattern.parent = literal; - flags.parent = literal; - return literal; - } - parseFlags(source, start = 0, end = source.length) { - this._state.source = source; - this._validator.validateFlags(source, start, end); - return this._state.flags; - } - parsePattern(source, start = 0, end = source.length, uFlag = false) { - this._state.source = source; - this._validator.validatePattern(source, start, end, uFlag); - return this._state.pattern; - } -} - -class RegExpVisitor { - constructor(handlers) { - this._handlers = handlers; - } - visit(node) { - switch (node.type) { - case "Alternative": - this.visitAlternative(node); - break; - case "Assertion": - this.visitAssertion(node); - break; - case "Backreference": - this.visitBackreference(node); - break; - case "CapturingGroup": - this.visitCapturingGroup(node); - break; - case "Character": - this.visitCharacter(node); - break; - case "CharacterClass": - this.visitCharacterClass(node); - break; - case "CharacterClassRange": - this.visitCharacterClassRange(node); - break; - case "CharacterSet": - this.visitCharacterSet(node); - break; - case "Flags": - this.visitFlags(node); - break; - case "Group": - this.visitGroup(node); - break; - case "Pattern": - this.visitPattern(node); - break; - case "Quantifier": - this.visitQuantifier(node); - break; - case "RegExpLiteral": - this.visitRegExpLiteral(node); - break; - default: - throw new Error(`Unknown type: ${node.type}`); - } - } - visitAlternative(node) { - if (this._handlers.onAlternativeEnter) { - this._handlers.onAlternativeEnter(node); - } - node.elements.forEach(this.visit, this); - if (this._handlers.onAlternativeLeave) { - this._handlers.onAlternativeLeave(node); - } - } - visitAssertion(node) { - if (this._handlers.onAssertionEnter) { - this._handlers.onAssertionEnter(node); - } - if (node.kind === "lookahead" || node.kind === "lookbehind") { - node.alternatives.forEach(this.visit, this); - } - if (this._handlers.onAssertionLeave) { - this._handlers.onAssertionLeave(node); - } - } - visitBackreference(node) { - if (this._handlers.onBackreferenceEnter) { - this._handlers.onBackreferenceEnter(node); - } - if (this._handlers.onBackreferenceLeave) { - this._handlers.onBackreferenceLeave(node); - } - } - visitCapturingGroup(node) { - if (this._handlers.onCapturingGroupEnter) { - this._handlers.onCapturingGroupEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onCapturingGroupLeave) { - this._handlers.onCapturingGroupLeave(node); - } - } - visitCharacter(node) { - if (this._handlers.onCharacterEnter) { - this._handlers.onCharacterEnter(node); - } - if (this._handlers.onCharacterLeave) { - this._handlers.onCharacterLeave(node); - } - } - visitCharacterClass(node) { - if (this._handlers.onCharacterClassEnter) { - this._handlers.onCharacterClassEnter(node); - } - node.elements.forEach(this.visit, this); - if (this._handlers.onCharacterClassLeave) { - this._handlers.onCharacterClassLeave(node); - } - } - visitCharacterClassRange(node) { - if (this._handlers.onCharacterClassRangeEnter) { - this._handlers.onCharacterClassRangeEnter(node); - } - this.visitCharacter(node.min); - this.visitCharacter(node.max); - if (this._handlers.onCharacterClassRangeLeave) { - this._handlers.onCharacterClassRangeLeave(node); - } - } - visitCharacterSet(node) { - if (this._handlers.onCharacterSetEnter) { - this._handlers.onCharacterSetEnter(node); - } - if (this._handlers.onCharacterSetLeave) { - this._handlers.onCharacterSetLeave(node); - } - } - visitFlags(node) { - if (this._handlers.onFlagsEnter) { - this._handlers.onFlagsEnter(node); - } - if (this._handlers.onFlagsLeave) { - this._handlers.onFlagsLeave(node); - } - } - visitGroup(node) { - if (this._handlers.onGroupEnter) { - this._handlers.onGroupEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onGroupLeave) { - this._handlers.onGroupLeave(node); - } - } - visitPattern(node) { - if (this._handlers.onPatternEnter) { - this._handlers.onPatternEnter(node); - } - node.alternatives.forEach(this.visit, this); - if (this._handlers.onPatternLeave) { - this._handlers.onPatternLeave(node); - } - } - visitQuantifier(node) { - if (this._handlers.onQuantifierEnter) { - this._handlers.onQuantifierEnter(node); - } - this.visit(node.element); - if (this._handlers.onQuantifierLeave) { - this._handlers.onQuantifierLeave(node); - } - } - visitRegExpLiteral(node) { - if (this._handlers.onRegExpLiteralEnter) { - this._handlers.onRegExpLiteralEnter(node); - } - this.visitPattern(node.pattern); - this.visitFlags(node.flags); - if (this._handlers.onRegExpLiteralLeave) { - this._handlers.onRegExpLiteralLeave(node); - } - } -} - -function parseRegExpLiteral(source, options) { - return new RegExpParser(options).parseLiteral(String(source)); -} -function validateRegExpLiteral(source, options) { - return new RegExpValidator(options).validateLiteral(source); -} -function visitRegExpAST(node, handlers) { - new RegExpVisitor(handlers).visit(node); -} - -export { ast as AST, RegExpParser, RegExpValidator, parseRegExpLiteral, validateRegExpLiteral, visitRegExpAST }; -//# sourceMappingURL=index.mjs.map diff --git a/node_modules/regexpp/index.mjs.map b/node_modules/regexpp/index.mjs.map deleted file mode 100644 index 4263dfa..0000000 --- a/node_modules/regexpp/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs.map","sources":[".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\ids.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\properties.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\unicode\\src\\unicode\\index.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\reader.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\regexp-syntax-error.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\validator.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\parser.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\visitor.ts"},{"errno":-4058,"code":"ENOENT","syscall":"open","path":"C:\\Users\\t-nagashima.MSS\\dev\\regexpp\\.temp\\src\\index.ts"}],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/regexpp/package.json b/node_modules/regexpp/package.json deleted file mode 100644 index 92dadd8..0000000 --- a/node_modules/regexpp/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "regexpp", - "version": "3.2.0", - "description": "Regular expression parser for ECMAScript.", - "engines": { - "node": ">=8" - }, - "main": "index", - "files": [ - "index.*" - ], - "exports": { - ".": { - "import": "./index.mjs", - "default": "./index.js" - }, - "./package.json": "./package.json" - }, - "dependencies": {}, - "devDependencies": { - "@mysticatea/eslint-plugin": "^11.0.0", - "@types/eslint": "^4.16.2", - "@types/jsdom": "^12.2.4", - "@types/mocha": "^5.2.2", - "@types/node": "^12.6.8", - "codecov": "^3.5.0", - "dts-bundle": "^0.7.3", - "eslint": "^6.1.0", - "jsdom": "^15.1.1", - "mocha": "^6.2.0", - "npm-run-all": "^4.1.5", - "nyc": "^14.1.1", - "rimraf": "^2.6.2", - "rollup": "^1.17.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-sourcemaps": "^0.4.2", - "ts-node": "^8.3.0", - "typescript": "^3.5.3" - }, - "scripts": { - "prebuild": "npm run -s clean", - "build": "run-s build:*", - "build:tsc": "tsc --module es2015", - "build:rollup": "rollup -c", - "build:dts": "dts-bundle --name regexpp --main .temp/index.d.ts --out ../index.d.ts", - "clean": "rimraf .temp index.*", - "codecov": "nyc report -r lcovonly && codecov -t ${CODECOV_TOKEN} --disable=gcov", - "lint": "eslint scripts src test --ext .ts", - "pretest": "run-s build lint", - "test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000", - "update:test": "ts-node scripts/update-fixtures.ts", - "update:unicode": "run-s update:unicode:*", - "update:unicode:ids": "ts-node scripts/update-unicode-ids.ts", - "update:unicode:props": "ts-node scripts/update-unicode-properties.ts", - "preversion": "npm test", - "version": "npm run -s build", - "postversion": "git push && git push --tags", - "prewatch": "npm run -s clean", - "watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/mysticatea/regexpp.git" - }, - "keywords": [ - "regexp", - "regular", - "expression", - "parser", - "validator", - "ast", - "abstract", - "syntax", - "tree", - "ecmascript", - "es2015", - "es2016", - "es2017", - "es2018", - "es2019", - "es2020", - "annexB" - ], - "author": "Toru Nagashima (https://github.com/mysticatea)", - "license": "MIT", - "bugs": { - "url": "https://github.com/mysticatea/regexpp/issues" - }, - "homepage": "https://github.com/mysticatea/regexpp#readme", - "funding": "https://github.com/sponsors/mysticatea" -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index ed72d72..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2430 +0,0 @@ -{ - "name": "Userscripts", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "devDependencies": { - "eslint": "*", - "eslint-plugin-clean-regex": "*", - "eslint-plugin-regexp": "*" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", - "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/comment-parser": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", - "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", - "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.2", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-clean-regex": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", - "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", - "dev": true, - "dependencies": { - "refa": "^0.7.1", - "regexpp": "^3.1.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/eslint-plugin-regexp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", - "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", - "dev": true, - "dependencies": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.2.0", - "scslre": "^0.1.5" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-plugin-regexp/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", - "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", - "dev": true, - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/refa": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", - "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/regexp-ast-analysis": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", - "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", - "dev": true, - "dependencies": { - "refa": "^0.8.0", - "regexpp": "^3.1.0" - } - }, - "node_modules/regexp-ast-analysis/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/scslre": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", - "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", - "dev": true, - "dependencies": { - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" - } - }, - "node_modules/scslre/node_modules/refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "dependencies": { - "regexpp": "^3.1.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", - "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "comment-parser": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", - "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", - "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.2", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-plugin-clean-regex": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-clean-regex/-/eslint-plugin-clean-regex-0.5.1.tgz", - "integrity": "sha512-ZuZxP2V2s2LI2OZPUF5eQQtgUQv1/Z7jDI2DG5GEHGM9D0T0LSbcg8ViuFolrOOmUP7dCz+JHN4gDQWyeDdvJg==", - "dev": true, - "requires": { - "refa": "^0.7.1", - "regexpp": "^3.1.0" - } - }, - "eslint-plugin-regexp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.13.0.tgz", - "integrity": "sha512-Nl0JuN6BZeTADjlzCcwVUY3b7bXwkJKIUL1r13FL0Up3PqOhzXhdQ7FDjOEu1ZBQPaR+LkJK3LA+1haxVOAXyw==", - "dev": true, - "requires": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.2.0", - "scslre": "^0.1.5" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "requires": { - "regexpp": "^3.1.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.0.tgz", - "integrity": "sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "refa": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", - "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", - "dev": true, - "requires": { - "regexpp": "^3.1.0" - } - }, - "regexp-ast-analysis": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.2.tgz", - "integrity": "sha512-inLIbwizLLAZkpC9/8zp8CeSkJJPsRaqXGDVpxEbNRZD10E+OP6vRDHt7OS9JjWECQLvOI2EmHx7DgdpyAvdrQ==", - "dev": true, - "requires": { - "refa": "^0.8.0", - "regexpp": "^3.1.0" - }, - "dependencies": { - "refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "requires": { - "regexpp": "^3.1.0" - } - } - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "scslre": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz", - "integrity": "sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==", - "dev": true, - "requires": { - "refa": "^0.8.0", - "regexp-ast-analysis": "^0.2.2", - "regexpp": "^3.1.0" - }, - "dependencies": { - "refa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.8.0.tgz", - "integrity": "sha512-qOf9zk1McAuGPtQ16nzuWCUg9zx3Quc48i6oD6nxWJdrFeh3Do0vCpIGYLij/1ysAbh5rxdUNg+YzSVBRycX5g==", - "dev": true, - "requires": { - "regexpp": "^3.1.0" - } - } - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } -} From 85647959780bcddb380cd17ad14318d245ac24ad Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 9 Jul 2021 13:20:40 +0300 Subject: [PATCH 150/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 15a8d86..4b75dc6 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,8 +1,8 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.7.7 -// @description Adds a column with torrent and magnet links in RARBG lists +// @version 2021.7.9 +// @description Adds a column with torrent and magnet links in 1337x lists // @author darkred // @contributor NotNeo // @license MIT From 3d71414596b65eab69011e59f5aa3e304f70ecf7 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 11 Jul 2021 00:35:42 +0300 Subject: [PATCH 151/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 2b87b18..f43564e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -44,26 +44,17 @@ body: placeholder: https://example.com/page1.htm validations: required: true - - type: dropdown + - type: input id: script-manager attributes: label: Script Manager - description: What script manager are you using? (make sure it is the latest version - Greasemonkey is NOT supported) - multiple: true - options: - - Tampermonkey - - Violentmonkey + description: What script manager are you using? (Tampermonkey and Violentmonkey are supported - Greasemonkey is NOT supported) validations: required: true - - type: dropdown + - type: input id: browsers attributes: label: Browser(s) used description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions such as Waterfox are NOT supported) - multiple: true - options: - - Chrome (or Edge/Opera) - - Firefox - - Safari validations: required: true From 691579279472af318d103c77c2de0334581fe14a Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 11 Jul 2021 00:36:32 +0300 Subject: [PATCH 152/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index f43564e..bf61600 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -55,6 +55,6 @@ body: id: browsers attributes: label: Browser(s) used - description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions such as Waterfox are NOT supported) + description: What browsers are you seeing the problem on? (old versions such as Waterfox are NOT supported) validations: required: true From 69d87941a17dc69308dbb00eb0c32e44c647e82a Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 11 Jul 2021 00:38:06 +0300 Subject: [PATCH 153/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index bf61600..5f59763 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -55,6 +55,6 @@ body: id: browsers attributes: label: Browser(s) used - description: What browsers are you seeing the problem on? (old versions such as Waterfox are NOT supported) + description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions are NOT supported) validations: required: true From e5df5c6acded3bd382ff2bb5f3d3bc2d1763d2bc Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 11 Jul 2021 00:39:10 +0300 Subject: [PATCH 154/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5f59763..1afafea 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -48,13 +48,13 @@ body: id: script-manager attributes: label: Script Manager - description: What script manager are you using? (Tampermonkey and Violentmonkey are supported - Greasemonkey is NOT supported) + description: (Tampermonkey and Violentmonkey are supported - Greasemonkey is NOT supported) validations: required: true - type: input id: browsers attributes: label: Browser(s) used - description: What browsers are you seeing the problem on? (make sure it is the latest version - old versions are NOT supported) + description: (make sure it is the latest version - old versions are NOT supported) validations: required: true From 5ad4bbf9f7d050122aaea1fbed0751ec638d8a46 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 14 Jul 2021 12:59:55 +0300 Subject: [PATCH 155/245] Update 1337X_-_convert_torrent_timestamps_to_relative_format.user.js Made the @include rule shorter --- ...7X_-_convert_torrent_timestamps_to_relative_format.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index fb64c86..f7109d0 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,11 +1,11 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.6.15 +// @version 2021.7.14 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT -// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https:\/\/(www\.)?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)((?!\/torrent)).*$/ // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data-10-year-range.min.js From d13a0421a95d5b04a68efc4a15025aa909d01ee8 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 14 Jul 2021 13:04:04 +0300 Subject: [PATCH 156/245] Update 1337x_-_torrent_and_magnet_links.user.js - Made the @include rule shorter. - Made it work ok/fix for pages that contain more than one table, e.g. https://1337x.to/home/ - - Made it work ok/fix for pages where the tables have no headers (Series pages, e.g. https://1337x.to/series/a-to-z/1/13/) - Minor changes --- .../1337x_-_torrent_and_magnet_links.user.js | 60 ++++++++++++------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 4b75dc6..8fe8dae 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,12 +1,12 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.7.9 -// @description Adds a column with torrent and magnet links in 1337x lists +// @version 2021.7.14 +// @description Adds a column with torrent and magnet links in lists // @author darkred // @contributor NotNeo // @license MIT -// @include /^https?:\/\/x?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)\/(home|search|sort-search|trending(-week)?|cat|top-100(-(((non-eng|eng)-)?movies|television|games|applications|music|documentaries|anime|other|xxx))?|sub|popular-(.+)|new-episodes)\/?(.+\/)?$/ +// @include /^https:\/\/(www\.)?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)((?!\/torrent)).*$/ // @grant GM_addStyle // @run-at document-idle // @@ -69,36 +69,51 @@ GM_addStyle(` `); -function appendColumn(elem) { +function appendColumn() { + const title = 'ml dl'; - let entries = elem.querySelectorAll('.table-list > thead > tr > th:nth-child(1), .table-list > tbody > tr > td:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended + let headers = document.querySelectorAll('.table-list > thead > tr:not(.blank) > th:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended + let cells = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended + + for (let i = 0; i < headers.length; i++) { + headers[i].insertAdjacentHTML('afterend', `` + title + ``); // creation of the extra column + } + + for (let i = 0; i < cells.length; i++) { + cells[i].insertAdjacentHTML('afterend', `` + title + ``); + } - entries[0].insertAdjacentHTML('afterend', `` + title + ``); // creation of the extra column - for (let i = 1; i < entries.length; i++) { - entries[i].insertAdjacentHTML('afterend', `` + title + ``); + let headersNew = document.querySelectorAll('.table-list > thead > tr:not(.blank) > th:nth-child(2)'); // the first cell (the header cell) of the new column + for (let i = 0; i < headersNew.length; i++) { + headersNew[i].innerHTML = title; + headersNew[i].setAttribute('class', 'coll-1b'); } - let header = elem.querySelector('.table-list > thead > tr > th:nth-child(2)'); // the first cell (the header cell) of the new column - header.innerHTML = title; - header.setAttribute('class', 'coll-1b'); - let cells = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(2)'); // the rest cells of the new column + + + let restCells = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // the rest cells of the new column tr:not(.blank) is for lists that also have empty lines e.g. https://1337x.to/series/a-to-z/1/13/ for (let i = 0; i < cells.length; i++) { - cells[i].classList.add('coll-1b'); - cells[i].classList.add('dl-buttons'); + restCells[i].classList.add('coll-1b'); + restCells[i].classList.add('dl-buttons'); } - let newColumn = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(2)'); // new column - let oldColumn = elem.querySelectorAll('.table-list > tbody > tr > td:nth-child(1)'); // old column + let newColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // new column + let oldColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(1)'); // old column for (let i = 0; i < newColumn.length; i++) { - let href = oldColumn[i].firstElementChild.nextElementSibling.href; + let href; + if (!window.location.href.includes('/series/')){ + href = oldColumn[i].firstElementChild.nextElementSibling.href; + } else { // e.g.for https://1337x.to/series/a-to-z/1/13/ + href = oldColumn[i].firstElementChild.href; + } newColumn[i].innerHTML = ''; @@ -137,7 +152,6 @@ function addClickListeners(links, type){ if (retrievedLink) { - // links[i].setAttribute('href', retrievedLink.href); links[i].setAttribute('href', retrievedLink.href.replace('http:', 'https:')); // the links are http and as such are blocked in Chrome links[i].click(); } @@ -156,11 +170,11 @@ function addClickListeners(links, type){ -function createColumn(element){ - appendColumn(element); - addClickListeners(element.querySelectorAll('.list-button-magnet'), 'ml' ); - addClickListeners(element.querySelectorAll('.list-button-dl'), 'dl' ); +function createColumn(){ + appendColumn(); + addClickListeners(document.querySelectorAll('.list-button-magnet'), 'ml' ); + addClickListeners(document.querySelectorAll('.list-button-dl'), 'dl' ); } -createColumn(document); // the initial column 'Files' after of which the extra column will be appended); +createColumn(); From 3dea6188261a10987a285841e8a803bb235ed111 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 14 Jul 2021 13:27:24 +0300 Subject: [PATCH 157/245] Update 1337X_-_convert_torrent_timestamps_to_relative_format.user.js Update the server timezone --- ...X_-_convert_torrent_timestamps_to_relative_format.user.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js index f7109d0..5eee4ab 100644 --- a/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/1337X_-_convert_torrent_timestamps_to_relative_format/1337X_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337X - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.7.14 +// @version 2021.7.14.1 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -34,7 +34,8 @@ // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) -const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) // const serverTimezone = 'Etc/GMT-1'; From decd142ef6f7cd77fc938448c4e760496c8c58dc Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 29 Jul 2021 14:33:41 +0300 Subject: [PATCH 158/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 8fe8dae..d19671f 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.7.14 +// @version 2021.7.29 // @description Adds a column with torrent and magnet links in lists // @author darkred // @contributor NotNeo @@ -82,36 +82,34 @@ function appendColumn() { } for (let i = 0; i < cells.length; i++) { - cells[i].insertAdjacentHTML('afterend', `` + title + ``); + cells[i].insertAdjacentHTML('afterend', `` + '' + ``); } + let headersNew = document.querySelectorAll('.table-list > thead > tr:not(.blank) > th:nth-child(2)'); // the first cell (the header cell) of the new column + let cellsNew = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // the rest cells of the new column tr:not(.blank) is for lists that also have empty lines e.g. https://1337x.to/series/a-to-z/1/13/ + for (let i = 0; i < headersNew.length; i++) { headersNew[i].innerHTML = title; headersNew[i].setAttribute('class', 'coll-1b'); } - - - - - let restCells = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // the rest cells of the new column tr:not(.blank) is for lists that also have empty lines e.g. https://1337x.to/series/a-to-z/1/13/ - for (let i = 0; i < cells.length; i++) { - restCells[i].classList.add('coll-1b'); - restCells[i].classList.add('dl-buttons'); + for (let i = 0; i < cellsNew.length; i++) { + cellsNew[i].classList.add('coll-1b'); + cellsNew[i].classList.add('dl-buttons'); } + let newColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // new column let oldColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(1)'); // old column - for (let i = 0; i < newColumn.length; i++) { let href; if (!window.location.href.includes('/series/')){ href = oldColumn[i].firstElementChild.nextElementSibling.href; - } else { // e.g.for https://1337x.to/series/a-to-z/1/13/ + } else { // e.g. https://1337x.to/series/a-to-z/1/13/ href = oldColumn[i].firstElementChild.href; } @@ -119,7 +117,6 @@ function appendColumn() { newColumn[i].innerHTML += ''; - } } From 7d5fa02eea6d1d3a6010daa9eae6ce04d38f72e6 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 17:47:55 +0300 Subject: [PATCH 159/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 1afafea..4dc9225 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -34,7 +34,8 @@ body: - type: textarea id: logs attributes: - label: Console errors, if any + label: Console errors + description: If any render: shell - type: input id: example-url From f705e1b4ff2066d7e80e01d3df44a975b9a2cad5 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:02:41 +0300 Subject: [PATCH 160/245] Create feature_request.yml --- feature_request.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 feature_request.yml diff --git a/feature_request.yml b/feature_request.yml new file mode 100644 index 0000000..b3fa9df --- /dev/null +++ b/feature_request.yml @@ -0,0 +1,27 @@ +name: 🆕 Suggest an improvement or new feature +description: ——— +labels: enhancement, under discussion +body: + - type: markdown + attributes: + value: | + - When referring to an existing script of mine, include its name in parenthesis in the title. + - Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. + - type: textarea + attributes: + label: Description + description: "Be as specific as possible, don't make me have to guess what your suggested improvement or feature is." + validations: + required: true + - type: textarea + attributes: + label: Screenshot + description: You can provide screenshots/mockups to better visualize your idea. Files can be dropped in this field + - type: input + attributes: + label: Example URL + description: Include a REAL URL where the feature should appear. e.g. Do you want a feature to appear on the main page of a repo? Paste a link to a repo + placeholder: https://example.com/index.html + value: https:// + validations: + required: true From d38cff0b9812b00e581aaa8eb89775815f07213e Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:03:51 +0300 Subject: [PATCH 161/245] Rename feature_request.md to feature_request.md.old --- .../ISSUE_TEMPLATE/{feature_request.md => feature_request.md.old} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/ISSUE_TEMPLATE/{feature_request.md => feature_request.md.old} (100%) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md.old similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.md rename to .github/ISSUE_TEMPLATE/feature_request.md.old From 6cd0a8aeaf2652008c416cd71da08ca8ebf701b8 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:05:23 +0300 Subject: [PATCH 162/245] Create feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..b3fa9df --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,27 @@ +name: 🆕 Suggest an improvement or new feature +description: ——— +labels: enhancement, under discussion +body: + - type: markdown + attributes: + value: | + - When referring to an existing script of mine, include its name in parenthesis in the title. + - Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. + - type: textarea + attributes: + label: Description + description: "Be as specific as possible, don't make me have to guess what your suggested improvement or feature is." + validations: + required: true + - type: textarea + attributes: + label: Screenshot + description: You can provide screenshots/mockups to better visualize your idea. Files can be dropped in this field + - type: input + attributes: + label: Example URL + description: Include a REAL URL where the feature should appear. e.g. Do you want a feature to appear on the main page of a repo? Paste a link to a repo + placeholder: https://example.com/index.html + value: https:// + validations: + required: true From 13be245a33554882fb043989a526ae2cf8ffdd47 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:05:39 +0300 Subject: [PATCH 163/245] Delete feature_request.yml --- feature_request.yml | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 feature_request.yml diff --git a/feature_request.yml b/feature_request.yml deleted file mode 100644 index b3fa9df..0000000 --- a/feature_request.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: 🆕 Suggest an improvement or new feature -description: ——— -labels: enhancement, under discussion -body: - - type: markdown - attributes: - value: | - - When referring to an existing script of mine, include its name in parenthesis in the title. - - Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. - - type: textarea - attributes: - label: Description - description: "Be as specific as possible, don't make me have to guess what your suggested improvement or feature is." - validations: - required: true - - type: textarea - attributes: - label: Screenshot - description: You can provide screenshots/mockups to better visualize your idea. Files can be dropped in this field - - type: input - attributes: - label: Example URL - description: Include a REAL URL where the feature should appear. e.g. Do you want a feature to appear on the main page of a repo? Paste a link to a repo - placeholder: https://example.com/index.html - value: https:// - validations: - required: true From ba0efaef4ce695b6f24e25952907a5c5d0a0ea87 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:07:21 +0300 Subject: [PATCH 164/245] Update feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index b3fa9df..bd26100 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -10,7 +10,7 @@ body: - type: textarea attributes: label: Description - description: "Be as specific as possible, don't make me have to guess what your suggested improvement or feature is." + description: "Try to be as specific as possible, don't make me have to guess what your suggested improvement or feature is." validations: required: true - type: textarea @@ -20,7 +20,7 @@ body: - type: input attributes: label: Example URL - description: Include a REAL URL where the feature should appear. e.g. Do you want a feature to appear on the main page of a repo? Paste a link to a repo + description: Include a REAL URL where the feature should appear. Paste a link here placeholder: https://example.com/index.html value: https:// validations: From edf1c3002bef7c49181ef277b5121d0b14dd167a Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:15:48 +0300 Subject: [PATCH 165/245] Update feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index bd26100..adb44cd 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,12 +1,17 @@ name: 🆕 Suggest an improvement or new feature description: ——— +title: "[script title] " labels: enhancement, under discussion body: - - type: markdown + - type: checkboxes + id: terms attributes: - value: | - - When referring to an existing script of mine, include its name in parenthesis in the title. - - Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. + label: "Please ensure:" + options: + - label: "I included in the issue title the script name I'm referring to." + required: true + - label: Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. + required: false - type: textarea attributes: label: Description From 2ccb45d94b17743a565dae5f70a27d043c1b0001 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 31 Jul 2021 18:16:38 +0300 Subject: [PATCH 166/245] Update feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index adb44cd..45791c0 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -10,7 +10,7 @@ body: options: - label: "I included in the issue title the script name I'm referring to." required: true - - label: Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already. + - label: "Before you request from me to write a new script for you, check in https://greasyfork.org/en/scripts and https://openuserjs.org/ : what you ask might be there already." required: false - type: textarea attributes: From 6f962ba349b598b63691c5db1b4e6f0d3c4785a4 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 5 Aug 2021 13:55:59 +0300 Subject: [PATCH 167/245] Update README.md --- ProtonMail_-_remove_forced_signature/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ProtonMail_-_remove_forced_signature/README.md b/ProtonMail_-_remove_forced_signature/README.md index 6a38595..b956dee 100644 --- a/ProtonMail_-_remove_forced_signature/README.md +++ b/ProtonMail_-_remove_forced_signature/README.md @@ -1,5 +1,9 @@ -This userscript applies to https://mail.protonmail.com. +This userscript applies to https://mail.protonmail.com +*(after the recent layout update there's no `beta` subdomain anymore (`beta.protonmail.com` ) --- enabling 'beta' features is just a toggle button now (Settings | 'Beta Access' )*. It automatically removes the ProtonMail signature from the 'New message' textboxes, which is appended by default to each mail body and cannot be modified via Settings in free accounts. It uses the excellent library [arrive.js](https://github.com/uzairfarooq/arrive) + +The script only works in Chrome, see [here](https://github.com/darkred/Userscripts/issues/13#issuecomment-739492052) and [here](https://github.com/darkred/Userscripts/issues/43#issuecomment-893362520). +Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported. From 7f39e53daa73d985053d868c75bfd9ecff7529f9 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 5 Aug 2021 13:57:40 +0300 Subject: [PATCH 168/245] Update README.md --- ProtonMail_-_remove_forced_signature/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProtonMail_-_remove_forced_signature/README.md b/ProtonMail_-_remove_forced_signature/README.md index b956dee..0bcf3ab 100644 --- a/ProtonMail_-_remove_forced_signature/README.md +++ b/ProtonMail_-_remove_forced_signature/README.md @@ -5,5 +5,5 @@ which is appended by default to each mail body and cannot be modified via Settin It uses the excellent library [arrive.js](https://github.com/uzairfarooq/arrive) -The script only works in Chrome, see [here](https://github.com/darkred/Userscripts/issues/13#issuecomment-739492052) and [here](https://github.com/darkred/Userscripts/issues/43#issuecomment-893362520). +The script only works in Chrome, not Firefox - see [here](https://github.com/darkred/Userscripts/issues/13#issuecomment-739492052) and [here](https://github.com/darkred/Userscripts/issues/43#issuecomment-893362520). Tampermonkey and Violentmonkey are supported - Greasemonkey is not supported. From 2ba49d41ad06b888d5eee17af01e492b4278158e Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 8 Aug 2021 18:52:45 +0300 Subject: [PATCH 169/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4dc9225..9f80759 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -50,6 +50,7 @@ body: attributes: label: Script Manager description: (Tampermonkey and Violentmonkey are supported - Greasemonkey is NOT supported) + placeholder: e.g. Tampermonkey 4.14 validations: required: true - type: input @@ -57,5 +58,6 @@ body: attributes: label: Browser(s) used description: (make sure it is the latest version - old versions are NOT supported) + placeholder: e.g. Chrome 92 validations: required: true From cd27ffc29fdc8f7a082ccded7c574d49432be19b Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 14 Aug 2021 13:45:13 +0300 Subject: [PATCH 170/245] Update package.json Added 'eslint-plugin-userscripts' plugin (following Tampermonkey v4.14.6142) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f8c5c8a..2a03a61 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "devDependencies": { "eslint": "*", "eslint-plugin-clean-regex": "*", - "eslint-plugin-regexp": "*" + "eslint-plugin-regexp": "*", + "eslint-plugin-userscripts": "*" } } From a5fe4ce5ec3dd6a83f579c95af224452694711be Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 14 Aug 2021 13:45:33 +0300 Subject: [PATCH 171/245] Update 1337x_-_torrent_and_magnet_links.user.js Simplified the script --- .../1337x_-_torrent_and_magnet_links.user.js | 84 ++++++++----------- 1 file changed, 36 insertions(+), 48 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index d19671f..fef8516 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.7.29 +// @version 2021.8.14 // @description Adds a column with torrent and magnet links in lists // @author darkred // @contributor NotNeo @@ -71,53 +71,47 @@ GM_addStyle(` function appendColumn() { - + const allTables = document.querySelectorAll('.table-list-wrap'); + const isSeries = window.location.href.includes('/series/'); const title = 'ml dl'; - let headers = document.querySelectorAll('.table-list > thead > tr:not(.blank) > th:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended - let cells = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(1)'); // the initial column 'Files' after of which the extra column will be appended - - for (let i = 0; i < headers.length; i++) { - headers[i].insertAdjacentHTML('afterend', `` + title + ``); // creation of the extra column - } - - for (let i = 0; i < cells.length; i++) { - cells[i].insertAdjacentHTML('afterend', `` + '' + ``); - } - - - let headersNew = document.querySelectorAll('.table-list > thead > tr:not(.blank) > th:nth-child(2)'); // the first cell (the header cell) of the new column - let cellsNew = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // the rest cells of the new column tr:not(.blank) is for lists that also have empty lines e.g. https://1337x.to/series/a-to-z/1/13/ - for (let i = 0; i < headersNew.length; i++) { - headersNew[i].innerHTML = title; - headersNew[i].setAttribute('class', 'coll-1b'); - } - - for (let i = 0; i < cellsNew.length; i++) { - cellsNew[i].classList.add('coll-1b'); - cellsNew[i].classList.add('dl-buttons'); - } + allTables.forEach((table) => { + const headersCellsInitial = table.querySelectorAll(`.table-list > thead > tr:not(.blank) > th:nth-child(1), + .table-list > tbody > tr:not(.blank) > td:nth-child(1)`); + headersCellsInitial.forEach((cell, index) => { + if (index === 0 && !isSeries) { + cell.insertAdjacentHTML('afterend', `` + title + ``); + } else { + cell.insertAdjacentHTML('afterend', `` + title + ``); + } + }); + + const headersCellsNew = table.querySelectorAll(`.table-list > thead > tr:not(.blank) > th:nth-child(2), + .table-list > tbody > tr:not(.blank) > td:nth-child(2)`); + headersCellsNew.forEach((cell, index) => { + cell.classList.add('coll-1b'); + if (index === 0 && !isSeries) { + cell.innerHTML = title; + } else { + cell.classList.add('dl-buttons'); + + let href; + if (!isSeries){ + href = headersCellsInitial[index].firstElementChild.nextElementSibling.href; + } else { // e.g. https://1337x.to/series/a-to-z/1/13/ + href = headersCellsInitial[index].firstElementChild.href; + } + + cell.innerHTML = ``; + cell.innerHTML += ``; + } + }); - let newColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(2)'); // new column - let oldColumn = document.querySelectorAll('.table-list > tbody > tr:not(.blank) > td:nth-child(1)'); // old column - - for (let i = 0; i < newColumn.length; i++) { - - let href; - if (!window.location.href.includes('/series/')){ - href = oldColumn[i].firstElementChild.nextElementSibling.href; - } else { // e.g. https://1337x.to/series/a-to-z/1/13/ - href = oldColumn[i].firstElementChild.href; - } - - newColumn[i].innerHTML = ''; - - newColumn[i].innerHTML += ''; + }); - } } @@ -140,13 +134,7 @@ function addClickListeners(links, type){ let container = document.implementation.createHTMLDocument().documentElement; container.innerHTML = xhr.responseText; - let retrievedLink; - if (type === 'ml'){ - retrievedLink = container.querySelector('a[href^="magnet:"]'); // the 'magnet link' element in the retrieved page - } else { - retrievedLink = container.querySelector('.dropdown-menu > li > a'); // the 'download link' element in the retrieved page - } - + let retrievedLink = (type === 'ml') ? container.querySelector('a[href^="magnet:"]') : container.querySelector('.dropdown-menu > li > a'); if (retrievedLink) { links[i].setAttribute('href', retrievedLink.href.replace('http:', 'https:')); // the links are http and as such are blocked in Chrome From 4ed5365182cfb41839cadb1b3098dc56d69e51c6 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 14 Aug 2021 15:06:31 +0300 Subject: [PATCH 172/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index fef8516..22a2fd1 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -71,8 +71,8 @@ GM_addStyle(` function appendColumn() { - const allTables = document.querySelectorAll('.table-list-wrap'); - const isSeries = window.location.href.includes('/series/'); + const allTables = document.querySelectorAll('.table-list-wrap'); // for pages with multiple tables e.g. https://1337x.to/home/ + const isSeries = window.location.href.includes('/series/'); // for pages with tables that have no header e.g. https://1337x.to/series/a-to-z/1/13/ const title = 'ml dl'; @@ -100,7 +100,7 @@ function appendColumn() { let href; if (!isSeries){ href = headersCellsInitial[index].firstElementChild.nextElementSibling.href; - } else { // e.g. https://1337x.to/series/a-to-z/1/13/ + } else { href = headersCellsInitial[index].firstElementChild.href; } From 15abbde299f36729a67e43b98a2b666c17344fec Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 15 Aug 2021 02:15:48 +0300 Subject: [PATCH 173/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 22a2fd1..9f42f1b 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.8.14 +// @version 2021.8.15 // @description Adds a column with torrent and magnet links in lists // @author darkred // @contributor NotNeo @@ -119,9 +119,9 @@ function appendColumn() { function addClickListeners(links, type){ - for(let i = 0; i < links.length; i++) { + links.forEach((link) => { - links[i].addEventListener('click', function(event){ + link.addEventListener('click', function(event){ let href = this.getAttribute('href'); if (href === 'javascript:void(0)') { @@ -137,8 +137,8 @@ function addClickListeners(links, type){ let retrievedLink = (type === 'ml') ? container.querySelector('a[href^="magnet:"]') : container.querySelector('.dropdown-menu > li > a'); if (retrievedLink) { - links[i].setAttribute('href', retrievedLink.href.replace('http:', 'https:')); // the links are http and as such are blocked in Chrome - links[i].click(); + link.setAttribute('href', retrievedLink.href.replace('http:', 'https:')); // the links are http and as such are blocked in Chrome + link.click(); } @@ -149,7 +149,7 @@ function addClickListeners(links, type){ }, false); - } + }); } From 5ef0e037b2e89243f8f781b6a1291afe19f0177c Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 17 Aug 2021 01:31:30 +0300 Subject: [PATCH 174/245] Improvements to the `table.table-list td.dl-buttons` CSS rule (thanks to barn852) --- .../1337x_-_torrent_and_magnet_links.user.js | 10 +++++----- 1337x_-_torrent_and_magnet_links/README.md | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index 9f42f1b..fbc4142 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -1,10 +1,10 @@ // ==UserScript== // @name 1337x - torrent and magnet links // @namespace darkred -// @version 2021.8.15 +// @version 2021.8.17 // @description Adds a column with torrent and magnet links in lists // @author darkred -// @contributor NotNeo +// @contributor NotNeo, barn852 // @license MIT // @include /^https:\/\/(www\.)?1337x\.(to|st|ws|eu|se|is|gd|unblocked\.dk)((?!\/torrent)).*$/ // @grant GM_addStyle @@ -35,13 +35,13 @@ GM_addStyle(` table.table-list td.dl-buttons { border-left: 1px solid #f6f6f6; + border-right: 1px solid #c0c0c0; padding-left: 2.5px; padding-right: 2.5px; text-align: center !important; position: relative; - display: inline-block !important; - /* width: 50px; */ - width: 52px; + display: table-cell !important; /* proper height of cell on multiple row torrent name */ + width: 6%; } td.dl-buttons > a, diff --git a/1337x_-_torrent_and_magnet_links/README.md b/1337x_-_torrent_and_magnet_links/README.md index 3ff0759..826ea84 100644 --- a/1337x_-_torrent_and_magnet_links/README.md +++ b/1337x_-_torrent_and_magnet_links/README.md @@ -8,4 +8,5 @@ Notes: - initially, as its destination (`href`) a: `javascript:void(0)`, - as tooltip: "`DL/ML via XHR`". - As you click a DL/ML icon, the relevant target page will be retrieved via XHR in the background (so, after clicking an icon, it will now have the magnet link). -- Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . +- Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere , +- and to barn852 (for [this](https://greasyfork.org/en/scripts/420754-1337x-torrent-and-magnet-links/discussions/96026) contribution).- From a3da874b90cf833f4758c97a76cd3b66df642e68 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 17 Aug 2021 20:30:08 +0300 Subject: [PATCH 175/245] Update 1337x_-_torrent_and_magnet_links.user.js --- .../1337x_-_torrent_and_magnet_links.user.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index fbc4142..d02aa12 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -10,10 +10,14 @@ // @grant GM_addStyle // @run-at document-idle // -// Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . +// Thanks to: +// - NotNeo: most of the CSS used is taken from this script: https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere . +// - barn852 for his contribution here: https://greasyfork.org/en/scripts/420754-1337x-torrent-and-magnet-links/discussions/96026 +// +// Official mirrors list: https://1337x.to/about +// // ==/UserScript== -// Official mirrors list: https://1337x.to/about GM_addStyle(` From ba05a762d22a155026ba41aac684fe9dd38bf970 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 23 Aug 2021 20:05:29 +0300 Subject: [PATCH 176/245] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..e610910 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '23 10 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From e5a869183f637e0d4150a14a70996064ccbfc1b3 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 4 Sep 2021 19:06:17 +0300 Subject: [PATCH 177/245] Update README.md --- 1337x_-_torrent_and_magnet_links/README.md | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/README.md b/1337x_-_torrent_and_magnet_links/README.md index 826ea84..899c5f6 100644 --- a/1337x_-_torrent_and_magnet_links/README.md +++ b/1337x_-_torrent_and_magnet_links/README.md @@ -1,12 +1,17 @@ -Adds a column with torrent and magnet links in 1337x lists: -![](https://i.imgur.com/S4nzRP8.jpg) +Adds a column with torrent and magnet links in 1337x lists: +![](https://i.imgur.com/goYAFQH.jpg) -Notes: +Notes: - The script generates all links via XHR: - - The DL/ML links will have: - - initially, as its destination (`href`) a: `javascript:void(0)`, - - as tooltip: "`DL/ML via XHR`". - - As you click a DL/ML icon, the relevant target page will be retrieved via XHR in the background (so, after clicking an icon, it will now have the magnet link). -- Thanks to NotNeo: most of the CSS used is taken from this script https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere , -- and to barn852 (for [this](https://greasyfork.org/en/scripts/420754-1337x-torrent-and-magnet-links/discussions/96026) contribution).- + - The DL/ML links will have: + - as tooltip: "`ml/dl via xhr`". + - as destination (href): + - initially: `javascript:void(0)` *(to avoid taking the user back to the top of the page, which occurred if having `#`, instead)*, + - as you click a ml/dl icon, the relevant target URL will be retrieved via XHR in the background. +- Thanks to: + - NotNeo: most of the CSS is from his [1337X - Magnet/Torrent links everywhere](https://greasyfork.org/en/scripts/373230-1337x-magnet-torrent-links-everywhere) script, + - barn852 for [this](https://greasyfork.org/en/scripts/420754-1337x-torrent-and-magnet-links/discussions/96026) contribution . +- Tampermonkey and Violentmonkey are supported - Greasemonkey is NOT supported. + +[Hosted at GitHub](https://github.com/darkred/Userscripts) From a0f51d72ac70f9a9362ad5d109bdb89f687f9239 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 16 Sep 2021 17:10:43 +0300 Subject: [PATCH 178/245] Improve selector specificity (the "Recommended torrents" elements are one more) --- RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index 2a24c11..19ca8a9 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.4.27 +// @version 2021.9.16 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -235,9 +235,11 @@ if (!isOnTorrentListPage) { } else { // i.e. if isOnTorrentListPage === true - var links = document.querySelectorAll('a[onmouseover~="return"]'); + // var links = document.querySelectorAll('a[onmouseover^="return"]'); + var links = document.querySelectorAll('td[valign="top"] > a[onmouseover^="return overlib"]'); // The "Recommended torrents" elements on https://rarbgproxy.org/torrents.php* . - for(let i = 0; i < 8; i++) { + // for(let i = 0; i < 9; i++) { + for(let i = 0; i < links.length; i++) { links[i].addEventListener('click', function(event){ From e3dd1760d02b0bd3d16528b48084f07dfd7f50cd Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 16 Sep 2021 17:55:47 +0300 Subject: [PATCH 179/245] Lint --- .../RARBG_-_various_tweaks.user.js | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index 19ca8a9..47ba48f 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -18,7 +18,7 @@ // Automatically redirect e.g. // https://rarbgproxy.org/torrents.php?search=tt6139732 to // https://rarbgproxy.org/torrents.php?imdb=tt6139732 -if (/torrents\.php\?search=tt[0-9]+/.test(window.location.href)) { +if (/torrents\.php\?search=tt\d+/.test(window.location.href)) { // window.location.href = window.location.href.replace('?search=', '?imdb='); window.location.replace(window.location.href.replace('?search=', '?imdb=')); // Use window.location.replace(url) if you want to redirect the user in a way that the current page is forgotten by the back button, ( https://stackoverflow.com/a/3170964 ) throw 'Reloading page'; // Stop script execution @@ -66,7 +66,7 @@ if (!isOnTorrentListPage) { var ratingByUsersElement = document.querySelector('.ratingblock p'); var text = document.querySelector('.ratingblock p').innerHTML; ratingByUsersElement.title = ratingByUsersElement.innerText; - var regex = /[\s]+[\s]+([\d.]+)<\/strong>\/([\d.]+)(.*)/; + var regex = /\s+\s+([\d.]+)<\/strong>\/([\d.]+)(.*)/; var average = text.match(regex)[1] * 2; var votes = text.match(regex)[2] * 2; var rest = text.match(regex)[3]; @@ -139,7 +139,7 @@ if (!isOnTorrentListPage) { var rtTomatometerNode = $(".header2:contains('RT Tomatometer, Audience Score:')").next(); if (rtTomatometerNode.length !== 0) - $(rtTomatometerNode).html($(rtTomatometerNode).html().replace(/(.*) ([\d]+%)(.*)s ([\d]+%)/, function(m, s1, s2, s3, s4) { return s1 + ''+ s2 + '' + s3 + ''+ s4 + '' ;})); + $(rtTomatometerNode).html($(rtTomatometerNode).html().replace(/(.*) (\d+%)(.*)s (\d+%)/, function(m, s1, s2, s3, s4) { return s1 + ''+ s2 + '' + s3 + ''+ s4 + '' ;})); var rtCriticsAvgNode = $(".header2:contains('RT Critics Avg:')").next(); @@ -258,7 +258,7 @@ if (!isOnTorrentListPage) { if (retrievedLink) { let currentDomainName = window.location.hostname; - links[i].setAttribute('href', 'https://' + currentDomainName + '/torrents.php?imdb=' + retrievedLink.match(/.*(tt[0-9]*).*/)[1]); // example URL: https://rarbgproxy.org/torrents.php?imdb=tt7605074 + links[i].setAttribute('href', 'https://' + currentDomainName + '/torrents.php?imdb=' + retrievedLink.match(/(tt\d+)/)[1]); // example URL: https://rarbgproxy.org/torrents.php?imdb=tt7605074 } @@ -298,9 +298,9 @@ if (!isOnTorrentListPage) { function removePipesLinebreaks(s){ if (s) { - return s.replace(/(\ \|)/gm,',') - .replace(/(\|)/gm,',') - .replace(/(\r\n|\n|\r| |
)/gm,' '); + return s.replace(/( \|)/g,',') + .replace(/(\|)/g,',') + .replace(/(\r\n|\n|\r| |
)/g,' '); } } @@ -328,7 +328,7 @@ if (rtPlotStored === null || rtPlotStored === 'undefined') { if (isOnSearchbyIMDbIdPage) { let searchListingHeader = document.querySelector('h1.black').textContent; - const imdbIdRegex = /tt[0-9]+/; + const imdbIdRegex = /tt\d+/; let imdbId; if (imdbIdRegex.test(searchListingHeader)){ imdbId = imdbIdRegex.exec(searchListingHeader)[0]; @@ -428,23 +428,23 @@ if (isOnSearchbyIMDbIdPage) { // make bold (example URL: https://rarbgproxy.org/torrents.php?imdb=tt6146586) let imdbRefRatingElement = $("b:contains('IMDb Rating:')").parent(); - let imdbRatingBoldRegex = /(.*IMDb<\/a> Rating:<\/b> )([0-9.]+)(\/.*)/; - let rtCriticsBoldRegex = /(.*RT Critics Avg:<\/b> )([0-9.]+)(\/.*)/; - let rtTomatometerBoldRegex = /(.*RT Tomatometer:<\/b> )([\d]+%.*[\d]+%)(.*)/; + let imdbRatingBoldRegex = /(.*IMDb<\/a> Rating:<\/b> )([\d.]+)(\/.*)/; + let rtCriticsBoldRegex = /(.*RT Critics Avg:<\/b> )([\d.]+)(\/.*)/; + let rtTomatometerBoldRegex = /(.*RT Tomatometer:<\/b> )(\d+%.*\d+%)(.*)/; imdbRefRatingElement.html(makeBold(imdbRefRatingElement.html(), imdbRatingBoldRegex)); imdbRefRatingElement.html(makeBold(imdbRefRatingElement.html(), rtCriticsBoldRegex)); imdbRefRatingElement.html(makeBold(imdbRefRatingElement.html(), rtTomatometerBoldRegex)); // duration from min to h:mm - let durationRegex = /(.*Runtime:<\/b> )([\d]+)(.*)/; + let durationRegex = /(.*Runtime:<\/b> )(\d+)(.*)/; if (durationRegex.test(imdbRefRatingElement.html())){ imdbRefRatingElement.html(imdbRefRatingElement.html().replace(durationRegex, function(m, s1, s2, s3) { return s1 + minsToHoursMins(s2) + s3 ;})); } // rearrange: IMDb Summary --> IMDb Rating --> RT Tomatometer --> RT Critics Avg --> RT Critics Consensus - var rearrangeRegex = /([\s\S]+)(IMDb<\/a> Rating:.*10
)?(IMDb Summary:<\/b>.*<\/span>
)[\s]*(RT Critics Avg:.*10
)?[\s]*(RT Tomatometer:.*%<\/b>[\s]+
)?(RT Critics Consensus:.*)?/; + var rearrangeRegex = /([\s\S]+)(
IMDb<\/a> Rating:.*10
)?(IMDb Summary:<\/b>.*<\/span>
)\s*(RT Critics Avg:.*10
)?\s*(RT Tomatometer:.*%<\/b>\s+
)?(RT Critics Consensus:.*)?/; if (rearrangeRegex.test(imdbRefRatingElement.html())){ imdbRefRatingElement.html(imdbRefRatingElement.html().replace(rearrangeRegex, function(m, s1, s2, s3, s4, s5, s6) { if (!s2) s2=''; if (!s3) s3=''; if (!s4) s4=''; if (!s5) s5=''; if (!s6) s6=''; return s1 + s3 + s2 + s5 + s4 + s6 ;})); } From 1497e334f30f076fbd6c189f28461090109dc024 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 18 Sep 2021 00:54:03 +0300 Subject: [PATCH 180/245] Separated the regex for the tweaks in search-by-IMDb-id pages, in order to make it work consistently --- .../RARBG_-_various_tweaks.user.js | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index 47ba48f..f980902 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.9.16 +// @version 2021.9.18 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -219,8 +219,8 @@ if (!isOnTorrentListPage) { // pgRating .insertAfter(tableLastRow()); imdbLink .insertAfter(tableLastRow()); trailer .insertAfter(tableLastRow()); - imdbSummary .insertAfter(tableLastRow()); imdbRating .insertAfter(tableLastRow()); + imdbSummary .insertAfter(tableLastRow()); RTTomatometer .insertAfter(tableLastRow()); RTCriticsAvg .insertAfter(tableLastRow()); RTCriticsCons .insertAfter(tableLastRow()); @@ -442,12 +442,27 @@ if (isOnSearchbyIMDbIdPage) { imdbRefRatingElement.html(imdbRefRatingElement.html().replace(durationRegex, function(m, s1, s2, s3) { return s1 + minsToHoursMins(s2) + s3 ;})); } + imdbRefRatingElement.html(imdbRefRatingElement.html().replace('RT Tomatometer:', 'RT Tomatometer/Audience Score:')); + + let preferredPatterns = [ + /([\S\s]+
)\s+
IMDb<\/a> Rating:.*\.
)/, + /(RT Critics Avg:.*10
)/, + // /(RT Tomatometer:.*%<\/b>\s+
)/, + /(RT Tomatometer\/Audience Score:.*%<\/b>\s+
)/, + /(RT Critics Consensus:.*)/, + ]; - // rearrange: IMDb Summary --> IMDb Rating --> RT Tomatometer --> RT Critics Avg --> RT Critics Consensus - var rearrangeRegex = /([\s\S]+)(
IMDb<\/a> Rating:.*10
)?(IMDb Summary:<\/b>.*<\/span>
)\s*(RT Critics Avg:.*10
)?\s*(RT Tomatometer:.*%<\/b>\s+
)?(RT Critics Consensus:.*)?/; - if (rearrangeRegex.test(imdbRefRatingElement.html())){ - imdbRefRatingElement.html(imdbRefRatingElement.html().replace(rearrangeRegex, function(m, s1, s2, s3, s4, s5, s6) { if (!s2) s2=''; if (!s3) s3=''; if (!s4) s4=''; if (!s5) s5=''; if (!s6) s6=''; return s1 + s3 + s2 + s5 + s4 + s6 ;})); + let result = []; + + for (let i=0; i < preferredPatterns.length;i++) { + if(RegExp(preferredPatterns[i]).test(imdbRefRatingElement.html())) { + result[i] = imdbRefRatingElement.html().match(preferredPatterns[i])[1]; + } else { + result[i] = ''; + } } + imdbRefRatingElement.html(result[0] + result[1] + result[3] + result[2] + result[4]); } From dda1d160f01a7b7dcc5e92792416a9f19ab41525 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 18 Sep 2021 02:29:14 +0300 Subject: [PATCH 181/245] Update RARBG_-_various_tweaks.user.js --- RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index f980902..56318ce 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.9.18 +// @version 2021.9.18.1 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -445,7 +445,7 @@ if (isOnSearchbyIMDbIdPage) { imdbRefRatingElement.html(imdbRefRatingElement.html().replace('RT Tomatometer:', 'RT Tomatometer/Audience Score:')); let preferredPatterns = [ - /([\S\s]+
)\s+
IMDb<\/a> Rating:.*\.
)/, /(RT Critics Avg:.*10
)/, // /(RT Tomatometer:.*%<\/b>\s+
)/, @@ -456,7 +456,7 @@ if (isOnSearchbyIMDbIdPage) { let result = []; for (let i=0; i < preferredPatterns.length;i++) { - if(RegExp(preferredPatterns[i]).test(imdbRefRatingElement.html())) { + if (preferredPatterns[i].test(imdbRefRatingElement.html())) { result[i] = imdbRefRatingElement.html().match(preferredPatterns[i])[1]; } else { result[i] = ''; From 629f82abd0b2dad0f8ff85b252f43c776c93df01 Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 19 Sep 2021 03:15:24 +0300 Subject: [PATCH 182/245] Fix for RARBG torrent detail pages, where there is only 1 user vote cast yet e.g. https://rarbgproxy.org/torrent/xn1lke6 --- RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js index 56318ce..7429fd2 100644 --- a/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js +++ b/RARBG_-_various_tweaks/RARBG_-_various_tweaks.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - various tweaks // @namespace darkred -// @version 2021.9.18.1 +// @version 2021.9.19 // @description Various tweaks for RARBG torrent detail pages, listings and search-by-IMDb-id pages. // @author darkred // @license MIT @@ -150,7 +150,7 @@ if (!isOnTorrentListPage) { var userRating = $(".header2:contains('Rating:')").filter(function() { return $.trim($(this).text()) === "Rating:"; }).parent(); - userRating = $("p:contains('votes cast')"); + userRating = $("p:contains('votes cast'), p:contains('vote cast')"); $(userRating).css('font-size', '11px'); $(userRating).html($(userRating).html().replace('Rating:', '')); $(userRating).replaceWith(function() { @@ -463,6 +463,7 @@ if (isOnSearchbyIMDbIdPage) { } } + // rearrange: IMDb Summary --> IMDb Rating --> RT Tomatometer --> RT Critics Avg --> RT Critics Consensus imdbRefRatingElement.html(result[0] + result[1] + result[3] + result[2] + result[4]); } From 25da7f7b03e535151b0b126f6170c3845b04b2eb Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 10 Oct 2021 03:51:15 +0300 Subject: [PATCH 183/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 29 +++++++++++---------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9f80759..21b4063 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -13,30 +13,25 @@ body: id: terms attributes: label: "Please ensure:" + options: + - label: "I included in the issue title the script name I'm referring to." + required: true + - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. + required: true + - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. + required: true + - type: checkboxes + attributes: + label: 'Include in this issue:' options: - - label: "I included in the issue title the script name I'm referring to." - required: true - - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. - required: true - - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. - required: true + - label: Screenshots/video/gif demonstrating the bug, if it’s visual + - label: Console errors, if any - type: textarea id: the-problem attributes: label: Describe the problem and how to replicate it validations: required: true - - type: textarea - id: screenshots - attributes: - label: Screenshots/video/gif showing the issue, if it’s visual - description: Files can be dropped in this field - - type: textarea - id: logs - attributes: - label: Console errors - description: If any - render: shell - type: input id: example-url attributes: From 9ffc0dbd747ed3c74cd6e0e2ec01ee0b943d4e9b Mon Sep 17 00:00:00 2001 From: darkred Date: Sun, 10 Oct 2021 03:52:37 +0300 Subject: [PATCH 184/245] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 21b4063..eaba567 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -13,13 +13,13 @@ body: id: terms attributes: label: "Please ensure:" - options: - - label: "I included in the issue title the script name I'm referring to." - required: true - - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. - required: true - - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. - required: true + options: + - label: "I included in the issue title the script name I'm referring to." + required: true + - label: I performed a search of the [issue tracker](https://github.com/darkred/Userscripts/issues) and in the relevant Greasyfork [feedback page](https://greasyfork.org/en/users/2160-darkred?sort=updated) to avoid opening a duplicate issue. + required: true + - label: The bug is caused by the script itself. It doesn't happen if I disable the script, or in a fresh browser profile. + required: true - type: checkboxes attributes: label: 'Include in this issue:' From 1bc70f3bf75e620b9bfbe4c28cfc7974b56bbab8 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 13 Oct 2021 03:24:12 +0300 Subject: [PATCH 185/245] Update RARBG_-_torrent_and_magnet_links.user.js --- .../RARBG_-_torrent_and_magnet_links.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js index 525ed7d..d08018a 100644 --- a/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js +++ b/RARBG_-_torrent_and_magnet_links/RARBG_-_torrent_and_magnet_links.user.js @@ -2,7 +2,7 @@ // @name RARBG - torrent and magnet links // @namespace darkred // @version 2021.7.3 -// @description Adds a column with torrent and magnet links in RARBG lists +// @description Adds a column with torrent and magnet links in lists // @author darkred // @contributor sxe, dandyclubs, lx19990999 // @license MIT From aa9f7ed4adb72245eab9d13f377aac733da19d38 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Oct 2021 00:28:50 +0300 Subject: [PATCH 186/245] Create .eslintignore --- .eslintignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..db181dd --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +**/*.min.js From 4759e25cd3ade8be7ad72ff8a7c6ca74e2a000d2 Mon Sep 17 00:00:00 2001 From: darkred Date: Wed, 27 Oct 2021 00:31:11 +0300 Subject: [PATCH 187/245] Added 'no-jquery' eslint plugin --- .eslintrc.js | 11 ++++++++--- package.json | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index c233581..8d36bd9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,13 +12,18 @@ module.exports = { // "eslint:all", "eslint:recommended", // "plugin:clean-regex/recommended" - // "plugin:regexp/all" - "plugin:regexp/recommended" + "plugin:no-jquery/deprecated", + // "plugin:no-jquery/recommended", + // "plugin:no-jquery/slim", + // "plugin:no-jquery/all", + // "plugin:regexp/all", + "plugin:regexp/recommended", ], "plugins": [ // "clean-regex" - "regexp" + "regexp", + "no-jquery", ], "parserOptions": { // "ecmaVersion": 12, diff --git a/package.json b/package.json index 2a03a61..ff83b77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "devDependencies": { "eslint": "*", - "eslint-plugin-clean-regex": "*", + "eslint-plugin-no-jquery": "*", "eslint-plugin-regexp": "*", "eslint-plugin-userscripts": "*" } From 31cc6d82b24b3c03a3439b564b1f95c433d8dff3 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 8 Nov 2021 17:28:22 +0200 Subject: [PATCH 188/245] Timezone change due to DST --- ..._-_convert_torrent_timestamps_to_relative_format.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index e2ebefa..6cf42f2 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.7.3 +// @version 2021.11.8 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -23,8 +23,8 @@ // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) -const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) -// const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) +// const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) +const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) From d1e29697199bcc9c4c3439aa94167fbcf3b7cb87 Mon Sep 17 00:00:00 2001 From: darkred Date: Tue, 9 Nov 2021 00:02:10 +0200 Subject: [PATCH 189/245] Use the timezone from the page footer timestamp text --- ...vert_torrent_timestamps_to_relative_format.user.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js index 6cf42f2..2dfb259 100644 --- a/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js +++ b/RARBG_-_convert_torrent_timestamps_to_relative_format/RARBG_-_convert_torrent_timestamps_to_relative_format.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name RARBG - convert torrent timestamps to relative format // @namespace darkred -// @version 2021.11.8 +// @version 2021.11.9 // @description Converts torrent upload timestamps to relative format // @author darkred // @license MIT @@ -17,14 +17,19 @@ /* global moment */ -// Based on the timestamp on the footer of each RARBG page --> "Sat, 01 May 2020 20:14:56 +0200", -// the script takes that the server time is GMT+2 and that it doesn't take DST. +// Based on the timestamp on the footer of each RARBG page --> "Sat, 01 May 2020 20:14:56 +0200", the script takes that the server time is GMT+2 and that it doesn't take DST. +// Otherwise, when it's e.g. --> "Mon, 08 Nov 2021 21:26:11 +0100", it takes that the server time is GMT+1 and that it doesn't take DST. // Also, the script uses the 'moment-timezone' library as it takes DST offsets into account when converting the timestamps to user/local timezone. +/* // This is no typo: // const serverTimezone = 'Etc/GMT+2'; // -02:00 -02:00 (=no DST) // const serverTimezone = 'Etc/GMT-2'; // +02:00 +02:00 (=no DST) const serverTimezone = 'Etc/GMT-1'; // +01:00 +01:00 (=no DST) +*/ +let serverTimezone; +$('div:contains("SUPPORT :")').contents().last().text().trim().slice(-5) === '+0200' ? serverTimezone = 'Etc/GMT-2' : serverTimezone = 'Etc/GMT-1'; + const localTimezone = moment.tz.guess(); // In my case ----> +02:00 +03:00 (DST) From b1c6e9a6dbc32c2abd9513a4a3b383a7823aebd7 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 19 Nov 2021 23:55:27 +0200 Subject: [PATCH 190/245] Create lint.yml Create main.yml Update lint.yml --- .github/workflows/lint.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..4a3779f --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,29 @@ +# from https://github.com/tophf/mpiv/blob/master/.github/workflows/lint.yml +# and https://github.com/stefanoeb/eslint-action/blob/master/README.md + +name: ESLint + +on: + push: + branches: [ master ] + paths-ignore: + - '.github/**' # this yml is also excluded so you need to re-run it explicitly if necessary + - .editorconfig + - LICENSE + - README.md + pull_request: + branches: [ master ] + paths-ignore: + - '.github/**' # this yml is also excluded so you need to re-run it explicitly if necessary + - .editorconfig + - LICENSE + - README.md +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install modules + run: npm install + - name: Run ESLint + run: eslint . --ext .js From 69d8d146a6c19d2af53f2686b946ac69c2131016 Mon Sep 17 00:00:00 2001 From: darkred Date: Fri, 26 Nov 2021 23:59:27 +0200 Subject: [PATCH 191/245] Update .eslintrc.js --- .eslintrc.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 8d36bd9..d81d25f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,19 +9,19 @@ module.exports = { // "extends": "eslint:all", // "extends": "eslint:recommended", "extends": [ - // "eslint:all", "eslint:recommended", - // "plugin:clean-regex/recommended" - "plugin:no-jquery/deprecated", + // "eslint:all", // "plugin:no-jquery/recommended", + "plugin:no-jquery/deprecated", // "plugin:no-jquery/slim", // "plugin:no-jquery/all", - // "plugin:regexp/all", + // "plugin:clean-regex/recommended" "plugin:regexp/recommended", + // "plugin:regexp/all", ], "plugins": [ - // "clean-regex" + // "clean-regex", "regexp", "no-jquery", ], From b019d5113b5ad54bc950f973df6c740edb299560 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 27 Nov 2021 00:24:21 +0200 Subject: [PATCH 192/245] Update lint.yml --- .github/workflows/lint.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4a3779f..45705e4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,7 +3,7 @@ name: ESLint -on: +on: push: branches: [ master ] paths-ignore: @@ -18,6 +18,8 @@ on: - .editorconfig - LICENSE - README.md + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: jobs: lint: runs-on: ubuntu-latest @@ -26,4 +28,4 @@ jobs: - name: Install modules run: npm install - name: Run ESLint - run: eslint . --ext .js + run: npx eslint . --ext .user.js From 4568f5860389978cdb79c2f8bcf33c89d014c5d1 Mon Sep 17 00:00:00 2001 From: darkred Date: Mon, 13 Dec 2021 01:50:39 +0200 Subject: [PATCH 193/245] Update Instagram_-_visible_images_counter.user.js Updated most selectors after recent changes in Instagram HTML --- .../Instagram_-_visible_images_counter.user.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 8eac977..653d9fc 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.4.12 +// @version 2021.12.13 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -40,8 +40,8 @@ var total; function showCounter() { // var totalString = $(`span:contains('posts'):last-child > span, .g47SY`).html(); // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de - var totalString = document.querySelector(`#react-root > section > main > div > header > section > ul > li:nth-child(1) > span > span, - #react-root > section > main > div > header > section > ul > li:nth-child(1) > a > span`).textContent; // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de + var totalString = document.querySelector(`#react-root > div > div > section > main > div > header > section > ul > li:nth-child(1) > span > span, + #react-root > div > div > section > main > div > header > section > ul > li:nth-child(1) > a > span`).textContent; // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de total = totalString.replace(',', '').replace('.', ''); // strip the thousand comma/dot seperator @@ -125,7 +125,7 @@ var observer; // var avatarSelector = 'h1.rhpdm'; // the profile name element // var avatarSelector = 'span.-nal3'; // the 'posts' count element, e.g. 683 posts // var avatarSelector = 'ul.k9GMp'; // the profile's 3 counters container element -var avatarSelector = '.nZSzR'; // the profile's username container element +var avatarSelector = '.eC4Dz'; // the profile's username container element // var avatarSelector = 'main > article > header > section > div._ienqf > div > button'; // the 3-dots icon // var avatarSelector = 'div[style="flex-direction: column; padding-bottom: 0px; padding-top: 0px;"]'; // the 3-dots icon From d82413b9c1ae10578853521666d58e952f3ca892 Mon Sep 17 00:00:00 2001 From: darkred Date: Sat, 18 Dec 2021 20:26:34 +0200 Subject: [PATCH 194/245] Update Instagram_-_visible_images_counter.user.js Restored a previous selector after recent changes in Instagram HTML --- .../Instagram_-_visible_images_counter.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 653d9fc..0036b50 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Instagram - visible images counter // @namespace darkred -// @version 2021.12.13 +// @version 2021.12.18 // @description Shows in instagram profile pages how many images out of total (as a number and as a percentage) are currently visible, as you scroll down the page. // @author darkred // @license MIT @@ -40,8 +40,8 @@ var total; function showCounter() { // var totalString = $(`span:contains('posts'):last-child > span, .g47SY`).html(); // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de - var totalString = document.querySelector(`#react-root > div > div > section > main > div > header > section > ul > li:nth-child(1) > span > span, - #react-root > div > div > section > main > div > header > section > ul > li:nth-child(1) > a > span`).textContent; // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de + var totalString = document.querySelector(`#react-root > section > main > div > header > section > ul > li:nth-child(1) > span > span, + #react-root > section > main > div > header > section > ul > li:nth-child(1) > a > span`).textContent; // The 'total' value (it's a string). The ".g47SY" selector is for localized pages, e.g. https://www.instagram.com/instagram/?hl=de total = totalString.replace(',', '').replace('.', ''); // strip the thousand comma/dot seperator From 113651ee6c948d4f58d0ea3258bd9387ddd72258 Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 6 Jan 2022 18:27:09 +0200 Subject: [PATCH 195/245] Update Markdown_toolbar_for_redditcom.user.js Closes #45 --- .../Markdown_toolbar_for_redditcom.user.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Markdown_toolbar_for_reddit.com/Markdown_toolbar_for_redditcom.user.js b/Markdown_toolbar_for_reddit.com/Markdown_toolbar_for_redditcom.user.js index 3801e94..4d9a6ef 100644 --- a/Markdown_toolbar_for_reddit.com/Markdown_toolbar_for_redditcom.user.js +++ b/Markdown_toolbar_for_reddit.com/Markdown_toolbar_for_redditcom.user.js @@ -1,12 +1,14 @@ // ==UserScript== // @name Markdown toolbar for reddit.com // @namespace darkred -// @version 1.3 +// @version 1.4.1 // @description Creates a Markdown toolbar whenever you make/edit text posts or comments in reddit.com // @author wOxxOm, darkred // @license MIT // @include https://www.reddit.com/*submit* +// @include https://old.reddit.com/*submit* // @include https://www.reddit.com/*comments* +// @include https://old.reddit.com/*comments* // @grant GM_addStyle // @icon https://raw.githubusercontent.com/dcurtis/markdown-mark/master/png/66x40-solid.png // @@ -30,7 +32,7 @@ else { var textareas = document.querySelectorAll('textarea'); // ADD TOOLBAR: TO EDITING YOUR POST, TO 'NEW COMMENT' FORM AND TO EDITING YOUR EXISTING COMMENT(S) - for (var i = 0; i < textareas.length - 2; i++) { + for (var i = 0; i < textareas.length; i++) { x = document.querySelectorAll('textarea') [i].parentNode; addFeatures(x); } From c1db0e320107601657c2a5e5da4f9b2f2eb5661f Mon Sep 17 00:00:00 2001 From: darkred Date: Thu, 6 Jan 2022 19:42:47 +0200 Subject: [PATCH 196/245] Removed unused var --- .../1337x_-_torrent_and_magnet_links.user.js | 2 +- ..._timestamps_and_add_link_to_the_FB_comments_area.user.js | 6 ++++-- .../Instagram_-_visible_images_counter.user.js | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js index d02aa12..a6244e8 100644 --- a/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js +++ b/1337x_-_torrent_and_magnet_links/1337x_-_torrent_and_magnet_links.user.js @@ -125,7 +125,7 @@ function addClickListeners(links, type){ links.forEach((link) => { - link.addEventListener('click', function(event){ + link.addEventListener('click', function(){ let href = this.getAttribute('href'); if (href === 'javascript:void(0)') { diff --git a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js index 357a4aa..5afeca5 100644 --- a/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js +++ b/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area/Blabbermouth_-_generate_timestamps_and_add_link_to_the_FB_comments_area.user.js @@ -17,6 +17,8 @@ /* global moment */ +/* eslint-disable no-console */ + 'use strict'; @@ -75,7 +77,7 @@ if ( threshold: 0 }; - let callback = (entries, observer) => { + let callback = (entries) => { entries.forEach(entry => { if (!entry.target.classList.contains('done')){ @@ -124,7 +126,7 @@ if ( const targetNode2 = document.querySelector('.infinite_scroll'); const config2 = { attributes: false, childList: true, subtree: false }; - const callback2 = function(mutationsList, observer2) { + const callback2 = function(mutationsList) { for(const mutation of mutationsList) { if (mutation.type === 'childList') { var allTimestamps = document.querySelectorAll('span.date-time'); diff --git a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js index 0036b50..7929161 100644 --- a/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js +++ b/Instagram_-_visible_images_counter/Instagram_-_visible_images_counter.user.js @@ -12,6 +12,7 @@ // @supportURL https://github.com/darkred/Userscripts/issues // ==/UserScript== +/* eslint-disable no-console */ var stylesheet = `