@tubular/time
Version:
Date/time, IANA timezones, leap seconds, TAI/UTC conversions, calendar with settable Julian/Gregorian switchover
110 lines • 652 kB
JavaScript
import{floor as M,div_rd as c,div_tt0 as z,mod as b,mod2 as o,round as e,abs as A,min as p,ceil as a,max as O}from"@tubular/math";import{toNumber as i,convertDigitsToAscii as n,isNumber as t,isArray as r,isObject as q,isString as d,padLeft as s,last as L,isEqual as W,clone as l,compareStrings as u,forEach as N,flatten as f,isBoolean as T}from"@tubular/util"
;const B=-271820,m=275759,X=6e4,R=36e5,h=864e5,S=86400,E=1440,g=2440587.5,C=32.184/S,D=2400000.5,y=["BC","AD","Before Christ","Anno Domini"],k=["January","February","March","April","May","June","July","August","September","October","November","December"],w=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],P=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],I=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],_=["Su","Mo","Tu","We","Th","Fr","Sa"];let U;let G
;const F=[["y","year"],["q","quarter"],["m","month"],["d","day"],["dow","dayOfWeek"],["dowmi","dayOfWeekMonthIndex"],["dy","dayOfYear"],["n","epochDay"],["j","isJulian"],["yw","yearByWeek"],["w","week"],["dw","dayByWeek"],["ywl","yearByWeekLocale"],["wl","weekLocale"],["dwl","dayByWeekLocale"],["hrs","hour"],["min","minute"],["sec","second"]],j=["y","q","m","d","dow","dowmi","dy","n","j","year","quarter","month","day","dayOfWeek","dayOfWeekMonthIndex","dayOfYear","epochDay","isJulian","yw","w","dw","yearByWeek","week","dayByWeek","ywl","wl","dwl","yearByWeekLocale","weekLocale","dayByWeekLocale","hrs","min","sec","hour","minute","second","millis","utcOffset","dstOffset","occurrence","deltaTai","jde","mjde","jdu","mjdu","error"]
;function v(M){for(const[c,z]of F)M.hasOwnProperty(c)?M[z]=M[c]:M.hasOwnProperty(z)&&(M[c]=M[z]);return M}function H(M,c=!1){for(const[z,b]of F)delete M[c?z:b];return M}const K=new Set(["y","year","m","month","d","day","hrs","hour","min","minute","sec","second","millis"]);const V=new Error("Invalid ISO date/time");function x(c,z=!1){let b;c=c.trim();let o=/^([-+]?\d+)-(\d{1,2}(?=\D|$))(?:-(\d{1,2}))?/.exec(c);if(o||(o=/^([-+]?\d{1,5}(?=[^-+:.Ww\d]|$))/.exec(c))||(o=/^([-+]?\d{4,})(\d\d)(\d\d)/.exec(c))?b={
y:i(o[1]),m:Number(o[2]??1),d:Number(o[3]??1)}:(o=/^([-+]?\d+)-(W)(\d+)(?:-(\d))?/i.exec(c))||(o=/^([-+]?\d{4,})(W)(\d\d)(\d)?/i.exec(c))?b="W"===o[2]?{yw:i(o[1]),w:Number(o[3]),dw:Number(o[4]??1)}:{ywl:i(o[1]),wl:Number(o[3]),dwl:Number(o[4]??1)}:(o=/^(\d+)-(\d+)/.exec(c))||(o=/^(\d{4})(\d{3})/.exec(c))?b={y:i(o[1]),dy:Number(o[2])}:(o=[""],b={}),
(c=c.substr(o[0].length).trim().replace(/^T\s*/i,""))?((o=/^(\d{1,2})(?::(\d{1,2}))(?::(?:(\d{1,2})(?:[.,](\d+))?))?(?=\D|$)/.exec(c))||(o=/^(\d\d)(?:(\d\d)(?:(\d\d)(?:[.,](\d+))?)?)?(?=\D|$)/.exec(c)))&&(Object.assign(b,{hrs:Number(o[1]),min:Number(o[2]??0),sec:Number(o[3]??0),millis:Number((o[4]??"0").padEnd(3,"0").substr(0,3))}),null==o[4]&&0===b.millis&&delete b.millis,c=c.substr(o[0].length).trim()):Object.assign(b,{hrs:0,min:0,sec:0}),o=/^([-+]\d\d(\d{4}|\d\d|:\d\d(:\d\d)?)?)$/i.exec(c),
o)b.utcOffset=Y(o[1]);else if(c)throw V;const e=b.y??b.yw??b.ywl??0,A=b.m??1,p=b.w??b.wl??1,a=b.d??1;if(e<B||e>m)throw new Error(`Invalid year: ${e}`);if(A>13)throw new Error(`Invalid month: ${A}`);if(p>53)throw new Error(`Invalid week: ${p}`);if(a>32)throw new Error(`Invalid day of month: ${a}`);if(b.hrs>23)throw new Error(`Invalid hour: ${b.hrs}`);if(b.min>59)throw new Error(`Invalid minute: ${b.min}`);if(b.sec>+z+59)throw new Error(`Invalid second: ${b.sec}`)
;if(b.utcOffset&&(b.utcOffset<-57600||b.utcOffset>57600))throw new Error(`Invalid UTC offset: ${o[1]}`);return null!=b.m&&(b.q=M((b.m-1)/3)+1),v(b)}function Y(M,c=!1){let z=1;M.startsWith("-")?(z=-1,M=M.substr(1)):M.startsWith("+")&&(M=M.substr(1));const b=M.includes(":")?M.split(":"):M.match(/../g)??["0"];let o=60*(60*Number(b[0])+Number(b[1]??0));if(b[2]){const M=Number(b[2]);o+=c?M<30?0:60:M}return z*o}function J(M,c,z){const b=M instanceof Intl.DateTimeFormat?M.formatToParts(c):M;z=z??c
;const o=b.find(M=>M.type===z);return o?o.value:"???"}function Q(M,c,z){return i(n(J(M,c,z)))}var Z;!function(M){M[M.PURE_GREGORIAN=0]="PURE_GREGORIAN",M[M.PURE_JULIAN=1]="PURE_JULIAN"}(Z||(Z={}));const $=300,MM=3900,cM=0,zM=1,bM=2,oM=3,eM=4,AM=5,pM=6;var aM,OM;!function(M){M[M.SUNDAY=0]="SUNDAY",M[M.MONDAY=1]="MONDAY",M[M.TUESDAY=2]="TUESDAY",M[M.WEDNESDAY=3]="WEDNESDAY",M[M.THURSDAY=4]="THURSDAY",M[M.FRIDAY=5]="FRIDAY",M[M.SATURDAY=6]="SATURDAY"}(aM||(aM={})),function(M){M[M.JANUARY=1]="JANUARY",
M[M.FEBRUARY=2]="FEBRUARY",M[M.MARCH=3]="MARCH",M[M.APRIL=4]="APRIL",M[M.MAY=5]="MAY",M[M.JUNE=6]="JUNE",M[M.JULY=7]="JULY",M[M.AUGUST=8]="AUGUST",M[M.SEPTEMBER=9]="SEPTEMBER",M[M.OCTOBER=10]="OCTOBER",M[M.NOVEMBER=11]="NOVEMBER",M[M.DECEMBER=12]="DECEMBER"}(OM||(OM={}));const iM=6,nM=-9999999,tM=9999999,rM=-141427;const qM=new Error("This DateTime instance is locked and immutable");function dM(M,c,z,b,o=!1){let e,A,p,a;if(t(M))p=M;else{if(r(M)&&M.length>=3&&t(M[0]))return M;r(M)?(p=M[0],
c=M[1]):q(M)&&(v(M),e=M.n,A=o?void 0:M.j,p=M.y,a=M.dy,c=M.m,z=M.d)}if(null==p){if(null!=e){if("g"===b||!1===A)return dM(yM(e));if("j"===b||!0===A)return dM(kM(e));if(b){++b.computeWeekValues;const M=dM(b.getDateFromDayNumber(e));return--b.computeWeekValues,M}return dM(DM(e))}throw new Error("Calendar: Invalid date arguments")}return null==c&&null==z&&null!=a?dM("g"===b||!1===A?yM(WM(p,1,0)+a):"j"===b||!0===A?kM(lM(p,1,0)+a):DM(LM(p,1,0)+a)):[p,c=c??1,z=z??1,null==A?-1:+A]}function sM(M,c,z){let b,o
;return[b,c,z,o]=dM(M,c,z),1===o||b<1582||1582===b&&(c<10||10===c&&z<15)}function LM(M,c,z){let b,o;for([b,c,z,o]=dM(M,c,z);c<1;)c+=12,--b;for(;c>12;)c-=12,++b;return 1===o||0!==o&&sM(b,c,z)?lM(b,c,z):WM(b,c,z)}function WM(M,b,o){let e;for([e,b,o]=dM(M,b,o,"g");b<1;)b+=12,--e;for(;b>12;)b-=12,++e;return 367*e-c(7*(e+z(b+9,12)),4)-z(3*(z(e+z(b-9,7),100)+1),4)+z(275*b,9)+o-719559}function lM(M,b,o){let e;for([e,b,o]=dM(M,b,o,"j");b<1;)b+=12,--e;for(;b>12;)b-=12,++e
;return 367*e-c(7*(e+z(b+9,12)),4)+z(275*b,9)+o-719561}function uM(M,c){return 1}function NM(M,c){return 9===c||4===c||6===c||11===c?30:2!==c?31:M%4==0&&(M<1583||M%100!=0||M%400==0)?29:28}function fM(M,c){return 9===c||4===c||6===c||11===c?30:2!==c?31:M%4!=0||M%100==0&&M%400!=0?28:29}function TM(M,c){return 9===c||4===c||6===c||11===c?30:2!==c?31:M%4==0?29:28}function BM(M,c){return 1582===M&&10===c?21:9===c||4===c||6===c||11===c?30:2!==c?31:LM(M,3,1)-LM(M,2,1)}function mM(M){return LM(M+1,1,1)-LM(M,1,1)}
function XM(M){return b(M+4,7)}function RM(M,c,z){return t(M)&&null==c?b(M+4,7):XM(LM(M,c,z))}function hM(M,c,z,o){const e=o>=6;let A=LM(M,c,1);const p=XM(A);let a,O=0;if(p===z&&1===o)return 1;for(A+=b(z-p,7),a=DM(A);a.m===c;){if(O=a.d,0===--o)return O;A+=7,a=DM(A)}return e?O:0}function SM(M,c,b){const o=LM(M,c,hM(M,c,b,1)),e=LM(M,c+1,1);return z(e-o-1,7)+1}function EM(M,c,z,o){const e=LM(M,c,o),A=XM(e),p=b(z-A,7);if(1582===M&&10===c){const z=DM(e+p);o=z.y!==M||z.m!==c?0:z.d}else(o+=p)>NM(M,c)&&(o=0)
;return o}function gM(M,c,z,o){const e=LM(M,c,o),A=XM(e),p=b(A-z,7);if(1582===M&&10===c){const z=DM(e-p);o=z.y!==M||z.m!==c?0:z.d}else(o-=p)<0&&(o=0);return o}function CM(M,c,z,b){return DM(LM(c,z,b)+M)}function DM(M){return M>=rM?yM(M):kM(M)}function yM(M){let c,z,b,o,e;for(c=Math.floor((M+719528)/365.2425);M<WM(c,1,1);)--c;for(;M>=WM(c+1,1,1);)++c;for(b=o=M-WM(c,1,1)+1,z=1;b>(e=fM(c,z));++z)b-=e;return v({y:c,m:z,d:b,dy:o,n:M,j:!1})}for(let M=-207084;M<=205084;++M)kM(M);function kM(M){let c,z,b,o
;for(c=Math.floor((M+719530)/365.25),b=M-lM(c,1,1)+1,z=1;b>(o=TM(c,z));++z)b-=o;return v({y:c,m:z,d:b,n:M,j:!0})}function wM(M,c,z,b,o,e,A){return(A=A||0)+1e3*(e=e||0)+o*X+b*R+LM(M,c,z)*h}function PM(M){const z=DM(c(M,h));return z.millis=b(M,1e3),M=c(M,1e3),z.sec=b(M,60),M=c(M,60),z.min=b(M,60),M=c(M,60),z.hrs=b(M,24),z.utcOffset=0,z.dstOffset=0,z.occurrence=1,v(z)}function IM(M,c,z){const[b,o,e,A]=dM(M,c,z);let p;const a=LM({y:b,m:o,d:e,j:A<0?null:!!A});return p=A<0?DM(a):0===A?yM(a):kM(a),
b===p.y&&o===p.m&&e===p.d}function _M(M,c,z){let b;[b,c,z]=dM(M,c,z,"g");const o=yM(WM(b,c,z));return b===o.y&&c===o.m&&z===o.d}function UM(M,c,z){let b;[b,c,z]=dM(M,c,z,"j");const o=kM(lM(b,c,z));return b===o.y&&c===o.m&&z===o.d}function GM(M,c,z){let b;[b,c,z]=dM(M,c,z);return(b<0?"-":"")+s(Math.abs(b),4,"0")+"-"+s(c,2,"0")+"-"+s(z,2,"0")}function FM(M){let c=1;(M=M.trim()).startsWith("-")&&(c=-1,M=M.substring(1).trim());let z=/^(\d+)-(\d{1,2}(?=\D))(?:-(\d+))?$/.exec(M);if(z||(z=/^(\d{1,5})$/.exec(M)),
z||(z=/^(\d{4,})(\d\d)(\d\d)$/.exec(M)),!z)throw new Error("Invalid ISO date");return v({y:Number(z[1])*c,m:Number(z[2]??1),d:Number(z[3]??1)})}class jM{constructor(M,c,z){this.gcYear=1582,this.gcMonth=10,this.gcDate=15,this.firstGregorianDay=rM,this.firstDateInGCChangeMonth=1,this.lengthOfGCChangeMonth=21,this.lastJulianYear=Number.MIN_SAFE_INTEGER,this.lastJulianMonth=Number.MIN_SAFE_INTEGER,this.lastJulianDate=4,this._locked=!1,this.lock=()=>this._lock(),this.computeWeekValues=0,
M===Z.PURE_GREGORIAN?this.setGregorianChange(nM,0,0):M===Z.PURE_JULIAN?this.setGregorianChange(tM,0,0):0===arguments.length||null==M?this.setGregorianChange(1582,10,15):this.setGregorianChange(M,c,z)}_lock(M=!0){return this._locked=this._locked||M,this}get locked(){return this._locked}setPureGregorian(M){if(this.locked)throw qM;return M?this.setGregorianChange(nM,0,0):this.setGregorianChange(1582,10,15),this}isPureGregorian(){return this.gcYear<=nM}setPureJulian(M){if(this.locked)throw qM
;return M?this.setGregorianChange(tM,0,0):this.setGregorianChange(1582,10,15),this}isPureJulian(){return this.gcYear>=tM}setGregorianChange(M,c,z){if(this.locked)throw qM;if("g"===M||"G"===M)return this.setPureGregorian(!0),this;if("j"===M||"J"===M)return this.setPureJulian(!0),this;if(d(M))M=FM(M);else if(q(M)&&!r(M)&&(null==M.y||null==M.m||null==M.d||M.j))throw new Error("Gregorian change date must be an explicit non-Julian y-m-d date");let b;if([b,c,z]=dM(M,c,z,this),b<300){
if((0!==c||0!==z)&&b>nM)throw new Error("Calendar: Gregorian change year cannot be less than 300");this.firstGregorianDay=Number.MIN_SAFE_INTEGER,this.gcYear=nM}else if(b>MM){if((0!==c||0!==z)&&b<tM)throw new Error("Calendar: Gregorian change year cannot be greater than "+MM);this.firstGregorianDay=Number.MAX_SAFE_INTEGER,this.gcYear=tM}else if(!_M(b,c,z))throw new Error("Calendar: Invalid Gregorian date: "+GM(b,c,z));this.gcYear=b,this.gcMonth=c,this.gcDate=z,this.firstGregorianDay=WM(b,c,z)
;const o=kM(this.firstGregorianDay-1);return this.lastJulianDate=o.d,this.lengthOfGCChangeMonth=fM(b,c),o.y===b&&o.m===c?(this.lastJulianYear=Number.MIN_SAFE_INTEGER,this.lastJulianMonth=Number.MIN_SAFE_INTEGER,this.firstDateInGCChangeMonth=1,this.lengthOfGCChangeMonth-=z-this.lastJulianDate-1):(this.lastJulianYear=o.y,this.lastJulianMonth=o.m,this.firstDateInGCChangeMonth=z,this.lengthOfGCChangeMonth-=z-1),this}getGregorianChange(){return v({y:this.gcYear,m:this.gcMonth,d:this.gcDate,
n:this.firstGregorianDay,j:!1})}isJulianCalendarDate(M,c,z){let b,o;return[b,c,z,o]=dM(M,c,z,this),1===o||b<this.gcYear||b===this.gcYear&&(c<this.gcMonth||c===this.gcMonth&&z<this.gcDate)}getDayNumber(M,c,z){if(q(M)&&!r(M))if(v(M),null!=M.y||null==M.yw&&null==M.ywl)null!=M.y&&null==M.m&&null!=M.dy&&(M=this.addDaysToDate(M.dy-1,{y:M.y,m:1,d:1}));else{const b=null!=M.ywl,o=M.ywl??M.yw,e=b&&null!=c?c:1,A=b&&null!=z?z:4,p=(b?M.wl:M.w)??1,a=(b?M.dwl:M.dw)??1;++this.computeWeekValues
;const O=this.getStartDateOfFirstWeekOfYear(o,e,A).n+7*(p-1)+a-1;M=this.getDateFromDayNumber(O),--this.computeWeekValues}let b,o;for([b,c,z,o]=dM(M,c,z,this);c<1;)c+=12,--b;for(;c>12;)c-=12,++b;return o<0&&(b===this.lastJulianYear&&c===this.lastJulianMonth?z>this.lastJulianDate&&(z=this.lastJulianDate+1):b===this.gcYear&&c===this.gcMonth&&(z>this.lastJulianDate||this.lastJulianMonth!==this.gcMonth&&this.lastJulianMonth>0)&&z<this.gcDate&&(z=this.gcDate)),
1===o||0!==o&&this.isJulianCalendarDate(b,c,z)?lM(b,c,z):WM(b,c,z)}getDateFromDayNumber(M,c,z){let b;return b=M>=this.firstGregorianDay?yM(M):kM(M),0===this.computeWeekValues&&([b.yw,b.w,b.dw]=this.getYearWeekAndWeekday(b,c,z)),v(b)}getFirstDateInMonth(M,c){return M===this.gcYear&&c===this.gcMonth?this.firstDateInGCChangeMonth:1}getLastDateInMonth(M,c){return 0===c?(c=12,--M):13===c&&(c=1,++M),
M===this.lastJulianYear&&c===this.lastJulianMonth?this.lastJulianDate:9===c||4===c||6===c||11===c?30:2!==c?31:M%4==0&&(M<this.gcYear||M===this.gcYear&&this.gcMonth>2||M%100!=0||M%400==0)?29:28}getDaysInMonth(M,c){return 0===c?(c=12,--M):13===c&&(c=1,++M),M===this.gcYear&&c===this.gcMonth?this.lengthOfGCChangeMonth:M===this.lastJulianYear&&c===this.lastJulianMonth?this.lastJulianDate:9===c||4===c||6===c||11===c?30:2!==c?31:this.getDayNumber(M,3,1)-this.getDayNumber(M,2,1)}getDaysInYear(M){
return this.getDayNumber(M+1,1,1)-this.getDayNumber(M,1,1)}getDayOfWeek(M,c,z){return t(M)&&null==c?XM(M):XM(this.getDayNumber(M,c,z))}getDateOfNthWeekdayOfMonth(M,c,z,o){const e=o>=6;let A=this.getDayNumber(M,c,1);const p=XM(A);let a,O=0;if(p===z&&1===o)return 1;for(A+=b(z-p,7),a=this.getDateFromDayNumber(A);a.m===c;){if(O=a.d,0===--o)return O;A+=7,a=this.getDateFromDayNumber(A)}return e?O:0}getDayOfWeekInMonthCount(M,c,b){
const o=this.getDayNumber(M,c,this.getDateOfNthWeekdayOfMonth(M,c,b,1)),e=this.getDayNumber(M,c+1,1);return z(e-o-1,7)+1}getDayOfWeekInMonthIndex(M,z,b){let o;[o,z,b]=dM(M,z,b,this);const e=this.getDayNumber(o,z,1),A=this.getDayNumber(o,z,b);return c(A-e,7)+1}getDayOnOrAfter(M,c,z,o){const e=this.getDayNumber(M,c,o),A=XM(e),p=b(z-A,7);if(M===this.gcYear&&c===this.gcMonth){const z=this.getDateFromDayNumber(e+p);o=z.y!==M||z.m!==c?0:z.d}else(o+=p)>this.getLastDateInMonth(M,c)&&(o=0);return o}
getDayOnOrBefore(M,c,z,o){const e=this.getDayNumber(M,c,o),A=XM(e),p=b(A-z,7);if(M===this.gcYear&&c===this.gcMonth){const z=this.getDateFromDayNumber(e-p);o=z.y!==M||z.m!==c?0:z.d}else(o-=p)<0&&(o=0);return o}addDaysToDate(M,c,z,b){return this.getDateFromDayNumber(this.getDayNumber(c,z,b)+M)}getCalendarMonth(M,c,z=0){const o=[];let e,A,p,a=this.getDayNumber(M,c,this.getFirstDateInMonth(M,c));e=b(z-XM(a),-7),a+=e,A=this.getDateFromDayNumber(a,z);do{o.push(A),++a,++e,A=this.getDateFromDayNumber(a),p=A.m
}while(e<1||p===c||XM(a)!==z);return o}isValidDate(M,c,z){let b;[b,c,z]=dM(M,c,z,this,!0);const o=this.getDateFromDayNumber(this.getDayNumber(b,c,z));return b===o.y&&c===o.m&&z===o.d}normalizeDate(M,c,z){let b;if([b,c,z]=dM(M,c,z,this,!0),c<1?(c+=12,b-=1):c>12&&(c-=12,b+=1),!this.isValidDate(b,c,z)){let M;if(z<(M=this.getFirstDateInMonth(b,c)))z=M;else if(z>(M=this.getLastDateInMonth(b,c)))z=M;else{const M=this.getMissingDateRange(b,c);null!=M&&(z=M[1]+1)}}return v({y:b,m:c,d:z})}getMissingDateRange(M,c){
if(M===this.lastJulianYear&&c===this.lastJulianMonth){const z=TM(M,c);if(z>this.lastJulianDate)return[this.lastJulianDate+1,z]}else if(M===this.gcYear&&c===this.gcMonth&&this.gcDate>1&&this.gcDate>this.lastJulianDate+1)return[this.lastJulianDate+1,this.gcDate-1];return null}getStartDateOfFirstWeekOfYear(M,c=1,z=4){let o=1;7===z&&(++o,--z);const e=b(this.getDayOfWeek(M,1,o)-c,7);return this.addDaysToDate((e>7-z?7:0)-e,M,1,o)}getWeeksInYear(M,c=1,z=4){const b=this.getStartDateOfFirstWeekOfYear(M,c,z)
;return(this.getStartDateOfFirstWeekOfYear(M+1,c,z).n-b.n)/7}getYearWeekAndWeekday(c,z,o,e,A){const[p,a,O]=dM(c,z,o,this,!0);q(c)&&(e=z,A=o),e=e??1,A=A??4,++this.computeWeekValues;let i=p,n=this.getStartDateOfFirstWeekOfYear(p,e,A);const t=this.getStartDateOfFirstWeekOfYear(p+1,e,A),r=this.getDayNumber(p,a,O);return n.n>r?(n=this.getStartDateOfFirstWeekOfYear(p-1,e,A),--i):t.n<=r&&(n=t,++i),--this.computeWeekValues,[i,M((r-n.n)/7)+1,b(r-n.n,7)+1]}}var vM=Intl.DateTimeFormat;let HM=!1,KM=!0,VM="en";try{
if(HM="undefined"!=typeof Intl&&!!Intl?.DateTimeFormat,HM){const M=new vM("en-us",{dateStyle:"full"}).format(0);KM=M!==new vM("en-us",{dateStyle:"short"}).format(0),KM||console.warn("Intl.DateTimeFormatOptions dateStyle and timeStyle not available")}else console.warn("Intl.DateTimeFormat not available")}catch(M){HM=!1,console.warn("Intl.DateTimeFormat not available: %s",M.message||M.toString())}try{
HM?VM=(new Intl.DateTimeFormat).resolvedOptions().locale:"object"==typeof process&&process.env?.LANG?VM=process.env.LANG.replace(/\..*$/,"").replace(/_/g,"-"):"object"==typeof navigator&&navigator.language&&(VM=navigator.language)}catch{VM="en"}const xM=HM,YM=KM,JM=VM,QM={full:{year:"numeric",month:"long",day:"numeric",weekday:"long"},long:{year:"numeric",month:"long",day:"numeric"},medium:{year:"numeric",month:"short",day:"numeric"},short:{year:"2-digit",month:"numeric",day:"numeric"}},ZM={full:{
hour:"numeric",minute:"2-digit",second:"2-digit",timeZoneName:"long"},long:{hour:"numeric",minute:"2-digit",second:"2-digit",timeZoneName:"short"},medium:{hour:"numeric",minute:"2-digit",second:"2-digit"},short:{hour:"numeric",minute:"2-digit"}};function $M(M,c){Object.keys(c).forEach(z=>M[z]=M[z]??c[z])}function Mc(M){return xM&&M?(d(M)&&M.includes(",")&&(M=M.split(",").map(M=>M.trim().replace(/-u-.*$/,""))),
r(M)?0===M.length?"en":1===M.length?Mc(M[0]):M.map(M=>Mc(M)):M.replace(/_/g,"-").toLowerCase()):"en-us"}function cc(M){return M.replace(/-[^-]*?$/i,"")}function zc(M,c){let z;M=Mc(M),r(M)||(M=[M]);for(let b of M){let M;do{z=c[b],M=cc(b)}while(!z&&b.includes("-")&&(b=M));if(z)break}return z}const bc={af:[["vm","VM"],["nm","NM"]],ar:[["ص"],["م"]],
az:[["gecə"],["gecə"],["gecə"],["gecə"],["səhər"],["səhər"],["səhər"],["səhər"],["səhər"],["səhər"],["səhər"],["səhər"],["gündüz"],["gündüz"],["gündüz"],["gündüz"],["gündüz"],["axşam"],["axşam"],["axşam"],["axşam"],["axşam"],["axşam"],["axşam"]],be:[["ночы"],["ночы"],["ночы"],["ночы"],["раніцы"],["раніцы"],["раніцы"],["раніцы"],["раніцы"],["раніцы"],["раніцы"],["раніцы"],["дня"],["дня"],["дня"],["дня"],["дня"],["вечара"],["вечара"],["вечара"],["вечара"],["вечара"],["вечара"],["вечара"]],
bn:[["রাত"],["রাত"],["রাত"],["রাত"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["দুপুর"],["দুপুর"],["দুপুর"],["দুপুর"],["দুপুর"],["দুপুর"],["দুপুর"],["বিকাল"],["বিকাল"],["বিকাল"],["রাত"],["রাত"],["রাত"],["রাত"]],"bn-bd":[["রাত"],["রাত"],["রাত"],["রাত"],["ভোর"],["ভোর"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["সকাল"],["দুপুর"],["দুপুর"],["দুপুর"],["বিকাল"],["বিকাল"],["বিকাল"],["সন্ধ্যা"],["সন্ধ্যা"],["রাত"],["রাত"],["রাত"],["রাত"]],
bo:[["སྔ་དྲོ","མཚན་མོ"],["སྔ་དྲོ","མཚན་མོ"],["སྔ་དྲོ","མཚན་མོ"],["སྔ་དྲོ","མཚན་མོ"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཞོགས་ཀས"],["སྔ་དྲོ","ཉིན་གུང"],["སྔ་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","ཉིན་གུང"],["ཕྱི་དྲོ","དགོང་དག"],["ཕྱི་དྲོ","དགོང་དག"],["ཕྱི་དྲོ","དགོང་དག"],["ཕྱི་དྲོ","མཚན་མོ"],["ཕྱི་དྲོ","མཚན་མོ"],["ཕྱི་དྲོ","མཚན་མོ"],["ཕྱི་དྲོ","མཚན་མོ"]],
br:[["a.m.","A.M."],["g.m.","G.M."]],el:[["πμ","ΠΜ","π.μ."],["μμ","ΜΜ","μ.μ."]],eo:[["atm","ATM","a.t.m.","A.T.M."],["ptm","PTM","p.t.m.","P.T.M."]],fa:[["قبل از ظهر"],["بعد از ظهر"]],gu:[["રાત"],["રાત"],["રાત"],["રાત"],["સવાર"],["સવાર"],["સવાર"],["સવાર"],["સવાર"],["સવાર"],["બપોર"],["બપોર"],["બપોર"],["બપોર"],["બપોર"],["બપોર"],["બપોર"],["સાંજ"],["સાંજ"],["સાંજ"],["રાત"],["રાત"],["રાત"],["રાત"]],he:[["לפ׳","לפ׳","לפנה״צ"],["אח׳","אח׳","אחה״צ"]],
hi:[["पू","रात"],["पू","रात"],["पू","रात"],["पू","रात"],["पू","सुबह"],["पू","सुबह"],["पू","सुबह"],["पू","सुबह"],["पू","सुबह"],["पू","सुबह"],["पू","दोपहर"],["पू","दोपहर"],["अ","दोपहर"],["अ","दोपहर"],["अ","दोपहर"],["अ","दोपहर"],["अ","दोपहर"],["अ","शाम"],["अ","शाम"],["अ","शाम"],["अ","रात"],["अ","रात"],["अ","रात"],["अ","रात"]],hu:[["de","DE","de."],["du","DU","du."]],
hy:[["գիշերվա"],["գիշերվա"],["գիշերվա"],["գիշերվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["առավոտվա"],["ցերեկվա"],["ցերեկվա"],["ցերեկվա"],["ցերեկվա"],["ցերեկվա"],["երեկոյան"],["երեկոյան"],["երեկոյան"],["երեկոյան"],["երեկոյան"],["երեկոյան"],["երեկոյան"]],ja:[["午前"],["午後"]],
jv:[["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","enjing"],["isuk","Isuk","siyang"],["wengi","Wengi","siyang"],["wengi","Wengi","siyang"],["wengi","Wengi","siyang"],["wengi","Wengi","sonten"],["wengi","Wengi","sonten"],["wengi","Wengi","sonten"],["wengi","Wengi","sonten"],["wengi","Wengi","ndalu"],["wengi","Wengi","ndalu"],["wengi","Wengi","ndalu"],["wengi","Wengi","ndalu"],["wengi","Wengi","ndalu"]],
km:[["ព្រឹក"],["ល្ងាច"]],
kn:[["ರಾತ್ರಿ","ಪೂರ್ವಾಹ್ನ"],["ರಾತ್ರಿ","ಪೂರ್ವಾಹ್ನ"],["ರಾತ್ರಿ","ಪೂರ್ವಾಹ್ನ"],["ರಾತ್ರಿ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಬೆಳಿಗ್ಗೆ","ಪೂರ್ವಾಹ್ನ"],["ಮಧ್ಯಾಹ್ನ","ಪೂರ್ವಾಹ್ನ"],["ಮಧ್ಯಾಹ್ನ","ಪೂರ್ವಾಹ್ನ"],["ಮಧ್ಯಾಹ್ನ","ಅಪರಾಹ"],["ಮಧ್ಯಾಹ್ನ","ಅಪರಾಹ"],["ಮಧ್ಯಾಹ್ನ","ಅಪರಾಹ"],["ಮಧ್ಯಾಹ್ನ","ಅಪರಾಹ"],["ಮಧ್ಯಾಹ್ನ","ಅಪರಾಹ"],["ಸಂಜೆ","ಅಪರಾಹ"],["ಸಂಜೆ","ಅಪರಾಹ"],["ಸಂಜೆ","ಅಪರಾಹ"],["ರಾತ್ರಿ","ಅಪರಾಹ"],["ರಾತ್ರಿ","ಅಪರಾಹ"],["ರಾತ್ರಿ","ಅಪರಾಹ"],["ರಾತ್ರಿ","ಅಪರಾಹ"]],
ko:[["오전"],["오후"]],ku:[["BN","بهیانی"],["PN","ئێواره"]],lo:[["ຕອນເຊົ້າ"],["ຕອນແລງ"]],ml:[["രാത്രി"],["രാത്രി"],["രാത്രി"],["രാത്രി"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["രാവിലെ"],["ഉച്ച കഴിഞ്ഞ്"],["ഉച്ച കഴിഞ്ഞ്"],["ഉച്ച കഴിഞ്ഞ്"],["ഉച്ച കഴിഞ്ഞ്"],["ഉച്ച കഴിഞ്ഞ്"],["വൈകുന്നേരം"],["വൈകുന്നേരം"],["വൈകുന്നേരം"],["രാത്രി"],["രാത്രി"],["രാത്രി"],["രാത്രി"]],mn:[["ү.ө.","ҮӨ"],["ү.х.","ҮХ"]],
mr:[["म.पू.","पहाटे"],["म.पू.","पहाटे"],["म.पू.","पहाटे"],["म.पू.","पहाटे"],["म.पू.","पहाटे"],["म.पू.","पहाटे"],["म.पू.","सकाळी"],["म.पू.","सकाळी"],["म.पू.","सकाळी"],["म.पू.","सकाळी"],["म.पू.","सकाळी"],["म.पू.","सकाळी"],["म.उ.","दुपारी"],["म.उ.","दुपारी"],["म.उ.","दुपारी"],["म.उ.","दुपारी"],["म.उ.","दुपारी"],["म.उ.","सायंकाळी"],["म.उ.","सायंकाळी"],["म.उ.","सायंकाळी"],["म.उ.","रात्री"],["म.उ.","रात्री"],["म.उ.","रात्री"],["म.उ.","रात्री"]],
ms:[["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["pagi","PG"],["tengahari","PG"],["tengahari","PTG"],["tengahari","PTG"],["tengahari","PTG"],["petang","PTG"],["petang","PTG"],["petang","PTG"],["petang","PTG"],["malam","PTG"],["malam","PTG"],["malam","PTG"],["malam","PTG"],["malam","PTG"]],
my:[["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["နံနက်","နံနက်"],["ညနေ","မွန်းတည့်"],["ညနေ","နေ့လယ်"],["ညနေ","နေ့လယ်"],["ညနေ","နေ့လယ်"],["ညနေ","ညနေ"],["ညနေ","ညနေ"],["ညနေ","ညနေ"],["ညနေ","ည"],["ညနေ","ည"],["ညနေ","ည"],["ညနေ","ည"],["ညနေ","ည"]],
ne:[["पूर्वाह्न","राति"],["पूर्वाह्न","राति"],["पूर्वाह्न","राति"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["पूर्वाह्न","बिहान"],["अपराह्न","दिउँसो"],["अपराह्न","दिउँसो"],["अपराह्न","दिउँसो"],["अपराह्न","दिउँसो"],["अपराह्न","साँझ"],["अपराह्न","साँझ"],["अपराह्न","साँझ"],["अपराह्न","साँझ"],["अपराह्न","राति"],["अपराह्न","राति"],["अपराह्न","राति"],["अपराह्न","राति"]],
ru:[["ночи"],["ночи"],["ночи"],["ночи"],["утра"],["утра"],["утра"],["утра"],["утра"],["утра"],["утра"],["утра"],["дня"],["дня"],["дня"],["дня"],["дня"],["вечера"],["вечера"],["вечера"],["вечера"],["вечера"],["вечера"],["вечера"]],sd:[["صبح"],["شام","منجهند"]],si:[["පෙ.ව.","පෙර වරු"],["ප.ව.","පස් වරු"]],sq:[["pd","PD","e paradites"],["md","MD","e pasdites"]],
ta:[["யாமம்","முற்பகல்"],["யாமம்","முற்பகல்"],["வைகறை","முற்பகல்"],["வைகறை","முற்பகல்"],["வைகறை","முற்பகல்"],["வைகறை","முற்பகல்"],["காலை","முற்பகல்"],["காலை","முற்பகல்"],["காலை","முற்பகல்"],["காலை","முற்பகல்"],["நண்பகல்","முற்பகல்"],["நண்பகல்","முற்பகல்"],["நண்பகல்","பிற்பகல்"],["நண்பகல்","பிற்பகல்"],["எற்பாடு","பிற்பகல்"],["எற்பாடு","பிற்பகல்"],["எற்பாடு","பிற்பகல்"],["எற்பாடு","பிற்பகல்"],["மாலை","பிற்பகல்"],["மாலை","பிற்பகல்"],["மாலை","பிற்பகல்"],["மாலை","பிற்பகல்"],["யாமம்","பிற்பகல்"],["யாமம்","பிற்பகல்"]],
te:[["రాత్రి"],["రాత్రి"],["రాత్రి"],["రాత్రి"],["ఉదయం"],["ఉదయం"],["ఉదయం"],["ఉదయం"],["ఉదయం"],["ఉదయం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["మధ్యాహ్నం"],["సాయంత్రం"],["సాయంత్రం"],["సాయంత్రం"],["రాత్రి"],["రాత్రి"],["రాత్రి"],["రాత్రి"]],tg:[["шаб"],["шаб"],["шаб"],["шаб"],["субҳ"],["субҳ"],["субҳ"],["субҳ"],["субҳ"],["субҳ"],["субҳ"],["рӯз"],["рӯз"],["рӯз"],["рӯз"],["рӯз"],["бегоҳ"],["бегоҳ"],["бегоҳ"],["шаб"],["шаб"],["шаб"],["шаб"],["шаб"]],
th:[["ก่อนเที่ยง"],["หลังเที่ยง"]],tr:[["öö","ÖÖ"],["ös","ÖS"]],
ug:[["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","يېرىم كېچە"],["چۈشتىن بۇرۇن","سەھەر"],["چۈشتىن بۇرۇن","سەھەر"],["چۈشتىن بۇرۇن","سەھەر"],["چۈشتىن بۇرۇن","چۈشتىن بۇرۇن"],["چۈشتىن بۇرۇن","چۈشتىن بۇرۇن"],["چۈشتىن بۇرۇن","چۈشتىن بۇرۇن"],["چۈشتىن كېيىن","چۈش"],["چۈشتىن كېيىن","چۈشتىن كېيىن"],["چۈشتىن كېيىن","چۈشتىن كېيىن"],["چۈشتىن كېيىن","چۈشتىن كېيىن"],["چۈشتىن كېيىن","چۈشتىن كېيىن"],["چۈشتىن كېيىن","چۈشتىن كېيىن"],["چۈشتىن كېيىن","كەچ"],["چۈشتىن كېيىن","كەچ"],["چۈشتىن كېيىن","كەچ"],["چۈشتىن كېيىن","كەچ"],["چۈشتىن كېيىن","كەچ"],["چۈشتىن كېيىن","كەچ"]],
uk:[["дп"],["пп"]],ur:[["ق.د.","صبح"],["ب.د.","شام"]],vi:[["sa","SA"],["ch","CH"]],zh:[["上午"],["下午"]]},oc={};["af","bo","br","el","eo","he","hi","hu","jv","ku","lo","mn","my","mr","ne","sd","sq","si","th","ug","ur","zh"].forEach(M=>oc[M]=!0);const ec=[["am","AM"],["pm","PM"]];const Ac={};"ag as au bd br bs bt bw bz ca cn co dm do et gt\n gu hk hn id il in jm jp ke kh kr la mh mm mo mt\n mx mz ni np pa pe ph pk pr pt py sa sg sv th tt\n tw um us ve vi ws ye za zw".split(/s+/).forEach(M=>Ac[M]=0),
"ad ai al am an ar at ax az ba be bg bm bn by ch\n cl cm cr cy cz de dk ec ee es fi fj fo fr gb ge\n gf gp gr hr hu ie is it kg kz lb li lk lt lu lv\n mc md me mk mn mq my nl no nz pl re ro rs ru se\n si sk sm tj tm tr ua uy uz va vn xk".split(/s+/).forEach(M=>Ac[M]=1),Ac.mv=5,"ae af bh dj dz eg iq ir jo kw ly om qa sd sy".split(/s+/).forEach(M=>Ac[M]=6);const pc={af:[1,4,5],ar:[6,1,5,6],"ar-dz":[0,3,5,6],"ar-sa":[0,1,4,5],az:[1,1,6,0],be:[1,1,6,0],bg:[1,1,6,0],bn:[0,1,6,0],"bn-bd":[0,1,6,0],bo:[0,1,6,0],
bs:[1,1,6,0],en:[1,1,6,0],"en-au":[0,3,6,0],"en-ca":[0,1,6,0],"en-il":[0,1,5,6],"en-us":[0,1,6,0],eo:[1,1,6,0],"es-mx":[0,3,6,0],"es-us":[0,1,6,0],eu:[1,1,6,0],fa:[6,1,6,0],fr:[1,1,6,0],"fr-ca":[0,1,6,0],gu:[0,1,6,0],hi:[0,1,6,0],hr:[1,1,6,0],"hy-am":[1,1,6,0],ja:[0,1,6,0],jv:[1,1,6,0],ka:[1,1,6,0],kk:[1,1,6,0],kn:[0,1,6,0],ko:[0,1,6,0],ku:[6,1,6,0],ky:[1,1,6,0],lo:[0,1,6,0],mk:[1,1,6,0],ml:[0,1,6,0],mn:[0,1,6,0],mr:[0,1,5,6],ms:[1,1,6,0],ne:[0,1,6,0],pt:[1,1,6,0],"pt-br":[0,1,6,0],ro:[1,1,6,0],sd:[1,4,5],
si:[0,1,6,0],sl:[1,1,6,0],sr:[1,1,6,0],sw:[1,1,6,0],ta:[0,1,6,0],te:[0,1,6,0],tg:[1,1,6,0],th:[0,1,6,0],tk:[1,1,6,0],tr:[1,1,6,0],tzm:[6,1,6,0],"ug-cn":[1,1,6,0],uk:[1,1,6,0],uz:[1,1,6,0],zh:[0,1,6,0]};function ac(M){let c,z=zc(M,pc);null==z&&(z=pc.en),M=Mc(M),r(M)||(M=[M]);for(const z of M){const M=z.split("-")[1];if(M){if(null!=pc[z])break;if(c=Ac[M],null!=c)break}}return null!=c&&(z[0]=c),z}function Oc(M){return ac(M)[0]}function ic(M){return ac(M)[1]}function nc(M){return ac(M).slice(2)}const tc={
af:["0de","1ste","2de","3de","4de","5de","6de","7de","8ste","9de","10de","11de","12de","13de","14de","15de","16de","17de","18de","19de","20ste","21ste","22ste","23ste","24ste","25ste","26ste","27ste","28ste","29ste","30ste","31ste"],ar:1,
az:["0-ıncı","1-inci","2-nci","3-üncü","4-üncü","5-inci","6-ncı","7-nci","8-inci","9-uncu","10-uncu","11-inci","12-nci","13-üncü","14-üncü","15-inci","16-ncı","17-nci","18-inci","19-uncu","20-nci","21-inci","22-nci","23-üncü","24-üncü","25-inci","26-ncı","27-nci","28-inci","29-uncu","30-uncu","31-inci"],be:1,
bg:["0-ев","1-ви","2-ри","3-ти","4-ти","5-ти","6-ти","7-ми","8-ми","9-ти","10-ти","11-ти","12-ти","13-ти","14-ти","15-ти","16-ти","17-ти","18-ти","19-ти","20-ти","21-ви","22-ри","23-ти","24-ти","25-ти","26-ти","27-ми","28-ми","29-ти","30-ти","31-ви"],bm:1,bn:1,bo:1,
br:["0vet","1añ","2vet","3vet","4vet","5vet","6vet","7vet","8vet","9vet","10vet","11vet","12vet","13vet","14vet","15vet","16vet","17vet","18vet","19vet","20vet","21vet","22vet","23vet","24vet","25vet","26vet","27vet","28vet","29vet","30vet","31vet"],bs:2,ca:["0è","1r","2n","3r","4t","5è","6è","7è","8è","9è","10è","11è","12è","13è","14è","15è","16è","17è","18è","19è","20è","21è","22è","23è","24è","25è","26è","27è","28è","29è","30è","31è"],cs:2,
cy:["0","1af","2il","3ydd","4ydd","5ed","6ed","7ed","8fed","9fed","10fed","11eg","12fed","13eg","14eg","15fed","16eg","17eg","18fed","19eg","20fed","21ain","22ain","23ain","24ain","25ain","26ain","27ain","28ain","29ain","30ain","31ain"],da:2,de:2,el:6,en:["0th","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st"],eo:3,es:4,et:2,eu:2,fa:5,fi:2,fil:1,
fo:2,fr:["0e","1er","2e","3e","4e","5e","6e","7e","8e","9e","10e","11e","12e","13e","14e","15e","16e","17e","18e","19e","20e","21e","22e","23e","24e","25e","26e","27e","28e","29e","30e","31e"],fy:["0de","1ste","2de","3de","4de","5de","6de","7de","8ste","9de","10de","11de","12de","13de","14de","15de","16de","17de","18de","19de","20ste","21ste","22ste","23ste","24ste","25ste","26ste","27ste","28ste","29ste","30ste","31ste"],
ga:["0mh","1d","2na","3mh","4mh","5mh","6mh","7mh","8mh","9mh","10mh","11mh","12na","13mh","14mh","15mh","16mh","17mh","18mh","19mh","20mh","21mh","22na","23mh","24mh","25mh","26mh","27mh","28mh","29mh","30mh","31mh"],gd:["0mh","1d","2na","3mh","4mh","5mh","6mh","7mh","8mh","9mh","10mh","11mh","12na","13mh","14mh","15mh","16mh","17mh","18mh","19mh","20mh","21mh","22na","23mh","24mh","25mh","26mh","27mh","28mh","29mh","30mh","31mh"],gl:4,gu:1,hi:1,hr:2,hu:2,"hy-am":1,is:2,it:4,ja:1,jv:1,
ka:["0","1-ლი","მე-2","მე-3","მე-4","მე-5","მე-6","მე-7","მე-8","მე-9","მე-10","მე-11","მე-12","მე-13","მე-14","მე-15","მე-16","მე-17","მე-18","მე-19","მე-20","21-ე","22-ე","23-ე","24-ე","25-ე","26-ე","27-ე","28-ე","29-ე","30-ე","31-ე"],kk:["0-ші","1-ші","2-ші","3-ші","4-ші","5-ші","6-шы","7-ші","8-ші","9-шы","10-шы","11-ші","12-ші","13-ші","14-ші","15-ші","16-шы","17-ші","18-ші","19-шы","20-шы","21-ші","22-ші","23-ші","24-ші","25-ші","26-шы","27-ші","28-ші","29-шы","30-шы","31-ші"],
km:["ទី0","ទី1","ទី2","ទី3","ទី4","ទី5","ទី6","ទី7","ទី8","ទី9","ទី10","ទី11","ទី12","ទី13","ទី14","ទី15","ទី16","ទី17","ទី18","ទី19","ទី20","ទី21","ទី22","ទី23","ទី24","ទី25","ទី26","ទី27","ទី28","ទី29","ទី30","ទី31"],kn:["0ನೇ","1ನೇ","2ನೇ","3ನೇ","4ನೇ","5ನೇ","6ನೇ","7ನೇ","8ನೇ","9ನೇ","10ನೇ","11ನೇ","12ನೇ","13ನೇ","14ನೇ","15ನೇ","16ನೇ","17ನೇ","18ನೇ","19ನೇ","20ನೇ","21ನೇ","22ನೇ","23ನೇ","24ನೇ","25ನೇ","26ನೇ","27ನೇ","28ನೇ","29ನೇ","30ನೇ","31ನೇ"],ko:1,ku:1,
ky:["0-чү","1-чи","2-чи","3-чү","4-чү","5-чи","6-чы","7-чи","8-чи","9-чу","10-чу","11-чи","12-чи","13-чү","14-чү","15-чи","16-чы","17-чи","18-чи","19-чу","20-чы","21-чи","22-чи","23-чү","24-чү","25-чи","26-чы","27-чи","28-чи","29-чу","30-чу","31-чи"],lb:2,lo:["ທີ່0","ທີ່1","ທີ່2","ທີ່3","ທີ່4","ທີ່5","ທີ່6","ທີ່7","ທີ່8","ທີ່9","ທີ່10","ທີ່11","ທີ່12","ທີ່13","ທີ່14","ທີ່15","ທີ່16","ທີ່17","ທີ່18","ທີ່19","ທີ່20","ທີ່21","ທີ່22","ທີ່23","ທີ່24","ທີ່25","ທີ່26","ທີ່27","ທີ່28","ທີ່29","ທີ່30","ທີ່31"],
lt:["0-oji","1-oji","2-oji","3-oji","4-oji","5-oji","6-oji","7-oji","8-oji","9-oji","10-oji","11-oji","12-oji","13-oji","14-oji","15-oji","16-oji","17-oji","18-oji","19-oji","20-oji","21-oji","22-oji","23-oji","24-oji","25-oji","26-oji","27-oji","28-oji","29-oji","30-oji","31-oji"],lv:2,mi:4,
mk:["0-ев","1-ви","2-ри","3-ти","4-ти","5-ти","6-ти","7-ми","8-ми","9-ти","10-ти","11-ти","12-ти","13-ти","14-ти","15-ти","16-ти","17-ти","18-ти","19-ти","20-ти","21-ви","22-ри","23-ти","24-ти","25-ти","26-ти","27-ми","28-ми","29-ти","30-ти","31-ви"],ml:1,mn:1,mr:1,ms:1,mt:4,my:1,nb:2,ne:1,
nl:["0de","1ste","2de","3de","4de","5de","6de","7de","8ste","9de","10de","11de","12de","13de","14de","15de","16de","17de","18de","19de","20ste","21ste","22ste","23ste","24ste","25ste","26ste","27ste","28ste","29ste","30ste","31ste"],nn:2,pl:2,pt:4,ro:1,ru:1,sd:1,se:2,
si:["0 වැනි","1 වැනි","2 වැනි","3 වැනි","4 වැනි","5 වැනි","6 වැනි","7 වැනි","8 වැනි","9 වැනි","10 වැනි","11 වැනි","12 වැනි","13 වැනි","14 වැනි","15 වැනි","16 වැනි","17 වැනි","18 වැනි","19 වැනි","20 වැනි","21 වැනි","22 වැනි","23 වැනි","24 වැනි","25 වැනි","26 වැනි","27 වැනි","28 වැනි","29 වැනි","30 වැනි","31 වැනි"],sk:2,sl:2,sq:2,sr:2,
sv:["0:e","1:a","2:a","3:e","4:e","5:e","6:e","7:e","8:e","9:e","10:e","11:e","12:e","13:e","14:e","15:e","16:e","17:e","18:e","19:e","20:e","21:a","22:a","23:e","24:e","25:e","26:e","27:e","28:e","29:e","30:e","31:a"],sw:1,ta:["0வது","1வது","2வது","3வது","4வது","5வது","6வது","7வது","8வது","9வது","10வது","11வது","12வது","13வது","14வது","15வது","16வது","17வது","18வது","19வது","20வது","21வது","22வது","23வது","24வது","25வது","26வது","27வது","28வது","29வது","30வது","31வது"],
te:["0వ","1వ","2వ","3వ","4వ","5వ","6వ","7వ","8వ","9వ","10వ","11వ","12వ","13వ","14వ","15వ","16వ","17వ","18వ","19వ","20వ","21వ","22వ","23వ","24వ","25వ","26వ","27వ","28వ","29వ","30వ","31వ"],tg:["0-ум","1-ум","2-юм","3-юм","4-ум","5-ум","6-ум","7-ум","8-ум","9-ум","10-ум","11-ум","12-ум","13-ум","14-ум","15-ум","16-ум","17-ум","18-ум","19-ум","20-ум","21-ум","22-юм","23-юм","24-ум","25-ум","26-ум","27-ум","28-ум","29-ум","30-юм","31-ум"],th:1,
tk:["0'unjy","1'inji","2'nji","3'ünji","4'ünji","5'inji","6'njy","7'nji","8'inji","9'unjy","10'unjy","11'inji","12'nji","13'ünji","14'ünji","15'inji","16'njy","17'nji","18'inji","19'unjy","20'nji","21'inji","22'nji","23'ünji","24'ünji","25'inji","26'njy","27'nji","28'inji","29'unjy","30'unjy","31'inji"],
tr:["0'ıncı","1'inci","2'nci","3'üncü","4'üncü","5'inci","6'ncı","7'nci","8'inci","9'uncu","10'uncu","11'inci","12'nci","13'üncü","14'üncü","15'inci","16'ncı","17'nci","18'inci","19'uncu","20'nci","21'inci","22'nci","23'üncü","24'üncü","25'inci","26'ncı","27'nci","28'inci","29'uncu","30'uncu","31'inci"],tzm:1,"ug-cn":1,uk:1,ur:1,uz:1,vi:1,
yo:["ọjọ́ 0","ọjọ́ 1","ọjọ́ 2","ọjọ́ 3","ọjọ́ 4","ọjọ́ 5","ọjọ́ 6","ọjọ́ 7","ọjọ́ 8","ọjọ́ 9","ọjọ́ 10","ọjọ́ 11","ọjọ́ 12","ọjọ́ 13","ọjọ́ 14","ọjọ́ 15","ọjọ́ 16","ọjọ́ 17","ọjọ́ 18","ọjọ́ 19","ọjọ́ 20","ọjọ́ 21","ọjọ́ 22","ọjọ́ 23","ọjọ́ 24","ọjọ́ 25","ọjọ́ 26","ọjọ́ 27","ọjọ́ 28","ọjọ́ 29","ọjọ́ 30","ọjọ́ 31"],zh:1}
;const rc=1728e5,qc=/^(America\/Argentina|America\/Indiana)\/(.+)$/,dc=/^(CST6CDT|EET|EST5EDT|MST7MDT|PST8PDT|SystemV\/AST4ADT|SystemV\/CST6CDT|SystemV\/EST5EDT|SystemV\/MST7MDT|SystemV\/PST8PDT|SystemV\/YST9YDT|WET)$/,sc=new Set(["deltaTs","leapSeconds","version","years"]);class Lc{constructor(M){const c=M.split(/[ :]/);this.startYear=Number(c[0]),this.month=Number(c[1]),this.dayOfMonth=Number(c[2]),this.dayOfWeek=Number(c[3]),this.atHour=Number(c[4]),this.atMinute=Number(c[5]),this.atType=Number(c[6]),
this.save=e(60*Number(c[7]))}getTransitionTime(M,c,z){let b;b=this.dayOfWeek>=0&&this.dayOfMonth>0?EM(M,this.month,this.dayOfWeek-1,this.dayOfMonth):this.dayOfWeek>=0&&this.dayOfMonth<0?EM(M,this.month,this.dayOfWeek-1,-this.dayOfMonth):this.dayOfWeek>=0&&0===this.dayOfMonth?hM(M,this.month,this.dayOfWeek-1,6):this.dayOfMonth;let o=wM(M,this.month,b,this.atHour,this.atMinute);return 0===this.atType?o-=1e3*(c+z):1===this.atType&&(o-=1e3*c),o}toString(){const M=w[this.month-1],z=I[this.dayOfWeek-1];let b=""
;return 0===this.dayOfMonth?b+=`last ${z} of ${M}`:this.dayOfWeek<0?b+=`${M} ${this.dayOfMonth}`:this.dayOfMonth>0?b+=`first ${z} on/after ${M} ${this.dayOfMonth}`:b+=`last ${z} on/before ${M} ${-this.dayOfMonth}`,b+=`, at ${this.atHour}:${s(this.atMinute,2,"0")} `,b+=["wall time","std time","UTC"][this.atType],0===this.save?b+=" begin std time":(this.save%3600==0?b+=` save ${c(this.save,3600)} hour${A(this.save/3600)>1?"s":""}`:b+=` save ${c(this.save,60)} mins`,
this.save%60!=0&&(b+=` ${this.save%60} secs`)),b}}let Wc,lc,uc,Nc,fc=[];!function(){const M=new Date(1901,0,1,12,0,0,0);let c=M.getTime();const z=Date.now(),b=2592e6,o=z+62208e6,e=z+15552e8;let A=60*-M.getTimezoneOffset();for(fc.push({transitionTime:Number.MIN_SAFE_INTEGER,utcOffset:A,dstOffset:0});M.getTime()<e;){const z=c+b;M.setTime(z);const e=60*-M.getTimezoneOffset();if(void 0===Wc&&z>=o&&(Wc=lc=e),e!==A){z>=o&&(Wc=Math.min(Wc,e),lc=Math.max(lc,e));let b=c,p=z;for(;p-b>X;){
const c=Math.floor((p+b)/2/X)*X;M.setTime(c);60*-M.getTimezoneOffset()===A?b=c:p=c}fc.push({transitionTime:p,utcOffset:e,dstOffset:0}),A=e}c=z}fc.length<2?(fc=null,uc=!1,Nc=0):(uc=lc>Wc,Nc=lc-Wc,uc&&(fc[0].utcOffset===lc&&fc[1].utcOffset===Wc&&(fc.splice(0,1),fc[0].transitionTime=Number.MIN_SAFE_INTEGER),fc.forEach((M,c)=>{c>0&&M.utcOffset===lc&&fc[c-1]?.utcOffset===Wc&&(M.dstOffset=lc-Wc)}),0!==L(fc).dstOffset&&fc.pop()))}();class Tc{static get version(){return this._version}static defineTimezones(M){
const c=!W(this.encodedTimezones,M);return this._version=M?.version?M.version:"unspecified",this.encodedTimezones=Object.assign({},M??{}),this.extractZoneInfo(),this.extractLeapSeconds(),this.extractDeltaTs(),c&&(this.offsetsAndZones=void 0,this.regionAndSubzones=void 0,this.zoneLookup={}),c}static getAvailableTimezones(){const M=[];for(const c of Object.keys(this.encodedTimezones))(c.includes("/")||/^[A-Z]/.test(c))&&M.push(c);return M.sort(),M}static getOffsetsAndZones(){
if(this.offsetsAndZones)return this.offsetsAndZones;const M={};for(const c of Object.keys(this.encodedTimezones)){if(!c.includes("/")||c.startsWith("Etc/")||dc.test(c))continue;let z=this.encodedTimezones[c];if(!z.includes(";")){const M=/^!([^,]*)$/.exec(z)||/^(?:.*,)?(.*)$/.exec(z);z=this.encodedTimezones[M[1]]??""}const b=z.split(/[ ;]/);if(b.length<3)continue;const o=b[1].split(/([-+]?\d\d)/g).filter(M=>!!M).join(":")+this.getDstSymbol(60*i(b[2]));let e=M[o];e||(e=[],M[o]=e),e.push(c.replace(/_/g," "))}
const c=[],z=M=>i(M.replace(/[^-+\d]/g,""));for(const z of Object.keys(M))c.push(z);c.sort((M,c)=>z(M)-z(c)),this.offsetsAndZones=[];for(const z of c){const c=M[z];c.sort(),this.offsetsAndZones.push({offset:z,offsetSeconds:Y(z.replace(/[^-+\d]/g,"")),dstOffset:{"^":1800,"§":3600,"#":7200,"❄":-3600,"~":999}[z.substr(z.length-1)]||0,zones:c})}return this.offsetsAndZones}static getRegionsAndSubzones(){if(this.regionAndSubzones)return this.regionAndSubzones;let M=!1;const c={}
;for(const z of Object.keys(this.encodedTimezones)){let b,o;const e=qc.exec(z)??/^(.+?)\/(.+)$/.exec(z);e?(b=e[1],o=e[2].replace(/_/g," ")):(b=z,o=null),(null==o||dc.test(z))&&(b="~",o=z,M=!0);let A=c[b];A||(A=[],c[b]=A),A.push(o)}const z=[];for(const M of Object.keys(c))z.push(M);z.sort(),M&&(z[z.length-1]="MISC",c.MISC=c["~"],delete c["~"]),this.regionAndSubzones=[];for(const M of z){const z=c[M];z.sort(),this.regionAndSubzones.push({region:M,subzones:z})}return this.regionAndSubzones}
static guess(c=!1,z,b){if(!this._guess||c)if(!xM||z||b){let c=z;if(!c)try{"undefined"!=typeof process&&(c=(process.env?.LANG??process.env?.LC_CTYPE??"").split(/[-._]/)[1]?.toUpperCase())}catch{}if(!c)try{"undefined"!=typeof navigator&&(c=(navigator.language??"").split(/[-._]/)[1]?.toUpperCase())}catch{}const o=b?Tc.from(b):this.OS_ZONE,e=this.formatUtcOffset(o.utcOffset,!0)+";"+M(o.dstOffset/60),A=Array.from(this.zonesByOffsetAndDst[e]??[]).filter(M=>!c||this.doesZoneMatchCountry(M,c)).map(M=>({zone:M,
rating:o.matchRating(Tc.from(M)),pop:this.populationForZone[M]})).sort((M,c)=>c.rating!==M.rating?c.rating-M.rating:c.pop-M.pop);this._guess=A[0]?.zone??"OS"}else this._guess=(new Intl.DateTimeFormat).resolvedOptions().timeZone??"OS";return this._guess}static has(M){return!!this.zoneLookup[M]||!!this.zonesByLowercase[M.toLowerCase()]||!!this.encodedTimezones[M]||/^(GMT|OS|UTC?|ZONELESS|DATELESS|TAI)$/i.test(M)}static from(M){return Tc.getTimezone(M)}static getTimezone(M,c){if(!M)return this.OS_ZONE
;const z=M.toLowerCase();if("tai"===z)return this.TAI_ZONE;if("dateless"===z)return this.DATELESS;if("zoneless"===z)return this.ZONELESS;this.zonesByLowercase[z]&&(M=this.zonesByLowercase[z]);const b=this.zoneLookup[M];if(b)return b;let e;const A=/^(?:LMT|OS|(?:(GMT|UTC?)?([-+]\d\d(\d{4}|\d\d|:\d\d(:\d\d)?))?)|(?:.+\/.+)|\w+)$/.exec(M);if(null===A||0===A.length)throw new Error('Unrecognized format for timezone name "'+M+'"');if("LMT"===A[0].toUpperCase())c=c||0,e=new Tc({zoneName:"LMT",
currentUtcOffset:60*Math.round(4*o(c,360)),usesDst:!1,dstOffset:0,transitions:null});else if("OS"===A[0].toUpperCase())e=this.OS_ZONE;else if(A.length>1&&(/GMT|UTC?/.test(A[1])||A[2])){let c=0;A[1]||(M="UT"+M),A[2]&&(c=Y(A[2])),e=new Tc({zoneName:M,currentUtcOffset:c,usesDst:!1,dstOffset:0,transitions:null})}else if(this.encodedTimezones[M]){let c=this.encodedTimezones[M],z=null,b=null;if(!c.includes(";")){const M=/^!(.*,)?(.*)$/.exec(c);M?(b=M[1],c=M[2]):z=c,c=this.encodedTimezones[c]}
e=new Tc(this.parseEncodedTimezone(M,c,z,b))}else e=new Tc({zoneName:M,currentUtcOffset:Wc,usesDst:uc,dstOffset:Nc,transitions:fc}),e._error="Unrecognized timezone";return"LMT"===M||e._error||(this.zoneLookup[M]=e),e}static getAliasesForZone(M){return M=this.zonesByLowercase[M?.toLowerCase()],this.zonesAliases[M]?Array.from(this.zonesAliases[M]):[]}static hasShortName(M){return!!this.shortZoneNames[M]}static getShortZoneNameInfo(M){return l(this.shortZoneNames[M])}static getPopulation(M){
let c=this.populationForZone[M];if(null==c){const z=this.getAliasesForZone(M);for(const b of z)if(c=this.populationForZone[b],null!=c&&c>0){this.populationForZone[M]=c;break}}return null==c&&(this.populationForZone[M]=0),c??0}static getCountries(M){let c=this.countriesForZone[M];if(null==c){const z=this.getAliasesForZone(M);for(const b of z)if(c=this.countriesForZone[b],null!=c.size){this.countriesForZone[M]=c;break}}return null==c&&(this.countriesForZone[M]=new Set),new Set(c)}
static doesZoneMatchCountry(M,c){return this.getCountries(M).has(c.toUpperCase())}static parseTimeOffset(M){let c=1;if(M.startsWith("-")?(c=-1,M=M.substr(1)):M.startsWith("+")&&(M=M.substr(1)),"0"===M)return 0;if("1"===M)return 3600;{let z=60*(60*Number(M.substr(0,2))+Number(M.substr(2,2)));return 6===M.length&&(z+=Number(M.substr(4,2))),c*z}}static fromBase60(M){let c=1,z=0,b=!1,o=1;M.startsWith("-")?(c=-1,M=M.substr(1)):M.startsWith("+")&&(M=M.substr(1));for(let c=0;c<M.length;++c){let e=M.charCodeAt(c)
;46!==e?(e-=e>96?87:e>64?29:48,b?(o/=60,z+=o*e):(z*=60,z+=e)):b=!0}return z*c}static extractTimezoneTransitionsFromIntl(c,z){const b=[],o={timeZone:c,hourCycle:"h23",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"},e=new Intl.DateTimeFormat("en",o);let A,p=wM(1901,1,1,0,0,0,0);do{p+=36e5,A=Q(e,p,"hour")}while(0!==A&&1!==A);p+=432e5;const a=c=>{const z=e.formatToParts(c)
;return M((wM(Q(z,"year"),Q(z,"month"),Q(z,"day"),Q(z,"hour"),Q(z,"minute"),Q(z,"second"))-c)/1e3)},O=2592e6,i=p+62208e6,n=wM(z+1,1,1,0,0,0,0);let t,r,q=a(p);for(;p<n;){const M=p+O,c=a(M);if(void 0===t&&M>=i&&(t=r=c),c!==q){M>=i&&(t=Math.min(t,c),r=Math.max(r,c));let z=p,o=M;for(;o-z>X;){const M=Math.floor((o+z)/2/X)*X;a(M)===q?z=M:o=M}b.push({transitionTime:o,utcOffset:c,dstOffset:0}),q=c}p=M}return b.length<2||r<=t?[]:(b[0].utcOffset===r&&b[1].utcOffset===t&&(b.splice(0,1),
b[0].transitionTime=Number.MIN_SAFE_INTEGER),b.forEach((M,c)=>{M.utcOffset===r&&b[c-1]?.utcOffset===t&&(M.dstOffset=r-t)}),b)}static applyTransitionRules(M,c,z,b,o,e,A,p,a,O,i=!1){for(let n=c;n<z;++n){const c=o.getTransitionTime(n,b,p),z=e.getTransitionTime(n,b,0),t=z<c?e:o,r=z<c?z:c,q=z>c?e:o,d=z>c?z:c;r>A+rc&&(i||n>=t.startYear)&&M.push({transitionTime:r,utcOffset:b+t.save,dstOffset:t.save,name:t.save?a:O}),d>A+rc&&(i||n>=q.startYear)&&M.push({transitionTime:d,utcOffset:b+q.save,dstOffset:q.save,
name:q.save?a:O})}}static countriesStringToSet(M){return M.includes(" ")?new Set(M.split(/\s+/)):new Set(M.split(/(\w\w)/).filter(M=>!!M))}static parseEncodedTimezone(M,c,z,b){let o=[];const A=c.split(";");let p=A[0].split(" ");const a=this.parseTimeOffset(p[0]),O=this.parseTimeOffset(p[1]),n=e(60*Number(p[2]));let t,r,q,d,s,W=Number.MIN_SAFE_INTEGER,l=0,u="";if(o.push({transitionTime:Number.MIN_SAFE_INTEGER,utcOffset:a,dstOffset:0}),A.length>5)for(b||(b=A[5]+","+(A[6]??"")),A.length=5;!L(A);)--A.length
;if(b){const M=b.split(",");l=i(M[0]),u=M[1]??""}if(A.length>1){const c=A[1].split(" "),z=[],b=[],i=[];for(let M=0;M<c.length;++M){p=c[M].split("/"),z[M]=e(60*this.fromBase60(p[0])),b[M]=e(60*this.fromBase60(p[1])),p.length>2?i[M]=p[2]:i[M]=null}if(o[0].name=i[0],A.length>3){const c=A[2],p=A[3].split(" ");let t=0;for(let M=0;M<c.length;++M){const A=this.fromBase60(c.substr(M,1)),a=t+e(60*this.fromBase60(p[M]));o.push({transitionTime:1e3*a,utcOffset:z[A],dstOffset:b[A],name:i[A]}),t=a,0===M&&(W=a),
0!==b[A]?q=i[A]:r=i[A]}if(A.length>4){t*=1e3;const c=A[4].split(",");d=new Lc(c[0]),s=new Lc(c[1]);const z=PM(t).y-1;this.applyTransitionRules(o,z,2500,O,d,s,t,n,q,r),0!==o[o.length-1].dstOffset&&(o.length-=1);const b=PM(1e3*W).y;if(b>2e3&&o.length>1){const c=this.extractTimezoneTransitionsFromIntl(M,b);let z=!1;if(0===c.length&&O===a&&(z=!0,this.applyTransitionRules(c,1925,b+1,O,d,s,Number.MIN_SAFE_INTEGER+1,n,q,r,!0)),c.length>0){
for(z&&c.length>1&&0===c[0].dstOffset&&0!==c[1].dstOffset&&c.splice(0,1);c.length>0&&0!==L(c).dstOffset||L(c).transitionTime>=o[1].transitionTime;)c.splice(c.length-1,1);c[0].transitionTime===o[0].transitionTime&&c.splice(0,1),o.splice(1,0,...c)}}}}}return 1===o.length&&(t=o[0].name,o=null),{zoneName:M,currentUtcOffset:O,usesDst:0!==n,dstOffset:n,displayName:t,transitions:o,population:l,countries:this.countriesStringToSet(u),aliasFor:z,stdRule:d,dstRule:s}}static buildAliases(M,c){
let z=this.zonesAliases[M],b=this.zonesAliases[c];z||(z=this.zonesAliases[M]=new Set),b||(b=this.zonesAliases[c]=new Set),z.add(c),b.add(M),z.forEach(M=>{M!==c&&(b.add(M),this.zonesAliases[M].add(c))})}static extractZoneInfo(){this.shortZoneNames={},this.zonesByLowercase={gmt:"GMT",lmt:"LMT",os:"OS",tai:"TAI",ut:"UT",utc:"UTC"},this.zonesByOffsetAndDst={},this.countriesForZone={},this.zonesAliases={},this.zonesForCountry={},this.populationForZone={}
;const M=new Set(["Australia/ACT","Australia/Adelaide","Asia/Tokyo","Asia/Hong_Kong","Asia/Jakarta","Asia/Novosibirsk","Asia/Calcutta","Asia/Karachi","Europe/Moscow","Africa/Cairo","Europe/Paris","Europe/London","Atlantic/Azores","America/Scoresbysund","America/Godthab","America/St_Johns","America/Halifax","America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Anchorage","Pacific/Honolulu","America/Adak","Pacific/Apia"]),c=c=>M.has(c)?"!"+c:c
;Object.keys(this.encodedTimezones).filter(M=>!sc.has(M)&&!M.startsWith("_")).sort((M,z)=>u(c(M),c(z))).forEach(M=>{let c,z,b=this.encodedTimezones[M],o=!1;if(this.zonesByLowercase[M.toLowerCase()]=M,!b.includes(";")){const M=/^!(.*,)?(.*)$/.exec(b);M?(z=M[1],c=M[2],b=this.encodedTimezones[c]):(c=b,o=!0)}if(c&&(this.buildAliases(M,c),this.buildAliases(c,M)),o)return;const A=b.split(";");let p=A[0].split(" ");const a=this.parseTimeOffset(p[1]),O=e(60*Number(p[2]));if(A.length>1){
const c=A[0].split(" "),b=c.length>2?c[1]+";"+c[2]:null,o=A[1].split(" ");for(let c=0;c<o.length;++c){if(p=o[c].split("/"),p.length>2){const c=p[2],z=this.shortZoneNames[c],b=e(60*this.fromBase60(p[0])),o=e(60*this.fromBase60(p[1]));z&&(!M.startsWith("America/")||z.ianaName.startsWith("America/"))||b-o!==a||o&&(!o||o!==O)||(this.shortZoneNames[c]={utcOffset:b,dstOffset:o,ianaName:M})}if(!z&&A.length>5&&(z=A[5]+","+(A[6]??"")),b){let c=this.zonesByOffsetAndDst[b];c||(this.zonesByOffsetAndDst[b]=c=new Set),
c.add(M)}if(z){const c=z.split(","),b=this.countriesStringToSet(c[1]??"");b.size>0&&(this.countriesForZone[M]=b),this.populationForZone[M]=i(c[0]),b.forEach(c=>{let z=this.zonesForCountry[c];z||(this.zonesForCountry[c]=z=new Set),z.add(M)})}}}})}static extractDeltaTs(){const M=this.encodedTimezones?.deltaTs,c=this.getDateAfterLastKnownLeapSecond();G(M?M.split(/\s+/).map(M=>i(M)):null,c)}static extractLeapSeconds(){this.leapSeconds=[],this.lastLeapSecond=void 0;const M=this.encodedTimezones?.leapSeconds
;if(!M)return;let c=-1;this.leapSeconds.push({utcMillis:Number.MIN_SAFE_INTEGER,taiMillis:Number.MIN_SAFE_INTEGER+1e4,dateAfter:null,deltaTai:0,isNegative:!1});const z=[-4383,-3837,-3106,-2376,-1826,-1280,-915,-549,-184,181,546];z.push(...M.split(/\s+/).map(M=>i(M))),z.forEach((M,z)=>{const b=z<11?M:A(M),o=b*h;c+=z>10&&M<0?-1:1,this.leapSeconds.push({utcMillis:o,taiMillis:o+1e3*c,dateAfter:DM(b),deltaTai:c,isNegative:z>10&&M<0})}),this.lastLeapSecond=L(this.leapSeconds).dateAfter}
static formatUtcOffset(c,b=!1){if(null==c)return"?";let o=c<0?"-":"+";const e=b?"":":";c=Math.abs(c);const A=z(c,3600),p=z(c-=3600*A,60);return c-=60*p,o+=s(A,2,"0")+e+s(p,2,"0"),0!==c&&(o+=e+s(M(c),2,"0"),c%1!=0&&(o+="."+c.toFixed(3).substr(2),o=o.replace(/\.000$/,""))),o}static getDstSymbol(M){if(null==M)return"";switch(M){case 0:return"";case 1800:return"^";case 3600:return"§";case 7200:return"#";default:return M<0?"❄":"~"}}constructor(c){if(this._countries=new Set,this._zoneName=c.zoneName,
this._utcOffset=c.currentUtcOffset,this._usesDst=c.usesDst,this._dstOffset=c.dstOffset,this.displayName=c.displayName,this.transitions=l(c.transitions),this._aliasFor=c.aliasFor,this._population=c.population??0,this._countries=c.countries??new Set,this._stdRule=c.stdRule,this._dstRule=c.dstRule,this.transitions&&this.transitions.length>0){let c,z,b=this.transitions[0].utcOffset,o=b,e=!1;for(const A of this.transitions)z=0!==A.dstOffset,c=A.utcOffset-A.dstOffset,A.deltaOffset=A.utcOffset-b,
A.dstFlipped=z!==e,A.baseOffsetChanged=c!==o,A.wallTime=A.transitionTime+1e3*A.utcOffset,A.wallTimeDay=DM(M(A.wallTime/864e5)).d,Object.f