dns-worker 1.0.2-3.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -109
- package/dist/serverfull.mjs +5319 -911
- package/migrations/0052_add_e2ee_to_logs.sql +6 -0
- package/migrations/0053_add_e2ee_key_tables.sql +31 -0
- package/migrations/0054_drop_hourly_rollups.sql +12 -0
- package/migrations/0055_add_is_active_to_user_log_keys.sql +2 -0
- package/migrations/0056_add_kem_keys_and_encrypt_version.sql +21 -0
- package/migrations/0057_add_idx_logs_kem_key_id.sql +2 -0
- package/package.json +8 -5
- package/static/_headers +8 -0
- package/static/assets/AccountView-CdfTI-rw.js +4 -0
- package/static/assets/AnalyticsView-DE25Td6t.js +2 -0
- package/static/assets/AuthView-DeKX1gG-.js +2 -0
- package/static/assets/DestinationMap-CRCdjD4S.js +1 -0
- package/static/assets/FilteringView-9SF7vAn0.js +1 -0
- package/static/assets/LogsView-DGXuCkRb.js +5 -0
- package/static/assets/QRCodeCanvas-9YjBSnzo.js +2 -0
- package/static/assets/RulesView-C8mXn9m8.js +1 -0
- package/static/assets/SettingsView-yiZeyh7q.js +1 -0
- package/static/assets/SetupView-r5GQKPN4.js +1 -0
- package/static/assets/{SwipeableDrawer-B-MfxTWM.js → SwipeableDrawer-DuXKmSrw.js} +1 -1
- package/static/assets/{TrendChart-B20w7SzD.js → TrendChart-BbPOeC8w.js} +3 -3
- package/static/assets/browser-BqNNtPRD.js +1 -0
- package/static/assets/date-dnUzoLoj.js +1 -0
- package/static/assets/de-DE-Bvn6LW48.js +10 -0
- package/static/assets/es-ES-BHMlKDw4.js +10 -0
- package/static/assets/fr-FR-DEgfea4H.js +10 -0
- package/static/assets/index-Ct0QwtUk.js +14 -0
- package/static/assets/index-D53KGRYV.css +2 -0
- package/static/assets/ja-JP-C1UasoOt.js +10 -0
- package/static/assets/ko-KR-DRVmuXAK.js +10 -0
- package/static/assets/ru-RU-BrUQ8HMM.js +10 -0
- package/static/assets/services-unF2tLc7.js +1 -0
- package/static/assets/sqlite.worker-C50yoTbX.js +186 -0
- package/static/assets/sqlite3-Con_VOcu.wasm +0 -0
- package/static/assets/sqlite3-opfs-async-proxy-Ck-yCayi.js +881 -0
- package/static/assets/sqlite3-opfs-async-proxy.js +881 -0
- package/static/assets/sqlite3-worker1-DZ2OAEkd.js +44 -0
- package/static/assets/vendor-react-GZisTXSQ.js +11 -0
- package/static/assets/{vendor-ui-core-BpucEp_q.js → vendor-ui-core-BjAOArGo.js} +1 -1
- package/static/assets/vendor-utils-C-1rF3VB.js +9 -0
- package/static/assets/vi-VN-_fj_hwx9.js +10 -0
- package/static/assets/zh-CN-DRUEP9Sg.js +10 -0
- package/static/assets/zh-TW-v7FvDwjG.js +10 -0
- package/static/index.html +5 -5
- package/static/sqlite3-opfs-async-proxy.js +881 -0
- package/static/sw.js +1 -1
- package/static/assets/AccountView-BvRvODjN.js +0 -4
- package/static/assets/AnalyticsView-DQ7hDChh.js +0 -2
- package/static/assets/AuthView-Bwv6hbdi.js +0 -2
- package/static/assets/DestinationMap-BEQNbcb-.js +0 -1
- package/static/assets/FilteringView-BWD3e-DS.js +0 -1
- package/static/assets/LogsView-kQy7qTGd.js +0 -5
- package/static/assets/QRCodeCanvas-X07w5x_G.js +0 -2
- package/static/assets/RulesView-3d5hga0L.js +0 -1
- package/static/assets/SettingsView-B9D0kPUF.js +0 -1
- package/static/assets/SetupView-D7d-Gsdr.js +0 -1
- package/static/assets/browser-icErLjuM.js +0 -1
- package/static/assets/date-C4b8kvr-.js +0 -1
- package/static/assets/de-DE-CXKS_pep.js +0 -10
- package/static/assets/es-ES-B2e3ea35.js +0 -10
- package/static/assets/fr-FR-1qQHEpoW.js +0 -10
- package/static/assets/index-7FKlsF79.js +0 -16
- package/static/assets/index-DdQuGqR5.css +0 -2
- package/static/assets/ja-JP-CCVeJXwX.js +0 -10
- package/static/assets/ko-KR-bQ1okpC2.js +0 -10
- package/static/assets/ru-RU-DeRsms_o.js +0 -10
- package/static/assets/services-fIMx5oSx.js +0 -1
- package/static/assets/vendor-react-Kt98jRfM.js +0 -11
- package/static/assets/vendor-utils-CfYGGC23.js +0 -9
- package/static/assets/vi-VN-BcXfqmzH.js +0 -10
- package/static/assets/zh-CN-D8YK7j27.js +0 -12
- package/static/assets/zh-TW-C2_-uaZk.js +0 -12
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./rolldown-runtime-C4Xdq4VV.js";import{Zt as n,d as r,f as i,h as a,m as o,p as s,u as c}from"./vendor-react-Kt98jRfM.js";import{S as l}from"./vendor-icons-other-Bme3ywH9.js";function u(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=u(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function d(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=u(e))&&(r&&(r+=` `),r+=t);return r}var f=d,p=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),m=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),h=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),g=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),_=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),v=t((e=>{var t=m().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),y=t((e=>{var t=m().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),b=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),x=t((e=>{var t=h(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),S=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),C=t((e=>{var t=S();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),w=t(((e,t)=>{var n=C();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),T=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),E=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
|
|
2
|
-
]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),D=t((e=>{var t=T(),n=E();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),O=t((e=>{var t=m(),n=x(),r=h(),i=D(),a=T(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),k=t((e=>{var t=m(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),A=t(((e,t)=>{var n=D();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),ee=t(((e,t)=>{var n=D(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),j=t(((e,t)=>{var n=D();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),M=t(((e,t)=>{var n=D(),r=m();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
|
|
3
|
-
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),te=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),ne=t((e=>{var t=D(),n=A(),r=ee(),i=j(),a=M(),o=E(),s=m(),c=te();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function h(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function g(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function _(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
|
|
4
|
-
Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(_(t,null)):t.data&&e.push(_(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=g(h(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),re=t((e=>{var t=m(),n=h(),r=g(),i=_(),a=v(),o=y(),s=b(),c=x(),l=w(),u=O(),d=k(),f=D(),p=ne();function S(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function C(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function T(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function E(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function A(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function ee(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function j(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return M(a,e,n)}function M(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function te(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
|
|
5
|
-
The chosen QR Code version cannot contain this amount of data.
|
|
6
|
-
Minimum version required to store current data is: `+c+`.
|
|
7
|
-
`);let l=j(n,r,o),d=new i(t.getSymbolSize(n));return S(d,n),C(d),T(d,n),A(d,r,0),n>=7&&E(d,n),ee(d,l),isNaN(a)&&(a=s.getBestMask(d,A.bind(null,d,r))),s.applyMask(a,d),A(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),te(e,a,i,o)}})),ie=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[a[t*i+r]?1:0]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),ae=t((e=>{var t=ie();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),oe=t((e=>{var t=ie();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
|
|
8
|
-
`;return typeof a==`function`&&a(null,p),p}})),se=t((e=>{var t=p(),n=re(),r=ae(),i=oe();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}));function N(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ce(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function le(e){let t,n,r;e.length===2?(t=e===N||e===ce?e:ue,n=e,r=e):(t=N,n=(t,n)=>N(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function ue(){return 0}function de(e){return e===null?NaN:+e}function*fe(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var pe=le(N);const me=pe.right;pe.left,le(de).center;var he=me,ge=class extends Map{constructor(e,t=be){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(_e(this,e))}has(e){return super.has(_e(this,e))}set(e,t){return super.set(ve(this,e),t)}delete(e){return super.delete(ye(this,e))}};function _e({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function ve({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function ye({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function be(e){return typeof e==`object`&&e?e.valueOf():e}function xe(e=N){if(e===N)return Se;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Se(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var Ce=Math.sqrt(50),we=Math.sqrt(10),Te=Math.sqrt(2);function Ee(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Ce?10:a>=we?5:a>=Te?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?Ee(e,t,n*2):[s,c,l]}function De(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?Ee(t,e,n):Ee(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function Oe(e,t,n){return t=+t,e=+e,n=+n,Ee(e,t,n)[2]}function ke(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?Oe(t,e,n):Oe(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Ae(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function je(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Me(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Se:xe(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Me(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Ne(e,n,t),i(e[r],a)>0&&Ne(e,n,r);o<s;){for(Ne(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?Ne(e,n,s):(++s,Ne(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Ne(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Pe(e,t,n){if(e=Float64Array.from(fe(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return je(e);if(t>=1)return Ae(e);var r,i=(r-1)*t,a=Math.floor(i),o=Ae(Me(e,a).subarray(0,a+1));return o+(je(e.subarray(a+1))-o)*(i-a)}}function Fe(e,t,n=de){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Ie(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Le(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Re(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Ve(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function ze(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Be(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Ve(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}function Ve(e,t){var n=typeof t,a;return t==null||n===`boolean`?s(t):(n===`number`?r:n===`string`?(a=o(t))?(t=a,i):c:t instanceof o?i:t instanceof Date?ze:Le(t)?Ie:Array.isArray(t)?Re:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Be:r)(e,t)}function He(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function Ue(e,t){t===void 0&&(t=e,e=Ve);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function We(e){return e===`__proto__`}var Ge=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function Ke(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e===``||e.startsWith(`.`)||e.endsWith(`.`)?!1:Ge.test(e);default:return!1}}function qe(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}function Je(e){return typeof e==`symbol`||e instanceof Symbol}function Ye(e){return e==null?``:Xe(e)}function Xe(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(Xe).join(`,`);if(Je(e))return e.toString();let t=e+``;return t===`0`&&Object.is(Number(e),-0)?`-0`:t}function Ze(e){if(Array.isArray(e))return e.map(qe);if(typeof e==`symbol`)return[e];e=Ye(e);let t=[],n=e.length;if(n===0)return t;let r=0,i=``,a=``,o=!1,s=!1,c=/^-?\d+(?:\.\d+)?$/;for(e.charCodeAt(0)===46&&t.push(``);r<n;){let l=e[r];if(a)l===`\\`&&r+1<n?(r++,i+=e[r]):l===a?a=``:i+=l;else if(o)if(l===`"`||l===`'`)a=l,s=!0;else if(l===`]`){if(o=!1,!s&&i.includes(`.`)&&!c.test(i)){let e=i.split(`.`);for(let n=0;n<e.length;n++)e[n]!==``&&t.push(e[n])}else t.push(i);i=``}else i+=l;else if(l===`[`)o=!0,s=!1,i&&=(t.push(i),``);else if(l===`.`){i&&=(t.push(i),``);let n=e[r+1];(n===void 0||n===`.`)&&t.push(``)}else i+=l;r++}return i&&t.push(i),t}function Qe(e,t,n){if(e==null)return n;switch(typeof t){case`string`:{if(We(t))return n;let r=e[t];return r===void 0?Ke(t)&&!Object.hasOwn(e,t)?Qe(e,Ze(t),n):n:r}case`number`:case`symbol`:{typeof t==`number`&&(t=qe(t));let r=e[t];return r===void 0?n:r}default:{if(Array.isArray(t))return $e(e,t,n);if(t=Object.is(t?.valueOf(),-0)?`-0`:String(t),We(t))return n;let r=e[t];return r===void 0?n:r}}}function $e(e,t,n){if(t.length===0)return n;let r=e;for(let e=0;e<t.length;e++){if(r==null||We(t[e]))return n;r=r[t[e]]}return r===void 0?n:r}function P(e){return function(){return e}}var et=Math.PI,tt=2*et,nt=1e-6,rt=tt-nt;function it(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}function at(e){let t=Math.floor(e);if(!(t>=0))throw Error(`invalid digits: ${e}`);if(t>15)return it;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=Math.round(arguments[t]*n)/n+e[t]}}var ot=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._=``,this._append=e==null?it:at(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,n,r){this._append`Q${+e},${+t},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(e,t,n,r,i,a){this._append`C${+e},${+t},${+n},${+r},${this._x1=+i},${this._y1=+a}`}arcTo(e,t,n,r,i){if(e=+e,t=+t,n=+n,r=+r,i=+i,i<0)throw Error(`negative radius: ${i}`);let a=this._x1,o=this._y1,s=n-e,c=r-t,l=a-e,u=o-t,d=l*l+u*u;if(this._x1===null)this._append`M${this._x1=e},${this._y1=t}`;else if(d>nt)if(!(Math.abs(u*s-c*l)>nt)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((et-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>nt&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>nt||Math.abs(this._y1-l)>nt)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%tt+tt),d>rt?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>nt&&this._append`A${n},${n},0,${+(d>=et)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function st(){return new ot}st.prototype=ot.prototype;function ct(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new ot(t)}Array.prototype.slice;function lt(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function ut(e){this._context=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function dt(e){return new ut(e)}function ft(e){return e[0]}function pt(e){return e[1]}function mt(e,t){var n=P(!0),r=null,i=dt,a=null,o=ct(s);e=typeof e==`function`?e:e===void 0?ft:P(e),t=typeof t==`function`?t:t===void 0?pt:P(t);function s(s){var c,l=(s=lt(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c<l&&n(u=s[c],c,s))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+e(u,c,s),+t(u,c,s));if(f)return a=null,f+``||null}return s.x=function(t){return arguments.length?(e=typeof t==`function`?t:P(+t),s):e},s.y=function(e){return arguments.length?(t=typeof e==`function`?e:P(+e),s):t},s.defined=function(e){return arguments.length?(n=typeof e==`function`?e:P(!!e),s):n},s.curve=function(e){return arguments.length?(i=e,r!=null&&(a=i(r)),s):i},s.context=function(e){return arguments.length?(e==null?r=a=null:a=i(r=e),s):r},s}function ht(e,t,n){var r=null,i=P(!0),a=null,o=dt,s=null,c=ct(l);e=typeof e==`function`?e:e===void 0?ft:P(+e),t=typeof t==`function`?t:P(t===void 0?0:+t),n=typeof n==`function`?n:n===void 0?pt:P(+n);function l(l){var u,d,f,p=(l=lt(l)).length,m,h=!1,g,_=Array(p),v=Array(p);for(a??(s=o(g=c())),u=0;u<=p;++u){if(!(u<p&&i(m=l[u],u,l))===h)if(h=!h)d=u,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),f=u-1;f>=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return mt().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:P(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:P(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:P(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:P(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:P(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:P(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:P(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var gt=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function _t(e){return new gt(e,!0)}function vt(e){return new gt(e,!1)}function yt(){}function bt(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function xt(e){this._context=e}xt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:bt(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:bt(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function St(e){return new xt(e)}function Ct(e){this._context=e}Ct.prototype={areaStart:yt,areaEnd:yt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:bt(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function wt(e){return new Ct(e)}function Tt(e){this._context=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:bt(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Et(e){return new Tt(e)}function Dt(e){this._context=e}Dt.prototype={areaStart:yt,areaEnd:yt,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function Ot(e){return new Dt(e)}function kt(e){return e<0?-1:1}function At(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(kt(a)+kt(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function jt(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Mt(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function Nt(e){this._context=e}Nt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Mt(this,this._t0,jt(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Mt(this,jt(this,n=At(this,e,t)),n);break;default:Mt(this,this._t0,n=At(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function Pt(e){this._context=new Ft(e)}(Pt.prototype=Object.create(Nt.prototype)).point=function(e,t){Nt.prototype.point.call(this,t,e)};function Ft(e){this._context=e}Ft.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function It(e){return new Nt(e)}function Lt(e){return new Pt(e)}function Rt(e){this._context=e}Rt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=zt(e),i=zt(t),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],e[o],t[o]);(this._line||this._line!==0&&n===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}};function zt(e){var t,n=e.length-1,r,i=Array(n),a=Array(n),o=Array(n);for(i[0]=0,a[0]=2,o[0]=e[0]+2*e[1],t=1;t<n-1;++t)i[t]=1,a[t]=4,o[t]=4*e[t]+2*e[t+1];for(i[n-1]=2,a[n-1]=7,o[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)r=i[t]/a[t-1],a[t]-=r,o[t]-=r*o[t-1];for(i[n-1]=o[n-1]/a[n-1],t=n-2;t>=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t<n-1;++t)a[t]=2*e[t+1]-i[t+1];return[i,a]}function Bt(e){return new Rt(e)}function Vt(e,t){this._context=e,this._t=t}Vt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function Ht(e){return new Vt(e,.5)}function Ut(e){return new Vt(e,0)}function Wt(e){return new Vt(e,1)}function Gt(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n<o;++n)for(i=a,a=e[t[n]],r=0;r<s;++r)a[r][1]+=a[r][0]=isNaN(i[r][1])?i[r][0]:i[r][1]}function Kt(e){for(var t=e.length,n=Array(t);--t>=0;)n[t]=t;return n}function qt(e,t){return e[t]}function Jt(e){let t=[];return t.key=e,t}function Yt(){var e=P([]),t=Kt,n=Gt,r=qt;function i(i){var a=Array.from(e.apply(this,arguments),Jt),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o<s;++o)(a[o][c]=[0,+r(e,a[o].key,c,i)]).data=e;for(o=0,l=lt(t(a));o<s;++o)a[l[o]].index=o;return n(a,l),a}return i.keys=function(t){return arguments.length?(e=typeof t==`function`?t:P(Array.from(t)),i):e},i.value=function(e){return arguments.length?(r=typeof e==`function`?e:P(+e),i):r},i.order=function(e){return arguments.length?(t=e==null?Kt:typeof e==`function`?e:P(Array.from(e)),i):t},i.offset=function(e){return arguments.length?(n=e??Gt,i):n},i}function Xt(e,t){if((r=e.length)>0){for(var n,r,i=0,a=e[0].length,o;i<a;++i){for(o=n=0;n<r;++n)o+=e[n][i][1]||0;if(o)for(n=0;n<r;++n)e[n][i][1]/=o}Gt(e,t)}}function Zt(e,t){if((i=e.length)>0){for(var n=0,r=e[t[0]],i,a=r.length;n<a;++n){for(var o=0,s=0;o<i;++o)s+=e[o][n][1]||0;r[n][1]+=r[n][0]=-s/2}Gt(e,t)}}function Qt(e,t){if(!(!((o=e.length)>0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r<a;++r){for(var s=0,c=0,l=0;s<o;++s){for(var u=e[t[s]],d=u[r][1]||0,f=(d-(u[r-1][1]||0))/2,p=0;p<s;++p){var m=e[t[p]],h=m[r][1]||0,g=m[r-1][1]||0;f+=h-g}c+=d,l+=f*d}i[r-1][1]+=i[r-1][0]=n,c&&(n-=l/c)}i[r-1][1]+=i[r-1][0]=n,Gt(e,t)}}function $t(e,t){let n=new Map;for(let r=0;r<e.length;r++){let i=e[r],a=t(i,r,e);n.has(a)||n.set(a,i)}return Array.from(n.values())}function en(e,t){return function(...n){return e.apply(this,n.slice(0,t))}}function tn(e){return e}function nn(e){return Number.isSafeInteger(e)&&e>=0}function rn(e){return e!=null&&typeof e!=`function`&&nn(e.length)}function an(e){return function(t){return Qe(t,e)}}function on(e){return e==null||typeof e!=`object`&&typeof e!=`function`}function sn(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function cn(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function ln(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var un=`[object RegExp]`,dn=`[object String]`,fn=`[object Number]`,pn=`[object Boolean]`,mn=`[object Arguments]`,hn=`[object Symbol]`,gn=`[object Date]`,_n=`[object Map]`,vn=`[object Set]`,yn=`[object Array]`,bn=`[object Function]`,xn=`[object ArrayBuffer]`,Sn=`[object Object]`,Cn=`[object Error]`,wn=`[object DataView]`,Tn=`[object Uint8Array]`,En=`[object Uint8ClampedArray]`,Dn=`[object Uint16Array]`,On=`[object Uint32Array]`,kn=`[object BigUint64Array]`,An=`[object Int8Array]`,jn=`[object Int16Array]`,Mn=`[object Int32Array]`,Nn=`[object BigInt64Array]`,Pn=`[object Float32Array]`,Fn=`[object Float64Array]`,In=typeof globalThis==`object`&&globalThis||typeof window==`object`&&window||typeof self==`object`&&self||typeof global==`object`&&global||(function(){return this})();function Ln(e){return In.Buffer!==void 0&&In.Buffer.isBuffer(e)}function Rn(e,t){return zn(e,void 0,e,new Map,t)}function zn(e,t,n,r=new Map,i=void 0){let a=i?.(e,t,n,r);if(a!==void 0)return a;if(on(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=zn(e[a],a,n,r,i);return Object.hasOwn(e,`index`)&&(t.index=e.index),Object.hasOwn(e,`input`)&&(t.input=e.input),t}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let t=new RegExp(e.source,e.flags);return t.lastIndex=e.lastIndex,t}if(e instanceof Map){let t=new Map;r.set(e,t);for(let[a,o]of e)t.set(a,zn(o,a,n,r,i));return t}if(e instanceof Set){let t=new Set;r.set(e,t);for(let a of e)t.add(zn(a,void 0,n,r,i));return t}if(Ln(e))return e.subarray();if(sn(e)){let t=new(Object.getPrototypeOf(e)).constructor(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=zn(e[a],a,n,r,i);return t}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let t=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return r.set(e,t),F(t,e,n,r,i),t}if(typeof File<`u`&&e instanceof File){let t=new File([e],e.name,{type:e.type});return r.set(e,t),F(t,e,n,r,i),t}if(typeof Blob<`u`&&e instanceof Blob){let t=new Blob([e],{type:e.type});return r.set(e,t),F(t,e,n,r,i),t}if(e instanceof Error){let t=structuredClone(e);return r.set(e,t),t.message=e.message,t.name=e.name,t.stack=e.stack,t.cause=e.cause,t.constructor=e.constructor,F(t,e,n,r,i),t}if(e instanceof Boolean){let t=new Boolean(e.valueOf());return r.set(e,t),F(t,e,n,r,i),t}if(e instanceof Number){let t=new Number(e.valueOf());return r.set(e,t),F(t,e,n,r,i),t}if(e instanceof String){let t=new String(e.valueOf());return r.set(e,t),F(t,e,n,r,i),t}if(typeof e==`object`&&Bn(e)){let t=Object.create(Object.getPrototypeOf(e));return r.set(e,t),F(t,e,n,r,i),t}return e}function F(e,t,n=e,r,i){let a=[...Object.keys(t),...cn(t)];for(let o=0;o<a.length;o++){let s=a[o],c=Object.getOwnPropertyDescriptor(e,s);(c==null||c.writable)&&(e[s]=zn(t[s],s,n,r,i))}}function Bn(e){switch(ln(e)){case mn:case yn:case xn:case wn:case pn:case gn:case Pn:case Fn:case An:case jn:case Mn:case _n:case fn:case Sn:case un:case vn:case dn:case hn:case Tn:case En:case Dn:case On:return!0;default:return!1}}function Vn(e){return zn(e,void 0,e,new Map,void 0)}function Hn(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function Un(e){return e!==null&&(typeof e==`object`||typeof e==`function`)}function Wn(e,t,n){return typeof n==`function`?Gn(e,t,function e(t,r,i,a,o,s){let c=n(t,r,i,a,o,s);return c===void 0?Gn(t,r,e,s,!1):!!c},new Map,!0):Wn(e,t,()=>void 0)}function Gn(e,t,n,r,i=!1){if(t===e)return!0;switch(typeof t){case`object`:return Kn(e,t,n,r,i);case`function`:return Object.keys(t).length>0?Gn(e,{...t},n,r,i):Hn(e,t);default:return Un(e)&&i?typeof t==`string`?t===``:!0:Hn(e,t)}}function Kn(e,t,n,r,i=!1){if(t==null)return!0;if(Array.isArray(t))return Jn(e,t,n,r);if(t instanceof Map)return qn(e,t,n,r);if(t instanceof Set)return Yn(e,t,n,r);let a=Object.keys(t);if(e==null)return i&&a.length===0;if(i)on(e)&&(e=Object(e));else{let t=ln(e);if(t!==`[object Object]`&&t!==`[object Arguments]`)return!1}if(a.length===0)return!0;if(r?.has(t))return r.get(t)===e;r?.set(t,e);try{for(let i=0;i<a.length;i++){let o=a[i];if(!(o in e)||t[o]===void 0&&e[o]!==void 0||t[o]===null&&e[o]!==null||!n(e[o],t[o],o,e,t,r))return!1}return!0}finally{r?.delete(t)}}function qn(e,t,n,r){if(t.size===0)return!0;if(!(e instanceof Map))return!1;for(let[i,a]of t.entries())if(n(e.get(i),a,i,e,t,r)===!1)return!1;return!0}function Jn(e,t,n,r){if(t.length===0)return!0;if(!Array.isArray(e))return!1;let i=new Set;for(let a=0;a<t.length;a++){let o=t[a],s=!1;for(let c=0;c<e.length;c++){if(i.has(c))continue;let l=e[c],u=!1;if(n(l,o,a,e,t,r)&&(u=!0),u){i.add(c),s=!0;break}}if(!s)return!1}return!0}function Yn(e,t,n,r){return t.size===0?!0:e instanceof Set?Jn([...e],[...t],n,r):!1}function Xn(e,t){return Wn(e,t,()=>void 0)}function Zn(e){return e=Vn(e),t=>Xn(t,e)}function Qn(e,t){return Rn(e,(n,r,i,a)=>{let o=t?.(n,r,i,a);if(o!==void 0)return o;if(typeof e==`object`){if(ln(e)===`[object Object]`&&typeof e.constructor!=`function`){let t={};return a.set(e,t),F(t,e,i,a),t}switch(Object.prototype.toString.call(e)){case fn:case dn:case pn:{let t=new e.constructor(e?.valueOf());return F(t,e),t}case mn:{let t={};return F(t,e),t.length=e.length,t[Symbol.iterator]=e[Symbol.iterator],t}default:return}}})}function $n(e){return Qn(e)}var er=/^(?:0|[1-9]\d*)$/;function tr(e,t=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e<t;case`symbol`:return!1;case`string`:return er.test(e)}}function nr(e){return typeof e==`object`&&!!e&&ln(e)===`[object Arguments]`}function rr(e,t){let n;if(n=Array.isArray(t)?t:typeof t==`string`&&Ke(t)&&!(t in Object(e))?Ze(t):[t],n.length===0)return!1;let r=e;for(let e=0;e<n.length;e++){let t=qe(n[e]);if((r==null||!Object.hasOwn(r,t))&&!((Array.isArray(r)||nr(r))&&tr(t)&&Number(t)<r.length))return!1;r=r[t]}return!0}function ir(e,t){switch(typeof e){case`object`:Object.is(e?.valueOf(),-0)&&(e=`-0`);break;case`number`:e=qe(e);break}return t=$n(t),function(n){let r=Qe(n,e);return r===void 0?rr(n,e):t===void 0?r===void 0:Xn(r,t)}}function ar(e){if(e==null)return tn;switch(typeof e){case`function`:return e;case`object`:return Array.isArray(e)&&e.length===2?ir(e[0],e[1]):Zn(e);default:return an(e)}}function or(e){return e===0?0:e}function sr(e,t=tn){return rn(e)?$t(Array.from(e),en(ar(t),1)).map(or):[]}var cr=t((e=>{var t=l(),r=n();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=r.useSyncExternalStore,s=t.useRef,c=t.useEffect,u=t.useMemo,d=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var l=s(null);if(l.current===null){var f={hasValue:!1,value:null};l.current=f}else f=l.current;l=u(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,l[0],l[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),d(p),p}})),lr=t(((e,t)=>{t.exports=cr()}));function ur(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function dr(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var fr=e=>Array.isArray(e)?e:[e];function pr(e){let t=Array.isArray(e[0])?e[0]:e;return dr(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function mr(e,t){let n=[],{length:r}=e;for(let i=0;i<r;i++)n.push(e[i].apply(null,t));return n}var hr=class{constructor(e){this.value=e}deref(){return this.value}},gr=(()=>typeof WeakRef>`u`?hr:WeakRef)(),_r=0,vr=1;function yr(){return{s:_r,v:void 0,o:null,p:null}}function br(e){return e instanceof gr?e.deref():e}function xr(e,t={}){let n=yr(),{resultEqualityCheck:r}=t,i,a=0;function o(){let t=n,{length:o}=arguments;for(let e=0,n=o;e<n;e++){let n=arguments[e];if(typeof n==`function`||typeof n==`object`&&n){let e=t.o;e===null&&(t.o=e=new WeakMap);let r=e.get(n);r===void 0?(t=yr(),e.set(n,t)):t=r}else{let e=t.p;e===null&&(t.p=e=new Map);let r=e.get(n);r===void 0?(t=yr(),e.set(n,t)):t=r}}let s=t,c;if(t.s===vr)c=t.v;else if(c=e.apply(null,arguments),a++,r){let e=br(i);e!=null&&r(e,c)&&(c=e,a!==0&&a--),i=typeof c==`object`&&c||typeof c==`function`?new gr(c):c}return s.s=vr,s.v=c,c}return o.clearCache=()=>{n=yr(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function Sr(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),ur(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=xr,argsMemoizeOptions:u=[]}={...n,...a},d=fr(c),f=fr(u),p=pr(e),m=s(function(){return t++,o.apply(null,arguments)},...d),h=l(function(){r++;let e=mr(p,arguments);return i=m.apply(null,e),i},...f);return Object.assign(h,{resultFunc:o,memoizedResultFunc:m,dependencies:p,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var Cr=Sr(xr);function wr(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a<e.length;a++){let o=e[a];Array.isArray(o)&&t<r?i(o,t+1):n.push(o)}};return i(e,0),n}function Tr(e,t,n){return Un(n)&&(typeof t==`number`&&rn(n)&&tr(t)&&t<n.length||typeof t==`string`&&t in n)?Hn(n[t],e):!1}function Er(e){return typeof e==`symbol`?1:e===null?2:e===void 0?3:e===e?0:4}var Dr=(e,t,n)=>{if(e!==t){let r=Er(e),i=Er(t);if(r===i&&r===0){if(e<t)return n===`desc`?1:-1;if(e>t)return n===`desc`?-1:1}return n===`desc`?i-r:r-i}return 0},Or=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kr=/^\w*$/;function Ar(e,t){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||Je(e)?!0:typeof e==`string`&&(kr.test(e)||!Or.test(e))||t!=null&&Object.hasOwn(t,e)}function jr(e,t,n,r){if(e==null)return[];n=r?void 0:n,Array.isArray(e)||(e=rn(e)?Array.from(e):Object.values(e)),Array.isArray(t)||(t=t==null?[null]:[t]),t.length===0&&(t=[null]),Array.isArray(n)||(n=n==null?[]:[n]),n=n.map(e=>String(e));let i=(e,t)=>{let n=e,r=0;for(;r<t.length&&n!=null;++r)n=n[t[r]];return r>0&&r===t.length?n:void 0},a=(e,t)=>{if(e==null)return t;if(t!=null)return typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:i(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?i(t,e):t[e]},o=t.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||Ar(e)?e:{key:e,path:Ze(e)}));return e.map(e=>({original:e,criteria:o.map(t=>a(t,e))})).slice().sort((e,t)=>{for(let r=0;r<o.length;r++){let i=Dr(e.criteria[r],t.criteria[r],n[r]);if(i!==0)return i}return 0}).map(e=>e.original)}function Mr(e,...t){let n=t.length;return n>1&&Tr(e,t[0],t[1])?t=[]:n>2&&Tr(t[0],t[1],t[2])&&(t=[t[0]]),jr(e,wr(t),[`asc`])}function I(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Nr=(()=>typeof Symbol==`function`&&Symbol.observable||`@@observable`)(),Pr=()=>Math.random().toString(36).substring(7).split(``).join(`.`),Fr={INIT:`@@redux/INIT${Pr()}`,REPLACE:`@@redux/REPLACE${Pr()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Pr()}`};function Ir(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function Lr(e,t,n){if(typeof e!=`function`)throw Error(I(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(I(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(I(1));return n(Lr)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(I(3));return i}function d(e){if(typeof e!=`function`)throw Error(I(4));if(c)throw Error(I(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(I(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!Ir(e))throw Error(I(7));if(e.type===void 0)throw Error(I(8));if(typeof e.type!=`string`)throw Error(I(17));if(c)throw Error(I(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(I(10));r=e,f({type:Fr.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(I(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[Nr](){return this}}}return f({type:Fr.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[Nr]:m}}function Rr(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:Fr.INIT})===void 0)throw Error(I(12));if(n(void 0,{type:Fr.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(I(13))})}function zr(e){let t=Object.keys(e),n={};for(let r=0;r<t.length;r++){let i=t[r];typeof e[i]==`function`&&(n[i]=e[i])}let r=Object.keys(n),i;try{Rr(n)}catch(e){i=e}return function(e={},t){if(i)throw i;let a=!1,o={};for(let i=0;i<r.length;i++){let s=r[i],c=n[s],l=e[s],u=c(l,t);if(u===void 0)throw t&&t.type,Error(I(14));o[s]=u,a||=u!==l}return a||=r.length!==Object.keys(e).length,a?o:e}}function Br(...e){return e.length===0?e=>e:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function Vr(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(I(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=Br(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function Hr(e){return Ir(e)&&`type`in e&&typeof e.type==`string`}var Ur=Symbol.for(`immer-nothing`),Wr=Symbol.for(`immer-draftable`),L=Symbol.for(`immer-state`);function R(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var z=Object,Gr=z.getPrototypeOf,Kr=`constructor`,qr=`prototype`,Jr=`configurable`,Yr=`enumerable`,Xr=`writable`,Zr=`value`,B=e=>!!e&&!!e[L];function V(e){return e?ei(e)||si(e)||!!e[Wr]||!!e[Kr]?.[Wr]||ci(e)||li(e):!1}var Qr=z[qr][Kr].toString(),$r=new WeakMap;function ei(e){if(!e||!ui(e))return!1;let t=Gr(e);if(t===null||t===z[qr])return!0;let n=z.hasOwnProperty.call(t,Kr)&&t[Kr];if(n===Object)return!0;if(!di(n))return!1;let r=$r.get(n);return r===void 0&&(r=Function.toString.call(n),$r.set(n,r)),r===Qr}function ti(e,t,n=!0){ni(e)===0?(n?Reflect.ownKeys(e):z.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function ni(e){let t=e[L];return t?t.type_:si(e)?1:ci(e)?2:li(e)?3:0}var ri=(e,t,n=ni(e))=>n===2?e.has(t):z[qr].hasOwnProperty.call(e,t),ii=(e,t,n=ni(e))=>n===2?e.get(t):e[t],ai=(e,t,n,r=ni(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function oi(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var si=Array.isArray,ci=e=>e instanceof Map,li=e=>e instanceof Set,ui=e=>typeof e==`object`,di=e=>typeof e==`function`,fi=e=>typeof e==`boolean`;function pi(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var H=e=>e.copy_||e.base_,mi=e=>e.modified_?e.copy_:e.base_;function hi(e,t){if(ci(e))return new Map(e);if(li(e))return new Set(e);if(si(e))return Array[qr].slice.call(e);let n=ei(e);if(t===!0||t===`class_only`&&!n){let t=z.getOwnPropertyDescriptors(e);delete t[L];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Xr]===!1&&(a[Xr]=!0,a[Jr]=!0),(a.get||a.set)&&(t[i]={[Jr]:!0,[Xr]:!0,[Yr]:a[Yr],[Zr]:e[i]})}return z.create(Gr(e),t)}else{let t=Gr(e);if(t!==null&&n)return{...e};let r=z.create(t);return z.assign(r,e)}}function gi(e,t=!1){return yi(e)||B(e)||!V(e)?e:(ni(e)>1&&z.defineProperties(e,{set:vi,add:vi,clear:vi,delete:vi}),z.freeze(e),t&&ti(e,(e,t)=>{gi(t,!0)},!1),e)}function _i(){R(2)}var vi={[Zr]:_i};function yi(e){return e===null||!ui(e)?!0:z.isFrozen(e)}var bi=`MapSet`,xi=`Patches`,Si=`ArrayMethods`,Ci={};function wi(e){let t=Ci[e];return t||R(0,e),t}var Ti=e=>!!Ci[e],Ei,Di=()=>Ei,Oi=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Ti(bi)?wi(bi):void 0,arrayMethodsPlugin_:Ti(Si)?wi(Si):void 0});function ki(e,t){t&&(e.patchPlugin_=wi(xi),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ai(e){ji(e),e.drafts_.forEach(Ni),e.drafts_=null}function ji(e){e===Ei&&(Ei=e.parent_)}var Mi=e=>Ei=Oi(Ei,e);function Ni(e){let t=e[L];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Pi(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[L].modified_&&(Ai(t),R(4)),V(e)&&(e=Fi(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[L].base_,e,t)}else e=Fi(t,n);return Ii(t,e,!0),Ai(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===Ur?void 0:e}function Fi(e,t){if(yi(t))return t;let n=t[L];if(!n)return Wi(t,e.handledSet_,e);if(!Ri(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Hi(n,e)}return n.copy_}function Ii(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&gi(t,n)}function Li(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Ri=(e,t)=>e.scope_===t,zi=[];function Bi(e,t,n,r){let i=H(e),a=e.type_;if(r!==void 0&&ii(i,r,a)===t){ai(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;ti(i,(e,n)=>{if(B(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??zi;for(let e of o)ai(i,e,n,a)}function Vi(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Ri(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=mi(i);Bi(e,i.draft_??i,a,n),Hi(i,r)})}function Hi(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}Li(e)}}function Ui(e,t,n){let{scope_:r}=e;if(B(n)){let i=n[L];Ri(i,r)&&i.callbacks_.push(function(){$i(e),Bi(e,n,mi(i),t)})}else V(n)&&e.callbacks_.push(function(){let i=H(e);e.type_===3?i.has(n)&&Wi(n,r.handledSet_,r):ii(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Wi(ii(e.copy_,t,e.type_),r.handledSet_,r)})}function Wi(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||B(e)||t.has(e)||!V(e)||yi(e)?e:(t.add(e),ti(e,(r,i)=>{if(B(i)){let t=i[L];Ri(t,n)&&(ai(e,r,mi(t),e.type_),Li(t))}else V(i)&&Wi(i,t,n)}),e)}function Gi(e,t){let n=si(e),r={type_:n?1:0,scope_:t?t.scope_:Di(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Ki;n&&(i=[r],a=qi);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Ki={get(e,t){if(t===L)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=H(e);if(!ri(i,t,e.type_))return Xi(e,i,t);let a=i[t];if(e.finalized_||!V(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&pi(t))return a;if(a===Ji(e.base_,t)||Yi(e,t,a)){$i(e);let n=e.type_===1?+t:t,r=ta(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in H(e)},ownKeys(e){return Reflect.ownKeys(H(e))},set(e,t,n){let r=Zi(H(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Ji(H(e),t),i=r?.[L];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(oi(n,r)&&(n!==void 0||ri(e.base_,t,e.type_)))return!0;$i(e),Qi(e)}return e.copy_[t]===n&&(n!==void 0||ri(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Ui(e,t,n),!0)},deleteProperty(e,t){return $i(e),Ji(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Qi(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=H(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Xr]:!0,[Jr]:e.type_!==1||t!==`length`,[Yr]:r[Yr],[Zr]:n[t]}},defineProperty(){R(11)},getPrototypeOf(e){return Gr(e.base_)},setPrototypeOf(){R(12)}},qi={};for(let e in Ki){let t=Ki[e];qi[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}qi.deleteProperty=function(e,t){return qi.set.call(this,e,t,void 0)},qi.set=function(e,t,n){return Ki.set.call(this,e[0],t,n,e[0])};function Ji(e,t){let n=e[L];return(n?H(n):e)[t]}function Yi(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!V(n)||n[L]?!1:e.baseRefs_.has(n)}function Xi(e,t,n){let r=Zi(t,n);return r?Zr in r?r[Zr]:r.get?.call(e.draft_):void 0}function Zi(e,t){if(!(t in e))return;let n=Gr(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Gr(n)}}function Qi(e){e.modified_||(e.modified_=!0,e.parent_&&Qi(e.parent_))}function $i(e){e.copy_||=(e.assigned_=new Map,hi(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var ea=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(di(e)&&!di(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}di(t)||R(6),n!==void 0&&!di(n)&&R(7);let r;if(V(e)){let i=Mi(this),a=ta(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Ai(i):ji(i)}return ki(i,n),Pi(r,i)}else if(!e||!ui(e)){if(r=t(e),r===void 0&&(r=e),r===Ur&&(r=void 0),this.autoFreeze_&&gi(r,!0),n){let t=[],i=[];wi(xi).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else R(1,e)},this.produceWithPatches=(e,t)=>{if(di(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},fi(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),fi(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),fi(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){V(e)||R(8),B(e)&&(e=na(e));let t=Mi(this),n=ta(t,e,void 0);return n[L].isManual_=!0,ji(t),n}finishDraft(e,t){let n=e&&e[L];(!n||!n.isManual_)&&R(9);let{scope_:r}=n;return ki(r,t),Pi(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=wi(xi).applyPatches_;return B(e)?r(e,t):this.produce(e,e=>r(e,t))}};function ta(e,t,n,r){let[i,a]=ci(t)?wi(bi).proxyMap_(t,n):li(t)?wi(bi).proxySet_(t,n):Gi(t,n);return(n?.scope_??Di()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Vi(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function na(e){return B(e)||R(10,e),ra(e)}function ra(e){if(!V(e)||yi(e))return e;let t=e[L],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=hi(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=hi(e,!0);return ti(n,(e,t)=>{ai(n,e,ra(t))},r),t&&(t.finalized_=!1),n}globalThis.Iterator?.from;var ia=new ea().produce,aa=e=>e;function oa(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var sa=oa(),ca=oa,la=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?Br:Br.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;function ua(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(U(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>Hr(t)&&t.type===e,n}var da=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function fa(e){return V(e)?ia(e,()=>{}):e}function pa(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function ma(e){return typeof e==`boolean`}var ha=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new da;return t&&(ma(t)?a.push(sa):a.push(ca(t.extraArgument))),a},ga=`RTK_autoBatch`,_a=()=>e=>({payload:e,meta:{[ga]:!0}}),va=e=>t=>{setTimeout(t,e)},ya=(e,t)=>n=>{let r=!1,i=()=>{r||(r=!0,cancelAnimationFrame(a),clearTimeout(o),n())},a=e(i),o=setTimeout(i,t)},ba=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?ya(window.requestAnimationFrame,100):va(10):e.type===`callback`?e.queueNotification:va(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[ga],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},xa=e=>function(t){let{autoBatch:n=!0}=t??{},r=new da(e);return n&&r.push(ba(typeof n==`object`?n:void 0)),r};function Sa(e){let t=ha(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(Ir(n))c=zr(n);else throw Error(U(1));let l;l=typeof r==`function`?r(t):t();let u=Br;i&&(u=la({trace:!1,...typeof i==`object`&&i}));let d=xa(Vr(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return Lr(c,o,p)}function Ca(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(U(28));if(r in t)throw Error(U(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function wa(e){return typeof e==`function`}function Ta(e,t){let[n,r,i]=Ca(t),a;if(wa(e))a=()=>fa(e());else{let t=fa(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n)if(B(e)){let r=n(e,t);return r===void 0?e:r}else if(V(e))return ia(e,e=>n(e,t));else{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}return e},e)}return o.getInitialState=a,o}var Ea=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,Da=(e=21)=>{let t=``,n=e;for(;n--;)t+=Ea[Math.random()*64|0];return t},Oa=Symbol.for(`rtk-slice-createasyncthunk`);function ka(e,t){return`${e}/${t}`}function Aa({creators:e}={}){let t=e?.asyncThunk?.[Oa];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(U(11));let i=(typeof e.reducers==`function`?e.reducers(Na()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(U(12));if(n in o.sliceCaseReducersByType)throw Error(U(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:ka(n,r),createNotation:typeof e.reducers==`function`};Fa(a)?La(o,a,s,t):Pa(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?Ca(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return Ta(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||=c(),f(e,t)}function m(){return f||=c(),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=pa(d,r,m)),i}function i(t=l){return pa(pa(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=ja(a,t,()=>pa(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function ja(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var Ma=Aa();function Na(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function Pa({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!Ia(r))throw Error(U(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?ua(e,o):ua(e))}function Fa(e){return e._reducerDefinitionType===`asyncThunk`}function Ia(e){return e._reducerDefinitionType===`reducerWithPrepare`}function La({type:e,reducerName:t},n,r,i){if(!i)throw Error(U(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||Ra,pending:s||Ra,rejected:c||Ra,settled:l||Ra})}function Ra(){}var za=`task`,Ba=`listener`,Va=`completed`,Ha=`cancelled`,Ua=`task-${Ha}`,Wa=`task-${Va}`,Ga=`${Ba}-${Ha}`,Ka=`${Ba}-${Va}`,qa=class{constructor(e){this.code=e,this.message=`${za} ${Ha} (reason: ${e})`}code;name=`TaskAbortError`;message},Ja=(e,t)=>{if(typeof e!=`function`)throw TypeError(U(32))},Ya=()=>{},Xa=(e,t=Ya)=>(e.catch(t),e),Za=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),Qa=e=>{if(e.aborted)throw new qa(e.reason)};function $a(e,t){let n=Ya;return new Promise((r,i)=>{let a=()=>i(new qa(e.reason));if(e.aborted){a();return}n=Za(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=Ya})}var eo=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof qa?`cancelled`:`rejected`,error:e}}finally{t?.()}},to=e=>t=>Xa($a(e,t).then(t=>(Qa(e),t))),no=e=>{let t=to(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:ro}=Object,io={},ao=`listenerMiddleware`,oo=(e,t)=>{let n=t=>Za(e,()=>t.abort(e.reason));return(r,i)=>{Ja(r,`taskExecutor`);let a=new AbortController;n(a);let o=eo(async()=>{Qa(e),Qa(a.signal);let t=await r({pause:to(a.signal),delay:no(a.signal),signal:a.signal});return Qa(a.signal),t},()=>a.abort(Wa));return i?.autoJoin&&t.push(o.catch(Ya)),{result:to(e)(o),cancel(){a.abort(Ua)}}}},so=(e,t)=>{let n=async(n,r)=>{Qa(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await $a(t,Promise.race(a));return Qa(t),e}finally{i()}};return((e,t)=>Xa(n(e,t)))},co=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=ua(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(U(21));return Ja(a,`options.listener`),{predicate:i,type:t,effect:a}},lo=ro(e=>{let{type:t,predicate:n,effect:r}=co(e);return{id:Da(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(U(22))}}},{withTypes:()=>lo}),uo=(e,t)=>{let{type:n,effect:r,predicate:i}=co(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},fo=e=>{e.pending.forEach(e=>{e.abort(Ga)})},po=(e,t)=>()=>{for(let e of t.keys())fo(e);e.clear()},mo=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},ho=ro(ua(`${ao}/add`),{withTypes:()=>ho}),go=ua(`${ao}/removeAll`),_o=ro(ua(`${ao}/remove`),{withTypes:()=>_o}),vo=(...e)=>{console.error(`${ao}/error`,...e)},yo=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=vo}=e;Ja(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&fo(e)}),c=(e=>s(uo(t,e)??lo(e)));ro(c,{withTypes:()=>c});let l=e=>{let n=uo(t,e);return n&&(n.unsubscribe(),e.cancelActive&&fo(n)),!!n};ro(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=so(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,ro({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:no(u.signal),pause:to(u.signal),extra:a,signal:u.signal,fork:oo(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort(Ga),n.delete(e))})},cancel:()=>{u.abort(Ga),e.pending.delete(u)},throwIfCancelled:()=>{Qa(u.signal)}})))}catch(e){e instanceof qa||mo(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(Ka),i(e),e.pending.delete(u)}},d=po(t,n);return{middleware:e=>n=>r=>{if(!Hr(r))return n(r);if(ho.match(r))return c(r.payload);if(go.match(r)){d();return}if(_o.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===io)throw Error(U(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,mo(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=io}return s},startListening:c,stopListening:l,clearListeners:d}};function U(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}function bo(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}function xo(e,t=0,n={}){typeof n!=`object`&&(n={});let{leading:r=!1,trailing:i=!0,maxWait:a}=n,o=[,,];r&&(o[0]=`leading`),i&&(o[1]=`trailing`);let s,c=null,l=bo(function(...t){s=e.apply(this,t),c=null},t,{edges:o}),u=function(...t){return a!=null&&(c===null&&(c=Date.now()),Date.now()-c>=a)?((r||i)&&(s=e.apply(this,t)),c=Date.now(),l.cancel(),l.schedule(),s):(l.apply(this,t),s)};return u.cancel=l.cancel,u.flush=()=>(l.flush(),s),u}function So(e,t=0,n={}){let{leading:r=!0,trailing:i=!0}=n;return xo(e,t,{leading:r,maxWait:t,trailing:i})}function Co(e){return Je(e)?NaN:Number(e)}function wo(e){return e?(e=Co(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function To(e,t,n){n&&typeof n!=`number`&&Tr(e,t,n)&&(t=n=void 0),e=wo(e),t===void 0?(t=e,e=0):t=wo(t),n=n===void 0?e<t?1:-1:wo(n);let r=Math.max(Math.ceil((t-e)/(n||1)),0),i=Array(r);for(let t=0;t<r;t++)i[t]=e,e+=n;return i}var Eo=t(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=r<i?r:i;t<n;++t)if(a.d[t]!==e.d[t])return a.d[t]>e.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l<u&&(o=m,m=h,h=o,s=l,l=u,u=s),o=[],s=l+u,r=s;r--;)o.push(0);for(r=u;--r>=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,l){if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}}else if(s<0)throw Error(a+`NaN`);return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||e<t||e>n)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;t<i;t++)r=e[t]+``,n=p-r.length,n&&(a+=w(n)),a+=r;o=e[t],r=o+``,n=p-r.length,n&&(a+=w(n))}else if(o===0)return`0`;for(;o%10==0;)o/=10;return a+o}var b=(function(){function e(e,t){var n,r=0,i=e.length;for(e=e.slice();i--;)n=e[i]*t+r,e[i]=n%f|0,r=n/f|0;return r&&e.unshift(r),e}function t(e,t,n,r){var i,a;if(n!=r)a=n>r?1:-1;else for(i=a=0;i<n;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=e[n]<t[n]?1:0,e[n]=r*f+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,ee=r.s==i.s?1:-1,j=r.d,M=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=M.length,T=j.length,g=new A(ee),_=g.d=[],u=0;M[u]==(j[u]||0);)++u;if(M[u]>(j[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,M=M[0],x++;(u<T||d)&&x--;u++)C=d*f+(j[u]||0),_[u]=C/M|0,d=C%M|0;else{for(d=f/(M[0]+1)|0,d>1&&(M=e(M,d),j=e(j,d),O=M.length,T=j.length),w=O,v=j.slice(0,O),y=v.length;y<O;)v[y++]=0;k=M.slice(),k.unshift(0),E=M[0],M[1]>=f/2&&++E;do d=0,c=t(M,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(M,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O<h?k:M,h))):(d==0&&(c=d=1),m=M.slice()),h=m.length,h<y&&m.unshift(0),n(v,m,y),c==-1&&(y=v.length,c=t(M,v,O,y),c<1&&(d++,n(v,O<y?k:M,y))),y=v.length):c===0&&(d++,v=[0]),_[u++]=d,c&&v[0]?v[y++]=j[w]||0:(v=[j[w]],y=1);while((w++<T||v[0]!==void 0)&&x--)}return _[0]||_.shift(),g.e=l,D(g,s?o+S(g)+1:o)}})();function x(e,t){var n,r,a,o,c,u,f=0,p=0,m=e.constructor,h=m.precision;if(S(e)>16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),r<a){for(r&&e.d.push(+t.slice(0,r)),a-=p;r<a;)e.d.push(+t.slice(r,r+=p));t=t.slice(r),r=p-t.length}else r-=a;for(;r--;)t+=`0`;if(e.d.push(+t),i&&(e.e>h||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a<c,d&&(c=a),a=0;a<c;a++)if(l[a]!=m[a]){d=l[a]<m[a];break}s=0}for(d&&(n=l,l=m,m=n,t.s=-t.s),c=l.length,a=m.length-c;a>0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]<m[a]){for(o=a;o&&l[--o]===0;)l[o]=f-1;--l[o],l[a]+=f}l[a]-=m[a]}for(;l[--c]===0;)l.pop();for(;l[0]===0;l.shift())--r;return l[0]?(t.d=l,t.e=r,i?D(t,g):t):new h(0)}function k(e,t,n){var r,i=S(e),a=y(e.d),o=a.length;return t?(n&&(r=n-o)>0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)<o&&(a=a.slice(0,r)+`.`+a.slice(r)),n&&(r=n-o)>0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function ee(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=ee,i.config=i.set=j,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return i.config(e),i}function j(e){if(!e||typeof e!=`object`)throw Error(a+`Object expected`);var t,r,i,s=[`precision`,1,n,`rounding`,0,8,`toExpNeg`,-1/0,0,`toExpPos`,0,1/0];for(t=0;t<s.length;t+=3)if((i=e[r=s[t]])!==void 0)if(c(i)===i&&i>=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=ee(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}));function W(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function G(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}const Do=Symbol(`implicit`);function Oo(){var e=new ge,t=[],n=[],r=Do;function i(i){let a=e.get(i);if(a===void 0){if(r!==Do)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new ge;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return Oo(t,n).unknown(r)},W.apply(i,arguments),i}function ko(){var e=Oo().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,o,s,c=!1,l=0,u=0,d=.5;delete e.unknown;function f(){var e=t().length,f=i<r,p=f?i:r,m=f?r:i;o=(m-p)/Math.max(1,e-l+u*2),c&&(o=Math.floor(o)),p+=(m-p-o*(e-l))*d,s=o*(1-l),c&&(p=Math.round(p),s=Math.round(s));var h=a(e).map(function(e){return p+o*e});return n(f?h.reverse():h)}return e.domain=function(e){return arguments.length?(t(e),f()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,f()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,c=!0,f()},e.bandwidth=function(){return s},e.step=function(){return o},e.round=function(e){return arguments.length?(c=!!e,f()):c},e.padding=function(e){return arguments.length?(l=Math.min(1,u=+e),f()):l},e.paddingInner=function(e){return arguments.length?(l=Math.min(1,e),f()):l},e.paddingOuter=function(e){return arguments.length?(u=+e,f()):u},e.align=function(e){return arguments.length?(d=Math.max(0,Math.min(1,e)),f()):d},e.copy=function(){return ko(t(),[r,i]).round(c).paddingInner(l).paddingOuter(u).align(d)},W.apply(f(),arguments)}function Ao(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return Ao(t())},e}function jo(){return Ao(ko.apply(null,arguments).paddingInner(1))}function Mo(e){return function(){return e}}function No(e){return+e}var Po=[0,1];function K(e){return e}function Fo(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Mo(isNaN(t)?NaN:.5)}function Io(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function Lo(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Fo(i,r),a=n(o,a)):(r=Fo(r,i),a=n(a,o)),function(e){return a(r(e))}}function Ro(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Fo(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=he(e,t,1,r)-1;return a[n](i[n](t))}}function zo(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Bo(){var e=Po,t=Po,n=Ve,i,a,o,s=K,c,l,u;function d(){var n=Math.min(e.length,t.length);return s!==K&&(s=Io(e[0],e[n-1])),c=n>2?Ro:Lo,l=u=null,f}function f(r){return r==null||isNaN(r=+r)?o:(l||=c(e.map(i),t,n))(i(s(r)))}return f.invert=function(n){return s(a((u||=c(t,e.map(i),r))(n)))},f.domain=function(t){return arguments.length?(e=Array.from(t,No),d()):e.slice()},f.range=function(e){return arguments.length?(t=Array.from(e),d()):t.slice()},f.rangeRound=function(e){return t=Array.from(e),n=He,d()},f.clamp=function(e){return arguments.length?(s=e?!0:K,d()):s!==K},f.interpolate=function(e){return arguments.length?(n=e,d()):n},f.unknown=function(e){return arguments.length?(o=e,f):o},function(e,t){return i=e,a=t,d()}}function Vo(){return Bo()(K,K)}function Ho(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Uo(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Wo(e){return e=Uo(Math.abs(e)),e?e[1]:NaN}function Go(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function Ko(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var qo=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jo(e){if(!(t=qo.exec(e)))throw Error(`invalid format: `+e);var t;return new Yo({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Jo.prototype=Yo.prototype;function Yo(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Yo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Xo(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Zo;function Qo(e,t){var n=Uo(e,t);if(!n)return Zo=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Zo=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Uo(e,Math.max(0,t+a-1))[0]}function $o(e,t){var n=Uo(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var es={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Ho,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>$o(e*100,t),r:$o,s:Qo,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ts(e){return e}var ns=Array.prototype.map,rs=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function is(e){var t=e.grouping===void 0||e.thousands===void 0?ts:Go(ns.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?ts:Ko(ns.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Jo(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):es[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=es[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Xo(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Zo!==void 0?rs[8+Zo/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Wo(t)/3)))*3,r=10**-n,i=l((e=Jo(e),e.type=`f`,e),{suffix:rs[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var as,os,ss;cs({thousands:`,`,grouping:[3],currency:[`$`,``]});function cs(e){return as=is(e),os=as.format,ss=as.formatPrefix,as}function ls(e){return Math.max(0,-Wo(Math.abs(e)))}function us(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Wo(t)/3)))*3-Wo(Math.abs(e)))}function ds(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Wo(t)-Wo(e))+1}function fs(e,t,n,r){var i=ke(e,t,n),a;switch(r=Jo(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=us(i,o))&&(r.precision=a),ss(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=ds(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=ls(i))&&(r.precision=a-(r.type===`%`)*2);break}return os(r)}function ps(e){var t=e.domain;return e.ticks=function(e){var n=t();return De(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return fs(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=Oe(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function ms(){var e=Vo();return e.copy=function(){return zo(e,ms())},W.apply(e,arguments),ps(e)}function hs(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,No),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return hs(e).unknown(t)},e=arguments.length?Array.from(e,No):[0,1],ps(n)}function gs(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function _s(e){return Math.log(e)}function vs(e){return Math.exp(e)}function ys(e){return-Math.log(-e)}function bs(e){return-Math.exp(-e)}function xs(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Ss(e){return e===10?xs:e===Math.E?Math.exp:t=>e**+t}function Cs(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function ws(e){return(t,n)=>-e(-t,n)}function Ts(e){let t=e(_s,vs),n=t.domain,r=10,i,a;function o(){return i=Cs(r),a=Ss(r),n()[0]<0?(i=ws(i),a=ws(a),e(ys,bs)):e(_s,vs),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=De(o,s,p))}else m=De(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Jo(n)).precision==null&&(n.trim=!0),n=os(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(gs(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Es(){let e=Ts(Bo()).domain([1,10]);return e.copy=()=>zo(e,Es()).base(e.base()),W.apply(e,arguments),e}function Ds(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Os(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function ks(e){var t=1,n=e(Ds(t),Os(t));return n.constant=function(n){return arguments.length?e(Ds(t=+n),Os(t)):t},ps(n)}function As(){var e=ks(Bo());return e.copy=function(){return zo(e,As()).constant(e.constant())},W.apply(e,arguments)}function js(e){return function(t){return t<0?-((-t)**+e):t**+e}}function Ms(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Ns(e){return e<0?-e*e:e*e}function Ps(e){var t=e(K,K),n=1;function r(){return n===1?e(K,K):n===.5?e(Ms,Ns):e(js(n),js(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},ps(t)}function Fs(){var e=Ps(Bo());return e.copy=function(){return zo(e,Fs()).exponent(e.exponent())},W.apply(e,arguments),e}function Is(){return Fs.apply(null,arguments).exponent(.5)}function Ls(e){return Math.sign(e)*e*e}function Rs(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function zs(){var e=Vo(),t=[0,1],n=!1,r;function i(t){var i=Rs(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(Ls(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,No)).map(Ls)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return zs(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},W.apply(i,arguments),ps(i)}function Bs(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=Fe(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[he(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(N),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return Bs().domain(e).range(t).unknown(r)},W.apply(a,arguments)}function Vs(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[he(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Vs().domain([e,t]).range(i).unknown(a)},W.apply(ps(o),arguments)}function Hs(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[he(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return Hs().domain(e).range(t).unknown(n)},W.apply(i,arguments)}var Us=new Date,Ws=new Date;function q(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>q(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Us.setTime(+t),Ws.setTime(+r),e(Us),e(Ws),Math.floor(n(Us,Ws))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}const Gs=q(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Gs.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?q(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):Gs),Gs.range;const J=1e3,Y=J*60,X=Y*60,Z=X*24,Ks=Z*7,qs=Z*30,Js=Z*365,Ys=q(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*J)},(e,t)=>(t-e)/J,e=>e.getUTCSeconds());Ys.range;const Xs=q(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*J)},(e,t)=>{e.setTime(+e+t*Y)},(e,t)=>(t-e)/Y,e=>e.getMinutes());Xs.range;const Zs=q(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*Y)},(e,t)=>(t-e)/Y,e=>e.getUTCMinutes());Zs.range;const Qs=q(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*J-e.getMinutes()*Y)},(e,t)=>{e.setTime(+e+t*X)},(e,t)=>(t-e)/X,e=>e.getHours());Qs.range;const $s=q(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*X)},(e,t)=>(t-e)/X,e=>e.getUTCHours());$s.range;const ec=q(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Y)/Z,e=>e.getDate()-1);ec.range;const tc=q(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Z,e=>e.getUTCDate()-1);tc.range;const nc=q(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Z,e=>Math.floor(e/Z));nc.range;function rc(e){return q(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Y)/Ks)}const ic=rc(0),ac=rc(1),oc=rc(2),sc=rc(3),cc=rc(4),lc=rc(5),uc=rc(6);ic.range,ac.range,oc.range,sc.range,cc.range,lc.range,uc.range;function dc(e){return q(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Ks)}const fc=dc(0),pc=dc(1),mc=dc(2),hc=dc(3),gc=dc(4),_c=dc(5),vc=dc(6);fc.range,pc.range,mc.range,hc.range,gc.range,_c.range,vc.range;const yc=q(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());yc.range;const bc=q(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());bc.range;const xc=q(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());xc.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:q(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),xc.range;const Sc=q(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Sc.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:q(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Sc.range;function Cc(e,t,n,r,i,a){let o=[[Ys,1,J],[Ys,5,5*J],[Ys,15,15*J],[Ys,30,30*J],[a,1,Y],[a,5,5*Y],[a,15,15*Y],[a,30,30*Y],[i,1,X],[i,3,3*X],[i,6,6*X],[i,12,12*X],[r,1,Z],[r,2,2*Z],[n,1,Ks],[t,1,qs],[t,3,3*qs],[e,1,Js]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=le(([,,e])=>e).right(o,i);if(a===o.length)return e.every(ke(t/Js,n/Js,r));if(a===0)return Gs.every(Math.max(ke(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[wc,Tc]=Cc(Sc,bc,fc,nc,$s,Zs),[Ec,Dc]=Cc(xc,yc,ic,ec,Qs,Xs);function Oc(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function kc(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ac(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function jc(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=Ic(i),u=Lc(i),d=Ic(a),f=Lc(a),p=Ic(o),m=Lc(o),h=Ic(s),g=Lc(s),_=Ic(c),v=Lc(c),y={a:M,A:te,b:ne,B:re,c:null,d:il,e:il,f:ll,g:bl,G:Sl,H:al,I:ol,j:sl,L:cl,m:ul,M:dl,p:ie,q:ae,Q:Gl,s:Kl,S:fl,u:pl,U:ml,V:gl,w:_l,W:vl,x:null,X:null,y:yl,Y:xl,Z:Cl,"%":Wl},b={a:oe,A:se,b:N,B:ce,c:null,d:wl,e:wl,f:kl,g:Bl,G:Hl,H:Tl,I:El,j:Dl,L:Ol,m:Al,M:jl,p:le,q:ue,Q:Gl,s:Kl,S:Ml,u:Nl,U:Pl,V:Il,w:Ll,W:Rl,x:null,X:null,y:zl,Y:Vl,Z:Ul,"%":Wl},x={a:E,A:D,b:O,B:k,c:A,d:Jc,e:Jc,f:el,g:Wc,G:Uc,H:Xc,I:Xc,j:Yc,L:$c,m:qc,M:Zc,p:T,q:Kc,Q:nl,s:rl,S:Qc,u:zc,U:Bc,V:Vc,w:Rc,W:Hc,x:ee,X:j,y:Wc,Y:Uc,Z:Gc,"%":tl};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Mc[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=Ac(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=kc(Ac(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?pc.ceil(a):pc(a),a=tc.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Oc(Ac(r.y,0,1)),o=a.getDay(),a=o>4||o===0?ac.ceil(a):ac(a),a=ec.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?kc(Ac(r.y,0,1)).getUTCDay():Oc(Ac(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,kc(r)):Oc(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Mc?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function ee(e,t,r){return w(e,n,t,r)}function j(e,t,n){return w(e,r,t,n)}function M(e){return o[e.getDay()]}function te(e){return a[e.getDay()]}function ne(e){return c[e.getMonth()]}function re(e){return s[e.getMonth()]}function ie(e){return i[+(e.getHours()>=12)]}function ae(e){return 1+~~(e.getMonth()/3)}function oe(e){return o[e.getUTCDay()]}function se(e){return a[e.getUTCDay()]}function N(e){return c[e.getUTCMonth()]}function ce(e){return s[e.getUTCMonth()]}function le(e){return i[+(e.getUTCHours()>=12)]}function ue(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Mc={"-":``,_:` `,0:`0`},Q=/^\s*\d+/,Nc=/^%/,Pc=/[\\^$*+?|[\]().{}]/g;function $(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function Fc(e){return e.replace(Pc,`\\$&`)}function Ic(e){return RegExp(`^(?:`+e.map(Fc).join(`|`)+`)`,`i`)}function Lc(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Rc(e,t,n){var r=Q.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function zc(e,t,n){var r=Q.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Bc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Vc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Hc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Uc(e,t,n){var r=Q.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Wc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Gc(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Kc(e,t,n){var r=Q.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function qc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Jc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Yc(e,t,n){var r=Q.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Xc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Zc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Qc(e,t,n){var r=Q.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function $c(e,t,n){var r=Q.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function el(e,t,n){var r=Q.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function tl(e,t,n){var r=Nc.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function nl(e,t,n){var r=Q.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function rl(e,t,n){var r=Q.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function il(e,t){return $(e.getDate(),t,2)}function al(e,t){return $(e.getHours(),t,2)}function ol(e,t){return $(e.getHours()%12||12,t,2)}function sl(e,t){return $(1+ec.count(xc(e),e),t,3)}function cl(e,t){return $(e.getMilliseconds(),t,3)}function ll(e,t){return cl(e,t)+`000`}function ul(e,t){return $(e.getMonth()+1,t,2)}function dl(e,t){return $(e.getMinutes(),t,2)}function fl(e,t){return $(e.getSeconds(),t,2)}function pl(e){var t=e.getDay();return t===0?7:t}function ml(e,t){return $(ic.count(xc(e)-1,e),t,2)}function hl(e){var t=e.getDay();return t>=4||t===0?cc(e):cc.ceil(e)}function gl(e,t){return e=hl(e),$(cc.count(xc(e),e)+(xc(e).getDay()===4),t,2)}function _l(e){return e.getDay()}function vl(e,t){return $(ac.count(xc(e)-1,e),t,2)}function yl(e,t){return $(e.getFullYear()%100,t,2)}function bl(e,t){return e=hl(e),$(e.getFullYear()%100,t,2)}function xl(e,t){return $(e.getFullYear()%1e4,t,4)}function Sl(e,t){var n=e.getDay();return e=n>=4||n===0?cc(e):cc.ceil(e),$(e.getFullYear()%1e4,t,4)}function Cl(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+$(t/60|0,`0`,2)+$(t%60,`0`,2)}function wl(e,t){return $(e.getUTCDate(),t,2)}function Tl(e,t){return $(e.getUTCHours(),t,2)}function El(e,t){return $(e.getUTCHours()%12||12,t,2)}function Dl(e,t){return $(1+tc.count(Sc(e),e),t,3)}function Ol(e,t){return $(e.getUTCMilliseconds(),t,3)}function kl(e,t){return Ol(e,t)+`000`}function Al(e,t){return $(e.getUTCMonth()+1,t,2)}function jl(e,t){return $(e.getUTCMinutes(),t,2)}function Ml(e,t){return $(e.getUTCSeconds(),t,2)}function Nl(e){var t=e.getUTCDay();return t===0?7:t}function Pl(e,t){return $(fc.count(Sc(e)-1,e),t,2)}function Fl(e){var t=e.getUTCDay();return t>=4||t===0?gc(e):gc.ceil(e)}function Il(e,t){return e=Fl(e),$(gc.count(Sc(e),e)+(Sc(e).getUTCDay()===4),t,2)}function Ll(e){return e.getUTCDay()}function Rl(e,t){return $(pc.count(Sc(e)-1,e),t,2)}function zl(e,t){return $(e.getUTCFullYear()%100,t,2)}function Bl(e,t){return e=Fl(e),$(e.getUTCFullYear()%100,t,2)}function Vl(e,t){return $(e.getUTCFullYear()%1e4,t,4)}function Hl(e,t){var n=e.getUTCDay();return e=n>=4||n===0?gc(e):gc.ceil(e),$(e.getUTCFullYear()%1e4,t,4)}function Ul(){return`+0000`}function Wl(){return`%`}function Gl(e){return+e}function Kl(e){return Math.floor(e/1e3)}var ql,Jl,Yl;Xl({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Xl(e){return ql=jc(e),Jl=ql.format,ql.parse,Yl=ql.utcFormat,ql.utcParse,ql}function Zl(e){return new Date(e)}function Ql(e){return e instanceof Date?+e:+new Date(+e)}function $l(e,t,n,r,i,a,o,s,c,l){var u=Vo(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,Ql)):f().map(Zl)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(gs(n,e)):u},u.copy=function(){return zo(u,$l(e,t,n,r,i,a,o,s,c,l))},u}function eu(){return W.apply($l(Ec,Dc,xc,yc,ic,ec,Qs,Xs,Ys,Jl).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function tu(){return W.apply($l(wc,Tc,Sc,bc,fc,tc,$s,Zs,Ys,Yl).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function nu(){var e=0,t=1,n,r,i,a,o=K,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Ve),l.rangeRound=u(He),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function ru(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function iu(){var e=ps(nu()(K));return e.copy=function(){return ru(e,iu())},G.apply(e,arguments)}function au(){var e=Ts(nu()).domain([1,10]);return e.copy=function(){return ru(e,au()).base(e.base())},G.apply(e,arguments)}function ou(){var e=ks(nu());return e.copy=function(){return ru(e,ou()).constant(e.constant())},G.apply(e,arguments)}function su(){var e=Ps(nu());return e.copy=function(){return ru(e,su()).exponent(e.exponent())},G.apply(e,arguments)}function cu(){return su.apply(null,arguments).exponent(.5)}function lu(){var e=[],t=K;function n(n){if(n!=null&&!isNaN(n=+n))return t((he(e,n,1)-1)/(e.length-1))}return n.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(N),n},n.interpolator=function(e){return arguments.length?(t=e,n):t},n.range=function(){return e.map((n,r)=>t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>Pe(e,r/t))},n.copy=function(){return lu(t).domain(e)},G.apply(n,arguments)}function uu(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=K,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=Ue(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Ve),p.rangeRound=m(He),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function du(){var e=ps(uu()(K));return e.copy=function(){return ru(e,du())},G.apply(e,arguments)}function fu(){var e=Ts(uu()).domain([.1,1,10]);return e.copy=function(){return ru(e,fu()).base(e.base())},G.apply(e,arguments)}function pu(){var e=ks(uu());return e.copy=function(){return ru(e,pu()).constant(e.constant())},G.apply(e,arguments)}function mu(){var e=Ps(uu());return e.copy=function(){return ru(e,mu()).exponent(e.exponent())},G.apply(e,arguments)}function hu(){return mu.apply(null,arguments).exponent(.5)}var gu=e(t(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i<a;i++)o[i]=n[i].fn;return o},c.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},c.prototype.emit=function(e,t,n,i,a,o){var s=r?r+e:e;if(!this._events[s])return!1;var c=this._events[s],l=arguments.length,u,d;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,a),!0;case 6:return c.fn.call(c.context,t,n,i,a,o),!0}for(d=1,u=Array(l-1);d<l;d++)u[d-1]=arguments[d];c.fn.apply(c.context,u)}else{var f=c.length,p;for(d=0;d<f;d++)switch(c[d].once&&this.removeListener(e,c[d].fn,void 0,!0),l){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,t);break;case 3:c[d].fn.call(c[d].context,t,n);break;case 4:c[d].fn.call(c[d].context,t,n,i);break;default:if(!u)for(p=1,u=Array(l-1);p<l;p++)u[p-1]=arguments[p];c[d].fn.apply(c[d].context,u)}}return!0},c.prototype.on=function(e,t,n){return o(this,e,t,n,!1)},c.prototype.once=function(e,t,n){return o(this,e,t,n,!0)},c.prototype.removeListener=function(e,t,n,i){var a=r?r+e:e;if(!this._events[a])return this;if(!t)return s(this,a),this;var o=this._events[a];if(o.fn)o.fn===t&&(!i||o.once)&&(!n||o.context===n)&&s(this,a);else{for(var c=0,l=[],u=o.length;c<u;c++)(o[c].fn!==t||i&&!o[c].once||n&&o[c].context!==n)&&l.push(o[c]);l.length?this._events[a]=l.length===1?l[0]:l:s(this,a)}return this},c.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&s(this,t)):(this._events=new i,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=r,c.EventEmitter=c,t!==void 0&&(t.exports=c)}))(),1).default;function _u(){}function vu(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)===`[object Object]`:!1}function yu(e,t,n){return bu(e,t,void 0,void 0,void 0,void 0,n)}function bu(e,t,n,r,i,a,o){let s=o(e,t,n,r,i,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case`bigint`:case`string`:case`boolean`:case`symbol`:case`undefined`:return e===t;case`number`:return e===t||Object.is(e,t);case`function`:return e===t;case`object`:return xu(e,t,a,o)}return xu(e,t,a,o)}function xu(e,t,n,r){if(Object.is(e,t))return!0;let i=ln(e),a=ln(t);if(i===`[object Arguments]`&&(i=Sn),a===`[object Arguments]`&&(a=Sn),i!==a)return!1;switch(i){case dn:return e.toString()===t.toString();case fn:return Hn(e.valueOf(),t.valueOf());case pn:case gn:case hn:return Object.is(e.valueOf(),t.valueOf());case un:return e.source===t.source&&e.flags===t.flags;case bn:return e===t}n??=new Map;let o=n.get(e),s=n.get(t);if(o!=null&&s!=null)return o===t;n.set(e,t),n.set(t,e);try{switch(i){case _n:if(e.size!==t.size)return!1;for(let[i,a]of e.entries())if(!t.has(i)||!bu(a,t.get(i),i,e,t,n,r))return!1;return!0;case vn:{if(e.size!==t.size)return!1;let i=Array.from(e.values()),a=Array.from(t.values());for(let o=0;o<i.length;o++){let s=i[o],c=a.findIndex(i=>bu(s,i,void 0,e,t,n,r));if(c===-1)return!1;a.splice(c,1)}return!0}case yn:case Tn:case En:case Dn:case On:case kn:case An:case jn:case Mn:case Nn:case Pn:case Fn:if(Ln(e)!==Ln(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!bu(e[i],t[i],i,e,t,n,r))return!1;return!0;case xn:return e.byteLength===t.byteLength?xu(new Uint8Array(e),new Uint8Array(t),n,r):!1;case wn:return e.byteLength!==t.byteLength||e.byteOffset!==t.byteOffset?!1:xu(new Uint8Array(e),new Uint8Array(t),n,r);case Cn:return e.name===t.name&&e.message===t.message;case Sn:{if(!(xu(e.constructor,t.constructor,n,r)||vu(e)&&vu(t)))return!1;let i=[...Object.keys(e),...cn(e)],a=[...Object.keys(t),...cn(t)];if(i.length!==a.length)return!1;for(let a=0;a<i.length;a++){let o=i[a],s=e[o];if(!Object.hasOwn(t,o))return!1;let c=t[o];if(!bu(s,c,o,e,t,n,r))return!1}return!0}default:return!1}}finally{n.delete(e),n.delete(t)}}function Su(e,t){return yu(e,t,_u)}function Cu(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}var wu=`<?xml version="1.0" encoding="UTF-8"?>`,Tu=`<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">`;function Eu(e,t){let n=!t||t.pretty!==!1,r=t?.indent??` `,i=t?.newline??`
|
|
9
|
-
`,a=[];function o(e,t){n?a.push(r.repeat(e)+t):a.push(t)}function s(e,t){if(e!==void 0)if(Array.isArray(e)){o(t,`<array>`);for(let n=0;n<e.length;n++)s(e[n],t+1);o(t,`</array>`)}else if(e instanceof ArrayBuffer)o(t,`<data>`+Cu(new Uint8Array(e))+`</data>`);else if(ArrayBuffer.isView(e))o(t,`<data>`+Cu(e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength))+`</data>`);else if(typeof e==`object`&&e&&!(e instanceof Date)){for(let n in o(t,`<dict>`),e)if(Object.hasOwn(e,n)){let r=e[n];if(r==null)continue;o(t+1,`<key>`+Du(n)+`</key>`),s(r,t+1)}o(t,`</dict>`)}else if(typeof e==`number`){let n=e%1==0?`integer`:`real`;o(t,`<`+n+`>`+e.toString()+`</`+n+`>`)}else typeof e==`bigint`?o(t,`<integer>`+e.toString()+`</integer>`):e instanceof Date?o(t,`<date>`+new Date(e).toISOString().replace(/\.\d{3}Z$/,`Z`)+`</date>`):typeof e==`boolean`?o(t,e?`<true/>`:`<false/>`):typeof e==`string`&&o(t,`<string>`+Du(e)+`</string>`)}s(e,2);let c=n?i:``;return[wu,Tu,`<plist version="1.0">`,a.join(c),`</plist>`].join(c)}function Du(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}export{Gt as $,Do as A,_a as B,As as C,fs as D,ms as E,ba as F,Cr as G,na as H,Sa as I,Qt as J,lr as K,ua as L,Eo as M,To as N,ko as O,So as P,Kt as Q,yo as R,Is as S,hs as T,zr as U,aa as V,Mr as W,Xt as X,Zt as Y,Yt as Z,Hs as _,d as _t,fu as a,Lt as at,zs as b,pu as c,wt as ct,au as d,vt as dt,Wt as et,su as f,ht as ft,eu as g,se as gt,tu as h,Qe as ht,du as i,It as it,Oo as j,jo as k,lu as l,St as lt,ou as m,dt as mt,Su as n,Ht as nt,mu as o,Ot as ot,cu as p,mt as pt,sr as q,gu as r,Bt as rt,hu as s,Et as st,Eu as t,Ut as tt,iu as u,_t as ut,Vs as v,f as vt,Es as w,Fs as x,Bs as y,Ma as z};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const e={account:`Tài khoản`,logout:`Đăng xuất`,selectProfile:`Chọn cấu hình`,add:`Thêm`,newProfileName:`Tên cấu hình mới...`,profileNameFormatTip:`Gợi ý tên cấu hình: 1-30 ký tự và không được trùng với tên hiện có`,profileLimitExceeded:`Đạt giới hạn số lượng cấu hình (tối đa {{max}})`,profileNameExists:`Tên cấu hình này đã tồn tại`,profileNameFormatError:`Định dạng tên cấu hình không hợp lệ`,create:`Tạo`,welcome:`Chào mừng`,createProfileToStart:`Tạo một cấu hình để bắt đầu.`,loading:`Đang tải...`,errorNetwork:`Lỗi mạng`,confirmDelete:`Bạn có chắc chắn muốn xóa cấu hình này không?`,confirmLogout:`Bạn có chắc chắn muốn đăng xuất không?`,notFound:`404 - Không tìm thấy trang`,notFoundDesc:`Trang bạn đang tìm kiếm không tồn tại hoặc đã bị xóa.`,backToHome:`Quay lại trang chủ`,apac:`Châu Á - Thái Bình Dương`,mainlandChina:`Trung Quốc Đại Lục`,HongKong:`Hồng Kông`,Singapore:`Singapore`,Tokyo:`Tokyo`,NorthAmerica:`Bắc Mỹ`,nae:`Miền Đông Bắc Mỹ`,naw:`Miền Tây Bắc Mỹ`,eu:`Châu Âu`,invalidFormat:`Định dạng tệp không hợp lệ`,import:`Nhập`,importSuccess:`Nhập cấu hình thành công`,importError:`Nhập cấu hình thất bại, vui lòng đảm bảo định dạng đúng và thử lại sau`,save:`Lưu`,saveSuccess:`Đã lưu cài đặt`},t={setup:`Thiết lập`,rules:`Quy tắc`,stats:`Thống kê`,logs:`Nhật ký`,filter:`Bộ lọc`,settings:`Cài đặt`},n={light:`Sáng`,dark:`Tối`,system:`Theo hệ thống`},r={login:`Đăng nhập DNS Worker`,signup:`Tạo tài khoản để bắt đầu`,welcomeBack:`Chào mừng trở lại, vui lòng nhập thông tin đăng nhập`,protectInternet:`Bảo vệ bước nhảy internet đầu tiên của bạn`,error:`Lỗi`,username:`Tên đăng nhập`,usernamePlaceholder:`Tên đăng nhập của bạn`,password:`Mật khẩu`,passwordPlaceholder:`Mật khẩu của bạn`,loginBtn:`Đăng nhập`,signupBtn:`Đăng ký`,totpVerification:`Xác thực TOTP`,noAccount:`Chưa có tài khoản? Đăng ký ngay`,haveAccount:`Đã có tài khoản? Quay lại đăng nhập`,formatTipUsername:`Định dạng tên đăng nhập: Chỉ từ 5 đến 32 ký tự theo định dạng Unix (bắt đầu bằng chữ thường hoặc dấu gạch dưới, bao gồm chữ thường, số, dấu gạch dưới và dấu gạch ngang)`,formatTipPassword:`Định dạng mật khẩu: 12-100 ký tự`,authFailed:`Xác thực thất bại, vui lòng kiểm tra tên đăng nhập hoặc mật khẩu`,networkError:`Lỗi mạng, vui lòng thử lại sau`,turnstileRequired:`Vui lòng hoàn thành xác minh người máy`,turnstileError:`Không thể tải dịch vụ xác minh, vui lòng kiểm tra Site Key hoặc cấu hình tên miền`,verifying:`Đang thực hiện xác minh bảo mật...`,passwordLeaked:`Mật khẩu của bạn đã bị lộ, vì an toàn tài khoản, vui lòng sử dụng mật khẩu ngẫu nhiên/mạnh.`,usernameExists:`Tên đăng nhập này đã được đăng ký, vui lòng thử tên khác.`,skip:`Bỏ qua`,showPassword:`Hiện mật khẩu`,hidePassword:`Ẩn mật khẩu`,geolocationRequired:`Lấy vị trí địa lý thất bại, vui lòng thử đăng nhập lại.`,unauthorizedDefault:`Phiên đăng nhập của bạn đã hết hạn, vui lòng đăng nhập lại.`,unauthorizedGeo:`Phát hiện thay đổi vị trí địa lý (vượt quá giới hạn khoảng cách), phiên hiện tại đã bị buộc đăng xuất.`,unauthorizedExpired:`Đăng nhập của bạn đã hết hạn, vui lòng đăng nhập lại.`,unauthorizedReuse:`Cảnh báo bảo mật: Phát hiện đăng nhập trùng lặp, phiên đã bị chấm dứt.`,unauthorizedRevoked:`Phiên của bạn đã bị đăng xuất hoặc xóa, vui lòng đăng nhập lại.`,sessionLockTitle:`Khóa phiên khi không hoạt động`,sessionLockDesc:`Khóa giao diện bằng mã PIN 4 chữ số khi ứng dụng không hoạt động để bảo vệ các phiên đang mở khỏi truy cập vật lý trái phép.`,enableSessionLock:`Bật khóa phiên`,inactivityTimeout:`Thời gian chờ không hoạt động`,timeout1m:`1 phút`,timeout2m:`2 phút`,timeout5m:`5 phút`,timeout15m:`15 phút`,timeout30m:`30 phút`,timeout60m:`60 phút`,changePin:`Thay đổi mã PIN`,disablePin:`Tắt khóa phiên`,configurePin:`Cấu hình mã PIN`,newPin:`Mã PIN 4 chữ số mới`,pinHelper:`Chỉ nhập số, ví dụ: 1234`,confirmPin:`Xác nhận mã PIN mới`,verifyIdentity:`Xác minh danh tính`,usePassword:`Sử dụng mật khẩu`,use2fa:`Sử dụng mã TOTP`,totpCode:`Mã TOTP`,currentPassword:`Mật khẩu hiện tại`,disablePinWarning:`Tắt mã PIN sẽ vô hiệu hóa hoàn toàn tính năng khóa phiên khi không hoạt động.`,pinFormatTip:`Mã PIN phải chứa đúng 4 chữ số`,pinMatchTip:`Mã PIN không khớp`,passwordRequired:`Yêu cầu nhập mật khẩu để xác minh`,sessionLocked:`Phiên bị khóa do không hoạt động`,sessionExpired:`Quá nhiều lần thử thất bại. Phiên đã bị chấm dứt.`,pinIncorrect:`Mã PIN không chính xác`,attemptsRemaining:`Còn lại {{count}} lần thử`,logoutAndReturn:`Đăng xuất phiên`,lockNow:`Khóa ngay`,cfErrorWithDetails:`Lỗi Cloudflare Edge (Lỗi {{code}}: {{desc}}). Dịch vụ tạm thời không khả dụng, vui lòng thử lại sau. {{rayId}}`,cfErrorCodeOnly:`Lỗi Cloudflare Edge (Lỗi {{code}}). Dịch vụ tạm thời không khả dụng. {{rayId}}`,cfErrorGeneric:`Lỗi Cloudflare Edge, dịch vụ tạm thời không khả dụng. Vui lòng thử lại sau. {{rayId}}`,htmlErrorGeneric:`Máy chủ đã trả về phản hồi không mong muốn (HTTP {{status}}). Vui lòng thử lại sau.`,tooManyAttempts:`Quá nhiều yêu cầu hoặc lần thử. Vui lòng thử lại sau.`,dbQuotaExceeded:`Đã vượt quá hạn mức đọc cơ sở dữ liệu hàng ngày. Vui lòng đợi thiết lập lại hàng ngày.`,noUsersRegistered:`Chưa có tài khoản nào được đăng ký. Vui lòng đăng ký làm quản trị viên.`,registerAdminTitle:`Đăng ký tài khoản quản trị viên`,registerAdminDesc:`Hệ thống chưa có tài khoản. Người dùng đầu tiên sẽ trở thành quản trị viên hệ thống.`,goToRegisterAdmin:`Đăng ký quản trị`,dbNotInitialized:`Cơ sở dữ liệu chưa được khởi tạo hoặc thiếu bảng. Vui lòng chạy npm run db:migrate:prod trong terminal.`,verifyWithPasskey:`Xác minh bằng Passkey`,orUseTotp:`Hoặc sử dụng mã xác thực`,passwordRequiredFirst:`Vui lòng nhập mật khẩu trước`,passkeyVerification:`Xác minh Passkey`,passkeyPromptDesc:`Xác minh bằng sinh trắc học hoặc khóa bảo mật đã đăng ký`,forgotPassword:`Quên mật khẩu?`,forgotPasswordTitle:`Đặt lại mật khẩu`,forgotPasswordDesc:`Khôi phục tài khoản an toàn bằng xác thực đa yếu tố (Passkey hoặc TOTP).`,noMfaContactAdmin:`Tài khoản này chưa cấu hình xác thực đa yếu tố (Passkey hoặc TOTP). Vui lòng liên hệ quản trị viên để được đặt lại mật khẩu.`,chooseMfaForReset:`Chọn phương thức xác thực để xác minh danh tính của bạn:`,authViaPasskey:`Xác minh bằng Passkey`,authViaPasskeyDesc:`Xác thực một chạm bằng sinh trắc học hoặc khóa bảo mật phần cứng`,authViaTotp:`Xác minh bằng ứng dụng xác thực (TOTP)`,authViaTotpDesc:`Nhập mã động 6 chữ số từ ứng dụng xác thực của bạn`,authViaRecoveryKey:`Sử dụng khóa khôi phục khẩn cấp`,authViaRecoveryKeyDesc:`Nhập khóa khôi phục khẩn cấp 10 ký tự`,verifyAndProceed:`Xác minh và tiếp tục`,setNewPassword:`Đặt mật khẩu mới`,setNewPasswordDesc:`Xác minh danh tính thành công. Vui lòng đặt mật khẩu mới cho tài khoản của bạn.`,newPassword:`Mật khẩu mới`,confirmNewPassword:`Xác nhận mật khẩu mới`,passwordMismatch:`Mật khẩu mới không khớp`,saveAndReset:`Lưu và đặt lại mật khẩu`,resetSuccessTitle:`Đặt lại mật khẩu thành công`,resetSuccessDesc:`Mật khẩu của bạn đã được cập nhật và tất cả các phiên đăng nhập đã bị hủy. Vui lòng đăng nhập bằng mật khẩu mới.`,goToLogin:`Đến trang đăng nhập`,mfaSetupTitle:`Tăng cường bảo mật tài khoản`,mfaSetupDesc:`Cấu hình xác thực đa yếu tố (MFA) giúp bảo vệ tài khoản, mở khóa đăng nhập không cần mật khẩu và khôi phục tài khoản.`,mfaRecommended:`Khuyên dùng`,passkeySignupDesc:`Sử dụng Touch ID, Face ID hoặc khóa bảo mật. Cực nhanh và chống lừa đảo hiệu quả.`,bindPasskeyNow:`Đăng ký Passkey ngay`,mfaUniversal:`Phổ thông`,totpSignupDesc:`Sử dụng Google Authenticator, 1Password hoặc bất kỳ ứng dụng TOTP tiêu chuẩn nào.`,setupTotpBtn:`Cấu hình ứng dụng xác thực`,skipMfaSetup:`Bỏ qua lúc này`,backToMfaOptions:`Quay lại tùy chọn`,otherOptions:`Tùy chọn khác`,next:`Tiếp theo`,mfaVerification:`Xác thực đa yếu tố`,totpPrompt:`Nhập mã động 6 chữ số từ ứng dụng xác thực của bạn`,recoveryPrompt:`Nhập khóa khôi phục 30 chữ số của bạn (5 nhóm, mỗi nhóm 6 chữ số)`,recoveryChecksumError:`Lỗi tổng kiểm tra: nhóm này không chia hết cho 11`,recoveryChecksumErrorDesc:`Lỗi tổng kiểm tra ở nhóm {{groups}}, vui lòng kiểm tra và thử lại`,backToPasskey:`Quay lại xác thực Passkey`,recoveryKeyRequired:`Vui lòng nhập khóa khôi phục của bạn`,totpFormatError:`Vui lòng nhập mã hợp lệ gồm 6 chữ số`,registrationDisabledTitle:`Đăng ký đã bị tắt`,registrationDisabledDesc:`Tính năng đăng ký người dùng mới hiện đang tạm khóa. Vui lòng liên hệ quản trị viên hệ thống để nhận tài khoản.`,backToLogin:`Quay lại đăng nhập`,jwtSecretPreset:`Đã phát hiện JWT_SECRET mặc định. Vui lòng sửa đổi JWT_SECRET đặt sẵn trong các biến môi trường trước khi triển khai.`,jwtSecretMissing:`Thiếu JWT_SECRET. Vui lòng định cấu hình khóa bảo mật trong các biến môi trường trước khi triển khai.`,jwtSecretInvalid:`Định dạng JWT_SECRET không hợp lệ, vui lòng kiểm tra cấu hình.`},i={title:`Hướng dẫn cài đặt`,subtitle:`Cấu hình thiết bị của bạn để sử dụng DNS Worker và làm chủ an ninh internet.`,regionOptimization:`Tối ưu hóa vùng truy cập (Windows)`,otherRegion:`Các khu vực khác`,copied:`Đã sao chép vào bộ nhớ tạm`,verifyConnection:`Xác minh kết nối của bạn`,verifying:`Đang xác minh...`,connected:`Kết nối bình thường`,notConnected:`Hoặc chưa kết nối`,profileMatch:`Bạn đang lọc thông qua cấu hình này.`,profileMismatch:`Bạn đang sử dụng Obex, nhưng ID cấu hình không khớp.`,verifyHint:`Sau khi hoàn thành cấu hình bên dưới, nhấp vào nút để xác minh.`,refreshStatus:`Làm mới trạng thái`,egressIp:`Địa chỉ IP thoát (Egress IP)`,currentLocation:`Vị trí hiện tại`,edgeServer:`Máy chủ Edge`,dohUrlTitle:`DoH URL của cấu hình hiện tại`,accessPointTitle:`Access DoH URL`,defaultAccessPointName:`Thiết bị-1`,moreAccessPoints:`Xem thêm điểm truy cập ↗`,accessPointName:`Tên điểm truy cập`,accessPointToken:`Khóa truy cập (Access Token)`,addAccessPoint:`Thêm điểm truy cập mới`,renameAccessPoint:`Đổi tên`,rotateToken:`Làm mới khóa (Rotate Token)`,rotateTokenConfirmDesc:`Việc làm mới khóa sẽ khiến tất cả các thiết bị sử dụng khóa cũ bị ngắt kết nối ngay lập tức. Bạn có chắc chắn muốn tiếp tục không?`,deleteAccessPoint:`Xóa`,deleteAccessPointConfirm:`Bạn có chắc chắn muốn xóa điểm truy cập này không?`,manageAccessPoints:`Quản lý điểm truy cập`,searchAccessPoints:`Tìm kiếm điểm truy cập...`,accessPointNameExists:`Tên điểm truy cập đã tồn tại`,accessPointCreated:`Tạo điểm truy cập thành công`,accessPointRenamed:`Đổi tên điểm truy cập thành công`,accessPointDeleted:`Xóa điểm truy cập thành công`,accessPointNameFormatTip:`Gợi ý tên điểm truy cập: 1-30 ký tự, chỉ cho phép chữ cái, số, dấu gạch dưới và dấu gạch ngang`,accessPointLimitExceeded:`Đạt giới hạn số lượng điểm truy cập (tối đa {{max}})`,tokenRotated:`Làm mới khóa truy cập thành công`,whatIsDoh:`DoH là gì?`,dohDesc:`DNS over HTTPS (DoH) là một công nghệ phân giải tên miền thông qua giao thức HTTPS được mã hóa.`,dohBenefit1:`Giảm thiểu việc bị nhà mạng hoặc bên thứ ba chặn và theo dõi`,dohBenefit2:`Tăng cường bảo mật khi phân giải tên miền và truy cập internet`,learnMore:`Tìm hiểu thêm`,copyUrl:`Sao chép URL`,browsers:`Trình duyệt`,browserTitle:`Cấu hình trình duyệt (Chrome/Edge)`,browserSteps:`Cài đặt > Quyền riêng tư và bảo mật > Bảo mật > Sử dụng DNS bảo mật > Tùy chỉnh > Dán URL.`,browserTips:`Hoặc sao chép địa chỉ này vào thanh địa chỉ:`,apple:`Apple`,appleTitle:`macOS / iOS / iPadOS / tvOS`,appleDesc:`Các thiết bị Apple hỗ trợ cấu hình nhanh thông qua tệp cấu hình (Profile).`,appleWarning:`Không thể cài đặt tệp cấu hình trong "Chế độ phong tỏa (Lockdown Mode)", vui lòng đảm bảo hệ thống không ở trạng thái này trước khi cài đặt.`,downloadConfig:`Tải tệp cấu hình`,appleInstallHint:`Sau khi tải về, vui lòng đi tới "Cài đặt" > "Đã tải về hồ sơ" để cài đặt`,windows:`MS Windows`,windowsTitle:`Cấu hình Windows 11 [Vùng: {{region}}]`,windowsStep0:`Cài đặt > Mạng & Internet`,windowsStep1:`Thuộc tính > Máy chủ DNS > Chỉnh sửa > Thủ công.`,windowsStep2:`Chọn và nhập DNS IP:`,windowsStep3:`Bật DoH (Mẫu thủ công) và dán URL.`,windowsStep4:`Tắt "Dự phòng sang bản rõ" (Fallback to plaintext).`,android:`Android`,androidTitle:`Android 9+`,androidDesc:`Hỗ trợ 'DNS riêng tư' gốc của hệ thống (DoT) hoặc ứng dụng bên thứ ba cho DoH.`,androidDotTitle:`DNS riêng tư (DoT - Chế độ Serverfull)`,androidDotDesc:`Cài đặt > Mạng và internet > DNS riêng tư > Tên máy chủ của nhà cung cấp DNS riêng tư:`,androidWarning:`Lưu ý: 'DNS riêng tư' gốc của Android sử dụng giao thức DoT. Khi triển khai trên Cloudflare Workers, hãy dùng ứng dụng như Intra cho DoH. Khi chạy ở chế độ Serverfull đã cấu hình TLS, bạn có thể sử dụng trực tiếp tên máy chủ DoT ở trên.`,dynamicFromDomain:`Động (từ "{{domain}}")`,dynamicFromDomainV6:`Động IPv6 (từ "{{domain}}")`,linux:`Linux`,linuxTitle:`Linux (Proxy Cloudflared DoH)`,linuxDesc:`Chạy một proxy DNS nhẹ tại địa phương, mã hóa và chuyển tiếp các yêu cầu phân giải đến Obex thông qua DoH.`,linuxStep1:`Chạy đoạn mã sau để cài đặt cloudflared và tạo dịch vụ systemd (lắng nghe tại 127.0.0.1:53).`,linuxStep2:`Thay đổi DNS hệ thống thành 127.0.0.1.`,routeros:`MikroTik`,routerosTitle:`MikroTik RouterOS`,routerosDesc:`Dùng trình phân giải này cho mọi thiết bị trong mạng bằng cách đặt nó làm máy chủ DoH của router.`,routerosStep1:`Chạy trong terminal RouterOS (RouterOS 7):`,routerosNote:`Các truy vấn do router chuyển tiếp sẽ hiển thị trong nhật ký là router, không phải từng thiết bị. Hãy cấu hình trực tiếp trên thiết bị nếu bạn cần nhật ký theo từng thiết bị.`,routerosDocs:`Tài liệu DNS của MikroTik`,accessPointsCardTitle:`Điểm truy cập`,currentAccessPoint:`Điểm truy cập hiện tại`,selectAccessPointToConfigure:`Chọn điểm truy cập để định cấu hình`},a={title:`Quy tắc tùy chỉnh`,subtitle:`Kiểm soát thủ công hành vi phân giải cho các tên miền cụ thể (Chặn, Cho phép hoặc Chuyển hướng).`,action:`Hành động`,typeBlock:`Chặn (BLOCK)`,typeAllow:`Cho phép (ALLOW)`,typeRedirect:`Chuyển hướng (REDIRECT)`,pattern:`Mẫu tên miền (Pattern)`,patternPlaceholder:`example.com hoặc *.test.com`,addRule:`Thêm quy tắc`,redirectSettings:`Cài đặt bản ghi chuyển hướng`,aRecord:`Bản ghi A (IPv4)`,aaaaRecord:`Bản ghi AAAA (IPv6)`,cnameRecord:`Bản ghi CNAME`,txtRecord:`Bản ghi TXT`,optional:`(Tùy chọn)`,ipv4Placeholder:`Ví dụ: 1.2.3.4`,ipv6Placeholder:`Ví dụ: 2001:db8::1`,cnamePlaceholder:`Ví dụ: target.com`,txtPlaceholder:`Nhập nội dung văn bản...`,saveRedirectRule:`Lưu và thêm quy tắc chuyển hướng`,noRulesTitle:`Không có quy tắc tùy chỉnh`,noRulesDesc:`Bạn chưa thêm bất kỳ quy tắc thủ công nào.`,tableAction:`Hành động`,tablePattern:`Mẫu`,tableDetails:`Chi tiết phân giải`,tableOps:`Thao tác`,labelBlock:`Chặn`,labelAllow:`Cho phép`,labelRedirect:`Chuyển hướng`,detailBlock:`Phân giải thành`,detailAllow:`Chuyển tiếp đến dịch vụ thượng nguồn`,patternEmpty:`Mẫu tên miền không được để trống`,duplicatePattern:`Quy tắc cho tên miền này đã tồn tại`,addSuccess:`Thêm quy tắc thành công`,addFailed:`Thêm quy tắc thất bại`,updateSuccess:`Cập nhật quy tắc thành công`,updateFailed:`Cập nhật quy tắc thất bại`,tableCreatedAt:`Thời gian thêm`,clickToSort:`Nhấp để sắp xếp`},o={customRange:`Khoảng thời gian tùy chỉnh`,startTime:`Thời gian bắt đầu`,endTime:`Thời gian kết thúc`,apply:`Áp dụng`,custom:`Tùy chỉnh`,totalQueries:`Tổng số truy vấn`,blocked:`Đã chặn`,redirected:`Đã chuyển hướng`,blockRate:`Tỷ lệ chặn`,activeDevices:`Thiết bị đang hoạt động`,activeIPs:`Địa chỉ IP đang hoạt động`,queryTrend:`Xu hướng truy vấn`,noRecords:`Không có bản ghi nào trong khoảng thời gian này`,topAllowed:`Tên miền thường dùng (Được cho phép)`,topBlocked:`Tên miền bị chặn nhiều nhất (Bị chặn)`,noData:`Không có dữ liệu`,clientActivity:`Hoạt động của máy khách`,ipAddress:`Địa chỉ IP`,location:`Vị trí`,queries:`Số truy vấn`,destinationDistribution:`Phân bổ đích đến của lưu lượng`,requests:`Yêu cầu`,topIsps:`Nhà mạng chính (ISP)`,pressToShowMore:`Nhấn để xem thêm`,maximize:`Phóng to`,minimize:`Thu nhỏ`},s={title:`Nhật ký truy vấn`,subtitle:`Xem nhật ký phân giải DNS và bản ghi chặn của cấu hình này.`,realtime:`Thời gian thực`,allStatus:`Tất cả trạng thái`,onlyPass:`Đã cho phép`,onlyBlock:`Đã chặn`,onlyRedirect:`Đã chuyển hướng`,searchPlaceholder:`Tìm kiếm tên miền...`,noResults:`Không tìm thấy kết quả`,noRecords:`Chưa có bản ghi nào`,noResultsDesc:`Không tìm thấy bản ghi tên miền nào khớp với "{{query}}".`,noRecordsDesc:`Không nhận được truy vấn DNS nào trong khoảng thời gian đã chọn.`,tableTime:`Thời gian`,tableDomain:`Tên miền`,tableAnswer:`Kết quả phân giải`,tableSource:`Nguồn`,tableType:`Loại`,tableStatus:`Trạng thái`,tableReason:`Lý do`,loadedAll:`Đã tải toàn bộ {{count}} bản ghi`,realtimeLoadMoreTip:`Tắt chế độ “Thời gian thực” để tải thêm`,filterAccessPoint:`Điểm truy cập`,allAccessPoint:`Tất cả điểm truy cập`,allCountry:`Tất cả quốc gia`,filterCountry:`Quốc gia đích`,allIsp:`Tất cả ISP`,filterIsp:`ISP`,timeRange:`Khoảng thời gian`,clearFilters:`Xóa bộ lọc`,details:`Chi tiết truy vấn`,detailAccessPoint:`Điểm truy cập`,basicInfo:`Thông tin cơ bản`,detailDomain:`Tên miền`,detailType:`Loại`,detailTime:`Thời gian`,detailLatency:`Thời gian phản hồi`,detailProfile:`Cấu hình sử dụng`,detailStatus:`Trạng thái`,detailUpstream:`Máy chủ thượng nguồn`,detailReason:`Lý do`,detailNoReason:`Không có (Đã cho phép)`,detailECS:`ECS`,resolutionResult:`Kết quả phân giải`,noResult:`Không có kết quả`,networkDetails:`Chi tiết mạng`,clientSource:`Máy khách (Nguồn)`,destination:`Đích đến (Địa chỉ phân giải)`,quickActions:`Thao tác nhanh`,actionAllow:`Cho phép`,actionBlock:`Chặn`,actionRedirect:`Chuyển hướng`,statusPass:`Đã cho phép`,statusBlock:`Đã chặn`,statusRedirect:`Đã chuyển hướng`,export:`Xuất nhật ký`,rewritten:`Đã viết lại`,logDetails:`Chi tiết nhật ký`,searchCountry:`Tìm kiếm quốc gia...`,noMatchingCountries:`Không tìm thấy quốc gia phù hợp`,searchIsp:`Tìm kiếm nhà mạng/ISP...`,noMatchingIsps:`Không tìm thấy ISP phù hợp`,loadingIsps:`Đang tải danh sách ISP...`,loggingDisabledTitle:`Ghi nhật ký đã bị tắt`,loggingDisabledDesc:`Thời gian lưu giữ nhật ký cho hồ sơ này được đặt thành 'Tắt'. Không có nhật ký truy vấn nào được ghi lại. Để xem nhật ký, hãy bật lưu giữ nhật ký trong Cài đặt.`},c={title:`Danh sách chặn bên ngoài`,subtitle:`Đăng ký danh sách chặn tên miền do bên thứ ba duy trì (như AdGuard, v.v.).`,formatDisclaimer:`Hệ thống này chỉ hỗ trợ một số định dạng danh sách AdGuard giới hạn và danh sách tên miền thuần túy. Chỉ hỗ trợ các quy tắc chặn cơ bản (ví dụ: ||example.com^), sẽ bỏ qua danh sách trắng "@@", hiện chưa hỗ trợ các quy tắc viết lại "$" và quy tắc rút gọn "*". Hệ thống sẽ tự động khớp tất cả các tên miền phụ của tên miền.`,syncAll:`Đồng bộ tất cả danh sách`,urlPlaceholder:`Nhập URL danh sách chặn...`,addSubscription:`Thêm đăng ký`,supportedFormats:`Các định dạng danh sách được hỗ trợ:`,formatAdGuard:`Tương thích với các quy tắc lọc như ||domain.com^.`,formatHosts:`Tương thích với tệp hosts tiêu chuẩn (ví dụ: 0.0.0.0 domain.com).`,noListsTitle:`Chưa thêm danh sách nào`,noListsDesc:`Bạn chưa đăng ký bất kỳ danh sách chặn bên ngoài nào.`,tableUrl:`URL danh sách`,tableLastSync:`Lần đồng bộ cuối`,tableStatus:`Trạng thái`,tableOps:`Thao tác`,neverSynced:`Chưa bao giờ`,enabled:`Bình thường`,disabled:`Đồng bộ thất bại`,statusNormal:`Bình thường`,statusDisabled:`Đã tắt`,statusOutdated:`Hết hạn`,statusMissing:`Thiếu`,presetOisdBig:`OISD Big (Chặn quảng cáo/phần mềm độc hại, v.v.)`,presetOisdNsfw:`OISD NSFW (Chặn nội dung khiêu dâm/nhạy cảm/người lớn)`,presetAdGuard:`AdGuard AdServers (Máy chủ quảng cáo)`,presetStevenBlack:`StevenBlack Hosts (Chặn tổng hợp)`,syncTaskStarted:`Bắt đầu tác vụ đồng bộ`,syncCheckComplete:`Kiểm tra đồng bộ hoàn tất`,syncTaskFailed:`Đồng bộ thất bại`,syncing:`Đang đồng bộ...`,syncSuccess:`Đồng bộ thành công`,syncError:`Đồng bộ thất bại`,syncErrorDesc:`Không thể tải xuống hoặc phân tích danh sách chặn này. Vui lòng kiểm tra xem liên kết có đúng không và đảm bảo liên kết có thể truy cập bình thường.`,deleteConfirm:`Xác nhận xóa đăng ký?`,deleteSuccess:`Xóa danh sách thành công`,deleteError:`Xóa danh sách thất bại`,addSuccess:`Thêm danh sách thành công`,addError:`Thêm danh sách thất bại`,listEnabled:`Danh sách hoạt động`,listEnabledHint:`Tắt để ngừng lọc bằng danh sách này mà không cần xoá. Đăng ký và lịch sử đồng bộ vẫn được giữ lại.`,listEnabledToast:`Đã bật danh sách - đang xây dựng lại bộ lọc`,listDisabledToast:`Đã tắt danh sách - đang xây dựng lại bộ lọc`,checkDomain:`Kiểm tra một tên miền`,checkDomainHint:`Danh sách được lưu dưới dạng bộ lọc nén, do đó không thể duyệt các mục trong đó. Bạn có thể kiểm tra ngay bất kỳ tên miền nào với danh sách này.`,check:`Kiểm tra`,checkBlocked:`Bị chặn bởi danh sách này`,checkNotBlocked:`Không bị chặn bởi danh sách này`,checkViaParent:`(khớp với tên miền cha)`,checkNotSynced:`Danh sách này chưa đồng bộ xong, nên chưa có gì để kiểm tra.`,checkListDisabled:`Danh sách này hiện đang tắt, nên không lọc gì vào lúc này.`,checkProbabilisticRate:`Bộ lọc mang tính xác suất: khoảng 1 trong {{odds}} lượt khớp là dương tính giả. Thêm ngoại lệ cũng áp dụng cho mọi tên miền con của nó.`,checkProbabilistic:`Bộ lọc mang tính xác suất, nên một phần nhỏ các lượt khớp là dương tính giả. Thêm ngoại lệ cũng áp dụng cho mọi tên miền con của nó.`,checkAllowAction:`Vẫn cho phép`,checkAllowed:`Đã thêm ngoại lệ - tên miền này giờ đã phân giải được`,allowRuleAdded:`Đã thêm ngoại lệ cho {{domain}}`},l={title:`Cài đặt cấu hình`,subtitle:`Quản lý chiến lược phân giải DNS và các tùy chọn nâng cao của bạn.`,saveChanges:`Lưu tất cả thay đổi`,saveSuccess:`Lưu cài đặt thành công`,saveError:`Lưu cài đặt thất bại, vui lòng thử lại sau`,upstreamTitle:`Dịch vụ thượng nguồn`,dohUrl:`DoH URL`,dnsIP:`DNS IP`,classicDns:`DNS truyền thống`,httpsOnly:`Chỉ hỗ trợ HTTPS`,upstreamDesc:`Tất cả các truy vấn không bị chặn sẽ được chuyển tiếp đến máy chủ này. Hỗ trợ DoH (HTTPS), DoT (tls://), DNS Stamp (sdns://) hoặc DNS truyền thống. DNS truyền thống được chuyển tiếp qua TCP.`,defaultPolicyTitle:`Hành vi chặn mặc định`,onNoMatch:`Khi không khớp quy tắc`,allowAll:`Cho phép tất cả truy vấn`,blockAll:`Chặn tất cả truy vấn`,logRetentionTitle:`Lưu giữ nhật ký`,retentionDuration:`Thời gian lưu giữ`,retentionDesc:`Nhật ký được xóa tự động. `,skipLogOnPass:`Không ghi nhật ký các truy vấn được phép`,skipLogOnPassDesc:`Khi bật, các truy vấn được phép thông thường sẽ không được ghi lại. Chỉ các truy vấn bị chặn, chuyển hướng hoặc thất bại mới được lưu.`,ecsTitle:`EDNS Client Subnet (ECS)`,ecsUpstreamHint:`ECS-подсеть, отправляемая на upstream-сервер`,sendEcs:`Gửi ECS`,customSubnet:`Mạng con tùy chỉnh`,customIpv4:`Mạng con IPv4 tùy chỉnh`,customIpv6:`Mạng con IPv6 tùy chỉnh`,ipv4Hint:`(Ví dụ: 1.2.3.0/24)`,ipv6Hint:`(Ví dụ: 2001:db8::/32)`,testToolTitle:`Công cụ kiểm tra phân giải thời gian thực`,testDomain:`Tên miền kiểm tra`,recordType:`Loại bản ghi`,runTest:`Chạy kiểm tra`,domainPlaceholder:`Ví dụ: google.com`,hitRule:`Quy tắc khớp / Lý do`,defaultAllow:`Chiến lược cho phép mặc định`,parseLatency:`Thời gian phân giải`,sourceIp:`Địa chỉ IP nguồn`,answerSection:`Kết quả phân giải (Answer Section)`,noRecordsReturned:`Truy vấn này không trả về bất kỳ bản ghi nào.`,diagnostics:`Thông tin chẩn đoán`,errorDetail:`Chi tiết lỗi`,upstreamResponse:`Phản hồi từ máy chủ nguồn`,presetCloudflareSecurity:`Cloudflare Security (Nhanh/Chặn tên miền độc hại/Chặn tên miền lừa đảo)`,presetCloudflareFamilies:`Cloudflare Families (Nhanh/Chặn tên miền độc hại/Chặn nội dung người lớn)`,presetQuad9:`Quad9 (Chặn tên miền độc hại/Không lưu nhật ký/Không gửi ECS)`,presetQuad9Ecs:`Quad9 ECS (Chặn tên miền độc hại/Không lưu nhật ký/Có gửi ECS)`,presetControlDFree:`ControlD Free (Chặn quảng cáo/Theo dõi/Tên miền độc hại/Lừa đảo)`,presetControlDUncensored:`ControlD Uncensored (Chống kiểm duyệt)`,presetAdGuard:`AdGuard (Chặn quảng cáo/Theo dõi)`,presetAdGuardFamily:`Bảo vệ gia đình AdGuard (Chặn quảng cáo/Theo dõi/Nội dung người lớn/Tìm kiếm an toàn)`,retention10m:`10 phút`,retention1h:`1 giờ`,retention24h:`24 giờ`,retention7d:`7 ngày`,retention30d:`30 ngày`,retention90d:`90 ngày (Tối đa)`,blockModeTitle:`Chế độ phản hồi khi chặn`,blockModeDesc:`Nội dung trả về khi tên miền bị chặn`,default:`Mặc định`,NXDOMAIN:`Tên miền không tồn tại (NXDOMAIN)`,NODATA:`Không có dữ liệu (NODATA)`,customIP:`IP tùy chỉnh`,export:`Xuất cấu hình`,exportSuccess:`Xuất cấu hình thành công`,exportError:`Xuất cấu hình thất bại, vui lòng thử lại sau`,nameUpdateSuccess:`Tên cấu hình đã được cập nhật`,saving:`Đang lưu...`,echTitle:`Ghi đè ECH`,enableEch:`Bật ghi đè ECH`,echDesc:`Đối với các miền qua Cloudflare, tự động ghi đè tham số ECH và SNI bên ngoài khi truy vấn HTTPS (Type 65) / SVCB (Type 64) để bảo vệ quyền riêng tư.`,echFrontingTitle:`SNI bên ngoài (ECH Fronting)`,echFrontingDesc:`Tên miền hiển thị ở dạng văn bản thuần trong bắt tay TLS bên ngoài`,echFrontingCustomPlaceholder:`Nhập miền fronting tùy chỉnh, ví dụ: crypto.cloudflare.com`,echPreferred:`Ưu tiên`,whatIsEch:`ECH (Encrypted Client Hello) là gì?`,echHelpDesc:`ECH là tiện ích mở rộng quyền riêng tư của TLS 1.3 giúp mã hóa hoàn toàn tên miền thực (Inner SNI), chỉ để lộ tên miền ngụy trang (Outer SNI) cho bên trung gian.`,echHelpBenefit1:`Ngăn chặn nhà mạng và bên trung gian theo dõi miền phụ bạn đang truy cập`,echHelpBenefit2:`Kết hợp với DoH để loại bỏ rò rỉ SNI dạng văn bản thuần`,retentionDisabled:`Tắt (Bảo vệ quyền riêng tư)`,retentionDisabledDesc:`Ghi nhật ký đã bị tắt. Hệ thống sẽ không ghi lại bất kỳ nhật ký truy vấn DNS nào và sẽ xóa ngay nhật ký lịch sử.`},u=JSON.parse(`{"title":"Cài đặt tài khoản","subtitle":"Quản lý thông tin bảo mật và người dùng hệ thống của bạn.","jwtSecretWarningTitle":"Cảnh báo bảo mật: Mã bí mật JWT yếu","jwtSecretWarningDesc":"JWT_SECRET hiện tại có ít hơn 32 ký tự, tiềm ẩn rủi ro bảo mật. Vui lòng cấu hình biến môi trường KEK_v1 trước khi xoay vòng JWT_SECRET để đảm bảo các khóa TOTP và khóa khôi phục được mã hóa phong bì vẫn có thể giải mã được.","roleAdmin":"Quản trị viên hệ thống","roleUser":"Người dùng","personalInfo":"Thông tin cá nhân","username":"Tên đăng nhập","userId":"ID người dùng","changePassword":"Đổi mật khẩu","currentPassword":"Mật khẩu hiện tại","newPassword":"Mật khẩu mới","updatePassword":"Cập nhật mật khẩu","userManagement":"Quản lý người dùng (Quản trị viên)","createUser":"Tạo người dùng","role":"Vai trò","createdAt":"Thời gian tạo","lastActive":"Hoạt động lần cuối","lastResolve":"Phân giải lần cuối","actions":"Thao tác","dangerZone":"Khu vực nguy hiểm","clearLogs":"Xóa tất cả nhật ký","clearLogsDesc":"Hành động này sẽ xóa nhật ký truy vấn được tạo bởi tất cả các cấu hình DNS dưới tên bạn. Hành động này không thể hoàn tác.","clearLogsBtn":"Xóa nhật ký ngay bây giờ","deleteAccount":"Xóa tài khoản","deleteAccountDesc":"Xóa vĩnh viễn tài khoản của bạn và tất cả dữ liệu liên quan. Hành động này sẽ khiến bạn mất tất cả các cấu hình phân giải.","deleteAccountBtn":"Xóa tài khoản vĩnh viễn","createNewUser":"Tạo người dùng mới","initialPassword":"Mật khẩu khởi tạo","userRole":"Vai trò người dùng","cancel":"Hủy","createNow":"Tạo ngay","formatTipUsername":"Định dạng tên đăng nhập: Chỉ từ 5 đến 32 ký tự theo định dạng Unix","formatTipPassword":"Định dạng mật khẩu: 12-100 ký tự","passwordSuccess":"Đổi mật khẩu thành công","updateFailed":"Cập nhật thất bại","confirmDeleteUser":"Bạn có chắc chắn muốn xóa người dùng này không? Tất cả cấu hình họ sở hữu cũng sẽ bị xóa.","confirmClearLogs":"Bạn có chắc chắn muốn xóa nhật ký truy vấn của tất cả cấu hình dưới tên bạn không? Hành động này không thể hoàn tác.","clearLogsSuccess":"Nhật ký đã được xóa thành công","confirmDeleteAccount":"Cảnh báo: Bạn có chắc chắn muốn xóa tài khoản này không?\\n\\nTất cả cấu hình DNS, quy tắc tùy chỉnh và nhật ký truy vấn của bạn sẽ bị xóa vĩnh viễn. Hành động này không thể đảo ngược!","inactivityPolicy":"Chính sách hoạt động","inactivityDesc":"Để bảo vệ quyền riêng tư của người dùng và tiết kiệm tài nguyên, tất cả nhật ký truy vấn và cấu hình DNS của các tài khoản không có hoạt động phân giải trong 30 ngày sẽ được tự động xóa. Bản thân tài khoản sẽ bị xóa sau 90 ngày không đăng nhập.","systemSettings":"Cài đặt hệ thống (Quản trị viên)","adminOnlyView":"Chỉ dành cho quản trị viên","featureToggle":"Bật/Tắt tính năng","enableTurnstileSignup":"Bật xác minh người máy trên trang đăng ký","enableTurnstileLogin":"Bật xác minh người máy trên trang đăng nhập","totp":{"title":"Ứng dụng xác thực (TOTP)","enabled":"Đã bật","disabled":"Chưa bật","setupDesc":"Thêm một lớp bảo mật bổ sung cho tài khoản của bạn. Sử dụng Google Authenticator, Authy hoặc bất kỳ ứng dụng tương thích TOTP nào.","setupBtn":"Cấu hình ứng dụng xác thực (TOTP)","scanQR":"Sử dụng ứng dụng xác thực để quét mã QR này:","orEnterManually":"Hoặc nhập khóa thủ công:","enterCode":"Vui lòng nhập mã từ ứng dụng xác thực để xác nhận:","enterCodeHint":"Nhập mã xác thực 6 chữ số để xác nhận khóa đã được ghi lại chính xác.","activate":"Kích hoạt TOTP","skipPassword":"Đăng nhập không mật khẩu — Chỉ hiển thị ô nhập TOTP khi đăng nhập (không hiển thị mật khẩu)","disable":"Tắt ứng dụng xác thực (TOTP)","disableTitle":"Tắt ứng dụng xác thực (TOTP)","disableWarning":"Sau khi tắt TOTP, nếu chưa cấu hình Passkey, tài khoản của bạn sẽ chỉ được bảo vệ bằng mật khẩu.","confirmDisable":"Tắt TOTP","recoveryKeysTitle":"Vui lòng lưu các khóa khôi phục của bạn","recoveryKeysWarning":"Vui lòng lưu khóa khôi phục ở nơi an toàn (như trình quản lý mật khẩu). Mỗi khóa chỉ có thể sử dụng một lần.","copyKeys":"Sao chép tất cả khóa","copied":"Đã sao chép!","done":"Xong, tôi đã lưu khóa","activeDesc":"Ứng dụng xác thực (TOTP) đang hoạt động và tạo mã xác nhận 6 chữ số."},"activity":{"title":"Nhật ký hoạt động tài khoản","action":"Sự kiện","time":"Thời gian","ip":"IP địa chỉ","session":"Phiên làm việc","empty":"Chưa có nhật ký hoạt động.","loadMore":"Tải thêm","signup":"Đăng ký","loginSuccess":"Đăng nhập thành công","loginFail":"Đăng nhập thất bại","logout":"Đăng xuất","pwChangeSuccess":"Đổi mật khẩu thành công","pwChangeFail":"Đổi mật khẩu thất bại","totpVerifySuccess":"Xác minh TOTP thành công","totpVerifyFail":"Xác minh TOTP thất bại","totpSetup":"Đã thiết lập ứng dụng TOTP","totpRemoved":"Đã tắt ứng dụng TOTP","recoveryKeyUsed":"Sử dụng khóa khôi phục","sessionRevoked":"Phiên làm việc đã bị thu hồi","reasons":{"user_active":"Người dùng chủ động đăng xuất","user_revoke":"Thu hồi phiên làm việc","expired":"Phiên đã hết hạn","geolocation_mismatch":"Hạn chế truy cập từ vị trí khác","geolocation_missing":"Thiếu thông tin vị trí địa lý","token_reuse":"Sử dụng lại mã xác thực (Cảnh báo bảo mật)"},"passkeyRegistered":"Đăng ký Passkey","passkeyDeleted":"Xóa Passkey","passkeyVerifySuccess":"Xác minh Passkey thành công","passkeyVerifyFail":"Xác minh Passkey thất bại","recoveryKeyRotated":"Khóa khôi phục đã được xoay vòng"},"sessions":{"title":"Phiên hoạt động","session":"Phiên","device":"Thiết bị","ip":"Địa chỉ IP","loginTime":"Thời gian đăng nhập","expires":"Hết hạn","action":"Hành động","current":"Hiện tại","revoke":"Thu hồi","revokeFailed":"Không thể thu hồi phiên.","empty":"Không tìm thấy phiên hoạt động nào.","unknownDevice":"Thiết bị không xác định","revokeOthers":"Thu hồi các phiên khác","confirmRevokeOthers":"Thu hồi các phiên khác","revokeOthersConfirmText":"Bạn có chắc chắn muốn thu hồi tất cả các phiên hoạt động khác không? Tất cả các thiết bị đã đăng nhập khác sẽ bị đăng xuất ngay lập tức."},"passkey":{"title":"Mã khóa (Passkey)","addBtn":"Thêm Passkey","desc":"Sử dụng xác thực sinh trắc học (Touch ID, Face ID, Windows Hello) hoặc khóa bảo mật (YubiKey) để xác thực đa yếu tố nhanh chóng và chống lừa đảo.","empty":"Chưa có Passkey nào được thêm.","addTitle":"Thêm Passkey","nameLabel":"Tên Passkey","namePlaceholder":"vd: my_passkey","promptNotice":"Sau khi nhấp tiếp tục, trình duyệt sẽ nhắc bạn hoàn tất đăng ký sinh trắc học hoặc khóa bảo mật.","continue":"Tiếp tục","renameTitle":"Đổi tên Passkey","deleteTitle":"Xóa Passkey","deleteConfirm":"Bạn có chắc chắn muốn xóa Passkey \\"{{name}}\\" không? Bạn sẽ không thể sử dụng nó để xác thực đa yếu tố nữa.","defaultName":"Passkey","notSupported":"Trình duyệt hoặc môi trường hiện tại của bạn không hỗ trợ Passkey (WebAuthn).","regFailed":"Đăng ký Passkey thất bại","count":"{{count}} đã định cấu hình","none":"Chưa định cấu hình","created":"Thời gian tạo","lastUsed":"Sử dụng lần cuối","neverUsed":"Chưa từng sử dụng","updated":"Cập nhật Passkey thành công","registered":"Đã đăng ký Passkey thành công","deleted":"Đã xóa Passkey","appNameLabel":"Tên miền","appNameHelper":"Mã khóa sẽ được liên kết với tên miền này","formatTip":"Gợi ý tên Passkey: 1-30 ký tự, chỉ cho phép chữ cái, số, dấu gạch dưới và dấu gạch ngang","verifyPrompt":"Xác thực bằng sinh trắc học thiết bị hoặc khóa bảo mật.","changePwNotice":"Bạn sẽ được nhắc xác thực bằng Passkey khi gửi biểu mẫu.","submitNotice":"Bạn sẽ được nhắc xác thực bằng Passkey khi gửi biểu mẫu."},"mfaNone":"Không","resetUserPassword":"Đặt lại mật khẩu","resetPasswordTitle":"Đặt lại mật khẩu người dùng","resetPasswordWarning":"Sau khi đặt lại, tất cả các phiên đăng nhập của người dùng sẽ bị hủy ngay lập tức.","resetPasswordSuccess":"Đặt lại mật khẩu thành công. Các phiên trước đó đã bị hủy.","confirmReset":"Xác nhận đặt lại","mfa":{"title":"Xác thực đa yếu tố (MFA)","enabled":"Đã cấu hình","notConfigured":"Chưa cấu hình","desc":"Khóa truy cập (Passkey) và ứng dụng xác thực (TOTP) đều là phương thức MFA. Cấu hình ít nhất một phương thức để bảo vệ tài khoản.","passwordlessTitle":"Đăng nhập không mật khẩu","passwordlessDesc":"Khi bật, đăng nhập sẽ bỏ qua mật khẩu và xác minh danh tính trực tiếp qua Passkey hoặc TOTP.","unconfiguredHint":"Chưa có phương thức MFA nào được cấu hình. Hãy thiết lập Passkey hoặc ứng dụng xác thực bên dưới."},"recoveryKey":{"title":"Khóa khôi phục khẩn cấp","desc":"Khóa khôi phục khẩn cấp cho phép bạn lấy lại quyền truy cập hoặc đặt lại mật khẩu nếu mất tất cả Passkey hoặc ứng dụng xác thực. Được bảo vệ bởi mã hóa phong bì KEK.","configured":"Đã cấu hình","notConfigured":"Chưa cấu hình","kekProtected":"Được mã hóa KEK","kekTooltip":"Được bảo vệ bằng mã hóa phong bì AES-256-GCM dựa trên KEK.","viewBtn":"Xem khóa khôi phục","rotateBtn":"Xoay vòng khóa","yourKey":"Khóa khôi phục 30 chữ số của bạn","securityTip":"Giữ bí mật khóa này. Bất kỳ ai có quyền truy cập đều có thể truy cập tài khoản của bạn.","rotateConfirm":"Xoay vòng khóa sẽ vô hiệu hóa khóa hiện tại ngay lập tức. Bạn có muốn tiếp tục không?","confirmRotateBtn":"Tiến hành xoay vòng","viewVerifyTitle":"Xác minh danh tính để xem khóa","rotateVerifyTitle":"Xác minh danh tính để xoay vòng khóa","rotateSuccess":"Khóa khôi phục đã được xoay vòng thành công! Vui lòng lưu trữ khóa mới ở nơi an toàn ngay lập tức.","legacyNotice":"Khóa của bạn được lưu trữ dưới dạng băm một chiều cũ và không thể giải mã. Vui lòng xoay vòng khóa để tạo khóa mới được mã hóa KEK."},"verifyIdentity":"Xác minh bảo mật","verifyIdentityDesc":"Để bảo vệ tài khoản của bạn, vui lòng xác minh danh tính trước khi tiếp tục.","usePasskeyInstead":"Xác thực bằng Passkey","changePasswordWithPasskey":"Xác minh bằng Passkey & Cập nhật mật khẩu","enableRegistration":"Cho phép đăng ký người dùng mới"}`),d={item1Title:`Obex Protective DNS`,item1Desc:`Bộ phân giải DNS dựa trên Cloudflare Workers & D1, nỗ lực tối đa vì tốc độ và bảo mật.`,item2Title:`Bảo vệ quyền riêng tư DoH`,item2Desc:`Ngăn chặn việc bị chặn và tăng cường quyền riêng tư thông qua đường hầm mã hóa DNS over HTTPS (RFC 8484).`,item3Title:`Mạng lưới biên toàn cầu`,item3Desc:`Dựa trên mạng lưới biên rộng lớn của Cloudflare để có tốc độ phân giải cực nhanh và độ trễ cực thấp.`,item4Title:`Lọc tinh vi`,item4Desc:`Hỗ trợ đầy đủ danh sách đen/trắng, quy tắc AdGuard và chuyển hướng bản ghi DNS tùy chỉnh.`,item5Title:`Thống kê và phân tích thời gian thực`,item5Desc:`Hiển thị trực quan tình trạng sức khỏe của mạng thông qua nhật ký truy vấn chi tiết và bảng điều khiển thống kê tổng hợp.`,item6Title:`Giao diện hiện đại & Chế độ tối`,item6Desc:`Bảng quản lý mật độ cao được thiết kế cho các kỹ sư và người dùng gia đình, dựa trên Blueprint UI của Palantir.`,item7Title:`Cơ sở hạ tầng Cloud Native`,item7Desc:`Kiến trúc không máy chủ (Serverless) đảm bảo không tốn công bảo trì và khả năng mở rộng vô hạn cho DNS cá nhân.`,item8Title:`Quản lý nhiều cấu hình`,item8Desc:`Tạo và quản lý nhiều cấu hình độc lập cho các thiết bị hoặc môi trường mạng khác nhau.`,item9Title:`Quản lý nhiều điểm truy cập`,item9Desc:`Cấu hình các điểm truy cập DNS riêng cho các thiết bị khác nhau, thực hiện cách ly và phân tích tinh vi dữ liệu nhật ký và thống kê.`},f={title:`Hướng dẫn Thiết lập & Triển khai DNS Worker`,subtitle:`Phiên bản của bạn chưa được cấu hình đầy đủ. Vui lòng hoàn thành các bước bên dưới để kích hoạt DNS Worker.`,dbStatus:`Liên kết Cơ sở Dữ liệu D1 (env.DB)`,jwtStatus:`Khóa Bí mật JWT (env.JWT_SECRET)`,configured:`Đã cấu hình`,missing:`Thiếu / Chưa cấu hình`,refresh:`Tải lại & Xác minh`,methodCli:`Triển khai bằng CLI`,methodDash:`Triển khai bằng Bảng điều khiển Cloudflare`,copy:`Sao chép`,copied:`Đã sao chép!`,stepDbTitle:`1. Liên kết Cơ sở Dữ liệu D1`,stepDbDesc:`Tạo một cơ sở dữ liệu D1 và liên kết nó với worker của bạn. Chạy lệnh sau trong terminal:`,stepDbCommand1:`wrangler d1 create dns_worker_db`,stepDbDesc2:`Sao chép thông tin cơ sở dữ liệu D1 đầu ra và dán vào file wrangler.toml dưới mục [[d1_databases]]:`,stepDbCommand2:`[[d1_databases]]
|
|
2
|
-
binding = "DB"
|
|
3
|
-
database_name = "dns_worker_db"
|
|
4
|
-
database_id = "<D1_DATABASE_ID_CỦA_BẠN>"
|
|
5
|
-
migrations_dir = "migrations"`,stepDbDashDesc:`1. Truy cập Bảng điều khiển Cloudflare -> Workers & Pages -> D1 -> Tạo Cơ sở dữ liệu -> Đặt tên là 'dns_worker_db'.
|
|
6
|
-
2. Truy cập Worker của bạn -> Cài đặt -> Biến -> Liên kết Cơ sở Dữ liệu D1 -> Thêm liên kết.
|
|
7
|
-
3. Đặt tên liên kết là 'DB', và chọn cơ sở dữ liệu 'dns_worker_db'. Lưu.
|
|
8
|
-
4. Truy cập Cơ sở dữ liệu D1 -> Bảng điều khiển, sao chép và chạy script SQL trong thư mục migrations để cấu trúc các bảng dữ liệu.`,stepJwtTitle:`2. Thiết lập Khóa Bí mật JWT`,stepJwtDesc:`DNS Worker yêu cầu mã bí mật JWT để ký mã xác thực phiên làm việc. Hãy cấu hình nó làm Cloudflare Secret:`,stepJwtCommand1:`wrangler secret put JWT_SECRET`,stepJwtDashDesc:`1. Truy cập Worker của bạn -> Cài đặt -> Biến -> Biến Môi trường -> Thêm biến.
|
|
9
|
-
2. Đặt tên là 'JWT_SECRET', chọn kiểu 'Secret', và điền một chuỗi ký tự ngẫu nhiên an toàn.
|
|
10
|
-
3. Lưu và triển khai.`,stepJwtDesc2:`Bảng điều khiển Cloudflare`,stepJwtCommand2:`https://dash.cloudflare.com/`,stepDeployTitle:`3. Triển khai & Áp dụng Migrations`,stepDeployDesc:`Chạy lệnh triển khai để biên dịch giao diện người dùng, tự động áp dụng các di chuyển cấu trúc bảng D1 và xuất bản trực tuyến:`,stepDeployCommand:`npm run deploy`,stepDeployDashDesc:`If bạn đã hoàn tất mọi cấu hình qua Bảng điều khiển Cloudflare, hãy truy cập tab Triển khai của Worker và nhấp vào nút 'Triển khai' hoặc 'Triển khai lại'.`,jwtGeneratorTitle:`Bộ tạo JWT_SECRET An toàn`,jwtGeneratorDesc:`Sử dụng bộ tạo khóa an toàn mật mã này để tạo mã bí mật chữ số ngẫu nhiên gồm 64 ký tự cho env.JWT_SECRET.`,regenerate:`Tạo lại`};var p={common:e,nav:t,theme:n,auth:r,setup:i,rules:a,analytics:o,logs:s,filtering:c,settings:l,account:u,intro:d,deploymentGuide:f};export{u as account,o as analytics,r as auth,e as common,p as default,f as deploymentGuide,c as filtering,d as intro,s as logs,t as nav,a as rules,l as settings,i as setup,n as theme};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const e={account:`账号`,logout:`登出`,selectProfile:`选择配置`,add:`添加`,newProfileName:`新配置名称...`,profileNameFormatTip:`配置名称提示:1-30个字符,且不能与已有配置重名`,profileLimitExceeded:`配置数量已达上限(最多{{max}}个)`,profileNameExists:`该配置名称已存在`,profileNameFormatError:`配置名称格式不正确`,create:`创建`,welcome:`欢迎`,createProfileToStart:`创建一个配置以开始。`,loading:`加载中...`,errorNetwork:`网络错误`,confirmDelete:`确定要删除此配置吗?`,confirmLogout:`确定注销登录吗?`,notFound:`404 - 页面未找到`,notFoundDesc:`您尝试访问的页面不存在或已被移除。`,backToHome:`返回首页`,apac:`亚太`,mainlandChina:`中国大陆`,HongKong:`香港`,Singapore:`新加坡`,Tokyo:`东京`,NorthAmerica:`北美`,nae:`北美东部`,naw:`北美西部`,eu:`欧洲`,invalidFormat:`无效文件格式`,import:`导入`,importSuccess:`配置成功导入`,importError:`配置导入失败,请确保格式正确且稍后再试`,save:`保存`,saveSuccess:`设置已保存`},t={setup:`安装`,rules:`规则`,stats:`统计`,logs:`日志`,filter:`过滤项`,settings:`设置`},n={light:`浅色`,dark:`深色`,system:`跟随系统`},r={keepLoggedIn:`保持登录 {{days}} 天`,login:`登录 DNS Worker`,signup:`创建账户以开始`,welcomeBack:`欢迎回来,请输入凭据`,protectInternet:`保护您的互联网第一跳`,error:`错误`,username:`用户名`,usernamePlaceholder:`您的用户名`,password:`密码`,passwordPlaceholder:`您的密码`,loginBtn:`登录`,signupBtn:`注册`,totpVerification:`TOTP 验证`,noAccount:`没有账户?立即注册`,haveAccount:`已有账户?返回登录`,formatTipUsername:`用户名格式提示:仅限 5 到 32 位 Unix 用户名格式(小写字母或下划线开头,包含小写字母、数字、下划线及中划线)`,formatTipPassword:`密码格式提示:12-100位字符`,authFailed:`认证失败,请检查用户名或密码`,networkError:`网络错误,请稍后再试`,turnstileRequired:`请完成人机身份验证`,turnstileError:`验证服务加载失败,请检查 Site Key 或域名配置`,verifying:`正在进行安全验证...`,passwordLeaked:`您的密码已被泄露,为了您的账户安全,请使用随机密码/强密码。`,usernameExists:`该用户名已被注册,请尝试其他用户名。`,skip:`跳过`,showPassword:`显示密码`,hidePassword:`隐藏密码`,geolocationRequired:`地理信息获取失败,请重新进入。`,unauthorizedDefault:`您的登录会话已失效,请重新登录。`,unauthorizedGeo:`检测到地理位置变更(超出距离限制),当前会话已被强制注销。`,unauthorizedExpired:`您的登录已过期,请重新登录。`,unauthorizedReuse:`安全警报:检测到重复登录,会话已终止。`,unauthorizedRevoked:`您的会话已被注销或删除,请重新登录。`,sessionLockTitle:`空闲会话锁定`,sessionLockDesc:`当应用程序空闲时,使用 4 位数字 PIN 锁定界面,以防止未授权的物理访问来保护活动会话。`,enableSessionLock:`启用会话锁定`,inactivityTimeout:`空闲超时时间`,timeout1m:`1 分钟`,timeout2m:`2 分钟`,timeout5m:`5 分钟`,timeout15m:`15 分钟`,timeout30m:`30 分钟`,timeout60m:`60 分钟`,changePin:`修改 PIN 码`,disablePin:`禁用会话锁定`,configurePin:`配置 PIN 码`,newPin:`新 4 位 PIN 码`,pinHelper:`仅限数字,例如:1234`,confirmPin:`确认新 PIN 码`,verifyIdentity:`验证身份`,usePassword:`使用密码验证`,use2fa:`使用 TOTP 验证码`,totpCode:`TOTP 验证码`,currentPassword:`当前密码`,disablePinWarning:`禁用 PIN 码将彻底关闭空闲会话锁定功能。`,pinFormatTip:`PIN 码必须为 4 位数字`,pinMatchTip:`两次输入的 PIN 码不匹配`,passwordRequired:`需要输入密码以验证身份`,sessionLocked:`由于长时间未活动,会话已锁定`,sessionExpired:`尝试次数过多,会话已终结。`,pinIncorrect:`PIN 码错误`,attemptsRemaining:`还剩 {{count}} 次尝试机会`,logoutAndReturn:`登出会话`,lockNow:`立即锁定`,cfErrorWithDetails:`Cloudflare 边缘节点异常 (错误代码 {{code}}: {{desc}})。服务暂时不可用,请稍后重试。{{rayId}}`,cfErrorCodeOnly:`Cloudflare 边缘服务异常 (错误代码 {{code}})。服务暂时不可用,请稍后重试。{{rayId}}`,cfErrorGeneric:`Cloudflare 边缘服务异常,服务暂时不可用,请稍后重试。{{rayId}}`,htmlErrorGeneric:`服务器返回异常网页响应 (HTTP {{status}}),请稍后重试。`,tooManyAttempts:`请求过于频繁或尝试次数过多,已被临时限制,请稍后再试。`,dbQuotaExceeded:`数据库每日免费读取配额已用尽,请等待次日自动重置或升级配额。`,noUsersRegistered:`系统尚无账号,请注册成为管理员。`,registerAdminTitle:`注册管理员账号`,registerAdminDesc:`系统尚无账号,首位注册用户将自动成为系统管理员。`,goToRegisterAdmin:`注册管理员`,dbNotInitialized:`数据库未初始化或缺少数据表,请在终端执行 npm run db:migrate:prod 应用数据库迁移。`,verifyWithPasskey:`使用通行密钥验证`,orUseTotp:`或使用数字验证器`,passwordRequiredFirst:`请先输入密码`,passkeyVerification:`通行密钥验证`,passkeyPromptDesc:`使用已注册的设备生物识别或硬件安全密钥进行验证`,forgotPassword:`忘记密码?`,forgotPasswordTitle:`找回密码`,forgotPasswordDesc:`通过多因素认证(通行密钥或数字验证码)安全找回您的账号。`,noMfaContactAdmin:`该账号未配置任何多因素认证(Passkey 或 TOTP),无法自助找回密码。请联系系统管理员为您重置密码。`,chooseMfaForReset:`请选择一种认证方式以核验您的身份:`,authViaPasskey:`使用通行密钥验证`,authViaPasskeyDesc:`使用指纹、面容或硬件安全密钥一键完成验证`,authViaTotp:`使用数字验证器 (TOTP)`,authViaTotpDesc:`输入身份验证器应用生成的 6 位动态验证码`,authViaRecoveryKey:`使用紧急恢复密钥`,authViaRecoveryKeyDesc:`输入 10 位应急恢复密钥`,verifyAndProceed:`核验并继续`,setNewPassword:`设置新密码`,setNewPasswordDesc:`身份核验成功,请为您的账号设置一个新密码。`,newPassword:`新密码`,confirmNewPassword:`确认新密码`,passwordMismatch:`两次输入的新密码不一致`,saveAndReset:`保存并重置密码`,resetSuccessTitle:`密码重置成功`,resetSuccessDesc:`您的密码已更新,所有现有登录会话已注销。请使用新密码重新登录。`,goToLogin:`前往登录`,mfaSetupTitle:`增强账号安全`,mfaSetupDesc:`配置多因素认证 (MFA) 可有效保护您的账号,并解锁无密码快捷登录与密码自助找回功能。`,mfaRecommended:`推荐`,passkeySignupDesc:`使用指纹、面容或安全密钥,无需繁琐输入,兼顾极速体验与最高等级安全防护。`,bindPasskeyNow:`立即绑定通行密钥`,mfaUniversal:`通用`,totpSignupDesc:`使用 Google Authenticator、1Password 等身份验证器生成 6 位动态验证码。`,setupTotpBtn:`配置数字验证器`,skipMfaSetup:`暂不配置,直接完成`,backToMfaOptions:`返回选择其他方式`,otherOptions:`其他选项`,next:`下一步`,mfaVerification:`多因素认证`,totpPrompt:`请输入身份验证应用中的 6 位动态验证码`,recoveryPrompt:`请输入 30 位应急恢复密钥(5 组,每组 6 位数字)`,recoveryChecksumError:`校验码错误:该组 6 位数无法被 11 整除`,recoveryChecksumErrorDesc:`第 {{groups}} 组校验码错误,请核对后重试`,backToPasskey:`返回通行密钥验证`,recoveryKeyRequired:`请输入应急恢复密钥`,totpFormatError:`请输入有效的 6 位验证码`,registrationDisabledTitle:`注册已停用`,registrationDisabledDesc:`当前系统已暂停开放新用户注册,请联系系统管理员获取账号。`,backToLogin:`返回登录`,jwtSecretPreset:`检测到正在使用预设的 JWT_SECRET,请在环境变量中修改并替换为自定义安全密钥后重新部署。`,jwtSecretMissing:`缺少 JWT_SECRET,请在环境变量中配置安全密钥后重新部署。`,jwtSecretInvalid:`JWT_SECRET 密钥格式无效,请检查配置。`},i={title:`安装指南`,subtitle:`配置设备以使用 DNS Worker 主掌您的互联网安全。`,regionOptimization:`接入地区优化 (Windows)`,otherRegion:`其他地区`,copied:`已复制到剪贴板`,verifyConnection:`验证您的连接`,verifying:`正在验证...`,connected:`连接正常`,notConnected:`或未连接`,profileMatch:`您正通过此配置进行过滤。`,profileMismatch:`您正使用 Obex,但配置 ID 不匹配。`,verifyHint:`完成下方配置后,点击按钮验证。`,refreshStatus:`刷新状态`,egressIp:`出口 IP 地址`,currentLocation:`当前位置`,edgeServer:`边缘服务器`,dohUrlTitle:`当前配置 DoH URL`,accessPointTitle:`Access DoH URL`,defaultAccessPointName:`设备-1`,moreAccessPoints:`更多接入点 ↗`,accessPointName:`接入点名称`,accessPointToken:`访问密钥`,addAccessPoint:`新增接入点`,renameAccessPoint:`重命名`,rotateToken:`轮换密钥`,rotateTokenConfirmDesc:`轮换密钥将使所有使用旧密钥的设备立即断开连接。确定要继续吗?`,deleteAccessPoint:`删除`,deleteAccessPointConfirm:`确定要删除此接入点吗?`,manageAccessPoints:`管理接入点`,searchAccessPoints:`搜索接入点...`,accessPointNameExists:`接入点名称已存在`,accessPointCreated:`接入点创建成功`,accessPointRenamed:`接入点重命名成功`,accessPointDeleted:`接入点删除成功`,accessPointNameFormatTip:`接入点名称提示:1-30 位字符,只允许字母、数字、下划线和中划线`,accessPointLimitExceeded:`接入点数量已达上限(最多{{max}}个)`,tokenRotated:`访问密钥轮换成功`,whatIsDoh:`何为 DoH?`,dohDesc:`DNS over HTTPS (DoH) 是一种通过加密的 HTTPS 协议进行域名解析技术。`,dohBenefit1:`减少运营商等网络中间人的劫持与监听`,dohBenefit2:`提升域名解析及互联网访问安全性`,learnMore:`了解更多`,copyUrl:`复制 URL`,browsers:`浏览器`,browserTitle:`浏览器配置 (Chrome/Edge)`,browserSteps:`设置 > 隐私和安全 > 安全 > 使用安全 DNS > 自定义 > 粘贴 URL。`,browserTips:`或者将此网址复制到地址栏:`,apple:`Apple`,appleTitle:`macOS / iOS / iPadOS / tvOS`,appleDesc:`Apple 设备支持通过描述文件快速配置。`,appleWarning:`描述文件不可在 "锁定模式 (Lockdown Mode)" 下安装,安装前请确认系统不处于相关状态。`,downloadConfig:`下载描述文件`,appleInstallHint:`下载后请前往“设置”>“已下载的描述文件”进行安装`,windows:`MS Windows`,windowsTitle:`Windows 11 配置 [地区: {{region}}]`,windowsStep0:`设置 > 网络与互联网`,windowsStep1:`属性 > DNS 服务器 > 编辑 > 手动。`,windowsStep2:`选择并填入 DNS IP:`,windowsStep3:`启用 DoH (手动模板) 并粘贴 URL。`,windowsStep4:`关闭 回退到明文。`,android:`Android`,androidTitle:`Android 9+`,androidDesc:`支持系统原生“私有 DNS (DoT)”或使用第三方 App 配置 DoH。`,androidDotTitle:`私有 DNS (DoT - Serverfull 模式)`,androidDotDesc:`设置 > 网络和互联网 > 私有 DNS > 提供商主机名:`,androidWarning:`注:系统原生的“私有 DNS”使用 DoT 协议。若部署在 Cloudflare Workers,建议使用 Intra 等 App 配置 DoH;若运行在 Serverfull 模式并配置了 TLS 证书,可直接使用上述 DoT 主机名。`,dynamicFromDomain:`动态 (来自 "{{domain}}")`,dynamicFromDomainV6:`动态 IPv6 (来自 "{{domain}}")`,linux:`Linux`,linuxTitle:`Linux (Cloudflared DoH 代理)`,linuxDesc:`在本地运行轻量级 DNS 代理,通过 DoH 将解析请求加密转发至 Obex。`,linuxStep1:`运行以下脚本安装 cloudflared 并创建 systemd 服务(监听 127.0.0.1:53)。`,linuxStep2:`将系统 DNS 修改为 127.0.0.1。`,routeros:`MikroTik`,routerosTitle:`MikroTik RouterOS`,routerosDesc:`将其设置为路由器的 DoH 服务器,即可让网络中的所有设备使用此解析器。`,routerosStep1:`在 RouterOS 终端中运行(RouterOS 7):`,routerosNote:`经路由器转发的查询在日志中显示为路由器,而不是各个设备。如需按设备查看日志,请直接在设备上配置。`,routerosDocs:`MikroTik DNS 文档`,accessPointsCardTitle:`接入点`,currentAccessPoint:`当前接入点`,selectAccessPointToConfigure:`选择接入点以配置`},a={title:`自定义规则`,subtitle:`手动控制特定域名的解析行为(屏蔽、放行或重定向)。`,action:`动作`,typeBlock:`拦截 (BLOCK)`,typeAllow:`放行 (ALLOW)`,typeRedirect:`重定向 (REDIRECT)`,pattern:`域名模式 (Pattern)`,patternPlaceholder:`example.com 或 *.test.com`,addRule:`添加规则`,redirectSettings:`重定向记录设置`,aRecord:`A 记录 (IPv4)`,aaaaRecord:`AAAA 记录 (IPv6)`,cnameRecord:`CNAME 记录`,txtRecord:`TXT 记录`,optional:`(选填)`,ipv4Placeholder:`例如: 1.2.3.4`,ipv6Placeholder:`例如: 2001:db8::1`,cnamePlaceholder:`例如: target.com`,txtPlaceholder:`输入文本内容...`,saveRedirectRule:`保存并添加重定向规则`,noRulesTitle:`无自定义规则`,noRulesDesc:`您还没有添加任何手动规则。`,tableAction:`动作`,tablePattern:`模式`,tableDetails:`解析详情`,tableOps:`操作`,labelBlock:`拦截`,labelAllow:`放行`,labelRedirect:`重定向`,detailBlock:`解析至`,detailAllow:`转发至上游服务`,patternEmpty:`域名模式不能为空`,duplicatePattern:`该域名的规则已存在`,addSuccess:`规则添加成功`,addFailed:`添加规则失败`,updateSuccess:`规则更新成功`,updateFailed:`更新规则失败`,tableCreatedAt:`添加时间`,clickToSort:`点击排序`},o={customRange:`自定义时间范围`,startTime:`开始时间`,endTime:`结束时间`,apply:`应用`,custom:`自定义`,totalQueries:`总查询`,blocked:`已拦截`,redirected:`已重定向`,blockRate:`拦截率`,activeDevices:`活跃设备`,activeIPs:`活跃 IP 地址`,queryTrend:`查询趋势`,noRecords:`此时间段内暂无记录`,topAllowed:`常用域名 (Allowed)`,topBlocked:`拦截频率最高 (Blocked)`,noData:`暂无数据`,clientActivity:`客户端活跃度`,ipAddress:`IP 地址`,location:`归属地`,queries:`查询数`,destinationDistribution:`流量目的地分布`,requests:`请求`,topIsps:`主要运营商`,pressToShowMore:`按下显示更多`,maximize:`放大`,minimize:`缩小`},s={title:`查询日志`,subtitle:`查看本配置 DNS 解析日志和拦截记录。`,realtime:`实时`,allStatus:`全部状态`,onlyPass:`已放行`,onlyBlock:`已拦截`,onlyRedirect:`已重定向`,searchPlaceholder:`搜索域名...`,noResults:`未找到结果`,noRecords:`尚无记录`,noResultsDesc:`没有找到匹配 "{{query}}" 的域名记录。`,noRecordsDesc:`选定的时间范围内没有收到任何 DNS 查询。`,tableTime:`时间`,tableDomain:`域名`,tableAnswer:`解析结果`,tableSource:`来源`,tableType:`类型`,tableStatus:`状态`,tableReason:`原因`,loadedAll:`已加载全部 {{count}} 条记录`,realtimeLoadMoreTip:`关闭“实时”模式以加载更多`,filterAccessPoint:`接入点`,allAccessPoint:`全部接入点`,allCountry:`全部国家`,filterCountry:`目的地国家`,allIsp:`全部运营商`,filterIsp:`运营商`,timeRange:`时间范围`,clearFilters:`清除筛选`,details:`查询详情`,detailAccessPoint:`接入点`,basicInfo:`基础信息`,detailDomain:`域名`,detailType:`类型`,detailTime:`时间`,detailLatency:`耗时`,detailProfile:`所用配置`,detailStatus:`状态`,detailUpstream:`上游服务器`,detailReason:`原因`,detailNoReason:`无 (已放行)`,detailECS:`ECS`,resolutionResult:`解析结果`,noResult:`无结果`,networkDetails:`网络详情`,clientSource:`客户端 (源)`,destination:`目的地 (解析地址)`,quickActions:`快捷操作`,actionAllow:`放行`,actionBlock:`拦截`,actionRedirect:`重定向`,statusPass:`已放行`,statusBlock:`已拦截`,statusRedirect:`已重定向`,export:`导出日志`,rewritten:`已重写`,logDetails:`查询详情`,searchCountry:`搜索国家...`,noMatchingCountries:`未找到匹配国家`,searchIsp:`搜索运营商...`,noMatchingIsps:`未找到匹配运营商`,loadingIsps:`正在加载运营商...`,loggingDisabledTitle:`日志记录已关闭`,loggingDisabledDesc:`当前配置的日志留存已设置为“关闭”,系统不记录任何查询日志。如需查看,请在设置中启用日志留存。`},c={title:`外部拦截列表`,subtitle:`订阅第三方维护的域名屏蔽清单 (如 AdGuard 等)。`,formatDisclaimer:`本系统只支持有限的 AdGuard 格式列表和纯域名列表。仅支持基础的拦截规则(如 ||example.com^),会绕过 "@@" 白名单,暂不支持 "$" 重写规则以及 "*" 省略规则。系统会自动匹配域名的所有子域名。`,syncAll:`同步所有列表`,urlPlaceholder:`输入拦截列表 URL...`,addSubscription:`添加订阅`,supportedFormats:`支持的列表格式:`,formatAdGuard:`兼容 ||domain.com^ 等过滤规则。`,formatHosts:`兼容标准 hosts 文件 (例如 0.0.0.0 domain.com)。`,noListsTitle:`尚未添加列表`,noListsDesc:`您还没有订阅任何外部拦截列表。`,tableUrl:`列表 URL`,tableLastSync:`上次同步`,tableStatus:`状态`,tableOps:`操作`,neverSynced:`从未`,enabled:`正常`,disabled:`同步失败`,statusNormal:`正常`,statusDisabled:`已禁用`,statusOutdated:`过时`,statusMissing:`缺失`,presetOisdBig:`OISD Big (广告/恶意软件等拦截)`,presetOisdNsfw:`OISD NSFW (色情/震撼/成人内容拦截)`,presetAdGuard:`AdGuard AdServers (广告服务器)`,presetStevenBlack:`StevenBlack Hosts (综合拦截)`,syncTaskStarted:`开始同步任务`,syncCheckComplete:`同步检查完成`,syncTaskFailed:`同步失败`,syncing:`同步中...`,syncSuccess:`同步成功`,syncError:`同步失败`,syncErrorDesc:`无法下载或解析此拦截列表。请检查链接是否正确,并确保该链接可以正常访问。`,deleteConfirm:`确认删除订阅?`,deleteSuccess:`列表删除成功`,deleteError:`列表删除失败`,addSuccess:`列表添加成功`,addError:`列表添加失败`,listEnabled:`列表已启用`,listEnabledHint:`禁用后将停止使用此列表进行过滤,但不会删除该列表,其订阅和同步历史会保留。`,listEnabledToast:`已启用列表 - 正在重建过滤器`,listDisabledToast:`已禁用列表 - 正在重建过滤器`,checkDomain:`检查域名`,checkDomainHint:`列表以紧凑过滤器的形式存储,因此无法浏览其中的条目。你可以立即针对此列表测试任意域名。`,check:`检查`,checkBlocked:`已被此列表拦截`,checkNotBlocked:`未被此列表拦截`,checkViaParent:`(匹配到上级域名)`,checkNotSynced:`此列表尚未完成同步,因此暂无可供检查的内容。`,checkListDisabled:`此列表当前已禁用,因此现在不会过滤任何内容。`,checkProbabilisticRate:`过滤器基于概率:大约每 {{odds}} 次匹配中有 1 次为误判。添加例外规则也会覆盖其所有子域名。`,checkProbabilistic:`过滤器基于概率,因此少部分匹配属于误判。添加例外规则也会覆盖其所有子域名。`,checkAllowAction:`仍然允许`,checkAllowed:`已添加例外 - 该域名现在可以解析`,allowRuleAdded:`已为 {{domain}} 添加例外`},l={title:`配置设置`,subtitle:`管理您的 DNS 解析策略和高级选项。`,saveChanges:`保存所有更改`,saveSuccess:`设置已成功保存`,saveError:`保存设置失败,请稍后再试`,upstreamTitle:`上游服务`,dohUrl:`DoH URL`,dnsIP:`DNS IP`,classicDns:`经典 DNS`,httpsOnly:`仅支持 HTTPS`,upstreamDesc:`所有未被拦截的查询将由本应用转发至此服务器。支持 DoH (HTTPS)、DoT (tls://)、DNS Stamp (sdns://) 或经典 DNS。经典 DNS 通过 TCP 转发。`,defaultPolicyTitle:`默认过滤行为`,onNoMatch:`未匹配规则时`,allowAll:`允许所有查询`,blockAll:`拦截所有查询`,logRetentionTitle:`日志留存`,retentionDuration:`留存时长`,retentionDesc:`日志将自动清除。`,skipLogOnPass:`不记录放行记录`,skipLogOnPassDesc:`启用后不记录正常放行的 DNS 查询,仅记录被拦截、重定向或解析失败的记录。可大幅减少存储占用与写操作。`,ecsTitle:`EDNS 客户端子网 (ECS)`,ecsUpstreamHint:`并非所有上游 DNS 都支持 ECS。对于 ControlD 等递归解析器,ECS 仅影响其内部路由,不会传递给上游权威服务器。`,sendEcs:`呈递 ECS`,customSubnet:`自定义子网`,customIpv4:`自定义 IPv4 子网`,customIpv6:`自定义 IPv6 子网`,ipv4Hint:`(例如 1.2.3.0/24)`,ipv6Hint:`(例如 2001:db8::/32)`,testToolTitle:`实时解析测试工具`,testDomain:`测试域名`,recordType:`记录类型`,runTest:`运行测试`,domainPlaceholder:`例如 google.com`,hitRule:`命中规则 / 原因`,defaultAllow:`默认放行策略`,parseLatency:`解析耗时`,sourceIp:`源 IP 地址`,answerSection:`解析结果回显 (Answer Section)`,noRecordsReturned:`本次查询未返回任何记录。`,diagnostics:`诊断信息`,errorDetail:`错误详情`,upstreamResponse:`上游响应内容`,presetCloudflareSecurity:`Cloudflare Security (快速/去恶意域名/去钓鱼域名)`,presetCloudflareFamilies:`Cloudflare Families (快速/去恶意域名/去成人内容)`,presetQuad9:`Quad9 (去恶意域名/无日志/不呈递 ECS)`,presetQuad9Ecs:`Quad9 ECS (去恶意域名/无日志/呈递 ECS)`,presetControlDFree:`ControlD Free (去广告/去跟踪/去恶意域名/去钓鱼域名)`,presetControlDUncensored:`ControlD Uncensored (抗审查)`,presetAdGuard:`AdGuard (去广告/去跟踪)`,presetAdGuardFamily:`AdGuard Family protection (去广告/去跟踪/去成人内容/安全搜索)`,retention10m:`10 分钟`,retention1h:`1 小时`,retention24h:`24 小时`,retention7d:`7 天`,retention30d:`30 天`,retention90d:`90 天 (最长)`,blockModeTitle:`拦截响应模式`,blockModeDesc:`当域名被拦截时返回的内容`,default:`默认`,NXDOMAIN:`域名不存在`,NODATA:`空回答`,customIP:`自定义 IP`,export:`导出配置`,exportSuccess:`配置成功导出`,exportError:`配置导出失败,请稍后再试`,nameUpdateSuccess:`配置名称已更新`,saving:`正在保存...`,echTitle:`重写 ECH`,enableEch:`启用重写 ECH`,echDesc:`针对由 Cloudflare 代理的域名,当查询 HTTPS (Type 65) 或 SVCB (Type 64) 记录时,自动重写注入 ECH 参数与表层 SNI 以保护访问隐私。`,echFrontingTitle:`表层 SNI (ECH Fronting)`,echFrontingDesc:`TLS 握手外层可见的伪装域名`,echFrontingCustomPlaceholder:`输入自定义表层域名,例如 crypto.cloudflare.com`,echPreferred:`首选`,whatIsEch:`何为 ECH (Encrypted Client Hello)?`,echHelpDesc:`ECH (加密客户端问候) 是 TLS 1.3 的重要隐私扩展,它将 TLS 握手中的真实目标域名 (Inner SNI) 全程加密,仅向网络中间人暴露表层伪装域名 (Outer SNI / ECH Fronting)。`,echHelpBenefit1:`防止中间人及 ISP 窥探您正在访问的具体网页与子域名`,echHelpBenefit2:`配合 DoH 与自定义表层 SNI,消除明文 SNI 阻断与识别风险`,retentionDisabled:`关闭 (隐私需要)`,retentionDisabledDesc:`已关闭日志记录。系统将不会记录任何 DNS 查询日志并立即清空历史日志。`},u={title:`账号设置`,subtitle:`管理您的安全凭据和系统用户。`,jwtSecretWarningTitle:`安全提示:JWT 密钥强度较弱`,jwtSecretWarningDesc:`当前 JWT_SECRET 长度小于 32 位字符,存在潜在安全隐患。请先配置环境变量 KEK_v1 完成凭据信封加密迁移,然后再轮换 JWT_SECRET,以防止存量加密的 TOTP 或恢复密钥无法解密。`,roleAdmin:`系统管理员`,roleUser:`用户`,personalInfo:`个人信息`,username:`用户名`,userId:`用户 ID`,changePassword:`修改密码`,currentPassword:`当前密码`,newPassword:`新密码`,updatePassword:`更新密码`,userManagement:`用户管理 (管理员)`,createUser:`创建用户`,role:`角色`,createdAt:`创建时间`,lastActive:`最后活动时间`,lastResolve:`最后解析时间`,actions:`操作`,dangerZone:`危险区域`,clearLogs:`清空所有日志`,clearLogsDesc:`这将删除您名下所有 DNS 配置生成的查询日志。此操作不可恢复。`,clearLogsBtn:`立即清空日志`,deleteAccount:`注销账号`,deleteAccountDesc:`永久删除您的账号及所有关联数据。此操作将导致您失去所有解析配置。`,deleteAccountBtn:`注销并删除账号`,createNewUser:`创建新用户`,initialPassword:`初始密码`,userRole:`用户角色`,cancel:`取消`,createNow:`立即创建`,formatTipUsername:`用户名格式提示:仅限 5 至 32 位 Unix 用户名格式`,formatTipPassword:`密码格式提示:12-100位字符`,passwordSuccess:`密码修改成功`,updateFailed:`修改失败`,confirmDeleteUser:`确定要删除此用户吗?其拥有的所有配置也将被移除。`,confirmClearLogs:`确定要清空您名下所有配置的查询日志吗?此操作不可撤销。`,clearLogsSuccess:`日志已成功清空`,confirmDeleteAccount:`警告:确定要注销并删除本账号吗?
|
|
2
|
-
|
|
3
|
-
阁下所有 DNS 配置、自定义规则和查询日志将被永久删除。此操作不可逆!`,inactivityPolicy:`活跃度政策`,inactivityDesc:`为保护用户隐私并节省资源,超过 30 天无解析记录的账户,其所有关联查询日志及 DNS 配置将被自动清理。账户本身在 90 天无登录后将予移除。`,systemSettings:`系统设置 (管理员)`,adminOnlyView:`仅管理员可见`,featureToggle:`功能开关`,enableTurnstileSignup:`注册页面启用人机验证`,enableTurnstileLogin:`登录页面启用人机验证`,totp:{title:`数字验证器 (TOTP)`,enabled:`已启用`,disabled:`停用`,setupDesc:`为账号添加额外的安全层。使用 Google Authenticator、Authy 或任何 TOTP 兼容应用。`,setupBtn:`配置数字验证器`,scanQR:`使用验证器应用扫描此二维码:`,orEnterManually:`或手动输入密钥:`,enterCode:`请输入验证器代码进行确认:`,enterCodeHint:`输入 6 位验证码以确认密钥已正确录入。`,activate:`激活数字验证器`,skipPassword:`无密码登录 — 登录时只显示 TOTP 输入框(不显示密码)`,disable:`停用数字验证器`,disableTitle:`停用数字验证器`,disableWarning:`停用数字验证器后,若未配置通行密钥,账号将仅受密码保护。确定要停用吗?`,confirmDisable:`确认停用`,recoveryKeysTitle:`请保存您的恢复密钥`,recoveryKeysWarning:`请将恢复密钥妥善保存(如密码管理器)。每个密钥只能使用一次。`,copyKeys:`复制全部密钥`,copied:`已复制!`,done:`完成,我已保存密钥`,activeDesc:`数字验证器已启用,正在为您的账号提供 6 位动态验证码保护。`},sessions:{session:`会话`,title:`活跃会话`,device:`设备`,ip:`IP 地址`,loginTime:`登录时间`,expires:`过期时间`,action:`操作`,current:`当前会话`,revoke:`撤销`,revokeFailed:`撤销会话失败。`,empty:`未找到活跃会话。`,unknownDevice:`未知设备`,revokeOthers:`撤销其他会话`,confirmRevokeOthers:`撤销其他会话`,revokeOthersConfirmText:`确定要撤销所有其他活跃会话吗?除当前设备外,其他已登录设备将立即退出。`},activity:{title:`账号活动记录`,action:`事件`,time:`时间`,session:`会话`,ip:`IP 地址`,empty:`暂无活动记录。`,loadMore:`加载更多`,signup:`注册`,loginSuccess:`登录成功`,loginFail:`登录失败`,logout:`退出登录`,pwChangeSuccess:`密码已修改`,pwChangeFail:`密码修改失败`,totpVerifySuccess:`TOTP 验证通过`,totpVerifyFail:`TOTP 验证失败`,totpSetup:`配置数字验证器`,totpRemoved:`停用数字验证器`,recoveryKeyUsed:`使用了恢复密钥`,sessionRevoked:`会话已撤销`,reasons:{user_active:`主动登出`,user_revoke:`撤销会话`,expired:`会话已过期`,geolocation_mismatch:`异地访问限制`,geolocation_missing:`缺少地理位置信息`,token_reuse:`凭证重复使用(安全警告)`},passkeyRegistered:`添加通行密钥`,passkeyDeleted:`删除通行密钥`,passkeyVerifySuccess:`通行密钥验证通过`,passkeyVerifyFail:`通行密钥验证失败`,recoveryKeyRotated:`应急恢复密钥已轮换`},passkey:{title:`通行密钥 (Passkey)`,addBtn:`添加通行密钥`,desc:`使用生物识别(Touch ID / Face ID / Windows Hello)或硬件安全密钥(YubiKey)进行快捷且防钓鱼的多因素认证。`,empty:`尚未添加任何通行密钥。`,addTitle:`添加通行密钥`,nameLabel:`通行密钥名称`,namePlaceholder:`例如:my_passkey`,promptNotice:`点击继续后,浏览器将弹出系统提示,引导您完成生物识别或硬件安全密钥录入。`,continue:`继续`,renameTitle:`重命名通行密钥`,deleteTitle:`删除通行密钥`,deleteConfirm:`确定要删除通行密钥 "{{name}}" 吗?删除后将无法使用该通行密钥进行多因素认证。`,defaultName:`通行密钥`,notSupported:`您的浏览器或当前环境不支持通行密钥 (WebAuthn)。`,regFailed:`通行密钥注册失败`,count:`{{count}} 个已配置`,none:`未配置`,created:`添加时间`,lastUsed:`最后使用`,neverUsed:`从未在登录中使用`,updated:`通行密钥更新成功`,registered:`通行密钥添加成功`,deleted:`通行密钥已删除`,appNameLabel:`域名`,appNameHelper:`通行密钥将绑定至此域名`,formatTip:`通行密钥名称提示:1-30 位字符,只允许字母、数字、下划线和中划线`,verifyPrompt:`请使用设备的生物识别(人脸、指纹、Windows Hello)或安全密钥进行身份验证。`,changePwNotice:`提交修改时将调用通行密钥 (Passkey) 生物识别或硬件密钥核验身份。`,submitNotice:`提交时将调用通行密钥 (Passkey) 生物识别或硬件密钥核验身份。`},mfaNone:`无`,resetUserPassword:`重置密码`,resetPasswordTitle:`重置用户密码`,resetPasswordWarning:`重置后,该用户的所有现有会话将立即注销,用户需使用新密码重新登录。`,resetPasswordSuccess:`密码已成功重置,用户旧登录会话已注销。`,confirmReset:`确认重置`,mfa:{title:`多因素认证 (MFA)`,enabled:`已配置`,notConfigured:`未配置`,desc:`通行密钥 (Passkey) 与数字验证器 (TOTP) 均可作为多因素认证方式,配置任选其一即可保障账号安全并支持无密码登录与密码重置。`,passwordlessTitle:`无密码登录 (Passwordless Login)`,passwordlessDesc:`启用后,登录时无需输入密码,直接通过通行密钥 (Passkey) 或数字验证码 (TOTP) 完成身份核验。`,unconfiguredHint:`当前账号尚未配置任何多因素认证。配置通行密钥或数字验证器后,可启用无密码快捷登录并在忘记密码时安全找回账号。`},recoveryKey:{title:`应急恢复密钥`,desc:`应急恢复密钥用于在丢失所有通行密钥或数字验证器时重新登录账户或重置密码。恢复密钥受 KEK 信封加密保护。`,configured:`已配置`,notConfigured:`未配置`,kekProtected:`KEK 加密保护`,kekTooltip:`该恢复密钥在数据库中受根密钥 (KEK) 与数据密钥 (DEK) 双层信封加密保护。`,viewBtn:`查看恢复密钥`,rotateBtn:`轮换密钥`,yourKey:`您的 30 位应急恢复密钥`,securityTip:`请妥善保管此恢复密钥。拥有此密钥者可以重获您的账户访问权限。`,rotateConfirm:`轮换恢复密钥将使旧密钥立即失效。确定继续吗?`,confirmRotateBtn:`确认轮换`,viewVerifyTitle:`验证身份以查看恢复密钥`,rotateVerifyTitle:`验证身份以轮换恢复密钥`,rotateSuccess:`恢复密钥轮换成功!请立即妥善备份并保存新密钥。`,legacyNotice:`您的恢复密钥以旧版单向哈希格式存储,无法直接解密明文展示。请点击“轮换密钥”重新生成。`},verifyIdentity:`安全身份核验`,verifyIdentityDesc:`为了保护您的账户安全,执行此敏感操作前请先验证您的身份。`,usePasskeyInstead:`使用通行密钥验证`,changePasswordWithPasskey:`使用通行密钥核验并修改密码`,enableRegistration:`开放新用户注册`},d={item1Title:`Obex 保护性 DNS`,item1Desc:`基于 Cloudflare Workers & D1 的 DNS 解析器,尽力提高速度与安全。`,item2Title:`DoH 隐私保护`,item2Desc:`通过 DNS over HTTPS (RFC 8484) 加密隧道防止劫持并增强隐私。`,item3Title:`全球边缘网络`,item3Desc:`依托 Cloudflare 庞大的边缘网络,获得极速解析与极低延迟体验。`,item4Title:`精细化过滤`,item4Desc:`全面支持黑白名单、AdGuard 规则以及自定义 DNS 记录重定向。`,item5Title:`实时统计分析`,item5Desc:`通过详细的查询日志和综合统计仪表盘,直观展现网络健康状况。`,item6Title:`现代 UI 与暗黑模式`,item6Desc:`为工程师和家庭用户设计的高密度管理面板,基于由 Palantir 开发的 Blueprint UI。`,item7Title:`云原生基础架构`,item7Desc:`无服务器架构确保零维护和私人 DNS 的无限扩展性。`,item8Title:`多配置管理`,item8Desc:`为不同设备或网络环境创建并管理多个独立配置。`,item9Title:`多接入点管理`,item9Desc:`为不同设备配置专属的 DNS 接入点,实现日志和统计数据的精细化隔离与分析。`},f={title:`DNS Worker 部署与配置指南`,subtitle:`您的系统实例尚未完全配置。请按照以下步骤完成部署以启用 DNS Worker。`,dbStatus:`D1 数据库绑定 (env.DB)`,jwtStatus:`JWT 密钥 Secrets (env.JWT_SECRET)`,configured:`已配置`,missing:`缺失 / 未配置`,refresh:`重新检测并刷新`,methodCli:`CLI 命令行部署`,methodDash:`Cloudflare 控制台部署`,copy:`复制`,copied:`已复制!`,stepDbTitle:`1. 创建与绑定 D1 数据库`,stepDbDesc:`在 Cloudflare 中创建 D1 数据库实例,在终端运行以下命令:`,stepDbCommand1:`wrangler d1 create dns_worker_db`,stepDbDesc2:`复制终端输出的配置信息,并粘贴到项目根目录的 wrangler.toml 里的 [[d1_databases]] 中:`,stepDbCommand2:`[[d1_databases]]
|
|
4
|
-
binding = "DB"
|
|
5
|
-
database_name = "dns_worker_db"
|
|
6
|
-
database_id = "<您的_D1_DATABASE_ID>"
|
|
7
|
-
migrations_dir = "migrations"`,stepDbDashDesc:`1. 登录 Cloudflare 网页控制台 -> Workers & Pages -> D1 -> 创建数据库 -> 命名为 'dns_worker_db'。
|
|
8
|
-
2. 进入您的 Worker -> 设置 -> 变量 -> D1 数据库绑定 -> 添加绑定。
|
|
9
|
-
3. 将绑定名称设置为 'DB',D1 数据库选择 'dns_worker_db',并保存。
|
|
10
|
-
4. 进入您的 D1 数据库 -> 控制台,复制并运行 migrations 目录下的 SQL 迁移脚本以初始化数据库表结构。`,stepJwtTitle:`2. 设置 JWT 密钥 Secrets`,stepJwtDesc:`系统使用 JWT 密钥签署会话令牌,请将其设置为 Cloudflare Secrets 密钥:`,stepJwtCommand1:`wrangler secret put JWT_SECRET`,stepJwtDashDesc:`1. 进入您的 Worker -> 设置 -> 变量 -> 环境变量 -> 添加变量。
|
|
11
|
-
2. 设置名称为 'JWT_SECRET',选择类型为 '机密 (Secret)',并在值中输入一个随机安全字符串(例如 64 位十六进制字符)。
|
|
12
|
-
3. 点击保存并部署。`,stepJwtDesc2:`Cloudflare 网页控制台`,stepJwtCommand2:`https://dash.cloudflare.com/`,stepDeployTitle:`3. 部署并应用迁移`,stepDeployDesc:`执行项目部署命令。该命令会自动编译 frontend 静态资源,执行 D1 数据库迁移结构,并发布至 Cloudflare 远程端:`,stepDeployCommand:`npm run deploy`,stepDeployDashDesc:`如果您已通过 Cloudflare 网页控制台完成了所有绑定配置,请进入您的 Worker 控制面板的 Deployments (部署) 选项卡下,点击“部署”按钮进行发布上线。`,jwtGeneratorTitle:`安全 JWT_SECRET 生成器`,jwtGeneratorDesc:`使用此加密安全的随机数生成器生成 64 位字符的随机字母数字组合,用于 env.JWT_SECRET。`,regenerate:`重新生成`};var p={common:e,nav:t,theme:n,auth:r,setup:i,rules:a,analytics:o,logs:s,filtering:c,settings:l,account:u,intro:d,deploymentGuide:f};export{u as account,o as analytics,r as auth,e as common,p as default,f as deploymentGuide,c as filtering,d as intro,s as logs,t as nav,a as rules,l as settings,i as setup,n as theme};
|