From 189b073c1e98e77b7a05dca5b16b8ae02ffb4985 Mon Sep 17 00:00:00 2001 From: Akulij Date: Mon, 17 Nov 2025 07:18:54 +0700 Subject: [PATCH] Initial commit --- .obsidian/app.json | 3 + .obsidian/appearance.json | 1 + .obsidian/community-plugins.json | 3 + .obsidian/core-plugins.json | 33 + .obsidian/plugins/obsidian-git/main.js | 426 ++++++++++++ .obsidian/plugins/obsidian-git/manifest.json | 10 + .../plugins/obsidian-git/obsidian_askpass.sh | 23 + .obsidian/plugins/obsidian-git/styles.css | 629 ++++++++++++++++++ .obsidian/workspace.json | 204 ++++++ 3_1/1-0.1.0.md | 163 +++++ 3_1/1-0.2.0.md | 221 ++++++ 3_1/1v2.md | 223 +++++++ 3_1/1v3correction.md | 420 ++++++++++++ 3_1/2.md | 540 +++++++++++++++ 3_1/3practice.md | 72 ++ 3_1/3v0.md | 190 ++++++ 4.2/1.md | 454 +++++++++++++ 4.2/2.md | 46 ++ Untitled 1.base | 3 + Untitled 1.canvas | 1 + Untitled.base | 3 + Untitled.canvas | 1 + 22 files changed, 3669 insertions(+) create mode 100644 .obsidian/app.json create mode 100644 .obsidian/appearance.json create mode 100644 .obsidian/community-plugins.json create mode 100644 .obsidian/core-plugins.json create mode 100644 .obsidian/plugins/obsidian-git/main.js create mode 100644 .obsidian/plugins/obsidian-git/manifest.json create mode 100755 .obsidian/plugins/obsidian-git/obsidian_askpass.sh create mode 100644 .obsidian/plugins/obsidian-git/styles.css create mode 100644 .obsidian/workspace.json create mode 100644 3_1/1-0.1.0.md create mode 100644 3_1/1-0.2.0.md create mode 100644 3_1/1v2.md create mode 100644 3_1/1v3correction.md create mode 100644 3_1/2.md create mode 100644 3_1/3practice.md create mode 100644 3_1/3v0.md create mode 100644 4.2/1.md create mode 100644 4.2/2.md create mode 100644 Untitled 1.base create mode 100644 Untitled 1.canvas create mode 100644 Untitled.base create mode 100644 Untitled.canvas diff --git a/.obsidian/app.json b/.obsidian/app.json new file mode 100644 index 0000000..0281356 --- /dev/null +++ b/.obsidian/app.json @@ -0,0 +1,3 @@ +{ + "vimMode": true +} \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.obsidian/appearance.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json new file mode 100644 index 0000000..d3f66fa --- /dev/null +++ b/.obsidian/community-plugins.json @@ -0,0 +1,3 @@ +[ + "obsidian-git" +] \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json new file mode 100644 index 0000000..1e23978 --- /dev/null +++ b/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "properties": false, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": true, + "webviewer": false, + "footnotes": false, + "bases": true +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js new file mode 100644 index 0000000..a66d505 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/main.js @@ -0,0 +1,426 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository (https://github.com/denolehov/obsidian-git) +*/ + +var X5=Object.create;var wl=Object.defineProperty;var K5=Object.getOwnPropertyDescriptor;var Z5=Object.getOwnPropertyNames;var J5=Object.getPrototypeOf,Q5=Object.prototype.hasOwnProperty;var by=t=>{throw TypeError(t)};var eI=(t,e,r)=>e in t?wl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var tI=(t,e)=>()=>(t&&(e=t(t=0)),e);var M=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),rI=(t,e)=>{for(var r in e)wl(t,r,{get:e[r],enumerable:!0})},_y=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Z5(e))!Q5.call(t,i)&&i!==r&&wl(t,i,{get:()=>e[i],enumerable:!(n=K5(e,i))||n.enumerable});return t};var Ot=(t,e,r)=>(r=t!=null?X5(J5(t)):{},_y(e||!t||!t.__esModule?wl(r,"default",{value:t,enumerable:!0}):r,t)),nI=t=>_y(wl({},"__esModule",{value:!0}),t);var vt=(t,e,r)=>eI(t,typeof e!="symbol"?e+"":e,r),wp=(t,e,r)=>e.has(t)||by("Cannot "+r);var ue=(t,e,r)=>(wp(t,e,"read from private field"),r?r.call(t):e.get(t)),yt=(t,e,r)=>e.has(t)?by("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),It=(t,e,r,n)=>(wp(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),di=(t,e,r)=>(wp(t,e,"access private method"),r);var Ey=M(Iu=>{"use strict";m();Iu.byteLength=aI;Iu.toByteArray=oI;Iu.fromByteArray=uI;var Mn=[],qr=[],iI=typeof Uint8Array!="undefined"?Uint8Array:Array,bp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Ra=0,xy=bp.length;Ra0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function aI(t){var e=Sy(t),r=e[0],n=e[1];return(r+n)*3/4-n}function sI(t,e,r){return(e+r)*3/4-r}function oI(t){var e,r=Sy(t),n=r[0],i=r[1],a=new iI(sI(t,n,i)),s=0,o=i>0?n-4:n,l;for(l=0;l>16&255,a[s++]=e>>8&255,a[s++]=e&255;return i===2&&(e=qr[t.charCodeAt(l)]<<2|qr[t.charCodeAt(l+1)]>>4,a[s++]=e&255),i===1&&(e=qr[t.charCodeAt(l)]<<10|qr[t.charCodeAt(l+1)]<<4|qr[t.charCodeAt(l+2)]>>2,a[s++]=e>>8&255,a[s++]=e&255),a}function lI(t){return Mn[t>>18&63]+Mn[t>>12&63]+Mn[t>>6&63]+Mn[t&63]}function cI(t,e,r){for(var n,i=[],a=e;ao?o:s+a));return n===1?(e=t[r-1],i.push(Mn[e>>2]+Mn[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(Mn[e>>10]+Mn[e>>4&63]+Mn[e<<2&63]+"=")),i.join("")}});var Ay=M(_p=>{m();_p.read=function(t,e,r,n,i){var a,s,o=i*8-n-1,l=(1<>1,u=-7,f=r?i-1:0,d=r?-1:1,h=t[e+f];for(f+=d,a=h&(1<<-u)-1,h>>=-u,u+=o;u>0;a=a*256+t[e+f],f+=d,u-=8);for(s=a&(1<<-u)-1,a>>=-u,u+=n;u>0;s=s*256+t[e+f],f+=d,u-=8);if(a===0)a=1-c;else{if(a===l)return s?NaN:(h?-1:1)*(1/0);s=s+Math.pow(2,n),a=a-c}return(h?-1:1)*s*Math.pow(2,a-n)};_p.write=function(t,e,r,n,i,a){var s,o,l,c=a*8-i-1,u=(1<>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,p=n?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(s++,l/=2),s+f>=u?(o=0,s=u):s+f>=1?(o=(e*l-1)*Math.pow(2,i),s=s+f):(o=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+h]=o&255,h+=p,o/=256,i-=8);for(s=s<0;t[r+h]=s&255,h+=p,s/=256,c-=8);t[r+h-p]|=g*128}});var Rp=M(Ls=>{"use strict";m();var xp=Ey(),$s=Ay(),ky=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Ls.Buffer=O;Ls.SlowBuffer=gI;Ls.INSPECT_MAX_BYTES=50;var Fu=2147483647;Ls.kMaxLength=Fu;O.TYPED_ARRAY_SUPPORT=fI();!O.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function fI(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch(t){return!1}}Object.defineProperty(O.prototype,"parent",{enumerable:!0,get:function(){if(O.isBuffer(this))return this.buffer}});Object.defineProperty(O.prototype,"offset",{enumerable:!0,get:function(){if(O.isBuffer(this))return this.byteOffset}});function hi(t){if(t>Fu)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,O.prototype),e}function O(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return kp(t)}return Ry(t,e,r)}O.poolSize=8192;function Ry(t,e,r){if(typeof t=="string")return hI(t,e);if(ArrayBuffer.isView(t))return pI(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(On(t,ArrayBuffer)||t&&On(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(On(t,SharedArrayBuffer)||t&&On(t.buffer,SharedArrayBuffer)))return Ep(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=t.valueOf&&t.valueOf();if(n!=null&&n!==t)return O.from(n,e,r);let i=mI(t);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return O.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}O.from=function(t,e,r){return Ry(t,e,r)};Object.setPrototypeOf(O.prototype,Uint8Array.prototype);Object.setPrototypeOf(O,Uint8Array);function My(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function dI(t,e,r){return My(t),t<=0?hi(t):e!==void 0?typeof r=="string"?hi(t).fill(e,r):hi(t).fill(e):hi(t)}O.alloc=function(t,e,r){return dI(t,e,r)};function kp(t){return My(t),hi(t<0?0:Tp(t)|0)}O.allocUnsafe=function(t){return kp(t)};O.allocUnsafeSlow=function(t){return kp(t)};function hI(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!O.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=Oy(t,e)|0,n=hi(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}function Sp(t){let e=t.length<0?0:Tp(t.length)|0,r=hi(e);for(let n=0;n=Fu)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Fu.toString(16)+" bytes");return t|0}function gI(t){return+t!=t&&(t=0),O.alloc(+t)}O.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==O.prototype};O.compare=function(e,r){if(On(e,Uint8Array)&&(e=O.from(e,e.offset,e.byteLength)),On(r,Uint8Array)&&(r=O.from(r,r.offset,r.byteLength)),!O.isBuffer(e)||!O.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let n=e.length,i=r.length;for(let a=0,s=Math.min(n,i);ai.length?(O.isBuffer(s)||(s=O.from(s)),s.copy(i,a)):Uint8Array.prototype.set.call(i,s,a);else if(O.isBuffer(s))s.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=s.length}return i};function Oy(t,e){if(O.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||On(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Ap(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Hy(t).length;default:if(i)return n?-1:Ap(t).length;e=(""+e).toLowerCase(),i=!0}}O.byteLength=Oy;function vI(t,e,r){let n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return TI(this,e,r);case"utf8":case"utf-8":return Fy(this,e,r);case"ascii":return AI(this,e,r);case"latin1":case"binary":return kI(this,e,r);case"base64":return SI(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return CI(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}O.prototype._isBuffer=!0;function Ma(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}O.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(e+=" ... "),""};ky&&(O.prototype[ky]=O.prototype.inspect);O.prototype.compare=function(e,r,n,i,a){if(On(e,Uint8Array)&&(e=O.from(e,e.offset,e.byteLength)),!O.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>e.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===e)return 0;let s=a-i,o=n-r,l=Math.min(s,o),c=this.slice(i,a),u=e.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,Pp(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof e=="string"&&(e=O.from(e,n)),O.isBuffer(e))return e.length===0?-1:Ty(t,e,r,n,i);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Ty(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Ty(t,e,r,n,i){let a=1,s=t.length,o=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return-1;a=2,s/=2,o/=2,r/=2}function l(u,f){return a===1?u[f]:u.readUInt16BE(f*a)}let c;if(i){let u=-1;for(c=r;cs&&(r=s-o),c=r;c>=0;c--){let u=!0;for(let f=0;fi&&(n=i)):n=i;let a=e.length;n>a/2&&(n=a/2);let s;for(s=0;s>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return yI(this,e,r,n);case"utf8":case"utf-8":return wI(this,e,r,n);case"ascii":case"latin1":case"binary":return bI(this,e,r,n);case"base64":return _I(this,e,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xI(this,e,r,n);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}};O.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function SI(t,e,r){return e===0&&r===t.length?xp.fromByteArray(t):xp.fromByteArray(t.slice(e,r))}function Fy(t,e,r){r=Math.min(t.length,r);let n=[],i=e;for(;i239?4:a>223?3:a>191?2:1;if(i+o<=r){let l,c,u,f;switch(o){case 1:a<128&&(s=a);break;case 2:l=t[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(s=f));break;case 3:l=t[i+1],c=t[i+2],(l&192)===128&&(c&192)===128&&(f=(a&15)<<12|(l&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(f=(a&15)<<18|(l&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(s=f))}}s===null?(s=65533,o=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=o}return EI(n)}var Cy=4096;function EI(t){let e=t.length;if(e<=Cy)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=e;an&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}O.prototype.readUintLE=O.prototype.readUIntLE=function(e,r,n){e=e>>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e],a=1,s=0;for(;++s>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e+--r],a=1;for(;r>0&&(a*=256);)i+=this[e+--r]*a;return i};O.prototype.readUint8=O.prototype.readUInt8=function(e,r){return e=e>>>0,r||bt(e,1,this.length),this[e]};O.prototype.readUint16LE=O.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||bt(e,2,this.length),this[e]|this[e+1]<<8};O.prototype.readUint16BE=O.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||bt(e,2,this.length),this[e]<<8|this[e+1]};O.prototype.readUint32LE=O.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};O.prototype.readUint32BE=O.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};O.prototype.readBigUInt64LE=Ui(function(e){e=e>>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,a=this[++e]+this[++e]*2**8+this[++e]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],a=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e],a=1,s=0;for(;++s=a&&(i-=Math.pow(2,8*r)),i};O.prototype.readIntBE=function(e,r,n){e=e>>>0,r=r>>>0,n||bt(e,r,this.length);let i=r,a=1,s=this[e+--i];for(;i>0&&(a*=256);)s+=this[e+--i]*a;return a*=128,s>=a&&(s-=Math.pow(2,8*r)),s};O.prototype.readInt8=function(e,r){return e=e>>>0,r||bt(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};O.prototype.readInt16LE=function(e,r){e=e>>>0,r||bt(e,2,this.length);let n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};O.prototype.readInt16BE=function(e,r){e=e>>>0,r||bt(e,2,this.length);let n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};O.prototype.readInt32LE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};O.prototype.readInt32BE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};O.prototype.readBigInt64LE=Ui(function(e){e=e>>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(n<<24);return(BigInt(i)<>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(i)<>>0,r||bt(e,4,this.length),$s.read(this,e,!0,23,4)};O.prototype.readFloatBE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),$s.read(this,e,!1,23,4)};O.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||bt(e,8,this.length),$s.read(this,e,!0,52,8)};O.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||bt(e,8,this.length),$s.read(this,e,!1,52,8)};function cr(t,e,r,n,i,a){if(!O.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}O.prototype.writeUintLE=O.prototype.writeUIntLE=function(e,r,n,i){if(e=+e,r=r>>>0,n=n>>>0,!i){let o=Math.pow(2,8*n)-1;cr(this,e,r,n,o,0)}let a=1,s=0;for(this[r]=e&255;++s>>0,n=n>>>0,!i){let o=Math.pow(2,8*n)-1;cr(this,e,r,n,o,0)}let a=n-1,s=1;for(this[r+a]=e&255;--a>=0&&(s*=256);)this[r+a]=e/s&255;return r+n};O.prototype.writeUint8=O.prototype.writeUInt8=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,1,255,0),this[r]=e&255,r+1};O.prototype.writeUint16LE=O.prototype.writeUInt16LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};O.prototype.writeUint16BE=O.prototype.writeUInt16BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};O.prototype.writeUint32LE=O.prototype.writeUInt32LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};O.prototype.writeUint32BE=O.prototype.writeUInt32BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function $y(t,e,r,n,i){By(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s,r}function Dy(t,e,r,n,i){By(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a=a>>8,t[r+6]=a,a=a>>8,t[r+5]=a,a=a>>8,t[r+4]=a;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s=s>>8,t[r+2]=s,s=s>>8,t[r+1]=s,s=s>>8,t[r]=s,r+8}O.prototype.writeBigUInt64LE=Ui(function(e,r=0){return $y(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});O.prototype.writeBigUInt64BE=Ui(function(e,r=0){return Dy(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});O.prototype.writeIntLE=function(e,r,n,i){if(e=+e,r=r>>>0,!i){let l=Math.pow(2,8*n-1);cr(this,e,r,n,l-1,-l)}let a=0,s=1,o=0;for(this[r]=e&255;++a>0)-o&255;return r+n};O.prototype.writeIntBE=function(e,r,n,i){if(e=+e,r=r>>>0,!i){let l=Math.pow(2,8*n-1);cr(this,e,r,n,l-1,-l)}let a=n-1,s=1,o=0;for(this[r+a]=e&255;--a>=0&&(s*=256);)e<0&&o===0&&this[r+a+1]!==0&&(o=1),this[r+a]=(e/s>>0)-o&255;return r+n};O.prototype.writeInt8=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};O.prototype.writeInt16LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};O.prototype.writeInt16BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};O.prototype.writeInt32LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};O.prototype.writeInt32BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};O.prototype.writeBigInt64LE=Ui(function(e,r=0){return $y(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});O.prototype.writeBigInt64BE=Ui(function(e,r=0){return Dy(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ly(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function jy(t,e,r,n,i){return e=+e,r=r>>>0,i||Ly(t,e,r,4,34028234663852886e22,-34028234663852886e22),$s.write(t,e,r,n,23,4),r+4}O.prototype.writeFloatLE=function(e,r,n){return jy(this,e,r,!0,n)};O.prototype.writeFloatBE=function(e,r,n){return jy(this,e,r,!1,n)};function Ny(t,e,r,n,i){return e=+e,r=r>>>0,i||Ly(t,e,r,8,17976931348623157e292,-17976931348623157e292),$s.write(t,e,r,n,52,8),r+8}O.prototype.writeDoubleLE=function(e,r,n){return Ny(this,e,r,!0,n)};O.prototype.writeDoubleBE=function(e,r,n){return Ny(this,e,r,!1,n)};O.prototype.copy=function(e,r,n,i){if(!O.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r>>0,n=n===void 0?this.length:n>>>0,e||(e=0);let a;if(typeof e=="number")for(a=r;a2**32?i=Py(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=Py(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n},RangeError);function Py(t){let e="",r=t.length,n=t[0]==="-"?1:0;for(;r>=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function PI(t,e,r){Ds(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&bl(e,t.length-(r+1))}function By(t,e,r,n,i,a){if(t>r||t3?e===0||e===BigInt(0)?o=`>= 0${s} and < 2${s} ** ${(a+1)*8}${s}`:o=`>= -(2${s} ** ${(a+1)*8-1}${s}) and < 2 ** ${(a+1)*8-1}${s}`:o=`>= ${e}${s} and <= ${r}${s}`,new Fs.ERR_OUT_OF_RANGE("value",o,t)}PI(n,i,a)}function Ds(t,e){if(typeof t!="number")throw new Fs.ERR_INVALID_ARG_TYPE(e,"number",t)}function bl(t,e,r){throw Math.floor(t)!==t?(Ds(t,r),new Fs.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new Fs.ERR_BUFFER_OUT_OF_BOUNDS:new Fs.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var RI=/[^+/0-9A-Za-z-_]/g;function MI(t){if(t=t.split("=")[0],t=t.trim().replace(RI,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function Ap(t,e){e=e||1/0;let r,n=t.length,i=null,a=[];for(let s=0;s55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}else if(s+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function OI(t){let e=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function Hy(t){return xp.toByteArray(MI(t))}function $u(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function On(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function Pp(t){return t!==t}var FI=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function Ui(t){return typeof BigInt=="undefined"?$I:t}function $I(){throw new Error("BigInt not supported")}});var Uy,Mp,Buffer,m=tI(()=>{Uy=require("obsidian");Uy.Platform.isMobileApp?Mp=Rp().Buffer:Mp=global.Buffer;Buffer=Mp});var zy=M((UV,Gy)=>{"use strict";m();var Cr=function(t){if(t=t||{},this.Promise=t.Promise||Promise,this.queues=Object.create(null),this.domainReentrant=t.domainReentrant||!1,this.domainReentrant){if(typeof process=="undefined"||typeof process.domain=="undefined")throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");this.domains=Object.create(null)}this.timeout=t.timeout||Cr.DEFAULT_TIMEOUT,this.maxOccupationTime=t.maxOccupationTime||Cr.DEFAULT_MAX_OCCUPATION_TIME,this.maxExecutionTime=t.maxExecutionTime||Cr.DEFAULT_MAX_EXECUTION_TIME,t.maxPending===1/0||Number.isInteger(t.maxPending)&&t.maxPending>=0?this.maxPending=t.maxPending:this.maxPending=Cr.DEFAULT_MAX_PENDING};Cr.DEFAULT_TIMEOUT=0;Cr.DEFAULT_MAX_OCCUPATION_TIME=0;Cr.DEFAULT_MAX_EXECUTION_TIME=0;Cr.DEFAULT_MAX_PENDING=1e3;Cr.prototype.acquire=function(t,e,r,n){if(Array.isArray(t))return this._acquireBatch(t,e,r,n);if(typeof e!="function")throw new Error("You must pass a function to execute");var i=null,a=null,s=null;typeof r!="function"&&(n=r,r=null,s=new this.Promise(function(b,E){i=b,a=E})),n=n||{};var o=!1,l=null,c=null,u=null,f=this,d=function(b,E,S){c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),b&&(f.queues[t]&&f.queues[t].length===0&&delete f.queues[t],f.domainReentrant&&delete f.domains[t]),o||(s?E?a(E):i(S):typeof r=="function"&&r(E,S),o=!0),b&&f.queues[t]&&f.queues[t].length>0&&f.queues[t].shift()()},h=function(b){if(o)return d(b);l&&(clearTimeout(l),l=null),f.domainReentrant&&b&&(f.domains[t]=process.domain);var E=n.maxExecutionTime||f.maxExecutionTime;if(E&&(u=setTimeout(function(){f.queues[t]&&d(b,new Error("Maximum execution time is exceeded "+t))},E)),e.length===1){var S=!1;try{e(function(A,k){S||(S=!0,d(b,A,k))})}catch(A){S||(S=!0,d(b,A))}}else f._promiseTry(function(){return e()}).then(function(A){d(b,void 0,A)},function(A){d(b,A)})};f.domainReentrant&&process.domain&&(h=process.domain.bind(h));var p=n.maxPending||f.maxPending;if(!f.queues[t])f.queues[t]=[],h(!0);else if(f.domainReentrant&&process.domain&&process.domain===f.domains[t])h(!1);else if(f.queues[t].length>=p)d(!1,new Error("Too many pending tasks in queue "+t));else{var g=function(){h(!0)};n.skipQueue?f.queues[t].unshift(g):f.queues[t].push(g);var v=n.timeout||f.timeout;v&&(l=setTimeout(function(){l=null,d(!1,new Error("async-lock timed out in queue "+t))},v))}var y=n.maxOccupationTime||f.maxOccupationTime;if(y&&(c=setTimeout(function(){f.queues[t]&&d(!1,new Error("Maximum occupation time is exceeded in queue "+t))},y)),s)return s};Cr.prototype._acquireBatch=function(t,e,r,n){typeof r!="function"&&(n=r,r=null);var i=this,a=function(o,l){return function(c){i.acquire(o,l,c,n)}},s=t.reduceRight(function(o,l){return a(l,o)},e);if(typeof r=="function")s(r);else return new this.Promise(function(o,l){s.length===1?s(function(c,u){c?l(c):o(u)}):o(s())})};Cr.prototype.isBusy=function(t){return t?!!this.queues[t]:Object.keys(this.queues).length>0};Cr.prototype._promiseTry=function(t){try{return this.Promise.resolve(t())}catch(e){return this.Promise.reject(e)}};Gy.exports=Cr});var qy=M((zV,Vy)=>{"use strict";m();Vy.exports=zy()});var Wy=M((qV,Op)=>{m();typeof Object.create=="function"?Op.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Op.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Lu=M((Ip,Xy)=>{m();var Du=Rp(),In=Du.Buffer;function Yy(t,e){for(var r in t)e[r]=t[r]}In.from&&In.alloc&&In.allocUnsafe&&In.allocUnsafeSlow?Xy.exports=Du:(Yy(Du,Ip),Ip.Buffer=Oa);function Oa(t,e,r){return In(t,e,r)}Oa.prototype=Object.create(In.prototype);Yy(In,Oa);Oa.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return In(t,e,r)};Oa.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=In(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};Oa.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return In(t)};Oa.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Du.SlowBuffer(t)}});var ju=M((XV,Ky)=>{m();var DI={}.toString;Ky.exports=Array.isArray||function(t){return DI.call(t)=="[object Array]"}});var ur=M((ZV,Zy)=>{"use strict";m();Zy.exports=TypeError});var Nu=M((QV,Jy)=>{"use strict";m();Jy.exports=Object});var Fp=M((tq,Qy)=>{"use strict";m();Qy.exports=Error});var tw=M((nq,ew)=>{"use strict";m();ew.exports=EvalError});var nw=M((aq,rw)=>{"use strict";m();rw.exports=RangeError});var aw=M((oq,iw)=>{"use strict";m();iw.exports=ReferenceError});var Bu=M((cq,sw)=>{"use strict";m();sw.exports=SyntaxError});var lw=M((fq,ow)=>{"use strict";m();ow.exports=URIError});var uw=M((hq,cw)=>{"use strict";m();cw.exports=Math.abs});var dw=M((mq,fw)=>{"use strict";m();fw.exports=Math.floor});var pw=M((vq,hw)=>{"use strict";m();hw.exports=Math.max});var gw=M((wq,mw)=>{"use strict";m();mw.exports=Math.min});var yw=M((_q,vw)=>{"use strict";m();vw.exports=Math.pow});var bw=M((Sq,ww)=>{"use strict";m();ww.exports=Math.round});var xw=M((Aq,_w)=>{"use strict";m();_w.exports=Number.isNaN||function(e){return e!==e}});var Ew=M((Tq,Sw)=>{"use strict";m();var LI=xw();Sw.exports=function(e){return LI(e)||e===0?e:e<0?-1:1}});var kw=M((Pq,Aw)=>{"use strict";m();Aw.exports=Object.getOwnPropertyDescriptor});var Gi=M((Mq,Tw)=>{"use strict";m();var Hu=kw();if(Hu)try{Hu([],"length")}catch(t){Hu=null}Tw.exports=Hu});var _l=M((Iq,Cw)=>{"use strict";m();var Uu=Object.defineProperty||!1;if(Uu)try{Uu({},"a",{value:1})}catch(t){Uu=!1}Cw.exports=Uu});var xl=M(($q,Pw)=>{"use strict";m();Pw.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[r]=i;for(var a in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var s=Object.getOwnPropertySymbols(e);if(s.length!==1||s[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var Gu=M((Lq,Mw)=>{"use strict";m();var Rw=typeof Symbol!="undefined"&&Symbol,jI=xl();Mw.exports=function(){return typeof Rw!="function"||typeof Symbol!="function"||typeof Rw("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:jI()}});var $p=M((Nq,Ow)=>{"use strict";m();Ow.exports=typeof Reflect!="undefined"&&Reflect.getPrototypeOf||null});var Dp=M((Hq,Iw)=>{"use strict";m();var NI=Nu();Iw.exports=NI.getPrototypeOf||null});var Dw=M((Gq,$w)=>{"use strict";m();var BI="Function.prototype.bind called on incompatible ",HI=Object.prototype.toString,UI=Math.max,GI="[object Function]",Fw=function(e,r){for(var n=[],i=0;i{"use strict";m();var qI=Dw();Lw.exports=Function.prototype.bind||qI});var zu=M((Wq,jw)=>{"use strict";m();jw.exports=Function.prototype.call});var Vu=M((Xq,Nw)=>{"use strict";m();Nw.exports=Function.prototype.apply});var Hw=M((Zq,Bw)=>{"use strict";m();Bw.exports=typeof Reflect!="undefined"&&Reflect&&Reflect.apply});var Lp=M((Qq,Uw)=>{"use strict";m();var WI=js(),YI=Vu(),XI=zu(),KI=Hw();Uw.exports=KI||WI.call(XI,YI)});var qu=M((tW,Gw)=>{"use strict";m();var ZI=js(),JI=ur(),QI=zu(),e6=Lp();Gw.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new JI("a function is required");return e6(ZI,QI,e)}});var Xw=M((nW,Yw)=>{"use strict";m();var t6=qu(),zw=Gi(),qw;try{qw=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var jp=!!qw&&zw&&zw(Object.prototype,"__proto__"),Ww=Object,Vw=Ww.getPrototypeOf;Yw.exports=jp&&typeof jp.get=="function"?t6([jp.get]):typeof Vw=="function"?function(e){return Vw(e==null?e:Ww(e))}:!1});var Wu=M((aW,Qw)=>{"use strict";m();var Kw=$p(),Zw=Dp(),Jw=Xw();Qw.exports=Kw?function(e){return Kw(e)}:Zw?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Zw(e)}:Jw?function(e){return Jw(e)}:null});var Yu=M((oW,eb)=>{"use strict";m();var r6=Function.prototype.call,n6=Object.prototype.hasOwnProperty,i6=js();eb.exports=i6.call(r6,n6)});var Fn=M((cW,sb)=>{"use strict";m();var be,a6=Nu(),s6=Fp(),o6=tw(),l6=nw(),c6=aw(),Us=Bu(),Hs=ur(),u6=lw(),f6=uw(),d6=dw(),h6=pw(),p6=gw(),m6=yw(),g6=bw(),v6=Ew(),ib=Function,Np=function(t){try{return ib('"use strict"; return ('+t+").constructor;")()}catch(e){}},Sl=Gi(),y6=_l(),Bp=function(){throw new Hs},w6=Sl?function(){try{return arguments.callee,Bp}catch(t){try{return Sl(arguments,"callee").get}catch(e){return Bp}}}():Bp,Ns=Gu()(),_t=Wu(),b6=Dp(),_6=$p(),ab=Vu(),El=zu(),Bs={},x6=typeof Uint8Array=="undefined"||!_t?be:_t(Uint8Array),Ia={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?be:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?be:ArrayBuffer,"%ArrayIteratorPrototype%":Ns&&_t?_t([][Symbol.iterator]()):be,"%AsyncFromSyncIteratorPrototype%":be,"%AsyncFunction%":Bs,"%AsyncGenerator%":Bs,"%AsyncGeneratorFunction%":Bs,"%AsyncIteratorPrototype%":Bs,"%Atomics%":typeof Atomics=="undefined"?be:Atomics,"%BigInt%":typeof BigInt=="undefined"?be:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?be:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?be:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?be:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":s6,"%eval%":eval,"%EvalError%":o6,"%Float16Array%":typeof Float16Array=="undefined"?be:Float16Array,"%Float32Array%":typeof Float32Array=="undefined"?be:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?be:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?be:FinalizationRegistry,"%Function%":ib,"%GeneratorFunction%":Bs,"%Int8Array%":typeof Int8Array=="undefined"?be:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?be:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?be:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ns&&_t?_t(_t([][Symbol.iterator]())):be,"%JSON%":typeof JSON=="object"?JSON:be,"%Map%":typeof Map=="undefined"?be:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!Ns||!_t?be:_t(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":a6,"%Object.getOwnPropertyDescriptor%":Sl,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?be:Promise,"%Proxy%":typeof Proxy=="undefined"?be:Proxy,"%RangeError%":l6,"%ReferenceError%":c6,"%Reflect%":typeof Reflect=="undefined"?be:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?be:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!Ns||!_t?be:_t(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?be:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ns&&_t?_t(""[Symbol.iterator]()):be,"%Symbol%":Ns?Symbol:be,"%SyntaxError%":Us,"%ThrowTypeError%":w6,"%TypedArray%":x6,"%TypeError%":Hs,"%Uint8Array%":typeof Uint8Array=="undefined"?be:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?be:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?be:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?be:Uint32Array,"%URIError%":u6,"%WeakMap%":typeof WeakMap=="undefined"?be:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?be:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?be:WeakSet,"%Function.prototype.call%":El,"%Function.prototype.apply%":ab,"%Object.defineProperty%":y6,"%Object.getPrototypeOf%":b6,"%Math.abs%":f6,"%Math.floor%":d6,"%Math.max%":h6,"%Math.min%":p6,"%Math.pow%":m6,"%Math.round%":g6,"%Math.sign%":v6,"%Reflect.getPrototypeOf%":_6};if(_t)try{null.error}catch(t){tb=_t(_t(t)),Ia["%Error.prototype%"]=tb}var tb,S6=function t(e){var r;if(e==="%AsyncFunction%")r=Np("async function () {}");else if(e==="%GeneratorFunction%")r=Np("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=Np("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&_t&&(r=_t(i.prototype))}return Ia[e]=r,r},rb={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Al=js(),Xu=Yu(),E6=Al.call(El,Array.prototype.concat),A6=Al.call(ab,Array.prototype.splice),nb=Al.call(El,String.prototype.replace),Ku=Al.call(El,String.prototype.slice),k6=Al.call(El,RegExp.prototype.exec),T6=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,C6=/\\(\\)?/g,P6=function(e){var r=Ku(e,0,1),n=Ku(e,-1);if(r==="%"&&n!=="%")throw new Us("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new Us("invalid intrinsic syntax, expected opening `%`");var i=[];return nb(e,T6,function(a,s,o,l){i[i.length]=o?nb(l,C6,"$1"):s||a}),i},R6=function(e,r){var n=e,i;if(Xu(rb,n)&&(i=rb[n],n="%"+i[0]+"%"),Xu(Ia,n)){var a=Ia[n];if(a===Bs&&(a=S6(n)),typeof a=="undefined"&&!r)throw new Hs("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new Us("intrinsic "+e+" does not exist!")};sb.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new Hs("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Hs('"allowMissing" argument must be a boolean');if(k6(/^%?[^%]*%?$/,e)===null)throw new Us("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=P6(e),i=n.length>0?n[0]:"",a=R6("%"+i+"%",r),s=a.name,o=a.value,l=!1,c=a.alias;c&&(i=c[0],A6(n,E6([0,1],c)));for(var u=1,f=!0;u=n.length){var g=Sl(o,d);f=!!g,f&&"get"in g&&!("originalValue"in g.get)?o=g.get:o=o[d]}else f=Xu(o,d),o=o[d];f&&!l&&(Ia[s]=o)}}return o}});var xt=M((fW,cb)=>{"use strict";m();var ob=Fn(),lb=qu(),M6=lb([ob("%String.prototype.indexOf%")]);cb.exports=function(e,r){var n=ob(e,!!r);return typeof n=="function"&&M6(e,".prototype.")>-1?lb([n]):n}});var hb=M((hW,db)=>{"use strict";m();var fb=Function.prototype.toString,Gs=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,Up,Zu;if(typeof Gs=="function"&&typeof Object.defineProperty=="function")try{Up=Object.defineProperty({},"length",{get:function(){throw Zu}}),Zu={},Gs(function(){throw 42},null,Up)}catch(t){t!==Zu&&(Gs=null)}else Gs=null;var O6=/^\s*class\b/,Gp=function(e){try{var r=fb.call(e);return O6.test(r)}catch(n){return!1}},Hp=function(e){try{return Gp(e)?!1:(fb.call(e),!0)}catch(r){return!1}},Ju=Object.prototype.toString,I6="[object Object]",F6="[object Function]",$6="[object GeneratorFunction]",D6="[object HTMLAllCollection]",L6="[object HTML document.all class]",j6="[object HTMLCollection]",N6=typeof Symbol=="function"&&!!Symbol.toStringTag,B6=!(0 in[,]),zp=function(){return!1};typeof document=="object"&&(ub=document.all,Ju.call(ub)===Ju.call(document.all)&&(zp=function(e){if((B6||!e)&&(typeof e=="undefined"||typeof e=="object"))try{var r=Ju.call(e);return(r===D6||r===L6||r===j6||r===I6)&&e("")==null}catch(n){}return!1}));var ub;db.exports=Gs?function(e){if(zp(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{Gs(e,null,Up)}catch(r){if(r!==Zu)return!1}return!Gp(e)&&Hp(e)}:function(e){if(zp(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;if(N6)return Hp(e);if(Gp(e))return!1;var r=Ju.call(e);return r!==F6&&r!==$6&&!/^\[object HTML/.test(r)?!1:Hp(e)}});var gb=M((mW,mb)=>{"use strict";m();var H6=hb(),U6=Object.prototype.toString,pb=Object.prototype.hasOwnProperty,G6=function(e,r,n){for(var i=0,a=e.length;i=3&&(i=n),q6(e)?G6(e,r,i):typeof e=="string"?z6(e,r,i):V6(e,r,i)}});var yb=M((vW,vb)=>{"use strict";m();vb.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]});var bb=M((wW,wb)=>{"use strict";m();var Vp=yb(),W6=typeof globalThis=="undefined"?global:globalThis;wb.exports=function(){for(var e=[],r=0;r{"use strict";m();var _b=_l(),Y6=Bu(),zs=ur(),xb=Gi();Sb.exports=function(e,r,n){if(!e||typeof e!="object"&&typeof e!="function")throw new zs("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new zs("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new zs("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new zs("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new zs("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new zs("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,l=!!xb&&xb(e,r);if(_b)_b(e,r,{configurable:s===null&&l?l.configurable:!s,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(o||!i&&!a&&!s)e[r]=n;else throw new Y6("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var ef=M((SW,Ab)=>{"use strict";m();var qp=_l(),Eb=function(){return!!qp};Eb.hasArrayLengthDefineBug=function(){if(!qp)return null;try{return qp([],"length",{value:1}).length!==1}catch(e){return!0}};Ab.exports=Eb});var Rb=M((AW,Pb)=>{"use strict";m();var X6=Fn(),kb=Qu(),K6=ef()(),Tb=Gi(),Cb=ur(),Z6=X6("%Math.floor%");Pb.exports=function(e,r){if(typeof e!="function")throw new Cb("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||Z6(r)!==r)throw new Cb("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in e&&Tb){var s=Tb(e,"length");s&&!s.configurable&&(i=!1),s&&!s.writable&&(a=!1)}return(i||a||!n)&&(K6?kb(e,"length",r,!0,!0):kb(e,"length",r)),e}});var Ob=M((TW,Mb)=>{"use strict";m();var J6=js(),Q6=Vu(),eF=Lp();Mb.exports=function(){return eF(J6,Q6,arguments)}});var Fa=M((PW,tf)=>{"use strict";m();var tF=Rb(),Ib=_l(),rF=qu(),Fb=Ob();tf.exports=function(e){var r=rF(arguments),n=e.length-(arguments.length-1);return tF(r,1+(n>0?n:0),!0)};Ib?Ib(tf.exports,"apply",{value:Fb}):tf.exports.apply=Fb});var zi=M((MW,$b)=>{"use strict";m();var nF=xl();$b.exports=function(){return nF()&&!!Symbol.toStringTag}});var Kp=M((IW,Nb)=>{"use strict";m();var af=gb(),iF=bb(),Db=Fa(),Yp=xt(),nf=Gi(),rf=Wu(),aF=Yp("Object.prototype.toString"),jb=zi()(),Lb=typeof globalThis=="undefined"?global:globalThis,Wp=iF(),Xp=Yp("String.prototype.slice"),sF=Yp("Array.prototype.indexOf",!0)||function(e,r){for(var n=0;n-1?r:r!=="Object"?!1:lF(e)}return nf?oF(e):null}});var Hb=M(($W,Bb)=>{"use strict";m();var cF=Kp();Bb.exports=function(e){return!!cF(e)}});var Gb=M((LW,Ub)=>{"use strict";m();var uF=ur(),fF=xt(),dF=fF("TypedArray.prototype.buffer",!0),hF=Hb();Ub.exports=dF||function(e){if(!hF(e))throw new uF("Not a Typed Array");return e.buffer}});var qb=M((NW,Vb)=>{"use strict";m();var $n=Lu().Buffer,pF=ju(),mF=Gb(),gF=ArrayBuffer.isView||function(e){try{return mF(e),!0}catch(r){return!1}},vF=typeof Uint8Array!="undefined",zb=typeof ArrayBuffer!="undefined"&&typeof Uint8Array!="undefined",yF=zb&&($n.prototype instanceof Uint8Array||$n.TYPED_ARRAY_SUPPORT);Vb.exports=function(e,r){if(e instanceof $n)return e;if(typeof e=="string")return $n.from(e,r);if(zb&&gF(e)){if(e.byteLength===0)return $n.alloc(0);if(yF){var n=$n.from(e.buffer,e.byteOffset,e.byteLength);if(n.byteLength===e.byteLength)return n}var i=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),a=$n.from(i);if(a.length===e.byteLength)return a}if(vF&&e instanceof Uint8Array)return $n.from(e);var s=pF(e);if(s)for(var o=0;o255||~~l!==l)throw new RangeError("Array items must be numbers in the range 0-255.")}if(s||$n.isBuffer(e)&&e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e))return $n.from(e);throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}});var Yb=M((HW,Wb)=>{"use strict";m();var wF=Lu().Buffer,bF=qb();function of(t,e){this._block=wF.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}of.prototype.update=function(t,e){t=bF(t,e||"utf8");for(var r=this._block,n=this._blockSize,i=t.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(r&4294967295)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a};of.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Wb.exports=of});var Zb=M((GW,Kb)=>{"use strict";m();var _F=Wy(),Xb=Yb(),xF=Lu().Buffer,SF=[1518500249,1859775393,-1894007588,-899497514],EF=new Array(80);function kl(){this.init(),this._w=EF,Xb.call(this,64,56)}_F(kl,Xb);kl.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function AF(t){return t<<1|t>>>31}function kF(t){return t<<5|t>>>27}function TF(t){return t<<30|t>>>2}function CF(t,e,r,n){return t===0?e&r|~e&n:t===2?e&r|e&n|r&n:e^r^n}kl.prototype._update=function(t){for(var e=this._w,r=this._a|0,n=this._b|0,i=this._c|0,a=this._d|0,s=this._e|0,o=0;o<16;++o)e[o]=t.readInt32BE(o*4);for(;o<80;++o)e[o]=AF(e[o-3]^e[o-8]^e[o-14]^e[o-16]);for(var l=0;l<80;++l){var c=~~(l/20),u=kF(r)+CF(c,n,i,a)+s+e[l]+SF[c]|0;s=a,a=i,i=TF(n),n=r,r=u}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0};kl.prototype._hash=function(){var t=xF.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Kb.exports=kl});var e2=M((VW,Qb)=>{"use strict";m();function Dn(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function Jb(t,e){for(var r="",n=0,i=-1,a=0,s,o=0;o<=t.length;++o){if(o2){var l=r.lastIndexOf("/");if(l!==r.length-1){l===-1?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),i=o,a=0;continue}}else if(r.length===2||r.length===1){r="",n=0,i=o,a=0;continue}}e&&(r.length>0?r+="/..":r="..",n=2)}else r.length>0?r+="/"+t.slice(i+1,o):r=t.slice(i+1,o),n=o-i-1;i=o,a=0}else s===46&&a!==-1?++a:a=-1}return r}function PF(t,e){var r=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return r?r===e.root?r+n:r+t+n:n}var Vs={resolve:function(){for(var e="",r=!1,n,i=arguments.length-1;i>=-1&&!r;i--){var a;i>=0?a=arguments[i]:(n===void 0&&(n=process.cwd()),a=n),Dn(a),a.length!==0&&(e=a+"/"+e,r=a.charCodeAt(0)===47)}return e=Jb(e,!r),r?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(e){if(Dn(e),e.length===0)return".";var r=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47;return e=Jb(e,!r),e.length===0&&!r&&(e="."),e.length>0&&n&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return Dn(e),e.length>0&&e.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var e,r=0;r0&&(e===void 0?e=n:e+="/"+n)}return e===void 0?".":Vs.normalize(e)},relative:function(e,r){if(Dn(e),Dn(r),e===r||(e=Vs.resolve(e),r=Vs.resolve(r),e===r))return"";for(var n=1;nc){if(r.charCodeAt(s+f)===47)return r.slice(s+f+1);if(f===0)return r.slice(s+f)}else a>c&&(e.charCodeAt(n+f)===47?u=f:f===0&&(u=0));break}var d=e.charCodeAt(n+f),h=r.charCodeAt(s+f);if(d!==h)break;d===47&&(u=f)}var p="";for(f=n+u+1;f<=i;++f)(f===i||e.charCodeAt(f)===47)&&(p.length===0?p+="..":p+="/..");return p.length>0?p+r.slice(s+u):(s+=u,r.charCodeAt(s)===47&&++s,r.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(Dn(e),e.length===0)return".";for(var r=e.charCodeAt(0),n=r===47,i=-1,a=!0,s=e.length-1;s>=1;--s)if(r=e.charCodeAt(s),r===47){if(!a){i=s;break}}else a=!1;return i===-1?n?"/":".":n&&i===1?"//":e.slice(0,i)},basename:function(e,r){if(r!==void 0&&typeof r!="string")throw new TypeError('"ext" argument must be a string');Dn(e);var n=0,i=-1,a=!0,s;if(r!==void 0&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var o=r.length-1,l=-1;for(s=e.length-1;s>=0;--s){var c=e.charCodeAt(s);if(c===47){if(!a){n=s+1;break}}else l===-1&&(a=!1,l=s+1),o>=0&&(c===r.charCodeAt(o)?--o===-1&&(i=s):(o=-1,i=l))}return n===i?i=l:i===-1&&(i=e.length),e.slice(n,i)}else{for(s=e.length-1;s>=0;--s)if(e.charCodeAt(s)===47){if(!a){n=s+1;break}}else i===-1&&(a=!1,i=s+1);return i===-1?"":e.slice(n,i)}},extname:function(e){Dn(e);for(var r=-1,n=0,i=-1,a=!0,s=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(l===47){if(!a){n=o+1;break}continue}i===-1&&(a=!1,i=o+1),l===46?r===-1?r=o:s!==1&&(s=1):r!==-1&&(s=-1)}return r===-1||i===-1||s===0||s===1&&r===i-1&&r===n+1?"":e.slice(r,i)},format:function(e){if(e===null||typeof e!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return PF("/",e)},parse:function(e){Dn(e);var r={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return r;var n=e.charCodeAt(0),i=n===47,a;i?(r.root="/",a=1):a=0;for(var s=-1,o=0,l=-1,c=!0,u=e.length-1,f=0;u>=a;--u){if(n=e.charCodeAt(u),n===47){if(!c){o=u+1;break}continue}l===-1&&(c=!1,l=u+1),n===46?s===-1?s=u:f!==1&&(f=1):s!==-1&&(f=-1)}return s===-1||l===-1||f===0||f===1&&s===l-1&&s===o+1?l!==-1&&(o===0&&i?r.base=r.name=e.slice(1,l):r.base=r.name=e.slice(o,l)):(o===0&&i?(r.name=e.slice(1,s),r.base=e.slice(1,l)):(r.name=e.slice(o,s),r.base=e.slice(o,l)),r.ext=e.slice(s,l)),o>0?r.dir=e.slice(0,o-1):i&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};Vs.posix=Vs;Qb.exports=Vs});var r2=M(Zp=>{m();var t2;(function(t){typeof DO_NOT_EXPORT_CRC=="undefined"?typeof Zp=="object"?t(Zp):typeof define=="function"&&define.amd?define(function(){var e={};return t(e),e}):t(t2={}):t(t2={})})(function(t){t.version="1.2.2";function e(){for(var w=0,x=new Array(256),_=0;_!=256;++_)w=_,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,x[_]=w;return typeof Int32Array!="undefined"?new Int32Array(x):x}var r=e();function n(w){var x=0,_=0,T=0,C=typeof Int32Array!="undefined"?new Int32Array(4096):new Array(4096);for(T=0;T!=256;++T)C[T]=w[T];for(T=0;T!=256;++T)for(_=w[T],x=256+T;x<4096;x+=256)_=C[x]=_>>>8^w[_&255];var I=[];for(T=1;T!=16;++T)I[T-1]=typeof Int32Array!="undefined"?C.subarray(T*256,T*256+256):C.slice(T*256,T*256+256);return I}var i=n(r),a=i[0],s=i[1],o=i[2],l=i[3],c=i[4],u=i[5],f=i[6],d=i[7],h=i[8],p=i[9],g=i[10],v=i[11],y=i[12],b=i[13],E=i[14];function S(w,x){for(var _=x^-1,T=0,C=w.length;T>>8^r[(_^w.charCodeAt(T++))&255];return~_}function A(w,x){for(var _=x^-1,T=w.length-15,C=0;C>8&255]^y[w[C++]^_>>16&255]^v[w[C++]^_>>>24]^g[w[C++]]^p[w[C++]]^h[w[C++]]^d[w[C++]]^f[w[C++]]^u[w[C++]]^c[w[C++]]^l[w[C++]]^o[w[C++]]^s[w[C++]]^a[w[C++]]^r[w[C++]];for(T+=15;C>>8^r[(_^w[C++])&255];return~_}function k(w,x){for(var _=x^-1,T=0,C=w.length,I=0,L=0;T>>8^r[(_^I)&255]:I<2048?(_=_>>>8^r[(_^(192|I>>6&31))&255],_=_>>>8^r[(_^(128|I&63))&255]):I>=55296&&I<57344?(I=(I&1023)+64,L=w.charCodeAt(T++)&1023,_=_>>>8^r[(_^(240|I>>8&7))&255],_=_>>>8^r[(_^(128|I>>2&63))&255],_=_>>>8^r[(_^(128|L>>6&15|(I&3)<<4))&255],_=_>>>8^r[(_^(128|L&63))&255]):(_=_>>>8^r[(_^(224|I>>12&15))&255],_=_>>>8^r[(_^(128|I>>6&63))&255],_=_>>>8^r[(_^(128|I&63))&255]);return~_}t.table=r,t.bstr=S,t.buf=A,t.str=k})});var pi=M(Qt=>{"use strict";m();var RF=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Int32Array!="undefined";function MF(t,e){return Object.prototype.hasOwnProperty.call(t,e)}Qt.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(var n in r)MF(r,n)&&(t[n]=r[n])}}return t};Qt.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var OF={arraySet:function(t,e,r,n,i){if(e.subarray&&t.subarray){t.set(e.subarray(r,r+n),i);return}for(var a=0;a{"use strict";m();var FF=pi(),$F=4,n2=0,i2=1,DF=2;function Ws(t){for(var e=t.length;--e>=0;)t[e]=0}var LF=0,u2=1,jF=2,NF=3,BF=258,im=29,Ol=256,Cl=Ol+1+im,qs=30,am=19,f2=2*Cl+1,$a=15,Jp=16,HF=7,sm=256,d2=16,h2=17,p2=18,rm=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],lf=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],UF=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],m2=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],GF=512,mi=new Array((Cl+2)*2);Ws(mi);var Tl=new Array(qs*2);Ws(Tl);var Pl=new Array(GF);Ws(Pl);var Rl=new Array(BF-NF+1);Ws(Rl);var om=new Array(im);Ws(om);var cf=new Array(qs);Ws(cf);function Qp(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}var g2,v2,y2;function em(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function w2(t){return t<256?Pl[t]:Pl[256+(t>>>7)]}function Ml(t,e){t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255}function fr(t,e,r){t.bi_valid>Jp-r?(t.bi_buf|=e<>Jp-t.bi_valid,t.bi_valid+=r-Jp):(t.bi_buf|=e<>>=1,r<<=1;while(--e>0);return r>>>1}function zF(t){t.bi_valid===16?(Ml(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)}function VF(t,e){var r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,s=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length,c,u,f,d,h,p,g=0;for(d=0;d<=$a;d++)t.bl_count[d]=0;for(r[t.heap[t.heap_max]*2+1]=0,c=t.heap_max+1;cl&&(d=l,g++),r[u*2+1]=d,!(u>n)&&(t.bl_count[d]++,h=0,u>=o&&(h=s[u-o]),p=r[u*2],t.opt_len+=p*(d+h),a&&(t.static_len+=p*(i[u*2+1]+h)));if(g!==0){do{for(d=l-1;t.bl_count[d]===0;)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(d=l;d!==0;d--)for(u=t.bl_count[d];u!==0;)f=t.heap[--c],!(f>n)&&(r[f*2+1]!==d&&(t.opt_len+=(d-r[f*2+1])*r[f*2],r[f*2+1]=d),u--)}}function _2(t,e,r){var n=new Array($a+1),i=0,a,s;for(a=1;a<=$a;a++)n[a]=i=i+r[a-1]<<1;for(s=0;s<=e;s++){var o=t[s*2+1];o!==0&&(t[s*2]=b2(n[o]++,o))}}function qF(){var t,e,r,n,i,a=new Array($a+1);for(r=0,n=0;n>=7;n8?Ml(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function WF(t,e,r,n){S2(t),n&&(Ml(t,r),Ml(t,~r)),FF.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}function a2(t,e,r,n){var i=e*2,a=r*2;return t[i]>1;s>=1;s--)tm(t,r,s);c=a;do s=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tm(t,r,1),o=t.heap[1],t.heap[--t.heap_max]=s,t.heap[--t.heap_max]=o,r[c*2]=r[s*2]+r[o*2],t.depth[c]=(t.depth[s]>=t.depth[o]?t.depth[s]:t.depth[o])+1,r[s*2+1]=r[o*2+1]=c,t.heap[1]=c++,tm(t,r,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],VF(t,e),_2(r,l,t.bl_count)}function o2(t,e,r){var n,i=-1,a,s=e[0*2+1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),e[(r+1)*2+1]=65535,n=0;n<=r;n++)a=s,s=e[(n+1)*2+1],!(++o=3&&t.bl_tree[m2[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e}function XF(t,e,r,n){var i;for(fr(t,e-257,5),fr(t,r-1,5),fr(t,n-4,4),i=0;i>>=1)if(e&1&&t.dyn_ltree[r*2]!==0)return n2;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return i2;for(r=32;r0?(t.strm.data_type===DF&&(t.strm.data_type=KF(t)),nm(t,t.l_desc),nm(t,t.d_desc),s=YF(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&e!==-1?E2(t,e,r,n):t.strategy===$F||a===i?(fr(t,(u2<<1)+(n?1:0),3),s2(t,mi,Tl)):(fr(t,(jF<<1)+(n?1:0),3),XF(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),s2(t,t.dyn_ltree,t.dyn_dtree)),x2(t),n&&S2(t)}function e$(t,e,r){return t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=r&255,t.last_lit++,e===0?t.dyn_ltree[r*2]++:(t.matches++,e--,t.dyn_ltree[(Rl[r]+Ol+1)*2]++,t.dyn_dtree[w2(e)*2]++),t.last_lit===t.lit_bufsize-1}Ys._tr_init=ZF;Ys._tr_stored_block=E2;Ys._tr_flush_block=QF;Ys._tr_tally=e$;Ys._tr_align=JF});var lm=M((QW,k2)=>{"use strict";m();function t$(t,e,r,n){for(var i=t&65535|0,a=t>>>16&65535|0,s=0;r!==0;){s=r>2e3?2e3:r,r-=s;do i=i+e[n++]|0,a=a+i|0;while(--s);i%=65521,a%=65521}return i|a<<16|0}k2.exports=t$});var cm=M((tY,T2)=>{"use strict";m();function r$(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[r]=t}return e}var n$=r$();function i$(t,e,r,n){var i=n$,a=n+r;t^=-1;for(var s=n;s>>8^i[(t^e[s])&255];return t^-1}T2.exports=i$});var uf=M((nY,C2)=>{"use strict";m();C2.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var L2=M(Bn=>{"use strict";m();var er=pi(),Wr=A2(),O2=lm(),Vi=cm(),a$=uf(),Na=0,s$=1,o$=3,Ki=4,P2=5,Nn=0,R2=1,Yr=-2,l$=-3,um=-5,c$=-1,u$=1,ff=2,f$=3,d$=4,h$=0,p$=2,mf=8,m$=9,g$=15,v$=8,y$=29,w$=256,dm=w$+1+y$,b$=30,_$=19,x$=2*dm+1,S$=15,Ee=3,Yi=258,dn=Yi+Ee+1,E$=32,gf=42,hm=69,df=73,hf=91,pf=103,Da=113,Fl=666,wt=1,$l=2,La=3,Zs=4,A$=3;function Xi(t,e){return t.msg=a$[e],e}function M2(t){return(t<<1)-(t>4?9:0)}function Wi(t){for(var e=t.length;--e>=0;)t[e]=0}function qi(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),r!==0&&(er.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,e.pending===0&&(e.pending_out=0))}function Ft(t,e){Wr._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,qi(t.strm)}function Re(t,e){t.pending_buf[t.pending++]=e}function Il(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255}function k$(t,e,r,n){var i=t.avail_in;return i>n&&(i=n),i===0?0:(t.avail_in-=i,er.arraySet(e,t.input,t.next_in,i,r),t.state.wrap===1?t.adler=O2(t.adler,e,i,r):t.state.wrap===2&&(t.adler=Vi(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)}function I2(t,e){var r=t.max_chain_length,n=t.strstart,i,a,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-dn?t.strstart-(t.w_size-dn):0,c=t.window,u=t.w_mask,f=t.prev,d=t.strstart+Yi,h=c[n+s-1],p=c[n+s];t.prev_length>=t.good_match&&(r>>=2),o>t.lookahead&&(o=t.lookahead);do if(i=e,!(c[i+s]!==p||c[i+s-1]!==h||c[i]!==c[n]||c[++i]!==c[n+1])){n+=2,i++;do;while(c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&ns){if(t.match_start=e,s=a,a>=o)break;h=c[n+s-1],p=c[n+s]}}while((e=f[e&u])>l&&--r!==0);return s<=t.lookahead?s:t.lookahead}function ja(t){var e=t.w_size,r,n,i,a,s;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-dn)){er.arraySet(t.window,t.window,e,e,0),t.match_start-=e,t.strstart-=e,t.block_start-=e,n=t.hash_size,r=n;do i=t.head[--r],t.head[r]=i>=e?i-e:0;while(--n);n=e,r=n;do i=t.prev[--r],t.prev[r]=i>=e?i-e:0;while(--n);a+=e}if(t.strm.avail_in===0)break;if(n=k$(t.strm,t.window,t.strstart+t.lookahead,a),t.lookahead+=n,t.lookahead+t.insert>=Ee)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(ja(t),t.lookahead===0&&e===Na)return wt;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+r;if((t.strstart===0||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Ft(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-dn&&(Ft(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?(Ft(t,!0),t.strm.avail_out===0?La:Zs):(t.strstart>t.block_start&&(Ft(t,!1),t.strm.avail_out===0),wt)}function fm(t,e){for(var r,n;;){if(t.lookahead=Ee&&(t.ins_h=(t.ins_h<=Ee)if(n=Wr._tr_tally(t,t.strstart-t.match_start,t.match_length-Ee),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=Ee){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<=Ee&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=Ee-1)),t.prev_length>=Ee&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-Ee,n=Wr._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-Ee),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=(t.ins_h<=Ee&&t.strstart>0&&(i=t.strstart-1,n=s[i],n===s[++i]&&n===s[++i]&&n===s[++i])){a=t.strstart+Yi;do;while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=Ee?(r=Wr._tr_tally(t,1,t.match_length-Ee),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=Wr._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Ft(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?(Ft(t,!0),t.strm.avail_out===0?La:Zs):t.last_lit&&(Ft(t,!1),t.strm.avail_out===0)?wt:$l}function P$(t,e){for(var r;;){if(t.lookahead===0&&(ja(t),t.lookahead===0)){if(e===Na)return wt;break}if(t.match_length=0,r=Wr._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Ft(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?(Ft(t,!0),t.strm.avail_out===0?La:Zs):t.last_lit&&(Ft(t,!1),t.strm.avail_out===0)?wt:$l}function jn(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}var Ks;Ks=[new jn(0,0,0,0,T$),new jn(4,4,8,4,fm),new jn(4,5,16,8,fm),new jn(4,6,32,32,fm),new jn(4,4,16,16,Xs),new jn(8,16,32,32,Xs),new jn(8,16,128,128,Xs),new jn(8,32,128,256,Xs),new jn(32,128,258,1024,Xs),new jn(32,258,258,4096,Xs)];function R$(t){t.window_size=2*t.w_size,Wi(t.head),t.max_lazy_match=Ks[t.level].max_lazy,t.good_match=Ks[t.level].good_length,t.nice_match=Ks[t.level].nice_length,t.max_chain_length=Ks[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=Ee-1,t.match_available=0,t.ins_h=0}function M$(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=mf,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new er.Buf16(x$*2),this.dyn_dtree=new er.Buf16((2*b$+1)*2),this.bl_tree=new er.Buf16((2*_$+1)*2),Wi(this.dyn_ltree),Wi(this.dyn_dtree),Wi(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new er.Buf16(S$+1),this.heap=new er.Buf16(2*dm+1),Wi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new er.Buf16(2*dm+1),Wi(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function F2(t){var e;return!t||!t.state?Xi(t,Yr):(t.total_in=t.total_out=0,t.data_type=p$,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?gf:Da,t.adler=e.wrap===2?0:1,e.last_flush=Na,Wr._tr_init(e),Nn)}function $2(t){var e=F2(t);return e===Nn&&R$(t.state),e}function O$(t,e){return!t||!t.state||t.state.wrap!==2?Yr:(t.state.gzhead=e,Nn)}function D2(t,e,r,n,i,a){if(!t)return Yr;var s=1;if(e===c$&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),i<1||i>m$||r!==mf||n<8||n>15||e<0||e>9||a<0||a>d$)return Xi(t,Yr);n===8&&(n=9);var o=new M$;return t.state=o,o.strm=t,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<P2||e<0)return t?Xi(t,Yr):Yr;if(n=t.state,!t.output||!t.input&&t.avail_in!==0||n.status===Fl&&e!==Ki)return Xi(t,t.avail_out===0?um:Yr);if(n.strm=t,r=n.last_flush,n.last_flush=e,n.status===gf)if(n.wrap===2)t.adler=0,Re(n,31),Re(n,139),Re(n,8),n.gzhead?(Re(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Re(n,n.gzhead.time&255),Re(n,n.gzhead.time>>8&255),Re(n,n.gzhead.time>>16&255),Re(n,n.gzhead.time>>24&255),Re(n,n.level===9?2:n.strategy>=ff||n.level<2?4:0),Re(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Re(n,n.gzhead.extra.length&255),Re(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=Vi(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=hm):(Re(n,0),Re(n,0),Re(n,0),Re(n,0),Re(n,0),Re(n,n.level===9?2:n.strategy>=ff||n.level<2?4:0),Re(n,A$),n.status=Da);else{var s=mf+(n.w_bits-8<<4)<<8,o=-1;n.strategy>=ff||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,s|=o<<6,n.strstart!==0&&(s|=E$),s+=31-s%31,n.status=Da,Il(n,s),n.strstart!==0&&(Il(n,t.adler>>>16),Il(n,t.adler&65535)),t.adler=1}if(n.status===hm)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),qi(t),i=n.pending,n.pending===n.pending_buf_size));)Re(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=df)}else n.status=df;if(n.status===df)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),qi(t),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindexi&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.gzindex=0,n.status=hf)}else n.status=hf;if(n.status===hf)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),qi(t),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindexi&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.status=pf)}else n.status=pf;if(n.status===pf&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&qi(t),n.pending+2<=n.pending_buf_size&&(Re(n,t.adler&255),Re(n,t.adler>>8&255),t.adler=0,n.status=Da)):n.status=Da),n.pending!==0){if(qi(t),t.avail_out===0)return n.last_flush=-1,Nn}else if(t.avail_in===0&&M2(e)<=M2(r)&&e!==Ki)return Xi(t,um);if(n.status===Fl&&t.avail_in!==0)return Xi(t,um);if(t.avail_in!==0||n.lookahead!==0||e!==Na&&n.status!==Fl){var l=n.strategy===ff?P$(n,e):n.strategy===f$?C$(n,e):Ks[n.level].func(n,e);if((l===La||l===Zs)&&(n.status=Fl),l===wt||l===La)return t.avail_out===0&&(n.last_flush=-1),Nn;if(l===$l&&(e===s$?Wr._tr_align(n):e!==P2&&(Wr._tr_stored_block(n,0,0,!1),e===o$&&(Wi(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),qi(t),t.avail_out===0))return n.last_flush=-1,Nn}return e!==Ki?Nn:n.wrap<=0?R2:(n.wrap===2?(Re(n,t.adler&255),Re(n,t.adler>>8&255),Re(n,t.adler>>16&255),Re(n,t.adler>>24&255),Re(n,t.total_in&255),Re(n,t.total_in>>8&255),Re(n,t.total_in>>16&255),Re(n,t.total_in>>24&255)):(Il(n,t.adler>>>16),Il(n,t.adler&65535)),qi(t),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Nn:R2)}function $$(t){var e;return!t||!t.state?Yr:(e=t.state.status,e!==gf&&e!==hm&&e!==df&&e!==hf&&e!==pf&&e!==Da&&e!==Fl?Xi(t,Yr):(t.state=null,e===Da?Xi(t,l$):Nn))}function D$(t,e){var r=e.length,n,i,a,s,o,l,c,u;if(!t||!t.state||(n=t.state,s=n.wrap,s===2||s===1&&n.status!==gf||n.lookahead))return Yr;for(s===1&&(t.adler=O2(t.adler,e,r,0)),n.wrap=0,r>=n.w_size&&(s===0&&(Wi(n.head),n.strstart=0,n.block_start=0,n.insert=0),u=new er.Buf8(n.w_size),er.arraySet(u,e,r-n.w_size,n.w_size,0),e=u,r=n.w_size),o=t.avail_in,l=t.next_in,c=t.input,t.avail_in=r,t.next_in=0,t.input=e,ja(n);n.lookahead>=Ee;){i=n.strstart,a=n.lookahead-(Ee-1);do n.ins_h=(n.ins_h<{"use strict";m();var vf=pi(),j2=!0,N2=!0;try{String.fromCharCode.apply(null,[0])}catch(t){j2=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){N2=!1}var Dl=new vf.Buf8(256);for(gi=0;gi<256;gi++)Dl[gi]=gi>=252?6:gi>=248?5:gi>=240?4:gi>=224?3:gi>=192?2:1;var gi;Dl[254]=Dl[254]=1;Js.string2buf=function(t){var e,r,n,i,a,s=t.length,o=0;for(i=0;i>>6,e[a++]=128|r&63):r<65536?(e[a++]=224|r>>>12,e[a++]=128|r>>>6&63,e[a++]=128|r&63):(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63,e[a++]=128|r>>>6&63,e[a++]=128|r&63);return e};function B2(t,e){if(e<65534&&(t.subarray&&N2||!t.subarray&&j2))return String.fromCharCode.apply(null,vf.shrinkBuf(t,e));for(var r="",n=0;n4){o[n++]=65533,r+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&r1){o[n++]=65533;continue}i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|i&1023)}return B2(o,n)};Js.utf8border=function(t,e){var r;for(e=e||t.length,e>t.length&&(e=t.length),r=e-1;r>=0&&(t[r]&192)===128;)r--;return r<0||r===0?e:r+Dl[t[r]]>e?r:e}});var mm=M((cY,H2)=>{"use strict";m();function L$(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}H2.exports=L$});var V2=M(Nl=>{"use strict";m();var Ll=L2(),jl=pi(),vm=pm(),ym=uf(),j$=mm(),z2=Object.prototype.toString,N$=0,gm=4,Qs=0,U2=1,G2=2,B$=-1,H$=0,U$=8;function Ba(t){if(!(this instanceof Ba))return new Ba(t);this.options=jl.assign({level:B$,method:U$,chunkSize:16384,windowBits:15,memLevel:8,strategy:H$,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new j$,this.strm.avail_out=0;var r=Ll.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Qs)throw new Error(ym[r]);if(e.header&&Ll.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(typeof e.dictionary=="string"?n=vm.string2buf(e.dictionary):z2.call(e.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(e.dictionary):n=e.dictionary,r=Ll.deflateSetDictionary(this.strm,n),r!==Qs)throw new Error(ym[r]);this._dict_set=!0}}Ba.prototype.push=function(t,e){var r=this.strm,n=this.options.chunkSize,i,a;if(this.ended)return!1;a=e===~~e?e:e===!0?gm:N$,typeof t=="string"?r.input=vm.string2buf(t):z2.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new jl.Buf8(n),r.next_out=0,r.avail_out=n),i=Ll.deflate(r,a),i!==U2&&i!==Qs)return this.onEnd(i),this.ended=!0,!1;(r.avail_out===0||r.avail_in===0&&(a===gm||a===G2))&&(this.options.to==="string"?this.onData(vm.buf2binstring(jl.shrinkBuf(r.output,r.next_out))):this.onData(jl.shrinkBuf(r.output,r.next_out)))}while((r.avail_in>0||r.avail_out===0)&&i!==U2);return a===gm?(i=Ll.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Qs):(a===G2&&(this.onEnd(Qs),r.avail_out=0),!0)};Ba.prototype.onData=function(t){this.chunks.push(t)};Ba.prototype.onEnd=function(t){t===Qs&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=jl.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function wm(t,e){var r=new Ba(e);if(r.push(t,!0),r.err)throw r.msg||ym[r.err];return r.result}function G$(t,e){return e=e||{},e.raw=!0,wm(t,e)}function z$(t,e){return e=e||{},e.gzip=!0,wm(t,e)}Nl.Deflate=Ba;Nl.deflate=wm;Nl.deflateRaw=G$;Nl.gzip=z$});var W2=M((hY,q2)=>{"use strict";m();var yf=30,V$=12;q2.exports=function(e,r){var n,i,a,s,o,l,c,u,f,d,h,p,g,v,y,b,E,S,A,k,w,x,_,T,C;n=e.state,i=e.next_in,T=e.input,a=i+(e.avail_in-5),s=e.next_out,C=e.output,o=s-(r-e.avail_out),l=s+(e.avail_out-257),c=n.dmax,u=n.wsize,f=n.whave,d=n.wnext,h=n.window,p=n.hold,g=n.bits,v=n.lencode,y=n.distcode,b=(1<>>24,p>>>=A,g-=A,A=S>>>16&255,A===0)C[s++]=S&65535;else if(A&16){k=S&65535,A&=15,A&&(g>>=A,g-=A),g<15&&(p+=T[i++]<>>24,p>>>=A,g-=A,A=S>>>16&255,A&16){if(w=S&65535,A&=15,gc){e.msg="invalid distance too far back",n.mode=yf;break e}if(p>>>=A,g-=A,A=s-o,w>A){if(A=w-A,A>f&&n.sane){e.msg="invalid distance too far back",n.mode=yf;break e}if(x=0,_=h,d===0){if(x+=u-A,A2;)C[s++]=_[x++],C[s++]=_[x++],C[s++]=_[x++],k-=3;k&&(C[s++]=_[x++],k>1&&(C[s++]=_[x++]))}else{x=s-w;do C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],k-=3;while(k>2);k&&(C[s++]=C[x++],k>1&&(C[s++]=C[x++]))}}else if(A&64){e.msg="invalid distance code",n.mode=yf;break e}else{S=y[(S&65535)+(p&(1<>3,i-=k,g-=k<<3,p&=(1<{"use strict";m();var Y2=pi(),eo=15,X2=852,K2=592,Z2=0,bm=1,J2=2,q$=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],W$=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Y$=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],X$=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];Q2.exports=function(e,r,n,i,a,s,o,l){var c=l.bits,u=0,f=0,d=0,h=0,p=0,g=0,v=0,y=0,b=0,E=0,S,A,k,w,x,_=null,T=0,C,I=new Y2.Buf16(eo+1),L=new Y2.Buf16(eo+1),$=null,J=0,de,le,ce;for(u=0;u<=eo;u++)I[u]=0;for(f=0;f=1&&I[h]===0;h--);if(p>h&&(p=h),h===0)return a[s++]=1<<24|64<<16|0,a[s++]=1<<24|64<<16|0,l.bits=1,0;for(d=1;d0&&(e===Z2||h!==1))return-1;for(L[1]=0,u=1;uX2||e===J2&&b>K2)return 1;for(;;){de=u-v,o[f]C?(le=$[J+o[f]],ce=_[T+o[f]]):(le=96,ce=0),S=1<>v)+A]=de<<24|le<<16|ce|0;while(A!==0);for(S=1<>=1;if(S!==0?(E&=S-1,E+=S):E=0,f++,--I[u]===0){if(u===h)break;u=r[n+o[f]]}if(u>p&&(E&w)!==k){for(v===0&&(v=p),x+=d,g=u-v,y=1<X2||e===J2&&b>K2)return 1;k=E&w,a[k]=p<<24|g<<16|x-s|0}}return E!==0&&(a[x+E]=u-v<<24|64<<16|0),l.bits=p,0}});var $_=M(hn=>{"use strict";m();var Pr=pi(),km=lm(),Hn=cm(),K$=W2(),Bl=e_(),Z$=0,k_=1,T_=2,t_=4,J$=5,wf=6,Ha=0,Q$=1,e8=2,Xr=-2,C_=-3,Tm=-4,t8=-5,r_=8,P_=1,n_=2,i_=3,a_=4,s_=5,o_=6,l_=7,c_=8,u_=9,f_=10,xf=11,vi=12,_m=13,d_=14,xm=15,h_=16,p_=17,m_=18,g_=19,bf=20,_f=21,v_=22,y_=23,w_=24,b_=25,__=26,Sm=27,x_=28,S_=29,Ye=30,Cm=31,r8=32,n8=852,i8=592,a8=15,s8=a8;function E_(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function o8(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Pr.Buf16(320),this.work=new Pr.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function R_(t){var e;return!t||!t.state?Xr:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=P_,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Pr.Buf32(n8),e.distcode=e.distdyn=new Pr.Buf32(i8),e.sane=1,e.back=-1,Ha)}function M_(t){var e;return!t||!t.state?Xr:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,R_(t))}function O_(t,e){var r,n;return!t||!t.state||(n=t.state,e<0?(r=0,e=-e):(r=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?Xr:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,M_(t))}function I_(t,e){var r,n;return t?(n=new o8,t.state=n,n.window=null,r=O_(t,e),r!==Ha&&(t.state=null),r):Xr}function l8(t){return I_(t,s8)}var A_=!0,Em,Am;function c8(t){if(A_){var e;for(Em=new Pr.Buf32(512),Am=new Pr.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Bl(k_,t.lens,0,288,Em,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Bl(T_,t.lens,0,32,Am,0,t.work,{bits:5}),A_=!1}t.lencode=Em,t.lenbits=9,t.distcode=Am,t.distbits=5}function F_(t,e,r,n){var i,a=t.state;return a.window===null&&(a.wsize=1<=a.wsize?(Pr.arraySet(a.window,e,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>n&&(i=n),Pr.arraySet(a.window,e,r-n,i,a.wnext),n-=i,n?(Pr.arraySet(a.window,e,r-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=Hn(r.check,_,2,0),c=0,u=0,r.mode=n_;break}if(r.flags=0,r.head&&(r.head.done=!1),!(r.wrap&1)||(((c&255)<<8)+(c>>8))%31){t.msg="incorrect header check",r.mode=Ye;break}if((c&15)!==r_){t.msg="unknown compression method",r.mode=Ye;break}if(c>>>=4,u-=4,w=(c&15)+8,r.wbits===0)r.wbits=w;else if(w>r.wbits){t.msg="invalid window size",r.mode=Ye;break}r.dmax=1<>8&1),r.flags&512&&(_[0]=c&255,_[1]=c>>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0,r.mode=i_;case i_:for(;u<32;){if(o===0)break e;o--,c+=n[a++]<>>8&255,_[2]=c>>>16&255,_[3]=c>>>24&255,r.check=Hn(r.check,_,4,0)),c=0,u=0,r.mode=a_;case a_:for(;u<16;){if(o===0)break e;o--,c+=n[a++]<>8),r.flags&512&&(_[0]=c&255,_[1]=c>>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0,r.mode=s_;case s_:if(r.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=n[a++]<>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0}else r.head&&(r.head.extra=null);r.mode=o_;case o_:if(r.flags&1024&&(h=r.length,h>o&&(h=o),h&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),Pr.arraySet(r.head.extra,n,a,h,w)),r.flags&512&&(r.check=Hn(r.check,n,h,a)),o-=h,a+=h,r.length-=h),r.length))break e;r.length=0,r.mode=l_;case l_:if(r.flags&2048){if(o===0)break e;h=0;do w=n[a+h++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w));while(w&&h>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=vi;break;case f_:for(;u<32;){if(o===0)break e;o--,c+=n[a++]<>>=u&7,u-=u&7,r.mode=Sm;break}for(;u<3;){if(o===0)break e;o--,c+=n[a++]<>>=1,u-=1,c&3){case 0:r.mode=d_;break;case 1:if(c8(r),r.mode=bf,e===wf){c>>>=2,u-=2;break e}break;case 2:r.mode=p_;break;case 3:t.msg="invalid block type",r.mode=Ye}c>>>=2,u-=2;break;case d_:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=n[a++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=Ye;break}if(r.length=c&65535,c=0,u=0,r.mode=xm,e===wf)break e;case xm:r.mode=h_;case h_:if(h=r.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;Pr.arraySet(i,n,a,h,s),o-=h,a+=h,l-=h,s+=h,r.length-=h;break}r.mode=vi;break;case p_:for(;u<14;){if(o===0)break e;o--,c+=n[a++]<>>=5,u-=5,r.ndist=(c&31)+1,c>>>=5,u-=5,r.ncode=(c&15)+4,c>>>=4,u-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Ye;break}r.have=0,r.mode=m_;case m_:for(;r.have>>=3,u-=3}for(;r.have<19;)r.lens[I[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},x=Bl(Z$,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,x){t.msg="invalid code lengths set",r.mode=Ye;break}r.have=0,r.mode=g_;case g_:for(;r.have>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=y,u-=y,r.lens[r.have++]=E;else{if(E===16){for(C=y+2;u>>=y,u-=y,r.have===0){t.msg="invalid bit length repeat",r.mode=Ye;break}w=r.lens[r.have-1],h=3+(c&3),c>>>=2,u-=2}else if(E===17){for(C=y+3;u>>=y,u-=y,w=0,h=3+(c&7),c>>>=3,u-=3}else{for(C=y+7;u>>=y,u-=y,w=0,h=11+(c&127),c>>>=7,u-=7}if(r.have+h>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Ye;break}for(;h--;)r.lens[r.have++]=w}}if(r.mode===Ye)break;if(r.lens[256]===0){t.msg="invalid code -- missing end-of-block",r.mode=Ye;break}if(r.lenbits=9,T={bits:r.lenbits},x=Bl(k_,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,x){t.msg="invalid literal/lengths set",r.mode=Ye;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},x=Bl(T_,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,x){t.msg="invalid distances set",r.mode=Ye;break}if(r.mode=bf,e===wf)break e;case bf:r.mode=_f;case _f:if(o>=6&&l>=258){t.next_out=s,t.avail_out=l,t.next_in=a,t.avail_in=o,r.hold=c,r.bits=u,K$(t,d),s=t.next_out,i=t.output,l=t.avail_out,a=t.next_in,n=t.input,o=t.avail_in,c=r.hold,u=r.bits,r.mode===vi&&(r.back=-1);break}for(r.back=0;v=r.lencode[c&(1<>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>S)],y=v>>>24,b=v>>>16&255,E=v&65535,!(S+y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=S,u-=S,r.back+=S}if(c>>>=y,u-=y,r.back+=y,r.length=E,b===0){r.mode=__;break}if(b&32){r.back=-1,r.mode=vi;break}if(b&64){t.msg="invalid literal/length code",r.mode=Ye;break}r.extra=b&15,r.mode=v_;case v_:if(r.extra){for(C=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=y_;case y_:for(;v=r.distcode[c&(1<>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>S)],y=v>>>24,b=v>>>16&255,E=v&65535,!(S+y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=S,u-=S,r.back+=S}if(c>>>=y,u-=y,r.back+=y,b&64){t.msg="invalid distance code",r.mode=Ye;break}r.offset=E,r.extra=b&15,r.mode=w_;case w_:if(r.extra){for(C=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Ye;break}r.mode=b_;case b_:if(l===0)break e;if(h=d-l,r.offset>h){if(h=r.offset-h,h>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Ye;break}h>r.wnext?(h-=r.wnext,p=r.wsize-h):p=r.wnext-h,h>r.length&&(h=r.length),g=r.window}else g=i,p=s-r.offset,h=r.length;h>l&&(h=l),l-=h,r.length-=h;do i[s++]=g[p++];while(--h);r.length===0&&(r.mode=_f);break;case __:if(l===0)break e;i[s++]=r.length,l--,r.mode=_f;break;case Sm:if(r.wrap){for(;u<32;){if(o===0)break e;o--,c|=n[a++]<{"use strict";m();D_.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var j_=M((_Y,L_)=>{"use strict";m();function p8(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}L_.exports=p8});var B_=M(Ul=>{"use strict";m();var to=$_(),Hl=pi(),Sf=pm(),lt=Pm(),Rm=uf(),m8=mm(),g8=j_(),N_=Object.prototype.toString;function Ua(t){if(!(this instanceof Ua))return new Ua(t);this.options=Hl.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new m8,this.strm.avail_out=0;var r=to.inflateInit2(this.strm,e.windowBits);if(r!==lt.Z_OK)throw new Error(Rm[r]);if(this.header=new g8,to.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Sf.string2buf(e.dictionary):N_.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=to.inflateSetDictionary(this.strm,e.dictionary),r!==lt.Z_OK)))throw new Error(Rm[r])}Ua.prototype.push=function(t,e){var r=this.strm,n=this.options.chunkSize,i=this.options.dictionary,a,s,o,l,c,u=!1;if(this.ended)return!1;s=e===~~e?e:e===!0?lt.Z_FINISH:lt.Z_NO_FLUSH,typeof t=="string"?r.input=Sf.binstring2buf(t):N_.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new Hl.Buf8(n),r.next_out=0,r.avail_out=n),a=to.inflate(r,lt.Z_NO_FLUSH),a===lt.Z_NEED_DICT&&i&&(a=to.inflateSetDictionary(this.strm,i)),a===lt.Z_BUF_ERROR&&u===!0&&(a=lt.Z_OK,u=!1),a!==lt.Z_STREAM_END&&a!==lt.Z_OK)return this.onEnd(a),this.ended=!0,!1;r.next_out&&(r.avail_out===0||a===lt.Z_STREAM_END||r.avail_in===0&&(s===lt.Z_FINISH||s===lt.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=Sf.utf8border(r.output,r.next_out),l=r.next_out-o,c=Sf.buf2string(r.output,o),r.next_out=l,r.avail_out=n-l,l&&Hl.arraySet(r.output,r.output,o,l,0),this.onData(c)):this.onData(Hl.shrinkBuf(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(u=!0)}while((r.avail_in>0||r.avail_out===0)&&a!==lt.Z_STREAM_END);return a===lt.Z_STREAM_END&&(s=lt.Z_FINISH),s===lt.Z_FINISH?(a=to.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===lt.Z_OK):(s===lt.Z_SYNC_FLUSH&&(this.onEnd(lt.Z_OK),r.avail_out=0),!0)};Ua.prototype.onData=function(t){this.chunks.push(t)};Ua.prototype.onEnd=function(t){t===lt.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Hl.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Mm(t,e){var r=new Ua(e);if(r.push(t,!0),r.err)throw r.msg||Rm[r.err];return r.result}function v8(t,e){return e=e||{},e.raw=!0,Mm(t,e)}Ul.Inflate=Ua;Ul.inflate=Mm;Ul.inflateRaw=v8;Ul.ungzip=Mm});var G_=M((AY,U_)=>{"use strict";m();var y8=pi().assign,w8=V2(),b8=B_(),_8=Pm(),H_={};y8(H_,w8,b8,_8);U_.exports=H_});var q_=M((TY,V_)=>{"use strict";m();var z_=(t,e)=>function(...r){let n=e.promiseModule;return new n((i,a)=>{e.multiArgs?r.push((...s)=>{e.errorFirst?s[0]?a(s):(s.shift(),i(s)):i(s)}):e.errorFirst?r.push((s,o)=>{s?a(s):i(o)}):r.push(i),t.apply(this,r)})};V_.exports=(t,e)=>{e=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},e);let r=typeof t;if(!(t!==null&&(r==="object"||r==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${t===null?"null":r}\``);let n=a=>{let s=o=>typeof o=="string"?a===o:o.test(a);return e.include?e.include.some(s):!e.exclude.some(s)},i;r==="function"?i=function(...a){return e.excludeMain?t(...a):z_(t,e).apply(this,a)}:i=Object.create(Object.getPrototypeOf(t));for(let a in t){let s=t[a];i[a]=typeof s=="function"&&n(a)?z_(s,e):s}return i}});var tx=M((PY,ex)=>{m();function W_(t){return Array.isArray(t)?t:[t]}var Fm="",Y_=" ",Om="\\",x8=/^\s+$/,S8=/(?:[^\\]|^)\\$/,E8=/^\\!/,A8=/^\\#/,k8=/\r?\n/g,T8=/^\.*\/|^\.+$/,Im="/",Z_="node-ignore";typeof Symbol!="undefined"&&(Z_=Symbol.for("node-ignore"));var X_=Z_,C8=(t,e,r)=>Object.defineProperty(t,e,{value:r}),P8=/([0-z])-([0-z])/g,J_=()=>!1,R8=t=>t.replace(P8,(e,r,n)=>r.charCodeAt(0)<=n.charCodeAt(0)?e:Fm),M8=t=>{let{length:e}=t;return t.slice(0,e-e%2)},O8=[[/^\uFEFF/,()=>Fm],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?Y_:Fm)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+Y_}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6{let n=r.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>Om],[/\\\\/g,()=>Om],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,n,i)=>e===Om?`\\[${r}${M8(n)}${i}`:i==="]"&&n.length%2===0?`[${R8(r)}${n}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],K_=Object.create(null),I8=(t,e)=>{let r=K_[t];return r||(r=O8.reduce((n,[i,a])=>n.replace(i,a.bind(t)),t),K_[t]=r),e?new RegExp(r,"i"):new RegExp(r)},Lm=t=>typeof t=="string",F8=t=>t&&Lm(t)&&!x8.test(t)&&!S8.test(t)&&t.indexOf("#")!==0,$8=t=>t.split(k8),$m=class{constructor(e,r,n,i){this.origin=e,this.pattern=r,this.negative=n,this.regex=i}},D8=(t,e)=>{let r=t,n=!1;t.indexOf("!")===0&&(n=!0,t=t.substr(1)),t=t.replace(E8,"!").replace(A8,"#");let i=I8(t,e);return new $m(r,t,n,i)},L8=(t,e)=>{throw new e(t)},yi=(t,e,r)=>Lm(t)?t?yi.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Q_=t=>T8.test(t);yi.isNotRelative=Q_;yi.convert=t=>t;var Dm=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:n=!1}={}){C8(this,X_,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[X_]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(F8(e)){let r=D8(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,W_(Lm(e)?$8(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let n=!1,i=!1;return this._rules.forEach(a=>{let{negative:s}=a;if(i===s&&n!==i||s&&!n&&!i&&!r)return;a.regex.test(e)&&(n=!s,i=s)}),{ignored:n,unignored:i}}_test(e,r,n,i){let a=e&&yi.convert(e);return yi(a,e,this._allowRelativePaths?J_:L8),this._t(a,r,n,i)}_t(e,r,n,i){if(e in r)return r[e];if(i||(i=e.split(Im)),i.pop(),!i.length)return r[e]=this._testOne(e,n);let a=this._t(i.join(Im)+Im,r,n,i);return r[e]=a.ignored?a:this._testOne(e,n)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return W_(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Ef=t=>new Dm(t),j8=t=>yi(t&&yi.convert(t),t,J_);Ef.isPathValid=j8;Ef.default=Ef;ex.exports=Ef;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");yi.convert=t;let e=/^[a-z]:\//i;yi.isNotRelative=r=>e.test(r)||Q_(r)}});var nx=M((MY,rx)=>{"use strict";m();function N8(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Un(t,e,r){return e=e instanceof RegExp?e:new RegExp(N8(e),"g"),t.replace(e,r)}var B8={clean:function(e){if(typeof e!="string")throw new Error("Expected a string, received: "+e);return e=Un(e,"./","/"),e=Un(e,"..","."),e=Un(e," ","-"),e=Un(e,/^[~^:?*\\\-]/g,""),e=Un(e,/[~^:?*\\]/g,"-"),e=Un(e,/[~^:?*\\\-]$/g,""),e=Un(e,"@{","-"),e=Un(e,/\.$/g,""),e=Un(e,/\/$/g,""),e=Un(e,/\.lock$/g,""),e}};rx.exports=B8});var ax=M((IY,ix)=>{m();ix.exports=function(t,e){var r=t,n=e,i=r.length,a=n.length,s=!1,o=null,l=i+1,c=[],u=[],f=[],d="",h=-1,p=0,g=1,v,y,b=function(){i>=a&&(v=r,y=i,r=n,n=v,i=a,a=y,s=!0,l=i+1)},E=function(w,x,_){return{x:w,y:x,k:_}},S=function(w,x){return{elem:w,t:x}},A=function(w,x,_){var T,C,I;for(x>_?T=c[w-1+l]:T=c[w+1+l],I=Math.max(x,_),C=I-w;C=0;--I)for(;TC-T?(s?f[f.length]=new S(n[C],h):f[f.length]=new S(n[C],g),++_,++C):w[I].y-w[I].x=w+1;--$)_[$+l]=A($,_[$-1+l]+1,_[$+1+l]);_[w+l]=A(w,_[w-1+l]+1,_[w+1+l])}while(_[w+l]!==a);for(o=w+2*T,C=c[w+l],I=[];C!==-1;)I[I.length]=new E(u[C].x,u[C].y,null),C=u[C].k;k(I)}}}});var lx=M(($Y,ox)=>{m();var H8=ax();function U8(t,e){var r=new H8(t,e);r.compose();for(var n=r.getses(),i,a,s=t.length-1,o=e.length-1,l=n.length-1;l>=0;--l)n[l].t===r.SES_COMMON?(a?(a.chain={file1index:s,file2index:o,chain:null},a=a.chain):(i={file1index:s,file2index:o,chain:null},a=i),s--,o--):n[l].t===r.SES_DELETE?s--:n[l].t===r.SES_ADD&&o--;var c={file1index:-1,file2index:-1,chain:null};return a?(a.chain=c,i):c}function sx(t,e){for(var r=[],n=t.length,i=e.length,a=U8(t,e);a!==null;a=a.chain){var s=n-a.file1index-1,o=i-a.file2index-1;n=a.file1index,i=a.file2index,(s||o)&&r.push({file1:[n+1,s],file2:[i+1,o]})}return r.reverse(),r}function G8(t,e,r){var n,i=sx(e,t),a=sx(e,r),s=[];function o(L,$){s.push([L.file1[0],$,L.file1[1],L.file2[0],L.file2[1]])}for(n=0;nc&&(l.push([1,c,L-c]),c=L)}for(var f=0;fg)break;g=Math.max(g,y+v[2]),f++}if(u(p),d==f)h[4]>0&&l.push([h[1],h[3],h[4]]);else{var b={0:[t.length,-1,e.length,-1],2:[r.length,-1,e.length,-1]};for(n=d;n<=f;n++){h=s[n];var E=h[1],S=b[E],A=h[0],k=A+h[2],w=h[3],x=w+h[4];S[0]=Math.min(w,S[0]),S[1]=Math.max(x,S[1]),S[2]=Math.min(A,S[2]),S[3]=Math.max(k,S[3])}var _=b[0][0]+(p-b[0][2]),T=b[0][1]+(g-b[0][3]),C=b[2][0]+(p-b[2][2]),I=b[2][1]+(g-b[2][3]);l.push([-1,_,T-_,p,g-p,C,I-C])}c=g}return u(e.length),l}function z8(t,e,r){var n=[],i=[t,e,r],a=G8(t,e,r),s=[];function o(){s.length&&n.push({ok:s}),s=[]}function l(h){for(var p=0;p{"use strict";m();Object.defineProperty(Y,"__esModule",{value:!0});function aa(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var zl=aa(qy()),Mx=aa(Zb()),F=e2(),V8=aa(r2()),cg=aa(G_()),jm=aa(q_()),q8=aa(tx()),zn=aa(nx()),W8=aa(lx()),Ae=class t extends Error{constructor(e){super(e),this.caller=""}toJSON(){return{code:this.code,data:this.data,caller:this.caller,message:this.message,stack:this.stack}}fromJSON(e){let r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.stack=e.stack,r}get isIsomorphicGitError(){return!0}},Vl=class t extends Ae{constructor(e){super(`Modifying the index is not possible because you have unmerged files: ${e.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.`),this.code=this.name=t.code,this.data={filepaths:e}}};Vl.code="UnmergedPathsError";var pe=class t extends Ae{constructor(e){super(`An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${e}`),this.code=this.name=t.code,this.data={message:e}}};pe.code="InternalError";var no=class t extends Ae{constructor(e){super(`The filepath "${e}" contains unsafe character sequences`),this.code=this.name=t.code,this.data={filepath:e}}};no.code="UnsafeFilepathError";var Kr=class{constructor(e){this.buffer=e,this._start=0}eof(){return this._start>=this.buffer.length}tell(){return this._start}seek(e){this._start=e}slice(e){let r=this.buffer.slice(this._start,this._start+e);return this._start+=e,r}toString(e,r){let n=this.buffer.toString(e,this._start,this._start+r);return this._start+=r,n}write(e,r,n){let i=this.buffer.write(e,this._start,r,n);return this._start+=r,i}copy(e,r,n){let i=e.copy(this.buffer,this._start,r,n);return this._start+=i,i}readUInt8(){let e=this.buffer.readUInt8(this._start);return this._start+=1,e}writeUInt8(e){let r=this.buffer.writeUInt8(e,this._start);return this._start+=1,r}readUInt16BE(){let e=this.buffer.readUInt16BE(this._start);return this._start+=2,e}writeUInt16BE(e){let r=this.buffer.writeUInt16BE(e,this._start);return this._start+=2,r}readUInt32BE(){let e=this.buffer.readUInt32BE(this._start);return this._start+=4,e}writeUInt32BE(e){let r=this.buffer.writeUInt32BE(e,this._start);return this._start+=4,r}};function Lf(t,e){return-(te)}function Ox(t,e){return Lf(t.path,e.path)}function Ix(t){let e=t>0?t>>12:0;e!==4&&e!==8&&e!==10&&e!==14&&(e=8);let r=t&511;return r&73?r=493:r=420,e!==8&&(r=0),(e<<12)+r}var Gn=2**32;function cx(t,e,r,n){if(t!==void 0&&e!==void 0)return[t,e];r===void 0&&(r=n.valueOf());let i=Math.floor(r/1e3),a=(r-i*1e3)*1e6;return[i,a]}function io(t){let[e,r]=cx(t.ctimeSeconds,t.ctimeNanoseconds,t.ctimeMs,t.ctime),[n,i]=cx(t.mtimeSeconds,t.mtimeNanoseconds,t.mtimeMs,t.mtime);return{ctimeSeconds:e%Gn,ctimeNanoseconds:r%Gn,mtimeSeconds:n%Gn,mtimeNanoseconds:i%Gn,dev:t.dev%Gn,ino:t.ino%Gn,mode:Ix(t.mode%Gn),uid:t.uid%Gn,gid:t.gid%Gn,size:t.size>-1?t.size%Gn:0}}function Y8(t){let e="";for(let r of new Uint8Array(t))r<16&&(e+="0"),e+=r.toString(16);return e}var Nm=null;async function bi(t){return Nm===null&&(Nm=await K8()),Nm?Fx(t):X8(t)}function X8(t){return new Mx().update(t).digest("hex")}async function Fx(t){let e=await crypto.subtle.digest("SHA-1",t);return Y8(e)}async function K8(){try{if(await Fx(new Uint8Array([]))==="da39a3ee5e6b4b0d3255bfef95601890afd80709")return!0}catch(t){}return!1}function Z8(t){return{assumeValid:!!(t&32768),extended:!!(t&16384),stage:(t&12288)>>12,nameLength:t&4095}}function J8(t){let e=t.flags;return e.extended=!1,e.nameLength=Math.min(Buffer.from(t.path).length,4095),(e.assumeValid?32768:0)+(e.extended?16384:0)+((e.stage&3)<<12)+(e.nameLength&4095)}var Zm=class t{constructor(e,r){this._dirty=!1,this._unmergedPaths=r||new Set,this._entries=e||new Map}_addEntry(e){if(e.flags.stage===0)e.stages=[e],this._entries.set(e.path,e),this._unmergedPaths.delete(e.path);else{let r=this._entries.get(e.path);r||(this._entries.set(e.path,e),r=e),r.stages[e.flags.stage]=e,this._unmergedPaths.add(e.path)}}static async from(e){if(Buffer.isBuffer(e))return t.fromBuffer(e);if(e===null)return new t(null);throw new pe("invalid type passed to GitIndex.from")}static async fromBuffer(e){if(e.length===0)throw new pe("Index file is empty (.git/index)");let r=new t,n=new Kr(e),i=n.toString("utf8",4);if(i!=="DIRC")throw new pe(`Invalid dircache magic file number: ${i}`);let a=await bi(e.slice(0,-20)),s=e.slice(-20).toString("hex");if(s!==a)throw new pe(`Invalid checksum in GitIndex buffer: expected ${s} but saw ${a}`);let o=n.readUInt32BE();if(o!==2)throw new pe(`Unsupported dircache version: ${o}`);let l=n.readUInt32BE(),c=0;for(;!n.eof()&&ce.stages.length>1?e.stages.filter(r=>r):e)}*[Symbol.iterator](){for(let e of this.entries)yield e}insert({filepath:e,stats:r,oid:n,stage:i=0}){r||(r={ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:0,uid:0,gid:0,size:0}),r=io(r);let a=Buffer.from(e),s={ctimeSeconds:r.ctimeSeconds,ctimeNanoseconds:r.ctimeNanoseconds,mtimeSeconds:r.mtimeSeconds,mtimeNanoseconds:r.mtimeNanoseconds,dev:r.dev,ino:r.ino,mode:r.mode||33188,uid:r.uid,gid:r.gid,size:r.size,path:e,oid:n,flags:{assumeValid:!1,extended:!1,stage:i,nameLength:a.length<4095?a.length:4095},stages:[]};this._addEntry(s),this._dirty=!0}delete({filepath:e}){if(this._entries.has(e))this._entries.delete(e);else for(let r of this._entries.keys())r.startsWith(e+"/")&&this._entries.delete(r);this._unmergedPaths.has(e)&&this._unmergedPaths.delete(e),this._dirty=!0}clear(){this._entries.clear(),this._dirty=!0}has({filepath:e}){return this._entries.has(e)}render(){return this.entries.map(e=>`${e.mode.toString(8)} ${e.oid} ${e.path}`).join(` +`)}static async _entryToBuffer(e){let r=Buffer.from(e.path),n=Math.ceil((62+r.length+1)/8)*8,i=Buffer.alloc(n),a=new Kr(i),s=io(e);return a.writeUInt32BE(s.ctimeSeconds),a.writeUInt32BE(s.ctimeNanoseconds),a.writeUInt32BE(s.mtimeSeconds),a.writeUInt32BE(s.mtimeNanoseconds),a.writeUInt32BE(s.dev),a.writeUInt32BE(s.ino),a.writeUInt32BE(s.mode),a.writeUInt32BE(s.uid),a.writeUInt32BE(s.gid),a.writeUInt32BE(s.size),a.write(e.oid,20,"hex"),a.writeUInt16BE(J8(e)),a.write(e.path,r.length,"utf8"),i}async toObject(){let e=Buffer.alloc(12),r=new Kr(e);r.write("DIRC",4,"utf8"),r.writeUInt32BE(2),r.writeUInt32BE(this.entriesFlat.length);let n=[];for(let o of this.entries)if(n.push(t._entryToBuffer(o)),o.stages.length>1)for(let l of o.stages)l&&l!==o&&n.push(t._entryToBuffer(l));n=await Promise.all(n);let i=Buffer.concat(n),a=Buffer.concat([e,i]),s=await bi(a);return Buffer.concat([a,Buffer.from(s,"hex")])}};function Tf(t,e,r=!0,n=!0){let i=io(t),a=io(e);return r&&i.mode!==a.mode||i.mtimeSeconds!==a.mtimeSeconds||i.ctimeSeconds!==a.ctimeSeconds||i.uid!==a.uid||i.gid!==a.gid||n&&i.ino!==a.ino||i.size!==a.size}var Bm=null,Hm=Symbol("IndexCache");function Q8(){return{map:new Map,stats:new Map}}async function e4(t,e,r){let[n,i]=await Promise.all([t.lstat(e),t.read(e)]),a=await Zm.from(i);r.map.set(e,a),r.stats.set(e,n)}async function t4(t,e,r){let n=r.stats.get(e);if(n===void 0)return!0;if(n===null)return!1;let i=await t.lstat(e);return i===null?!1:Tf(n,i)}var ct=class{static async acquire({fs:e,gitdir:r,cache:n,allowUnmerged:i=!0},a){n[Hm]||(n[Hm]=Q8());let s=`${r}/index`;Bm===null&&(Bm=new zl({maxPending:1/0}));let o,l=[];return await Bm.acquire(s,async()=>{let c=n[Hm];await t4(e,s,c)&&await e4(e,s,c);let u=c.map.get(s);if(l=u.unmergedPaths,l.length&&!i)throw new Vl(l);if(o=await a(u),u._dirty){let f=await u.toObject();await e.write(s,f),c.stats.set(s,await e.lstat(s)),u._dirty=!1}}),o}};function Cf(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e>-1&&(t=t.slice(e+1)),t}function ao(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e===-1?".":e===0?"/":t.slice(0,e)}function $x(t){let e=new Map,r=function(i){if(!e.has(i)){let a={type:"tree",fullpath:i,basename:Cf(i),metadata:{},children:[]};e.set(i,a),a.parent=r(ao(i)),a.parent&&a.parent!==a&&a.parent.children.push(a)}return e.get(i)},n=function(i,a){if(!e.has(i)){let s={type:"blob",fullpath:i,basename:Cf(i),metadata:a,parent:r(ao(i)),children:[]};s.parent&&s.parent.children.push(s),e.set(i,s)}return e.get(i)};r(".");for(let i of t)n(i.path,i);return e}function r4(t){switch(t){case 16384:return"tree";case 33188:return"blob";case 33261:return"blob";case 40960:return"blob";case 57344:return"commit"}throw new pe(`Unexpected GitTree entry mode: ${t.toString(8)}`)}var Jm=class{constructor({fs:e,gitdir:r,cache:n}){this.treePromise=ct.acquire({fs:e,gitdir:r,cache:n},async function(a){return $x(a.entries)});let i=this;this.ConstructEntry=class{constructor(s){this._fullpath=s,this._type=!1,this._mode=!1,this._stat=!1,this._oid=!1}async type(){return i.type(this)}async mode(){return i.mode(this)}async stat(){return i.stat(this)}async content(){return i.content(this)}async oid(){return i.oid(this)}}}async readdir(e){let r=e._fullpath,i=(await this.treePromise).get(r);if(!i||i.type==="blob")return null;if(i.type!=="tree")throw new Error(`ENOTDIR: not a directory, scandir '${r}'`);let a=i.children.map(s=>s.fullpath);return a.sort(Lf),a}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let n=(await this.treePromise).get(e._fullpath);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let i=n.type==="tree"?{}:io(n.metadata);e._type=n.type==="tree"?"tree":r4(i.mode),e._mode=i.mode,n.type==="tree"?e._stat=void 0:e._stat=i}return e._stat}async content(e){}async oid(e){if(e._oid===!1){let n=(await this.treePromise).get(e._fullpath);e._oid=n.metadata.oid}return e._oid}},jf=Symbol("GitWalkSymbol");function Ya(){let t=Object.create(null);return Object.defineProperty(t,jf,{value:function({fs:e,gitdir:r,cache:n}){return new Jm({fs:e,gitdir:r,cache:n})}}),Object.freeze(t),t}var je=class t extends Ae{constructor(e){super(`Could not find ${e}.`),this.code=this.name=t.code,this.data={what:e}}};je.code="NotFoundError";var tr=class t extends Ae{constructor(e,r,n,i){super(`Object ${e} ${i?`at ${i}`:""}was anticipated to be a ${n} but it is a ${r}.`),this.code=this.name=t.code,this.data={oid:e,actual:r,expected:n,filepath:i}}};tr.code="ObjectTypeError";var Qi=class t extends Ae{constructor(e){super(`Expected a 40-char hex object id but saw "${e}".`),this.code=this.name=t.code,this.data={value:e}}};Qi.code="InvalidOidError";var ql=class t extends Ae{constructor(e){super(`Could not find a fetch refspec for remote "${e}". Make sure the config file has an entry like the following: +[remote "${e}"] + fetch = +refs/heads/*:refs/remotes/origin/* +`),this.code=this.name=t.code,this.data={remote:e}}};ql.code="NoRefspecError";var Pf=class t{constructor(e){if(this.refs=new Map,this.parsedConfig=[],e){let r=null;this.parsedConfig=e.trim().split(` +`).map(n=>{if(/^\s*#/.test(n))return{line:n,comment:!0};let i=n.indexOf(" ");if(n.startsWith("^")){let a=n.slice(1);return this.refs.set(r+"^{}",a),{line:n,ref:r,peeled:a}}else{let a=n.slice(0,i);return r=n.slice(i+1),this.refs.set(r,a),{line:n,ref:r,oid:a}}})}return this}static from(e){return new t(e)}delete(e){this.parsedConfig=this.parsedConfig.filter(r=>r.ref!==e),this.refs.delete(e)}toString(){return this.parsedConfig.map(({line:e})=>e).join(` +`)+` +`}},Rf=class t{constructor({remotePath:e,localPath:r,force:n,matchPrefix:i}){Object.assign(this,{remotePath:e,localPath:r,force:n,matchPrefix:i})}static from(e){let[r,n,i,a,s]=e.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1),o=r==="+",l=i==="*";if(l!==(s==="*"))throw new pe("Invalid refspec");return new t({remotePath:n,localPath:a,force:o,matchPrefix:l})}translate(e){if(this.matchPrefix){if(e.startsWith(this.remotePath))return this.localPath+e.replace(this.remotePath,"")}else if(e===this.remotePath)return this.localPath;return null}reverseTranslate(e){if(this.matchPrefix){if(e.startsWith(this.localPath))return this.remotePath+e.replace(this.localPath,"")}else if(e===this.localPath)return this.remotePath;return null}},Qm=class t{constructor(e=[]){this.rules=e}static from(e){let r=[];for(let n of e)r.push(Rf.from(n));return new t(r)}add(e){let r=Rf.from(e);this.rules.push(r)}translate(e){let r=[];for(let n of this.rules)for(let i of e){let a=n.translate(i);a&&r.push([i,a])}return r}translateOne(e){let r=null;for(let n of this.rules){let i=n.translate(e);i&&(r=i)}return r}localNamespaces(){return this.rules.filter(e=>e.matchPrefix).map(e=>e.localPath.replace(/\/$/,""))}};function n4(t,e){let r=t.replace(/\^\{\}$/,""),n=e.replace(/\^\{\}$/,""),i=-(rn);return i===0?t.endsWith("^{}")?1:-1:i}var i4=t=>{if(typeof t=="number")return t;t=t.toLowerCase();let e=parseInt(t);return t.endsWith("k")&&(e*=1024),t.endsWith("m")&&(e*=1024*1024),t.endsWith("g")&&(e*=1024*1024*1024),e},Gl=t=>{if(typeof t=="boolean")return t;if(t=t.trim().toLowerCase(),t==="true"||t==="yes"||t==="on")return!0;if(t==="false"||t==="no"||t==="off")return!1;throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${t}`)},ux={core:{filemode:Gl,bare:Gl,logallrefupdates:Gl,symlinks:Gl,ignorecase:Gl,bigFileThreshold:i4}},a4=/^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/,s4=/^[A-Za-z0-9-.]+$/,o4=/^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/,l4=/^[A-Za-z][A-Za-z-]*$/,c4=/^(.*?)( *[#;].*)$/,u4=t=>{let e=a4.exec(t);if(e!=null){let[r,n]=e.slice(1);return[r,n]}return null},f4=t=>{let e=o4.exec(t);if(e!=null){let[r,n="true"]=e.slice(1),i=d4(n),a=h4(i);return[r,a]}return null},d4=t=>{let e=c4.exec(t);if(e==null)return t;let[r,n]=e.slice(1);return fx(r)&&fx(n)?`${r}${n}`:r},fx=t=>(t.match(/(?:^|[^\\])"/g)||[]).length%2!==0,h4=t=>t.split("").reduce((e,r,n,i)=>{let a=r==='"'&&i[n-1]!=="\\",s=r==="\\"&&i[n+1]==='"';return a||s?e:e+r},""),dx=t=>t!=null?t.toLowerCase():null,eg=(t,e,r)=>[dx(t),e,dx(r)].filter(n=>n!=null).join("."),hx=t=>{let e=t.split("."),r=e.shift(),n=e.pop(),i=e.length?e.join("."):void 0;return{section:r,subsection:i,name:n,path:eg(r,i,n),sectionPath:eg(r,i,null),isSection:!!r}},p4=(t,e)=>t.reduce((r,n,i)=>e(n)?i:r,-1),tg=class t{constructor(e){let r=null,n=null;this.parsedConfig=e?e.split(` +`).map(i=>{let a=null,s=null,o=i.trim(),l=u4(o),c=l!=null;if(c)[r,n]=l;else{let f=f4(o);f!=null&&([a,s]=f)}let u=eg(r,n,a);return{line:i,isSection:c,section:r,subsection:n,name:a,value:s,path:u}}):[]}static from(e){return new t(e)}async get(e,r=!1){let n=hx(e).path,i=this.parsedConfig.filter(a=>a.path===n).map(({section:a,name:s,value:o})=>{let l=ux[a]&&ux[a][s];return l?l(o):o});return r?i:i.pop()}async getall(e){return this.get(e,!0)}async getSubsections(e){return this.parsedConfig.filter(r=>r.isSection&&r.section===e).map(r=>r.subsection)}async deleteSection(e,r){this.parsedConfig=this.parsedConfig.filter(n=>!(n.section===e&&n.subsection===r))}async append(e,r){return this.set(e,r,!0)}async set(e,r,n=!1){let{section:i,subsection:a,name:s,path:o,sectionPath:l,isSection:c}=hx(e),u=p4(this.parsedConfig,f=>f.path===o);if(r==null)u!==-1&&this.parsedConfig.splice(u,1);else if(u!==-1){let f=this.parsedConfig[u],d=Object.assign({},f,{name:s,value:r,modified:!0});n?this.parsedConfig.splice(u+1,0,d):this.parsedConfig[u]=d}else{let f=this.parsedConfig.findIndex(h=>h.path===l),d={section:i,subsection:a,name:s,value:r,modified:!0,path:o};if(s4.test(i)&&l4.test(s))if(f>=0)this.parsedConfig.splice(f+1,0,d);else{let h={isSection:c,section:i,subsection:a,modified:!0,path:l};this.parsedConfig.push(h,d)}}}toString(){return this.parsedConfig.map(({line:e,section:r,subsection:n,name:i,value:a,modified:s=!1})=>s?i!=null&&a!=null?typeof a=="string"&&/[#;]/.test(a)?` ${i} = "${a}"`:` ${i} = ${a}`:n!=null?`[${r} "${n}"]`:`[${r}]`:e).join(` +`)}},nt=class{static async get({fs:e,gitdir:r}){let n=await e.read(`${r}/config`,{encoding:"utf8"});return tg.from(n)}static async save({fs:e,gitdir:r,config:n}){await e.write(`${r}/config`,n.toString(),{encoding:"utf8"})}},Af=t=>[`${t}`,`refs/${t}`,`refs/tags/${t}`,`refs/heads/${t}`,`refs/remotes/${t}`,`refs/remotes/${t}/HEAD`],m4=["config","description","index","shallow","commondir"],Um;async function Zi(t,e){return Um===void 0&&(Um=new zl),Um.acquire(t,e)}var V=class t{static async updateRemoteRefs({fs:e,gitdir:r,remote:n,refs:i,symrefs:a,tags:s,refspecs:o=void 0,prune:l=!1,pruneTags:c=!1}){for(let v of i.values())if(!v.match(/[0-9a-f]{40}/))throw new Qi(v);let u=await nt.get({fs:e,gitdir:r});if(!o){if(o=await u.getall(`remote.${n}.fetch`),o.length===0)throw new ql(n);o.unshift(`+HEAD:refs/remotes/${n}/HEAD`)}let f=Qm.from(o),d=new Map;if(c){let v=await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"});await t.deleteRefs({fs:e,gitdir:r,refs:v.map(y=>`refs/tags/${y}`)})}if(s){for(let v of i.keys())if(v.startsWith("refs/tags")&&!v.endsWith("^{}")&&!await t.exists({fs:e,gitdir:r,ref:v})){let y=i.get(v);d.set(v,y)}}let h=f.translate([...i.keys()]);for(let[v,y]of h){let b=i.get(v);d.set(y,b)}let p=f.translate([...a.keys()]);for(let[v,y]of p){let b=a.get(v),E=f.translateOne(b);E&&d.set(y,`ref: ${E}`)}let g=[];if(l){for(let v of f.localNamespaces()){let y=(await t.listRefs({fs:e,gitdir:r,filepath:v})).map(b=>`${v}/${b}`);for(let b of y)d.has(b)||g.push(b)}g.length>0&&await t.deleteRefs({fs:e,gitdir:r,refs:g})}for(let[v,y]of d)await Zi(v,async()=>e.write(F.join(r,v),`${y.trim()} +`,"utf8"));return{pruned:g}}static async writeRef({fs:e,gitdir:r,ref:n,value:i}){if(!i.match(/[0-9a-f]{40}/))throw new Qi(i);await Zi(n,async()=>e.write(F.join(r,n),`${i.trim()} +`,"utf8"))}static async writeSymbolicRef({fs:e,gitdir:r,ref:n,value:i}){await Zi(n,async()=>e.write(F.join(r,n),`ref: ${i.trim()} +`,"utf8"))}static async deleteRef({fs:e,gitdir:r,ref:n}){return t.deleteRefs({fs:e,gitdir:r,refs:[n]})}static async deleteRefs({fs:e,gitdir:r,refs:n}){await Promise.all(n.map(o=>e.rm(F.join(r,o))));let i=await Zi("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"})),a=Pf.from(i),s=a.refs.size;for(let o of n)a.refs.has(o)&&a.delete(o);a.refs.sizee.write(`${r}/packed-refs`,i,{encoding:"utf8"})))}static async resolve({fs:e,gitdir:r,ref:n,depth:i=void 0}){if(i!==void 0&&(i--,i===-1))return n;if(n.startsWith("ref: "))return n=n.slice(5),t.resolve({fs:e,gitdir:r,ref:n,depth:i});if(n.length===40&&/[0-9a-f]{40}/.test(n))return n;let a=await t.packedRefs({fs:e,gitdir:r}),s=Af(n).filter(o=>!m4.includes(o));for(let o of s){let l=await Zi(o,async()=>await e.read(`${r}/${o}`,{encoding:"utf8"})||a.get(o));if(l)return t.resolve({fs:e,gitdir:r,ref:l.trim(),depth:i})}throw new je(n)}static async exists({fs:e,gitdir:r,ref:n}){try{return await t.expand({fs:e,gitdir:r,ref:n}),!0}catch(i){return!1}}static async expand({fs:e,gitdir:r,ref:n}){if(n.length===40&&/[0-9a-f]{40}/.test(n))return n;let i=await t.packedRefs({fs:e,gitdir:r}),a=Af(n);for(let s of a)if(await Zi(s,async()=>e.exists(`${r}/${s}`))||i.has(s))return s;throw new je(n)}static async expandAgainstMap({ref:e,map:r}){let n=Af(e);for(let i of n)if(await r.has(i))return i;throw new je(e)}static resolveAgainstMap({ref:e,fullref:r=e,depth:n=void 0,map:i}){if(n!==void 0&&(n--,n===-1))return{fullref:r,oid:e};if(e.startsWith("ref: "))return e=e.slice(5),t.resolveAgainstMap({ref:e,fullref:r,depth:n,map:i});if(e.length===40&&/[0-9a-f]{40}/.test(e))return{fullref:r,oid:e};let a=Af(e);for(let s of a){let o=i.get(s);if(o)return t.resolveAgainstMap({ref:o.trim(),fullref:s,depth:n,map:i})}throw new je(e)}static async packedRefs({fs:e,gitdir:r}){let n=await Zi("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"}));return Pf.from(n).refs}static async listRefs({fs:e,gitdir:r,filepath:n}){let i=t.packedRefs({fs:e,gitdir:r}),a=null;try{a=await e.readdirDeep(`${r}/${n}`),a=a.map(s=>s.replace(`${r}/${n}/`,""))}catch(s){a=[]}for(let s of(await i).keys())s.startsWith(n)&&(s=s.replace(n+"/",""),a.includes(s)||a.push(s));return a.sort(n4),a}static async listBranches({fs:e,gitdir:r,remote:n}){return n?t.listRefs({fs:e,gitdir:r,filepath:`refs/remotes/${n}`}):t.listRefs({fs:e,gitdir:r,filepath:"refs/heads"})}static async listTags({fs:e,gitdir:r}){return(await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"})).filter(i=>!i.endsWith("^{}"))}};function g4(t,e){return Lf(px(t),px(e))}function px(t){return t.mode==="040000"?t.path+"/":t.path}function Dx(t){switch(t){case"040000":return"tree";case"100644":return"blob";case"100755":return"blob";case"120000":return"blob";case"160000":return"commit"}throw new pe(`Unexpected GitTree entry mode: ${t}`)}function v4(t){let e=[],r=0;for(;r`${e.mode} ${e.type} ${e.oid} ${e.path}`).join(` +`)}toObject(){let e=[...this._entries];return e.sort(g4),Buffer.concat(e.map(r=>{let n=Buffer.from(r.mode.replace(/^0/,"")),i=Buffer.from(" "),a=Buffer.from(r.path,"utf8"),s=Buffer.from([0]),o=Buffer.from(r.oid,"hex");return Buffer.concat([n,i,a,s,o])}))}entries(){return this._entries}*[Symbol.iterator](){for(let e of this._entries)yield e}},ea=class{static wrap({type:e,object:r}){return Buffer.concat([Buffer.from(`${e} ${r.byteLength.toString()}\0`),Buffer.from(r)])}static unwrap(e){let r=e.indexOf(32),n=e.indexOf(0),i=e.slice(0,r).toString("utf8"),a=e.slice(r+1,n).toString("utf8"),s=e.length-(n+1);if(parseInt(a)!==s)throw new pe(`Length mismatch: expected ${a} bytes but got ${s} instead.`);return{type:i,object:Buffer.from(e.slice(n+1))}}};async function Lx({fs:t,gitdir:e,oid:r}){let n=`objects/${r.slice(0,2)}/${r.slice(2)}`,i=await t.read(`${e}/${n}`);return i?{object:i,format:"deflated",source:n}:null}function b4(t,e){let r=new Kr(t),n=mx(r);if(n!==e.byteLength)throw new pe(`applyDelta expected source buffer to be ${n} bytes but the provided buffer was ${e.length} bytes`);let i=mx(r),a,s=vx(r,e);if(s.byteLength===i)a=s;else{a=Buffer.alloc(i);let o=new Kr(a);for(o.copy(s);!r.eof();)o.copy(vx(r,e));let l=o.tell();if(i!==l)throw new pe(`applyDelta expected target buffer to be ${i} bytes but the resulting buffer was ${l} bytes`)}return a}function mx(t){let e=0,r=0,n=null;do n=t.readUInt8(),e|=(n&127)<>=1,i+=8;return n}function vx(t,e){let r=t.readUInt8(),n=128,i=15,a=112;if(r&n){let s=gx(t,r&i,4),o=gx(t,(r&a)>>4,3);return o===0&&(o=65536),e.slice(s,s+o)}else return t.slice(r)}function _4(t){let e=[t];return{next(){return Promise.resolve({done:e.length===0,value:e.pop()})},return(){return e=[],{}},[Symbol.asyncIterator](){return this}}}function jx(t){return t[Symbol.asyncIterator]?t[Symbol.asyncIterator]():t[Symbol.iterator]?t[Symbol.iterator]():t.next?t:_4(t)}var Mf=class{constructor(e){if(typeof Buffer=="undefined")throw new Error("Missing Buffer dependency");this.stream=jx(e),this.buffer=null,this.cursor=0,this.undoCursor=0,this.started=!1,this._ended=!1,this._discardedBytes=0}eof(){return this._ended&&this.cursor===this.buffer.length}tell(){return this._discardedBytes+this.cursor}async byte(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(1),this.buffer[this.undoCursor]}async chunk(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(this.buffer.length),this.buffer.slice(this.undoCursor,this.cursor)}async read(e){if(!this.eof())return this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e),this.buffer.slice(this.undoCursor,this.cursor)}async skip(e){this.eof()||(this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e))}async undo(){this.cursor=this.undoCursor}async _next(){this.started=!0;let{done:e,value:r}=await this.stream.next();return e&&(this._ended=!0,!r)?Buffer.alloc(0):(r&&(r=Buffer.from(r)),r)}_trim(){this.buffer=this.buffer.slice(this.undoCursor),this.cursor-=this.undoCursor,this._discardedBytes+=this.undoCursor,this.undoCursor=0}_moveCursor(e){this.undoCursor=this.cursor,this.cursor+=e,this.cursor>this.buffer.length&&(this.cursor=this.buffer.length)}async _accumulate(e){if(this._ended)return;let r=[this.buffer];for(;this.cursor+e>x4(r);){let n=await this._next();if(this._ended)break;r.push(n)}this.buffer=Buffer.concat(r)}async _loadnext(){this._discardedBytes+=this.buffer.length,this.undoCursor=0,this.cursor=0,this.buffer=await this._next()}async _init(){this.buffer=await this._next()}};function x4(t){return t.reduce((e,r)=>e+r.length,0)}async function S4(t,e){let r=new Mf(t),n=await r.read(4);if(n=n.toString("utf8"),n!=="PACK")throw new pe(`Invalid PACK header '${n}'`);let i=await r.read(4);if(i=i.readUInt32BE(0),i!==2)throw new pe(`Invalid packfile version: ${i}`);let a=await r.read(4);if(a=a.readUInt32BE(0),!(a<1))for(;!r.eof()&&a--;){let s=r.tell(),{type:o,length:l,ofs:c,reference:u}=await E4(r),f=new cg.Inflate;for(;!f.result;){let d=await r.chunk();if(!d)break;if(f.push(d,!1),f.err)throw new pe(`Pako error: ${f.msg}`);if(f.result){if(f.result.length!==l)throw new pe("Inflated object size is different from that stated in packfile.");await r.undo(),await r.read(d.length-f.strm.avail_in);let h=r.tell();await e({data:f.result,type:o,num:a,offset:s,end:h,reference:u,ofs:c})}}}}async function E4(t){let e=await t.byte(),r=e>>4&7,n=e&15;if(e&128){let s=4;do e=await t.byte(),n|=(e&127)<i+1<<7|a,-1)}function C4(t,e){let r=e,n=4,i=null;do i=t.readUInt8(),r|=(i&127)<2048*1024*1024)throw new pe("To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.");n.seek(n.tell()+4*255);let s=n.readUInt32BE(),o=[];for(let u=0;u{u===null&&(u=S);let A=Math.floor((u-S)*100/u);A!==f&&n&&await n({phase:"Receiving objects",loaded:u-S,total:u}),f=A,y=i[y],["commit","tree","blob","tag"].includes(y)?a[E]={type:y,offset:E}:y==="ofs-delta"?a[E]={type:y,offset:E}:y==="ref-delta"&&(a[E]={type:y,offset:E})});let d=Object.keys(a).map(Number);for(let[v,y]of d.entries()){let b=v+1===d.length?e.byteLength-20:d[v+1],E=a[y],S=V8.buf(e.slice(y,b))>>>0;E.end=b,E.crc=S}let h=new t({pack:Promise.resolve(e),packfileSha:s,crcs:l,hashes:o,offsets:c,getExternalRefDelta:r});f=null;let p=0,g=[0,0,0,0,0,0,0,0,0,0,0,0];for(let v in a){v=Number(v);let y=Math.floor(p*100/u);y!==f&&n&&await n({phase:"Resolving deltas",loaded:p,total:u}),p++,f=y;let b=a[v];if(!b.oid)try{h.readDepth=0,h.externalReadDepth=0;let{type:E,object:S}=await h.readSlice({start:v});g[h.readDepth]+=1;let A=await bi(ea.wrap({type:E,object:S}));b.oid=A,o.push(A),c.set(A,v),l[A]=b.crc}catch(E){continue}}return o.sort(),h}async toBuffer(){let e=[],r=(c,u)=>{e.push(Buffer.from(c,u))};r("ff744f63","hex"),r("00000002","hex");let n=new Kr(Buffer.alloc(256*4));for(let c=0;c<256;c++){let u=0;for(let f of this.hashes)parseInt(f.slice(0,2),16)<=c&&u++;n.writeUInt32BE(u)}e.push(n.buffer);for(let c of this.hashes)r(c,"hex");let i=new Kr(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)i.writeUInt32BE(this.crcs[c]);e.push(i.buffer);let a=new Kr(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)a.writeUInt32BE(this.offsets.get(c));e.push(a.buffer),r(this.packfileSha,"hex");let s=Buffer.concat(e),o=await bi(s),l=Buffer.alloc(20);return l.write(o,"hex"),Buffer.concat([s,l])}async load({pack:e}){this.pack=e}async unload(){this.pack=null}async read({oid:e}){if(!this.offsets.get(e)){if(this.getExternalRefDelta)return this.externalReadDepth++,this.getExternalRefDelta(e);throw new pe(`Could not read object ${e} from packfile`)}let r=this.offsets.get(e);return this.readSlice({start:r})}async readSlice({start:e}){if(this.offsetCache[e])return Object.assign({},this.offsetCache[e]);this.readDepth++;let r={16:"commit",32:"tree",48:"blob",64:"tag",96:"ofs_delta",112:"ref_delta"};if(!this.pack)throw new pe("Tried to read from a GitPackIndex with no packfile loaded into memory");let n=(await this.pack).slice(e),i=new Kr(n),a=i.readUInt8(),s=a&112,o=r[s];if(o===void 0)throw new pe("Unrecognized type: 0b"+s.toString(2));let l=a&15,c=l;a&128&&(c=C4(i,l));let f=null,d=null;if(o==="ofs_delta"){let p=T4(i),g=e-p;({object:f,type:o}=await this.readSlice({start:g}))}if(o==="ref_delta"){let p=i.slice(20).toString("hex");({object:f,type:o}=await this.read({oid:p}))}let h=n.slice(i.tell());if(d=Buffer.from(await Nx(h)),d.byteLength!==c)throw new pe(`Packfile told us object would have length ${c} but it had length ${d.byteLength}`);return f&&(d=Buffer.from(b4(d,f))),this.readDepth>3&&(this.offsetCache[e]={type:o,object:d}),{type:o,format:"content",object:d}}},kf=Symbol("PackfileCache");async function P4({fs:t,filename:e,getExternalRefDelta:r,emitter:n,emitterPrefix:i}){let a=await t.read(e);return Wl.fromIdx({idx:a,getExternalRefDelta:r})}function ug({fs:t,cache:e,filename:r,getExternalRefDelta:n,emitter:i,emitterPrefix:a}){e[kf]||(e[kf]=new Map);let s=e[kf].get(r);return s||(s=P4({fs:t,filename:r,getExternalRefDelta:n,emitter:i,emitterPrefix:a}),e[kf].set(r,s)),s}async function R4({fs:t,cache:e,gitdir:r,oid:n,format:i="content",getExternalRefDelta:a}){let s=await t.readdir(F.join(r,"objects/pack"));s=s.filter(o=>o.endsWith(".idx"));for(let o of s){let l=`${r}/objects/pack/${o}`,c=await ug({fs:t,cache:e,filename:l,getExternalRefDelta:a});if(c.error)throw new pe(c.error);if(c.offsets.has(n)){if(!c.pack){let f=l.replace(/idx$/,"pack");c.pack=t.read(f)}let u=await c.read({oid:n,getExternalRefDelta:a});return u.format="content",u.source=`objects/pack/${o.replace(/idx$/,"pack")}`,u}}return null}async function Ge({fs:t,cache:e,gitdir:r,oid:n,format:i="content"}){let a=u=>Ge({fs:t,cache:e,gitdir:r,oid:u}),s;if(n==="4b825dc642cb6eb9a060e54bf8d69288fbee4904"&&(s={format:"wrapped",object:Buffer.from("tree 0\0")}),s||(s=await Lx({fs:t,gitdir:r,oid:n})),!s){if(s=await R4({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:a}),!s)throw new je(n);return s}if(i==="deflated"||(s.format==="deflated"&&(s.object=Buffer.from(await Nx(s.object)),s.format="wrapped"),i==="wrapped"))return s;let o=await bi(s.object);if(o!==n)throw new pe(`SHA check failed! Expected ${n}, computed ${o}`);let{object:l,type:c}=ea.unwrap(s.object);if(s.type=c,s.object=l,s.format="content",i==="content")return s;throw new pe(`invalid requested format "${i}"`)}var pn=class t extends Ae{constructor(e,r,n=!0){super(`Failed to create ${e} at ${r} because it already exists.${n?` (Hint: use 'force: true' parameter to overwrite existing ${e}.)`:""}`),this.code=this.name=t.code,this.data={noun:e,where:r,canForce:n}}};pn.code="AlreadyExistsError";var Yl=class t extends Ae{constructor(e,r,n){super(`Found multiple ${e} matching "${r}" (${n.join(", ")}). Use a longer abbreviation length to disambiguate them.`),this.code=this.name=t.code,this.data={nouns:e,short:r,matches:n}}};Yl.code="AmbiguousError";var Xl=class t extends Ae{constructor(e){super(`Your local changes to the following files would be overwritten by checkout: ${e.join(", ")}`),this.code=this.name=t.code,this.data={filepaths:e}}};Xl.code="CheckoutConflictError";var Kl=class t extends Ae{constructor(e,r){super(`Failed to checkout "${e}" because commit ${r} is not available locally. Do a git fetch to make the branch available locally.`),this.code=this.name=t.code,this.data={ref:e,oid:r}}};Kl.code="CommitNotFetchedError";var Zl=class t extends Ae{constructor(){super("Empty response from git server."),this.code=this.name=t.code,this.data={}}};Zl.code="EmptyServerResponseError";var Jl=class t extends Ae{constructor(){super("A simple fast-forward merge was not possible."),this.code=this.name=t.code,this.data={}}};Jl.code="FastForwardError";var Ql=class t extends Ae{constructor(e,r){super(`One or more branches were not updated: ${e}`),this.code=this.name=t.code,this.data={prettyDetails:e,result:r}}};Ql.code="GitPushError";var so=class t extends Ae{constructor(e,r,n){super(`HTTP Error: ${e} ${r}`),this.code=this.name=t.code,this.data={statusCode:e,statusMessage:r,response:n}}};so.code="HttpError";var ta=class t extends Ae{constructor(e){let r="invalid filepath";e==="leading-slash"||e==="trailing-slash"?r='"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.':e==="directory"&&(r='"filepath" should not be a directory.'),super(r),this.code=this.name=t.code,this.data={reason:e}}};ta.code="InvalidFilepathError";var mn=class t extends Ae{constructor(e,r){super(`"${e}" would be an invalid git reference. (Hint: a valid alternative would be "${r}".)`),this.code=this.name=t.code,this.data={ref:e,suggestion:r}}};mn.code="InvalidRefNameError";var ec=class t extends Ae{constructor(e){super(`Maximum search depth of ${e} exceeded.`),this.code=this.name=t.code,this.data={depth:e}}};ec.code="MaxDepthError";var oo=class t extends Ae{constructor(){super("Merges with conflicts are not supported yet."),this.code=this.name=t.code,this.data={}}};oo.code="MergeNotSupportedError";var lo=class t extends Ae{constructor(e,r,n,i){super(`Automatic merge failed with one or more merge conflicts in the following files: ${e.toString()}. Fix conflicts then commit the result.`),this.code=this.name=t.code,this.data={filepaths:e,bothModified:r,deleteByUs:n,deleteByTheirs:i}}};lo.code="MergeConflictError";var zt=class t extends Ae{constructor(e){super(`No name was provided for ${e} in the argument or in the .git/config file.`),this.code=this.name=t.code,this.data={role:e}}};zt.code="MissingNameError";var dr=class t extends Ae{constructor(e){super(`The function requires a "${e}" parameter but none was provided.`),this.code=this.name=t.code,this.data={parameter:e}}};dr.code="MissingParameterError";var tc=class t extends Ae{constructor(e){super('There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more'),this.code=this.name=t.code,this.data={errors:e},this.errors=e}};tc.code="MultipleGitError";var Va=class t extends Ae{constructor(e,r){super(`Expected "${e}" but received "${r}".`),this.code=this.name=t.code,this.data={expected:e,actual:r}}};Va.code="ParseError";var co=class t extends Ae{constructor(e){let r="";e==="not-fast-forward"?r=" because it was not a simple fast-forward":e==="tag-exists"&&(r=" because tag already exists"),super(`Push rejected${r}. Use "force: true" to override.`),this.code=this.name=t.code,this.data={reason:e}}};co.code="PushRejectedError";var Ji=class t extends Ae{constructor(e,r){super(`Remote does not support the "${e}" so the "${r}" parameter cannot be used.`),this.code=this.name=t.code,this.data={capability:e,parameter:r}}};Ji.code="RemoteCapabilityError";var rc=class t extends Ae{constructor(e,r){super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${e}`),this.code=this.name=t.code,this.data={preview:e,response:r}}};rc.code="SmartHttpError";var nc=class t extends Ae{constructor(e,r,n){super(`Git remote "${e}" uses an unrecognized transport protocol: "${r}"`),this.code=this.name=t.code,this.data={url:e,transport:r,suggestion:n}}};nc.code="UnknownTransportError";var ic=class t extends Ae{constructor(e){super(`Cannot parse remote URL: "${e}"`),this.code=this.name=t.code,this.data={url:e}}};ic.code="UrlParseError";var uo=class t extends Ae{constructor(){super("The operation was canceled."),this.code=this.name=t.code,this.data={}}};uo.code="UserCanceledError";var ac=class t extends Ae{constructor(e){super(`Could not merge index: Entry for '${e}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged changes.`),this.code=this.name=t.code,this.data={filepath:e}}};ac.code="IndexResetError";var sc=class t extends Ae{constructor(e){super(`"${e}" does not point to any commit. You're maybe working on a repository with no commits yet. `),this.code=this.name=t.code,this.data={ref:e}}};sc.code="NoCommitError";var Bx=Object.freeze({__proto__:null,AlreadyExistsError:pn,AmbiguousError:Yl,CheckoutConflictError:Xl,CommitNotFetchedError:Kl,EmptyServerResponseError:Zl,FastForwardError:Jl,GitPushError:Ql,HttpError:so,InternalError:pe,InvalidFilepathError:ta,InvalidOidError:Qi,InvalidRefNameError:mn,MaxDepthError:ec,MergeNotSupportedError:oo,MergeConflictError:lo,MissingNameError:zt,MissingParameterError:dr,MultipleGitError:tc,NoRefspecError:ql,NotFoundError:je,ObjectTypeError:tr,ParseError:Va,PushRejectedError:co,RemoteCapabilityError:Ji,SmartHttpError:rc,UnknownTransportError:nc,UnsafeFilepathError:no,UrlParseError:ic,UserCanceledError:uo,UnmergedPathsError:Vl,IndexResetError:ac,NoCommitError:sc});function rg({name:t,email:e,timestamp:r,timezoneOffset:n}){return n=M4(n),`${t} <${e}> ${r} ${n}`}function M4(t){let e=O4(I4(t));t=Math.abs(t);let r=Math.floor(t/60);t-=r*60;let n=String(r),i=String(t);return n.length<2&&(n="0"+n),i.length<2&&(i="0"+i),(e===-1?"-":"+")+n+i}function O4(t){return Math.sign(t)||(Object.is(t,-0)?-1:1)}function I4(t){return t===0?t:-t}function wi(t){return t=t.replace(/\r/g,""),t=t.replace(/^\n+/,""),t=t.replace(/\n+$/,"")+` +`,t}function Of(t){let[,e,r,n,i]=t.match(/^(.*) <(.*)> (.*) (.*)$/);return{name:e,email:r,timestamp:Number(n),timezoneOffset:F4(i)}}function F4(t){let[,e,r,n]=t.match(/(\+|-)(\d\d)(\d\d)/);return n=(e==="+"?1:-1)*(Number(r)*60+Number(n)),$4(n)}function $4(t){return t===0?t:-t}var Mr=class t{constructor(e){if(typeof e=="string")this._tag=e;else if(Buffer.isBuffer(e))this._tag=e.toString("utf8");else if(typeof e=="object")this._tag=t.render(e);else throw new pe("invalid type passed to GitAnnotatedTag constructor")}static from(e){return new t(e)}static render(e){return`object ${e.object} +type ${e.type} +tag ${e.tag} +tagger ${rg(e.tagger)} + +${e.message} +${e.gpgsig?e.gpgsig:""}`}justHeaders(){return this._tag.slice(0,this._tag.indexOf(` + +`))}message(){let e=this.withoutSignature();return e.slice(e.indexOf(` + +`)+2)}parse(){return Object.assign(this.headers(),{message:this.message(),gpgsig:this.gpgsig()})}render(){return this._tag}headers(){let e=this.justHeaders().split(` +`),r=[];for(let i of e)i[0]===" "?r[r.length-1]+=` +`+i.slice(1):r.push(i);let n={};for(let i of r){let a=i.slice(0,i.indexOf(" ")),s=i.slice(i.indexOf(" ")+1);Array.isArray(n[a])?n[a].push(s):n[a]=s}return n.tagger&&(n.tagger=Of(n.tagger)),n.committer&&(n.committer=Of(n.committer)),n}withoutSignature(){let e=wi(this._tag);return e.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1?e:e.slice(0,e.lastIndexOf(` +-----BEGIN PGP SIGNATURE-----`))}gpgsig(){if(this._tag.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1)return;let e=this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"),this._tag.indexOf("-----END PGP SIGNATURE-----")+27);return wi(e)}payload(){return this.withoutSignature()+` +`}toObject(){return Buffer.from(this._tag,"utf8")}static async sign(e,r,n){let i=e.payload(),{signature:a}=await r({payload:i,secretKey:n});a=wi(a);let s=i+a;return t.from(s)}};function zm(t){return t.trim().split(` +`).map(e=>" "+e).join(` +`)+` +`}function D4(t){return t.split(` +`).map(e=>e.replace(/^ /,"")).join(` +`)}var pr=class t{constructor(e){if(typeof e=="string")this._commit=e;else if(Buffer.isBuffer(e))this._commit=e.toString("utf8");else if(typeof e=="object")this._commit=t.render(e);else throw new pe("invalid type passed to GitCommit constructor")}static fromPayloadSignature({payload:e,signature:r}){let n=t.justHeaders(e),i=t.justMessage(e),a=wi(n+` +gpgsig`+zm(r)+` +`+i);return new t(a)}static from(e){return new t(e)}toObject(){return Buffer.from(this._commit,"utf8")}headers(){return this.parseHeaders()}message(){return t.justMessage(this._commit)}parse(){return Object.assign({message:this.message()},this.headers())}static justMessage(e){return wi(e.slice(e.indexOf(` + +`)+2))}static justHeaders(e){return e.slice(0,e.indexOf(` + +`))}parseHeaders(){let e=t.justHeaders(this._commit).split(` +`),r=[];for(let i of e)i[0]===" "?r[r.length-1]+=` +`+i.slice(1):r.push(i);let n={parent:[]};for(let i of r){let a=i.slice(0,i.indexOf(" ")),s=i.slice(i.indexOf(" ")+1);Array.isArray(n[a])?n[a].push(s):n[a]=s}return n.author&&(n.author=Of(n.author)),n.committer&&(n.committer=Of(n.committer)),n}static renderHeaders(e){let r="";if(e.tree?r+=`tree ${e.tree} +`:r+=`tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 +`,e.parent){if(e.parent.length===void 0)throw new pe("commit 'parent' property should be an array");for(let a of e.parent)r+=`parent ${a} +`}let n=e.author;r+=`author ${rg(n)} +`;let i=e.committer||e.author;return r+=`committer ${rg(i)} +`,e.gpgsig&&(r+="gpgsig"+zm(e.gpgsig)),r}static render(e){return t.renderHeaders(e)+` +`+wi(e.message)}render(){return this._commit}withoutSignature(){let e=wi(this._commit);if(e.indexOf(` +gpgsig`)===-1)return e;let r=e.slice(0,e.indexOf(` +gpgsig`)),n=e.slice(e.indexOf(`-----END PGP SIGNATURE----- +`)+28);return wi(r+` +`+n)}isolateSignature(){let e=this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"),this._commit.indexOf("-----END PGP SIGNATURE-----")+27);return D4(e)}static async sign(e,r,n){let i=e.withoutSignature(),a=t.justMessage(e._commit),{signature:s}=await r({payload:i,secretKey:n});s=wi(s);let l=t.justHeaders(e._commit)+` +gpgsig`+zm(s)+` +`+a;return t.from(l)}};async function fo({fs:t,cache:e,gitdir:r,oid:n}){if(n==="4b825dc642cb6eb9a060e54bf8d69288fbee4904")return{tree:hr.from([]),oid:n};let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Mr.from(a).parse().object,fo({fs:t,cache:e,gitdir:r,oid:n});if(i==="commit")return n=pr.from(a).parse().tree,fo({fs:t,cache:e,gitdir:r,oid:n});if(i!=="tree")throw new tr(n,i,"tree");return{tree:hr.from(a),oid:n}}var ng=class{constructor({fs:e,gitdir:r,ref:n,cache:i}){this.fs=e,this.cache=i,this.gitdir=r,this.mapPromise=(async()=>{let s=new Map,o;try{o=await V.resolve({fs:e,gitdir:r,ref:n})}catch(c){c instanceof je&&(o="4b825dc642cb6eb9a060e54bf8d69288fbee4904")}let l=await fo({fs:e,cache:this.cache,gitdir:r,oid:o});return l.type="tree",l.mode="40000",s.set(".",l),s})();let a=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return a.type(this)}async mode(){return a.mode(this)}async stat(){return a.stat(this)}async content(){return a.content(this)}async oid(){return a.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:n,cache:i,gitdir:a}=this,s=await this.mapPromise,o=s.get(r);if(!o)throw new Error(`No obj for ${r}`);let l=o.oid;if(!l)throw new Error(`No oid for obj ${JSON.stringify(o)}`);if(o.type!=="tree")return null;let{type:c,object:u}=await Ge({fs:n,cache:i,gitdir:a,oid:l});if(c!==o.type)throw new tr(l,c,o.type);let f=hr.from(u);for(let d of f)s.set(F.join(r,d.path),d);return f.entries().map(d=>F.join(r,d.path))}async type(e){if(e._type===!1){let r=await this.mapPromise,{type:n}=r.get(e._fullpath);e._type=n}return e._type}async mode(e){if(e._mode===!1){let r=await this.mapPromise,{mode:n}=r.get(e._fullpath);e._mode=Ix(parseInt(n,8))}return e._mode}async stat(e){}async content(e){if(e._content===!1){let r=await this.mapPromise,{fs:n,cache:i,gitdir:a}=this,o=r.get(e._fullpath).oid,{type:l,object:c}=await Ge({fs:n,cache:i,gitdir:a,oid:o});l!=="blob"?e._content=void 0:e._content=new Uint8Array(c)}return e._content}async oid(e){if(e._oid===!1){let n=(await this.mapPromise).get(e._fullpath);e._oid=n.oid}return e._oid}};function Rr({ref:t="HEAD"}={}){let e=Object.create(null);return Object.defineProperty(e,jf,{value:function({fs:r,gitdir:n,cache:i}){return new ng({fs:r,gitdir:n,ref:t,cache:i})}}),Object.freeze(e),e}var ig=class{constructor({fs:e,dir:r,gitdir:n,cache:i}){this.fs=e,this.cache=i,this.dir=r,this.gitdir=n,this.config=null;let a=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return a.type(this)}async mode(){return a.mode(this)}async stat(){return a.stat(this)}async content(){return a.content(this)}async oid(){return a.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:n,dir:i}=this,a=await n.readdir(F.join(i,r));return a===null?null:a.map(s=>F.join(r,s))}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let{fs:r,dir:n}=this,i=await r.lstat(`${n}/${e._fullpath}`);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let a=i.isDirectory()?"tree":"blob";a==="blob"&&!i.isFile()&&!i.isSymbolicLink()&&(a="special"),e._type=a,i=io(i),e._mode=i.mode,i.size===-1&&e._actualSize&&(i.size=e._actualSize),e._stat=i}return e._stat}async content(e){if(e._content===!1){let{fs:r,dir:n,gitdir:i}=this;if(await e.type()==="tree")e._content=void 0;else{let s=await(await this._getGitConfig(r,i)).get("core.autocrlf"),o=await r.read(`${n}/${e._fullpath}`,{autocrlf:s});e._actualSize=o.length,e._stat&&e._stat.size===-1&&(e._stat.size=e._actualSize),e._content=new Uint8Array(o)}}return e._content}async oid(e){if(e._oid===!1){let r=this,{fs:n,gitdir:i,cache:a}=this,s;await ct.acquire({fs:n,gitdir:i,cache:a},async function(o){let l=o.entriesMap.get(e._fullpath),c=await e.stat(),f=await(await r._getGitConfig(n,i)).get("core.filemode"),d=typeof process!="undefined"?process.platform!=="win32":!0;if(!l||Tf(c,l,f,d)){let h=await e.content();h===void 0?s=void 0:(s=await bi(ea.wrap({type:"blob",object:h})),l&&s===l.oid&&(!f||c.mode===l.mode)&&Tf(c,l,f,d)&&o.insert({filepath:e._fullpath,stats:c,oid:s}))}else s=l.oid}),e._oid=s}return e._oid}async _getGitConfig(e,r){return this.config?this.config:(this.config=await nt.get({fs:e,gitdir:r}),this.config)}};function yo(){let t=Object.create(null);return Object.defineProperty(t,jf,{value:function({fs:e,dir:r,gitdir:n,cache:i}){return new ig({fs:e,dir:r,gitdir:n,cache:i})}}),Object.freeze(t),t}function L4(t,e){let r=e-t;return Array.from({length:r},(n,i)=>t+i)}var Hx=typeof Array.prototype.flat=="undefined"?t=>t.reduce((e,r)=>e.concat(r),[]):t=>t.flat(),ag=class{constructor(){this.value=null}consider(e){e!=null&&(this.value===null?this.value=e:ec,reduce:s=async(l,c)=>{let u=Hx(c);return l!==void 0&&u.unshift(l),u},iterate:o=(l,c)=>Promise.all([...c].map(l))}){let l=i.map(h=>h[jf]({fs:t,dir:r,gitdir:n,cache:e})),c=new Array(l.length).fill("."),u=L4(0,l.length),f=async h=>{u.map(v=>{let y=h[v];h[v]=y&&new l[v].ConstructEntry(y)});let g=(await Promise.all(u.map(v=>{let y=h[v];return y?l[v].readdir(y):[]}))).map(v=>(v===null?[]:v)[Symbol.iterator]());return{entries:h,children:j4(g)}},d=async h=>{let{entries:p,children:g}=await f(h),v=p.find(b=>b&&b._fullpath)._fullpath,y=await a(v,p);if(y!==null){let b=await o(d,g);return b=b.filter(E=>E!==void 0),s(y,b)}};return d(c)}async function sg(t,e){let r=await t.readdir(e);r==null?await t.rm(e):r.length?await Promise.all(r.map(n=>{let i=F.join(e,n);return t.lstat(i).then(a=>{if(a)return a.isDirectory()?sg(t,i):t.rm(i)})})).then(()=>t.rmdir(e)):await t.rmdir(e)}function N4(t){return B4(t)&&yx(t.then)&&yx(t.catch)}function B4(t){return t&&typeof t=="object"}function yx(t){return typeof t=="function"}function wx(t){return N4((r=>{try{return r.readFile().catch(n=>n)}catch(n){return n}})(t))}var bx=["readFile","writeFile","mkdir","rmdir","unlink","stat","lstat","readdir","readlink","symlink"];function _x(t,e){if(wx(e))for(let r of bx)t[`_${r}`]=e[r].bind(e);else for(let r of bx)t[`_${r}`]=jm(e[r].bind(e));wx(e)?e.rm?t._rm=e.rm.bind(e):e.rmdir.length>1?t._rm=e.rmdir.bind(e):t._rm=sg.bind(null,t):e.rm?t._rm=jm(e.rm.bind(e)):e.rmdir.length>2?t._rm=jm(e.rmdir.bind(e)):t._rm=sg.bind(null,t)}var Q=class{constructor(e){if(typeof e._original_unwrapped_fs!="undefined")return e;let r=Object.getOwnPropertyDescriptor(e,"promises");r&&r.enumerable?_x(this,e.promises):_x(this,e),this._original_unwrapped_fs=e}async exists(e,r={}){try{return await this._stat(e),!0}catch(n){if(n.code==="ENOENT"||n.code==="ENOTDIR"||(n.code||"").includes("ENS"))return!1;throw console.log('Unhandled error in "FileSystem.exists()" function',n),n}}async read(e,r={}){try{let n=await this._readFile(e,r);if(r.autocrlf==="true")try{n=new TextDecoder("utf8",{fatal:!0}).decode(n),n=n.replace(/\r\n/g,` +`),n=new TextEncoder().encode(n)}catch(i){}return typeof n!="string"&&(n=Buffer.from(n)),n}catch(n){return null}}async write(e,r,n={}){try{await this._writeFile(e,r,n);return}catch(i){await this.mkdir(ao(e)),await this._writeFile(e,r,n)}}async mkdir(e,r=!1){try{await this._mkdir(e);return}catch(n){if(n===null||n.code==="EEXIST")return;if(r)throw n;if(n.code==="ENOENT"){let i=ao(e);if(i==="."||i==="/"||i===e)throw n;await this.mkdir(i),await this.mkdir(e,!0)}}}async rm(e){try{await this._unlink(e)}catch(r){if(r.code!=="ENOENT")throw r}}async rmdir(e,r){try{r&&r.recursive?await this._rm(e,r):await this._rmdir(e)}catch(n){if(n.code!=="ENOENT")throw n}}async readdir(e){try{let r=await this._readdir(e);return r.sort(Lf),r}catch(r){return r.code==="ENOTDIR"?null:[]}}async readdirDeep(e){let r=await this._readdir(e);return(await Promise.all(r.map(async i=>{let a=e+"/"+i;return(await this._stat(a)).isDirectory()?this.readdirDeep(a):a}))).reduce((i,a)=>i.concat(a),[])}async lstat(e){try{return await this._lstat(e)}catch(r){if(r.code==="ENOENT"||(r.code||"").includes("ENS"))return null;throw r}}async readlink(e,r={encoding:"buffer"}){try{let n=await this._readlink(e,r);return Buffer.isBuffer(n)?n:Buffer.from(n)}catch(n){if(n.code==="ENOENT"||(n.code||"").includes("ENS"))return null;throw n}}async writelink(e,r){return this._symlink(r.toString("utf8"),e)}};function P(t,e){if(e===void 0)throw new dr(t)}async function If(t,e){return!t&&!e?!1:t&&!e||!t&&e?!0:!(await t.type()==="tree"&&await e.type()==="tree"||await t.type()===await e.type()&&await t.mode()===await e.mode()&&await t.oid()===await e.oid())}async function Ux({fs:t,dir:e,gitdir:r=F.join(e,".git"),commit:n="HEAD",cache:i={}}){try{P("fs",t),P("dir",e),P("gitdir",r);let a=new Q(t),s=[Rr({ref:n}),yo(),Ya()],o=[];await ct.acquire({fs:a,gitdir:r,cache:i},async function(c){o=c.unmergedPaths});let l=await ra({fs:a,cache:i,dir:e,gitdir:r,trees:s,map:async function(c,[u,f,d]){let h=!await If(f,d),p=o.includes(c),g=!await If(d,u);if(h||p)return u?{path:c,mode:await u.mode(),oid:await u.oid(),type:await u.type(),content:await u.content()}:void 0;if(g)return!1;throw new ac(c)}});await ct.acquire({fs:a,gitdir:r,cache:i},async function(c){for(let u of l)if(u!==!1){if(!u){await a.rmdir(`${e}/${u.path}`,{recursive:!0}),c.delete({filepath:u.path});continue}if(u.type==="blob"){let f=new TextDecoder().decode(u.content);await a.write(`${e}/${u.path}`,f,{mode:u.mode}),c.insert({filepath:u.path,oid:u.oid,stage:0})}}})}catch(a){throw a.caller="git.abortMerge",a}}var na=class{static async isIgnored({fs:e,dir:r,gitdir:n=F.join(r,".git"),filepath:i}){if(Cf(i)===".git")return!0;if(i===".")return!1;let a="",s=F.join(n,"info","exclude");await e.exists(s)&&(a=await e.read(s,"utf8"));let o=[{gitignore:F.join(r,".gitignore"),filepath:i}],l=i.split("/").filter(Boolean);for(let u=1;u{let u=await(await nt.get({fs:o,gitdir:r})).get("core.autocrlf");return og({dir:e,gitdir:r,fs:o,filepath:n,index:l,force:a,parallel:s,autocrlf:u})})}catch(o){throw o.caller="git.add",o}}async function og({dir:t,gitdir:e,fs:r,filepath:n,index:i,force:a,parallel:s,autocrlf:o}){n=Array.isArray(n)?n:[n];let l=n.map(async d=>{if(!a&&await na.isIgnored({fs:r,dir:t,gitdir:e,filepath:d}))return;let h=await r.lstat(F.join(t,d));if(!h)throw new je(d);if(h.isDirectory()){let p=await r.readdir(F.join(t,d));if(s){let g=p.map(v=>og({dir:t,gitdir:e,fs:r,filepath:[F.join(d,v)],index:i,force:a,parallel:s,autocrlf:o}));await Promise.all(g)}else for(let g of p)await og({dir:t,gitdir:e,fs:r,filepath:[F.join(d,g)],index:i,force:a,parallel:s,autocrlf:o})}else{let p=h.isSymbolicLink()?await r.readlink(F.join(t,d)).then(zx):await r.read(F.join(t,d),{autocrlf:o});if(p===null)throw new je(d);let g=await mr({fs:r,gitdir:e,type:"blob",object:p});i.insert({filepath:d,stats:h,oid:g})}}),c=await Promise.allSettled(l),u=c.filter(d=>d.status==="rejected").map(d=>d.reason);if(u.length>1)throw new tc(u);if(u.length===1)throw u[0];return c.filter(d=>d.status==="fulfilled"&&d.value).map(d=>d.value)}async function oc({fs:t,gitdir:e,path:r}){return(await nt.get({fs:t,gitdir:e})).get(r)}function qx(t,...e){for(let r of e)if(r)for(let n of Object.keys(r)){let i=r[n];i!==void 0&&(t[n]=i)}return t}async function ia({fs:t,gitdir:e,author:r,commit:n}){let i=Math.floor(Date.now()/1e3),a={name:await oc({fs:t,gitdir:e,path:"user.name"}),email:await oc({fs:t,gitdir:e,path:"user.email"})||"",timestamp:i,timezoneOffset:new Date(i*1e3).getTimezoneOffset()},s=qx({},a,n?n.author:void 0,r);if(s.name!==void 0)return s}async function ho({fs:t,gitdir:e,author:r,committer:n,commit:i}){let a=Math.floor(Date.now()/1e3),s={name:await oc({fs:t,gitdir:e,path:"user.name"}),email:await oc({fs:t,gitdir:e,path:"user.email"})||"",timestamp:a,timezoneOffset:new Date(a*1e3).getTimezoneOffset()},o=qx({},s,i?i.committer:void 0,r,n);if(o.name!==void 0)return o}async function Wx({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Mr.from(a).parse().object,Wx({fs:t,cache:e,gitdir:r,oid:n});if(i!=="commit")throw new tr(n,i,"commit");return{commit:pr.from(a),oid:n}}async function po({fs:t,cache:e,gitdir:r,oid:n}){let{commit:i,oid:a}=await Wx({fs:t,cache:e,gitdir:r,oid:n});return{oid:a,commit:i.parse(),payload:i.withoutSignature()}}async function Nf({fs:t,cache:e,onSign:r,gitdir:n,message:i,author:a,committer:s,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h}){let p=!1;f||(f=await V.resolve({fs:t,gitdir:n,ref:"HEAD",depth:2}));let g,v;try{g=await V.resolve({fs:t,gitdir:n,ref:f}),v=await po({fs:t,gitdir:n,oid:g,cache:{}})}catch(E){p=!0}if(l&&p)throw new sc(f);let y=l?await ia({fs:t,gitdir:n,author:a,commit:v.commit}):await ia({fs:t,gitdir:n,author:a});if(!y)throw new zt("author");let b=l?await ho({fs:t,gitdir:n,author:y,committer:s,commit:v.commit}):await ho({fs:t,gitdir:n,author:y,committer:s});if(!b)throw new zt("committer");return ct.acquire({fs:t,gitdir:n,cache:e,allowUnmerged:!1},async function(E){let A=$x(E.entries).get(".");if(h||(h=await Yx({fs:t,gitdir:n,inode:A,dryRun:c})),d?d=await Promise.all(d.map(x=>V.resolve({fs:t,gitdir:n,ref:x}))):l?d=v.commit.parent:d=g?[g]:[],!i)if(l)i=v.commit.message;else throw new dr("message");let k=pr.from({tree:h,parent:d,author:y,committer:b,message:i});o&&(k=await pr.sign(k,r,o));let w=await mr({fs:t,gitdir:n,type:"commit",object:k.toObject(),dryRun:c});return!u&&!c&&await V.writeRef({fs:t,gitdir:n,ref:f,value:w}),w})}async function Yx({fs:t,gitdir:e,inode:r,dryRun:n}){let i=r.children;for(let l of i)l.type==="tree"&&(l.metadata.mode="040000",l.metadata.oid=await Yx({fs:t,gitdir:e,inode:l,dryRun:n}));let a=i.map(l=>({mode:l.metadata.mode,path:l.basename,oid:l.metadata.oid,type:l.type})),s=hr.from(a);return await mr({fs:t,gitdir:e,type:"tree",object:s.toObject(),dryRun:n})}async function lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i}){if(i.startsWith("/"))throw new ta("leading-slash");if(i.endsWith("/"))throw new ta("trailing-slash");let a=n,s=await fo({fs:t,cache:e,gitdir:r,oid:n}),o=s.tree;if(i==="")n=s.oid;else{let l=i.split("/");n=await Xx({fs:t,cache:e,gitdir:r,tree:o,pathArray:l,oid:a,filepath:i})}return n}async function Xx({fs:t,cache:e,gitdir:r,tree:n,pathArray:i,oid:a,filepath:s}){let o=i.shift();for(let l of n)if(l.path===o){if(i.length===0)return l.oid;{let{type:c,object:u}=await Ge({fs:t,cache:e,gitdir:r,oid:l.oid});if(c!=="tree")throw new tr(a,c,"tree",s);return n=hr.from(u),Xx({fs:t,cache:e,gitdir:r,tree:n,pathArray:i,oid:a,filepath:s})}}throw new je(`file or directory found at "${a}:${s}"`)}async function wo({fs:t,cache:e,gitdir:r,oid:n,filepath:i=void 0}){i!==void 0&&(n=await lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i}));let{tree:a,oid:s}=await fo({fs:t,cache:e,gitdir:r,oid:n});return{oid:s,tree:a.entries()}}async function cc({fs:t,gitdir:e,tree:r}){let n=hr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"tree",object:n,format:"content"})}async function z4({fs:t,cache:e,onSign:r,gitdir:n,ref:i,oid:a,note:s,force:o,author:l,committer:c,signingKey:u}){let f;try{f=await V.resolve({gitdir:n,fs:t,ref:i})}catch(y){if(!(y instanceof je))throw y}let h=(await wo({fs:t,cache:e,gitdir:n,oid:f||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;if(o)h=h.filter(y=>y.path!==a);else for(let y of h)if(y.path===a)throw new pn("note",a);typeof s=="string"&&(s=Buffer.from(s,"utf8"));let p=await mr({fs:t,gitdir:n,type:"blob",object:s,format:"content"});h.push({mode:"100644",path:a,oid:p,type:"blob"});let g=await cc({fs:t,gitdir:n,tree:h});return await Nf({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tree:g,parent:f&&[f],message:`Note added by 'isomorphic-git addNote' +`,author:l,committer:c,signingKey:u})}async function Kx({fs:t,onSign:e,dir:r,gitdir:n=F.join(r,".git"),ref:i="refs/notes/commits",oid:a,note:s,force:o,author:l,committer:c,signingKey:u,cache:f={}}){try{P("fs",t),P("gitdir",n),P("oid",a),P("note",s),u&&P("onSign",e);let d=new Q(t),h=await ia({fs:d,gitdir:n,author:l});if(!h)throw new zt("author");let p=await ho({fs:d,gitdir:n,author:h,committer:c});if(!p)throw new zt("committer");return await z4({fs:new Q(d),cache:f,onSign:e,gitdir:n,ref:i,oid:a,note:s,force:o,author:h,committer:p,signingKey:u})}catch(d){throw d.caller="git.addNote",d}}async function Zx({fs:t,gitdir:e,remote:r,url:n,force:i}){if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let a=await nt.get({fs:t,gitdir:e});if(!i&&(await a.getSubsections("remote")).includes(r)&&n!==await a.get(`remote.${r}.url`))throw new pn("remote",r);await a.set(`remote.${r}.url`,n),await a.set(`remote.${r}.fetch`,`+refs/heads/*:refs/remotes/${r}/*`),await nt.save({fs:t,gitdir:e,config:a})}async function Jx({fs:t,dir:e,gitdir:r=F.join(e,".git"),remote:n,url:i,force:a=!1}){try{return P("fs",t),P("gitdir",r),P("remote",n),P("url",i),await Zx({fs:new Q(t),gitdir:r,remote:n,url:i,force:a})}catch(s){throw s.caller="git.addRemote",s}}async function V4({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tagger:a,message:s=i,gpgsig:o,object:l,signingKey:c,force:u=!1}){if(i=i.startsWith("refs/tags/")?i:`refs/tags/${i}`,!u&&await V.exists({fs:t,gitdir:n,ref:i}))throw new pn("tag",i);let f=await V.resolve({fs:t,gitdir:n,ref:l||"HEAD"}),{type:d}=await Ge({fs:t,cache:e,gitdir:n,oid:f}),h=Mr.from({object:f,type:d,tag:i.replace("refs/tags/",""),tagger:a,message:s,gpgsig:o});c&&(h=await Mr.sign(h,r,c));let p=await mr({fs:t,gitdir:n,type:"tag",object:h.toObject()});await V.writeRef({fs:t,gitdir:n,ref:i,value:p})}async function Qx({fs:t,onSign:e,dir:r,gitdir:n=F.join(r,".git"),ref:i,tagger:a,message:s=i,gpgsig:o,object:l,signingKey:c,force:u=!1,cache:f={}}){try{P("fs",t),P("gitdir",n),P("ref",i),c&&P("onSign",e);let d=new Q(t),h=await ia({fs:d,gitdir:n,author:a});if(!h)throw new zt("tagger");return await V4({fs:d,cache:f,onSign:e,gitdir:n,ref:i,tagger:h,message:s,gpgsig:o,object:l,signingKey:c,force:u})}catch(d){throw d.caller="git.annotatedTag",d}}async function q4({fs:t,gitdir:e,ref:r,object:n,checkout:i=!1,force:a=!1}){if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let s=`refs/heads/${r}`;if(!a&&await V.exists({fs:t,gitdir:e,ref:s}))throw new pn("branch",r,!1);let o;try{o=await V.resolve({fs:t,gitdir:e,ref:n||"HEAD"})}catch(l){}o&&await V.writeRef({fs:t,gitdir:e,ref:s,value:o}),i&&await V.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:s})}async function eS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,object:i,checkout:a=!1,force:s=!1}){try{return P("fs",t),P("gitdir",r),P("ref",n),await q4({fs:new Q(t),gitdir:r,ref:n,object:i,checkout:a,force:s})}catch(o){throw o.caller="git.branch",o}}var tS=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);async function fg({fs:t,cache:e,onProgress:r,onPostCheckout:n,dir:i,gitdir:a,remote:s,ref:o,filepaths:l,noCheckout:c,noUpdateHead:u,dryRun:f,force:d,track:h=!0,nonBlocking:p=!1,batchSize:g=100}){let v;if(n)try{v=await V.resolve({fs:t,gitdir:a,ref:"HEAD"})}catch(b){v="0000000000000000000000000000000000000000"}let y;try{y=await V.resolve({fs:t,gitdir:a,ref:o})}catch(b){if(o==="HEAD")throw b;let E=`${s}/${o}`;if(y=await V.resolve({fs:t,gitdir:a,ref:E}),h){let S=await nt.get({fs:t,gitdir:a});await S.set(`branch.${o}.remote`,s),await S.set(`branch.${o}.merge`,`refs/heads/${o}`),await nt.save({fs:t,gitdir:a,config:S})}await V.writeRef({fs:t,gitdir:a,ref:`refs/heads/${o}`,value:y})}if(!c){let b;try{b=await W4({fs:t,cache:e,onProgress:r,dir:i,gitdir:a,ref:o,force:d,filepaths:l})}catch(w){throw w instanceof je&&w.data.what===y?new Kl(o,y):w}let E=b.filter(([w])=>w==="conflict").map(([w,x])=>x);if(E.length>0)throw new Xl(E);let S=b.filter(([w])=>w==="error").map(([w,x])=>x);if(S.length>0)throw new pe(S.join(", "));if(f){n&&await n({previousHead:v,newHead:y,type:l!=null&&l.length>0?"file":"branch"});return}let A=0,k=b.length;if(await ct.acquire({fs:t,gitdir:a,cache:e},async function(w){await Promise.all(b.filter(([x])=>x==="delete"||x==="delete-index").map(async function([x,_]){let T=`${i}/${_}`;x==="delete"&&await t.rm(T),w.delete({filepath:_}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}))}),await ct.acquire({fs:t,gitdir:a,cache:e},async function(w){for(let[x,_]of b)if(x==="rmdir"||x==="rmdir-index"){let T=`${i}/${_}`;try{x==="rmdir"&&await t.rmdir(T),w.delete({filepath:_}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}catch(C){if(C.code==="ENOTEMPTY")console.log(`Did not delete ${_} because directory is not empty`);else throw C}}}),await Promise.all(b.filter(([w])=>w==="mkdir"||w==="mkdir-index").map(async function([w,x]){let _=`${i}/${x}`;await t.mkdir(_),r&&await r({phase:"Updating workdir",loaded:++A,total:k})})),p){let w=b.filter(([_])=>_==="create"||_==="create-index"||_==="update"||_==="mkdir-index"),x=await xx("Update Working Dir",w.map(([_,T,C,I,L])=>()=>X4({fs:t,cache:e,gitdir:a,dir:i},[_,T,C,I,L])),r,g);await ct.acquire({fs:t,gitdir:a,cache:e,allowUnmerged:!0},async function(_){await xx("Update Index",x.map(([T,C,I])=>()=>Y4({index:_,fullpath:T,oid:C,stats:I})),r,g)})}else await ct.acquire({fs:t,gitdir:a,cache:e,allowUnmerged:!0},async function(w){await Promise.all(b.filter(([x])=>x==="create"||x==="create-index"||x==="update"||x==="mkdir-index").map(async function([x,_,T,C,I]){let L=`${i}/${_}`;try{if(x!=="create-index"&&x!=="mkdir-index"){let{object:J}=await Ge({fs:t,cache:e,gitdir:a,oid:T});if(I&&await t.rm(L),C===33188)await t.write(L,J);else if(C===33261)await t.write(L,J,{mode:511});else if(C===40960)await t.writelink(L,J);else throw new pe(`Invalid mode 0o${C.toString(8)} detected in blob ${T}`)}let $=await t.lstat(L);C===33261&&($.mode=493),x==="mkdir-index"&&($.mode=57344),w.insert({filepath:_,stats:$,oid:T}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}catch($){console.log($)}}))});n&&await n({previousHead:v,newHead:y,type:l!=null&&l.length>0?"file":"branch"})}if(!u){let b=await V.expand({fs:t,gitdir:a,ref:o});b.startsWith("refs/heads")?await V.writeSymbolicRef({fs:t,gitdir:a,ref:"HEAD",value:b}):await V.writeRef({fs:t,gitdir:a,ref:"HEAD",value:y})}}async function W4({fs:t,cache:e,onProgress:r,dir:n,gitdir:i,ref:a,force:s,filepaths:o}){let l=0;return ra({fs:t,cache:e,dir:n,gitdir:i,trees:[Rr({ref:a}),yo(),Ya()],map:async function(c,[u,f,d]){if(c===".")return;if(o&&!o.some(p=>tS(c,p)))return null;switch(r&&await r({phase:"Analyzing workdir",loaded:++l}),[!!d,!!u,!!f].map(Number).join("")){case"000":return;case"001":return s&&o&&o.includes(c)?["delete",c]:void 0;case"010":switch(await u.type()){case"tree":return["mkdir",c];case"blob":return["create",c,await u.oid(),await u.mode()];case"commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`new entry Unhandled type ${await u.type()}`]}case"011":switch(`${await u.type()}-${await f.type()}`){case"tree-tree":return;case"tree-blob":case"blob-tree":return["conflict",c];case"blob-blob":return await u.oid()!==await f.oid()?s?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]:await u.mode()!==await f.mode()?s?["update",c,await u.oid(),await u.mode(),!0]:["conflict",c]:["create-index",c,await u.oid(),await u.mode()];case"commit-tree":return;case"commit-blob":return["conflict",c];default:return["error",`new entry Unhandled type ${u.type}`]}case"100":return["delete-index",c];case"101":switch(await d.type()){case"tree":return["rmdir-index",c];case"blob":return await d.oid()!==await f.oid()?s?["delete",c]:["conflict",c]:["delete",c];case"commit":return["rmdir-index",c];default:return["error",`delete entry Unhandled type ${await d.type()}`]}case"110":case"111":switch(`${await d.type()}-${await u.type()}`){case"tree-tree":return;case"blob-blob":{if(await d.oid()===await u.oid()&&await d.mode()===await u.mode()&&!s)return;if(f){if(await f.oid()!==await d.oid()&&await f.oid()!==await u.oid())return s?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]}else if(s)return["update",c,await u.oid(),await u.mode(),await u.mode()!==await d.mode()];return await u.mode()!==await d.mode()?["update",c,await u.oid(),await u.mode(),!0]:await u.oid()!==await d.oid()?["update",c,await u.oid(),await u.mode(),!1]:void 0}case"tree-blob":return["update-dir-to-blob",c,await u.oid()];case"blob-tree":return["update-blob-to-tree",c];case"commit-commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`update entry Unhandled type ${await d.type()}-${await u.type()}`]}}},reduce:async function(c,u){return u=Hx(u),c?c&&c[0]==="rmdir"?(u.push(c),u):(u.unshift(c),u):u}})}async function Y4({index:t,fullpath:e,stats:r,oid:n}){try{t.insert({filepath:e,stats:r,oid:n})}catch(i){console.warn(`Error inserting ${e} into index:`,i)}}async function X4({fs:t,cache:e,gitdir:r,dir:n},[i,a,s,o,l]){let c=`${n}/${a}`;if(i!=="create-index"&&i!=="mkdir-index"){let{object:f}=await Ge({fs:t,cache:e,gitdir:r,oid:s});if(l&&await t.rm(c),o===33188)await t.write(c,f);else if(o===33261)await t.write(c,f,{mode:511});else if(o===40960)await t.writelink(c,f);else throw new pe(`Invalid mode 0o${o.toString(8)} detected in blob ${s}`)}let u=await t.lstat(c);return o===33261&&(u.mode=493),i==="mkdir-index"&&(u.mode=57344),[a,s,u]}async function xx(t,e,r,n){let i=[];try{for(let a=0;al());(await Promise.allSettled(s)).forEach(l=>{l.status==="fulfilled"&&i.push(l.value)}),r&&await r({phase:"Updating workdir",loaded:a+s.length,total:e.length})}return i}catch(a){console.error(`Error during ${t}: ${a}`)}return i}async function dg({fs:t,onProgress:e,onPostCheckout:r,dir:n,gitdir:i=F.join(n,".git"),remote:a="origin",ref:s,filepaths:o,noCheckout:l=!1,noUpdateHead:c=s===void 0,dryRun:u=!1,force:f=!1,track:d=!0,cache:h={},nonBlocking:p=!1,batchSize:g=100}){try{P("fs",t),P("dir",n),P("gitdir",i);let v=s||"HEAD";return await fg({fs:new Q(t),cache:h,onProgress:e,onPostCheckout:r,dir:n,gitdir:i,remote:a,ref:v,filepaths:o,noCheckout:l,noUpdateHead:c,dryRun:u,force:f,track:d,nonBlocking:p,batchSize:g})}catch(v){throw v.caller="git.checkout",v}}var K4=new RegExp("^refs/(heads/|tags/|remotes/)?(.*)");function za(t){let e=K4.exec(t);return e?e[1]==="remotes/"&&t.endsWith("/HEAD")?e[2].slice(0,-5):e[2]:t}async function sa({fs:t,gitdir:e,fullname:r=!1,test:n=!1}){let i=await V.resolve({fs:t,gitdir:e,ref:"HEAD",depth:2});if(n)try{await V.resolve({fs:t,gitdir:e,ref:i})}catch(a){return}if(i.startsWith("refs/"))return r?i:za(i)}function Z4(t){return t=t.replace(/^git@([^:]+):/,"https://$1/"),t=t.replace(/^ssh:\/\//,"https://"),t}function rS({username:t="",password:e=""}){return`Basic ${Buffer.from(`${t}:${e}`).toString("base64")}`}async function uc(t,e){let r=jx(t);for(;;){let{value:n,done:i}=await r.next();if(n&&await e(n),i)break}r.return&&r.return()}async function Ff(t){let e=0,r=[];await uc(t,a=>{r.push(a),e+=a.byteLength});let n=new Uint8Array(e),i=0;for(let a of r)n.set(a,i),i+=a.byteLength;return n}function Sx(t){let e=t.match(/^https?:\/\/([^/]+)@/);if(e==null)return{url:t,auth:{}};e=e[1];let[r,n]=e.split(":");return t=t.replace(`${e}@`,""),{url:t,auth:{username:r,password:n}}}function lg(t,e){let r=e.toString(16);return"0".repeat(t-r.length)+r}var Qe=class{static flush(){return Buffer.from("0000","utf8")}static delim(){return Buffer.from("0001","utf8")}static encode(e){typeof e=="string"&&(e=Buffer.from(e));let r=e.length+4,n=lg(4,r);return Buffer.concat([Buffer.from(n,"utf8"),e])}static streamReader(e){let r=new Mf(e);return async function(){try{let i=await r.read(4);if(i==null)return!0;if(i=parseInt(i.toString("utf8"),16),i===0||i===1)return null;let a=await r.read(i-4);return a==null?!0:a}catch(i){return e.error=i,!0}}}};async function Ex(t){let e={},r;for(;r=await t(),r!==!0;){if(r===null)continue;r=r.toString("utf8").replace(/\n$/,"");let n=r.indexOf("=");if(n>-1){let i=r.slice(0,n),a=r.slice(n+1);e[i]=a}else e[r]=!0}return{protocolVersion:2,capabilities2:e}}async function Ax(t,{service:e}){let r=new Set,n=new Map,i=new Map,a=Qe.streamReader(t),s=await a();for(;s===null;)s=await a();if(s===!0)throw new Zl;if(s.includes("version 2"))return Ex(a);if(s.toString("utf8").replace(/\n$/,"")!==`# service=${e}`)throw new Va(`# service=${e}\\n`,s.toString("utf8"));let o=await a();for(;o===null;)o=await a();if(o===!0)return{capabilities:r,refs:n,symrefs:i};if(o=o.toString("utf8"),o.includes("version 2"))return Ex(a);let[l,c]=qm(o,"\0","\\x00");if(c.split(" ").map(u=>r.add(u)),l!=="0000000000000000000000000000000000000000 capabilities^{}"){let[u,f]=qm(l," "," ");for(n.set(f,u);;){let d=await a();if(d===!0)break;if(d!==null){let[h,p]=qm(d.toString("utf8")," "," ");n.set(p,h)}}}for(let u of r)if(u.startsWith("symref=")){let f=u.match(/symref=([^:]+):(.*)/);f.length===3&&i.set(f[1],f[2])}return{protocolVersion:1,capabilities:r,refs:n,symrefs:i}}function qm(t,e,r){let n=t.trim().split(e);if(n.length!==2)throw new Va(`Two strings separated by '${r}'`,t.toString("utf8"));return n}var kx=(t,e)=>t.endsWith("?")?`${t}${e}`:`${t}/${e.replace(/^https?:\/\//,"")}`,Tx=(t,e)=>{(e.username||e.password)&&(t.Authorization=rS(e)),e.headers&&Object.assign(t,e.headers)},Wm=async t=>{try{let e=Buffer.from(await Ff(t.body)),r=e.toString("utf8");return{preview:r.length<256?r:r.slice(0,256)+"...",response:r,data:e}}catch(e){return{}}},mo=class{static async capabilities(){return["discover","connect"]}static async discover({http:e,onProgress:r,onAuth:n,onAuthSuccess:i,onAuthFailure:a,corsProxy:s,service:o,url:l,headers:c,protocolVersion:u}){let{url:f,auth:d}=Sx(l),h=s?kx(s,f):f;(d.username||d.password)&&(c.Authorization=rS(d)),u===2&&(c["Git-Protocol"]="version=2");let p,g,v=!1;do if(p=await e.request({onProgress:r,method:"GET",url:`${h}/info/refs?service=${o}`,headers:c}),g=!1,p.statusCode===401||p.statusCode===203){let y=v?a:n;if(y){if(d=await y(f,{...d,headers:{...c}}),d&&d.cancel)throw new uo;d&&(Tx(c,d),v=!0,g=!0)}}else p.statusCode===200&&v&&i&&await i(f,d);while(g);if(p.statusCode!==200){let{response:y}=await Wm(p);throw new so(p.statusCode,p.statusMessage,y)}if(p.headers["content-type"]===`application/x-${o}-advertisement`){let y=await Ax(p.body,{service:o});return y.auth=d,y}else{let{preview:y,response:b,data:E}=await Wm(p);try{let S=await Ax([E],{service:o});return S.auth=d,S}catch(S){throw new rc(y,b)}}}static async connect({http:e,onProgress:r,corsProxy:n,service:i,url:a,auth:s,body:o,headers:l}){let c=Sx(a);c&&(a=c.url),n&&(a=kx(n,a)),l["content-type"]=`application/x-${i}-request`,l.accept=`application/x-${i}-result`,Tx(l,s);let u=await e.request({onProgress:r,method:"POST",url:`${a}/${i}`,body:o,headers:l});if(u.statusCode!==200){let{response:f}=Wm(u);throw new so(u.statusCode,u.statusMessage,f)}return u}};function J4({url:t}){if(t.startsWith("git@"))return{transport:"ssh",address:t};let e=t.match(/(\w+)(:\/\/|::)(.*)/);if(e!==null){if(e[2]==="://")return{transport:e[1],address:e[0]};if(e[2]==="::")return{transport:e[1],address:e[3]}}}var go=class{static getRemoteHelperFor({url:e}){let r=new Map;r.set("http",mo),r.set("https",mo);let n=J4({url:e});if(!n)throw new ic(e);if(r.has(n.transport))return r.get(n.transport);throw new nc(e,n.transport,n.transport==="ssh"?Z4(e):void 0)}},Ga=null,qa=class{static async read({fs:e,gitdir:r}){Ga===null&&(Ga=new zl);let n=F.join(r,"shallow"),i=new Set;return await Ga.acquire(n,async function(){let a=await e.read(n,{encoding:"utf8"});if(a===null||a.trim()==="")return i;a.trim().split(` +`).map(s=>i.add(s))}),i}static async write({fs:e,gitdir:r,oids:n}){Ga===null&&(Ga=new zl);let i=F.join(r,"shallow");if(n.size>0){let a=[...n].join(` +`)+` +`;await Ga.acquire(i,async function(){await e.write(i,a,{encoding:"utf8"})})}else await Ga.acquire(i,async function(){await e.rm(i)})}};async function Q4({fs:t,gitdir:e,oid:r}){let n=`objects/${r.slice(0,2)}/${r.slice(2)}`;return t.exists(`${e}/${n}`)}async function eD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i}){let a=await t.readdir(F.join(r,"objects/pack"));a=a.filter(s=>s.endsWith(".idx"));for(let s of a){let o=`${r}/objects/pack/${s}`,l=await ug({fs:t,cache:e,filename:o,getExternalRefDelta:i});if(l.error)throw new pe(l.error);if(l.offsets.has(n))return!0}return!1}async function Cx({fs:t,cache:e,gitdir:r,oid:n,format:i="content"}){let a=o=>Ge({fs:t,cache:e,gitdir:r,oid:o}),s=await Q4({fs:t,gitdir:r,oid:n});return s||(s=await eD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:a})),s}function tD(t){let i="5041434b"+"00000002"+"00000000";return t.slice(0,12).toString("hex")===i}function nS(t,e){let r=t.map(n=>n.split("=",1)[0]);return e.filter(n=>{let i=n.split("=",1)[0];return r.includes(i)})}var Bf={name:"isomorphic-git",version:"1.32.2",agent:"git/isomorphic-git@1.32.2"},ro=class{constructor(){this._queue=[]}write(e){if(this._ended)throw Error("You cannot write to a FIFO that has already been ended!");if(this._waiting){let r=this._waiting;this._waiting=null,r({value:e})}else this._queue.push(e)}end(){if(this._ended=!0,this._waiting){let e=this._waiting;this._waiting=null,e({done:!0})}}destroy(e){this.error=e,this.end()}async next(){if(this._queue.length>0)return{value:this._queue.shift()};if(this._ended)return{done:!0};if(this._waiting)throw Error("You cannot call read until the previous call to read has returned!");return new Promise(e=>{this._waiting=e})}};function rD(t){let e=t.indexOf("\r"),r=t.indexOf(` +`);return e===-1&&r===-1?-1:e===-1?r+1:r===-1?e+1:r===e+1?r+1:Math.min(e,r)+1}function iS(t){let e=new ro,r="";return(async()=>(await uc(t,n=>{for(n=n.toString("utf8"),r+=n;;){let i=rD(r);if(i===-1)break;e.write(r.slice(0,i)),r=r.slice(i)}}),r.length>0&&e.write(r),e.end()))(),e}var $f=class{static demux(e){let r=Qe.streamReader(e),n=new ro,i=new ro,a=new ro,s=async function(){let o=await r();if(o===null)return s();if(o===!0){n.end(),a.end(),e.error?i.destroy(e.error):i.end();return}switch(o[0]){case 1:{i.write(o.slice(1));break}case 2:{a.write(o.slice(1));break}case 3:{let l=o.slice(1);a.write(l),n.end(),a.end(),i.destroy(new Error(l.toString("utf8")));return}default:n.write(o)}s()};return s(),{packetlines:n,packfile:i,progress:a}}};async function nD(t){let{packetlines:e,packfile:r,progress:n}=$f.demux(t),i=[],a=[],s=[],o=!1,l=!1;return new Promise((c,u)=>{uc(e,f=>{let d=f.toString("utf8").trim();if(d.startsWith("shallow")){let h=d.slice(-41).trim();h.length!==40&&u(new Qi(h)),i.push(h)}else if(d.startsWith("unshallow")){let h=d.slice(-41).trim();h.length!==40&&u(new Qi(h)),a.push(h)}else if(d.startsWith("ACK")){let[,h,p]=d.split(" ");s.push({oid:h,status:p}),p||(l=!0)}else d.startsWith("NAK")?(o=!0,l=!0):(l=!0,o=!0);l&&(t.error?u(t.error):c({shallows:i,unshallows:a,acks:s,nak:o,packfile:r,progress:n}))}).finally(()=>{l||(t.error?u(t.error):c({shallows:i,unshallows:a,acks:s,nak:o,packfile:r,progress:n}))})})}function iD({capabilities:t=[],wants:e=[],haves:r=[],shallows:n=[],depth:i=null,since:a=null,exclude:s=[]}){let o=[];e=[...new Set(e)];let l=` ${t.join(" ")}`;for(let c of e)o.push(Qe.encode(`want ${c}${l} +`)),l="";for(let c of n)o.push(Qe.encode(`shallow ${c} +`));i!==null&&o.push(Qe.encode(`deepen ${i} +`)),a!==null&&o.push(Qe.encode(`deepen-since ${Math.floor(a.valueOf()/1e3)} +`));for(let c of s)o.push(Qe.encode(`deepen-not ${c} +`));o.push(Qe.flush());for(let c of r)o.push(Qe.encode(`have ${c} +`));return o.push(Qe.encode(`done +`)),o}async function hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:l,ref:c,remoteRef:u,remote:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:y=!1,tags:b=!1,singleBranch:E=!1,headers:S={},prune:A=!1,pruneTags:k=!1}){let w=c||await sa({fs:t,gitdir:l,test:!0}),x=await nt.get({fs:t,gitdir:l}),_=f||w&&await x.get(`branch.${w}.remote`)||"origin",T=d||await x.get(`remote.${_}.url`);if(typeof T=="undefined")throw new dr("remote OR url");let C=u||w&&await x.get(`branch.${w}.merge`)||c||"HEAD";h===void 0&&(h=await x.get("http.corsProxy"));let I=go.getRemoteHelperFor({url:T}),L=await I.discover({http:r,onAuth:a,onAuthSuccess:s,onAuthFailure:o,corsProxy:h,service:"git-upload-pack",url:T,headers:S,protocolVersion:1}),$=L.auth,J=L.refs;if(J.size===0)return{defaultBranch:null,fetchHead:null,fetchHeadDescription:null};if(p!==null&&!L.capabilities.has("shallow"))throw new Ji("shallow","depth");if(g!==null&&!L.capabilities.has("deepen-since"))throw new Ji("deepen-since","since");if(v.length>0&&!L.capabilities.has("deepen-not"))throw new Ji("deepen-not","exclude");if(y===!0&&!L.capabilities.has("deepen-relative"))throw new Ji("deepen-relative","relative");let{oid:de,fullref:le}=V.resolveAgainstMap({ref:C,map:J});for(let U of J.keys())U===le||U==="HEAD"||U.startsWith("refs/heads/")||b&&U.startsWith("refs/tags/")||J.delete(U);let ce=nS([...L.capabilities],["multi_ack_detailed","no-done","side-band-64k","ofs-delta",`agent=${Bf.agent}`]);y&&ce.push("deepen-relative");let Te=E?[de]:J.values(),ne=E?[w]:await V.listRefs({fs:t,gitdir:l,filepath:"refs"}),N=[];for(let U of ne)try{U=await V.expand({fs:t,gitdir:l,ref:U});let Je=await V.resolve({fs:t,gitdir:l,ref:U});await Cx({fs:t,cache:e,gitdir:l,oid:Je})&&N.push(Je)}catch(Je){}N=[...new Set(N)];let W=await qa.read({fs:t,gitdir:l}),B=L.capabilities.has("shallow")?[...W]:[],$e=iD({capabilities:ce,wants:Te,haves:N,shallows:B,depth:p,since:g,exclude:v}),lr=Buffer.from(await Ff($e)),Ut=await I.connect({http:r,onProgress:n,corsProxy:h,service:"git-upload-pack",url:T,auth:$,body:[lr],headers:S}),X=await nD(Ut.body);Ut.headers&&(X.headers=Ut.headers);for(let U of X.shallows)if(!W.has(U))try{let{object:Je}=await Ge({fs:t,cache:e,gitdir:l,oid:U}),j=new pr(Je),Z=await Promise.all(j.headers().parent.map(We=>Cx({fs:t,cache:e,gitdir:l,oid:We})));Z.length===0||Z.every(We=>We)||W.add(U)}catch(Je){W.add(U)}for(let U of X.unshallows)W.delete(U);if(await qa.write({fs:t,gitdir:l,oids:W}),E){let U=new Map([[le,de]]),Je=new Map,j=10,Z=le;for(;j--;){let Rt=L.symrefs.get(Z);if(Rt===void 0)break;Je.set(Z,Rt),Z=Rt}let Se=J.get(Z);Se&&U.set(Z,Se);let{pruned:We}=await V.updateRemoteRefs({fs:t,gitdir:l,remote:_,refs:U,symrefs:Je,tags:b,prune:A});A&&(X.pruned=We)}else{let{pruned:U}=await V.updateRemoteRefs({fs:t,gitdir:l,remote:_,refs:J,symrefs:L.symrefs,tags:b,prune:A,pruneTags:k});A&&(X.pruned=U)}if(X.HEAD=L.symrefs.get("HEAD"),X.HEAD===void 0){let{oid:U}=V.resolveAgainstMap({ref:"HEAD",map:J});for(let[Je,j]of J.entries())if(Je!=="HEAD"&&j===U){X.HEAD=Je;break}}let Oe=le.startsWith("refs/tags")?"tag":"branch";if(X.FETCH_HEAD={oid:de,description:`${Oe} '${za(le)}' of ${T}`},n||i){let U=iS(X.progress);uc(U,async Je=>{if(i&&await i(Je),n){let j=Je.match(/([^:]*).*\((\d+?)\/(\d+?)\)/);j&&await n({phase:j[1].trim(),loaded:parseInt(j[2],10),total:parseInt(j[3],10)})}})}let De=Buffer.from(await Ff(X.packfile));if(Ut.body.error)throw Ut.body.error;let Pt=De.slice(-20).toString("hex"),Le={defaultBranch:X.HEAD,fetchHead:X.FETCH_HEAD.oid,fetchHeadDescription:X.FETCH_HEAD.description};if(X.headers&&(Le.headers=X.headers),A&&(Le.pruned=X.pruned),Pt!==""&&!tD(De)){Le.packfile=`objects/pack/pack-${Pt}.pack`;let U=F.join(l,Le.packfile);await t.write(U,De);let Je=Z=>Ge({fs:t,cache:e,gitdir:l,oid:Z}),j=await Wl.fromPack({pack:De,getExternalRefDelta:Je,onProgress:n});await t.write(U.replace(/\.pack$/,".idx"),await j.toBuffer())}return Le}async function aS({fs:t,bare:e=!1,dir:r,gitdir:n=e?r:F.join(r,".git"),defaultBranch:i="master"}){if(await t.exists(n+"/config"))return;let a=["hooks","info","objects/info","objects/pack","refs/heads","refs/tags"];a=a.map(s=>n+"/"+s);for(let s of a)await t.mkdir(s);await t.write(n+"/config",`[core] + repositoryformatversion = 0 + filemode = false + bare = ${e} +`+(e?"":` logallrefupdates = true +`)+` symlinks = false + ignorecase = true +`),await t.write(n+"/HEAD",`ref: refs/heads/${i} +`)}async function aD({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,onPostCheckout:l,dir:c,gitdir:u,url:f,corsProxy:d,ref:h,remote:p,depth:g,since:v,exclude:y,relative:b,singleBranch:E,noCheckout:S,noTags:A,headers:k,nonBlocking:w,batchSize:x=100}){try{if(await aS({fs:t,gitdir:u}),await Zx({fs:t,gitdir:u,remote:p,url:f,force:!1}),d){let C=await nt.get({fs:t,gitdir:u});await C.set("http.corsProxy",d),await nt.save({fs:t,gitdir:u,config:C})}let{defaultBranch:_,fetchHead:T}=await hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:u,ref:h,remote:p,corsProxy:d,depth:g,since:v,exclude:y,relative:b,singleBranch:E,headers:k,tags:!A});if(T===null)return;h=h||_,h=h.replace("refs/heads/",""),await fg({fs:t,cache:e,onProgress:n,onPostCheckout:l,dir:c,gitdir:u,ref:h,remote:p,noCheckout:S,nonBlocking:w,batchSize:x})}catch(_){throw await t.rmdir(u,{recursive:!0,maxRetries:10}).catch(()=>{}),_}}async function sS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPostCheckout:o,dir:l,gitdir:c=F.join(l,".git"),url:u,corsProxy:f=void 0,ref:d=void 0,remote:h="origin",depth:p=void 0,since:g=void 0,exclude:v=[],relative:y=!1,singleBranch:b=!1,noCheckout:E=!1,noTags:S=!1,headers:A={},cache:k={},nonBlocking:w=!1,batchSize:x=100}){try{return P("fs",t),P("http",e),P("gitdir",c),E||P("dir",l),P("url",u),await aD({fs:new Q(t),cache:k,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPostCheckout:o,dir:l,gitdir:c,url:u,corsProxy:f,ref:d,remote:h,depth:p,since:g,exclude:v,relative:y,singleBranch:b,noCheckout:E,noTags:S,headers:A,nonBlocking:w,batchSize:x})}catch(_){throw _.caller="git.clone",_}}async function oS({fs:t,onSign:e,dir:r,gitdir:n=F.join(r,".git"),message:i,author:a,committer:s,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h,cache:p={}}){try{P("fs",t),l||P("message",i),o&&P("onSign",e);let g=new Q(t);return await Nf({fs:g,cache:p,onSign:e,gitdir:n,message:i,author:a,committer:s,signingKey:o,amend:l,dryRun:c,noUpdateBranch:u,ref:f,parent:d,tree:h})}catch(g){throw g.caller="git.commit",g}}async function lS({fs:t,dir:e,gitdir:r=F.join(e,".git"),fullname:n=!1,test:i=!1}){try{return P("fs",t),P("gitdir",r),await sa({fs:new Q(t),gitdir:r,fullname:n,test:i})}catch(a){throw a.caller="git.currentBranch",a}}async function sD({fs:t,gitdir:e,ref:r}){if(r=r.startsWith("refs/heads/")?r:`refs/heads/${r}`,!await V.exists({fs:t,gitdir:e,ref:r}))throw new je(r);let i=await V.expand({fs:t,gitdir:e,ref:r}),a=await sa({fs:t,gitdir:e,fullname:!0});if(i===a){let l=await V.resolve({fs:t,gitdir:e,ref:i});await V.writeRef({fs:t,gitdir:e,ref:"HEAD",value:l})}await V.deleteRef({fs:t,gitdir:e,ref:i});let s=za(r),o=await nt.get({fs:t,gitdir:e});await o.deleteSection("branch",s),await nt.save({fs:t,gitdir:e,config:o})}async function cS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n}){try{return P("fs",t),P("ref",n),await sD({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteBranch",i}}async function uS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n}){try{P("fs",t),P("ref",n),await V.deleteRef({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteRef",i}}async function oD({fs:t,gitdir:e,remote:r}){let n=await nt.get({fs:t,gitdir:e});await n.deleteSection("remote",r),await nt.save({fs:t,gitdir:e,config:n})}async function fS({fs:t,dir:e,gitdir:r=F.join(e,".git"),remote:n}){try{return P("fs",t),P("remote",n),await oD({fs:new Q(t),gitdir:r,remote:n})}catch(i){throw i.caller="git.deleteRemote",i}}async function lD({fs:t,gitdir:e,ref:r}){r=r.startsWith("refs/tags/")?r:`refs/tags/${r}`,await V.deleteRef({fs:t,gitdir:e,ref:r})}async function dS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n}){try{return P("fs",t),P("ref",n),await lD({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteTag",i}}async function cD({fs:t,gitdir:e,oid:r}){let n=r.slice(0,2);return(await t.readdir(`${e}/objects/${n}`)).map(a=>`${n}${a}`).filter(a=>a.startsWith(r))}async function uD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i}){let a=[],s=await t.readdir(F.join(r,"objects/pack"));s=s.filter(o=>o.endsWith(".idx"));for(let o of s){let l=`${r}/objects/pack/${o}`,c=await ug({fs:t,cache:e,filename:l,getExternalRefDelta:i});if(c.error)throw new pe(c.error);for(let u of c.offsets.keys())u.startsWith(n)&&a.push(u)}return a}async function fD({fs:t,cache:e,gitdir:r,oid:n}){let i=o=>Ge({fs:t,cache:e,gitdir:r,oid:o}),a=await cD({fs:t,gitdir:r,oid:n}),s=await uD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i});for(let o of s)a.indexOf(o)===-1&&a.push(o);if(a.length===1)return a[0];throw a.length>1?new Yl("oids",n,a):new je(`an object matching "${n}"`)}async function hS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await fD({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.expandOid",a}}async function pS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n}){try{return P("fs",t),P("gitdir",r),P("ref",n),await V.expand({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.expandRef",i}}async function pg({fs:t,cache:e,gitdir:r,oids:n}){let i={},a=n.length,s=n.map((o,l)=>({index:l,oid:o}));for(;s.length;){let o=new Set;for(let{oid:c,index:u}of s)i[c]||(i[c]=new Set),i[c].add(u),i[c].size===a&&o.add(c);if(o.size>0)return[...o];let l=new Map;for(let{oid:c,index:u}of s)try{let{object:f}=await Ge({fs:t,cache:e,gitdir:r,oid:c}),d=pr.from(f),{parent:h}=d.parseHeaders();for(let p of h)(!i[p]||!i[p].has(u))&&l.set(p+":"+u,{oid:p,index:u})}catch(f){}s=Array.from(l.values())}return[]}var Ym=/^.*(\r?\n|$)/gm;function dD({branches:t,contents:e}){let r=t[1],n=t[2],i=e[0],a=e[1],s=e[2],o=a.match(Ym),l=i.match(Ym),c=s.match(Ym),u=W8(o,l,c),f=7,d="",h=!0;for(let p of u)p.ok&&(d+=p.ok.join("")),p.conflict&&(h=!1,d+=`${"<".repeat(f)} ${r} +`,d+=p.conflict.a.join(""),d+=`${"=".repeat(f)} +`,d+=p.conflict.b.join(""),d+=`${">".repeat(f)} ${n} +`);return{cleanMerge:h,mergedText:d}}async function hD({fs:t,cache:e,dir:r,gitdir:n=F.join(r,".git"),index:i,ourOid:a,baseOid:s,theirOid:o,ourName:l="ours",baseName:c="base",theirName:u="theirs",dryRun:f=!1,abortOnConflict:d=!0,mergeDriver:h}){let p=Rr({ref:a}),g=Rr({ref:s}),v=Rr({ref:o}),y=[],b=[],E=[],S=[],A=await ra({fs:t,cache:e,dir:r,gitdir:n,trees:[p,g,v],map:async function(k,[w,x,_]){let T=Cf(k),C=await If(w,x),I=await If(_,x);switch(`${C}-${I}`){case"false-false":return{mode:await x.mode(),path:T,oid:await x.oid(),type:await x.type()};case"false-true":return!_&&await w.type()==="tree"?{mode:await w.mode(),path:T,oid:await w.oid(),type:await w.type()}:_?{mode:await _.mode(),path:T,oid:await _.oid(),type:await _.type()}:void 0;case"true-false":return!w&&await _.type()==="tree"?{mode:await _.mode(),path:T,oid:await _.oid(),type:await _.type()}:w?{mode:await w.mode(),path:T,oid:await w.oid(),type:await w.type()}:void 0;case"true-true":{if(w&&_&&await w.type()==="tree"&&await _.type()==="tree")return{mode:await w.mode(),path:T,oid:await w.oid(),type:"tree"};if(w&&_&&await w.type()==="blob"&&await _.type()==="blob")return pD({fs:t,gitdir:n,path:T,ours:w,base:x,theirs:_,ourName:l,baseName:c,theirName:u,mergeDriver:h}).then(async L=>{if(L.cleanMerge)d||i.insert({filepath:k,oid:L.mergeResult.oid,stage:0});else if(y.push(k),b.push(k),!d){let $="";x&&await x.type()==="blob"&&($=await x.oid());let J=await w.oid(),de=await _.oid();i.delete({filepath:k}),$&&i.insert({filepath:k,oid:$,stage:1}),i.insert({filepath:k,oid:J,stage:2}),i.insert({filepath:k,oid:de,stage:3})}return L.mergeResult});if(x&&!w&&_&&await x.type()==="blob"&&await _.type()==="blob"){if(y.push(k),E.push(k),!d){let L=await x.oid(),$=await _.oid();i.delete({filepath:k}),i.insert({filepath:k,oid:L,stage:1}),i.insert({filepath:k,oid:$,stage:3})}return{mode:await _.mode(),oid:await _.oid(),type:"blob",path:T}}if(x&&w&&!_&&await x.type()==="blob"&&await w.type()==="blob"){if(y.push(k),S.push(k),!d){let L=await x.oid(),$=await w.oid();i.delete({filepath:k}),i.insert({filepath:k,oid:L,stage:1}),i.insert({filepath:k,oid:$,stage:2})}return{mode:await w.mode(),oid:await w.oid(),type:"blob",path:T}}if(x&&!w&&!_&&(await x.type()==="blob"||await x.type()==="tree"))return;throw new oo}}},reduce:y.length!==0&&(!r||d)?void 0:async(k,w)=>{let x=w.filter(Boolean);if(k&&!(k&&k.type==="tree"&&x.length===0&&k.path!==".")){if(x.length>0||k.path==="."&&x.length===0){let T=new hr(x).toObject(),C=await mr({fs:t,gitdir:n,type:"tree",object:T,dryRun:f});k.oid=C}return k}}});return y.length!==0?(r&&!d&&await ra({fs:t,cache:e,dir:r,gitdir:n,trees:[Rr({ref:A.oid})],map:async function(k,[w]){let x=`${r}/${k}`;if(await w.type()==="blob"){let _=await w.mode(),T=new TextDecoder().decode(await w.content());await t.write(x,T,{mode:_})}return!0}}),new lo(y,b,E,S)):A.oid}async function pD({fs:t,gitdir:e,path:r,ours:n,base:i,theirs:a,ourName:s,theirName:o,baseName:l,dryRun:c,mergeDriver:u=dD}){let f="blob",d="100755",h="",p="";i&&await i.type()==="blob"&&(d=await i.mode(),h=await i.oid(),p=Buffer.from(await i.content()).toString("utf8"));let g=d===await n.mode()?await a.mode():await n.mode();if(await n.oid()===await a.oid())return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await n.oid(),type:f}};if(await n.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await a.oid(),type:f}};if(await a.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await n.oid(),type:f}};let v=Buffer.from(await n.content()).toString("utf8"),y=Buffer.from(await a.content()).toString("utf8"),{mergedText:b,cleanMerge:E}=await u({branches:[l,s,o],contents:[p,v,y],path:r}),S=await mr({fs:t,gitdir:e,type:"blob",object:Buffer.from(b,"utf8"),dryRun:c});return{cleanMerge:E,mergeResult:{mode:g,path:r,oid:S,type:f}}}async function mS({fs:t,cache:e,dir:r,gitdir:n,ours:i,theirs:a,fastForward:s=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,onSign:g,mergeDriver:v,allowUnrelatedHistories:y=!1}){i===void 0&&(i=await sa({fs:t,gitdir:n,fullname:!0})),i=await V.expand({fs:t,gitdir:n,ref:i}),a=await V.expand({fs:t,gitdir:n,ref:a});let b=await V.resolve({fs:t,gitdir:n,ref:i}),E=await V.resolve({fs:t,gitdir:n,ref:a}),S=await pg({fs:t,cache:e,gitdir:n,oids:[b,E]});if(S.length!==1)if(S.length===0&&y)S.push("4b825dc642cb6eb9a060e54bf8d69288fbee4904");else throw new oo;let A=S[0];if(A===E)return{oid:b,alreadyMerged:!0};if(s&&A===b)return!l&&!c&&await V.writeRef({fs:t,gitdir:n,ref:i,value:E}),{oid:E,fastForward:!0};{if(o)throw new Jl;let k=await ct.acquire({fs:t,gitdir:n,cache:e,allowUnmerged:!1},async x=>hD({fs:t,cache:e,dir:r,gitdir:n,index:x,ourOid:b,theirOid:E,baseOid:A,ourName:za(i),baseName:"base",theirName:za(a),dryRun:l,abortOnConflict:u,mergeDriver:v}));if(k instanceof lo)throw k;return f||(f=`Merge branch '${za(a)}' into ${za(i)}`),{oid:await Nf({fs:t,cache:e,gitdir:n,message:f,ref:i,tree:k,parent:[b,E],author:d,committer:h,signingKey:p,onSign:g,dryRun:l,noUpdateBranch:c}),tree:k,mergeCommit:!0}}}async function gS({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,dir:l,gitdir:c,ref:u,url:f,remote:d,remoteRef:h,prune:p,pruneTags:g,fastForward:v,fastForwardOnly:y,corsProxy:b,singleBranch:E,headers:S,author:A,committer:k,signingKey:w}){try{if(!u){let T=await sa({fs:t,gitdir:c});if(!T)throw new dr("ref");u=T}let{fetchHead:x,fetchHeadDescription:_}=await hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:c,corsProxy:b,ref:u,url:f,remote:d,remoteRef:h,singleBranch:E,headers:S,prune:p,pruneTags:g});await mS({fs:t,cache:e,gitdir:c,ours:u,theirs:x,fastForward:v,fastForwardOnly:y,message:`Merge ${_}`,author:A,committer:k,signingKey:w,dryRun:!1,noUpdateBranch:!1}),await fg({fs:t,cache:e,onProgress:n,dir:l,gitdir:c,ref:u,remote:d,noCheckout:!1})}catch(x){throw x.caller="git.pull",x}}async function vS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=F.join(o,".git"),ref:c,url:u,remote:f,remoteRef:d,corsProxy:h,singleBranch:p,headers:g={},cache:v={}}){try{P("fs",t),P("http",e),P("gitdir",l);let y={name:"",email:"",timestamp:Date.now(),timezoneOffset:0};return await gS({fs:new Q(t),cache:v,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l,ref:c,url:u,remote:f,remoteRef:d,fastForwardOnly:!0,corsProxy:h,singleBranch:p,headers:g,author:y,committer:y})}catch(y){throw y.caller="git.fastForward",y}}async function yS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=F.join(o,".git"),ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:y=!1,tags:b=!1,singleBranch:E=!1,headers:S={},prune:A=!1,pruneTags:k=!1,cache:w={}}){try{return P("fs",t),P("http",e),P("gitdir",l),await hg({fs:new Q(t),cache:w,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,gitdir:l,ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p,since:g,exclude:v,relative:y,tags:b,singleBranch:E,headers:S,prune:A,pruneTags:k})}catch(x){throw x.caller="git.fetch",x}}async function wS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oids:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oids",n),await pg({fs:new Q(t),cache:i,gitdir:r,oids:n})}catch(a){throw a.caller="git.findMergeBase",a}}async function bS({fs:t,filepath:e}){if(await t.exists(F.join(e,".git")))return e;{let r=ao(e);if(r===e)throw new je(`git root for ${e}`);return bS({fs:t,filepath:r})}}async function _S({fs:t,filepath:e}){try{return P("fs",t),P("filepath",e),await bS({fs:new Q(t),filepath:e})}catch(r){throw r.caller="git.findRoot",r}}async function xS({fs:t,dir:e,gitdir:r=F.join(e,".git"),path:n}){try{return P("fs",t),P("gitdir",r),P("path",n),await oc({fs:new Q(t),gitdir:r,path:n})}catch(i){throw i.caller="git.getConfig",i}}async function mD({fs:t,gitdir:e,path:r}){return(await nt.get({fs:t,gitdir:e})).getall(r)}async function SS({fs:t,dir:e,gitdir:r=F.join(e,".git"),path:n}){try{return P("fs",t),P("gitdir",r),P("path",n),await mD({fs:new Q(t),gitdir:r,path:n})}catch(i){throw i.caller="git.getConfigAll",i}}async function ES({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1}){try{P("http",t),P("url",a);let c=await go.getRemoteHelperFor({url:a}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:1}),u={capabilities:[...c.capabilities]};for(let[f,d]of c.refs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}for(let[f,d]of c.symrefs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}return u}catch(l){throw l.caller="git.getRemoteInfo",l}}function AS(t,e,r,n){let i=[];for(let[a,s]of t.refs){if(e&&!a.startsWith(e))continue;if(a.endsWith("^{}")){if(n){let l=a.replace("^{}",""),c=i[i.length-1],u=c.ref===l?c:i.find(f=>f.ref===l);if(u===void 0)throw new Error("I did not expect this to happen");u.peeled=s}continue}let o={ref:a,oid:s};r&&t.symrefs.has(a)&&(o.target=t.symrefs.get(a)),i.push(o)}return i}async function kS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1,protocolVersion:l=2}){try{P("http",t),P("url",a);let u=await go.getRemoteHelperFor({url:a}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:l});if(u.protocolVersion===2)return{protocolVersion:u.protocolVersion,capabilities:u.capabilities2};let f={};for(let d of u.capabilities){let[h,p]=d.split("=");p?f[h]=p:f[h]=!0}return{protocolVersion:1,capabilities:f,refs:AS(u,void 0,!0,!0)}}catch(c){throw c.caller="git.getRemoteInfo2",c}}async function gD({type:t,object:e,format:r="content",oid:n=void 0}){return r!=="deflated"&&(r!=="wrapped"&&(e=ea.wrap({type:t,object:e})),n=await bi(e)),{oid:n,object:e}}async function TS({object:t}){try{P("object",t),typeof t=="string"?t=Buffer.from(t,"utf8"):t=Buffer.from(t);let e="blob",{oid:r,object:n}=await gD({type:"blob",format:"content",object:t});return{oid:r,type:e,object:new Uint8Array(n),format:"wrapped"}}catch(e){throw e.caller="git.hashBlob",e}}async function vD({fs:t,cache:e,onProgress:r,dir:n,gitdir:i,filepath:a}){try{a=F.join(n,a);let s=await t.read(a),o=c=>Ge({fs:t,cache:e,gitdir:i,oid:c}),l=await Wl.fromPack({pack:s,getExternalRefDelta:o,onProgress:r});return await t.write(a.replace(/\.pack$/,".idx"),await l.toBuffer()),{oids:[...l.hashes]}}catch(s){throw s.caller="git.indexPack",s}}async function CS({fs:t,onProgress:e,dir:r,gitdir:n=F.join(r,".git"),filepath:i,cache:a={}}){try{return P("fs",t),P("dir",r),P("gitdir",r),P("filepath",i),await vD({fs:new Q(t),cache:a,onProgress:e,dir:r,gitdir:n,filepath:i})}catch(s){throw s.caller="git.indexPack",s}}async function PS({fs:t,bare:e=!1,dir:r,gitdir:n=e?r:F.join(r,".git"),defaultBranch:i="master"}){try{return P("fs",t),P("gitdir",n),e||P("dir",r),await aS({fs:new Q(t),bare:e,dir:r,gitdir:n,defaultBranch:i})}catch(a){throw a.caller="git.init",a}}async function RS({fs:t,cache:e,gitdir:r,oid:n,ancestor:i,depth:a}){let s=await qa.read({fs:t,gitdir:r});if(!n)throw new dr("oid");if(!i)throw new dr("ancestor");if(n===i)return!1;let o=[n],l=new Set,c=0;for(;o.length;){if(c++===a)throw new ec(a);let u=o.shift(),{type:f,object:d}=await Ge({fs:t,cache:e,gitdir:r,oid:u});if(f!=="commit")throw new tr(u,f,"commit");let h=pr.from(d).parse();for(let p of h.parent)if(p===i)return!0;if(!s.has(u))for(let p of h.parent)l.has(p)||(o.push(p),l.add(p))}return!1}async function MS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,ancestor:i,depth:a=-1,cache:s={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),P("ancestor",i),await RS({fs:new Q(t),cache:s,gitdir:r,oid:n,ancestor:i,depth:a})}catch(o){throw o.caller="git.isDescendent",o}}async function OS({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n}){try{return P("fs",t),P("dir",e),P("gitdir",r),P("filepath",n),na.isIgnored({fs:new Q(t),dir:e,gitdir:r,filepath:n})}catch(i){throw i.caller="git.isIgnored",i}}async function IS({fs:t,dir:e,gitdir:r=F.join(e,".git"),remote:n}){try{return P("fs",t),P("gitdir",r),V.listBranches({fs:new Q(t),gitdir:r,remote:n})}catch(i){throw i.caller="git.listBranches",i}}async function yD({fs:t,gitdir:e,ref:r,cache:n}){if(r){let i=await V.resolve({gitdir:e,fs:t,ref:r}),a=[];return await FS({fs:t,cache:n,gitdir:e,oid:i,filenames:a,prefix:""}),a}else return ct.acquire({fs:t,gitdir:e,cache:n},async function(i){return i.entries.map(a=>a.path)})}async function FS({fs:t,cache:e,gitdir:r,oid:n,filenames:i,prefix:a}){let{tree:s}=await wo({fs:t,cache:e,gitdir:r,oid:n});for(let o of s)o.type==="tree"?await FS({fs:t,cache:e,gitdir:r,oid:o.oid,filenames:i,prefix:F.join(a,o.path)}):i.push(F.join(a,o.path))}async function $S({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),await yD({fs:new Q(t),cache:i,gitdir:r,ref:n})}catch(a){throw a.caller="git.listFiles",a}}async function wD({fs:t,cache:e,gitdir:r,ref:n}){let i;try{i=await V.resolve({gitdir:r,fs:t,ref:n})}catch(o){if(o instanceof je)return[]}return(await wo({fs:t,cache:e,gitdir:r,oid:i})).tree.map(o=>({target:o.path,note:o.oid}))}async function DS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n="refs/notes/commits",cache:i={}}){try{return P("fs",t),P("gitdir",r),P("ref",n),await wD({fs:new Q(t),cache:i,gitdir:r,ref:n})}catch(a){throw a.caller="git.listNotes",a}}async function LS({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n}){try{return P("fs",t),P("gitdir",r),V.listRefs({fs:new Q(t),gitdir:r,filepath:n})}catch(i){throw i.caller="git.listRefs",i}}async function bD({fs:t,gitdir:e}){let r=await nt.get({fs:t,gitdir:e}),n=await r.getSubsections("remote");return Promise.all(n.map(async a=>{let s=await r.get(`remote.${a}.url`);return{remote:a,url:s}}))}async function jS({fs:t,dir:e,gitdir:r=F.join(e,".git")}){try{return P("fs",t),P("gitdir",r),await bD({fs:new Q(t),gitdir:r})}catch(n){throw n.caller="git.listRemotes",n}}async function _D(t){let e=Qe.streamReader(t),r=[],n;for(;n=await e(),n!==!0;){if(n===null)continue;n=n.toString("utf8").replace(/\n$/,"");let[i,a,...s]=n.split(" "),o={ref:a,oid:i};for(let l of s){let[c,u]=l.split(":");c==="symref-target"?o.target=u:c==="peeled"&&(o.peeled=u)}r.push(o)}return r}async function xD({prefix:t,symrefs:e,peelTags:r}){let n=[];return n.push(Qe.encode(`command=ls-refs +`)),n.push(Qe.encode(`agent=${Bf.agent} +`)),(r||e||t)&&n.push(Qe.delim()),r&&n.push(Qe.encode("peel")),e&&n.push(Qe.encode("symrefs")),t&&n.push(Qe.encode(`ref-prefix ${t}`)),n.push(Qe.flush()),n}async function NS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1,protocolVersion:l=2,prefix:c,symrefs:u,peelTags:f}){try{P("http",t),P("url",a);let d=await mo.discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:l});if(d.protocolVersion===1)return AS(d,c,u,f);let h=await xD({prefix:c,symrefs:u,peelTags:f}),p=await mo.connect({http:t,auth:d.auth,headers:s,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,body:h});return _D(p.body)}catch(d){throw d.caller="git.listServerRefs",d}}async function BS({fs:t,dir:e,gitdir:r=F.join(e,".git")}){try{return P("fs",t),P("gitdir",r),V.listTags({fs:new Q(t),gitdir:r})}catch(n){throw n.caller="git.listTags",n}}function SD(t,e){return t.committer.timestamp-e.committer.timestamp}var ED="e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";async function Px({fs:t,cache:e,gitdir:r,oid:n,fileId:i}){if(i===ED)return;let a=n,s,o=await fo({fs:t,cache:e,gitdir:r,oid:n}),l=o.tree;return i===o.oid?s=o.path:(s=await HS({fs:t,cache:e,gitdir:r,tree:l,fileId:i,oid:a}),Array.isArray(s)&&(s.length===0?s=void 0:s.length===1&&(s=s[0]))),s}async function HS({fs:t,cache:e,gitdir:r,tree:n,fileId:i,oid:a,filepaths:s=[],parentPath:o=""}){let l=n.entries().map(function(c){let u;return c.oid===i?(u=F.join(o,c.path),s.push(u)):c.type==="tree"&&(u=Ge({fs:t,cache:e,gitdir:r,oid:c.oid}).then(function({object:f}){return HS({fs:t,cache:e,gitdir:r,tree:hr.from(f),fileId:i,oid:a,filepaths:s,parentPath:F.join(o,c.path)})})),u});return await Promise.all(l),s}async function AD({fs:t,cache:e,gitdir:r,filepath:n,ref:i,depth:a,since:s,force:o,follow:l}){let c=typeof s=="undefined"?void 0:Math.floor(s.valueOf()/1e3),u=[],f=await qa.read({fs:t,gitdir:r}),d=await V.resolve({fs:t,gitdir:r,ref:i}),h=[await po({fs:t,cache:e,gitdir:r,oid:d})],p,g,v;function y(b){v&&n&&u.push(b)}for(;h.length>0;){let b=h.pop();if(c!==void 0&&b.commit.committer.timestamp<=c)break;if(n){let E;try{E=await lc({fs:t,cache:e,gitdir:r,oid:b.commit.tree,filepath:n}),g&&p!==E&&u.push(g),p=E,g=b,v=!0}catch(S){if(S instanceof je){let A=l&&p;if(A&&(A=await Px({fs:t,cache:e,gitdir:r,oid:b.commit.tree,fileId:p}),A))if(Array.isArray(A)){if(g){let k=await Px({fs:t,cache:e,gitdir:r,oid:g.commit.tree,fileId:p});if(Array.isArray(k))if(A=A.filter(w=>k.indexOf(w)===-1),A.length===1)A=A[0],n=A,g&&u.push(g);else{A=!1,g&&u.push(g);break}}}else n=A,g&&u.push(g);if(!A){if(v&&p&&(u.push(g),!o))break;if(!o&&!l)throw S}g=b,v=!1}else throw S}}else u.push(b);if(a!==void 0&&u.length===a){y(b);break}if(!f.has(b.oid))for(let E of b.commit.parent){let S=await po({fs:t,cache:e,gitdir:r,oid:E});h.map(A=>A.oid).includes(S.oid)||h.push(S)}h.length===0&&y(b),h.sort((E,S)=>SD(E.commit,S.commit))}return u}async function US({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n,ref:i="HEAD",depth:a,since:s,force:o,follow:l,cache:c={}}){try{return P("fs",t),P("gitdir",r),P("ref",i),await AD({fs:new Q(t),cache:c,gitdir:r,filepath:n,ref:i,depth:a,since:s,force:o,follow:l})}catch(u){throw u.caller="git.log",u}}async function GS({fs:t,onSign:e,dir:r,gitdir:n=F.join(r,".git"),ours:i,theirs:a,fastForward:s=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,cache:g={},mergeDriver:v,allowUnrelatedHistories:y=!1}){try{P("fs",t),p&&P("onSign",e);let b=new Q(t),E=await ia({fs:b,gitdir:n,author:d});if(!E&&(!o||!s))throw new zt("author");let S=await ho({fs:b,gitdir:n,author:E,committer:h});if(!S&&(!o||!s))throw new zt("committer");return await mS({fs:b,cache:g,dir:r,gitdir:n,ours:i,theirs:a,fastForward:s,fastForwardOnly:o,dryRun:l,noUpdateBranch:c,abortOnConflict:u,message:f,author:E,committer:S,signingKey:p,onSign:e,mergeDriver:v,allowUnrelatedHistories:y})}catch(b){throw b.caller="git.merge",b}}var kD={commit:16,tree:32,blob:48,tag:64,ofs_delta:96,ref_delta:112};async function zS({fs:t,cache:e,dir:r,gitdir:n=F.join(r,".git"),oids:i}){let a=new Mx,s=[];function o(u,f){let d=Buffer.from(u,f);s.push(d),a.update(d)}async function l({stype:u,object:f}){let d=kD[u],h=f.length,p=h>15?128:0,g=h&15;h=h>>>4;let v=(p|d|g).toString(16);for(o(v,"hex");p;)p=h>127?128:0,v=p|h&127,o(lg(2,v),"hex"),h=h>>>7;o(Buffer.from(await Gx(f)))}o("PACK"),o("00000002","hex"),o(lg(8,i.length),"hex");for(let u of i){let{type:f,object:d}=await Ge({fs:t,cache:e,gitdir:n,oid:u});await l({write:o,object:d,stype:f})}let c=a.digest();return s.push(c),s}async function TD({fs:t,cache:e,gitdir:r,oids:n,write:i}){let a=await zS({fs:t,cache:e,gitdir:r,oids:n}),s=Buffer.from(await Ff(a)),l=`pack-${s.slice(-20).toString("hex")}.pack`;return i?(await t.write(F.join(r,`objects/pack/${l}`),s),{filename:l}):{filename:l,packfile:new Uint8Array(s)}}async function VS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oids:n,write:i=!1,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oids",n),await TD({fs:new Q(t),cache:a,gitdir:r,oids:n,write:i})}catch(s){throw s.caller="git.packObjects",s}}async function qS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=F.join(o,".git"),ref:c,url:u,remote:f,remoteRef:d,prune:h=!1,pruneTags:p=!1,fastForward:g=!0,fastForwardOnly:v=!1,corsProxy:y,singleBranch:b,headers:E={},author:S,committer:A,signingKey:k,cache:w={}}){try{P("fs",t),P("gitdir",l);let x=new Q(t),_=await ia({fs:x,gitdir:l,author:S});if(!_)throw new zt("author");let T=await ho({fs:x,gitdir:l,author:_,committer:A});if(!T)throw new zt("committer");return await gS({fs:x,cache:w,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l,ref:c,url:u,remote:f,remoteRef:d,fastForward:g,fastForwardOnly:v,corsProxy:y,singleBranch:b,headers:E,author:_,committer:T,signingKey:k,prune:h,pruneTags:p})}catch(x){throw x.caller="git.pull",x}}async function CD({fs:t,cache:e,dir:r,gitdir:n=F.join(r,".git"),start:i,finish:a}){let s=await qa.read({fs:t,gitdir:n}),o=new Set,l=new Set;for(let f of i)o.add(await V.resolve({fs:t,gitdir:n,ref:f}));for(let f of a)try{let d=await V.resolve({fs:t,gitdir:n,ref:f});l.add(d)}catch(d){}let c=new Set;async function u(f){c.add(f);let{type:d,object:h}=await Ge({fs:t,cache:e,gitdir:n,oid:f});if(d==="tag"){let g=Mr.from(h).headers().object;return u(g)}if(d!=="commit")throw new tr(f,d,"commit");if(!s.has(f)){let g=pr.from(h).headers().parent;for(f of g)!l.has(f)&&!c.has(f)&&await u(f)}}for(let f of o)await u(f);return c}async function Xm({fs:t,cache:e,dir:r,gitdir:n=F.join(r,".git"),oids:i}){let a=new Set;async function s(o){if(a.has(o))return;a.add(o);let{type:l,object:c}=await Ge({fs:t,cache:e,gitdir:n,oid:o});if(l==="tag"){let f=Mr.from(c).headers().object;await s(f)}else if(l==="commit"){let f=pr.from(c).headers().tree;await s(f)}else if(l==="tree"){let u=hr.from(c);for(let f of u)f.type==="blob"&&a.add(f.oid),f.type==="tree"&&await s(f.oid)}}for(let o of i)await s(o);return a}async function PD(t){let e={},r="",n=Qe.streamReader(t),i=await n();for(;i!==!0;)i!==null&&(r+=i.toString("utf8")+` +`),i=await n();let a=r.toString("utf8").split(` +`);if(i=a.shift(),!i.startsWith("unpack "))throw new Va('unpack ok" or "unpack [error message]',i);e.ok=i==="unpack ok",e.ok||(e.error=i.slice(7)),e.refs={};for(let s of a){if(s.trim()==="")continue;let o=s.slice(0,2),l=s.slice(3),c=l.indexOf(" ");c===-1&&(c=l.length);let u=l.slice(0,c),f=l.slice(c+1);e.refs[u]={ok:o==="ok",error:f}}return e}async function RD({capabilities:t=[],triplets:e=[]}){let r=[],n=`\0 ${t.join(" ")}`;for(let i of e)r.push(Qe.encode(`${i.oldoid} ${i.oid} ${i.fullRef}${n} +`)),n="";return r.push(Qe.flush()),r}async function MD({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,onPrePush:l,gitdir:c,ref:u,remoteRef:f,remote:d,url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:y={}}){let b=u||await sa({fs:t,gitdir:c});if(typeof b=="undefined")throw new dr("ref");let E=await nt.get({fs:t,gitdir:c});d=d||await E.get(`branch.${b}.pushRemote`)||await E.get("remote.pushDefault")||await E.get(`branch.${b}.remote`)||"origin";let S=h||await E.get(`remote.${d}.pushurl`)||await E.get(`remote.${d}.url`);if(typeof S=="undefined")throw new dr("remote OR url");let A=f||await E.get(`branch.${b}.merge`);if(typeof S=="undefined")throw new dr("remoteRef");v===void 0&&(v=await E.get("http.corsProxy"));let k=await V.expand({fs:t,gitdir:c,ref:b}),w=g?"0000000000000000000000000000000000000000":await V.resolve({fs:t,gitdir:c,ref:k}),x=go.getRemoteHelperFor({url:S}),_=await x.discover({http:r,onAuth:a,onAuthSuccess:s,onAuthFailure:o,corsProxy:v,service:"git-receive-pack",url:S,headers:y,protocolVersion:1}),T=_.auth,C;if(!A)C=k;else try{C=await V.expandAgainstMap({ref:A,map:_.refs})}catch(W){if(W instanceof je)C=A.startsWith("refs/")?A:`refs/heads/${A}`;else throw W}let I=_.refs.get(C)||"0000000000000000000000000000000000000000";if(l&&!await l({remote:d,url:S,localRef:{ref:g?"(delete)":k,oid:w},remoteRef:{ref:C,oid:I}}))throw new uo;let L=!_.capabilities.has("no-thin"),$=new Set;if(!g){let W=[..._.refs.values()],B=new Set;if(I!=="0000000000000000000000000000000000000000"){let $e=await pg({fs:t,cache:e,gitdir:c,oids:[w,I]});for(let lr of $e)W.push(lr);L&&(B=await Xm({fs:t,cache:e,gitdir:c,oids:$e}))}if(!W.includes(w)){let $e=await CD({fs:t,cache:e,gitdir:c,start:[w],finish:W});$=await Xm({fs:t,cache:e,gitdir:c,oids:$e})}if(L){try{let $e=await V.resolve({fs:t,gitdir:c,ref:`refs/remotes/${d}/HEAD`,depth:2}),{oid:lr}=await V.resolveAgainstMap({ref:$e.replace(`refs/remotes/${d}/`,""),fullref:$e,map:_.refs}),Ut=[lr];for(let X of await Xm({fs:t,cache:e,gitdir:c,oids:Ut}))B.add(X)}catch($e){}for(let $e of B)$.delete($e)}if(w===I&&(p=!0),!p){if(k.startsWith("refs/tags")&&I!=="0000000000000000000000000000000000000000")throw new co("tag-exists");if(w!=="0000000000000000000000000000000000000000"&&I!=="0000000000000000000000000000000000000000"&&!await RS({fs:t,cache:e,gitdir:c,oid:w,ancestor:I,depth:-1}))throw new co("not-fast-forward")}}let J=nS([..._.capabilities],["report-status","side-band-64k",`agent=${Bf.agent}`]),de=await RD({capabilities:J,triplets:[{oldoid:I,oid:w,fullRef:C}]}),le=g?[]:await zS({fs:t,cache:e,gitdir:c,oids:[...$]}),ce=await x.connect({http:r,onProgress:n,corsProxy:v,service:"git-receive-pack",url:S,auth:T,headers:y,body:[...de,...le]}),{packfile:Te,progress:ne}=await $f.demux(ce.body);if(i){let W=iS(ne);uc(W,async B=>{await i(B)})}let N=await PD(Te);if(ce.headers&&(N.headers=ce.headers),d&&N.ok&&N.refs[C].ok&&!k.startsWith("refs/tags")){let W=`refs/remotes/${d}/${C.replace("refs/heads","")}`;g?await V.deleteRef({fs:t,gitdir:c,ref:W}):await V.writeRef({fs:t,gitdir:c,ref:W,value:w})}if(N.ok&&Object.values(N.refs).every(W=>W.ok))return N;{let W=Object.entries(N.refs).filter(([B,$e])=>!$e.ok).map(([B,$e])=>` + - ${B}: ${$e.error}`).join("");throw new Ql(W,N)}}async function WS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPrePush:o,dir:l,gitdir:c=F.join(l,".git"),ref:u,remoteRef:f,remote:d="origin",url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:y={},cache:b={}}){try{return P("fs",t),P("http",e),P("gitdir",c),await MD({fs:new Q(t),cache:b,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPrePush:o,gitdir:c,ref:u,remoteRef:f,remote:d,url:h,force:p,delete:g,corsProxy:v,headers:y})}catch(E){throw E.caller="git.push",E}}async function YS({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Mr.from(a).parse().object,YS({fs:t,cache:e,gitdir:r,oid:n});if(i!=="blob")throw new tr(n,i,"blob");return{oid:n,blob:new Uint8Array(a)}}async function XS({fs:t,cache:e,gitdir:r,oid:n,filepath:i=void 0}){return i!==void 0&&(n=await lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i})),await YS({fs:t,cache:e,gitdir:r,oid:n})}async function KS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,filepath:i,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await XS({fs:new Q(t),cache:a,gitdir:r,oid:n,filepath:i})}catch(s){throw s.caller="git.readBlob",s}}async function mg({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await po({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.readCommit",a}}async function OD({fs:t,cache:e,gitdir:r,ref:n="refs/notes/commits",oid:i}){let a=await V.resolve({gitdir:r,fs:t,ref:n}),{blob:s}=await XS({fs:t,cache:e,gitdir:r,oid:a,filepath:i});return s}async function ZS({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n="refs/notes/commits",oid:i,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("ref",n),P("oid",i),await OD({fs:new Q(t),cache:a,gitdir:r,ref:n,oid:i})}catch(s){throw s.caller="git.readNote",s}}async function JS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,format:i="parsed",filepath:a=void 0,encoding:s=void 0,cache:o={}}){try{P("fs",t),P("gitdir",r),P("oid",n);let l=new Q(t);a!==void 0&&(n=await lc({fs:l,cache:o,gitdir:r,oid:n,filepath:a}));let u=await Ge({fs:l,cache:o,gitdir:r,oid:n,format:i==="parsed"?"content":i});if(u.oid=n,i==="parsed")switch(u.format="parsed",u.type){case"commit":u.object=pr.from(u.object).parse();break;case"tree":u.object=hr.from(u.object).entries();break;case"blob":s?u.object=u.object.toString(s):(u.object=new Uint8Array(u.object),u.format="content");break;case"tag":u.object=Mr.from(u.object).parse();break;default:throw new tr(u.oid,u.type,"blob|commit|tag|tree")}else(u.format==="deflated"||u.format==="wrapped")&&(u.type=u.format);return u}catch(l){throw l.caller="git.readObject",l}}async function ID({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n,format:"content"});if(i!=="tag")throw new tr(n,i,"tag");let s=Mr.from(a);return{oid:n,tag:s.parse(),payload:s.payload()}}async function QS({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await ID({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.readTag",a}}async function eE({fs:t,dir:e,gitdir:r=F.join(e,".git"),oid:n,filepath:i=void 0,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await wo({fs:new Q(t),cache:a,gitdir:r,oid:n,filepath:i})}catch(s){throw s.caller="git.readTree",s}}async function tE({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n,cache:i={}}){try{P("fs",t),P("gitdir",r),P("filepath",n),await ct.acquire({fs:new Q(t),gitdir:r,cache:i},async function(a){a.delete({filepath:n})})}catch(a){throw a.caller="git.remove",a}}async function FD({fs:t,cache:e,onSign:r,gitdir:n,ref:i="refs/notes/commits",oid:a,author:s,committer:o,signingKey:l}){let c;try{c=await V.resolve({gitdir:n,fs:t,ref:i})}catch(p){if(!(p instanceof je))throw p}let f=(await wo({fs:t,gitdir:n,oid:c||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;f=f.filter(p=>p.path!==a);let d=await cc({fs:t,gitdir:n,tree:f});return await Nf({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tree:d,parent:c&&[c],message:`Note removed by 'isomorphic-git removeNote' +`,author:s,committer:o,signingKey:l})}async function rE({fs:t,onSign:e,dir:r,gitdir:n=F.join(r,".git"),ref:i="refs/notes/commits",oid:a,author:s,committer:o,signingKey:l,cache:c={}}){try{P("fs",t),P("gitdir",n),P("oid",a);let u=new Q(t),f=await ia({fs:u,gitdir:n,author:s});if(!f)throw new zt("author");let d=await ho({fs:u,gitdir:n,author:f,committer:o});if(!d)throw new zt("committer");return await FD({fs:u,cache:c,onSign:e,gitdir:n,ref:i,oid:a,author:f,committer:d,signingKey:l})}catch(u){throw u.caller="git.removeNote",u}}async function $D({fs:t,gitdir:e,oldref:r,ref:n,checkout:i=!1}){if(n!==zn.clean(n))throw new mn(n,zn.clean(n));if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let a=`refs/heads/${r}`,s=`refs/heads/${n}`;if(await V.exists({fs:t,gitdir:e,ref:s}))throw new pn("branch",n,!1);let l=await V.resolve({fs:t,gitdir:e,ref:a,depth:1});await V.writeRef({fs:t,gitdir:e,ref:s,value:l}),await V.deleteRef({fs:t,gitdir:e,ref:a});let u=await sa({fs:t,gitdir:e,fullname:!0})===a;(i||u)&&await V.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:s})}async function nE({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,oldref:i,checkout:a=!1}){try{return P("fs",t),P("gitdir",r),P("ref",n),P("oldref",i),await $D({fs:new Q(t),gitdir:r,ref:n,oldref:i,checkout:a})}catch(s){throw s.caller="git.renameBranch",s}}async function iE({gitdir:t,type:e,object:r}){return bi(ea.wrap({type:e,object:r}))}async function aE({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n,ref:i,cache:a={}}){try{P("fs",t),P("gitdir",r),P("filepath",n);let s=new Q(t),o,l;try{o=await V.resolve({fs:s,gitdir:r,ref:i||"HEAD"})}catch(f){if(i)throw f}if(o)try{o=await lc({fs:s,cache:a,gitdir:r,oid:o,filepath:n})}catch(f){o=null}let c={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:0,uid:0,gid:0,size:0},u=e&&await s.read(F.join(e,n));u&&(l=await iE({gitdir:r,type:"blob",object:u}),o===l&&(c=await s.lstat(F.join(e,n)))),await ct.acquire({fs:s,gitdir:r,cache:a},async function(f){f.delete({filepath:n}),o&&f.insert({filepath:n,stats:c,oid:o})})}catch(s){throw s.caller="git.reset",s}}async function sE({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,depth:i}){try{return P("fs",t),P("gitdir",r),P("ref",n),await V.resolve({fs:new Q(t),gitdir:r,ref:n,depth:i})}catch(a){throw a.caller="git.resolveRef",a}}async function oE({fs:t,dir:e,gitdir:r=F.join(e,".git"),path:n,value:i,append:a=!1}){try{P("fs",t),P("gitdir",r),P("path",n);let s=new Q(t),o=await nt.get({fs:s,gitdir:r});a?await o.append(n,i):await o.set(n,i),await nt.save({fs:s,gitdir:r,config:o})}catch(s){throw s.caller="git.setConfig",s}}async function lE({fs:t,gitdir:e,commit:r}){let n=pr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"commit",object:n,format:"content"})}var Df=class t{static get timezoneOffsetForRefLogEntry(){let e=new Date().getTimezoneOffset(),r=Math.abs(Math.floor(e/60)),n=Math.abs(e%60).toString().padStart(2,"0");return`${e>0?"-":"+"}${r.toString().padStart(2,"0")}${n}`}static createStashReflogEntry(e,r,n){let i=e.name.replace(/\s/g,""),a="0000000000000000000000000000000000000000",s=Math.floor(Date.now()/1e3),o=t.timezoneOffsetForRefLogEntry;return`${a} ${r} ${i} ${e.email} ${s} ${o} ${n} +`}static getStashReflogEntry(e,r=!1){return e.split(` +`).filter(a=>a).reverse().map((a,s)=>r?`stash@{${s}}: ${a.split(" ")[1]}`:a)}},DD={stage:Ya,workdir:yo},Km;async function vo(t,e){return Km===void 0&&(Km=new zl),Km.acquire(t,e)}async function LD(t,e,r,n,i=null){let a=F.join(r,n),s=await t.lstat(a);if(!s)throw new je(a);if(s.isDirectory())throw new pe(`${a}: file expected, but found directory`);let o=i?await Lx({fs:t,gitdir:e,oid:i}):void 0,l=o?i:void 0;return o||await vo({fs:t,gitdir:e,currentFilepath:a},async()=>{let c=s.isSymbolicLink()?await t.readlink(a).then(zx):await t.read(a);if(c===null)throw new je(a);l=await mr({fs:t,gitdir:e,type:"blob",object:c})}),l}async function jD({fs:t,dir:e,gitdir:r,entries:n}){async function i(a){if(a.type==="tree"){if(!a.oid){let s=await Promise.all(a.children.map(i));a.oid=await cc({fs:t,gitdir:r,tree:s}),a.mode=16384}}else a.type==="blob"&&(a.oid=await LD(t,r,e,a.path,a.oid),a.mode=33188);return a.path=a.path.split("/").pop(),a}return Promise.all(n.map(i))}async function Rx({fs:t,dir:e,gitdir:r,treePair:n}){let i=n[1]==="stage",a=n.map(h=>typeof h=="string"?DD[h]():h),s=[],u=await ra({fs:t,cache:{},dir:e,gitdir:r,trees:a,map:async(h,[p,g])=>{if(!(h==="."||await na.isIgnored({fs:t,dir:e,gitdir:r,filepath:h}))&&g)return(!p||await p.oid()!==await g.oid()&&await g.oid()!==void 0)&&s.push([p,g]),{mode:await g.mode(),path:h,oid:await g.oid(),type:await g.type()}},reduce:async(h,p)=>(p=p.filter(Boolean),h?(h.children=p,h):p.length>0?p:void 0),iterate:async(h,p)=>{let g=[];for(let v of p){let[y,b]=v;i?b&&(await t.exists(`${e}/${b.toString()}`)?g.push(v):s.push([null,b])):y&&(b?g.push(v):s.push([y,null]))}return g.length?Promise.all(g.map(h)):[]}});if(s.length===0||u.length===0)return null;let d=(await jD({fs:t,dir:e,gitdir:r,entries:u})).filter(Boolean).map(h=>({mode:h.mode,path:h.path,oid:h.oid,type:h.type}));return cc({fs:t,gitdir:r,tree:d})}async function ND({fs:t,dir:e,gitdir:r,stashCommit:n,parentCommit:i,wasStaged:a}){let s=[],o=[],l=await ra({fs:t,cache:{},dir:e,gitdir:r,trees:[Rr({ref:i}),Rr({ref:n})],map:async(c,[u,f])=>{if(c==="."||await na.isIgnored({fs:t,dir:e,gitdir:r,filepath:c}))return;let d=f?await f.type():await u.type();if(d!=="tree"&&d!=="blob")return;if(!f&&u){let p=d==="tree"?"rmdir":"rm";return d==="tree"&&s.push(c),d==="blob"&&a&&o.push({filepath:c,oid:await u.oid()}),{method:p,filepath:c}}let h=await f.oid();if(!u||await u.oid()!==h)return d==="tree"?{method:"mkdir",filepath:c}:(a&&o.push({filepath:c,oid:h,stats:await t.lstat(F.join(e,c))}),{method:"write",filepath:c,oid:h})}});await vo({fs:t,gitdir:r,dirRemoved:s,ops:l},async()=>{for(let c of l){let u=F.join(e,c.filepath);switch(c.method){case"rmdir":await t.rmdir(u);break;case"mkdir":await t.mkdir(u);break;case"rm":await t.rm(u);break;case"write":if(!s.some(f=>u.startsWith(f))){let{object:f}=await Ge({fs:t,cache:{},gitdir:r,oid:c.oid});await t.exists(u)&&await t.rm(u),await t.write(u,f)}break}}}),await ct.acquire({fs:t,gitdir:r,cache:{}},async c=>{o.forEach(({filepath:u,stats:f,oid:d})=>{c.insert({filepath:u,stats:f,oid:d})})})}var Wa=class t{constructor({fs:e,dir:r,gitdir:n=F.join(r,".git")}){Object.assign(this,{fs:e,dir:r,gitdir:n,_author:null})}static get refStash(){return"refs/stash"}static get refLogsStash(){return"logs/refs/stash"}get refStashPath(){return F.join(this.gitdir,t.refStash)}get refLogsStashPath(){return F.join(this.gitdir,t.refLogsStash)}async getAuthor(){if(!this._author&&(this._author=await ia({fs:this.fs,gitdir:this.gitdir,author:{}}),!this._author))throw new zt("author");return this._author}async getStashSHA(e,r){return await this.fs.exists(this.refStashPath)?(r||await this.readStashReflogs({parsed:!1}))[e].split(" ")[1]:null}async writeStashCommit({message:e,tree:r,parent:n}){return lE({fs:this.fs,gitdir:this.gitdir,commit:{message:e,tree:r,parent:n,author:await this.getAuthor(),committer:await this.getAuthor()}})}async readStashCommit(e){let r=await this.readStashReflogs({parsed:!1});if(e!==0&&(e<0||e>r.length-1))throw new mn(`stash@${e}`,"number that is in range of [0, num of stash pushed]");let n=await this.getStashSHA(e,r);return n?po({fs:this.fs,cache:{},gitdir:this.gitdir,oid:n}):{}}async writeStashRef(e){return V.writeRef({fs:this.fs,gitdir:this.gitdir,ref:t.refStash,value:e})}async writeStashReflogEntry({stashCommit:e,message:r}){let n=await this.getAuthor(),i=Df.createStashReflogEntry(n,e,r),a=this.refLogsStashPath;await vo({filepath:a,entry:i},async()=>{let s=await this.fs.exists(a)?await this.fs.read(a,"utf8"):"";await this.fs.write(a,s+i,"utf8")})}async readStashReflogs({parsed:e=!1}){if(!await this.fs.exists(this.refLogsStashPath))return[];let n=(await this.fs.read(this.refLogsStashPath)).toString();return Df.getStashReflogEntry(n,e)}};async function BD({fs:t,dir:e,gitdir:r,message:n=""}){let i=new Wa({fs:t,dir:e,gitdir:r});await i.getAuthor();let a=await sa({fs:t,gitdir:r,fullname:!1}),s=await V.resolve({fs:t,gitdir:r,ref:"HEAD"}),l=(await mg({fs:t,dir:e,gitdir:r,oid:s})).commit.message,c=[s],u=null,f=Rr({ref:"HEAD"}),d=await Rx({fs:t,dir:e,gitdir:r,treePair:[Rr({ref:"HEAD"}),"stage"]});if(d){let v=await i.writeStashCommit({message:`stash-Index: WIP on ${a} - ${new Date().toISOString()}`,tree:d,parent:c});c.push(v),u=d,f=Ya()}let h=await Rx({fs:t,dir:e,gitdir:r,treePair:[f,"workdir"]});if(h){let v=await i.writeStashCommit({message:`stash-WorkDir: WIP on ${a} - ${new Date().toISOString()}`,tree:h,parent:[c[c.length-1]]});c.push(v),u=h}if(!u||!d&&!h)throw new je("changes, nothing to stash");let p=(n.trim()||`WIP on ${a}`)+`: ${s.substring(0,7)} ${l}`,g=await i.writeStashCommit({message:p,tree:u,parent:c});return await i.writeStashRef(g),await i.writeStashReflogEntry({stashCommit:g,message:p}),await dg({fs:t,dir:e,gitdir:r,ref:a,track:!1,force:!0}),g}async function cE({fs:t,dir:e,gitdir:r,refIdx:n=0}){let a=await new Wa({fs:t,dir:e,gitdir:r}).readStashCommit(n),{parent:s=null}=a.commit?a.commit:{};if(!(!s||!Array.isArray(s)))for(let o=0;o{await t.exists(s)&&await t.rm(s)});let o=await i.readStashReflogs({parsed:!1});if(!o.length)return;o.splice(n,1);let l=i.refLogsStashPath;await vo({reflogEntries:o,stashReflogPath:l,stashMgr:i},async()=>{if(o.length){await t.write(l,o.join(` +`),"utf8");let c=o[o.length-1].split(" ")[1];await i.writeStashRef(c)}else await t.rm(l)})}async function HD({fs:t,dir:e,gitdir:r}){return new Wa({fs:t,dir:e,gitdir:r}).readStashReflogs({parsed:!0})}async function UD({fs:t,dir:e,gitdir:r}){let n=new Wa({fs:t,dir:e,gitdir:r}),i=[n.refStashPath,n.refLogsStashPath];await vo(i,async()=>{await Promise.all(i.map(async a=>{if(await t.exists(a))return t.rm(a)}))})}async function GD({fs:t,dir:e,gitdir:r,refIdx:n=0}){await cE({fs:t,dir:e,gitdir:r,refIdx:n}),await uE({fs:t,dir:e,gitdir:r,refIdx:n})}async function fE({fs:t,dir:e,gitdir:r=F.join(e,".git"),op:n="push",message:i="",refIdx:a=0}){P("fs",t),P("dir",e),P("gitdir",r),P("op",n);let s={push:BD,apply:cE,drop:uE,list:HD,clear:UD,pop:GD},o=["apply","drop","pop"];try{let l=new Q(t);["refs","logs","logs/refs"].map(f=>F.join(r,f)).forEach(async f=>{await l.exists(f)||await l.mkdir(f)});let u=s[n];if(u){if(o.includes(n)&&a<0)throw new mn(`stash@${a}`,"number that is in range of [0, num of stash pushed]");return await u({fs:l,dir:e,gitdir:r,message:i,refIdx:a})}throw new Error(`To be implemented: ${n}`)}catch(l){throw l.caller="git.stash",l}}async function dE({fs:t,dir:e,gitdir:r=F.join(e,".git"),filepath:n,cache:i={}}){try{P("fs",t),P("gitdir",r),P("filepath",n);let a=new Q(t);if(await na.isIgnored({fs:a,gitdir:r,dir:e,filepath:n}))return"ignored";let o=await zD({fs:a,cache:i,gitdir:r}),l=await hE({fs:a,cache:i,gitdir:r,tree:o,path:n}),c=await ct.acquire({fs:a,gitdir:r,cache:i},async function(g){for(let v of g)if(v.path===n)return v;return null}),u=await a.lstat(F.join(e,n)),f=l!==null,d=c!==null,h=u!==null,p=async()=>{if(d&&!Tf(c,u))return c.oid;{let g=await a.read(F.join(e,n)),v=await iE({gitdir:r,type:"blob",object:g});return d&&c.oid===v&&u.size!==-1&&ct.acquire({fs:a,gitdir:r,cache:i},async function(y){y.insert({filepath:n,stats:u,oid:v})}),v}};if(!f&&!h&&!d)return"absent";if(!f&&!h&&d)return"*absent";if(!f&&h&&!d)return"*added";if(!f&&h&&d)return await p()===c.oid?"added":"*added";if(f&&!h&&!d)return"deleted";if(f&&!h&&d)return l===c.oid,"*deleted";if(f&&h&&!d)return await p()===l?"*undeleted":"*undeletemodified";if(f&&h&&d){let g=await p();return g===l?g===c.oid?"unmodified":"*unmodified":g===c.oid?"modified":"*modified"}}catch(a){throw a.caller="git.status",a}}async function hE({fs:t,cache:e,gitdir:r,tree:n,path:i}){typeof i=="string"&&(i=i.split("/"));let a=i.shift();for(let s of n)if(s.path===a){if(i.length===0)return s.oid;let{type:o,object:l}=await Ge({fs:t,cache:e,gitdir:r,oid:s.oid});if(o==="tree"){let c=hr.from(l);return hE({fs:t,cache:e,gitdir:r,tree:c,path:i})}if(o==="blob")throw new tr(s.oid,o,"blob",i.join("/"))}return null}async function zD({fs:t,cache:e,gitdir:r}){let n;try{n=await V.resolve({fs:t,gitdir:r,ref:"HEAD"})}catch(a){if(a instanceof je)return[]}let{tree:i}=await wo({fs:t,cache:e,gitdir:r,oid:n});return i}async function pE({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n="HEAD",filepaths:i=["."],filter:a,cache:s={},ignored:o=!1}){try{P("fs",t),P("gitdir",r),P("ref",n);let l=new Q(t);return await ra({fs:l,cache:s,dir:e,gitdir:r,trees:[Rr({ref:n}),yo(),Ya()],map:async function(c,[u,f,d]){if(!u&&!d&&f&&!o&&await na.isIgnored({fs:l,dir:e,filepath:c})||!i.some(k=>tS(c,k)))return null;if(a&&!a(c))return;let[h,p,g]=await Promise.all([u&&u.type(),f&&f.type(),d&&d.type()]),v=[h,p,g].includes("blob");if((h==="tree"||h==="special")&&!v)return;if(h==="commit")return null;if((p==="tree"||p==="special")&&!v)return;if(g==="commit")return null;if((g==="tree"||g==="special")&&!v)return;let y=h==="blob"?await u.oid():void 0,b=g==="blob"?await d.oid():void 0,E;h!=="blob"&&p==="blob"&&g!=="blob"?E="42":p==="blob"&&(E=await f.oid());let S=[void 0,y,E,b],A=S.map(k=>S.indexOf(k));return A.shift(),[c,...A]}})}catch(l){throw l.caller="git.statusMatrix",l}}async function mE({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,object:i,force:a=!1}){try{P("fs",t),P("gitdir",r),P("ref",n);let s=new Q(t);if(n===void 0)throw new dr("ref");n=n.startsWith("refs/tags/")?n:`refs/tags/${n}`;let o=await V.resolve({fs:s,gitdir:r,ref:i||"HEAD"});if(!a&&await V.exists({fs:s,gitdir:r,ref:n}))throw new pn("tag",n);await V.writeRef({fs:s,gitdir:r,ref:n,value:o})}catch(s){throw s.caller="git.tag",s}}async function gE({fs:t,dir:e,gitdir:r=F.join(e,".git"),cache:n={},filepath:i,oid:a,mode:s,add:o,remove:l,force:c}){try{P("fs",t),P("gitdir",r),P("filepath",i);let u=new Q(t);if(l)return await ct.acquire({fs:u,gitdir:r,cache:n},async function(d){if(!c){let h=await u.lstat(F.join(e,i));if(h){if(h.isDirectory())throw new ta("directory");return}}d.has({filepath:i})&&d.delete({filepath:i})});let f;if(!a){if(f=await u.lstat(F.join(e,i)),!f)throw new je(`file at "${i}" on disk and "remove" not set`);if(f.isDirectory())throw new ta("directory")}return await ct.acquire({fs:u,gitdir:r,cache:n},async function(d){if(!o&&!d.has({filepath:i}))throw new je(`file at "${i}" in index and "add" not set`);let h;if(a)h={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:s,uid:0,gid:0,size:0};else{h=f;let p=h.isSymbolicLink()?await u.readlink(F.join(e,i)):await u.read(F.join(e,i));a=await mr({fs:u,gitdir:r,type:"blob",format:"content",object:p})}return d.insert({filepath:i,oid:a,stats:h}),a})}catch(u){throw u.caller="git.updateIndex",u}}function vE(){try{return Bf.version}catch(t){throw t.caller="git.version",t}}async function yE({fs:t,dir:e,gitdir:r=F.join(e,".git"),trees:n,map:i,reduce:a,iterate:s,cache:o={}}){try{return P("fs",t),P("gitdir",r),P("trees",n),await ra({fs:new Q(t),cache:o,dir:e,gitdir:r,trees:n,map:i,reduce:a,iterate:s})}catch(l){throw l.caller="git.walk",l}}async function wE({fs:t,dir:e,gitdir:r=F.join(e,".git"),blob:n}){try{return P("fs",t),P("gitdir",r),P("blob",n),await mr({fs:new Q(t),gitdir:r,type:"blob",object:n,format:"content"})}catch(i){throw i.caller="git.writeBlob",i}}async function bE({fs:t,dir:e,gitdir:r=F.join(e,".git"),commit:n}){try{return P("fs",t),P("gitdir",r),P("commit",n),await lE({fs:new Q(t),gitdir:r,commit:n})}catch(i){throw i.caller="git.writeCommit",i}}async function _E({fs:t,dir:e,gitdir:r=F.join(e,".git"),type:n,object:i,format:a="parsed",oid:s,encoding:o=void 0}){try{let l=new Q(t);if(a==="parsed"){switch(n){case"commit":i=pr.from(i).toObject();break;case"tree":i=hr.from(i).toObject();break;case"blob":i=Buffer.from(i,o);break;case"tag":i=Mr.from(i).toObject();break;default:throw new tr(s||"",n,"blob|commit|tag|tree")}a="content"}return s=await mr({fs:l,gitdir:r,type:n,object:i,oid:s,format:a}),s}catch(l){throw l.caller="git.writeObject",l}}async function xE({fs:t,dir:e,gitdir:r=F.join(e,".git"),ref:n,value:i,force:a=!1,symbolic:s=!1}){try{P("fs",t),P("gitdir",r),P("ref",n),P("value",i);let o=new Q(t);if(n!==zn.clean(n))throw new mn(n,zn.clean(n));if(!a&&await V.exists({fs:o,gitdir:r,ref:n}))throw new pn("ref",n);s?await V.writeSymbolicRef({fs:o,gitdir:r,ref:n,value:i}):(i=await V.resolve({fs:o,gitdir:r,ref:i}),await V.writeRef({fs:o,gitdir:r,ref:n,value:i}))}catch(o){throw o.caller="git.writeRef",o}}async function VD({fs:t,gitdir:e,tag:r}){let n=Mr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"tag",object:n,format:"content"})}async function SE({fs:t,dir:e,gitdir:r=F.join(e,".git"),tag:n}){try{return P("fs",t),P("gitdir",r),P("tag",n),await VD({fs:new Q(t),gitdir:r,tag:n})}catch(i){throw i.caller="git.writeTag",i}}async function EE({fs:t,dir:e,gitdir:r=F.join(e,".git"),tree:n}){try{return P("fs",t),P("gitdir",r),P("tree",n),await cc({fs:new Q(t),gitdir:r,tree:n})}catch(i){throw i.caller="git.writeTree",i}}var qD={Errors:Bx,STAGE:Ya,TREE:Rr,WORKDIR:yo,add:Vx,abortMerge:Ux,addNote:Kx,addRemote:Jx,annotatedTag:Qx,branch:eS,checkout:dg,clone:sS,commit:oS,getConfig:xS,getConfigAll:SS,setConfig:oE,currentBranch:lS,deleteBranch:cS,deleteRef:uS,deleteRemote:fS,deleteTag:dS,expandOid:hS,expandRef:pS,fastForward:vS,fetch:yS,findMergeBase:wS,findRoot:_S,getRemoteInfo:ES,getRemoteInfo2:kS,hashBlob:TS,indexPack:CS,init:PS,isDescendent:MS,isIgnored:OS,listBranches:IS,listFiles:$S,listNotes:DS,listRefs:LS,listRemotes:jS,listServerRefs:NS,listTags:BS,log:US,merge:GS,packObjects:VS,pull:qS,push:WS,readBlob:KS,readCommit:mg,readNote:ZS,readObject:JS,readTag:QS,readTree:eE,remove:tE,removeNote:rE,renameBranch:nE,resetIndex:aE,updateIndex:gE,resolveRef:sE,status:dE,statusMatrix:pE,tag:mE,version:vE,walk:yE,writeBlob:wE,writeCommit:bE,writeObject:_E,writeRef:xE,writeTag:SE,writeTree:EE,stash:fE};Y.Errors=Bx;Y.STAGE=Ya;Y.TREE=Rr;Y.WORKDIR=yo;Y.abortMerge=Ux;Y.add=Vx;Y.addNote=Kx;Y.addRemote=Jx;Y.annotatedTag=Qx;Y.branch=eS;Y.checkout=dg;Y.clone=sS;Y.commit=oS;Y.currentBranch=lS;Y.default=qD;Y.deleteBranch=cS;Y.deleteRef=uS;Y.deleteRemote=fS;Y.deleteTag=dS;Y.expandOid=hS;Y.expandRef=pS;Y.fastForward=vS;Y.fetch=yS;Y.findMergeBase=wS;Y.findRoot=_S;Y.getConfig=xS;Y.getConfigAll=SS;Y.getRemoteInfo=ES;Y.getRemoteInfo2=kS;Y.hashBlob=TS;Y.indexPack=CS;Y.init=PS;Y.isDescendent=MS;Y.isIgnored=OS;Y.listBranches=IS;Y.listFiles=$S;Y.listNotes=DS;Y.listRefs=LS;Y.listRemotes=jS;Y.listServerRefs=NS;Y.listTags=BS;Y.log=US;Y.merge=GS;Y.packObjects=VS;Y.pull=qS;Y.push=WS;Y.readBlob=KS;Y.readCommit=mg;Y.readNote=ZS;Y.readObject=JS;Y.readTag=QS;Y.readTree=eE;Y.remove=tE;Y.removeNote=rE;Y.renameBranch=nE;Y.resetIndex=aE;Y.resolveRef=sE;Y.setConfig=oE;Y.stash=fE;Y.status=dE;Y.statusMatrix=pE;Y.tag=mE;Y.updateIndex=gE;Y.version=vE;Y.walk=yE;Y.writeBlob=wE;Y.writeCommit=bE;Y.writeObject=_E;Y.writeRef=xE;Y.writeTag=SE;Y.writeTree=EE});var kE=M((UY,AE)=>{m();var bo=1e3,_o=bo*60,xo=_o*60,Xa=xo*24,WD=Xa*7,YD=Xa*365.25;AE.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return XD(t);if(r==="number"&&isFinite(t))return e.long?ZD(t):KD(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function XD(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*YD;case"weeks":case"week":case"w":return r*WD;case"days":case"day":case"d":return r*Xa;case"hours":case"hour":case"hrs":case"hr":case"h":return r*xo;case"minutes":case"minute":case"mins":case"min":case"m":return r*_o;case"seconds":case"second":case"secs":case"sec":case"s":return r*bo;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function KD(t){var e=Math.abs(t);return e>=Xa?Math.round(t/Xa)+"d":e>=xo?Math.round(t/xo)+"h":e>=_o?Math.round(t/_o)+"m":e>=bo?Math.round(t/bo)+"s":t+"ms"}function ZD(t){var e=Math.abs(t);return e>=Xa?Hf(t,e,Xa,"day"):e>=xo?Hf(t,e,xo,"hour"):e>=_o?Hf(t,e,_o,"minute"):e>=bo?Hf(t,e,bo,"second"):t+" ms"}function Hf(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var CE=M((zY,TE)=>{m();function JD(t){r.debug=r,r.default=r,r.coerce=l,r.disable=s,r.enable=i,r.enabled=o,r.humanize=kE(),r.destroy=c,Object.keys(t).forEach(u=>{r[u]=t[u]}),r.names=[],r.skips=[],r.formatters={};function e(u){let f=0;for(let d=0;d{if(k==="%%")return"%";S++;let x=r.formatters[w];if(typeof x=="function"){let _=v[S];k=x.call(y,_),v.splice(S,1),S--}return k}),r.formatArgs.call(y,v),(y.log||r.log).apply(y,v)}return g.namespace=u,g.useColors=r.useColors(),g.color=r.selectColor(u),g.extend=n,g.destroy=r.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==r.namespaces&&(h=r.namespaces,p=r.enabled(u)),p),set:v=>{d=v}}),typeof r.init=="function"&&r.init(g),g}function n(u,f){let d=r(this.namespace+(typeof f=="undefined"?":":f)+u);return d.log=this.log,d}function i(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let f=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let d of f)d[0]==="-"?r.skips.push(d.slice(1)):r.names.push(d)}function a(u,f){let d=0,h=0,p=-1,g=0;for(;d"-"+f)].join(",");return r.enable(""),u}function o(u){for(let f of r.skips)if(a(u,f))return!1;for(let f of r.names)if(a(u,f))return!0;return!1}function l(u){return u instanceof Error?u.stack||u.message:u}function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}TE.exports=JD});var Gf=M((gr,Uf)=>{m();gr.formatArgs=eL;gr.save=tL;gr.load=rL;gr.useColors=QD;gr.storage=nL();gr.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();gr.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function QD(){if(typeof window!="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function eL(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+Uf.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}gr.log=console.debug||console.log||(()=>{});function tL(t){try{t?gr.storage.setItem("debug",t):gr.storage.removeItem("debug")}catch(e){}}function rL(){let t;try{t=gr.storage.getItem("debug")||gr.storage.getItem("DEBUG")}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}function nL(){try{return localStorage}catch(t){}}Uf.exports=CE()(gr);var{formatters:iL}=Uf.exports;iL.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var PE=M(Or=>{"use strict";m();var aL=Or&&Or.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Or,"__esModule",{value:!0});var sL=require("fs"),oL=aL(Gf()),So=oL.default("@kwsites/file-exists");function lL(t,e,r){So("checking %s",t);try{let n=sL.statSync(t);return n.isFile()&&e?(So("[OK] path represents a file"),!0):n.isDirectory()&&r?(So("[OK] path represents a directory"),!0):(So("[FAIL] path represents something other than a file or directory"),!1)}catch(n){if(n.code==="ENOENT")return So("[FAIL] path is not accessible: %o",n),!1;throw So("[FATAL] %o",n),n}}function cL(t,e=Or.READABLE){return lL(t,(e&Or.FILE)>0,(e&Or.FOLDER)>0)}Or.exists=cL;Or.FILE=1;Or.FOLDER=2;Or.READABLE=Or.FILE+Or.FOLDER});var RE=M(zf=>{"use strict";m();function uL(t){for(var e in t)zf.hasOwnProperty(e)||(zf[e]=t[e])}Object.defineProperty(zf,"__esModule",{value:!0});uL(PE())});var yg=M(Ka=>{"use strict";m();Object.defineProperty(Ka,"__esModule",{value:!0});Ka.createDeferred=Ka.deferred=void 0;function vg(){let t,e,r="pending";return{promise:new Promise((i,a)=>{t=i,e=a}),done(i){r==="pending"&&(r="resolved",t(i))},fail(i){r==="pending"&&(r="rejected",e(i))},get fulfilled(){return r!=="pending"},get status(){return r}}}Ka.deferred=vg;Ka.createDeferred=vg;Ka.default=vg});var yT=M((FX,vT)=>{"use strict";m();vT.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var bT=M((DX,wT)=>{m();var c0={px:{px:1,cm:37.79527559055118,mm:3.7795275590551185,in:96,pt:1.3333333333333333,pc:16},cm:{px:.026458333333333334,cm:1,mm:.1,in:2.54,pt:.035277777777777776,pc:.42333333333333334},mm:{px:.26458333333333334,cm:10,mm:1,in:25.4,pt:.35277777777777775,pc:4.233333333333333},in:{px:.010416666666666666,cm:.39370078740157477,mm:.03937007874015748,in:1,pt:.013888888888888888,pc:.16666666666666666},pt:{px:.75,cm:28.346456692913385,mm:2.834645669291339,in:72,pt:1,pc:12},pc:{px:.0625,cm:2.3622047244094486,mm:.2362204724409449,in:6,pt:.08333333333333333,pc:1},deg:{deg:1,grad:.9,rad:180/Math.PI,turn:360},grad:{deg:1.1111111111111112,grad:1,rad:200/Math.PI,turn:400},rad:{deg:Math.PI/180,grad:Math.PI/200,rad:1,turn:Math.PI*2},turn:{deg:.002777777777777778,grad:.0025,rad:.5/Math.PI,turn:1},s:{s:1,ms:.001},ms:{s:1e3,ms:1},Hz:{Hz:1,kHz:1e3},kHz:{Hz:.001,kHz:1},dpi:{dpi:1,dpcm:.39370078740157477,dppx:.010416666666666666},dpcm:{dpi:2.54,dpcm:1,dppx:.026458333333333334},dppx:{dpi:96,dpcm:37.79527559055118,dppx:1}};wT.exports=function(t,e,r,n){if(!c0.hasOwnProperty(r))throw new Error("Cannot convert to "+r);if(!c0[r].hasOwnProperty(e))throw new Error("Cannot convert from "+e+" to "+r);var i=c0[r][e]*t;return n!==!1?(n=Math.pow(10,parseInt(n)||5),Math.round(i*n)/n):i}});var FT=M(xi=>{"use strict";m();Object.defineProperty(xi,"__esModule",{value:!0});xi.fromRgba=Po;xi.fromRgb=u0;xi.fromHsla=md;xi.fromHsl=OT;xi.fromString=IT;xi.default=void 0;var _T=ET(yT()),bB=ET(bT());function ET(t){return t&&t.__esModule?t:{default:t}}function _B(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function xT(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r-1}function TB(t,e,r){var n=t/255,i=e/255,a=r/255,s=Math.max(n,i,a),o=Math.min(n,i,a),l=s-o,c=(s+o)/2;if(l===0)return[0,0,c*100];var u=l/(1-Math.abs(2*c-1)),f=function(){switch(s){case n:return(i-a)/l%6;case i:return(a-n)/l+2;default:return(n-i)/l+4}}();return[f*60,u*100,c*100]}function CB(t,e,r){var n=t/60,i=e/100,a=r/100,s=(1-Math.abs(2*a-1))*i,o=s*(1-Math.abs(n%2-1)),l=a-s/2,c=function(){return n<1?[s,o,0]:n<2?[o,s,0]:n<3?[0,s,o]:n<4?[0,o,s]:n<5?[o,0,s]:[s,0,o]}(),u=nr(c,3),f=u[0],d=u[1],h=u[2];return[(f+l)*255,(d+l)*255,(h+l)*255]}var PB=function(){function t(e){var r=nr(e,4),n=r[0],i=r[1],a=r[2],s=r[3];_B(this,t),this.values=[Math.max(Math.min(parseInt(n,10),255),0),Math.max(Math.min(parseInt(i,10),255),0),Math.max(Math.min(parseInt(a,10),255),0),s==null?1:Math.max(Math.min(parseFloat(s),255),0)]}return xB(t,[{key:"toRgbString",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3];return s===1?"rgb(".concat(n,", ").concat(i,", ").concat(a,")"):"rgba(".concat(n,", ").concat(i,", ").concat(a,", ").concat(s,")")}},{key:"toHslString",value:function(){var r=this.toHslaArray(),n=nr(r,4),i=n[0],a=n[1],s=n[2],o=n[3];return o===1?"hsl(".concat(i,", ").concat(a,"%, ").concat(s,"%)"):"hsla(".concat(i,", ").concat(a,"%, ").concat(s,"%, ").concat(o,")")}},{key:"toHexString",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3];return n=Number(n).toString(16).padStart(2,"0"),i=Number(i).toString(16).padStart(2,"0"),a=Number(a).toString(16).padStart(2,"0"),s=s<1?parseInt(s*255,10).toString(16).padStart(2,"0"):"","#".concat(n).concat(i).concat(a).concat(s)}},{key:"toRgbaArray",value:function(){return this.values}},{key:"toHslaArray",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3],o=TB(n,i,a),l=nr(o,3),c=l[0],u=l[1],f=l[2];return[c,u,f,s]}}]),t}();function Po(t){var e=nr(t,4),r=e[0],n=e[1],i=e[2],a=e[3];return new PB([r,n,i,a])}function u0(t){var e=nr(t,3),r=e[0],n=e[1],i=e[2];return Po([r,n,i,1])}function md(t){var e=nr(t,4),r=e[0],n=e[1],i=e[2],a=e[3],s=CB(r,n,i),o=nr(s,3),l=o[0],c=o[1],u=o[2];return Po([l,c,u,a])}function OT(t){var e=nr(t,3),r=e[0],n=e[1],i=e[2];return md([r,n,i,1])}function RB(t){var e=AT.exec(t)||kT.exec(t),r=nr(e,5),n=r[1],i=r[2],a=r[3],s=r[4];return n=parseInt(n.length<2?n.repeat(2):n,16),i=parseInt(i.length<2?i.repeat(2):i,16),a=parseInt(a.length<2?a.repeat(2):a,16),s=s&&(parseInt(s.length<2?s.repeat(2):s,16)/255).toPrecision(1)||1,Po([n,i,a,s])}function MB(t){var e=TT.exec(t)||PT.exec(t)||CT.exec(t)||RT.exec(t),r=nr(e,5),n=r[1],i=r[2],a=r[3],s=r[4];return n=bc(n,"%")?parseInt(n,10)*255/100:parseInt(n,10),i=bc(i,"%")?parseInt(i,10)*255/100:parseInt(i,10),a=bc(a,"%")>0?parseInt(a,10)*255/100:parseInt(a,10),s=s===void 0?1:parseFloat(s)/(bc(s,"%")?100:1),Po([n,i,a,s])}function OB(t){var e=MT.exec(t),r=nr(e,6),n=r[1],i=r[2],a=r[3],s=r[4],o=r[5];return i=i||"deg",n=(0,bB.default)(parseFloat(n),i,"deg"),a=parseFloat(a),s=parseFloat(s),o=o===void 0?1:parseFloat(o)/(bc(o,"%")?100:1),md([n,a,s,o])}function IT(t){return _T.default[t]?u0(_T.default[t]):AT.test(t)||kT.test(t)?RB(t):TT.test(t)||PT.test(t)||CT.test(t)||RT.test(t)?MB(t):MT.test(t)?OB(t):null}var IB={fromString:IT,fromRgb:u0,fromRgba:Po,fromHsl:OT,fromHsla:md};xi.default=IB});var f0=M((BX,DT)=>{"use strict";m();var $T=Object.prototype.toString;DT.exports=function(e){var r=$T.call(e),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&$T.call(e.callee)==="[object Function]"),n}});var VT=M((UX,zT)=>{"use strict";m();var GT;Object.keys||(_c=Object.prototype.hasOwnProperty,d0=Object.prototype.toString,LT=f0(),h0=Object.prototype.propertyIsEnumerable,jT=!h0.call({toString:null},"toString"),NT=h0.call(function(){},"prototype"),xc=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],gd=function(t){var e=t.constructor;return e&&e.prototype===t},BT={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},HT=function(){if(typeof window=="undefined")return!1;for(var t in window)try{if(!BT["$"+t]&&_c.call(window,t)&&window[t]!==null&&typeof window[t]=="object")try{gd(window[t])}catch(e){return!0}}catch(e){return!0}return!1}(),UT=function(t){if(typeof window=="undefined"||!HT)return gd(t);try{return gd(t)}catch(e){return!1}},GT=function(e){var r=e!==null&&typeof e=="object",n=d0.call(e)==="[object Function]",i=LT(e),a=r&&d0.call(e)==="[object String]",s=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var o=NT&&n;if(a&&e.length>0&&!_c.call(e,0))for(var l=0;l0)for(var c=0;c{"use strict";m();var FB=Array.prototype.slice,$B=f0(),qT=Object.keys,vd=qT?function(e){return qT(e)}:VT(),WT=Object.keys;vd.shim=function(){if(Object.keys){var e=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);e||(Object.keys=function(n){return $B(n)?WT(FB.call(n)):WT(n)})}else Object.keys=vd;return Object.keys||vd};YT.exports=vd});var fa=M((qX,JT)=>{"use strict";m();var DB=yd(),LB=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",jB=Object.prototype.toString,NB=Array.prototype.concat,XT=Qu(),BB=function(t){return typeof t=="function"&&jB.call(t)==="[object Function]"},KT=ef()(),HB=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!BB(n)||!n())return}KT?XT(t,e,r,!0):XT(t,e,r)},ZT=function(t,e){var r=arguments.length>2?arguments[2]:{},n=DB(e);LB&&(n=NB.call(n,Object.getOwnPropertySymbols(e)));for(var i=0;i{"use strict";m();var UB=yd(),eC=xl()(),tC=xt(),wd=Nu(),GB=tC("Array.prototype.push"),QT=tC("Object.prototype.propertyIsEnumerable"),zB=eC?wd.getOwnPropertySymbols:null;rC.exports=function(e,r){if(e==null)throw new TypeError("target must be an object");var n=wd(e);if(arguments.length===1)return n;for(var i=1;i{"use strict";m();var m0=p0(),VB=function(){if(!Object.assign)return!1;for(var t="abcdefghijklmnopqrst",e=t.split(""),r={},n=0;n{"use strict";m();var WB=fa(),YB=g0();iC.exports=function(){var e=YB();return WB(Object,{assign:e},{assign:function(){return Object.assign!==e}}),e}});var cC=M((eK,lC)=>{"use strict";m();var XB=fa(),KB=Fa(),ZB=p0(),sC=g0(),JB=aC(),QB=KB.apply(sC()),oC=function(e,r){return QB(Object,arguments)};XB(oC,{getPolyfill:sC,implementation:ZB,shim:JB});lC.exports=oC});var v0=M((rK,dC)=>{"use strict";m();var uC=Fn(),fC=Fa(),e7=fC(uC("String.prototype.indexOf"));dC.exports=function(e,r){var n=uC(e,!!r);return typeof n=="function"&&e7(e,".prototype.")>-1?fC(n):n}});var pC=M((iK,hC)=>{"use strict";m();var Ec=function(){return typeof function(){}.name=="string"},Sc=Object.getOwnPropertyDescriptor;if(Sc)try{Sc([],"length")}catch(t){Sc=null}Ec.functionsHaveConfigurableNames=function(){if(!Ec()||!Sc)return!1;var e=Sc(function(){},"name");return!!e&&!!e.configurable};var t7=Function.prototype.bind;Ec.boundFunctionsHaveNames=function(){return Ec()&&typeof t7=="function"&&function(){}.bind().name!==""};hC.exports=Ec});var vC=M((sK,gC)=>{"use strict";m();var mC=Qu(),r7=ef()(),n7=pC().functionsHaveConfigurableNames(),i7=ur();gC.exports=function(e,r){if(typeof e!="function")throw new i7("`fn` is not a function");var n=arguments.length>2&&!!arguments[2];return(!n||n7)&&(r7?mC(e,"name",r,!0,!0):mC(e,"name",r)),e}});var y0=M((lK,yC)=>{"use strict";m();var a7=vC(),s7=ur(),o7=Object;yC.exports=a7(function(){if(this==null||this!==o7(this))throw new s7("RegExp.prototype.flags getter called on non-object");var e="";return this.hasIndices&&(e+="d"),this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),this.dotAll&&(e+="s"),this.unicode&&(e+="u"),this.unicodeSets&&(e+="v"),this.sticky&&(e+="y"),e},"get flags",!0)});var w0=M((uK,wC)=>{"use strict";m();var l7=y0(),c7=fa().supportsDescriptors,u7=Object.getOwnPropertyDescriptor;wC.exports=function(){if(c7&&/a/mig.flags==="gim"){var e=u7(RegExp.prototype,"flags");if(e&&typeof e.get=="function"&&"dotAll"in RegExp.prototype&&"hasIndices"in RegExp.prototype){var r="",n={};if(Object.defineProperty(n,"hasIndices",{get:function(){r+="d"}}),Object.defineProperty(n,"sticky",{get:function(){r+="y"}}),e.get.call(n),r==="dy")return e.get}}return l7}});var xC=M((dK,_C)=>{"use strict";m();var f7=fa().supportsDescriptors,d7=w0(),h7=Gi(),p7=Object.defineProperty,m7=Fp(),bC=Wu(),g7=/a/;_C.exports=function(){if(!f7||!bC)throw new m7("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var e=d7(),r=bC(g7),n=h7(r,"flags");return(!n||n.get!==e)&&p7(r,"flags",{configurable:!0,enumerable:!1,get:e}),e}});var kC=M((pK,AC)=>{"use strict";m();var v7=fa(),y7=Fa(),w7=y0(),SC=w0(),b7=xC(),EC=y7(SC());v7(EC,{getPolyfill:SC,implementation:w7,shim:b7});AC.exports=EC});var _0=M((gK,CC)=>{"use strict";m();var _7=zi()(),x7=xt(),b0=x7("Object.prototype.toString"),bd=function(e){return _7&&e&&typeof e=="object"&&Symbol.toStringTag in e?!1:b0(e)==="[object Arguments]"},TC=function(e){return bd(e)?!0:e!==null&&typeof e=="object"&&"length"in e&&typeof e.length=="number"&&e.length>=0&&b0(e)!=="[object Array]"&&"callee"in e&&b0(e.callee)==="[object Function]"},S7=function(){return bd(arguments)}();bd.isLegacyArguments=TC;CC.exports=S7?bd:TC});var PC=M(()=>{m()});var Pc=M((_K,XC)=>{m();var M0=typeof Map=="function"&&Map.prototype,x0=Object.getOwnPropertyDescriptor&&M0?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,xd=M0&&x0&&typeof x0.get=="function"?x0.get:null,RC=M0&&Map.prototype.forEach,O0=typeof Set=="function"&&Set.prototype,S0=Object.getOwnPropertyDescriptor&&O0?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Sd=O0&&S0&&typeof S0.get=="function"?S0.get:null,MC=O0&&Set.prototype.forEach,E7=typeof WeakMap=="function"&&WeakMap.prototype,kc=E7?WeakMap.prototype.has:null,A7=typeof WeakSet=="function"&&WeakSet.prototype,Tc=A7?WeakSet.prototype.has:null,k7=typeof WeakRef=="function"&&WeakRef.prototype,OC=k7?WeakRef.prototype.deref:null,T7=Boolean.prototype.valueOf,C7=Object.prototype.toString,P7=Function.prototype.toString,R7=String.prototype.match,I0=String.prototype.slice,da=String.prototype.replace,M7=String.prototype.toUpperCase,IC=String.prototype.toLowerCase,UC=RegExp.prototype.test,FC=Array.prototype.concat,Wn=Array.prototype.join,O7=Array.prototype.slice,$C=Math.floor,k0=typeof BigInt=="function"?BigInt.prototype.valueOf:null,E0=Object.getOwnPropertySymbols,T0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Ro=typeof Symbol=="function"&&typeof Symbol.iterator=="object",Cc=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Ro||!0)?Symbol.toStringTag:null,GC=Object.prototype.propertyIsEnumerable,DC=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function LC(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||UC.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-$C(-t):$C(t);if(n!==t){var i=String(n),a=I0.call(e,i.length+1);return da.call(i,r,"$&_")+"."+da.call(da.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return da.call(e,r,"$&_")}var C0=PC(),jC=C0.custom,NC=qC(jC)?jC:null,zC={__proto__:null,double:'"',single:"'"},I7={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};XC.exports=function t(e,r,n,i){var a=r||{};if(Si(a,"quoteStyle")&&!Si(zC,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Si(a,"maxStringLength")&&(typeof a.maxStringLength=="number"?a.maxStringLength<0&&a.maxStringLength!==1/0:a.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var s=Si(a,"customInspect")?a.customInspect:!0;if(typeof s!="boolean"&&s!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Si(a,"indent")&&a.indent!==null&&a.indent!==" "&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Si(a,"numericSeparator")&&typeof a.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=a.numericSeparator;if(typeof e=="undefined")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return YC(e,a);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?LC(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?LC(e,c):c}var u=typeof a.depth=="undefined"?5:a.depth;if(typeof n=="undefined"&&(n=0),n>=u&&u>0&&typeof e=="object")return P0(e)?"[Array]":"[Object]";var f=Z7(a,n);if(typeof i=="undefined")i=[];else if(WC(i,e)>=0)return"[Circular]";function d(L,$,J){if($&&(i=O7.call(i),i.push($)),J){var de={depth:a.depth};return Si(a,"quoteStyle")&&(de.quoteStyle=a.quoteStyle),t(L,de,n+1,i)}return t(L,a,n+1,i)}if(typeof e=="function"&&!BC(e)){var h=U7(e),p=_d(e,d);return"[Function"+(h?": "+h:" (anonymous)")+"]"+(p.length>0?" { "+Wn.call(p,", ")+" }":"")}if(qC(e)){var g=Ro?da.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):T0.call(e);return typeof e=="object"&&!Ro?Ac(g):g}if(Y7(e)){for(var v="<"+IC.call(String(e.nodeName)),y=e.attributes||[],b=0;b",v}if(P0(e)){if(e.length===0)return"[]";var E=_d(e,d);return f&&!K7(E)?"["+R0(E,f)+"]":"[ "+Wn.call(E,", ")+" ]"}if(D7(e)){var S=_d(e,d);return!("cause"in Error.prototype)&&"cause"in e&&!GC.call(e,"cause")?"{ ["+String(e)+"] "+Wn.call(FC.call("[cause]: "+d(e.cause),S),", ")+" }":S.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Wn.call(S,", ")+" }"}if(typeof e=="object"&&s){if(NC&&typeof e[NC]=="function"&&C0)return C0(e,{depth:u-n});if(s!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(G7(e)){var A=[];return RC&&RC.call(e,function(L,$){A.push(d($,e,!0)+" => "+d(L,e))}),HC("Map",xd.call(e),A,f)}if(q7(e)){var k=[];return MC&&MC.call(e,function(L){k.push(d(L,e))}),HC("Set",Sd.call(e),k,f)}if(z7(e))return A0("WeakMap");if(W7(e))return A0("WeakSet");if(V7(e))return A0("WeakRef");if(j7(e))return Ac(d(Number(e)));if(B7(e))return Ac(d(k0.call(e)));if(N7(e))return Ac(T7.call(e));if(L7(e))return Ac(d(String(e)));if(typeof window!="undefined"&&e===window)return"{ [object Window] }";if(typeof globalThis!="undefined"&&e===globalThis||typeof global!="undefined"&&e===global)return"{ [object globalThis] }";if(!$7(e)&&!BC(e)){var w=_d(e,d),x=DC?DC(e)===Object.prototype:e instanceof Object||e.constructor===Object,_=e instanceof Object?"":"null prototype",T=!x&&Cc&&Object(e)===e&&Cc in e?I0.call(ha(e),8,-1):_?"Object":"",C=x||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",I=C+(T||_?"["+Wn.call(FC.call([],T||[],_||[]),": ")+"] ":"");return w.length===0?I+"{}":f?I+"{"+R0(w,f)+"}":I+"{ "+Wn.call(w,", ")+" }"}return String(e)};function VC(t,e,r){var n=r.quoteStyle||e,i=zC[n];return i+t+i}function F7(t){return da.call(String(t),/"/g,""")}function ts(t){return!Cc||!(typeof t=="object"&&(Cc in t||typeof t[Cc]!="undefined"))}function P0(t){return ha(t)==="[object Array]"&&ts(t)}function $7(t){return ha(t)==="[object Date]"&&ts(t)}function BC(t){return ha(t)==="[object RegExp]"&&ts(t)}function D7(t){return ha(t)==="[object Error]"&&ts(t)}function L7(t){return ha(t)==="[object String]"&&ts(t)}function j7(t){return ha(t)==="[object Number]"&&ts(t)}function N7(t){return ha(t)==="[object Boolean]"&&ts(t)}function qC(t){if(Ro)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!T0)return!1;try{return T0.call(t),!0}catch(e){}return!1}function B7(t){if(!t||typeof t!="object"||!k0)return!1;try{return k0.call(t),!0}catch(e){}return!1}var H7=Object.prototype.hasOwnProperty||function(t){return t in this};function Si(t,e){return H7.call(t,e)}function ha(t){return C7.call(t)}function U7(t){if(t.name)return t.name;var e=R7.call(P7.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function WC(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return YC(I0.call(t,0,e.maxStringLength),e)+n}var i=I7[e.quoteStyle||"single"];i.lastIndex=0;var a=da.call(da.call(t,i,"\\$1"),/[\x00-\x1f]/g,X7);return VC(a,"single",e)}function X7(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+M7.call(e.toString(16))}function Ac(t){return"Object("+t+")"}function A0(t){return t+" { ? }"}function HC(t,e,r,n){var i=n?R0(r,n):Wn.call(r,", ");return t+" ("+e+") {"+i+"}"}function K7(t){for(var e=0;e=0)return!1;return!0}function Z7(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=Wn.call(Array(t.indent+1)," ");else return null;return{base:r,prev:Wn.call(Array(e+1),r)}}function R0(t,e){if(t.length===0)return"";var r=` +`+e.prev+e.base;return r+Wn.call(t,","+r)+` +`+e.prev}function _d(t,e){var r=P0(t),n=[];if(r){n.length=t.length;for(var i=0;i{"use strict";m();var J7=Pc(),Q7=ur(),Ed=function(t,e,r){for(var n=t,i;(i=n.next)!=null;n=i)if(i.key===e)return n.next=i.next,r||(i.next=t.next,t.next=i),i},e9=function(t,e){if(t){var r=Ed(t,e);return r&&r.value}},t9=function(t,e,r){var n=Ed(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},r9=function(t,e){return t?!!Ed(t,e):!1},n9=function(t,e){if(t)return Ed(t,e,!0)};KC.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new Q7("Side channel does not contain "+J7(n))},delete:function(n){var i=e&&e.next,a=n9(e,n);return a&&i&&i===a&&(e=void 0),!!a},get:function(n){return e9(e,n)},has:function(n){return r9(e,n)},set:function(n,i){e||(e={next:void 0}),t9(e,n,i)}};return r}});var F0=M((AK,QC)=>{"use strict";m();var i9=Fn(),Rc=xt(),a9=Pc(),s9=ur(),JC=i9("%Map%",!0),o9=Rc("Map.prototype.get",!0),l9=Rc("Map.prototype.set",!0),c9=Rc("Map.prototype.has",!0),u9=Rc("Map.prototype.delete",!0),f9=Rc("Map.prototype.size",!0);QC.exports=!!JC&&function(){var e,r={assert:function(n){if(!r.has(n))throw new s9("Side channel does not contain "+a9(n))},delete:function(n){if(e){var i=u9(e,n);return f9(e)===0&&(e=void 0),i}return!1},get:function(n){if(e)return o9(e,n)},has:function(n){return e?c9(e,n):!1},set:function(n,i){e||(e=new JC),l9(e,n,i)}};return r}});var tP=M((TK,eP)=>{"use strict";m();var d9=Fn(),kd=xt(),h9=Pc(),Ad=F0(),p9=ur(),Mo=d9("%WeakMap%",!0),m9=kd("WeakMap.prototype.get",!0),g9=kd("WeakMap.prototype.set",!0),v9=kd("WeakMap.prototype.has",!0),y9=kd("WeakMap.prototype.delete",!0);eP.exports=Mo?function(){var e,r,n={assert:function(i){if(!n.has(i))throw new p9("Side channel does not contain "+h9(i))},delete:function(i){if(Mo&&i&&(typeof i=="object"||typeof i=="function")){if(e)return y9(e,i)}else if(Ad&&r)return r.delete(i);return!1},get:function(i){return Mo&&i&&(typeof i=="object"||typeof i=="function")&&e?m9(e,i):r&&r.get(i)},has:function(i){return Mo&&i&&(typeof i=="object"||typeof i=="function")&&e?v9(e,i):!!r&&r.has(i)},set:function(i,a){Mo&&i&&(typeof i=="object"||typeof i=="function")?(e||(e=new Mo),g9(e,i,a)):Ad&&(r||(r=Ad()),r.set(i,a))}};return n}:Ad});var $0=M((PK,rP)=>{"use strict";m();var w9=ur(),b9=Pc(),_9=ZC(),x9=F0(),S9=tP(),E9=S9||x9||_9;rP.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new w9("Side channel does not contain "+b9(n))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,i){e||(e=E9()),e.set(n,i)}};return r}});var iP=M((MK,nP)=>{"use strict";m();var A9=Yu(),Mc=$0()(),Ei=ur(),D0={assert:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");if(Mc.assert(t),!D0.has(t,e))throw new Ei("`"+e+"` is not present on `O`")},get:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var r=Mc.get(t);return r&&r["$"+e]},has:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var r=Mc.get(t);return!!r&&A9(r,"$"+e)},set:function(t,e,r){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var n=Mc.get(t);n||(n={},Mc.set(t,n)),n["$"+e]=r}};Object.freeze&&Object.freeze(D0);nP.exports=D0});var oP=M((IK,sP)=>{"use strict";m();var Oc=iP(),k9=Bu(),aP=typeof StopIteration=="object"?StopIteration:null;sP.exports=function(e){if(!aP)throw new k9("this environment lacks StopIteration");Oc.set(e,"[[Done]]",!1);var r={next:function(){var i=Oc.get(this,"[[Iterator]]"),a=!!Oc.get(i,"[[Done]]");try{return{done:a,value:a?void 0:i.next()}}catch(s){if(Oc.set(i,"[[Done]]",!0),s!==aP)throw s;return{done:!0,value:void 0}}}};return Oc.set(r,"[[Iterator]]",e),r}});var L0=M(($K,cP)=>{"use strict";m();var lP=xt(),T9=lP("String.prototype.valueOf"),C9=function(e){try{return T9(e),!0}catch(r){return!1}},P9=lP("Object.prototype.toString"),R9="[object String]",M9=zi()();cP.exports=function(e){return typeof e=="string"?!0:!e||typeof e!="object"?!1:M9?C9(e):P9(e)===R9}});var N0=M((LK,dP)=>{"use strict";m();var j0=typeof Map=="function"&&Map.prototype?Map:null,O9=typeof Set=="function"&&Set.prototype?Set:null,Td;j0||(Td=function(e){return!1});var fP=j0?Map.prototype.has:null,uP=O9?Set.prototype.has:null;!Td&&!fP&&(Td=function(e){return!1});dP.exports=Td||function(e){if(!e||typeof e!="object")return!1;try{if(fP.call(e),uP)try{uP.call(e)}catch(r){return!0}return e instanceof j0}catch(r){}return!1}});var H0=M((NK,mP)=>{"use strict";m();var I9=typeof Map=="function"&&Map.prototype?Map:null,B0=typeof Set=="function"&&Set.prototype?Set:null,Cd;B0||(Cd=function(e){return!1});var hP=I9?Map.prototype.has:null,pP=B0?Set.prototype.has:null;!Cd&&!pP&&(Cd=function(e){return!1});mP.exports=Cd||function(e){if(!e||typeof e!="object")return!1;try{if(pP.call(e),hP)try{hP.call(e)}catch(r){return!0}return e instanceof B0}catch(r){}return!1}});var TP=M((HK,Md)=>{"use strict";m();var gP=_0(),vP=oP();Gu()()||xl()()?(Pd=Symbol.iterator,Md.exports=function(e){if(e!=null&&typeof e[Pd]!="undefined")return e[Pd]();if(gP(e))return Array.prototype[Pd].call(e)}):(yP=ju(),wP=L0(),U0=Fn(),bP=U0("%Map%",!0),_P=U0("%Set%",!0),Jr=v0(),G0=Jr("Array.prototype.push"),z0=Jr("String.prototype.charCodeAt"),xP=Jr("String.prototype.slice"),SP=function(e,r){var n=e.length;if(r+1>=n)return r+1;var i=z0(e,r);if(i<55296||i>56319)return r+1;var a=z0(e,r+1);return a<56320||a>57343?r+1:r+2},Rd=function(e){var r=0;return{next:function(){var i=r>=e.length,a;return i||(a=e[r],r+=1),{done:i,value:a}}}},V0=function(e,r){if(yP(e)||gP(e))return Rd(e);if(wP(e)){var n=0;return{next:function(){var a=SP(e,n),s=xP(e,n,a);return n=a,{done:a>e.length,value:s}}}}if(r&&typeof e["_es6-shim iterator_"]!="undefined")return e["_es6-shim iterator_"]()},!bP&&!_P?Md.exports=function(e){if(e!=null)return V0(e,!0)}:(EP=N0(),AP=H0(),q0=Jr("Map.prototype.forEach",!0),W0=Jr("Set.prototype.forEach",!0),(typeof process=="undefined"||!process.versions||!process.versions.node)&&(Y0=Jr("Map.prototype.iterator",!0),X0=Jr("Set.prototype.iterator",!0)),K0=Jr("Map.prototype.@@iterator",!0)||Jr("Map.prototype._es6-shim iterator_",!0),Z0=Jr("Set.prototype.@@iterator",!0)||Jr("Set.prototype._es6-shim iterator_",!0),kP=function(e){if(EP(e)){if(Y0)return vP(Y0(e));if(K0)return K0(e);if(q0){var r=[];return q0(e,function(i,a){G0(r,[a,i])}),Rd(r)}}if(AP(e)){if(X0)return vP(X0(e));if(Z0)return Z0(e);if(W0){var n=[];return W0(e,function(i){G0(n,i)}),Rd(n)}}},Md.exports=function(e){return kP(e)||V0(e)}));var Pd,yP,wP,U0,bP,_P,Jr,G0,z0,xP,SP,Rd,V0,EP,AP,q0,W0,Y0,X0,K0,Z0,kP});var J0=M((GK,PP)=>{"use strict";m();var CP=function(t){return t!==t};PP.exports=function(e,r){return e===0&&r===0?1/e===1/r:!!(e===r||CP(e)&&CP(r))}});var Q0=M((VK,RP)=>{"use strict";m();var F9=J0();RP.exports=function(){return typeof Object.is=="function"?Object.is:F9}});var OP=M((WK,MP)=>{"use strict";m();var $9=Q0(),D9=fa();MP.exports=function(){var e=$9();return D9(Object,{is:e},{is:function(){return Object.is!==e}}),e}});var DP=M((XK,$P)=>{"use strict";m();var L9=fa(),j9=Fa(),N9=J0(),IP=Q0(),B9=OP(),FP=j9(IP(),Object);L9(FP,{getPolyfill:IP,implementation:N9,shim:B9});$P.exports=FP});var tv=M((ZK,BP)=>{"use strict";m();var H9=Fa(),NP=xt(),U9=Fn(),ev=U9("%ArrayBuffer%",!0),Od=NP("ArrayBuffer.prototype.byteLength",!0),G9=NP("Object.prototype.toString"),LP=!!ev&&!Od&&new ev(0).slice,jP=!!LP&&H9(LP);BP.exports=Od||jP?function(e){if(!e||typeof e!="object")return!1;try{return Od?Od(e):jP(e,0),!0}catch(r){return!1}}:ev?function(e){return G9(e)==="[object ArrayBuffer]"}:function(e){return!1}});var GP=M((QK,UP)=>{"use strict";m();var HP=xt(),z9=HP("Date.prototype.getDay"),V9=function(e){try{return z9(e),!0}catch(r){return!1}},q9=HP("Object.prototype.toString"),W9="[object Date]",Y9=zi()();UP.exports=function(e){return typeof e!="object"||e===null?!1:Y9?V9(e):q9(e)===W9}});var av=M((tZ,YP)=>{"use strict";m();var zP=xt(),X9=zi()(),K9=Yu(),Z9=Gi(),iv;X9?(VP=zP("RegExp.prototype.exec"),rv={},Id=function(){throw rv},nv={toString:Id,valueOf:Id},typeof Symbol.toPrimitive=="symbol"&&(nv[Symbol.toPrimitive]=Id),iv=function(e){if(!e||typeof e!="object")return!1;var r=Z9(e,"lastIndex"),n=r&&K9(r,"value");if(!n)return!1;try{VP(e,nv)}catch(i){return i===rv}}):(qP=zP("Object.prototype.toString"),WP="[object RegExp]",iv=function(e){return!e||typeof e!="object"&&typeof e!="function"?!1:qP(e)===WP});var VP,rv,Id,nv,qP,WP;YP.exports=iv});var ZP=M((nZ,KP)=>{"use strict";m();var J9=xt(),XP=J9("SharedArrayBuffer.prototype.byteLength",!0);KP.exports=XP?function(e){if(!e||typeof e!="object")return!1;try{return XP(e),!0}catch(r){return!1}}:function(e){return!1}});var eR=M((aZ,QP)=>{"use strict";m();var JP=xt(),Q9=JP("Number.prototype.toString"),eH=function(e){try{return Q9(e),!0}catch(r){return!1}},tH=JP("Object.prototype.toString"),rH="[object Number]",nH=zi()();QP.exports=function(e){return typeof e=="number"?!0:!e||typeof e!="object"?!1:nH?eH(e):tH(e)===rH}});var nR=M((oZ,rR)=>{"use strict";m();var tR=xt(),iH=tR("Boolean.prototype.toString"),aH=tR("Object.prototype.toString"),sH=function(e){try{return iH(e),!0}catch(r){return!1}},oH="[object Boolean]",lH=zi()();rR.exports=function(e){return typeof e=="boolean"?!0:e===null||typeof e!="object"?!1:lH?sH(e):aH(e)===oH}});var aR=M((cZ,iR)=>{"use strict";m();var cH=xt(),uH=av(),fH=cH("RegExp.prototype.exec"),dH=ur();iR.exports=function(e){if(!uH(e))throw new dH("`regex` must be a RegExp");return function(n){return fH(e,n)!==null}}});var uR=M((fZ,sv)=>{"use strict";m();var cR=xt(),hH=cR("Object.prototype.toString"),pH=Gu()(),mH=aR();pH?(sR=cR("Symbol.prototype.toString"),oR=mH(/^Symbol\(.*\)$/),lR=function(e){return typeof e.valueOf()!="symbol"?!1:oR(sR(e))},sv.exports=function(e){if(typeof e=="symbol")return!0;if(!e||typeof e!="object"||hH(e)!=="[object Symbol]")return!1;try{return lR(e)}catch(r){return!1}}):sv.exports=function(e){return!1};var sR,oR,lR});var hR=M((hZ,dR)=>{"use strict";m();var fR=typeof BigInt!="undefined"&&BigInt;dR.exports=function(){return typeof fR=="function"&&typeof BigInt=="function"&&typeof fR(42)=="bigint"&&typeof BigInt(42)=="bigint"}});var gR=M((mZ,ov)=>{"use strict";m();var gH=hR()();gH?(pR=BigInt.prototype.valueOf,mR=function(e){try{return pR.call(e),!0}catch(r){}return!1},ov.exports=function(e){return e===null||typeof e=="undefined"||typeof e=="boolean"||typeof e=="string"||typeof e=="number"||typeof e=="symbol"||typeof e=="function"?!1:typeof e=="bigint"?!0:mR(e)}):ov.exports=function(e){return!1};var pR,mR});var yR=M((vZ,vR)=>{"use strict";m();var vH=L0(),yH=eR(),wH=nR(),bH=uR(),_H=gR();vR.exports=function(e){if(e==null||typeof e!="object"&&typeof e!="function")return null;if(vH(e))return"String";if(yH(e))return"Number";if(wH(e))return"Boolean";if(bH(e))return"Symbol";if(_H(e))return"BigInt"}});var _R=M((wZ,bR)=>{"use strict";m();var Fd=typeof WeakMap=="function"&&WeakMap.prototype?WeakMap:null,wR=typeof WeakSet=="function"&&WeakSet.prototype?WeakSet:null,$d;Fd||($d=function(e){return!1});var cv=Fd?Fd.prototype.has:null,lv=wR?wR.prototype.has:null;!$d&&!cv&&($d=function(e){return!1});bR.exports=$d||function(e){if(!e||typeof e!="object")return!1;try{if(cv.call(e,cv),lv)try{lv.call(e,lv)}catch(r){return!0}return e instanceof Fd}catch(r){}return!1}});var SR=M((_Z,fv)=>{"use strict";m();var xH=Fn(),xR=xt(),SH=xH("%WeakSet%",!0),uv=xR("WeakSet.prototype.has",!0);uv?(Dd=xR("WeakMap.prototype.has",!0),fv.exports=function(e){if(!e||typeof e!="object")return!1;try{if(uv(e,uv),Dd)try{Dd(e,Dd)}catch(r){return!0}return e instanceof SH}catch(r){}return!1}):fv.exports=function(e){return!1};var Dd});var AR=M((SZ,ER)=>{"use strict";m();var EH=N0(),AH=H0(),kH=_R(),TH=SR();ER.exports=function(e){if(e&&typeof e=="object"){if(EH(e))return"Map";if(AH(e))return"Set";if(kH(e))return"WeakMap";if(TH(e))return"WeakSet"}return!1}});var CR=M((AZ,TR)=>{"use strict";m();var CH=xt(),kR=CH("ArrayBuffer.prototype.byteLength",!0),PH=tv();TR.exports=function(e){return PH(e)?kR?kR(e):e.byteLength:NaN}});var QR=M((TZ,JR)=>{"use strict";m();var XR=cC(),Yn=v0(),PR=kC(),RH=Fn(),Oo=TP(),MH=$0(),RR=DP(),MR=_0(),OR=ju(),IR=tv(),FR=GP(),$R=av(),DR=ZP(),LR=yd(),jR=yR(),NR=AR(),BR=Kp(),HR=CR(),UR=Yn("SharedArrayBuffer.prototype.byteLength",!0),GR=Yn("Date.prototype.getTime"),dv=Object.getPrototypeOf,zR=Yn("Object.prototype.toString"),jd=RH("%Set%",!0),hv=Yn("Map.prototype.has",!0),Nd=Yn("Map.prototype.get",!0),VR=Yn("Map.prototype.size",!0),Bd=Yn("Set.prototype.add",!0),KR=Yn("Set.prototype.delete",!0),Hd=Yn("Set.prototype.has",!0),Ld=Yn("Set.prototype.size",!0);function qR(t,e,r,n){for(var i=Oo(t),a;(a=i.next())&&!a.done;)if(gn(e,a.value,r,n))return KR(t,a.value),!0;return!1}function ZR(t){if(typeof t=="undefined")return null;if(typeof t!="object")return typeof t=="symbol"?!1:typeof t=="string"||typeof t=="number"?+t==+t:!0}function OH(t,e,r,n,i,a){var s=ZR(r);if(s!=null)return s;var o=Nd(e,s),l=XR({},i,{strict:!1});return typeof o=="undefined"&&!hv(e,s)||!gn(n,o,l,a)?!1:!hv(t,s)&&gn(n,o,l,a)}function IH(t,e,r){var n=ZR(r);return n!=null?n:Hd(e,n)&&!Hd(t,n)}function WR(t,e,r,n,i,a){for(var s=Oo(t),o,l;(o=s.next())&&!o.done;)if(l=o.value,gn(r,l,i,a)&&gn(n,Nd(e,l),i,a))return KR(t,l),!0;return!1}function gn(t,e,r,n){var i=r||{};if(i.strict?RR(t,e):t===e)return!0;var a=jR(t),s=jR(e);if(a!==s)return!1;if(!t||!e||typeof t!="object"&&typeof e!="object")return i.strict?RR(t,e):t==e;var o=n.has(t),l=n.has(e),c;if(o&&l){if(n.get(t)===n.get(e))return!0}else c={};return o||n.set(t,c),l||n.set(e,c),DH(t,e,i,n)}function YR(t){return!t||typeof t!="object"||typeof t.length!="number"||typeof t.copy!="function"||typeof t.slice!="function"||t.length>0&&typeof t[0]!="number"?!1:!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))}function FH(t,e,r,n){if(Ld(t)!==Ld(e))return!1;for(var i=Oo(t),a=Oo(e),s,o,l;(s=i.next())&&!s.done;)if(s.value&&typeof s.value=="object")l||(l=new jd),Bd(l,s.value);else if(!Hd(e,s.value)){if(r.strict||!IH(t,e,s.value))return!1;l||(l=new jd),Bd(l,s.value)}if(l){for(;(o=a.next())&&!o.done;)if(o.value&&typeof o.value=="object"){if(!qR(l,o.value,r.strict,n))return!1}else if(!r.strict&&!Hd(t,o.value)&&!qR(l,o.value,r.strict,n))return!1;return Ld(l)===0}return!0}function $H(t,e,r,n){if(VR(t)!==VR(e))return!1;for(var i=Oo(t),a=Oo(e),s,o,l,c,u,f;(s=i.next())&&!s.done;)if(c=s.value[0],u=s.value[1],c&&typeof c=="object")l||(l=new jd),Bd(l,c);else if(f=Nd(e,c),typeof f=="undefined"&&!hv(e,c)||!gn(u,f,r,n)){if(r.strict||!OH(t,e,c,u,r,n))return!1;l||(l=new jd),Bd(l,c)}if(l){for(;(o=a.next())&&!o.done;)if(c=o.value[0],f=o.value[1],c&&typeof c=="object"){if(!WR(l,t,c,f,r,n))return!1}else if(!r.strict&&(!t.has(c)||!gn(Nd(t,c),f,r,n))&&!WR(l,t,c,f,XR({},r,{strict:!1}),n))return!1;return Ld(l)===0}return!0}function DH(t,e,r,n){var i,a;if(typeof t!=typeof e||t==null||e==null||zR(t)!==zR(e)||MR(t)!==MR(e))return!1;var s=OR(t),o=OR(e);if(s!==o)return!1;var l=t instanceof Error,c=e instanceof Error;if(l!==c||(l||c)&&(t.name!==e.name||t.message!==e.message))return!1;var u=$R(t),f=$R(e);if(u!==f||(u||f)&&(t.source!==e.source||PR(t)!==PR(e)))return!1;var d=FR(t),h=FR(e);if(d!==h||(d||h)&&GR(t)!==GR(e)||r.strict&&dv&&dv(t)!==dv(e))return!1;var p=BR(t),g=BR(e);if(p!==g)return!1;if(p||g){if(t.length!==e.length)return!1;for(i=0;i=0;i--)if(k[i]!=w[i])return!1;for(i=k.length-1;i>=0;i--)if(a=k[i],!gn(t[a],e[a],r,n))return!1;var x=NR(t),_=NR(e);return x!==_?!1:x==="Set"||_==="Set"?FH(t,e,r,n):x==="Map"?$H(t,e,r,n):!0}JR.exports=function(e,r,n){return gn(e,r,n,MH())}});var _v=M((exports,module)=>{m();(function(){"use strict";var ERROR="input is invalid type",WINDOW=typeof window=="object",root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&typeof self=="object",NODE_JS=!root.JS_SHA256_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&typeof module=="object"&&module.exports,AMD=typeof define=="function"&&define.amd,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];(root.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(t){return Object.prototype.toString.call(t)==="[object Array]"}),ARRAY_BUFFER&&(root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(t){return typeof t=="object"&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t,e){return function(r){return new Sha256(e,!0).update(r)[t]()}},createMethod=function(t){var e=createOutputMethod("hex",t);NODE_JS&&(e=nodeWrap(e,t)),e.create=function(){return new Sha256(t)},e.update=function(i){return e.create().update(i)};for(var r=0;r>2]|=t[i]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|n&63)<=57344?(o[a>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|n&63)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|n&63)<=64?(this.block=o[16],this.start=a-64,this.hash(),this.hashed=!0):this.start=a}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[e&3],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=this.blocks,c,u,f,d,h,p,g,v,y,b,E;for(c=16;c<64;++c)h=l[c-15],u=(h>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,h=l[c-2],f=(h>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,l[c]=l[c-16]+u+l[c-7]+f<<0;for(E=e&r,c=0;c<64;c+=4)this.first?(this.is224?(v=300032,h=l[0]-1413257819,o=h-150054599<<0,n=h+24177077<<0):(v=704751109,h=l[0]-210244248,o=h-1521486534<<0,n=h+143694565<<0),this.first=!1):(u=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),f=(i>>>6|i<<26)^(i>>>11|i<<21)^(i>>>25|i<<7),v=t&e,d=v^t&r^E,g=i&a^~i&s,h=o+f+g+K[c]+l[c],p=u+d,o=n+h<<0,n=h+p<<0),u=(n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10),f=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),y=n&t,d=y^n&e^v,g=o&i^~o&a,h=s+f+g+K[c+1]+l[c+1],p=u+d,s=r+h<<0,r=h+p<<0,u=(r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10),f=(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7),b=r&n,d=b^r&t^y,g=s&o^~s&i,h=a+f+g+K[c+2]+l[c+2],p=u+d,a=e+h<<0,e=h+p<<0,u=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),f=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),E=e&r,d=E^e&n^b,g=a&s^~a&o,h=i+f+g+K[c+3]+l[c+3],p=u+d,i=t+h<<0,t=h+p<<0;this.h0=this.h0+t<<0,this.h1=this.h1+e<<0,this.h2=this.h2+r<<0,this.h3=this.h3+n<<0,this.h4=this.h4+i<<0,this.h5=this.h5+a<<0,this.h6=this.h6+s<<0,this.h7=this.h7+o<<0},Sha256.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[t&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[e&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[r&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[n&15]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[i&15]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[a&15]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[s&15];return this.is224||(l+=HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[o&15]),l},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,r>>24&255,r>>16&255,r>>8&255,r&255,n>>24&255,n>>16&255,n>>8&255,n&255,i>>24&255,i>>16&255,i>>8&255,i&255,a>>24&255,a>>16&255,a>>8&255,a&255,s>>24&255,s>>16&255,s>>8&255,s&255];return this.is224||l.push(o>>24&255,o>>16&255,o>>8&255,o&255),l},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),e.setUint32(20,this.h5),e.setUint32(24,this.h6),this.is224||e.setUint32(28,this.h7),t};function HmacSha256(t,e,r){var n,i=typeof t;if(i==="string"){var a=[],s=t.length,o=0,l;for(n=0;n>6,a[o++]=128|l&63):l<55296||l>=57344?(a[o++]=224|l>>12,a[o++]=128|l>>6&63,a[o++]=128|l&63):(l=65536+((l&1023)<<10|t.charCodeAt(++n)&1023),a[o++]=240|l>>18,a[o++]=128|l>>12&63,a[o++]=128|l>>6&63,a[o++]=128|l&63);t=a}else if(i==="object"){if(t===null)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(t)))throw new Error(ERROR)}else throw new Error(ERROR);t.length>64&&(t=new Sha256(e,!0).update(t).array());var c=[],u=[];for(n=0;n<64;++n){var f=t[n]||0;c[n]=92^f,u[n]=54^f}Sha256.call(this,e,r),this.update(u),this.oKeyPad=c,this.inner=!0,this.sharedMemory=r}HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&define(function(){return exports}))})()});var bM=M(Wv=>{m();(function(t){var e=/\S/,r=/\"/g,n=/\n/g,i=/\r/g,a=/\\/g,s=/\u2028/,o=/\u2029/;t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(x,_){var T=x.length,C=0,I=1,L=2,$=C,J=null,de=null,le="",ce=[],Te=!1,ne=0,N=0,W="{{",B="}}";function $e(){le.length>0&&(ce.push({tag:"_t",text:new String(le)}),le="")}function lr(){for(var Oe=!0,De=N;De"&&(Le.indent=ce[Pt].text.toString()),ce.splice(Pt,1));else De||ce.push({tag:` +`});Te=!1,N=ce.length}function X(Oe,De){var Pt="="+B,Le=Oe.indexOf(Pt,De),U=c(Oe.substring(Oe.indexOf("=",De)+1,Le)).split(" ");return W=U[0],B=U[U.length-1],Le+Pt.length-1}for(_&&(_=_.split(" "),W=_[0],B=_[1]),ne=0;ne0;){if($=w.shift(),L&&L.tag=="<"&&!($.tag in f))throw new Error("Illegal content in < super tag.");if(t.tags[$.tag]<=t.tags.$||h($,T))_.push($),$.nodes=d(w,$.tag,_,T);else if($.tag=="/"){if(_.length===0)throw new Error("Closing tag without opener: /"+$.n);if(I=_.pop(),$.n!=I.n&&!p($.n,I.n,T))throw new Error("Nesting error: "+I.n+" vs. "+$.n);return I.end=$.i,C}else $.tag==` +`&&($.last=w.length==0||w[0].tag==` +`);C.push($)}if(_.length>0)throw new Error("missing closing tag: "+_.pop().n);return C}function h(w,x){for(var _=0,T=x.length;_":S,"<":function(w,x){var _={partials:{},code:"",subs:{},inPartial:!0};t.walk(w.nodes,_);var T=x.partials[S(w,x)];T.subs=_.subs,T.partials=_.partials},$:function(w,x){var _={subs:{},code:"",partials:x.partials,prefix:w.n};t.walk(w.nodes,_),x.subs[w.n]=_.code,x.inPartial||(x.code+='t.sub("'+b(w.n)+'",c,p,i);')},"\n":function(w,x){x.code+=k('"\\n"'+(w.last?"":" + i"))},_v:function(w,x){x.code+="t.b(t.v(t."+E(w.n)+'("'+b(w.n)+'",c,p,0)));'},_t:function(w,x){x.code+=k('"'+b(w.text)+'"')},"{":A,"&":A};function A(w,x){x.code+="t.b(t.t(t."+E(w.n)+'("'+b(w.n)+'",c,p,0)));'}function k(w){return"t.b("+w+");"}t.walk=function(w,x){for(var _,T=0,C=w.length;T{m();var BU={};(function(t){t.Template=function(d,h,p,g){d=d||{},this.r=d.code||this.r,this.c=p,this.options=g||{},this.text=h||"",this.partials=d.partials||{},this.subs=d.subs||{},this.buf=""},t.Template.prototype={r:function(d,h,p){return""},v:u,t:c,render:function(h,p,g){return this.ri([h],p||{},g)},ri:function(d,h,p){return this.r(d,h,p)},ep:function(d,h){var p=this.partials[d],g=h[p.name];if(p.instance&&p.base==g)return p.instance;if(typeof g=="string"){if(!this.c)throw new Error("No compiler available.");g=this.c.compile(g,this.options)}if(!g)return null;if(this.partials[d].base=g,p.subs){h.stackText||(h.stackText={});for(key in p.subs)h.stackText[key]||(h.stackText[key]=this.activeSub!==void 0&&h.stackText[this.activeSub]?h.stackText[this.activeSub]:this.text);g=r(g,p.subs,p.partials,this.stackSubs,this.stackPartials,h.stackText)}return this.partials[d].instance=g,g},rp:function(d,h,p,g){var v=this.ep(d,p);return v?v.ri(h,p,g):""},rs:function(d,h,p){var g=d[d.length-1];if(!f(g)){p(d,h,this);return}for(var v=0;v=0;S--)if(y=h[S],v=e(d,y,E),v!==void 0){b=!0;break}return b?(!g&&typeof v=="function"&&(v=this.mv(v,h,p)),v):g?!1:""},ls:function(d,h,p,g,v){var y=this.options.delimiters;return this.options.delimiters=v,this.b(this.ct(c(d.call(h,g)),h,p)),this.options.delimiters=y,!1},ct:function(d,h,p){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(d,this.options).render(h,p)},b:function(d){this.buf+=d},fl:function(){var d=this.buf;return this.buf="",d},ms:function(d,h,p,g,v,y,b){var E,S=h[h.length-1],A=d.call(S);return typeof A=="function"?g?!0:(E=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(A,S,p,E.substring(v,y),b)):A},mv:function(d,h,p){var g=h[h.length-1],v=d.call(g);return typeof v=="function"?this.ct(c(v.call(g)),g,p):v},sub:function(d,h,p,g){var v=this.subs[d];v&&(this.activeSub=d,v(h,p,this,g),this.activeSub=!1)}};function e(d,h,p){var g;return h&&typeof h=="object"&&(h[d]!==void 0?g=h[d]:p&&h.get&&typeof h.get=="function"&&(g=h.get(d))),g}function r(d,h,p,g,v,y){function b(){}b.prototype=d;function E(){}E.prototype=d.subs;var S,A=new b;A.subs=new E,A.subsText={},A.buf="",g=g||{},A.stackSubs=g,A.subsText=y;for(S in h)g[S]||(g[S]=h[S]);for(S in g)A.subs[S]=g[S];v=v||{},A.stackPartials=v;for(S in p)v[S]||(v[S]=p[S]);for(S in v)A.partials[S]=v[S];return A}var n=/&/g,i=//g,s=/\'/g,o=/\"/g,l=/[&<>\"\']/;function c(d){return String(d==null?"":d)}function u(d){return d=c(d),l.test(d)?d.replace(n,"&").replace(i,"<").replace(a,">").replace(s,"'").replace(o,"""):d}var f=Array.isArray||function(d){return Object.prototype.toString.call(d)==="[object Array]"}})(typeof Yv!="undefined"?Yv:BU)});var Xv=M(($ee,xM)=>{m();var _h=bM();_h.Template=_M().Template;_h.template=_h.Template;xM.exports=_h});var R5=M((Eu,uy)=>{m();(function(e,r){typeof Eu=="object"&&typeof uy=="object"?uy.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Eu=="object"?Eu.feather=r():e.feather=r()})(typeof self!="undefined"?self:Eu,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.r=function(n){Object.defineProperty(n,"__esModule",{value:!0})},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=0)}({"./dist/icons.json":function(t){t.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',table:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},"./node_modules/classnames/dedupe.js":function(t,e,r){var n,i;(function(){"use strict";var a=function(){function s(){}s.prototype=Object.create(null);function o(g,v){for(var y=v.length,b=0;b1?arguments[1]:void 0,v=g!==void 0,y=0,b=c(d),E,S,A,k;if(v&&(g=n(g,p>2?arguments[2]:void 0,2)),b!=null&&!(h==Array&&s(b)))for(k=b.call(d),S=new h;!(A=k.next()).done;y++)l(S,y,v?a(k,g,[A.value,y],!0):A.value);else for(E=o(d.length),S=new h(E);E>y;y++)l(S,y,v?g(d[y],y):d[y]);return S.length=y,S}},"./node_modules/core-js/internals/array-includes.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-indexed-object.js"),i=r("./node_modules/core-js/internals/to-length.js"),a=r("./node_modules/core-js/internals/to-absolute-index.js");t.exports=function(s){return function(o,l,c){var u=n(o),f=i(u.length),d=a(c,f),h;if(s&&l!=l){for(;f>d;)if(h=u[d++],h!=h)return!0}else for(;f>d;d++)if((s||d in u)&&u[d]===l)return s||d||0;return!s&&-1}}},"./node_modules/core-js/internals/bind-context.js":function(t,e,r){var n=r("./node_modules/core-js/internals/a-function.js");t.exports=function(i,a,s){if(n(i),a===void 0)return i;switch(s){case 0:return function(){return i.call(a)};case 1:return function(o){return i.call(a,o)};case 2:return function(o,l){return i.call(a,o,l)};case 3:return function(o,l,c){return i.call(a,o,l,c)}}return function(){return i.apply(a,arguments)}}},"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":function(t,e,r){var n=r("./node_modules/core-js/internals/an-object.js");t.exports=function(i,a,s,o){try{return o?a(n(s)[0],s[1]):a(s)}catch(c){var l=i.return;throw l!==void 0&&n(l.call(i)),c}}},"./node_modules/core-js/internals/check-correctness-of-iteration.js":function(t,e,r){var n=r("./node_modules/core-js/internals/well-known-symbol.js"),i=n("iterator"),a=!1;try{var s=0,o={next:function(){return{done:!!s++}},return:function(){a=!0}};o[i]=function(){return this},Array.from(o,function(){throw 2})}catch(l){}t.exports=function(l,c){if(!c&&!a)return!1;var u=!1;try{var f={};f[i]=function(){return{next:function(){return{done:u=!0}}}},l(f)}catch(d){}return u}},"./node_modules/core-js/internals/classof-raw.js":function(t,e){var r={}.toString;t.exports=function(n){return r.call(n).slice(8,-1)}},"./node_modules/core-js/internals/classof.js":function(t,e,r){var n=r("./node_modules/core-js/internals/classof-raw.js"),i=r("./node_modules/core-js/internals/well-known-symbol.js"),a=i("toStringTag"),s=n(function(){return arguments}())=="Arguments",o=function(l,c){try{return l[c]}catch(u){}};t.exports=function(l){var c,u,f;return l===void 0?"Undefined":l===null?"Null":typeof(u=o(c=Object(l),a))=="string"?u:s?n(c):(f=n(c))=="Object"&&typeof c.callee=="function"?"Arguments":f}},"./node_modules/core-js/internals/copy-constructor-properties.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/own-keys.js"),a=r("./node_modules/core-js/internals/object-get-own-property-descriptor.js"),s=r("./node_modules/core-js/internals/object-define-property.js");t.exports=function(o,l){for(var c=i(l),u=s.f,f=a.f,d=0;d",E="java"+y+":",S;for(p.style.display="none",o.appendChild(p),p.src=String(E),S=p.contentWindow.document,S.open(),S.write(v+y+b+"document.F=Object"+v+"/"+y+b),S.close(),h=S.F;g--;)delete h[f][a[g]];return h()};t.exports=Object.create||function(g,v){var y;return g!==null?(d[f]=n(g),y=new d,d[f]=null,y[u]=g):y=h(),v===void 0?y:i(y,v)},s[u]=!0},"./node_modules/core-js/internals/object-define-properties.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/object-define-property.js"),a=r("./node_modules/core-js/internals/an-object.js"),s=r("./node_modules/core-js/internals/object-keys.js");t.exports=n?Object.defineProperties:function(l,c){a(l);for(var u=s(c),f=u.length,d=0,h;f>d;)i.f(l,h=u[d++],c[h]);return l}},"./node_modules/core-js/internals/object-define-property.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/ie8-dom-define.js"),a=r("./node_modules/core-js/internals/an-object.js"),s=r("./node_modules/core-js/internals/to-primitive.js"),o=Object.defineProperty;e.f=n?o:function(c,u,f){if(a(c),u=s(u,!0),a(f),i)try{return o(c,u,f)}catch(d){}if("get"in f||"set"in f)throw TypeError("Accessors not supported");return"value"in f&&(c[u]=f.value),c}},"./node_modules/core-js/internals/object-get-own-property-descriptor.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/object-property-is-enumerable.js"),a=r("./node_modules/core-js/internals/create-property-descriptor.js"),s=r("./node_modules/core-js/internals/to-indexed-object.js"),o=r("./node_modules/core-js/internals/to-primitive.js"),l=r("./node_modules/core-js/internals/has.js"),c=r("./node_modules/core-js/internals/ie8-dom-define.js"),u=Object.getOwnPropertyDescriptor;e.f=n?u:function(d,h){if(d=s(d),h=o(h,!0),c)try{return u(d,h)}catch(p){}if(l(d,h))return a(!i.f.call(d,h),d[h])}},"./node_modules/core-js/internals/object-get-own-property-names.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-keys-internal.js"),i=r("./node_modules/core-js/internals/enum-bug-keys.js"),a=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(o){return n(o,a)}},"./node_modules/core-js/internals/object-get-own-property-symbols.js":function(t,e){e.f=Object.getOwnPropertySymbols},"./node_modules/core-js/internals/object-get-prototype-of.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/to-object.js"),a=r("./node_modules/core-js/internals/shared-key.js"),s=r("./node_modules/core-js/internals/correct-prototype-getter.js"),o=a("IE_PROTO"),l=Object.prototype;t.exports=s?Object.getPrototypeOf:function(c){return c=i(c),n(c,o)?c[o]:typeof c.constructor=="function"&&c instanceof c.constructor?c.constructor.prototype:c instanceof Object?l:null}},"./node_modules/core-js/internals/object-keys-internal.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/to-indexed-object.js"),a=r("./node_modules/core-js/internals/array-includes.js"),s=r("./node_modules/core-js/internals/hidden-keys.js"),o=a(!1);t.exports=function(l,c){var u=i(l),f=0,d=[],h;for(h in u)!n(s,h)&&n(u,h)&&d.push(h);for(;c.length>f;)n(u,h=c[f++])&&(~o(d,h)||d.push(h));return d}},"./node_modules/core-js/internals/object-keys.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-keys-internal.js"),i=r("./node_modules/core-js/internals/enum-bug-keys.js");t.exports=Object.keys||function(s){return n(s,i)}},"./node_modules/core-js/internals/object-property-is-enumerable.js":function(t,e,r){"use strict";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,a=i&&!n.call({1:2},1);e.f=a?function(o){var l=i(this,o);return!!l&&l.enumerable}:n},"./node_modules/core-js/internals/object-set-prototype-of.js":function(t,e,r){var n=r("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i=!1,a={},s;try{s=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,s.call(a,[]),i=a instanceof Array}catch(o){}return function(l,c){return n(l,c),i?s.call(l,c):l.__proto__=c,l}}():void 0)},"./node_modules/core-js/internals/own-keys.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/object-get-own-property-names.js"),a=r("./node_modules/core-js/internals/object-get-own-property-symbols.js"),s=r("./node_modules/core-js/internals/an-object.js"),o=n.Reflect;t.exports=o&&o.ownKeys||function(c){var u=i.f(s(c)),f=a.f;return f?u.concat(f(c)):u}},"./node_modules/core-js/internals/path.js":function(t,e,r){t.exports=r("./node_modules/core-js/internals/global.js")},"./node_modules/core-js/internals/redefine.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/shared.js"),a=r("./node_modules/core-js/internals/hide.js"),s=r("./node_modules/core-js/internals/has.js"),o=r("./node_modules/core-js/internals/set-global.js"),l=r("./node_modules/core-js/internals/function-to-string.js"),c=r("./node_modules/core-js/internals/internal-state.js"),u=c.get,f=c.enforce,d=String(l).split("toString");i("inspectSource",function(h){return l.call(h)}),(t.exports=function(h,p,g,v){var y=v?!!v.unsafe:!1,b=v?!!v.enumerable:!1,E=v?!!v.noTargetGet:!1;if(typeof g=="function"&&(typeof p=="string"&&!s(g,"name")&&a(g,"name",p),f(g).source=d.join(typeof p=="string"?p:"")),h===n){b?h[p]=g:o(p,g);return}else y?!E&&h[p]&&(b=!0):delete h[p];b?h[p]=g:a(h,p,g)})(Function.prototype,"toString",function(){return typeof this=="function"&&u(this).source||l.call(this)})},"./node_modules/core-js/internals/require-object-coercible.js":function(t,e){t.exports=function(r){if(r==null)throw TypeError("Can't call method on "+r);return r}},"./node_modules/core-js/internals/set-global.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/hide.js");t.exports=function(a,s){try{i(n,a,s)}catch(o){n[a]=s}return s}},"./node_modules/core-js/internals/set-to-string-tag.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-define-property.js").f,i=r("./node_modules/core-js/internals/has.js"),a=r("./node_modules/core-js/internals/well-known-symbol.js"),s=a("toStringTag");t.exports=function(o,l,c){o&&!i(o=c?o:o.prototype,s)&&n(o,s,{configurable:!0,value:l})}},"./node_modules/core-js/internals/shared-key.js":function(t,e,r){var n=r("./node_modules/core-js/internals/shared.js"),i=r("./node_modules/core-js/internals/uid.js"),a=n("keys");t.exports=function(s){return a[s]||(a[s]=i(s))}},"./node_modules/core-js/internals/shared.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/set-global.js"),a=r("./node_modules/core-js/internals/is-pure.js"),s="__core-js_shared__",o=n[s]||i(s,{});(t.exports=function(l,c){return o[l]||(o[l]=c!==void 0?c:{})})("versions",[]).push({version:"3.1.3",mode:a?"pure":"global",copyright:"\xA9 2019 Denis Pushkarev (zloirock.ru)"})},"./node_modules/core-js/internals/string-at.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(a,s,o){var l=String(i(a)),c=n(s),u=l.length,f,d;return c<0||c>=u?o?"":void 0:(f=l.charCodeAt(c),f<55296||f>56319||c+1===u||(d=l.charCodeAt(c+1))<56320||d>57343?o?l.charAt(c):f:o?l.slice(c,c+2):(f-55296<<10)+(d-56320)+65536)}},"./node_modules/core-js/internals/to-absolute-index.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=Math.max,a=Math.min;t.exports=function(s,o){var l=n(s);return l<0?i(l+o,0):a(l,o)}},"./node_modules/core-js/internals/to-indexed-object.js":function(t,e,r){var n=r("./node_modules/core-js/internals/indexed-object.js"),i=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(a){return n(i(a))}},"./node_modules/core-js/internals/to-integer.js":function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(i){return isNaN(i=+i)?0:(i>0?n:r)(i)}},"./node_modules/core-js/internals/to-length.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=Math.min;t.exports=function(a){return a>0?i(n(a),9007199254740991):0}},"./node_modules/core-js/internals/to-object.js":function(t,e,r){var n=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(i){return Object(n(i))}},"./node_modules/core-js/internals/to-primitive.js":function(t,e,r){var n=r("./node_modules/core-js/internals/is-object.js");t.exports=function(i,a){if(!n(i))return i;var s,o;if(a&&typeof(s=i.toString)=="function"&&!n(o=s.call(i))||typeof(s=i.valueOf)=="function"&&!n(o=s.call(i))||!a&&typeof(s=i.toString)=="function"&&!n(o=s.call(i)))return o;throw TypeError("Can't convert object to primitive value")}},"./node_modules/core-js/internals/uid.js":function(t,e){var r=0,n=Math.random();t.exports=function(i){return"Symbol(".concat(i===void 0?"":i,")_",(++r+n).toString(36))}},"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js":function(t,e,r){var n=r("./node_modules/core-js/internals/is-object.js"),i=r("./node_modules/core-js/internals/an-object.js");t.exports=function(a,s){if(i(a),!n(s)&&s!==null)throw TypeError("Can't set "+String(s)+" as a prototype")}},"./node_modules/core-js/internals/well-known-symbol.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/shared.js"),a=r("./node_modules/core-js/internals/uid.js"),s=r("./node_modules/core-js/internals/native-symbol.js"),o=n.Symbol,l=i("wks");t.exports=function(c){return l[c]||(l[c]=s&&o[c]||(s?o:a)("Symbol."+c))}},"./node_modules/core-js/modules/es.array.from.js":function(t,e,r){var n=r("./node_modules/core-js/internals/export.js"),i=r("./node_modules/core-js/internals/array-from.js"),a=r("./node_modules/core-js/internals/check-correctness-of-iteration.js"),s=!a(function(o){Array.from(o)});n({target:"Array",stat:!0,forced:s},{from:i})},"./node_modules/core-js/modules/es.string.iterator.js":function(t,e,r){"use strict";var n=r("./node_modules/core-js/internals/string-at.js"),i=r("./node_modules/core-js/internals/internal-state.js"),a=r("./node_modules/core-js/internals/define-iterator.js"),s="String Iterator",o=i.set,l=i.getterFor(s);a(String,"String",function(c){o(this,{type:s,string:String(c),index:0})},function(){var u=l(this),f=u.string,d=u.index,h;return d>=f.length?{value:void 0,done:!0}:(h=n(f,d,!0),u.index+=h.length,{value:h,done:!1})})},"./node_modules/webpack/buildin/global.js":function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(n){typeof window=="object"&&(r=window)}t.exports=r},"./src/default-attrs.json":function(t){t.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},"./src/icon.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(h){for(var p=1;p2&&arguments[2]!==void 0?arguments[2]:[];u(this,h),this.name=p,this.contents=g,this.tags=v,this.attrs=n({},l.default,{class:"feather feather-"+p})}return i(h,[{key:"toSvg",value:function(){var g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},v=n({},this.attrs,g,{class:(0,s.default)(this.attrs.class,g.class)});return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),h}();function d(h){return Object.keys(h).map(function(p){return p+'="'+h[p]+'"'}).join(" ")}e.default=f},"./src/icons.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("./src/icon.js"),i=c(n),a=r("./dist/icons.json"),s=c(a),o=r("./src/tags.json"),l=c(o);function c(u){return u&&u.__esModule?u:{default:u}}e.default=Object.keys(s.default).map(function(u){return new i.default(u,s.default[u],l.default[u])}).reduce(function(u,f){return u[f.name]=f,u},{})},"./src/index.js":function(t,e,r){"use strict";var n=r("./src/icons.js"),i=c(n),a=r("./src/to-svg.js"),s=c(a),o=r("./src/replace.js"),l=c(o);function c(u){return u&&u.__esModule?u:{default:u}}t.exports={icons:i.default,toSvg:s.default,replace:l.default}},"./src/replace.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(d){for(var h=1;h0&&arguments[0]!==void 0?arguments[0]:{};if(typeof document=="undefined")throw new Error("`feather.replace()` only works in a browser environment.");var h=document.querySelectorAll("[data-feather]");Array.from(h).forEach(function(p){return u(p,d)})}function u(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},p=f(d),g=p["data-feather"];if(delete p["data-feather"],o.default[g]===void 0){console.warn("feather: '"+g+"' is not a valid icon");return}var v=o.default[g].toSvg(n({},h,p,{class:(0,a.default)(h.class,p.class)})),y=new DOMParser().parseFromString(v,"image/svg+xml"),b=y.querySelector("svg");d.parentNode.replaceChild(b,d)}function f(d){return Array.from(d.attributes).reduce(function(h,p){return h[p.name]=p.value,h},{})}e.default=c},"./src/tags.json":function(t){t.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],anchor:[],archive:["index","box"],"at-sign":["mention","at","email","message"],award:["achievement","badge"],aperture:["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],battery:["power","electricity"],"battery-charging":["power","electricity"],bell:["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read","library"],book:["read","dictionary","booklet","magazine","library"],bookmark:["read","clip","marker","tag"],box:["cube"],briefcase:["work","bag","baggage","folder"],calendar:["date"],camera:["photo"],cast:["chromecast","airplay"],"chevron-down":["expand"],"chevron-up":["collapse"],circle:["off","zero","record"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],code:["source","programming"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],columns:["layout"],command:["keyboard","cmd","terminal","prompt"],compass:["navigation","safari","travel","direction"],copy:["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],cpu:["processor","technology"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage","memory"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],facebook:["logo","social"],"fast-forward":["music"],figma:["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],film:["movie","video"],filter:["funnel","hopper"],flag:["report"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],globe:["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],hash:["hashtag","number","pound"],headphones:["music","audio","sound"],heart:["like","love","emotion"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house","living"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication","secure"],layers:["stack"],layout:["window","webpage"],"life-buoy":["help","life ring","support"],link:["chain","url"],"link-2":["chain","url"],linkedin:["logo","social media"],list:["options"],lock:["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],mail:["email","message"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],mic:["record","sound","listen"],minimize:["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],minus:["subtract"],monitor:["tv","screen","display"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],music:["note"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box","container"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],percent:["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],phone:["call"],play:["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],printer:["fax","office","device"],radio:["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],repeat:["loop","arrows"],rewind:["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],rss:["feed","subscribe"],save:["floppy disk"],scissors:["cut"],search:["find","magnifier","magnifying glass"],send:["message","mail","email","paper airplane","paper aeroplane"],settings:["cog","edit","gear","preferences"],"share-2":["network","connections"],shield:["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slack:["logo"],slash:["ban","no"],sliders:["settings","controls"],smartphone:["cellphone","device"],smile:["emoji","face","happy","good","emotion"],speaker:["audio","music"],star:["bookmark","favorite","like"],"stop-circle":["media","music"],sun:["brightness","weather","light"],sunrise:["weather","time","morning","day"],sunset:["weather","time","evening","night"],tablet:["device"],tag:["label"],target:["logo","bullseye"],terminal:["code","command line","prompt"],thermometer:["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],tool:["settings","spanner"],trash:["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],triangle:["delta"],truck:["delivery","van","shipping","transport","lorry"],tv:["television","stream"],twitch:["logo"],twitter:["logo","social"],type:["text"],umbrella:["rain","weather"],unlock:["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],user:["person","account"],users:["group"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],"wifi-off":["disabled"],wifi:["connection","signal","wireless"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],x:["cancel","close","delete","remove","times","clear"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}},"./src/to-svg.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("./src/icons.js"),i=a(n);function a(o){return o&&o.__esModule?o:{default:o}}function s(o){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!o)throw new Error("The required `key` (icon name) parameter is missing.");if(!i.default[o])throw new Error("No icon matching '"+o+"'. See the complete list of icons at https://feathericons.com");return i.default[o].toSvg(l)}e.default=s},0:function(t,e,r){r("./node_modules/core-js/es/array/from.js"),t.exports=r("./src/index.js")}})})});var OV={};rI(OV,{default:()=>vp});module.exports=nI(OV);m();var D5=Ot(gg()),we=require("obsidian"),L5=Ot(require("path"));m();var is=require("obsidian");m();var p3=Ot(Gf()),Fr=Ot(require("fs/promises")),Ti=require("obsidian"),Ve=Ot(require("path")),Dc=require("path");m();var rd=Ot(RE(),1),Qf=Ot(Gf(),1),tk=require("child_process"),jk=Ot(yg(),1),Eo=Ot(yg(),1),uT=require("node:events"),jg=Object.defineProperty,fL=Object.getOwnPropertyDescriptor,Ng=Object.getOwnPropertyNames,dL=Object.prototype.hasOwnProperty,q=(t,e)=>function(){return t&&(e=(0,t[Ng(t)[0]])(t=0)),e},hL=(t,e)=>function(){return e||(0,t[Ng(t)[0]])((e={exports:{}}).exports,e),e.exports},ft=(t,e)=>{for(var r in e)jg(t,r,{get:e[r],enumerable:!0})},pL=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ng(e))!dL.call(t,i)&&i!==r&&jg(t,i,{get:()=>e[i],enumerable:!(n=fL(e,i))||n.enumerable});return t},it=t=>pL(jg({},"__esModule",{value:!0}),t);function mL(...t){let e=new String(t);return td.set(e,t),e}function Kf(t){return t instanceof String&&td.has(t)}function ME(t){return td.get(t)||[]}var td,pc=q({"src/lib/args/pathspec.ts"(){"use strict";td=new WeakMap}}),wr,la=q({"src/lib/errors/git-error.ts"(){"use strict";wr=class extends Error{constructor(t,e){super(e),this.task=t,Object.setPrototypeOf(this,new.target.prototype)}}}}),mc,ko=q({"src/lib/errors/git-response-error.ts"(){"use strict";la(),mc=class extends wr{constructor(t,e){super(void 0,e||String(t)),this.git=t}}}}),lA,cA=q({"src/lib/errors/task-configuration-error.ts"(){"use strict";la(),lA=class extends wr{constructor(t){super(void 0,t)}}}});function uA(t){return typeof t!="function"?Qa:t}function fA(t){return typeof t=="function"&&t!==Qa}function dA(t,e){let r=t.indexOf(e);return r<=0?[t,""]:[t.substr(0,r),t.substr(r+1)]}function hA(t,e=0){return pA(t)&&t.length>e?t[e]:void 0}function Ja(t,e=0){if(pA(t)&&t.length>e)return t[t.length-1-e]}function pA(t){return!!(t&&typeof t.length=="number")}function gc(t="",e=!0,r=` +`){return t.split(r).reduce((n,i)=>{let a=e?i.trim():i;return a&&n.push(a),n},[])}function Bg(t,e){return gc(t,!0).map(r=>e(r))}function Hg(t){return(0,rd.exists)(t,rd.FOLDER)}function Me(t,e){return Array.isArray(t)?t.includes(e)||t.push(e):t.add(e),e}function mA(t,e){return Array.isArray(t)&&!t.includes(e)&&t.push(e),t}function nd(t,e){if(Array.isArray(t)){let r=t.indexOf(e);r>=0&&t.splice(r,1)}else t.delete(e);return e}function Vn(t){return Array.isArray(t)?t:[t]}function gA(t){return t.replace(/[\s-]+(.)/g,(e,r)=>r.toUpperCase())}function vA(t){return Vn(t).map(String)}function He(t,e=0){if(t==null)return e;let r=parseInt(t,10);return isNaN(r)?e:r}function dc(t,e){let r=[];for(let n=0,i=t.length;nr in t?{[r]:t[r]}:{}))}function Ag(t=0){return new Promise(e=>setTimeout(e,t))}function kg(t){if(t!==!1)return t}var Ao,Qa,vc,id=q({"src/lib/utils/util.ts"(){"use strict";Ao="\0",Qa=()=>{},vc=Object.prototype.toString.call.bind(Object.prototype.toString)}});function qn(t,e,r){return e(t)?t:arguments.length>2?r:void 0}function Tg(t,e){let r=Kf(t)?"string":typeof t;return/number|string|boolean/.test(r)&&(!e||!e.includes(r))}function ad(t){return!!t&&vc(t)==="[object Object]"}function wA(t){return typeof t=="function"}var yc,Vt,bA,Zf,Ug,_A=q({"src/lib/utils/argument-filters.ts"(){"use strict";id(),pc(),yc=t=>Array.isArray(t),Vt=t=>typeof t=="string",bA=t=>Array.isArray(t)&&t.every(Vt),Zf=t=>Vt(t)||Array.isArray(t)&&t.every(Vt),Ug=t=>t==null||"number|boolean|function".includes(typeof t)?!1:Array.isArray(t)||typeof t=="string"||typeof t.length=="number"}}),Cg,gL=q({"src/lib/utils/exit-codes.ts"(){"use strict";Cg=(t=>(t[t.SUCCESS=0]="SUCCESS",t[t.ERROR=1]="ERROR",t[t.NOT_FOUND=-2]="NOT_FOUND",t[t.UNCLEAN=128]="UNCLEAN",t))(Cg||{})}}),Jf,vL=q({"src/lib/utils/git-output-streams.ts"(){"use strict";Jf=class xA{constructor(e,r){this.stdOut=e,this.stdErr=r}asStrings(){return new xA(this.stdOut.toString("utf8"),this.stdErr.toString("utf8"))}}}}),me,oa,yL=q({"src/lib/utils/line-parser.ts"(){"use strict";me=class{constructor(t,e){this.matches=[],this.parse=(r,n)=>(this.resetMatches(),this._regExp.every((i,a)=>this.addMatch(i,a,r(a)))?this.useMatches(n,this.prepareMatches())!==!1:!1),this._regExp=Array.isArray(t)?t:[t],e&&(this.useMatches=e)}useMatches(t,e){throw new Error("LineParser:useMatches not implemented")}resetMatches(){this.matches.length=0}prepareMatches(){return this.matches}addMatch(t,e,r){let n=r&&t.exec(r);return n&&this.pushMatch(e,n),!!n}pushMatch(t,e){this.matches.push(...e.slice(1))}},oa=class extends me{addMatch(t,e,r){return/^remote:\s/.test(String(r))&&super.addMatch(t,e,r)}pushMatch(t,e){(t>0||e.length>1)&&super.pushMatch(t,e)}}}});function SA(...t){let e=process.cwd(),r=Object.assign({baseDir:e,...EA},...t.filter(n=>typeof n=="object"&&n));return r.baseDir=r.baseDir||e,r.trimmed=r.trimmed===!0,r}var EA,wL=q({"src/lib/utils/simple-git-options.ts"(){"use strict";EA={binary:"git",maxConcurrentProcesses:5,config:[],trimmed:!1}}});function Gg(t,e=[]){return ad(t)?Object.keys(t).reduce((r,n)=>{let i=t[n];if(Kf(i))r.push(i);else if(Tg(i,["boolean"]))r.push(n+"="+i);else if(Array.isArray(i))for(let a of i)Tg(a,["string","number"])||r.push(n+"="+a);else r.push(n);return r},e):e}function vr(t,e=0,r=!1){let n=[];for(let i=0,a=e<0?t.length:e;i{for(let a=gc(i,n),s=0,o=a.length;s{if(!(s+c>=o))return a[s+c]};e.some(({parse:c})=>c(l,t))}}),t}var xL=q({"src/lib/utils/task-parser.ts"(){"use strict";id()}}),AA={};ft(AA,{ExitCodes:()=>Cg,GitOutputStreams:()=>Jf,LineParser:()=>me,NOOP:()=>Qa,NULL:()=>Ao,RemoteLineParser:()=>oa,append:()=>Me,appendTaskOptions:()=>Gg,asArray:()=>Vn,asCamelCase:()=>gA,asFunction:()=>uA,asNumber:()=>He,asStringArray:()=>vA,bufferToString:()=>hc,callTaskParser:()=>Pg,createInstanceConfig:()=>SA,delay:()=>Ag,filterArray:()=>yc,filterFunction:()=>wA,filterHasLength:()=>Ug,filterPlainObject:()=>ad,filterPrimitives:()=>Tg,filterString:()=>Vt,filterStringArray:()=>bA,filterStringOrStringArray:()=>Zf,filterType:()=>qn,first:()=>hA,folderExists:()=>Hg,forEachLineWithContent:()=>Bg,getTrailingOptions:()=>vr,including:()=>mA,isUserFunction:()=>fA,last:()=>Ja,objectToString:()=>vc,orVoid:()=>kg,parseStringResponse:()=>br,pick:()=>yA,prefixedArray:()=>dc,remove:()=>nd,splitOn:()=>dA,toLinesWithContent:()=>gc,trailingFunctionArgument:()=>at,trailingOptionsArgument:()=>zg});var he=q({"src/lib/utils/index.ts"(){"use strict";_A(),gL(),vL(),yL(),wL(),_L(),xL(),id()}}),kA={};ft(kA,{CheckRepoActions:()=>Rg,checkIsBareRepoTask:()=>CA,checkIsRepoRootTask:()=>TA,checkIsRepoTask:()=>SL});function SL(t){switch(t){case"bare":return CA();case"root":return TA()}return{commands:["rev-parse","--is-inside-work-tree"],format:"utf-8",onError:sd,parser:Vg}}function TA(){return{commands:["rev-parse","--git-dir"],format:"utf-8",onError:sd,parser(e){return/^\.(git)?$/.test(e.trim())}}}function CA(){return{commands:["rev-parse","--is-bare-repository"],format:"utf-8",onError:sd,parser:Vg}}function EL(t){return/(Not a git repository|Kein Git-Repository)/i.test(String(t))}var Rg,sd,Vg,PA=q({"src/lib/tasks/check-is-repo.ts"(){"use strict";he(),Rg=(t=>(t.BARE="bare",t.IN_TREE="tree",t.IS_REPO_ROOT="root",t))(Rg||{}),sd=({exitCode:t},e,r,n)=>{if(t===128&&EL(e))return r(Buffer.from("false"));n(e)},Vg=t=>t.trim()==="true"}});function AL(t,e){let r=new RA(t),n=t?OA:MA;return gc(e).forEach(i=>{let a=i.replace(n,"");r.paths.push(a),(IA.test(a)?r.folders:r.files).push(a)}),r}var RA,MA,OA,IA,kL=q({"src/lib/responses/CleanSummary.ts"(){"use strict";he(),RA=class{constructor(t){this.dryRun=t,this.paths=[],this.files=[],this.folders=[]}},MA=/^[a-z]+\s*/i,OA=/^[a-z]+\s+[a-z]+\s*/i,IA=/\/$/}}),Mg={};ft(Mg,{EMPTY_COMMANDS:()=>od,adhocExecTask:()=>FA,configurationErrorTask:()=>yr,isBufferTask:()=>DA,isEmptyTask:()=>LA,straightThroughBufferTask:()=>$A,straightThroughStringTask:()=>rr});function FA(t){return{commands:od,format:"empty",parser:t}}function yr(t){return{commands:od,format:"empty",parser(){throw typeof t=="string"?new lA(t):t}}}function rr(t,e=!1){return{commands:t,format:"utf-8",parser(r){return e?String(r).trim():r}}}function $A(t){return{commands:t,format:"buffer",parser(e){return e}}}function DA(t){return t.format==="buffer"}function LA(t){return t.format==="empty"||!t.commands.length}var od,ut=q({"src/lib/tasks/task.ts"(){"use strict";cA(),od=[]}}),jA={};ft(jA,{CONFIG_ERROR_INTERACTIVE_MODE:()=>qg,CONFIG_ERROR_MODE_REQUIRED:()=>Wg,CONFIG_ERROR_UNKNOWN_OPTION:()=>Yg,CleanOptions:()=>qf,cleanTask:()=>NA,cleanWithOptionsTask:()=>TL,isCleanOptionsArray:()=>CL});function TL(t,e){let{cleanMode:r,options:n,valid:i}=PL(t);return r?i.options?(n.push(...e),n.some(OL)?yr(qg):NA(r,n)):yr(Yg+JSON.stringify(t)):yr(Wg)}function NA(t,e){return{commands:["clean",`-${t}`,...e],format:"utf-8",parser(n){return AL(t==="n",n)}}}function CL(t){return Array.isArray(t)&&t.every(e=>Xg.has(e))}function PL(t){let e,r=[],n={cleanMode:!1,options:!0};return t.replace(/[^a-z]i/g,"").split("").forEach(i=>{RL(i)?(e=i,n.cleanMode=!0):n.options=n.options&&ML(r[r.length]=`-${i}`)}),{cleanMode:e,options:r,valid:n}}function RL(t){return t==="f"||t==="n"}function ML(t){return/^-[a-z]$/i.test(t)&&Xg.has(t.charAt(1))}function OL(t){return/^-[^\-]/.test(t)?t.indexOf("i")>0:t==="--interactive"}var qg,Wg,Yg,qf,Xg,BA=q({"src/lib/tasks/clean.ts"(){"use strict";kL(),he(),ut(),qg="Git clean interactive mode is not supported",Wg='Git clean mode parameter ("n" or "f") is required',Yg="Git clean unknown option found in: ",qf=(t=>(t.DRY_RUN="n",t.FORCE="f",t.IGNORED_INCLUDED="x",t.IGNORED_ONLY="X",t.EXCLUDING="e",t.QUIET="q",t.RECURSIVE="d",t))(qf||{}),Xg=new Set(["i",...vA(Object.values(qf))])}});function IL(t){let e=new UA;for(let r of HA(t))e.addValue(r.file,String(r.key),r.value);return e}function FL(t,e){let r=null,n=[],i=new Map;for(let a of HA(t,e))a.key===e&&(n.push(r=a.value),i.has(a.file)||i.set(a.file,[]),i.get(a.file).push(r));return{key:e,paths:Array.from(i.keys()),scopes:i,value:r,values:n}}function $L(t){return t.replace(/^(file):/,"")}function*HA(t,e=null){let r=t.split("\0");for(let n=0,i=r.length-1;nObject.assign(t,this.values[e]),{})),this._all}addFile(t){if(!(t in this.values)){let e=Ja(this.files);this.values[t]=e?Object.create(this.values[e]):{},this.files.push(t)}return this.values[t]}addValue(t,e,r){let n=this.addFile(t);n.hasOwnProperty(e)?Array.isArray(n[e])?n[e].push(r):n[e]=[n[e],r]:n[e]=r,this._all=void 0}}}});function wg(t,e){return typeof t=="string"&&Og.hasOwnProperty(t)?t:e}function LL(t,e,r,n){let i=["config",`--${n}`];return r&&i.push("--add"),i.push(t,e),{commands:i,format:"utf-8",parser(a){return a}}}function jL(t,e){let r=["config","--null","--show-origin","--get-all",t];return e&&r.splice(1,0,`--${e}`),{commands:r,format:"utf-8",parser(n){return FL(n,t)}}}function NL(t){let e=["config","--list","--show-origin","--null"];return t&&e.push(`--${t}`),{commands:e,format:"utf-8",parser(r){return IL(r)}}}function BL(){return{addConfig(t,e,...r){return this._runTask(LL(t,e,r[0]===!0,wg(r[1],"local")),at(arguments))},getConfig(t,e){return this._runTask(jL(t,wg(e,void 0)),at(arguments))},listConfig(...t){return this._runTask(NL(wg(t[0],void 0)),at(arguments))}}}var Og,GA=q({"src/lib/tasks/config.ts"(){"use strict";DL(),he(),Og=(t=>(t.system="system",t.global="global",t.local="local",t.worktree="worktree",t))(Og||{})}});function HL(t){return zA.has(t)}var bg,zA,VA=q({"src/lib/tasks/diff-name-status.ts"(){"use strict";bg=(t=>(t.ADDED="A",t.COPIED="C",t.DELETED="D",t.MODIFIED="M",t.RENAMED="R",t.CHANGED="T",t.UNMERGED="U",t.UNKNOWN="X",t.BROKEN="B",t))(bg||{}),zA=new Set(Object.values(bg))}});function UL(...t){return new WA().param(...t)}function GL(t){let e=new Set,r={};return Bg(t,n=>{let[i,a,s]=n.split(Ao);e.add(i),(r[i]=r[i]||[]).push({line:He(a),path:i,preview:s})}),{paths:e,results:r}}function zL(){return{grep(t){let e=at(arguments),r=vr(arguments);for(let i of qA)if(r.includes(i))return this._runTask(yr(`git.grep: use of "${i}" is not supported.`),e);typeof t=="string"&&(t=UL().param(t));let n=["grep","--null","-n","--full-name",...r,...t];return this._runTask({commands:n,format:"utf-8",parser(i){return GL(i)}},e)}}}var qA,fc,OE,WA,YA=q({"src/lib/tasks/grep.ts"(){"use strict";he(),ut(),qA=["-h"],fc=Symbol("grepQuery"),WA=class{constructor(){this[OE]=[]}*[(OE=fc,Symbol.iterator)](){for(let t of this[fc])yield t}and(...t){return t.length&&this[fc].push("--and","(",...dc(t,"-e"),")"),this}param(...t){return this[fc].push(...dc(t,"-e")),this}}}}),XA={};ft(XA,{ResetMode:()=>Wf,getResetMode:()=>qL,resetTask:()=>VL});function VL(t,e){let r=["reset"];return KA(t)&&r.push(`--${t}`),r.push(...e),rr(r)}function qL(t){if(KA(t))return t;switch(typeof t){case"string":case"undefined":return"soft"}}function KA(t){return ZA.includes(t)}var Wf,ZA,JA=q({"src/lib/tasks/reset.ts"(){"use strict";ut(),Wf=(t=>(t.MIXED="mixed",t.SOFT="soft",t.HARD="hard",t.MERGE="merge",t.KEEP="keep",t))(Wf||{}),ZA=Array.from(Object.values(Wf))}});function WL(){return(0,Qf.default)("simple-git")}function IE(t,e,r){return!e||!String(e).replace(/\s*/,"")?r?(n,...i)=>{t(n,...i),r(n,...i)}:t:(n,...i)=>{t(`%s ${n}`,e,...i),r&&r(n,...i)}}function YL(t,e,{namespace:r}){if(typeof t=="string")return t;let n=e&&e.namespace||"";return n.startsWith(r)?n.substr(r.length+1):n||r}function Kg(t,e,r,n=WL()){let i=t&&`[${t}]`||"",a=[],s=typeof e=="string"?n.extend(e):e,o=YL(qn(e,Vt),s,n);return c(r);function l(u,f){return Me(a,Kg(t,o.replace(/^[^:]+/,u),f,n))}function c(u){let f=u&&`[${u}]`||"",d=s&&IE(s,f)||Qa,h=IE(n,`${i} ${f}`,d);return Object.assign(s?d:h,{label:t,sibling:l,info:h,step:c})}}var QA=q({"src/lib/git-logger.ts"(){"use strict";he(),Qf.default.formatters.L=t=>String(Ug(t)?t.length:"-"),Qf.default.formatters.B=t=>Buffer.isBuffer(t)?t.toString("utf8"):vc(t)}}),ek,XL=q({"src/lib/runners/tasks-pending-queue.ts"(){"use strict";var t;la(),QA(),ek=(t=class{constructor(r="GitExecutor"){this.logLabel=r,this._queue=new Map}withProgress(r){return this._queue.get(r)}createProgress(r){let n=t.getName(r.commands[0]),i=Kg(this.logLabel,n);return{task:r,logger:i,name:n}}push(r){let n=this.createProgress(r);return n.logger("Adding task to the queue, commands = %o",r.commands),this._queue.set(r,n),n}fatal(r){for(let[n,{logger:i}]of Array.from(this._queue.entries()))n===r.task?(i.info("Failed %o",r),i("Fatal exception, any as-yet un-started tasks run through this executor will not be attempted")):i.info("A fatal exception occurred in a previous task, the queue has been purged: %o",r.message),this.complete(n);if(this._queue.size!==0)throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`)}complete(r){this.withProgress(r)&&this._queue.delete(r)}attempt(r){let n=this.withProgress(r);if(!n)throw new wr(void 0,"TasksPendingQueue: attempt called for an unknown task");return n.logger("Starting task"),n}static getName(r="empty"){return`task:${r}:${++t.counter}`}},t.counter=0,t)}});function Za(t,e){return{method:hA(t.commands)||"",commands:e}}function KL(t,e){return r=>{e("[ERROR] child process exception %o",r),t.push(Buffer.from(String(r.stack),"ascii"))}}function FE(t,e,r,n){return i=>{r("%s received %L bytes",e,i),n("%B",i),t.push(i)}}var Ig,ZL=q({"src/lib/runners/git-executor-chain.ts"(){"use strict";la(),ut(),he(),XL(),Ig=class{constructor(t,e,r){this._executor=t,this._scheduler=e,this._plugins=r,this._chain=Promise.resolve(),this._queue=new ek}get cwd(){return this._cwd||this._executor.cwd}set cwd(t){this._cwd=t}get env(){return this._executor.env}get outputHandler(){return this._executor.outputHandler}chain(){return this}push(t){return this._queue.push(t),this._chain=this._chain.then(()=>this.attemptTask(t))}async attemptTask(t){let e=await this._scheduler.next(),r=()=>this._queue.complete(t);try{let{logger:n}=this._queue.attempt(t);return await(LA(t)?this.attemptEmptyTask(t,n):this.attemptRemoteTask(t,n))}catch(n){throw this.onFatalException(t,n)}finally{r(),e()}}onFatalException(t,e){let r=e instanceof wr?Object.assign(e,{task:t}):new wr(t,e&&String(e));return this._chain=Promise.resolve(),this._queue.fatal(r),r}async attemptRemoteTask(t,e){let r=this._plugins.exec("spawn.binary","",Za(t,t.commands)),n=this._plugins.exec("spawn.args",[...t.commands],Za(t,t.commands)),i=await this.gitResponse(t,r,n,this.outputHandler,e.step("SPAWN")),a=await this.handleTaskData(t,n,i,e.step("HANDLE"));return e("passing response to task's parser as a %s",t.format),DA(t)?Pg(t.parser,a):Pg(t.parser,a.asStrings())}async attemptEmptyTask(t,e){return e("empty task bypassing child process to call to task's parser"),t.parser(this)}handleTaskData(t,e,r,n){let{exitCode:i,rejection:a,stdOut:s,stdErr:o}=r;return new Promise((l,c)=>{n("Preparing to handle process response exitCode=%d stdOut=",i);let{error:u}=this._plugins.exec("task.error",{error:a},{...Za(t,e),...r});if(u&&t.onError)return n.info("exitCode=%s handling with custom error handler"),t.onError(r,u,f=>{n.info("custom error handler treated as success"),n("custom error returned a %s",vc(f)),l(new Jf(Array.isArray(f)?Buffer.concat(f):f,Buffer.concat(o)))},c);if(u)return n.info("handling as error: exitCode=%s stdErr=%s rejection=%o",i,o.length,a),c(u);n.info("retrieving task output complete"),l(new Jf(Buffer.concat(s),Buffer.concat(o)))})}async gitResponse(t,e,r,n,i){let a=i.sibling("output"),s=this._plugins.exec("spawn.options",{cwd:this.cwd,env:this.env,windowsHide:!0},Za(t,t.commands));return new Promise(o=>{let l=[],c=[];i.info("%s %o",e,r),i("%O",s);let u=this._beforeSpawn(t,r);if(u)return o({stdOut:l,stdErr:c,exitCode:9901,rejection:u});this._plugins.exec("spawn.before",void 0,{...Za(t,r),kill(d){u=d||u}});let f=(0,tk.spawn)(e,r,s);f.stdout.on("data",FE(l,"stdOut",i,a.step("stdOut"))),f.stderr.on("data",FE(c,"stdErr",i,a.step("stdErr"))),f.on("error",KL(c,i)),n&&(i("Passing child process stdOut/stdErr to custom outputHandler"),n(e,f.stdout,f.stderr,[...r])),this._plugins.exec("spawn.after",void 0,{...Za(t,r),spawned:f,close(d,h){o({stdOut:l,stdErr:c,exitCode:d,rejection:u||h})},kill(d){f.killed||(u=d,f.kill("SIGINT"))}})})}_beforeSpawn(t,e){let r;return this._plugins.exec("spawn.before",void 0,{...Za(t,e),kill(n){r=n||r}}),r}}}}),rk={};ft(rk,{GitExecutor:()=>nk});var nk,JL=q({"src/lib/runners/git-executor.ts"(){"use strict";ZL(),nk=class{constructor(t,e,r){this.cwd=t,this._scheduler=e,this._plugins=r,this._chain=new Ig(this,this._scheduler,this._plugins)}chain(){return new Ig(this,this._scheduler,this._plugins)}push(t){return this._chain.push(t)}}}});function QL(t,e,r=Qa){let n=a=>{r(null,a)},i=a=>{(a==null?void 0:a.task)===t&&r(a instanceof mc?ej(a):a,void 0)};e.then(n,i)}function ej(t){let e=n=>{console.warn(`simple-git deprecation notice: accessing GitResponseError.${n} should be GitResponseError.git.${n}, this will no longer be available in version 3`),e=Qa};return Object.create(t,Object.getOwnPropertyNames(t.git).reduce(r,{}));function r(n,i){return i in t||(n[i]={enumerable:!1,configurable:!1,get(){return e(i),t.git[i]}}),n}}var tj=q({"src/lib/task-callback.ts"(){"use strict";ko(),he()}});function $E(t,e){return FA(r=>{if(!Hg(t))throw new Error(`Git.cwd: cannot change to non-directory "${t}"`);return(e||r).cwd=t})}var rj=q({"src/lib/tasks/change-working-directory.ts"(){"use strict";he(),ut()}});function _g(t){let e=["checkout",...t];return e[1]==="-b"&&e.includes("-B")&&(e[1]=nd(e,"-B")),rr(e)}function nj(){return{checkout(){return this._runTask(_g(vr(arguments,1)),at(arguments))},checkoutBranch(t,e){return this._runTask(_g(["-b",t,e,...vr(arguments)]),at(arguments))},checkoutLocalBranch(t){return this._runTask(_g(["-b",t,...vr(arguments)]),at(arguments))}}}var ij=q({"src/lib/tasks/checkout.ts"(){"use strict";he(),ut()}});function aj(){return{count:0,garbage:0,inPack:0,packs:0,prunePackable:0,size:0,sizeGarbage:0,sizePack:0}}function sj(){return{countObjects(){return this._runTask({commands:["count-objects","--verbose"],format:"utf-8",parser(t){return br(aj(),[ik],t)}})}}}var ik,oj=q({"src/lib/tasks/count-objects.ts"(){"use strict";he(),ik=new me(/([a-z-]+): (\d+)$/,(t,[e,r])=>{let n=gA(e);t.hasOwnProperty(n)&&(t[n]=He(r))})}});function lj(t){return br({author:null,branch:"",commit:"",root:!1,summary:{changes:0,insertions:0,deletions:0}},ak,t)}var ak,cj=q({"src/lib/parsers/parse-commit.ts"(){"use strict";he(),ak=[new me(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/,(t,[e,r,n])=>{t.branch=e,t.commit=n,t.root=!!r}),new me(/\s*Author:\s(.+)/i,(t,[e])=>{let r=e.split("<"),n=r.pop();!n||!n.includes("@")||(t.author={email:n.substr(0,n.length-1),name:r.join("<").trim()})}),new me(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,(t,[e,r,n])=>{t.summary.changes=parseInt(e,10)||0,t.summary.insertions=parseInt(r,10)||0,t.summary.deletions=parseInt(n,10)||0}),new me(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,(t,[e,r,n])=>{t.summary.changes=parseInt(e,10)||0;let i=parseInt(r,10)||0;n==="-"?t.summary.deletions=i:n==="+"&&(t.summary.insertions=i)})]}});function uj(t,e,r){return{commands:["-c","core.abbrev=40","commit",...dc(t,"-m"),...e,...r],format:"utf-8",parser:lj}}function fj(){return{commit(e,...r){let n=at(arguments),i=t(e)||uj(Vn(e),Vn(qn(r[0],Zf,[])),[...qn(r[1],yc,[]),...vr(arguments,0,!0)]);return this._runTask(i,n)}};function t(e){return!Zf(e)&&yr("git.commit: requires the commit message to be supplied as a string/string[]")}}var dj=q({"src/lib/tasks/commit.ts"(){"use strict";cj(),he(),ut()}});function hj(){return{firstCommit(){return this._runTask(rr(["rev-list","--max-parents=0","HEAD"],!0),at(arguments))}}}var pj=q({"src/lib/tasks/first-commit.ts"(){"use strict";he(),ut()}});function mj(t,e){let r=["hash-object",t];return e&&r.push("-w"),rr(r,!0)}var gj=q({"src/lib/tasks/hash-object.ts"(){"use strict";ut()}});function vj(t,e,r){let n=String(r).trim(),i;if(i=sk.exec(n))return new Yf(t,e,!1,i[1]);if(i=ok.exec(n))return new Yf(t,e,!0,i[1]);let a="",s=n.split(" ");for(;s.length;)if(s.shift()==="in"){a=s.join(" ");break}return new Yf(t,e,/^re/i.test(n),a)}var Yf,sk,ok,yj=q({"src/lib/responses/InitSummary.ts"(){"use strict";Yf=class{constructor(t,e,r,n){this.bare=t,this.path=e,this.existing=r,this.gitDir=n}},sk=/^Init.+ repository in (.+)$/,ok=/^Rein.+ in (.+)$/}});function wj(t){return t.includes(Zg)}function bj(t=!1,e,r){let n=["init",...r];return t&&!wj(n)&&n.splice(1,0,Zg),{commands:n,format:"utf-8",parser(i){return vj(n.includes("--bare"),e,i)}}}var Zg,_j=q({"src/lib/tasks/init.ts"(){"use strict";yj(),Zg="--bare"}});function Jg(t){for(let e=0;ebr(new lk,e,r,!1)}var xg,DE,LE,jE,uk,fk=q({"src/lib/parsers/parse-diff-summary.ts"(){"use strict";wc(),Sj(),VA(),he(),xg=[new me(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,(t,[e,r,n=""])=>{t.files.push({file:e.trim(),changes:He(r),insertions:n.replace(/[^+]/g,"").length,deletions:n.replace(/[^-]/g,"").length,binary:!1})}),new me(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,(t,[e,r,n])=>{t.files.push({file:e.trim(),before:He(r),after:He(n),binary:!0})}),new me(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,(t,[e,r])=>{let n=/(\d+) i/.exec(r),i=/(\d+) d/.exec(r);t.changed=He(e),t.insertions=He(n==null?void 0:n[1]),t.deletions=He(i==null?void 0:i[1])})],DE=[new me(/(\d+)\t(\d+)\t(.+)$/,(t,[e,r,n])=>{let i=He(e),a=He(r);t.changed++,t.insertions+=i,t.deletions+=a,t.files.push({file:n,changes:i+a,insertions:i,deletions:a,binary:!1})}),new me(/-\t-\t(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,after:0,before:0,binary:!0})})],LE=[new me(/(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,changes:0,insertions:0,deletions:0,binary:!1})})],jE=[new me(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,(t,[e,r,n,i,a])=>{t.changed++,t.files.push({file:a!=null?a:n,changes:0,insertions:0,deletions:0,binary:!1,status:kg(HL(e)&&e),from:kg(!!a&&n!==a&&n),similarity:He(r)})})],uk={"":xg,"--stat":xg,"--numstat":DE,"--name-status":jE,"--name-only":LE}}});function Ej(t,e){return e.reduce((r,n,i)=>(r[n]=t[i]||"",r),Object.create({diff:null}))}function dk(t=r0,e=hk,r=""){let n=ck(r);return function(i){let a=gc(i.trim(),!1,e0).map(function(s){let o=s.split(t0),l=Ej(o[0].split(t),e);return o.length>1&&o[1].trim()&&(l.diff=n(o[1])),l});return{all:a,latest:a.length&&a[0]||null,total:a.length}}}var e0,t0,r0,hk,pk=q({"src/lib/parsers/parse-list-log-summary.ts"(){"use strict";he(),fk(),wc(),e0="\xF2\xF2\xF2\xF2\xF2\xF2 ",t0=" \xF2\xF2",r0=" \xF2 ",hk=["hash","date","message","refs","author_name","author_email"]}}),mk={};ft(mk,{diffSummaryTask:()=>Aj,validateLogFormatConfig:()=>ld});function Aj(t){let e=Jg(t),r=["diff"];return e===""&&(e="--stat",r.push("--stat=4096")),r.push(...t),ld(r)||{commands:r,format:"utf-8",parser:ck(e)}}function ld(t){let e=t.filter(xj);if(e.length>1)return yr(`Summary flags are mutually exclusive - pick one of ${e.join(",")}`);if(e.length&&t.includes("-z"))return yr(`Summary flag ${e} parsing is not compatible with null termination option '-z'`)}var n0=q({"src/lib/tasks/diff.ts"(){"use strict";wc(),fk(),ut()}});function kj(t,e){let r=[],n=[];return Object.keys(t).forEach(i=>{r.push(i),n.push(String(t[i]))}),[r,n.join(e)]}function Tj(t){return Object.keys(t).reduce((e,r)=>(r in Fg||(e[r]=t[r]),e),{})}function gk(t={},e=[]){let r=qn(t.splitter,Vt,r0),n=ad(t.format)?t.format:{hash:"%H",date:t.strictDate===!1?"%ai":"%aI",message:"%s",refs:"%D",body:t.multiLine?"%B":"%b",author_name:t.mailMap!==!1?"%aN":"%an",author_email:t.mailMap!==!1?"%aE":"%ae"},[i,a]=kj(n,r),s=[],o=[`--pretty=format:${e0}${a}${t0}`,...e],l=t.n||t["max-count"]||t.maxCount;if(l&&o.push(`--max-count=${l}`),t.from||t.to){let c=t.symmetric!==!1?"...":"..";s.push(`${t.from||""}${c}${t.to||""}`)}return Vt(t.file)&&o.push("--follow",mL(t.file)),Gg(Tj(t),o),{fields:i,splitter:r,commands:[...o,...s]}}function Cj(t,e,r){let n=dk(t,e,Jg(r));return{commands:["log",...r],format:"utf-8",parser:n}}function Pj(){return{log(...r){let n=at(arguments),i=gk(zg(arguments),qn(arguments[0],yc)),a=e(...r)||ld(i.commands)||t(i);return this._runTask(a,n)}};function t(r){return Cj(r.splitter,r.fields,r.commands)}function e(r,n){return Vt(r)&&Vt(n)&&yr("git.log(string, string) should be replaced with git.log({ from: string, to: string })")}}var Fg,vk=q({"src/lib/tasks/log.ts"(){"use strict";wc(),pc(),pk(),he(),ut(),n0(),Fg=(t=>(t[t["--pretty"]=0]="--pretty",t[t["max-count"]=1]="max-count",t[t.maxCount=2]="maxCount",t[t.n=3]="n",t[t.file=4]="file",t[t.format=5]="format",t[t.from=6]="from",t[t.to=7]="to",t[t.splitter=8]="splitter",t[t.symmetric=9]="symmetric",t[t.mailMap=10]="mailMap",t[t.multiLine=11]="multiLine",t[t.strictDate=12]="strictDate",t))(Fg||{})}}),Xf,yk,Rj=q({"src/lib/responses/MergeSummary.ts"(){"use strict";Xf=class{constructor(t,e=null,r){this.reason=t,this.file=e,this.meta=r}toString(){return`${this.file}:${this.reason}`}},yk=class{constructor(){this.conflicts=[],this.merges=[],this.result="success"}get failed(){return this.conflicts.length>0}get reason(){return this.result}toString(){return this.conflicts.length?`CONFLICTS: ${this.conflicts.join(", ")}`:"OK"}}}}),$g,wk,Mj=q({"src/lib/responses/PullSummary.ts"(){"use strict";$g=class{constructor(){this.remoteMessages={all:[]},this.created=[],this.deleted=[],this.files=[],this.deletions={},this.insertions={},this.summary={changes:0,deletions:0,insertions:0}}},wk=class{constructor(){this.remote="",this.hash={local:"",remote:""},this.branch={local:"",remote:""},this.message=""}toString(){return this.message}}}});function Sg(t){return t.objects=t.objects||{compressing:0,counting:0,enumerating:0,packReused:0,reused:{count:0,delta:0},total:{count:0,delta:0}}}function NE(t){let e=/^\s*(\d+)/.exec(t),r=/delta (\d+)/i.exec(t);return{count:He(e&&e[1]||"0"),delta:He(r&&r[1]||"0")}}var bk,Oj=q({"src/lib/parsers/parse-remote-objects.ts"(){"use strict";he(),bk=[new oa(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,(t,[e,r])=>{let n=e.toLowerCase(),i=Sg(t.remoteMessages);Object.assign(i,{[n]:He(r)})}),new oa(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,(t,[e,r])=>{let n=e.toLowerCase(),i=Sg(t.remoteMessages);Object.assign(i,{[n]:He(r)})}),new oa(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,(t,[e,r,n])=>{let i=Sg(t.remoteMessages);i.total=NE(e),i.reused=NE(r),i.packReused=He(n)})]}});function _k(t,e){return br({remoteMessages:new Sk},xk,e)}var xk,Sk,Ek=q({"src/lib/parsers/parse-remote-messages.ts"(){"use strict";he(),Oj(),xk=[new oa(/^remote:\s*(.+)$/,(t,[e])=>(t.remoteMessages.all.push(e.trim()),!1)),...bk,new oa([/create a (?:pull|merge) request/i,/\s(https?:\/\/\S+)$/],(t,[e])=>{t.remoteMessages.pullRequestUrl=e}),new oa([/found (\d+) vulnerabilities.+\(([^)]+)\)/i,/\s(https?:\/\/\S+)$/],(t,[e,r,n])=>{t.remoteMessages.vulnerabilities={count:He(e),summary:r,url:n}})],Sk=class{constructor(){this.all=[]}}}});function Ij(t,e){let r=br(new wk,Ak,[t,e]);return r.message&&r}var BE,HE,UE,GE,Ak,zE,i0,kk=q({"src/lib/parsers/parse-pull.ts"(){"use strict";Mj(),he(),Ek(),BE=/^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/,HE=/(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/,UE=/^(create|delete) mode \d+ (.+)/,GE=[new me(BE,(t,[e,r,n])=>{t.files.push(e),r&&(t.insertions[e]=r.length),n&&(t.deletions[e]=n.length)}),new me(HE,(t,[e,,r,,n])=>r!==void 0||n!==void 0?(t.summary.changes=+e||0,t.summary.insertions=+r||0,t.summary.deletions=+n||0,!0):!1),new me(UE,(t,[e,r])=>{Me(t.files,r),Me(e==="create"?t.created:t.deleted,r)})],Ak=[new me(/^from\s(.+)$/i,(t,[e])=>void(t.remote=e)),new me(/^fatal:\s(.+)$/,(t,[e])=>void(t.message=e)),new me(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,(t,[e,r,n,i])=>{t.branch.local=n,t.hash.local=e,t.branch.remote=i,t.hash.remote=r})],zE=(t,e)=>br(new $g,GE,[t,e]),i0=(t,e)=>Object.assign(new $g,zE(t,e),_k(t,e))}}),VE,Tk,qE,Fj=q({"src/lib/parsers/parse-merge.ts"(){"use strict";Rj(),he(),kk(),VE=[new me(/^Auto-merging\s+(.+)$/,(t,[e])=>{t.merges.push(e)}),new me(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/,(t,[e,r])=>{t.conflicts.push(new Xf(e,r))}),new me(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,(t,[e,r,n])=>{t.conflicts.push(new Xf(e,r,{deleteRef:n}))}),new me(/^CONFLICT\s+\((.+)\):/,(t,[e])=>{t.conflicts.push(new Xf(e,null))}),new me(/^Automatic merge failed;\s+(.+)$/,(t,[e])=>{t.result=e})],Tk=(t,e)=>Object.assign(qE(t,e),i0(t,e)),qE=t=>br(new yk,VE,t)}});function WE(t){return t.length?{commands:["merge",...t],format:"utf-8",parser(e,r){let n=Tk(e,r);if(n.failed)throw new mc(n);return n}}:yr("Git.merge requires at least one option")}var $j=q({"src/lib/tasks/merge.ts"(){"use strict";ko(),Fj(),ut()}});function Dj(t,e,r){let n=r.includes("deleted"),i=r.includes("tag")||/^refs\/tags/.test(t),a=!r.includes("new");return{deleted:n,tag:i,branch:!i,new:!a,alreadyUpdated:a,local:t,remote:e}}var YE,Ck,XE,Lj=q({"src/lib/parsers/parse-push.ts"(){"use strict";he(),Ek(),YE=[new me(/^Pushing to (.+)$/,(t,[e])=>{t.repo=e}),new me(/^updating local tracking ref '(.+)'/,(t,[e])=>{t.ref={...t.ref||{},local:e}}),new me(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/,(t,[e,r,n])=>{t.pushed.push(Dj(e,r,n))}),new me(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,(t,[e,r,n])=>{t.branch={...t.branch||{},local:e,remote:r,remoteName:n}}),new me(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,(t,[e,r,n,i])=>{t.update={head:{local:e,remote:r},hash:{from:n,to:i}}})],Ck=(t,e)=>{let r=XE(t,e),n=_k(t,e);return{...r,...n}},XE=(t,e)=>br({pushed:[]},YE,[t,e])}}),Pk={};ft(Pk,{pushTagsTask:()=>jj,pushTask:()=>a0});function jj(t={},e){return Me(e,"--tags"),a0(t,e)}function a0(t={},e){let r=["push",...e];return t.branch&&r.splice(1,0,t.branch),t.remote&&r.splice(1,0,t.remote),nd(r,"-v"),Me(r,"--verbose"),Me(r,"--porcelain"),{commands:r,format:"utf-8",parser:Ck}}var Rk=q({"src/lib/tasks/push.ts"(){"use strict";Lj(),he()}});function Nj(){return{showBuffer(){let t=["show",...vr(arguments,1)];return t.includes("--binary")||t.splice(1,0,"--binary"),this._runTask($A(t),at(arguments))},show(){let t=["show",...vr(arguments,1)];return this._runTask(rr(t),at(arguments))}}}var Bj=q({"src/lib/tasks/show.ts"(){"use strict";he(),ut()}}),KE,Mk,Hj=q({"src/lib/responses/FileStatusSummary.ts"(){"use strict";KE=/^(.+)\0(.+)$/,Mk=class{constructor(t,e,r){if(this.path=t,this.index=e,this.working_dir=r,e==="R"||r==="R"){let n=KE.exec(t)||[null,t,t];this.from=n[2]||"",this.path=n[1]||""}}}}});function ZE(t){let[e,r]=t.split(Ao);return{from:r||e,to:e}}function Ir(t,e,r){return[`${t}${e}`,r]}function Eg(t,...e){return e.map(r=>Ir(t,r,(n,i)=>Me(n.conflicted,i)))}function Uj(t,e){let r=e.trim();switch(" "){case r.charAt(2):return n(r.charAt(0),r.charAt(1),r.substr(3));case r.charAt(1):return n(" ",r.charAt(0),r.substr(2));default:return}function n(i,a,s){let o=`${i}${a}`,l=Ok.get(o);l&&l(t,s),o!=="##"&&o!=="!!"&&t.files.push(new Mk(s,i,a))}}var JE,Ok,Ik,Gj=q({"src/lib/responses/StatusSummary.ts"(){"use strict";he(),Hj(),JE=class{constructor(){this.not_added=[],this.conflicted=[],this.created=[],this.deleted=[],this.ignored=void 0,this.modified=[],this.renamed=[],this.files=[],this.staged=[],this.ahead=0,this.behind=0,this.current=null,this.tracking=null,this.detached=!1,this.isClean=()=>!this.files.length}},Ok=new Map([Ir(" ","A",(t,e)=>Me(t.created,e)),Ir(" ","D",(t,e)=>Me(t.deleted,e)),Ir(" ","M",(t,e)=>Me(t.modified,e)),Ir("A"," ",(t,e)=>Me(t.created,e)&&Me(t.staged,e)),Ir("A","M",(t,e)=>Me(t.created,e)&&Me(t.staged,e)&&Me(t.modified,e)),Ir("D"," ",(t,e)=>Me(t.deleted,e)&&Me(t.staged,e)),Ir("M"," ",(t,e)=>Me(t.modified,e)&&Me(t.staged,e)),Ir("M","M",(t,e)=>Me(t.modified,e)&&Me(t.staged,e)),Ir("R"," ",(t,e)=>{Me(t.renamed,ZE(e))}),Ir("R","M",(t,e)=>{let r=ZE(e);Me(t.renamed,r),Me(t.modified,r.to)}),Ir("!","!",(t,e)=>{Me(t.ignored=t.ignored||[],e)}),Ir("?","?",(t,e)=>Me(t.not_added,e)),...Eg("A","A","U"),...Eg("D","D","U"),...Eg("U","A","D","U"),["##",(t,e)=>{let r=/ahead (\d+)/,n=/behind (\d+)/,i=/^(.+?(?=(?:\.{3}|\s|$)))/,a=/\.{3}(\S*)/,s=/\son\s([\S]+)$/,o;o=r.exec(e),t.ahead=o&&+o[1]||0,o=n.exec(e),t.behind=o&&+o[1]||0,o=i.exec(e),t.current=o&&o[1],o=a.exec(e),t.tracking=o&&o[1],o=s.exec(e),t.current=o&&o[1]||t.current,t.detached=/\(no branch\)/.test(e)}]]),Ik=function(t){let e=t.split(Ao),r=new JE;for(let n=0,i=e.length;n!Fk.includes(r))],parser(r){return Ik(r)}}}var Fk,Vj=q({"src/lib/tasks/status.ts"(){"use strict";Gj(),Fk=["--null","-z"]}});function ed(t=0,e=0,r=0,n="",i=!0){return Object.defineProperty({major:t,minor:e,patch:r,agent:n,installed:i},"toString",{value(){return`${this.major}.${this.minor}.${this.patch}`},configurable:!1,enumerable:!1})}function qj(){return ed(0,0,0,"",!1)}function Wj(){return{version(){return this._runTask({commands:["--version"],format:"utf-8",parser:Yj,onError(t,e,r,n){if(t.exitCode===-2)return r(Buffer.from(s0));n(e)}})}}}function Yj(t){return t===s0?qj():br(ed(0,0,0,t),$k,t)}var s0,$k,Xj=q({"src/lib/tasks/version.ts"(){"use strict";he(),s0="installed=false",$k=[new me(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,(t,[e,r,n,i=""])=>{Object.assign(t,ed(He(e),He(r),He(n),i))}),new me(/version (\d+)\.(\d+)\.(\D+)(.+)?$/,(t,[e,r,n,i=""])=>{Object.assign(t,ed(He(e),He(r),n,i))})]}}),Dk={};ft(Dk,{SimpleGitApi:()=>Dg});var Dg,Kj=q({"src/lib/simple-git-api.ts"(){"use strict";tj(),rj(),ij(),oj(),dj(),GA(),pj(),YA(),gj(),_j(),vk(),$j(),Rk(),Bj(),Vj(),ut(),Xj(),he(),Dg=class{constructor(t){this._executor=t}_runTask(t,e){let r=this._executor.chain(),n=r.push(t);return e&&QL(t,n,e),Object.create(this,{then:{value:n.then.bind(n)},catch:{value:n.catch.bind(n)},_executor:{value:r}})}add(t){return this._runTask(rr(["add",...Vn(t)]),at(arguments))}cwd(t){let e=at(arguments);return typeof t=="string"?this._runTask($E(t,this._executor),e):typeof(t==null?void 0:t.path)=="string"?this._runTask($E(t.path,t.root&&this._executor||void 0),e):this._runTask(yr("Git.cwd: workingDirectory must be supplied as a string"),e)}hashObject(t,e){return this._runTask(mj(t,e===!0),at(arguments))}init(t){return this._runTask(bj(t===!0,this._executor.cwd,vr(arguments)),at(arguments))}merge(){return this._runTask(WE(vr(arguments)),at(arguments))}mergeFromTo(t,e){return Vt(t)&&Vt(e)?this._runTask(WE([t,e,...vr(arguments)]),at(arguments,!1)):this._runTask(yr("Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings"))}outputHandler(t){return this._executor.outputHandler=t,this}push(){let t=a0({remote:qn(arguments[0],Vt),branch:qn(arguments[1],Vt)},vr(arguments));return this._runTask(t,at(arguments))}stash(){return this._runTask(rr(["stash",...vr(arguments)]),at(arguments))}status(){return this._runTask(zj(vr(arguments)),at(arguments))}},Object.assign(Dg.prototype,nj(),fj(),BL(),sj(),hj(),zL(),Pj(),Nj(),Wj())}}),Lk={};ft(Lk,{Scheduler:()=>Nk});var QE,Nk,Zj=q({"src/lib/runners/scheduler.ts"(){"use strict";he(),QA(),QE=(()=>{let t=0;return()=>{t++;let{promise:e,done:r}=(0,jk.createDeferred)();return{promise:e,done:r,id:t}}})(),Nk=class{constructor(t=2){this.concurrency=t,this.logger=Kg("","scheduler"),this.pending=[],this.running=[],this.logger("Constructed, concurrency=%s",t)}schedule(){if(!this.pending.length||this.running.length>=this.concurrency){this.logger("Schedule attempt ignored, pending=%s running=%s concurrency=%s",this.pending.length,this.running.length,this.concurrency);return}let t=Me(this.running,this.pending.shift());this.logger("Attempting id=%s",t.id),t.done(()=>{this.logger("Completing id=",t.id),nd(this.running,t),this.schedule()})}next(){let{promise:t,id:e}=Me(this.pending,QE());return this.logger("Scheduling id=%s",e),this.schedule(),t}}}}),Bk={};ft(Bk,{applyPatchTask:()=>Jj});function Jj(t,e){return rr(["apply",...e,...t])}var Qj=q({"src/lib/tasks/apply-patch.ts"(){"use strict";ut()}});function eN(t,e){return{branch:t,hash:e,success:!0}}function tN(t){return{branch:t,hash:null,success:!1}}var Hk,rN=q({"src/lib/responses/BranchDeleteSummary.ts"(){"use strict";Hk=class{constructor(){this.all=[],this.branches={},this.errors=[]}get success(){return!this.errors.length}}}});function Uk(t,e){return e===1&&Lg.test(t)}var eA,Lg,tA,cd,nN=q({"src/lib/parsers/parse-branch-delete.ts"(){"use strict";rN(),he(),eA=/(\S+)\s+\(\S+\s([^)]+)\)/,Lg=/^error[^']+'([^']+)'/m,tA=[new me(eA,(t,[e,r])=>{let n=eN(e,r);t.all.push(n),t.branches[e]=n}),new me(Lg,(t,[e])=>{let r=tN(e);t.errors.push(r),t.all.push(r),t.branches[e]=r})],cd=(t,e)=>br(new Hk,tA,[t,e])}}),Gk,iN=q({"src/lib/responses/BranchSummary.ts"(){"use strict";Gk=class{constructor(){this.all=[],this.branches={},this.current="",this.detached=!1}push(t,e,r,n,i){t==="*"&&(this.detached=e,this.current=r),this.all.push(r),this.branches[r]={current:t==="*",linkedWorkTree:t==="+",name:r,commit:n,label:i}}}}});function rA(t){return t?t.charAt(0):""}function zk(t){return br(new Gk,Vk,t)}var Vk,aN=q({"src/lib/parsers/parse-branch.ts"(){"use strict";iN(),he(),Vk=[new me(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,(t,[e,r,n,i])=>{t.push(rA(e),!0,r,n,i)}),new me(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,(t,[e,r,n,i])=>{t.push(rA(e),!1,r,n,i)})]}}),qk={};ft(qk,{branchLocalTask:()=>oN,branchTask:()=>sN,containsDeleteBranchCommand:()=>Wk,deleteBranchTask:()=>cN,deleteBranchesTask:()=>lN});function Wk(t){let e=["-d","-D","--delete"];return t.some(r=>e.includes(r))}function sN(t){let e=Wk(t),r=["branch",...t];return r.length===1&&r.push("-a"),r.includes("-v")||r.splice(1,0,"-v"),{format:"utf-8",commands:r,parser(n,i){return e?cd(n,i).all[0]:zk(n)}}}function oN(){return{format:"utf-8",commands:["branch","-v"],parser:zk}}function lN(t,e=!1){return{format:"utf-8",commands:["branch","-v",e?"-D":"-d",...t],parser(r,n){return cd(r,n)},onError({exitCode:r,stdOut:n},i,a,s){if(!Uk(String(i),r))return s(i);a(n)}}}function cN(t,e=!1){let r={format:"utf-8",commands:["branch","-v",e?"-D":"-d",t],parser(n,i){return cd(n,i).branches[t]},onError({exitCode:n,stdErr:i,stdOut:a},s,o,l){if(!Uk(String(s),n))return l(s);throw new mc(r.parser(hc(a),hc(i)),String(s))}};return r}var uN=q({"src/lib/tasks/branch.ts"(){"use strict";ko(),nN(),aN(),he()}}),Yk,fN=q({"src/lib/responses/CheckIgnore.ts"(){"use strict";Yk=t=>t.split(/\n/g).map(e=>e.trim()).filter(e=>!!e)}}),Xk={};ft(Xk,{checkIgnoreTask:()=>dN});function dN(t){return{commands:["check-ignore",...t],format:"utf-8",parser:Yk}}var hN=q({"src/lib/tasks/check-ignore.ts"(){"use strict";fN()}}),Kk={};ft(Kk,{cloneMirrorTask:()=>mN,cloneTask:()=>Zk});function pN(t){return/^--upload-pack(=|$)/.test(t)}function Zk(t,e,r){let n=["clone",...r];return Vt(t)&&n.push(t),Vt(e)&&n.push(e),n.find(pN)?yr("git.fetch: potential exploit argument blocked."):rr(n)}function mN(t,e,r){return Me(r,"--mirror"),Zk(t,e,r)}var gN=q({"src/lib/tasks/clone.ts"(){"use strict";ut(),he()}});function vN(t,e){return br({raw:t,remote:null,branches:[],tags:[],updated:[],deleted:[]},Jk,[t,e])}var Jk,yN=q({"src/lib/parsers/parse-fetch.ts"(){"use strict";he(),Jk=[new me(/From (.+)$/,(t,[e])=>{t.remote=e}),new me(/\* \[new branch]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.branches.push({name:e,tracking:r})}),new me(/\* \[new tag]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.tags.push({name:e,tracking:r})}),new me(/- \[deleted]\s+\S+\s*-> (.+)$/,(t,[e])=>{t.deleted.push({tracking:e})}),new me(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,(t,[e,r,n,i])=>{t.updated.push({name:n,tracking:i,to:r,from:e})})]}}),Qk={};ft(Qk,{fetchTask:()=>bN});function wN(t){return/^--upload-pack(=|$)/.test(t)}function bN(t,e,r){let n=["fetch",...r];return t&&e&&n.push(t,e),n.find(wN)?yr("git.fetch: potential exploit argument blocked."):{commands:n,format:"utf-8",parser:vN}}var _N=q({"src/lib/tasks/fetch.ts"(){"use strict";yN(),ut()}});function xN(t){return br({moves:[]},eT,t)}var eT,SN=q({"src/lib/parsers/parse-move.ts"(){"use strict";he(),eT=[new me(/^Renaming (.+) to (.+)$/,(t,[e,r])=>{t.moves.push({from:e,to:r})})]}}),tT={};ft(tT,{moveTask:()=>EN});function EN(t,e){return{commands:["mv","-v",...Vn(t),e],format:"utf-8",parser:xN}}var AN=q({"src/lib/tasks/move.ts"(){"use strict";SN(),he()}}),rT={};ft(rT,{pullTask:()=>kN});function kN(t,e,r){let n=["pull",...r];return t&&e&&n.splice(1,0,t,e),{commands:n,format:"utf-8",parser(i,a){return i0(i,a)},onError(i,a,s,o){let l=Ij(hc(i.stdOut),hc(i.stdErr));if(l)return o(new mc(l));o(a)}}}var TN=q({"src/lib/tasks/pull.ts"(){"use strict";ko(),kk(),he()}});function CN(t){let e={};return nT(t,([r])=>e[r]={name:r}),Object.values(e)}function PN(t){let e={};return nT(t,([r,n,i])=>{e.hasOwnProperty(r)||(e[r]={name:r,refs:{fetch:"",push:""}}),i&&n&&(e[r].refs[i.replace(/[^a-z]/g,"")]=n)}),Object.values(e)}function nT(t,e){Bg(t,r=>e(r.split(/\s+/)))}var RN=q({"src/lib/responses/GetRemoteSummary.ts"(){"use strict";he()}}),iT={};ft(iT,{addRemoteTask:()=>MN,getRemotesTask:()=>ON,listRemotesTask:()=>IN,remoteTask:()=>FN,removeRemoteTask:()=>$N});function MN(t,e,r){return rr(["remote","add",...r,t,e])}function ON(t){let e=["remote"];return t&&e.push("-v"),{commands:e,format:"utf-8",parser:t?PN:CN}}function IN(t){let e=[...t];return e[0]!=="ls-remote"&&e.unshift("ls-remote"),rr(e)}function FN(t){let e=[...t];return e[0]!=="remote"&&e.unshift("remote"),rr(e)}function $N(t){return rr(["remote","remove",t])}var DN=q({"src/lib/tasks/remote.ts"(){"use strict";RN(),ut()}}),aT={};ft(aT,{stashListTask:()=>LN});function LN(t={},e){let r=gk(t),n=["stash","list",...r.commands,...e],i=dk(r.splitter,r.fields,Jg(n));return ld(n)||{commands:n,format:"utf-8",parser:i}}var jN=q({"src/lib/tasks/stash-list.ts"(){"use strict";wc(),pk(),n0(),vk()}}),sT={};ft(sT,{addSubModuleTask:()=>NN,initSubModuleTask:()=>BN,subModuleTask:()=>ud,updateSubModuleTask:()=>HN});function NN(t,e){return ud(["add",t,e])}function BN(t){return ud(["init",...t])}function ud(t){let e=[...t];return e[0]!=="submodule"&&e.unshift("submodule"),rr(e)}function HN(t){return ud(["update",...t])}var UN=q({"src/lib/tasks/sub-module.ts"(){"use strict";ut()}});function GN(t,e){let r=isNaN(t),n=isNaN(e);return r!==n?r?1:-1:r?oT(t,e):0}function oT(t,e){return t===e?0:t>e?1:-1}function zN(t){return t.trim()}function Vf(t){return typeof t=="string"&&parseInt(t.replace(/^\D+/g,""),10)||0}var nA,lT,VN=q({"src/lib/responses/TagList.ts"(){"use strict";nA=class{constructor(t,e){this.all=t,this.latest=e}},lT=function(t,e=!1){let r=t.split(` +`).map(zN).filter(Boolean);e||r.sort(function(i,a){let s=i.split("."),o=a.split(".");if(s.length===1||o.length===1)return GN(Vf(s[0]),Vf(o[0]));for(let l=0,c=Math.max(s.length,o.length);li.indexOf(".")>=0);return new nA(r,n)}}}),cT={};ft(cT,{addAnnotatedTagTask:()=>YN,addTagTask:()=>WN,tagListTask:()=>qN});function qN(t=[]){let e=t.some(r=>/^--sort=/.test(r));return{format:"utf-8",commands:["tag","-l",...t],parser(r){return lT(r,e)}}}function WN(t){return{format:"utf-8",commands:["tag",t],parser(){return{name:t}}}}function YN(t,e){return{format:"utf-8",commands:["tag","-a","-m",e,t],parser(){return{name:t}}}}var XN=q({"src/lib/tasks/tag.ts"(){"use strict";VN()}}),KN=hL({"src/git.js"(t,e){"use strict";var{GitExecutor:r}=(JL(),it(rk)),{SimpleGitApi:n}=(Kj(),it(Dk)),{Scheduler:i}=(Zj(),it(Lk)),{configurationErrorTask:a}=(ut(),it(Mg)),{asArray:s,filterArray:o,filterPrimitives:l,filterString:c,filterStringOrStringArray:u,filterType:f,getTrailingOptions:d,trailingFunctionArgument:h,trailingOptionsArgument:p}=(he(),it(AA)),{applyPatchTask:g}=(Qj(),it(Bk)),{branchTask:v,branchLocalTask:y,deleteBranchesTask:b,deleteBranchTask:E}=(uN(),it(qk)),{checkIgnoreTask:S}=(hN(),it(Xk)),{checkIsRepoTask:A}=(PA(),it(kA)),{cloneTask:k,cloneMirrorTask:w}=(gN(),it(Kk)),{cleanWithOptionsTask:x,isCleanOptionsArray:_}=(BA(),it(jA)),{diffSummaryTask:T}=(n0(),it(mk)),{fetchTask:C}=(_N(),it(Qk)),{moveTask:I}=(AN(),it(tT)),{pullTask:L}=(TN(),it(rT)),{pushTagsTask:$}=(Rk(),it(Pk)),{addRemoteTask:J,getRemotesTask:de,listRemotesTask:le,remoteTask:ce,removeRemoteTask:Te}=(DN(),it(iT)),{getResetMode:ne,resetTask:N}=(JA(),it(XA)),{stashListTask:W}=(jN(),it(aT)),{addSubModuleTask:B,initSubModuleTask:$e,subModuleTask:lr,updateSubModuleTask:Ut}=(UN(),it(sT)),{addAnnotatedTagTask:X,addTagTask:Oe,tagListTask:De}=(XN(),it(cT)),{straightThroughBufferTask:Pt,straightThroughStringTask:Le}=(ut(),it(Mg));function U(j,Z){this._plugins=Z,this._executor=new r(j.baseDir,new i(j.maxConcurrentProcesses),Z),this._trimmed=j.trimmed}(U.prototype=Object.create(n.prototype)).constructor=U,U.prototype.customBinary=function(j){return this._plugins.reconfigure("binary",j),this},U.prototype.env=function(j,Z){return arguments.length===1&&typeof j=="object"?this._executor.env=j:(this._executor.env=this._executor.env||{})[j]=Z,this},U.prototype.stashList=function(j){return this._runTask(W(p(arguments)||{},o(j)&&j||[]),h(arguments))};function Je(j,Z,Se,We){return typeof Se!="string"?a(`git.${j}() requires a string 'repoPath'`):Z(Se,f(We,c),d(arguments))}U.prototype.clone=function(){return this._runTask(Je("clone",k,...arguments),h(arguments))},U.prototype.mirror=function(){return this._runTask(Je("mirror",w,...arguments),h(arguments))},U.prototype.mv=function(j,Z){return this._runTask(I(j,Z),h(arguments))},U.prototype.checkoutLatestTag=function(j){var Z=this;return this.pull(function(){Z.tags(function(Se,We){Z.checkout(We.latest,j)})})},U.prototype.pull=function(j,Z,Se,We){return this._runTask(L(f(j,c),f(Z,c),d(arguments)),h(arguments))},U.prototype.fetch=function(j,Z){return this._runTask(C(f(j,c),f(Z,c),d(arguments)),h(arguments))},U.prototype.silent=function(j){return console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3"),this},U.prototype.tags=function(j,Z){return this._runTask(De(d(arguments)),h(arguments))},U.prototype.rebase=function(){return this._runTask(Le(["rebase",...d(arguments)]),h(arguments))},U.prototype.reset=function(j){return this._runTask(N(ne(j),d(arguments)),h(arguments))},U.prototype.revert=function(j){let Z=h(arguments);return typeof j!="string"?this._runTask(a("Commit must be a string"),Z):this._runTask(Le(["revert",...d(arguments,0,!0),j]),Z)},U.prototype.addTag=function(j){let Z=typeof j=="string"?Oe(j):a("Git.addTag requires a tag name");return this._runTask(Z,h(arguments))},U.prototype.addAnnotatedTag=function(j,Z){return this._runTask(X(j,Z),h(arguments))},U.prototype.deleteLocalBranch=function(j,Z,Se){return this._runTask(E(j,typeof Z=="boolean"?Z:!1),h(arguments))},U.prototype.deleteLocalBranches=function(j,Z,Se){return this._runTask(b(j,typeof Z=="boolean"?Z:!1),h(arguments))},U.prototype.branch=function(j,Z){return this._runTask(v(d(arguments)),h(arguments))},U.prototype.branchLocal=function(j){return this._runTask(y(),h(arguments))},U.prototype.raw=function(j){let Z=!Array.isArray(j),Se=[].slice.call(Z?arguments:j,0);for(let Rt=0;Rtt.removeEventListener("abort",a))}}]:void 0}function QN(t){return typeof t=="string"&&t.trim().toLowerCase()==="-c"}function eB(t,e){if(QN(t)&&/^\s*protocol(.[a-z]+)?.allow/.test(e))throw new _i(void 0,"unsafe","Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol")}function tB(t,e){if(/^\s*--(upload|receive)-pack/.test(t))throw new _i(void 0,"unsafe","Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack");if(e==="clone"&&/^\s*-u\b/.test(t))throw new _i(void 0,"unsafe","Use of clone with option -u is not permitted without enabling allowUnsafePack");if(e==="push"&&/^\s*--exec\b/.test(t))throw new _i(void 0,"unsafe","Use of push with option --exec is not permitted without enabling allowUnsafePack")}function rB({allowUnsafeProtocolOverride:t=!1,allowUnsafePack:e=!1}={}){return{type:"spawn.args",action(r,n){return r.forEach((i,a)=>{let s=aAg(i))).then(s.done)}return{type:"spawn.after",async action(i,{spawned:a,close:s}){var u,f;let o=r(),l=!0,c=()=>void(l=!1);(u=a.stdout)==null||u.on("data",c),(f=a.stderr)==null||f.on("data",c),a.on("error",c),a.on("close",d=>o.close(d)),a.on("exit",d=>o.exit(d));try{await o.result,l&&await Ag(50),s(o.exitCode)}catch(d){s(o.exitCode,d)}}}}he();var aB="Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings",aA="Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option";function sB(t){return!t||!/^([a-z]:)?([a-z0-9/.\\_-]+)$/i.test(t)}function sA(t,e){if(t.length<1||t.length>2)throw new _i(void 0,"binary",aB);if(t.some(sB))if(e)console.warn(aA);else throw new _i(void 0,"binary",aA);let[n,i]=t;return{binary:n,prefix:i}}function oB(t,e=["git"],r=!1){let n=sA(Vn(e),r);t.on("binary",i=>{n=sA(Vn(i),r)}),t.append("spawn.binary",()=>n.binary),t.append("spawn.args",i=>n.prefix?[n.prefix,...i]:i)}la();function lB(t){return!!(t.exitCode&&t.stdErr.length)}function cB(t){return Buffer.concat([...t.stdOut,...t.stdErr])}function uB(t=!1,e=lB,r=cB){return(n,i)=>!t&&n||!e(i)?n:r(i)}function oA(t){return{type:"task.error",action(e,r){let n=t(e.error,{stdErr:r.stdErr,stdOut:r.stdOut,exitCode:r.exitCode});return Buffer.isBuffer(n)?{error:new wr(void 0,n.toString("utf-8"))}:{error:n}}}}he();var fB=class{constructor(){this.plugins=new Set,this.events=new uT.EventEmitter}on(t,e){this.events.on(t,e)}reconfigure(t,e){this.events.emit(t,e)}append(t,e){let r=Me(this.plugins,{type:t,action:e});return()=>this.plugins.delete(r)}add(t){let e=[];return Vn(t).forEach(r=>r&&this.plugins.add(Me(e,r))),()=>{e.forEach(r=>this.plugins.delete(r))}}exec(t,e,r){let n=e,i=Object.freeze(Object.create(r));for(let a of this.plugins)a.type===t&&(n=a.action(n,i));return n}};he();function dB(t){let e="--progress",r=["checkout","clone","fetch","pull","push"];return[{type:"spawn.args",action(a,s){return r.includes(s.method)?mA(a,e):a}},{type:"spawn.after",action(a,s){var o;s.commands.includes(e)&&((o=s.spawned.stderr)==null||o.on("data",l=>{let c=/^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(l.toString("utf8"));c&&t({method:s.method,stage:hB(c[1]),progress:He(c[2]),processed:He(c[3]),total:He(c[4])})}))}}]}function hB(t){return String(t.toLowerCase().split(" ",1))||"unknown"}he();function pB(t){let e=yA(t,["uid","gid"]);return{type:"spawn.options",action(r){return{...e,...r}}}}function mB({block:t,stdErr:e=!0,stdOut:r=!0}){if(t>0)return{type:"spawn.after",action(n,i){var c,u;let a;function s(){a&&clearTimeout(a),a=setTimeout(l,t)}function o(){var f,d;(f=i.spawned.stdout)==null||f.off("data",s),(d=i.spawned.stderr)==null||d.off("data",s),i.spawned.off("exit",o),i.spawned.off("close",o),a&&clearTimeout(a)}function l(){o(),i.kill(new _i(void 0,"timeout","block timeout reached"))}r&&((c=i.spawned.stdout)==null||c.on("data",s)),e&&((u=i.spawned.stderr)==null||u.on("data",s)),i.spawned.on("exit",o),i.spawned.on("close",o),s()}}}pc();function gB(){return{type:"spawn.args",action(t){let e=[],r;function n(i){(r=r||[]).push(...i)}for(let i=0;iKf(s)&&ME(s)||s));break}e.push(a)}return r?[...e,"--",...r.map(String)]:e}}}he();var vB=KN();function yB(t,e){var i;let r=new fB,n=SA(t&&(typeof t=="string"?{baseDir:t}:t)||{},e);if(!Hg(n.baseDir))throw new ZN(n,"Cannot use simple-git on a directory that does not exist");return Array.isArray(n.config)&&r.add(nB(n.config)),r.add(rB(n.unsafe)),r.add(gB()),r.add(iB(n.completion)),n.abort&&r.add(JN(n.abort)),n.progress&&r.add(dB(n.progress)),n.timeout&&r.add(mB(n.timeout)),n.spawnOptions&&r.add(pB(n.spawnOptions)),r.add(oA(uB(!0))),n.errors&&r.add(oA(n.errors)),oB(r,n.binary,(i=n.unsafe)==null?void 0:i.allowUnsafeCustomBinary),new vB(n,r)}ko();var fT=yB;m();var dT=require("obsidian"),fd="YYYY-MM-DD",o0=`${fd} HH:mm`,l0=`${fd} HH:mm:ss`,dd=40,To="conflict-files-obsidian-git.md",Xe={commitMessage:"vault backup: {{date}}",autoCommitMessage:"vault backup: {{date}}",commitMessageScript:"",commitDateFormat:l0,autoSaveInterval:0,autoPushInterval:0,autoPullInterval:0,autoPullOnBoot:!1,autoCommitOnlyStaged:!1,disablePush:!1,pullBeforePush:!0,disablePopups:!1,showErrorNotices:!0,disablePopupsForNoChanges:!1,listChangedFilesInMessageBody:!1,showStatusBar:!0,updateSubmodules:!1,syncMethod:"merge",customMessageOnAutoBackup:!1,autoBackupAfterFileChange:!1,treeStructure:!1,refreshSourceControl:dT.Platform.isDesktopApp,basePath:"",differentIntervalCommitAndPush:!1,changedFilesInStatusBar:!1,showedMobileNotice:!1,refreshSourceControlTimer:7e3,showBranchStatusBar:!0,setLastSaveToLastCommit:!1,submoduleRecurseCheckout:!1,gitDir:"",showFileMenu:!0,authorInHistoryView:"hide",dateInHistoryView:!1,diffStyle:"split",lineAuthor:{show:!1,followMovement:"inactive",authorDisplay:"initials",showCommitHash:!1,dateTimeFormatOptions:"date",dateTimeFormatCustomString:o0,dateTimeTimezone:"viewer-local",coloringMaxAge:"1y",colorNew:{r:255,g:150,b:150},colorOld:{r:120,g:160,b:255},textColorCss:"var(--text-muted)",ignoreWhitespace:!1,gutterSpacingFallbackLength:5}},$t={type:"git-view",name:"Source Control",icon:"git-pull-request"},Zr={type:"git-history-view",name:"History",icon:"history"},ca={type:"split-diff-view",name:"Diff view",icon:"diff"},ua={type:"diff-view",name:"Diff View",icon:"git-pull-request"},hd="C:\\Program Files\\Git\\cmd\\git.exe",pd="git_credentials_input",es="obsidian_askpass.sh",hT=`#!/bin/sh + +PROMPT="$1" +TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT" + +cleanup() { + rm -f "$TEMP_FILE" "$TEMP_FILE.response" +} +trap cleanup EXIT + +echo "$PROMPT" > "$TEMP_FILE" + +while [ ! -e "$TEMP_FILE.response" ]; do + if [ ! -e "$TEMP_FILE" ]; then + echo "Trigger file got removed: Abort" >&2 + exit 1 + fi + sleep 0.1 +done + +RESPONSE=$(cat "$TEMP_FILE.response") + +echo "$RESPONSE" +`,pT=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"];m();var mT=require("obsidian"),wB={options:[],placeholder:"",allowEmpty:!1,onlySelection:!1,initialValue:void 0,obscure:!1},ze=class extends mT.SuggestModal{constructor(e,r){if(super(e.app),this.config={...wB,...r},this.setPlaceholder(this.config.placeholder),this.config.obscure){this.inputEl.type="password";let n=this.containerEl.querySelector(".prompt-input-container");n.addClass("git-obscure-prompt"),n.setAttr("git-is-obscured","true");let i=n==null?void 0:n.createDiv({cls:"search-input-clear-button"});i.style.marginRight="32px",i.id="git-show-password",i.addEventListener("click",()=>{n.getAttr("git-is-obscured")==="true"?(this.inputEl.type="text",n.setAttr("git-is-obscured","false")):(this.inputEl.type="password",n.setAttr("git-is-obscured","true"))})}}openAndGetResult(){return new Promise(e=>{this.resolve=e,this.open(),this.config.initialValue!=null&&(this.inputEl.value=this.config.initialValue,this.inputEl.dispatchEvent(new Event("input")))})}onClose(){new Promise(e=>setTimeout(e,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(e){return this.config.onlySelection?this.config.options:this.config.allowEmpty?[e.length>0?e:" ",...this.config.options]:[e.length>0?e:"...",...this.config.options]}renderSuggestion(e,r){this.config.obscure?r.hide():r.setText(e)}onChooseSuggestion(e,r){if(this.resolve){let n;this.config.allowEmpty&&e===" "?n="":e==="..."?n=void 0:n=e,this.resolve(n)}}};m();function gT(t,e){let r=Object.assign({},t.lineAuthor,e.lineAuthor);return Object.assign({},t,e,{lineAuthor:r})}var Co=class extends Error{constructor(r){super("No network connection available");this.originalError=r}};m();var e3=Ot(FT()),t3=require("child_process"),r3=Ot(QR()),Ai=require("obsidian");function Ud(t){throw new Error(`Unexpected object: ${t}`)}function Ic(t,e,r){return t===1?`${t} ${e}`:`${t} ${r!=null?r:e+"s"}`}var pv=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);function vn(t,e){let r;if(e){if(e.button===0||e.button===1){let n=Ai.Keymap.isModEvent(e);r=t.workspace.getLeaf(n)}}else r=t.workspace.getLeaf(!1);return r}function Xn(t,e,r,n,i){if(e.button==2){let a=t.vault.getAbstractFileByPath(r);if(a!=null){let s=new Ai.Menu;t.workspace.trigger("file-menu",s,a,i,n),s.showAtPosition({x:e.pageX,y:e.pageY})}else{let s=new Ai.Menu;t.workspace.trigger("obsidian-git:menu",s,r,i,n),s.showAtPosition({x:e.pageX,y:e.pageY})}}}function pa(t){throw new Error("Impossible branch: "+t)}function mv(t){return`rgb(${t.r},${t.g},${t.b})`}function n3(t){var a;let e=(a=e3.fromString(t))==null?void 0:a.toRgbaArray();if(e===void 0)return;let[r,n,i]=e;return{r,g:n,b:i}}function i3(t){return t.diff(Ai.moment.unix(0),"seconds")}function a3(t){if(t.length!==0)return t.slice().sort()[Math.floor(t.length/2)]}function s3(t,e){return(0,r3.default)(t,e,{strict:!0})}function Fc(t,e){return new Proxy(t,{get(r,n){return n==="length"?Math.min(e,r.length):r[n]}})}function o3(t,e,r){return t.length<=e?new Array(e-t.length).fill(r).join("")+t:t.substring(t.length-e)}function l3(t,e){if(e<=0)return t;let r=new Array(e).fill(" ").join(""),n=t.substring(e,t.length);return r+n}function gv(t,e,r){return t<=e&&e<=r}function ki(t){let[e,...r]=t.split("/");return[e,r.length===0?void 0:r.join("/")]}function Kn(t){return t.endsWith("/")?t:t.split("/").last().replace(/\.md$/,"")}function c3(t){return t===1?"1 minute":`${t} minutes`}function LH(t){let e=t.lastIndexOf(".");return t.substring(e+1)}function Io(t){if(t.endsWith(".md"))return!1;let e=LH(t);return pT.includes(e)}function vv(t){return(t.startsWith("https://github.com/")||t.startsWith("https://gitlab.com/"))&&(t.endsWith(".git")||(t=t+".git")),t}function Fo(t,e){let r=e.vault.getAbstractFileByPath(t);if(!(r instanceof Ai.TFile))return!1;try{return!!e.viewRegistry.getTypeByExtension(r.extension)}catch(n){return!0}}function u3({isFolder:t,gitRelativePath:e}){let r="/";return r+=e,t&&(r+="/"),r.replace(/([\\!#*?[\]])/g,String.raw`\$1`).replace(/\s(?=\s*$)/g,String.raw`\ `)}function $c(t,e,r={}){return new Promise((n,i)=>{let a=(0,t3.spawn)(t,e,r),s="",o="";a.stdout.on("data",l=>{s+=l.toString()}),a.stderr.on("data",l=>{o+=l.toString()}),a.on("error",l=>{n({error:new Error(l.message),stdout:s,stderr:s,code:1})}),a.on("close",l=>{n({stdout:s,stderr:o,code:l!=null?l:1,error:void 0})})})}m();var f3=require("obsidian"),$o=class{constructor(e){this.plugin=e,this.app=e.app}getRelativeVaultPath(e){return this.plugin.settings.basePath?this.plugin.settings.basePath+"/"+e:e}getRelativeRepoPath(e,r=!0){return r&&this.plugin.settings.basePath.length>0?e.substring(this.plugin.settings.basePath.length+1):e}unload(){}_getTreeStructure(e,r=0){let n=[];for(e=[...e];e.length>0;){let i=e.first(),a=i.path.substring(r);if(a.contains("/")){let s=a.substring(0,a.indexOf("/")),o=e.filter(c=>c.path.substring(r).startsWith(s+"/"));o.forEach(c=>e.remove(c));let l=i.path.substring(0,a.indexOf("/")+r);n.push({title:s,path:l,vaultPath:this.getRelativeVaultPath(l),children:this._getTreeStructure(o,(r>0?r+s.length:s.length)+1)})}else n.push({title:a,data:i,path:i.path,vaultPath:this.getRelativeVaultPath(i.path)}),e.remove(i)}return n}simplify(e){var r,n,i,a;for(let s of e){for(;;){let o=((r=s.children)==null?void 0:r.length)==1,l=((i=(n=s.children)==null?void 0:n.first())==null?void 0:i.data)==null;if(!(s.children!=null&&o&&l))break;let c=s.children.first();s.title+="/"+c.title,s.data=c.data,s.path=c.path,s.vaultPath=c.vaultPath,s.children=c.children}s.children!=null&&this.simplify(s.children),(a=s.children)==null||a.sort((o,l)=>{let c=(l.data==null?1:0)-(o.data==null?1:0);return c!=0?c:o.title.localeCompare(l.title)})}return e.sort((s,o)=>{let l=(o.data==null?1:0)-(s.data==null?1:0);return l!=0?l:s.title.localeCompare(o.title)})}getTreeStructure(e){let r=this._getTreeStructure(e);return this.simplify(r)}async formatCommitMessage(e){let r;if(e.includes("{{numFiles}}")){r=await this.status();let n=r.staged.length;e=e.replace("{{numFiles}}",String(n))}if(e.includes("{{hostname}}")){let n=this.plugin.localStorage.getHostname()||"";e=e.replace("{{hostname}}",n)}if(e.includes("{{files}}")){r=r!=null?r:await this.status();let n={},i="";if(r.staged.length<100){r.staged.forEach(s=>{s.index in n?n[s.index].push(s.path):n[s.index]=[s.path]});let a=[];for(let[s,o]of Object.entries(n))a.push(s+" "+o.join(" "));i=a.join(", ")}else i="Too many files to list";e=e.replace("{{files}}",i)}if(e=e.replace("{{date}}",(0,f3.moment)().format(this.plugin.settings.commitDateFormat)),this.plugin.settings.listChangedFilesInMessageBody){let n=r!=null?r:await this.status(),i="";n.staged.length<100?i=n.staged.map(a=>a.path).join(` +`):i="Too many files to list",e=e+` + +Affected files: +`+i}return e}};var Ce=class extends $o{constructor(r){super(r);this.useDefaultWindowsGitPath=!1}async setGitInstance(r=!1){var n;if(await this.isGitInstalled()){let i=this.app.vault.adapter,a=i.getBasePath(),s=a;this.plugin.settings.basePath&&(await i.exists((0,Ti.normalizePath)(this.plugin.settings.basePath))?s=Ve.join(a,this.plugin.settings.basePath):r||new Ti.Notice("ObsidianGit: Base path does not exist")),this.absoluteRepoPath=s,this.git=fT({baseDir:s,binary:this.plugin.localStorage.getGitPath()||(this.useDefaultWindowsGitPath?hd:void 0),config:["core.quotepath=off"],unsafe:{allowUnsafeCustomBinary:!0}});let o=this.plugin.localStorage.getPATHPaths(),l=this.plugin.localStorage.getEnvVars(),c=this.plugin.settings.gitDir;if(o.length>0){let v=o.join(":")+":"+process.env.PATH;process.env.PATH=v}c&&(process.env.GIT_DIR=c);for(let v of l){let[y,b]=v.split("=");process.env[y]=b}let u="simple-git",f=",",h=((n=localStorage.debug)!=null?n:"").split(f);if(!h.includes(u)&&!h.includes(`-${u}`)&&(h.push(u),p3.default.enable(h.join(f))),await this.git.checkIsRepo()){let v=await this.git.revparse("--show-cdup"),y=(0,Dc.resolve)(s+Dc.sep+v);this.absoluteRepoPath=y,await this.git.cwd(y)}let p=Ve.join(a,this.app.vault.configDir,"plugins","obsidian-git"),g=Ve.join(p,es);process.env.SSH_ASKPASS==null&&(process.env.SSH_ASKPASS=g),process.env.OBSIDIAN_GIT_CREDENTIALS_INPUT=Ve.join(p,pd),process.env.SSH_ASKPASS==g&&this.askpass().catch(v=>this.plugin.displayError(v))}}getRelativeVaultPath(r){let i=this.app.vault.adapter.getBasePath(),a=Ve.join(this.absoluteRepoPath,r),s=Ve.relative(i,a);return Ti.Platform.isWin&&(s=s.replace(/\\/g,"/")),s}getRelativeRepoPath(r,n=!0){if(n){let a=this.plugin.app.vault.adapter.getBasePath(),s=this.absoluteRepoPath,o=Ve.join(a,r),l=Ve.relative(s,o);return Ti.Platform.isWin&&(l=l.replace(/\\/g,"/")),l}return r}async askpass(){let r=this.app.vault.adapter,n=r.getBasePath(),i=Ve.join(n,this.app.vault.configDir,"plugins","obsidian-git"),a=this.app.vault.configDir+"/plugins/obsidian-git/";await this.addAskPassScriptToExclude(),await Fr.writeFile(Ve.join(i,es),hT),await Fr.chmod(Ve.join(i,es),493),this.watchAbortController=new AbortController;let{signal:s}=this.watchAbortController;try{let o=Fr.watch(i,{signal:s});for await(let l of o){if(l.filename!=pd)continue;let c=a+pd;if(!await r.exists(c))continue;let u=await r.read(c),f;u.length>60&&(f=new Ti.Notice(u,999999));let d=await new ze(this.plugin,{allowEmpty:!0,obscure:!0,placeholder:u.length>60?"Enter a response to the message.":u}).openAndGetResult();f==null||f.hide(),await r.exists(c)&&await r.write(`${c}.response`,d!=null?d:"")}}catch(o){this.plugin.displayError(o),await Fr.rm(Ve.join(i,es),{force:!0}),await Fr.rm(Ve.join(i,`${es}.response`),{force:!0}),await new Promise(l=>setTimeout(l,5e3)),this.plugin.log("Retry watch for ask pass"),await this.askpass()}}async addAskPassScriptToExclude(){try{let r=await this.git.revparse(["--path-format=absolute","--git-path","info/exclude"]),n=Ve.join(this.app.vault.configDir,"plugins","obsidian-git",es),i=this.getRelativeRepoPath(n,!0);(await Fr.readFile(r,"utf-8")).split(` +`).some(l=>l.contains(i))||await Fr.appendFile(r,i+` +`)}catch(r){console.error("Error while adding askpass script to exclude file:",r)}}unload(){var r;(r=this.watchAbortController)==null||r.abort()}async status(r){let n=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let i=await this.git.status(n!=null?["--",n]:[]);this.plugin.setPluginState({gitAction:0});let a=i.files.map(s=>{let o=this.formatPath(s);return{path:o.path,from:o.from,index:s.index==="?"?"U":s.index,workingDir:s.working_dir==="?"?"U":s.working_dir,vaultPath:this.getRelativeVaultPath(o.path)}});return{all:a,changed:a.filter(s=>s.workingDir!==" "),staged:a.filter(s=>s.index!==" "&&s.index!="U"),conflicted:i.conflicted.map(s=>this.formatPath({path:s}).path)}}async submoduleAwareHeadRevisonInContainingDirectory(r){let n=this.getRelativeRepoPath(r),a=["-C",Ve.dirname(n),"rev-parse","HEAD"],s=this.git.raw(a);return s.catch(o=>console.warn("obsidian-git: rev-parse error:",o)),(await s).trim()}async getSubmodulePaths(){return new Promise(r=>{this.git.outputHandler((n,i,a,s)=>{if(!(s.contains("submodule")&&s.contains("foreach")))return;let o="",l=this.app.vault.adapter.getBasePath()+(this.plugin.settings.basePath?"/"+this.plugin.settings.basePath:"");i.on("data",c=>{o+=c.toString("utf8")}),i.on("end",()=>{let u=o.split(` +`).map(f=>{let d=f.match(/'([^']*)'/);if(d!=null)return l+"/"+d[1]+Dc.sep}).filter(f=>!!f);u.reverse(),r(u)})}),this.git.subModule(["foreach","--recursive",""]).then(()=>{this.git.outputHandler(()=>{})},n=>this.plugin.displayError(n))})}formatPath(r){function n(i){if(i!=null)return i.startsWith('"')&&i.endsWith('"')?i.substring(1,i.length-1):i}return r.from!=null?{from:n(r.from),path:n(r.path)}:{path:n(r.path)}}async blame(r,n,i){if(r=this.getRelativeRepoPath(r),!await this.isTracked(r))return"untracked";let a=await this.getSubmoduleOfFile(r),s=a?["-C",a.submodule]:[],o=a?a.relativeFilepath:r;s.push("blame","--porcelain"),i&&s.push("-w");let l=`-C${dd}`;switch(n){case"inactive":break;case"same-commit":s.push("-C",l);break;case"all-commits":s.push("-C","-C",l);break;default:pa(n)}s.push("--",o);let c=await this.git.raw(s);return jH(c)}async isTracked(r){let n=await this.getSubmoduleOfFile(r),i=n?["-C",n.submodule]:[],a=n?n.relativeFilepath:r;return i.push("ls-files","--",a),this.git.raw(i).then(s=>s.trim()!=="")}async commitAll({message:r}){if(this.plugin.settings.updateSubmodules){this.plugin.setPluginState({gitAction:4});let i=await this.getSubmodulePaths();for(let a of i)await this.git.cwd({path:a,root:!1}).add("-A"),await this.git.cwd({path:a,root:!1}).commit(await this.formatCommitMessage(r))}this.plugin.setPluginState({gitAction:3}),await this.git.add("-A"),this.plugin.setPluginState({gitAction:4});let n=await this.git.commit(await this.formatCommitMessage(r));return this.app.workspace.trigger("obsidian-git:head-change"),n.summary.changes}async commit({message:r,amend:n}){this.plugin.setPluginState({gitAction:4});let i=(await this.git.commit(await this.formatCommitMessage(r),n?["--amend"]:[])).summary.changes;return this.app.workspace.trigger("obsidian-git:head-change"),this.plugin.setPluginState({gitAction:0}),i}async stage(r,n){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.git.add(["--",r]),this.plugin.setPluginState({gitAction:0})}async stageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.add(r!=null?r:"-A"),this.plugin.setPluginState({gitAction:0})}async unstageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.reset(r!=null?["--",r]:[]),this.plugin.setPluginState({gitAction:0})}async unstage(r,n){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.git.reset(["--",r]),this.plugin.setPluginState({gitAction:0})}async discard(r){this.plugin.setPluginState({gitAction:3}),await this.isTracked(r)&&await this.git.checkout(["--",r]),this.plugin.setPluginState({gitAction:0})}async getUntrackedPaths(r){let n=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let i=["ls-files","--others","--exclude-standard","--directory"];n!=null&&i.push("--",n);let a=await this.git.raw(i);return this.plugin.setPluginState({gitAction:0}),a.split(/\r\n|\r|\n/).filter(s=>s.length>0)}async hashObject(r){r=this.getRelativeRepoPath(r);let n=await this.getSubmoduleOfFile(r),i=n?["-C",n.submodule]:[],a=n?n.relativeFilepath:r;return i.push("hash-object","--",a),this.git.raw(i)}async discardAll({dir:r}){return this.discard(r!=null?r:".")}async pull(){this.plugin.setPluginState({gitAction:2});try{this.plugin.settings.updateSubmodules&&await this.git.subModule(["update","--remote","--merge","--recursive"]);let r=await this.branchInfo(),n=await this.git.revparse([r.current]);if(!r.tracking&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring pull of main repo and updating submodules only.");return}await this.git.fetch();let i=await this.git.revparse([r.tracking]);if(n!==i){if(this.plugin.settings.syncMethod==="merge"||this.plugin.settings.syncMethod==="rebase")try{switch(this.plugin.settings.syncMethod){case"merge":await this.git.merge([r.tracking]);break;case"rebase":await this.git.rebase([r.tracking])}}catch(o){this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`);return}else if(this.plugin.settings.syncMethod==="reset")try{await this.git.raw(["update-ref",`refs/heads/${r.current}`,i]),await this.unstageAll({})}catch(o){this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`)}this.app.workspace.trigger("obsidian-git:head-change");let a=await this.git.revparse([r.current]);return(await this.git.diff([`${n}..${a}`,"--name-only"])).split(/\r\n|\r|\n/).filter(o=>o.length>0).map(o=>({path:o,workingDir:"P",vaultPath:this.getRelativeVaultPath(o)}))}else return[]}catch(r){this.convertErrors(r)}}async push(){this.plugin.setPluginState({gitAction:5});try{if(this.plugin.settings.updateSubmodules){let s=await this.git.env({...process.env,OBSIDIAN_GIT:1}).subModule(["foreach","--recursive",`tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`]);console.log(s)}let r=await this.git.status(),n=r.tracking,i=r.current;if(!n&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring push of main repo and updating submodules only.");return}let a=(await this.git.diffSummary([i,n,"--"])).changed;return await this.git.env({...process.env,OBSIDIAN_GIT:1}).push(),a}catch(r){this.convertErrors(r)}}async getUnpushedCommits(){let r=await this.git.status(),n=r.tracking,i=r.current;if(n==null||i==null)return 0;let[a,s]=ki(n);return(await this.getRemoteBranches(a)).includes(n)?(await this.git.diffSummary([i,n,"--"])).changed:(this.plugin.log(`Tracking branch ${n} does not exist on remote ${a}.`),0)}async canPush(){if(this.plugin.settings.updateSubmodules===!0)return!0;let r=await this.git.status(),n=r.tracking,i=r.current;return n?(await this.git.diffSummary([i,n,"--"])).changed!==0:!1}async checkRequirements(){return await this.isGitInstalled()?await this.git.checkIsRepo()?"valid":"missing-repo":"missing-git"}async branchInfo(){let r=await this.git.status(),n=await this.git.branch(["--no-color"]);return{current:r.current||void 0,tracking:r.tracking||void 0,branches:n.all}}async getRemoteUrl(r){try{return await this.git.remote(["get-url",r])||void 0}catch(n){if(String(n).contains(r))return;throw n}}async log(r,n=!0,i,a){let s;r&&(s=this.getRelativeRepoPath(r,n));let o={file:s,maxCount:i,"--diff-merges":"first-parent","--name-status":null};return a&&(o[a]=null),(await this.git.log(o)).all.map(c=>{var u,f,d,h;return{...c,author:{name:c.author_name,email:c.author_email},refs:c.refs.split(", ").filter(p=>p.length>0),diff:{...c.diff,files:(f=(u=c.diff)==null?void 0:u.files.map(p=>({...p,status:p.status,path:p.file,hash:c.hash,vaultPath:this.getRelativeVaultPath(p.file),fromPath:p.from,fromVaultPath:p.from!=null?this.getRelativeVaultPath(p.from):void 0,binary:p.binary})))!=null?f:[]},fileName:(h=(d=c.diff)==null?void 0:d.files.first())==null?void 0:h.file}})}async show(r,n,i=!0){let a=this.getRelativeRepoPath(n,i);return this.git.show([r+":"+a])}async checkout(r,n){if(n&&(r=`${n}/${r}`),await this.git.checkout(r),this.plugin.settings.submoduleRecurseCheckout){let i=await this.getSubmodulePaths();for(let a of i){let s=await this.git.cwd({path:a,root:!1}).branch();Object.keys(s.branches).includes(r)&&await this.git.cwd({path:a,root:!1}).checkout(r)}}}async createBranch(r){await this.git.checkout(["-b",r])}async deleteBranch(r,n){await this.git.branch([n?"-D":"-d",r])}async branchIsMerged(r){return!(await this.git.branch(["--no-merged"])).all.contains(r)}async init(){await this.git.init(!1)}async clone(r,n,i){await this.git.clone(r,Ve.join(this.app.vault.adapter.getBasePath(),n),i?["--depth",`${i}`]:[])}async setConfig(r,n){n==null?await this.git.raw(["config","--local","--unset",r]):await this.git.addConfig(r,n)}async getConfig(r){let i=(await this.git.listConfig("local")).all[r];if(typeof i=="string"||i==null)return i;throw new Error("Config value is not a string")}async fetch(r){await this.git.fetch(r!=null?[r]:[])}async setRemote(r,n){(await this.getRemotes()).includes(r)?await this.git.remote(["set-url",r,n]):await this.git.remote(["add",r,n])}async getRemoteBranches(r){let n=await this.git.branch(["-r","--list",`${r}*`]),i=[];for(let a in n.branches)i.push(n.branches[a].name);return i}async getRemotes(){let r=await this.git.remote([]);return r?r.trim().split(` +`):[]}async removeRemote(r){await this.git.removeRemote(r)}async updateUpstreamBranch(r){try{await this.git.branch(["--set-upstream-to",r])}catch(n){try{await this.git.branch(["--set-upstream",r])}catch(i){let[a,s]=ki(r),o=await this.branchInfo();await this.git.push(["--set-upstream",a,`${o.current}:${s}`])}}}updateGitPath(r){return this.setGitInstance()}updateBasePath(r){return this.setGitInstance(!0)}async getDiffString(r,n=!1,i){return n?await this.git.diff(["--cached","--",r]):i?await this.git.show([`${i}`,"--",r]):await this.git.diff(["--",r])}async diff(r,n,i){return await this.git.diff([`${n}..${i}`,"--",r])}async rawCommand(r){let n=r.split(" ");return await this.git.raw(n[0],...n.slice(1))}async getSubmoduleOfFile(r){if(!await this.app.vault.adapter.exists(Ve.dirname(r)))return;let n=await this.git.raw(["-C",Ve.dirname(r),"rev-parse","--show-toplevel"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message));if(n=n.trim(),(await this.git.raw(["-C",Ve.dirname(r),"rev-parse","--show-superproject-working-tree"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message))).trim()==="")return;let s=this.app.vault.adapter.getFullPath(Ve.normalize(r)),o=Ve.relative(n,s);return{submodule:n,relativeFilepath:o}}async getLastCommitTime(){try{let r=await this.git.log({n:1});if(r!=null&&r.latest!=null)return new Date(r.latest.date)}catch(r){if(r instanceof wr){if(r.message.contains("does not have any commits yet"))return}else throw r}}async isGitInstalled(){let r=this.plugin.localStorage.getGitPath(),n=await $c(r||"git",["--version"],{});if(n.error)if(Ti.Platform.isWin&&!r){this.plugin.log(`Git not found in PATH. Checking standard installation path(${hd}) of Git for Windows.`);let i=await $c(hd,["--version"]);if(i.error)return console.error(i.error),!1;this.useDefaultWindowsGitPath=!0}else return console.error(n.error),!1;else this.useDefaultWindowsGitPath=!1;return!0}convertErrors(r){if(r instanceof wr){let n=String(r.message);if(n.contains("Could not resolve host")||n.contains("Unable to resolve host")||n.match(/ssh: connect to host .*? port .*?: Operation timed out/)!=null||n.match(/ssh: connect to host .*? port .*?: Network is unreachable/)!=null||n.match(/ssh: connect to host .*? port .*?: Undefined error: 0/)!=null)throw new Co(n)}throw r}async isFileTrackedByLFS(r){try{return(await this.git.raw(["check-attr","filter",r])).includes("filter: lfs")}catch(n){let i=n instanceof Error?n.message:String(n);return this.plugin.displayError(`Error checking LFS status: ${i}`),!1}}},m3={hash:"000000",isZeroCommit:!0,summary:""};function jH(t){let r=t.replace(`\r +`,` +`).split(` +`),n={commits:new Map,hashPerLine:[void 0],originalFileLineNrPerLine:[void 0],finalFileLineNrPerLine:[void 0],groupSizePerStartingLine:new Map},i=1;for(let a=0;a=4&&r.groupSizePerStartingLine.set(e,parseInt(t[3])),parseInt(t[2])!==e)throw Error(`git-blame output is out of order: ${e} vs ${t[2]}`);return n}function BH(t,e,r){let n=t[0],i=t.slice(1).join(" "),a=e.hashPerLine[r],s=e.commits.get(a)||{hash:a,author:{},committer:{},previous:{}};switch(n){case"summary":s.summary=i;break;case"author":s.author.name=i;break;case"author-mail":s.author.email=h3(i);break;case"author-time":s.author.epochSeconds=parseInt(i);break;case"author-tz":s.author.tz=i;break;case"committer":s.committer.name=i;break;case"committer-mail":s.committer.email=h3(i);break;case"committer-time":s.committer.epochSeconds=parseInt(i);break;case"committer-tz":s.committer.tz=i;break;case"previous":s.previous.commitHash=i;break;case"filename":s.previous.filename=i;break}e.commits.set(a,s)}function HH(t){if(t.summary===void 0)throw Error(`Summary not provided for commit: ${t.hash}`);yv(t.author)&&(t.author=void 0),yv(t.committer)&&(t.committer=void 0),yv(t.previous)&&(t.previous=void 0),t.isZeroCommit=!!t.hash.match(/^0*$/)}function yv(t){return!t||Object.keys(t).length===0}function d3(t){return t.length>0&&t[0].trim()===t[0]}function h3(t){let e=t.startsWith("<")?t.substring(1):t;return e.endsWith(">")?e.substring(0,e.length-1):e}m();var Q3=require("@codemirror/state");m();var O3=require("@codemirror/state"),th=require("obsidian");m();var bv=class{constructor(){this.eventsPerFilepath=new Map;this.startRemoveStalesSubscribersInterval()}ifFilepathDefinedTransformSubscribers(e,r){if(e)return this.ensureInitialized(e),r(this.eventsPerFilepath.get(e))}forEachSubscriber(e){this.eventsPerFilepath.forEach(r=>r.forEach(e))}ensureInitialized(e){this.eventsPerFilepath.get(e)||this.eventsPerFilepath.set(e,new Set)}startRemoveStalesSubscribersInterval(){this.removeStalesSubscribersTimer=window.setInterval(()=>this==null?void 0:this.forEachSubscriber(e=>e==null?void 0:e.removeIfStale()),6e4)}clear(){window.clearInterval(this.removeStalesSubscribersTimer),this.eventsPerFilepath.clear()}},Do=new bv;m();var Jd=require("@codemirror/state"),T3=Ot(_v());m();var z=require("obsidian");m();m();function yn(){}yn.prototype={diff:function(e,r){var n,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=i.callback;typeof i=="function"&&(a=i,i={});var s=this;function o(S){return S=s.postProcess(S,i),a?(setTimeout(function(){a(S)},0),!0):S}e=this.castInput(e,i),r=this.castInput(r,i),e=this.removeEmpty(this.tokenize(e,i)),r=this.removeEmpty(this.tokenize(r,i));var l=r.length,c=e.length,u=1,f=l+c;i.maxEditLength!=null&&(f=Math.min(f,i.maxEditLength));var d=(n=i.timeout)!==null&&n!==void 0?n:1/0,h=Date.now()+d,p=[{oldPos:-1,lastComponent:void 0}],g=this.extractCommon(p[0],r,e,0,i);if(p[0].oldPos+1>=c&&g+1>=l)return o(g3(s,p[0].lastComponent,r,e,s.useLongestToken));var v=-1/0,y=1/0;function b(){for(var S=Math.max(v,-u);S<=Math.min(y,u);S+=2){var A=void 0,k=p[S-1],w=p[S+1];k&&(p[S-1]=void 0);var x=!1;if(w){var _=w.oldPos-S;x=w&&0<=_&&_=c&&g+1>=l)return o(g3(s,A.lastComponent,r,e,s.useLongestToken));p[S]=A,A.oldPos+1>=c&&(y=Math.min(y,S-1)),g+1>=l&&(v=Math.max(v,S+1))}u++}if(a)(function S(){setTimeout(function(){if(u>f||Date.now()>h)return a();b()||S()},0)})();else for(;u<=f&&Date.now()<=h;){var E=b();if(E)return E}},addToPath:function(e,r,n,i,a){var s=e.lastComponent;return s&&!a.oneChangePerToken&&s.added===r&&s.removed===n?{oldPos:e.oldPos+i,lastComponent:{count:s.count+1,added:r,removed:n,previousComponent:s.previousComponent}}:{oldPos:e.oldPos+i,lastComponent:{count:1,added:r,removed:n,previousComponent:s}}},extractCommon:function(e,r,n,i,a){for(var s=r.length,o=n.length,l=e.oldPos,c=l-i,u=0;c+1h.length?g:h}),f.value=t.join(d)}else f.value=t.join(r.slice(c,c+f.count));c+=f.count,f.added||(u+=f.count)}}return a}var UH=new yn;function E3(t,e,r){return UH.diff(t,e,r)}function v3(t,e){var r;for(r=0;re.length&&(r=t.length-e.length);var n=e.length;t.length0&&e[s]!=e[a];)a=i[a];e[s]==e[a]&&a++}a=0;for(var o=r;o0&&t[o]!=e[a];)a=i[a];t[o]==e[a]&&a++}return a}var zd="a-zA-Z0-9_\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",zH=new RegExp("[".concat(zd,"]+|\\s+|[^").concat(zd,"]"),"ug"),qd=new yn;qd.equals=function(t,e,r){return r.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t.trim()===e.trim()};qd.tokenize=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;if(e.intlSegmenter){if(e.intlSegmenter.resolvedOptions().granularity!="word")throw new Error('The segmenter passed must have a granularity of "word"');r=Array.from(e.intlSegmenter.segment(t),function(a){return a.segment})}else r=t.match(zH)||[];var n=[],i=null;return r.forEach(function(a){/\s/.test(a)?i==null?n.push(a):n.push(n.pop()+a):/\s/.test(i)?n[n.length-1]==i?n.push(n.pop()+a):n.push(i+a):n.push(a),i=a}),n};qd.join=function(t){return t.map(function(e,r){return r==0?e:e.replace(/^\s+/,"")}).join("")};qd.postProcess=function(t,e){if(!t||e.oneChangePerToken)return t;var r=null,n=null,i=null;return t.forEach(function(a){a.added?n=a:a.removed?i=a:((n||i)&&b3(r,i,n,a),r=a,n=null,i=null)}),(n||i)&&b3(r,i,n,null),t};function b3(t,e,r,n){if(e&&r){var i=e.value.match(/^\s*/)[0],a=e.value.match(/\s*$/)[0],s=r.value.match(/^\s*/)[0],o=r.value.match(/\s*$/)[0];if(t){var l=v3(i,s);t.value=Ev(t.value,s,l),e.value=Lc(e.value,l),r.value=Lc(r.value,l)}if(n){var c=y3(a,o);n.value=Sv(n.value,o,c),e.value=Gd(e.value,c),r.value=Gd(r.value,c)}}else if(r)t&&(r.value=r.value.replace(/^\s*/,"")),n&&(n.value=n.value.replace(/^\s*/,""));else if(t&&n){var u=n.value.match(/^\s*/)[0],f=e.value.match(/^\s*/)[0],d=e.value.match(/\s*$/)[0],h=v3(u,f);e.value=Lc(e.value,h);var p=y3(Lc(u,h),d);e.value=Gd(e.value,p),n.value=Sv(n.value,u,p),t.value=Ev(t.value,u,u.slice(0,u.length-p.length))}else if(n){var g=n.value.match(/^\s*/)[0],v=e.value.match(/\s*$/)[0],y=w3(v,g);e.value=Gd(e.value,y)}else if(t){var b=t.value.match(/\s*$/)[0],E=e.value.match(/^\s*/)[0],S=w3(b,E);e.value=Lc(e.value,S)}}var A3=new yn;A3.tokenize=function(t){var e=new RegExp("(\\r?\\n)|[".concat(zd,"]+|[^\\S\\n\\r]+|[^").concat(zd,"]"),"ug");return t.match(e)||[]};function k3(t,e,r){return A3.diff(t,e,r)}var Wd=new yn;Wd.tokenize=function(t,e){e.stripTrailingCr&&(t=t.replace(/\r\n/g,` +`));var r=[],n=t.split(/(\n|\r\n)/);n[n.length-1]||n.pop();for(var i=0;it.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?f(I.lines.slice(-s.context)):[],h-=g.length,p-=g.length)}(C=g).push.apply(C,xv(T.map(function(le){return(_.added?"+":"-")+le}))),_.added?y+=T.length:v+=T.length}else{if(h)if(T.length<=s.context*2&&E(0,ma.normalizePath)(a.substring(e.length))):i=n,i}async mkdir(e){return this.adapter.mkdir(e)}async rmdir(e,r){var n,i;return this.adapter.rmdir(e,(i=(n=r==null?void 0:r.options)==null?void 0:n.recursive)!=null?i:!1)}async stat(e){if(e.endsWith(this.gitDir+"/index")){if(this.index!==void 0&&this.indexctime!=null&&this.indexmtime!=null)return{isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1,size:this.index.byteLength,type:"file",ctimeMs:this.indexctime,mtimeMs:this.indexmtime};{let n=await this.adapter.stat(e);if(n==null)throw{code:"ENOENT"};return this.indexctime=n.ctime,this.indexmtime=n.mtime,{ctimeMs:n.ctime,mtimeMs:n.mtime,size:n.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}}}e==="."&&(e="/");let r=this.vault.getAbstractFileByPath(e);if(this.maybeLog("Stat: "+e),r instanceof ma.TFile)return this.maybeLog("Reuse stat"),{ctimeMs:r.stat.ctime,mtimeMs:r.stat.mtime,size:r.stat.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1};{let n=await this.adapter.stat(e);if(n)return{ctimeMs:n.ctime,mtimeMs:n.mtime,size:n.size,type:n.type==="folder"?"directory":n.type,isFile:()=>n.type==="file",isDirectory:()=>n.type==="folder",isSymbolicLink:()=>!1};throw{code:"ENOENT"}}}async unlink(e){return this.adapter.remove(e)}async lstat(e){return this.stat(e)}async readlink(e){throw new Error(`readlink of (${e}) is not implemented.`)}async symlink(e){throw new Error(`symlink of (${e}) is not implemented.`)}async saveAndClear(){this.index!==void 0&&await this.adapter.writeBinary(this.plugin.gitManager.getRelativeVaultPath(this.gitDir+"/index"),this.index,{ctime:this.indexctime,mtime:this.indexmtime}),this.clearIndex()}clearIndex(){this.index=void 0,this.indexctime=void 0,this.indexmtime=void 0}get gitDir(){return this.plugin.settings.gitDir||".git"}maybeLog(e){}};var wn=class extends $o{constructor(r){super(r);this.FILE=0;this.HEAD=1;this.WORKDIR=2;this.STAGE=3;this.status_mapping={"000":" ","003":"AD","020":"??","022":"A ","023":"AM",100:"D ",101:" D",103:"MD",110:"DA",111:" ",113:"MM",120:"DA",121:" M",122:"M ",123:"MM"};this.noticeLength=999999;this.fs=new Xd(this.app.vault,this.plugin)}getRepo(){return{fs:this.fs,dir:this.plugin.settings.basePath,gitdir:this.plugin.settings.gitDir||void 0,onAuth:()=>{var r,n;return{username:(r=this.plugin.localStorage.getUsername())!=null?r:void 0,password:(n=this.plugin.localStorage.getPassword())!=null?n:void 0}},onAuthFailure:async()=>{new rs.Notice("Authentication failed. Please try with different credentials");let r=await new ze(this.plugin,{placeholder:"Specify your username"}).openAndGetResult();if(r){let n=await new ze(this.plugin,{placeholder:"Specify your password/personal access token"}).openAndGetResult();if(n)return this.plugin.localStorage.setUsername(r),this.plugin.localStorage.setPassword(n),{username:r,password:n}}return{cancel:!0}},http:{async request({url:r,method:n,headers:i,body:a}){let s;a&&(s=await iU(a));let o=await(0,rs.requestUrl)({url:r,method:n,headers:i,body:s,throw:!1});return{url:r,method:n,headers:o.headers,body:nU(o.arrayBuffer),statusCode:o.status,statusMessage:o.status.toString()}}}}}async wrapFS(r){try{let n=await r;return await this.fs.saveAndClear(),n}catch(n){throw await this.fs.saveAndClear(),n}}async status(r){let n,i=window.setTimeout(()=>{n=new rs.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{this.plugin.setPluginState({gitAction:1});let a={...this.getRepo()};(r==null?void 0:r.path)!=null&&(a.filepaths=[`${r.path}/`]);let s=(await this.wrapFS(re.default.statusMatrix(a))).map(f=>this.getFileStatusResult(f)),o=[],l=[],c=[];for(let f of s)f.workingDir!==" "&&o.push(f),f.index!==" "&&f.index!=="U"&&l.push(f),(f.index!=" "||f.workingDir!=" ")&&c.push(f);let u=[];return window.clearTimeout(i),n==null||n.hide(),{all:c,changed:o,staged:l,conflicted:u}}catch(a){throw window.clearTimeout(i),n==null||n.hide(),this.plugin.displayError(a),a}}async commitAll({message:r,status:n,unstagedFiles:i}){try{return await this.checkAuthorInfo(),await this.stageAll({status:n,unstagedFiles:i}),this.commit({message:r})}catch(a){throw this.plugin.displayError(a),a}}async commit({message:r}){try{await this.checkAuthorInfo(),this.plugin.setPluginState({gitAction:4});let n=await this.formatCommitMessage(r),i=this.plugin.localStorage.getConflict(),a;if(i){let s=await this.branchInfo();a=[s.current,s.tracking]}await this.wrapFS(re.default.commit({...this.getRepo(),message:n,parent:a})),this.plugin.localStorage.setConflict(!1);return}catch(n){throw this.plugin.displayError(n),n}}async stage(r,n){let i=this.getRelativeRepoPath(r,n),a;n?a=r:a=this.getRelativeVaultPath(r);try{this.plugin.setPluginState({gitAction:3}),await this.app.vault.adapter.exists(a)?await this.wrapFS(re.default.add({...this.getRepo(),filepath:i})):await this.wrapFS(re.default.remove({...this.getRepo(),filepath:i}))}catch(s){throw this.plugin.displayError(s),s}}async stageAll({dir:r,status:n,unstagedFiles:i}){try{if(n)await Promise.all(n.changed.map(a=>a.workingDir!=="D"?this.wrapFS(re.default.add({...this.getRepo(),filepath:a.path})):re.default.remove({...this.getRepo(),filepath:a.path})));else{let a=i!=null?i:await this.getUnstagedFiles(r!=null?r:".");await Promise.all(a.map(({path:s,type:o})=>o=="D"?re.default.remove({...this.getRepo(),filepath:s}):this.wrapFS(re.default.add({...this.getRepo(),filepath:s}))))}}catch(a){throw this.plugin.displayError(a),a}}async unstage(r,n){try{this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.wrapFS(re.default.resetIndex({...this.getRepo(),filepath:r}))}catch(i){throw this.plugin.displayError(i),i}}async unstageAll({dir:r,status:n}){try{let i;n?i=n.staged.map(a=>a.path):i=(await this.getStagedFiles(r!=null?r:".")).map(({path:s})=>s),await this.wrapFS(Promise.all(i.map(a=>re.default.resetIndex({...this.getRepo(),filepath:a}))))}catch(i){throw this.plugin.displayError(i),i}}async discard(r){try{this.plugin.setPluginState({gitAction:3}),await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:[r],force:!0}))}catch(n){throw this.plugin.displayError(n),n}}async discardAll({dir:r,status:n}){let i=[];n?r!=null?i=n.changed.filter(a=>a.workingDir!="U"&&a.path.startsWith(r)).map(a=>a.path):i=n.changed.filter(a=>a.workingDir!="U").map(a=>a.path):i=(await this.getUnstagedFiles(r)).filter(a=>a.type!="A").map(({path:a})=>a);try{await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:i,force:!0}))}catch(a){throw this.plugin.displayError(a),a}}async getUntrackedPaths(r){let n=[];if(r.status)for(let i of r.status.changed)i.index=="U"&&i.workingDir==="U"&&i.path.startsWith(r.path!=null?`${r.path}/`:"")&&n.push(i.path);else{let i=await this.status({path:r==null?void 0:r.path});for(let a of i.changed)a.index==="U"&&a.workingDir==="U"&&n.push(a.path)}return n}getProgressText(r,n){let i=`${r} progress:`;return n.phase&&(i=`${i} ${n.phase}:`),n.loaded&&(i=`${i} ${n.loaded}`,n.total&&(i=`${i} of ${n.total}`)),i}resolveRef(r){return this.wrapFS(re.default.resolveRef({...this.getRepo(),ref:r}))}async pull(){let r=this.showNotice("Initializing pull");try{this.plugin.setPluginState({gitAction:2});let n=await this.resolveRef("HEAD");await this.fetch();let i=await this.branchInfo();await this.checkAuthorInfo(),(await this.wrapFS(re.default.merge({...this.getRepo(),ours:i.current,theirs:i.tracking,abortOnConflict:!1}))).alreadyMerged||await this.wrapFS(re.default.checkout({...this.getRepo(),ref:i.current,onProgress:l=>{r!==void 0&&(r.noticeEl.innerText=this.getProgressText("Checkout",l))},remote:i.remote})),r==null||r.hide();let s=await this.resolveRef("HEAD"),o=await this.getFileChangesCount(n,s);return this.showNotice("Finished pull",!1),o.map(l=>({path:l.path,workingDir:"P",index:"P",vaultPath:this.getRelativeVaultPath(l.path)}))}catch(n){throw r==null||r.hide(),n instanceof re.Errors.MergeConflictError&&await this.plugin.handleConflict(n.data.filepaths.map(i=>this.getRelativeVaultPath(i))),this.plugin.displayError(n),n}}async push(){if(!await this.canPush())return 0;let r=this.showNotice("Initializing push");try{this.plugin.setPluginState({gitAction:1});let n=await this.branchInfo(),i=n.tracking,a=n.current,s=(await this.getFileChangesCount(a,i)).length;this.plugin.setPluginState({gitAction:5});let o=await this.getCurrentRemote();return await this.wrapFS(re.default.push({...this.getRepo(),remote:o,onProgress:l=>{r!==void 0&&(r.noticeEl.innerText=this.getProgressText("Pushing",l))}})),r==null||r.hide(),s}catch(n){throw r==null||r.hide(),this.plugin.displayError(n),n}}async getUnpushedCommits(){let r=await this.branchInfo(),n=r.tracking,i=r.current;if(n==null||i==null)return 0;let a=await this.resolveRef(i),s=await this.resolveRef(n);return(await this.getFileChangesCount(a,s)).length}async canPush(){let r=await this.branchInfo(),n=r.tracking,i=r.current,a=await this.resolveRef(i),s=await this.resolveRef(n);return a!=s}async checkRequirements(){return await this.plugin.app.vault.adapter.exists(`${this.getRepo().dir}/.git/HEAD`)?"valid":"missing-repo"}async branchInfo(){var r,n;try{let i=await re.default.currentBranch(this.getRepo())||"",a=await re.default.listBranches(this.getRepo()),s=(r=await this.getConfig(`branch.${i}.remote`))!=null?r:"origin",o=(n=await this.getConfig(`branch.${i}.merge`))==null?void 0:n.split("refs/heads")[1],l=o?s+o:void 0;return{current:i,tracking:l,branches:a,remote:s}}catch(i){throw this.plugin.displayError(i),i}}async getCurrentRemote(){var i;let r=await re.default.currentBranch(this.getRepo())||"";return(i=await this.getConfig(`branch.${r}.remote`))!=null?i:"origin"}async checkout(r,n){try{return this.wrapFS(re.default.checkout({...this.getRepo(),ref:r,force:!!n,remote:n}))}catch(i){throw this.plugin.displayError(i),i}}async createBranch(r){try{await this.wrapFS(re.default.branch({...this.getRepo(),ref:r,checkout:!0}))}catch(n){throw this.plugin.displayError(n),n}}async deleteBranch(r){try{await this.wrapFS(re.default.deleteBranch({...this.getRepo(),ref:r}))}catch(n){throw this.plugin.displayError(n),n}}branchIsMerged(r){return Promise.resolve(!0)}async init(){try{await this.wrapFS(re.default.init(this.getRepo()))}catch(r){throw this.plugin.displayError(r),r}}async clone(r,n,i){let a=this.showNotice("Initializing clone");try{await this.wrapFS(re.default.clone({...this.getRepo(),dir:n,url:r,depth:i,onProgress:s=>{a!==void 0&&(a.noticeEl.innerText=this.getProgressText("Cloning",s))}})),a==null||a.hide()}catch(s){throw a==null||a.hide(),this.plugin.displayError(s),s}}async setConfig(r,n){try{return this.wrapFS(re.default.setConfig({...this.getRepo(),path:r,value:n}))}catch(i){throw this.plugin.displayError(i),i}}async getConfig(r){try{return this.wrapFS(re.default.getConfig({...this.getRepo(),path:r}))}catch(n){throw this.plugin.displayError(n),n}}async fetch(r){let n=this.showNotice("Initializing fetch");try{let i={...this.getRepo(),onProgress:a=>{n!==void 0&&(n.noticeEl.innerText=this.getProgressText("Fetching",a))},remote:r!=null?r:await this.getCurrentRemote()};await this.wrapFS(re.default.fetch(i)),n==null||n.hide()}catch(i){throw this.plugin.displayError(i),n==null||n.hide(),i}}async setRemote(r,n){try{await this.wrapFS(re.default.addRemote({...this.getRepo(),remote:r,url:n,force:!0}))}catch(i){throw this.plugin.displayError(i),i}}async getRemoteBranches(r){let n=[];return n.push(...await this.wrapFS(re.default.listBranches({...this.getRepo(),remote:r}))),n.remove("HEAD"),n=n.map(i=>`${r}/${i}`),n}async getRemotes(){return(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).map(r=>r.remote)}async removeRemote(r){await this.wrapFS(re.default.deleteRemote({...this.getRepo(),remote:r}))}async getRemoteUrl(r){var n;return(n=(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).filter(i=>i.remote==r)[0])==null?void 0:n.url}async log(r,n=!0,i,a){let s=await this.wrapFS(re.default.log({...this.getRepo(),depth:i,ref:a}));return Promise.all(s.map(async o=>{let l=o.commit.message.split(` + +`);return{message:l[0],author:{name:o.commit.author.name,email:o.commit.author.email},body:l.slice(1).join(` + +`),date:new Date(o.commit.committer.timestamp).toDateString(),diff:{changed:0,files:(await this.getFileChangesCount(o.commit.parent.first(),o.oid)).map(c=>({path:c.path,status:c.type,vaultPath:this.getRelativeVaultPath(c.path),hash:o.oid}))},hash:o.oid,refs:[]}}))}updateBasePath(r){return this.getRepo().dir=r,Promise.resolve()}async updateUpstreamBranch(r){let[n,i]=ki(r),a=await this.branchInfo();await this.wrapFS(re.default.push({...this.getRepo(),remote:n,remoteRef:i})),await this.setConfig(`branch.${a.current}.merge`,`refs/heads/${i}`)}updateGitPath(r){return Promise.resolve()}async getFileChangesCount(r,n){return this.walkDifference({walkers:[re.default.TREE({ref:r}),re.default.TREE({ref:n})]})}async walkDifference({walkers:r,dir:n}){return await this.wrapFS(re.default.walk({...this.getRepo(),trees:r,map:async function(a,[s,o]){if(!pv(a,n))return null;if(await(s==null?void 0:s.type())==="tree"||await(o==null?void 0:o.type())==="tree")return;let l=await(s==null?void 0:s.oid()),c=await(o==null?void 0:o.oid()),u="equal";if(l!==c&&(u="M"),l===void 0&&(u="A"),c===void 0&&(u="D"),l===void 0&&c===void 0&&(console.log("Something weird happened:"),console.log(s),console.log(o)),u!=="equal")return{path:a,type:u}}}))}async getStagedFiles(r="."){return(await this.walkDifference({walkers:[re.default.TREE({ref:"HEAD"}),re.default.STAGE()],dir:r})).map(i=>({vaultPath:this.getRelativeVaultPath(i.path),path:i.path}))}async getUnstagedFiles(r="."){let n,i=window.setTimeout(()=>{n=new rs.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{let a=this.getRepo(),s=await this.wrapFS(re.default.walk({...a,trees:[re.default.WORKDIR(),re.default.STAGE()],map:async function(o,[l,c]){if(!c&&l&&await re.default.isIgnored({...a,filepath:o})||!pv(o,r))return null;let[u,f]=await Promise.all([l&&l.type(),c&&c.type()]),d=[u,f].includes("blob");if((u==="tree"||u==="special")&&!d)return;if(f==="commit")return null;if((f==="tree"||f==="special")&&!d)return;let h=f==="blob"?await c.oid():void 0,p;return u==="blob"&&f!=="blob"?p="42":u==="blob"&&(p=await l.oid()),p?h?p!==h?{path:o,type:"M"}:null:{path:o,type:"A"}:{path:o,type:"D"}}}));return window.clearTimeout(i),n==null||n.hide(),s}catch(a){throw window.clearTimeout(i),n==null||n.hide(),this.plugin.displayError(a),a}}async getDiffString(r,n=!1,i){let a=this.getRelativeVaultPath(r),s=async(c,[u])=>{if(r==c){let f=await u.oid();return(await re.default.readBlob({...this.getRepo(),oid:f})).blob}};if(i){let c=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:i}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h}),u=await re.default.readCommit({...this.getRepo(),oid:i}),f=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:u.commit.parent.first()}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h});return Yd(a,f!=null?f:"",c!=null?c:"")}let o=(await re.default.walk({...this.getRepo(),trees:[re.default.STAGE()],map:s})).first(),l=new TextDecoder().decode(o);if(n){let c=await this.resolveRef("HEAD").then(f=>(0,re.readBlob)({...this.getRepo(),filepath:r,oid:f})).then(f=>new TextDecoder().decode(f.blob)).catch(f=>{if(!(f instanceof re.default.Errors.NotFoundError))throw f});return Yd(a,c!=null?c:"",l)}else{let c;return await this.app.vault.adapter.exists(a)?c=await this.app.vault.adapter.read(a):c="",Yd(a,l,c)}}async getLastCommitTime(){let r=this.getRepo(),n=await this.resolveRef("HEAD"),a=(await re.default.readCommit({...r,oid:n})).commit.committer.timestamp;return new Date(a*1e3)}getFileStatusResult(r){let n=this.status_mapping[`${r[this.HEAD]}${r[this.WORKDIR]}${r[this.STAGE]}`];return{index:n[0]=="?"?"U":n[0],workingDir:n[1]=="?"?"U":n[1],path:r[this.FILE],vaultPath:this.getRelativeVaultPath(r[this.FILE])}}async checkAuthorInfo(){let r=await this.getConfig("user.name"),n=await this.getConfig("user.email");if(!r||!n)throw Error("Git author name and email are not set. Please set both fields in the settings.")}showNotice(r,n=!0){if(!this.plugin.settings.disablePopups)return new rs.Notice(r,n?this.noticeLength:void 0)}};async function*nU(t){yield new Uint8Array(t)}async function iU(t){let e=new ReadableStream({async start(n){for await(let i of t)n.enqueue(i);n.close()}});return await new Response(e).arrayBuffer()}var aU="https://momentjs.com/docs/#/parsing/string-format/",sU="https://publish.obsidian.md/git-doc/Line+Authoring",Kd=class extends z.PluginSettingTab{constructor(r,n){super(r,n);this.plugin=n;this.lineAuthorColorSettings=new Map}get settings(){return this.plugin.settings}display(){let{containerEl:r}=this,n=this.plugin,i;n.settings.differentIntervalCommitAndPush?i="commit":i="commit-and-sync";let a=n.gitReady;r.empty(),a||(r.createEl("p",{text:"Git is not ready. When all settings are correct you can configure commit-sync, etc."}),r.createEl("br"));let s;if(a){new z.Setting(r).setName("Automatic").setHeading(),new z.Setting(r).setName("Split timers for automatic commit and sync").setDesc("Enable to use one interval for commit and another for sync.").addToggle(u=>u.setValue(n.settings.differentIntervalCommitAndPush).onChange(async f=>{n.settings.differentIntervalCommitAndPush=f,await n.saveSettings(),n.automaticsManager.reload("commit","push"),this.refreshDisplayWithDelay()})),new z.Setting(r).setName(`Auto ${i} interval (minutes)`).setDesc(`${n.settings.differentIntervalCommitAndPush?"Commit":"Commit and sync"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoSaveInterval"}),u.setPlaceholder(String(Xe.autoSaveInterval)),u.onChange(async f=>{f!==""?n.settings.autoSaveInterval=Number(f):n.settings.autoSaveInterval=Xe.autoSaveInterval,await n.saveSettings(),n.automaticsManager.reload("commit")})}),s=new z.Setting(r).setName(`Auto ${i} after stopping file edits`).setDesc(`Requires the ${i} interval not to be 0. + If turned on, do auto ${i} every ${c3(n.settings.autoSaveInterval)} after stopping file edits. + This also prevents auto ${i} while editing a file. If turned off, it's independent from the last file edit.`).addToggle(u=>u.setValue(n.settings.autoBackupAfterFileChange).onChange(async f=>{n.settings.autoBackupAfterFileChange=f,this.refreshDisplayWithDelay(),await n.saveSettings(),n.automaticsManager.reload("commit")})),this.mayDisableSetting(s,n.settings.setLastSaveToLastCommit),s=new z.Setting(r).setName(`Auto ${i} after latest commit`).setDesc(`If turned on, sets last auto ${i} timestamp to the latest commit timestamp. This reduces the frequency of auto ${i} when doing manual commits.`).addToggle(u=>u.setValue(n.settings.setLastSaveToLastCommit).onChange(async f=>{n.settings.setLastSaveToLastCommit=f,await n.saveSettings(),n.automaticsManager.reload("commit"),this.refreshDisplayWithDelay()})),this.mayDisableSetting(s,n.settings.autoBackupAfterFileChange),s=new z.Setting(r).setName("Auto push interval (minutes)").setDesc("Push commits every X minutes. Set to 0 (default) to disable.").addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoPushInterval"}),u.setPlaceholder(String(Xe.autoPushInterval)),u.onChange(async f=>{f!==""?n.settings.autoPushInterval=Number(f):n.settings.autoPushInterval=Xe.autoPushInterval,await n.saveSettings(),n.automaticsManager.reload("push")})}),this.mayDisableSetting(s,!n.settings.differentIntervalCommitAndPush),new z.Setting(r).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoPullInterval"}),u.setPlaceholder(String(Xe.autoPullInterval)),u.onChange(async f=>{f!==""?n.settings.autoPullInterval=Number(f):n.settings.autoPullInterval=Xe.autoPullInterval,await n.saveSettings(),n.automaticsManager.reload("pull")})}),new z.Setting(r).setName(`Auto ${i} only staged files`).setDesc(`If turned on, only staged files are committed on ${i}. If turned off, all changed files are committed.`).addToggle(u=>u.setValue(n.settings.autoCommitOnlyStaged).onChange(async f=>{n.settings.autoCommitOnlyStaged=f,await n.saveSettings()})),new z.Setting(r).setName(`Specify custom commit message on auto ${i}`).setDesc("You will get a pop up to specify your message.").addToggle(u=>u.setValue(n.settings.customMessageOnAutoBackup).onChange(async f=>{n.settings.customMessageOnAutoBackup=f,await n.saveSettings(),this.refreshDisplayWithDelay()})),s=new z.Setting(r).setName(`Commit message on auto ${i}`).setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message).").addTextArea(u=>{u.setPlaceholder(Xe.autoCommitMessage).onChange(async f=>{f===""?n.settings.autoCommitMessage=Xe.autoCommitMessage:n.settings.autoCommitMessage=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"autoCommitMessage"})}),this.mayDisableSetting(s,n.settings.customMessageOnAutoBackup),new z.Setting(r).setName("Commit message").setHeading(),new z.Setting(r).setName("Commit message on manual commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message).").addTextArea(u=>{u.setPlaceholder(Xe.commitMessage).onChange(async f=>{f===""?n.settings.commitMessage=Xe.commitMessage:n.settings.commitMessage=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"commitMessage"})}),new z.Setting(r).setName("Commit message script").setDesc("A script that is run using 'sh -c' to generate the commit message. May be used to generate commit messages using AI tools. Available placeholders: {{hostname}}, {{date}}.").addText(u=>{u.onChange(async f=>{f===""?n.settings.commitMessageScript=Xe.commitMessageScript:n.settings.commitMessageScript=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"commitMessageScript"})});let c=new z.Setting(r).setName("{{date}} placeholder format").addMomentFormat(u=>u.setDefaultFormat(n.settings.commitDateFormat).setValue(n.settings.commitDateFormat).onChange(async f=>{n.settings.commitDateFormat=f,await n.saveSettings()}));c.descEl.innerHTML=` + Specify custom date format. E.g. "${l0}. See Moment.js for more formats.`,new z.Setting(r).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText(u=>{var f;return u.setValue((f=n.localStorage.getHostname())!=null?f:"").onChange(d=>{n.localStorage.setHostname(d)})}),new z.Setting(r).setName("Preview commit message").addButton(u=>u.setButtonText("Preview").onClick(async()=>{let f=await n.gitManager.formatCommitMessage(n.settings.commitMessage);new z.Notice(`${f}`)})),new z.Setting(r).setName("List filenames affected by commit in the commit body").addToggle(u=>u.setValue(n.settings.listChangedFilesInMessageBody).onChange(async f=>{n.settings.listChangedFilesInMessageBody=f,await n.saveSettings()})),new z.Setting(r).setName("Pull").setHeading(),n.gitManager instanceof Ce&&new z.Setting(r).setName("Merge strategy").setDesc("Decide how to integrate commits from your remote branch into your local branch.").addDropdown(u=>{let f={merge:"Merge",rebase:"Rebase",reset:"Other sync service (Only updates the HEAD without touching the working directory)"};u.addOptions(f),u.setValue(n.settings.syncMethod),u.onChange(async d=>{n.settings.syncMethod=d,await n.saveSettings()})}),new z.Setting(r).setName("Pull on startup").setDesc("Automatically pull commits when Obsidian starts.").addToggle(u=>u.setValue(n.settings.autoPullOnBoot).onChange(async f=>{n.settings.autoPullOnBoot=f,await n.saveSettings()})),new z.Setting(r).setName("Commit-and-sync").setDesc("Commit-and-sync with default settings means staging everything -> committing -> pulling -> pushing. Ideally this is a single action that you do regularly to keep your local and remote repository in sync.").setHeading(),s=new z.Setting(r).setName("Push on commit-and-sync").setDesc(`Most of the time you want to push after committing. Turning this off turns a commit-and-sync action into commit ${n.settings.pullBeforePush?"and pull ":""}only. It will still be called commit-and-sync.`).addToggle(u=>u.setValue(!n.settings.disablePush).onChange(async f=>{n.settings.disablePush=!f,this.refreshDisplayWithDelay(),await n.saveSettings()})),new z.Setting(r).setName("Pull on commit-and-sync").setDesc(`On commit-and-sync, pull commits as well. Turning this off turns a commit-and-sync action into commit ${n.settings.disablePush?"":"and push "}only.`).addToggle(u=>u.setValue(n.settings.pullBeforePush).onChange(async f=>{n.settings.pullBeforePush=f,this.refreshDisplayWithDelay(),await n.saveSettings()})),n.gitManager instanceof Ce&&(new z.Setting(r).setName("Line author information").setHeading(),this.addLineAuthorInfoSettings())}new z.Setting(r).setName("History view").setHeading(),new z.Setting(r).setName("Show Author").setDesc("Show the author of the commit in the history view.").addDropdown(c=>{let u={hide:"Hide",full:"Full",initials:"Initials"};c.addOptions(u),c.setValue(n.settings.authorInHistoryView),c.onChange(async f=>{n.settings.authorInHistoryView=f,await n.saveSettings(),await n.refresh()})}),new z.Setting(r).setName("Show Date").setDesc("Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date.").addToggle(c=>c.setValue(n.settings.dateInHistoryView).onChange(async u=>{n.settings.dateInHistoryView=u,await n.saveSettings(),await n.refresh()})),new z.Setting(r).setName("Source control view").setHeading(),new z.Setting(r).setName("Automatically refresh source control view on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option.").addToggle(c=>c.setValue(n.settings.refreshSourceControl).onChange(async u=>{n.settings.refreshSourceControl=u,await n.saveSettings()})),new z.Setting(r).setName("Source control view refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View.").addText(c=>{c.inputEl.type="number",this.setNonDefaultValue({text:c,settingsProperty:"refreshSourceControlTimer"}),c.setPlaceholder(String(Xe.refreshSourceControlTimer)),c.onChange(async f=>{f!==""&&Number.isInteger(Number(f))?n.settings.refreshSourceControlTimer=Math.max(Number(f),500):n.settings.refreshSourceControlTimer=Xe.refreshSourceControlTimer,await n.saveSettings(),n.setRefreshDebouncer()})}),new z.Setting(r).setName("Miscellaneous").setHeading(),n.gitManager instanceof Ce&&new z.Setting(r).setName("Diff view style").setDesc('Set the style for the diff view. Note that the actual diff in "Split" mode is not generated by Git, but the editor itself instead so it may differ from the diff generated by Git. One advantage of this is that you can edit the text in that view.').addDropdown(c=>{let u={split:"Split",git_unified:"Unified"};c.addOptions(u),c.setValue(n.settings.diffStyle),c.onChange(async f=>{n.settings.diffStyle=f,await n.saveSettings()})}),new z.Setting(r).setName("Disable informative notifications").setDesc("Disable informative notifications for git operations to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(n.settings.disablePopups).onChange(async u=>{n.settings.disablePopups=u,this.refreshDisplayWithDelay(),await n.saveSettings()})),new z.Setting(r).setName("Disable error notifications").setDesc("Disable error notifications of any kind to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(!n.settings.showErrorNotices).onChange(async u=>{n.settings.showErrorNotices=!u,await n.saveSettings()})),n.settings.disablePopups||new z.Setting(r).setName("Hide notifications for no changes").setDesc("Don't show notifications when there are no changes to commit or push.").addToggle(c=>c.setValue(n.settings.disablePopupsForNoChanges).onChange(async u=>{n.settings.disablePopupsForNoChanges=u,await n.saveSettings()})),new z.Setting(r).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(n.settings.showStatusBar).onChange(async u=>{n.settings.showStatusBar=u,await n.saveSettings()})),new z.Setting(r).setName("File menu integration").setDesc('Add "Stage", "Unstage" and "Add to .gitignore" actions to the file menu.').addToggle(c=>c.setValue(n.settings.showFileMenu).onChange(async u=>{n.settings.showFileMenu=u,await n.saveSettings()})),new z.Setting(r).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(n.settings.showBranchStatusBar).onChange(async u=>{n.settings.showBranchStatusBar=u,await n.saveSettings()})),new z.Setting(r).setName("Show the count of modified files in the status bar").addToggle(c=>c.setValue(n.settings.changedFilesInStatusBar).onChange(async u=>{n.settings.changedFilesInStatusBar=u,await n.saveSettings()})),n.gitManager instanceof wn?new z.Setting(r).setName("Authentication/commit author").setHeading():new z.Setting(r).setName("Commit author").setHeading(),n.gitManager instanceof wn&&new z.Setting(r).setName("Username on your git server. E.g. your username on GitHub").addText(c=>{var u;c.setValue((u=n.localStorage.getUsername())!=null?u:""),c.onChange(f=>{n.localStorage.setUsername(f)})}),n.gitManager instanceof wn&&new z.Setting(r).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText(c=>{c.inputEl.autocapitalize="off",c.inputEl.autocomplete="off",c.inputEl.spellcheck=!1,c.onChange(u=>{n.localStorage.setPassword(u)})}),n.gitReady&&new z.Setting(r).setName("Author name for commit").addText(async c=>{var u;c.setValue((u=await n.gitManager.getConfig("user.name"))!=null?u:""),c.onChange(async f=>{await n.gitManager.setConfig("user.name",f==""?void 0:f)})}),n.gitReady&&new z.Setting(r).setName("Author email for commit").addText(async c=>{var u;c.setValue((u=await n.gitManager.getConfig("user.email"))!=null?u:""),c.onChange(async f=>{await n.gitManager.setConfig("user.email",f==""?void 0:f)})}),new z.Setting(r).setName("Advanced").setDesc("These settings usually don't need to be changed, but may be required for special setups.").setHeading(),n.gitManager instanceof Ce&&(new z.Setting(r).setName("Update submodules").setDesc('"Commit-and-sync" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule.').addToggle(c=>c.setValue(n.settings.updateSubmodules).onChange(async u=>{n.settings.updateSubmodules=u,await n.saveSettings()})),n.settings.updateSubmodules&&new z.Setting(r).setName("Submodule recurse checkout/switch").setDesc("Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist).").addToggle(c=>c.setValue(n.settings.submoduleRecurseCheckout).onChange(async u=>{n.settings.submoduleRecurseCheckout=u,await n.saveSettings()}))),n.gitManager instanceof Ce&&new z.Setting(r).setName("Custom Git binary path").addText(c=>{var u;c.setValue((u=n.localStorage.getGitPath())!=null?u:""),c.setPlaceholder("git"),c.onChange(f=>{n.localStorage.setGitPath(f),n.gitManager.updateGitPath(f||"git").catch(d=>n.displayError(d))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Additional environment variables").setDesc("Use each line for a new environment variable in the format KEY=VALUE .").addTextArea(c=>{c.setPlaceholder("GIT_DIR=/path/to/git/dir"),c.setValue(n.localStorage.getEnvVars().join(` +`)),c.onChange(u=>{n.localStorage.setEnvVars(u.split(` +`))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea(c=>{c.setValue(n.localStorage.getPATHPaths().join(` +`)),c.onChange(u=>{n.localStorage.setPATHPaths(u.split(` +`))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Reload with new environment variables").setDesc("Removing previously added environment variables will not take effect until Obsidian is restarted.").addButton(c=>{c.setButtonText("Reload"),c.setCta(),c.onClick(async()=>{await n.gitManager.setGitInstance()})}),new z.Setting(r).setName("Custom base path (Git repository path)").setDesc(` + Sets the relative path to the vault from which the Git binary should be executed. + Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows. + `).addText(c=>{c.setValue(n.settings.basePath),c.setPlaceholder("directory/directory-with-git-repo"),c.onChange(async u=>{n.settings.basePath=u,await n.saveSettings(),n.gitManager.updateBasePath(u||"").catch(f=>n.displayError(f))})}),new z.Setting(r).setName("Custom Git directory path (Instead of '.git')").setDesc('Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.').addText(c=>{c.setValue(n.settings.gitDir),c.setPlaceholder(".git"),c.onChange(async u=>{n.settings.gitDir=u,await n.saveSettings()})}),new z.Setting(r).setName("Disable on this device").setDesc("Disables the plugin on this device. This setting is not synced.").addToggle(c=>c.setValue(n.localStorage.getPluginDisabled()).onChange(u=>{n.localStorage.setPluginDisabled(u),u?n.unloadPlugin():n.init({fromReload:!0}).catch(f=>n.displayError(f)),new z.Notice("Obsidian must be restarted for the changes to take affect.")})),new z.Setting(r).setName("Support").setHeading(),new z.Setting(r).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton(c=>{c.buttonEl.outerHTML="Buy Me a Coffee at ko-fi.com"});let o=r.createDiv();o.setAttr("align","center"),o.setAttr("style","margin: var(--size-4-2)");let l=o.createEl("button");if(l.setText("Copy Debug Information"),l.onclick=async()=>{await window.navigator.clipboard.writeText(JSON.stringify({settings:this.plugin.settings,pluginVersion:this.plugin.manifest.version},null,4)),new z.Notice("Debug information copied to clipboard. May contain sensitive information!")},z.Platform.isDesktopApp){let c=r.createDiv();c.setAttr("align","center"),c.setText(`Debugging and logging: +You can always see the logs of this and every other plugin by opening the console with`);let u=r.createDiv();u.setAttr("align","center"),u.addClass("obsidian-git-shortcuts"),z.Platform.isMacOS===!0?u.createEl("kbd",{text:"CMD (\u2318) + OPTION (\u2325) + I"}):u.createEl("kbd",{text:"CTRL + SHIFT + I"})}}mayDisableSetting(r,n){n&&(r.setDisabled(n),r.setClass("obsidian-git-disabled"))}configureLineAuthorShowStatus(r){this.settings.lineAuthor.show=r,this.plugin.saveSettings(),r?this.plugin.lineAuthoringFeature.activateFeature():this.plugin.lineAuthoringFeature.deactivateFeature()}async lineAuthorSettingHandler(r,n){this.settings.lineAuthor[r]=n,await this.plugin.saveSettings(),this.plugin.lineAuthoringFeature.refreshLineAuthorViews()}beforeSaveSettings(){let r=this.settings.lineAuthor;r.authorDisplay!=="hide"&&(r.lastShownAuthorDisplay=r.authorDisplay),r.dateTimeFormatOptions!=="hide"&&(r.lastShownDateTimeFormatOptions=r.dateTimeFormatOptions)}addLineAuthorInfoSettings(){let r=new z.Setting(this.containerEl).setName("Show commit authoring information next to each line");if(this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform()||r.setDesc("Only available on desktop currently.").setDisabled(!0),r.descEl.innerHTML=` + Feature guide and quick examples
+ The commit hash, author name and authoring date can all be individually toggled.
Hide everything, to only show the age-colored sidebar.`,r.addToggle(n=>n.setValue(this.settings.lineAuthor.show).onChange(i=>{this.configureLineAuthorShowStatus(i),this.refreshDisplayWithDelay()})),this.settings.lineAuthor.show){let n=new z.Setting(this.containerEl).setName("Follow movement and copies across files and commits").setDesc("").addDropdown(a=>{a.addOptions({inactive:"Do not follow (default)","same-commit":"Follow within same commit","all-commits":"Follow within all commits (maybe slow)"}),a.setValue(this.settings.lineAuthor.followMovement),a.onChange(s=>this.lineAuthorSettingHandler("followMovement",s))});if(n.descEl.innerHTML=` + By default (deactivated), each line only shows the newest commit where it was changed. +
+ With same commit, cut-copy-paste-ing of text is followed within the same commit and the original commit of authoring will be shown. +
+ With all commits, cut-copy-paste-ing text inbetween multiple commits will be detected. +
+ It uses git-blame and + for matches (at least ${dd} characters) within the same (or all) commit(s), the originating commit's information is shown.`,new z.Setting(this.containerEl).setName("Show commit hash").addToggle(a=>{a.setValue(this.settings.lineAuthor.showCommitHash),a.onChange(s=>this.lineAuthorSettingHandler("showCommitHash",s))}),new z.Setting(this.containerEl).setName("Author name display").setDesc("If and how the author is displayed").addDropdown(a=>{let s={hide:"Hide",initials:"Initials (default)","first name":"First name","last name":"Last name",full:"Full name"};a.addOptions(s),a.setValue(this.settings.lineAuthor.authorDisplay),a.onChange(async o=>this.lineAuthorSettingHandler("authorDisplay",o))}),new z.Setting(this.containerEl).setName("Authoring date display").setDesc("If and how the date and time of authoring the line is displayed").addDropdown(a=>{let s={hide:"Hide",date:"Date (default)",datetime:"Date and time","natural language":"Natural language",custom:"Custom"};a.addOptions(s),a.setValue(this.settings.lineAuthor.dateTimeFormatOptions),a.onChange(async o=>{await this.lineAuthorSettingHandler("dateTimeFormatOptions",o),this.refreshDisplayWithDelay()})}),this.settings.lineAuthor.dateTimeFormatOptions==="custom"){let a=new z.Setting(this.containerEl);a.setName("Custom authoring date format").addText(s=>{s.setValue(this.settings.lineAuthor.dateTimeFormatCustomString),s.setPlaceholder("YYYY-MM-DD HH:mm"),s.onChange(async o=>{await this.lineAuthorSettingHandler("dateTimeFormatCustomString",o),a.descEl.innerHTML=this.previewCustomDateTimeDescriptionHtml(o)})}),a.descEl.innerHTML=this.previewCustomDateTimeDescriptionHtml(this.settings.lineAuthor.dateTimeFormatCustomString)}new z.Setting(this.containerEl).setName("Authoring date display timezone").addDropdown(a=>{let s={"viewer-local":"My local (default)","author-local":"Author's local",utc0000:"UTC+0000/Z"};a.addOptions(s),a.setValue(this.settings.lineAuthor.dateTimeTimezone),a.onChange(async o=>this.lineAuthorSettingHandler("dateTimeTimezone",o))}).descEl.innerHTML=` + The time-zone in which the authoring date should be shown. + Either your local time-zone (default), + the author's time-zone during commit creation or + UTC\xB100:00. + `;let i=new z.Setting(this.containerEl).setName("Oldest age in coloring");i.descEl.innerHTML=this.previewOldestAgeDescriptionHtml(this.settings.lineAuthor.coloringMaxAge)[0],i.addText(a=>{a.setPlaceholder("1y"),a.setValue(this.settings.lineAuthor.coloringMaxAge),a.onChange(async s=>{let[o,l]=this.previewOldestAgeDescriptionHtml(s);i.descEl.innerHTML=o,l&&(await this.lineAuthorSettingHandler("coloringMaxAge",s),this.refreshColorSettingsName("oldest"))})}),this.createColorSetting("newest"),this.createColorSetting("oldest"),new z.Setting(this.containerEl).setName("Text color").addText(a=>{a.setValue(this.settings.lineAuthor.textColorCss),a.onChange(async s=>{await this.lineAuthorSettingHandler("textColorCss",s)})}).descEl.innerHTML=` + The CSS color of the gutter text.
+ + It is highly recommended to use + + CSS variables + defined by themes + (e.g.
var(--text-muted)
or +
var(--text-on-accent)
, + because they automatically adapt to theme changes.
+ + See: + List of available CSS variables in Obsidian + + `,new z.Setting(this.containerEl).setName("Ignore whitespace and newlines in changes").addToggle(a=>{a.setValue(this.settings.lineAuthor.ignoreWhitespace),a.onChange(s=>this.lineAuthorSettingHandler("ignoreWhitespace",s))}).descEl.innerHTML=` + Whitespace and newlines are interpreted as + part of the document and in changes + by default (hence not ignored). + This makes the last line being shown as 'changed' + when a new subsequent line is added, + even if the previously last line's text is the same. +
+ If you don't care about purely-whitespace changes + (e.g. list nesting / quote indentation changes), + then activating this will provide more meaningful change detection. + `}}createColorSetting(r){let n=new z.Setting(this.containerEl).setName("").addText(i=>{let a=Rv(r,this.settings.lineAuthor),s=Rv(r,Xe.lineAuthor);i.setPlaceholder(mv(s)),i.setValue(mv(a)),i.onChange(async o=>{let l=n3(o);if(l!==void 0){let c=r==="newest"?"colorNew":"colorOld";await this.lineAuthorSettingHandler(c,l)}this.refreshColorSettingsDesc(r,l)})});this.lineAuthorColorSettings.set(r,n),this.refreshColorSettingsName(r),this.refreshColorSettingsDesc(r,Rv(r,this.settings.lineAuthor))}refreshColorSettingsName(r){let n=this.lineAuthorColorSettings.get(r);if(n){let i=r==="oldest"?`oldest (${this.settings.lineAuthor.coloringMaxAge} or older)`:"newest";n.nameEl.innerText=`Color for ${i} commits`}}refreshColorSettingsDesc(r,n){let i=this.lineAuthorColorSettings.get(r);i&&(i.descEl.innerHTML=this.colorSettingPreviewDescHtml(r,this.settings.lineAuthor,n!==void 0))}colorSettingPreviewDescHtml(r,n,i){let a=i?Mv(r,n):"rgba(127,127,127,0.3)",s=z.moment.unix(z.moment.now()/1e3).format("YYYY-MM-DD"),o=i?`abcdef Author Name ${s}`:"invalid color";return`Supports 'rgb(r,g,b)', 'hsl(h,s,l)', hex (#) and + named colors (e.g. 'black', 'purple'). Color preview: ${`
${o}
`}`}previewCustomDateTimeDescriptionHtml(r){let n=(0,z.moment)().format(r);return`
Format string to display the authoring date.
Currently: ${n}`}previewOldestAgeDescriptionHtml(r){let n=Zd(r);return[`The oldest age in the line author coloring. Everything older will have the same color. +
Smallest valid age is "1d". Currently: ${n!==void 0?`${n.asDays()} days`:"invalid!"}`,n]}setNonDefaultValue({settingsProperty:r,text:n}){let i=this.plugin.settings[r];Xe[r]!==i&&(typeof i=="string"||typeof i=="number"||typeof i=="boolean"?n.setValue(String(i)):n.setValue(JSON.stringify(i)))}refreshDisplayWithDelay(r=80){setTimeout(()=>this.display(),r)}};function Rv(t,e){return t==="oldest"?e.colorOld:e.colorNew}function Zd(t){let e=z.moment.duration("P"+t.toUpperCase());return e.isValid()&&e.asDays()&&e.asDays()>=1?e:void 0}function C3(t,e,r){if(!(t===void 0||e===void 0||r===void 0))return`head${t}-obj${e}-path${r}`}var P3=Jd.StateEffect.define();function R3(t,e,r){return r.update({effects:P3.of({key:t,la:e,lineOffsetsFromUnsavedChanges:new Map})})}var Lo=Jd.StateField.define({create:t=>{},update:(t,e)=>{for(let r of e.effects)if(r.is(P3))return r.value;return oU(e,t)},compare:(t,e)=>(t==null?void 0:t.key)===(e==null?void 0:e.key)});function Qd(t){var a;let e=T3.sha256.create();if(!t)return e;let{la:r,key:n,lineOffsetsFromUnsavedChanges:i}=t;e.update(r==="untracked"?"t":"f"),e.update(n);for(let[s,o]of(a=i.entries())!=null?a:[])e.update([s,o]);return e}var Qr={get:void 0,save:void 0};function M3(t,e){Qr.get=t,Qr.save=e}function eh(t){var e,r;return(r=(e=Zd(t.coloringMaxAge))==null?void 0:e.asDays())!=null?r:Zd(Xe.lineAuthor.coloringMaxAge).asDays()}function oU(t,e){if(e)return t.changes.empty||t.changes.iterChanges((r,n,i,a)=>{var p;let s=t.startState.doc,{newDoc:o}=t,l=s.lineAt(r).number,c=s.lineAt(n).number,u=o.lineAt(i).number,f=o.lineAt(a).number,d=c-l+1,h=f-u+1;for(let g=u;g<=f;g++){let v=(p=e.lineOffsetsFromUnsavedChanges.get(g))!=null?p:0,y=f===g,b=h-d;y&&(v+=b),e.lineOffsetsFromUnsavedChanges.set(g,v)}}),e}var Ov=class{constructor(e){this.state=e;this.subscribeMe()}notifyLineAuthoring(e,r){if(this.view===void 0){console.warn(`Git: View is not defined for editor cache key. Unforeseen situation. id: ${e}`);return}let n=this.view.state,i=R3(e,r,n);this.view.dispatch(i)}updateToNewState(e){let r=this.lastSeenPath&&this.filepath!=this.lastSeenPath;return this.state=e,r&&(this.unsubscribeMe(this.lastSeenPath),this.subscribeMe()),this}removeIfStale(){this.view.destroyed&&this.unsubscribeMe(this.lastSeenPath)}subscribeMe(){this.filepath!==void 0&&(Do.ifFilepathDefinedTransformSubscribers(this.filepath,e=>e.add(this)),this.lastSeenPath=this.filepath)}unsubscribeMe(e){Do.ifFilepathDefinedTransformSubscribers(e,r=>r.delete(this))}get filepath(){var e,r;return(r=(e=this.state.field(th.editorInfoField))==null?void 0:e.file)==null?void 0:r.path}get view(){return this.state.field(th.editorEditorField)}},I3=O3.StateField.define({create:t=>new Ov(t),update:(t,e)=>t.updateToNewState(e.state),compare:(t,e)=>t===e});m();function F3(){jo=void 0,Iv=[],rh=0,ih.clear(),ah.clear(),No.clear()}var jo,nh=()=>jo;function $3(t,e){var i;let r=e.length;if(r<((i=jo==null?void 0:jo.length)!=null?i:0))return;jo={gutter:t,length:r,text:e};let n=Qr.get();r!==n.gutterSpacingFallbackLength&&(n.gutterSpacingFallbackLength=r,Qr.save(n))}var Iv=[],lU=15,rh=0;function D3(t){Iv[rh]=t,rh=(rh+1)%lU}function L3(){return a3(Iv)}var ih=new Map,ah=new Map,No=new Set;m();var K3=require("@codemirror/state"),Z3=require("@codemirror/view");m();var Lv=require("@codemirror/view"),q3=Ot(_v()),lh=require("obsidian");m();m();var sh={x:-10,y:-10};function j3(){sh.x===-10&&window.addEventListener("mousedown",t=>{sh.x=t.clientX,sh.y=t.clientY})}function N3(){for(let t of No)if(cU(t,sh))return t}function cU(t,e){let{x:r,y:n,width:i,height:a}=t.getBoundingClientRect();return r<=e.x&&e.x<=r+i&&n<=e.y&&e.y<=n+a}m();var Nc={};var B3="data-commit";function H3(t,e,r){if(e.hasFocus())return;let n=N3();if(!n)return;let i=fU(n);i&&(!i.isZeroCommit&&!i.isWaitingGutter&&uU(i,t),Fv("showCommitHash",t),Fv("authorDisplay",t),Fv("dateTimeFormatOptions",t))}function uU(t,e){e.addItem(r=>r.setTitle("Copy commit hash").setIcon("copy").setSection("obs-git-line-author-copy").onClick(n=>navigator.clipboard.writeText(t.hash)))}function Fv(t,e){var l,c;let r,n,i=Nc.plugin.settings.lineAuthor,a=i[t],s=typeof a=="boolean"?a:a!=="hide",o=Xe.lineAuthor[t];if(t==="showCommitHash")r="Show commit hash",n=a;else if(t==="authorDisplay"){let u=(l=i.lastShownAuthorDisplay)!=null?l:o;r="Show author "+(s?a:u),n=s?"hide":u}else if(t==="dateTimeFormatOptions"){let u=(c=i.lastShownDateTimeFormatOptions)!=null?c:o;r="Show "+(s?a:u),r+=r.contains("date")?"":" date",n=s?"hide":u}else pa(t);e.addItem(u=>u.setTitle(r).setSection("obs-git-line-author-configure").setChecked(s).onClick(f=>{var d,h;return(h=(d=Nc.plugin)==null?void 0:d.settingsTab)==null?void 0:h.lineAuthorSettingHandler(t,n)}))}function U3(t,e,r){r.setAttr(B3,JSON.stringify({hash:t.hash,isZeroCommit:t.isZeroCommit,isWaitingGutter:e}))}function fU(t){let e=t.getAttr(B3);return e?JSON.parse(e):void 0}m();function Mv(t,e){return t==="oldest"?oh(0,!1,e).color:oh(void 0,!0,e).color}function oh(t,e,r){let n=eh(r),i=Date.now()/1e3,a=t!=null?t:0,o=(e?0:i-a)/60/60/24,l=Math.pow(Math.clamp(o/n,0,1),1/2.3),c=dU(),u=r.colorNew,f=r.colorOld,d=c?.4:1,h=$v(u.r,f.r,l)*d,p=$v(u.g,f.g,l)*d,g=$v(u.b,f.b,l)*d;return{color:`rgba(${h},${p},${g},${c?.75:.25})`,daysSinceCommit:o}}function $v(t,e,r){return t+(e-t)*r}function dU(){var t;return((t=window.app)==null?void 0:t.getTheme())==="obsidian"}function G3(t){document.body.style.setProperty("--obs-git-gutter-text",t.textColorCss)}m();function z3(t,e,r){let n;for(let i=e;i<=r;i++){let a=t.hashPerLine[i],s=t.commits.get(a);(!n||s.isZeroCommit||hU(s,n))&&(n=s)}return n}function hU(t,e){var i,a,s,o;let r=(a=(i=t.author)==null?void 0:i.epochSeconds)!=null?a:0,n=(o=(s=e.author)==null?void 0:s.epochSeconds)!=null?o:0;return r>n}var V3="-",pU="+",mU=3,gU="*",vU=/\S/g,yU="%",Bo=class t extends Lv.GutterMarker{constructor(r){super();this.text=r}eq(r){return r instanceof t&&this.text===r.text}toDOM(){return document.createTextNode(this.text)}destroy(r){r&&(document.body.contains(r)||r.remove())}},Dv=class extends Lv.GutterMarker{constructor(r,n,i,a,s,o){super();this.lineAuthoring=r;this.startLine=n;this.endLine=i;this.key=a;this.settings=s;this.options=o;this.point=!1;this.elementClass="obs-git-blame-gutter"}eq(r){return this.key===(r==null?void 0:r.key)&&this.startLine===(r==null?void 0:r.startLine)&&this.endLine===(r==null?void 0:r.endLine)&&(this==null?void 0:this.options)===(r==null?void 0:r.options)}toDOM(){var r;return this.precomputedDomProvider=(r=this.precomputedDomProvider)!=null?r:this.computeDom(),this.precomputedDomProvider()}destroy(r){r&&(document.body.contains(r)||(No.delete(r),r.remove()))}computeDom(){let r=z3(this.lineAuthoring,this.startLine,this.endLine),n=r.isZeroCommit?"":this.renderNonZeroCommit(r);return!r.isZeroCommit&&this.options!=="waiting-for-result"?$3(this,n):n=this.adaptTextForFakeCommit(r,n,this.options),this.createHtmlNode(r,n,this.options==="waiting-for-result")}createHtmlNode(r,n,i){var c;let a=window.createDiv();a.innerText=n;let{color:s,daysSinceCommit:o}=oh((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds,r==null?void 0:r.isZeroCommit,this.settings);a.style.backgroundColor=s,U3(r,i,a);function l(){let u=a.cloneNode(!0);return No.add(u),i||D3(o),u}return l}renderNonZeroCommit(r){let n=this.settings.showCommitHash?this.renderHash(r):"",i=this.settings.authorDisplay==="hide"?"":`${this.renderAuthorName(r,this.settings.authorDisplay)}`,a=this.settings.dateTimeFormatOptions==="hide"?"":`${this.renderAuthoringDate(r,this.settings.dateTimeFormatOptions,this.settings.dateTimeFormatCustomString,this.settings.dateTimeTimezone)}`;return[n,i,a].filter(o=>o.length>=1).join(" ")}renderHash(r){return r.hash.substring(0,6)}renderAuthorName(r,n){var o,l,c,u;let i=(l=(o=r==null?void 0:r.author)==null?void 0:o.name)!=null?l:"",a=i.split(" ").filter(f=>f.length>=1),s;switch(n){case"initials":s=a.map(f=>f[0].toUpperCase()).join("");break;case"first name":s=(c=a.first())!=null?c:V3;break;case"last name":s=(u=a.last())!=null?u:V3;break;case"full":s=i;break;default:return pa(n)}return s3(r==null?void 0:r.author,r==null?void 0:r.committer)||(s=s+gU),s}renderAuthoringDate(r,n,i,a){var c;let s="?";if(((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds)===void 0)return s;let o;switch(n){case"date":o=fd;break;case"datetime":o=o0;break;case"custom":o=i;break;case"natural language":o=u=>{let f=u.diff((0,lh.moment)());return lh.moment.duration(f).humanize(!0)};break;default:return pa(n)}let l=lh.moment.unix(r.author.epochSeconds);switch(a){case"viewer-local":break;case"author-local":l=l.utcOffset(r.author.tz),typeof o=="string"&&(o+=" Z");break;case"utc0000":l=l.utc(),typeof o=="string"&&(o+="[Z]");break;default:return pa(a)}return typeof o=="string"?l.format(o):o(l)}adaptTextForFakeCommit(r,n,i){var l,c,u,f;let a=(c=(l=nh())==null?void 0:l.text)!=null?c:n,s=i!=="waiting-for-result"&&r.isZeroCommit?pU:yU;n=a.replace(vU,s);let o=(f=(u=Qr.get())==null?void 0:u.gutterSpacingFallbackLength)!=null?f:n.length;if(n=o3(n,o,s),i!=="waiting-for-result"&&r.isZeroCommit){let d=Math.min(o,mU);n=l3(n,o-d)}return n}};function ns(t,e,r,n,i,a){let s=q3.sha256.create();s.update(JSON.stringify(i)),s.update(`s${e}-e${r}-k${n}-o${a}`);let o=s.hex(),l=ih.get(o);if(l)return l;let c=new Dv(t,e,r,n,i,a);return ih.set(o,c),c}m();var W3=require("obsidian");function jv(){var e,r;let t=(r=(e=Qr.get())==null?void 0:e.gutterSpacingFallbackLength)!=null?r:Xe.lineAuthor.gutterSpacingFallbackLength;return new Bo(Array(t).fill("-").join(""))}function Nv(t){let{lineAuthoring:e,ageForInitialRender:r}=wU(t);return ns(e,1,1,"initialGutter"+r,t,"waiting-for-result")}function wU(t){var a;let e=(a=L3())!=null?a:eh(t)*.25,r=(0,W3.moment)().add(-e,"days"),n={name:"",epochSeconds:i3(r),tz:"+0000"},i={hash:"waiting-for-result",author:n,committer:n,isZeroCommit:!1};return{lineAuthoring:{hashPerLine:[void 0,"waiting-for-result"],commits:new Map([["waiting-for-result",i]])},ageForInitialRender:e}}m();function Y3(t,e){return ns({hashPerLine:[void 0,"000000"],commits:new Map([["000000",m3]])},1,1,t,e)}var Bv=new Bo(""),J3=(0,Z3.gutter)({class:"line-author-gutter-container",markers(t){let e=t.state.field(Lo,!1);return bU(t,e)},lineMarkerChange(t){let e=Qd(t.state.field(Lo));return Qd(t.startState.field(Lo))!==e},renderEmptyElements:!0,initialSpacer:t=>(X3(t),jv()),updateSpacer:(t,e)=>{var r,n;return X3(e.view),(n=(r=nh())==null?void 0:r.gutter)!=null?n:jv()}});function bU(t,e){let r=Qd(e),n=t.state.doc,i=new Map;for(let u=1;u<=n.lines;u++){let f=n.line(u).from,d=t.lineBlockAt(f).to;i.set(u,[f,d]),r.update([f,d,0])}let a=Qr.get();r.update("s"+Object.values(Qr).join(","));let s=r.hex(),o=ah.get(s);if(o)return o;let{result:l,allowCache:c}=_U(n,i,a,e);return c&&ah.set(s,l),l}function _U(t,e,r,n){let i=!0,a=t.lines,s=[];function o(f,d,h){return s.push(h.range(f,d))}let l=xU(a,n),c=t.length===0,u=t.iterLines(a,a+1).next().value==="";for(let f=1;f<=a;f++){let[d,h]=e.get(f),p=t.lineAt(h).number;if(c){o(d,h,Bv);continue}if(f===a&&u){o(d,h,Bv);continue}if(n===void 0){o(d,h,Nv(r)),i=!1;continue}let{key:g,la:v}=n;if(v==="untracked"){o(d,h,Y3(v,r));continue}let y=v.hashPerLine.length-1,b=l[f],E=l[p];if(E&&E>y&&o(d,h,Bv),b!==void 0&&gv(1,b,y)&&E!==void 0&&gv(1,E,y)){o(d,h,ns(v,b,E,g,r));continue}if(y<1){o(d,h,Nv(r)),i=!1;continue}let S=Math.clamp(b!=null?b:f,1,y),A=Math.clamp(E!=null?E:p,1,y);o(d,h,ns(v,S,A,g+"computing",r,"waiting-for-result"))}return{result:K3.RangeSet.of(s,!0),allowCache:i}}function xU(t,e){if(!(e!=null&&e.lineOffsetsFromUnsavedChanges))return Array.from(new Array(t+1),i=>i);let r=[void 0],n=0;for(let i=1;i<=t;i++){let a=e.lineOffsetsFromUnsavedChanges.get(i);n+=a!=null?a:0,r[i]=a===void 0?i-n:void 0}return r}function X3(t){t.dom.querySelectorAll(".cm-gutters").forEach(r=>{r!=null&&r.style&&(r.style.marginLeft||(r.style.marginLeft="unset"))})}var ch=class{constructor(e){this.plugin=e;this.lineAuthorings=new Map}async trackChanged(e){return this.trackChangedHelper(e).catch(r=>(console.warn("Git: Error in trackChanged."+r),Promise.reject(r)))}async trackChangedHelper(e){if(e){if(e.path===void 0){console.warn("Git: Attempted to track change of undefined filepath. Unforeseen situation.");return}return this.computeLineAuthorInfo(e.path)}}destroy(){this.lineAuthorings.clear(),Do.clear(),F3()}async computeLineAuthorInfo(e){let r=this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager,n=await r.submoduleAwareHeadRevisonInContainingDirectory(e),i=await r.hashObject(e),a=C3(n,i,e);if(a!==void 0){if(!this.lineAuthorings.has(a)){let s=await r.blame(e,this.plugin.settings.lineAuthor.followMovement,this.plugin.settings.lineAuthor.ignoreWhitespace);this.lineAuthorings.set(a,s)}this.notifyComputationResultToSubscribers(e,a)}}notifyComputationResultToSubscribers(e,r){Do.ifFilepathDefinedTransformSubscribers(e,n=>n.forEach(i=>i.notifyLineAuthoring(r,this.lineAuthorings.get(r))))}},eM=Q3.Prec.high([I3,Lo,J3]);var uh=class{constructor(e){this.plg=e;this.codeMirrorExtensions=[];this.handleWorkspaceLeaf=e=>{if(!this.lineAuthorInfoProvider){console.warn("Git: undefined lineAuthorInfoProvider. Unexpected situation.");return}let r=e==null?void 0:e.view;!(r instanceof is.MarkdownView)||r.file==null||(r==null?void 0:r.allowNoFile)===!0||this.lineAuthorInfoProvider.trackChanged(r.file).catch(console.error)}}onLoadPlugin(){this.plg.registerEditorExtension(this.codeMirrorExtensions),M3(()=>this.plg.settings.lineAuthor,e=>{this.plg.settings.lineAuthor=e,this.plg.saveSettings()})}conditionallyActivateBySettings(){this.plg.settings.lineAuthor.show&&this.activateFeature()}activateFeature(){try{if(!this.isAvailableOnCurrentPlatform().available)return;G3(this.plg.settings.lineAuthor),this.lineAuthorInfoProvider=new ch(this.plg),this.createEventHandlers(),this.activateCodeMirrorExtensions(),console.log(this.plg.manifest.name+": Enabled line authoring.")}catch(e){console.warn("Git: Error while loading line authoring feature.",e),this.deactivateFeature()}}deactivateFeature(){var e;this.destroyEventHandlers(),this.deactivateCodeMirrorExtensions(),(e=this.lineAuthorInfoProvider)==null||e.destroy(),this.lineAuthorInfoProvider=void 0,console.log(this.plg.manifest.name+": Disabled line authoring.")}isAvailableOnCurrentPlatform(){return{available:this.plg.useSimpleGit&&is.Platform.isDesktopApp,gitManager:this.plg.gitManager instanceof Ce?this.plg.gitManager:void 0}}refreshLineAuthorViews(){this.plg.settings.lineAuthor.show&&(this.deactivateFeature(),this.activateFeature())}activateCodeMirrorExtensions(){this.codeMirrorExtensions.push(eM),this.plg.app.workspace.updateOptions(),this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf)}deactivateCodeMirrorExtensions(){for(let e of this.codeMirrorExtensions)this.codeMirrorExtensions.remove(e);this.plg.app.workspace.updateOptions()}createEventHandlers(){this.gutterContextMenuEvent=this.createGutterContextMenuHandler(),this.fileOpenEvent=this.createFileOpenEvent(),this.workspaceLeafChangeEvent=this.createWorkspaceLeafChangeEvent(),this.fileModificationEvent=this.createVaultFileModificationHandler(),this.refreshOnCssChangeEvent=this.createCssRefreshHandler(),this.fileRenameEvent=this.createFileRenameEvent(),j3(),this.plg.registerEvent(this.gutterContextMenuEvent),this.plg.registerEvent(this.refreshOnCssChangeEvent),this.plg.registerEvent(this.fileOpenEvent),this.plg.registerEvent(this.workspaceLeafChangeEvent),this.plg.registerEvent(this.fileModificationEvent),this.plg.registerEvent(this.fileRenameEvent)}destroyEventHandlers(){this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.workspace.offref(this.fileOpenEvent),this.plg.app.workspace.offref(this.workspaceLeafChangeEvent),this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.vault.offref(this.fileRenameEvent),this.plg.app.workspace.offref(this.gutterContextMenuEvent)}createFileOpenEvent(){return this.plg.app.workspace.on("file-open",e=>{var r;return void((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e).catch(console.error))})}createWorkspaceLeafChangeEvent(){return this.plg.app.workspace.on("active-leaf-change",this.handleWorkspaceLeaf)}createFileRenameEvent(){return this.plg.app.vault.on("rename",(e,r)=>{var n;return e instanceof is.TFile&&((n=this.lineAuthorInfoProvider)==null?void 0:n.trackChanged(e))})}createVaultFileModificationHandler(){return this.plg.app.vault.on("modify",e=>{var r;return e instanceof is.TFile&&((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e))})}createCssRefreshHandler(){return this.plg.app.workspace.on("css-change",()=>this.refreshLineAuthorViews())}createGutterContextMenuHandler(){return this.plg.app.workspace.on("editor-menu",H3)}};m();var fh=class{constructor(e){this.plugin=e;this.tasks=[]}addTask(e,r){this.tasks.push({task:e,onFinished:r!=null?r:()=>{}}),this.tasks.length===1&&this.handleTask()}handleTask(){if(this.tasks.length>0){let e=this.tasks[0];e.task().then(r=>{e.onFinished(r),this.tasks.shift(),this.handleTask()},r=>{this.plugin.displayError(r),e.onFinished(void 0),this.tasks.shift(),this.handleTask()})}}clear(){this.tasks=[]}};m();var $r=require("obsidian");var dh=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.messages=[];this.base="obsidian-git-statusbar-";this.statusBarEl.setAttribute("data-tooltip-position","top"),r.registerEvent(r.app.workspace.on("obsidian-git:refreshed",()=>{this.refreshCommitTimestamp().catch(console.error)}))}displayMessage(e,r){this.messages.push({message:`Git: ${e.slice(0,100)}`,timeout:r}),this.display()}display(){this.messages.length>0&&!this.currentMessage?(this.currentMessage=this.messages.shift(),this.statusBarEl.addClass(this.base+"message"),this.statusBarEl.ariaLabel="",this.statusBarEl.setText(this.currentMessage.message),this.lastMessageTimestamp=Date.now()):this.currentMessage?Date.now()-this.lastMessageTimestamp>=this.currentMessage.timeout&&(this.currentMessage=null,this.lastMessageTimestamp=null):this.displayState()}displayState(){switch((this.statusBarEl.getText().length>3||!this.statusBarEl.hasChildNodes())&&(this.statusBarEl.empty(),this.conflictEl=this.statusBarEl.createDiv(),this.conflictEl.setAttribute("data-tooltip-position","top"),this.conflictEl.style.float="left",this.pausedEl=this.statusBarEl.createDiv(),this.pausedEl.setAttribute("data-tooltip-position","top"),this.pausedEl.style.float="left",this.iconEl=this.statusBarEl.createDiv(),this.iconEl.style.float="left",this.textEl=this.statusBarEl.createDiv(),this.textEl.style.float="right",this.textEl.style.marginLeft="5px"),this.plugin.localStorage.getConflict()?((0,$r.setIcon)(this.conflictEl,"alert-circle"),this.conflictEl.ariaLabel="You have merge conflicts. Resolve them and commit afterwards.",this.conflictEl.style.marginRight="5px",this.conflictEl.addClass(this.base+"conflict")):(this.conflictEl.empty(),this.conflictEl.style.marginRight=""),this.plugin.localStorage.getPausedAutomatics()?((0,$r.setIcon)(this.pausedEl,"pause-circle"),this.pausedEl.ariaLabel="Automatic routines are currently paused.",this.pausedEl.style.marginRight="5px",this.pausedEl.addClass(this.base+"paused")):(this.pausedEl.empty(),this.pausedEl.style.marginRight=""),this.plugin.state.gitAction){case 0:this.displayFromNow();break;case 1:this.statusBarEl.ariaLabel="Checking repository status...",(0,$r.setIcon)(this.iconEl,"refresh-cw"),this.statusBarEl.addClass(this.base+"status");break;case 3:this.statusBarEl.ariaLabel="Adding files...",(0,$r.setIcon)(this.iconEl,"archive"),this.statusBarEl.addClass(this.base+"add");break;case 4:this.statusBarEl.ariaLabel="Committing changes...",(0,$r.setIcon)(this.iconEl,"git-commit"),this.statusBarEl.addClass(this.base+"commit");break;case 5:this.statusBarEl.ariaLabel="Pushing changes...",(0,$r.setIcon)(this.iconEl,"upload"),this.statusBarEl.addClass(this.base+"push");break;case 2:this.statusBarEl.ariaLabel="Pulling changes...",(0,$r.setIcon)(this.iconEl,"download"),this.statusBarEl.addClass(this.base+"pull");break;default:this.statusBarEl.ariaLabel="Failed on initialization!",(0,$r.setIcon)(this.iconEl,"alert-triangle"),this.statusBarEl.addClass(this.base+"failed-init");break}}displayFromNow(){var n;let e=this.lastCommitTimestamp,r=this.plugin.state.offlineMode;if(e){let i=(0,$r.moment)(e).fromNow();this.statusBarEl.ariaLabel=`${r?"Offline: ":""}Last Commit: ${i}`,(n=this.unPushedCommits)!=null&&n&&(this.statusBarEl.ariaLabel+=` +(${this.unPushedCommits} unpushed commits)`)}else this.statusBarEl.ariaLabel=r?"Git is offline":"Git is ready";r?(0,$r.setIcon)(this.iconEl,"globe"):(0,$r.setIcon)(this.iconEl,"check"),this.plugin.settings.changedFilesInStatusBar&&this.plugin.cachedStatus&&this.textEl.setText(this.plugin.cachedStatus.changed.length.toString()),this.statusBarEl.addClass(this.base+"idle")}async refreshCommitTimestamp(){this.lastCommitTimestamp=await this.plugin.gitManager.getLastCommitTime(),this.unPushedCommits=await this.plugin.gitManager.getUnpushedCommits()}remove(){this.statusBarEl.remove()}};m();var ph=require("obsidian"),hh=class extends ph.SuggestModal{constructor(r){super(r.app);this.plugin=r;this.resolve=null;this.setPlaceholder("Type your message and select optional the version with the added date.")}openAndGetResult(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(r){let n=(0,ph.moment)().format(this.plugin.settings.commitDateFormat);return r==""&&(r="..."),[r,`${n}: ${r}`,`${r}: ${n}`]}renderSuggestion(r,n){n.innerText=r}onChooseSuggestion(r,n){this.resolve&&this.resolve(r)}};m();var tM=require("obsidian"),Bc=class{constructor(e){this.plugin=e}saveLastAuto(e,r){r==="backup"?this.plugin.localStorage.setLastAutoBackup(e.toString()):r==="pull"?this.plugin.localStorage.setLastAutoPull(e.toString()):r==="push"&&this.plugin.localStorage.setLastAutoPush(e.toString())}loadLastAuto(){var e,r,n;return{backup:new Date((e=this.plugin.localStorage.getLastAutoBackup())!=null?e:""),pull:new Date((r=this.plugin.localStorage.getLastAutoPull())!=null?r:""),push:new Date((n=this.plugin.localStorage.getLastAutoPush())!=null?n:"")}}async init(){await this.setUpAutoCommitAndSync();let e=this.loadLastAuto();if(this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0){let r=this.diff(this.plugin.settings.autoPushInterval,e.push);this.startAutoPush(r)}if(this.plugin.settings.autoPullInterval>0){let r=this.diff(this.plugin.settings.autoPullInterval,e.pull);this.startAutoPull(r)}}unload(){this.clearAutoPull(),this.clearAutoPush(),this.clearAutoCommitAndSync()}reload(...e){this.plugin.localStorage.getPausedAutomatics()||(e.contains("commit")&&(this.clearAutoCommitAndSync(),this.plugin.settings.autoSaveInterval>0&&this.startAutoCommitAndSync(this.plugin.settings.autoSaveInterval)),e.contains("push")&&(this.clearAutoPush(),this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0&&this.startAutoPush(this.plugin.settings.autoPushInterval)),e.contains("pull")&&(this.clearAutoPull(),this.plugin.settings.autoPullInterval>0&&this.startAutoPull(this.plugin.settings.autoPullInterval)))}async setUpAutoCommitAndSync(){if(this.plugin.settings.setLastSaveToLastCommit){this.clearAutoCommitAndSync();let e=await this.plugin.gitManager.getLastCommitTime();e&&this.saveLastAuto(e,"backup")}if(!this.timeoutIDCommitAndSync&&!this.plugin.autoCommitDebouncer){let e=this.loadLastAuto();if(this.plugin.settings.autoSaveInterval>0){let r=this.diff(this.plugin.settings.autoSaveInterval,e.backup);this.startAutoCommitAndSync(r)}}}startAutoCommitAndSync(e){let r=(e!=null?e:this.plugin.settings.autoSaveInterval)*6e4;this.plugin.settings.autoBackupAfterFileChange?e===0?this.doAutoCommitAndSync():this.plugin.autoCommitDebouncer=(0,tM.debounce)(()=>this.doAutoCommitAndSync(),r,!0):(r>2147483647&&(r=2147483647),this.timeoutIDCommitAndSync=window.setTimeout(()=>this.doAutoCommitAndSync(),r))}doAutoCommitAndSync(){this.plugin.promiseQueue.addTask(async()=>{if(this.plugin.settings.setLastSaveToLastCommit){let r=await this.plugin.gitManager.getLastCommitTime();if(r){this.saveLastAuto(r,"backup");let n=this.diff(this.plugin.settings.autoSaveInterval,r);if(n>0)return this.startAutoCommitAndSync(n),!1}}let e=this.plugin.settings.autoCommitOnlyStaged;return this.plugin.settings.differentIntervalCommitAndPush?await this.plugin.commit({fromAuto:!0,onlyStaged:e}):await this.plugin.commitAndSync({fromAutoBackup:!0,onlyStaged:e}),!0},e=>{e!==!1&&(this.saveLastAuto(new Date,"backup"),this.startAutoCommitAndSync())})}startAutoPull(e){let r=(e!=null?e:this.plugin.settings.autoPullInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPull=window.setTimeout(()=>this.doAutoPull(),r)}doAutoPull(){this.plugin.promiseQueue.addTask(()=>this.plugin.pullChangesFromRemote(),()=>{this.saveLastAuto(new Date,"pull"),this.startAutoPull()})}startAutoPush(e){let r=(e!=null?e:this.plugin.settings.autoPushInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPush=window.setTimeout(()=>this.doAutoPush(),r)}doAutoPush(){this.plugin.promiseQueue.addTask(()=>this.plugin.push(),()=>{this.saveLastAuto(new Date,"push"),this.startAutoPush()})}clearAutoCommitAndSync(){var r;let e=!1;return this.timeoutIDCommitAndSync&&(window.clearTimeout(this.timeoutIDCommitAndSync),this.timeoutIDCommitAndSync=void 0,e=!0),this.plugin.autoCommitDebouncer&&((r=this.plugin.autoCommitDebouncer)==null||r.cancel(),this.plugin.autoCommitDebouncer=void 0,e=!0),e}clearAutoPull(){return this.timeoutIDPull?(window.clearTimeout(this.timeoutIDPull),this.timeoutIDPull=void 0,!0):!1}clearAutoPush(){return this.timeoutIDPush?(window.clearTimeout(this.timeoutIDPush),this.timeoutIDPush=void 0,!0):!1}diff(e,r){let i=e-Math.round((new Date().getTime()-r.getTime())/1e3/60);return Math.max(0,i)}};m();var bn=require("obsidian");m();var Hc=require("obsidian");async function rM(t,e,r){let n=await iM(e,r);if(n.result==="failure"){new Hc.Notice(n.reason);return}let{isGitHub:i,branch:a,repo:s,user:o,filePath:l}=n;if(i){let c=t.getCursor("from").line+1,u=t.getCursor("to").line+1;c===u?window.open(`https://github.com/${o}/${s}/blob/${a}/${l}?plain=1#L${c}`):window.open(`https://github.com/${o}/${s}/blob/${a}/${l}?plain=1#L${c}-L${u}`)}else new Hc.Notice("It seems like you are not using GitHub")}async function nM(t,e){let r=await iM(t,e);if(r.result==="failure"){new Hc.Notice(r.reason);return}let{isGitHub:n,branch:i,repo:a,user:s,filePath:o}=r;n?window.open(`https://github.com/${s}/${a}/commits/${i}/${o}`):new Hc.Notice("It seems like you are not using GitHub")}async function iM(t,e){let r=await e.branchInfo(),n=r.tracking,i=r.current,a,s=e.getRelativeRepoPath(t.path);if(e instanceof Ce){let l=await e.getSubmoduleOfFile(e.getRelativeRepoPath(t.path));if(l){s=l.relativeFilepath;let c=await e.git.cwd({path:l.submodule,root:!1}).status();if(n=c.tracking||void 0,i=c.current||void 0,n){let u=n.substring(0,n.indexOf("/")),f=await e.git.cwd({path:l.submodule,root:!1}).getConfig(`remote.${u}.url`,"local");if(f.value!=null)a=f.value;else return{result:"failure",reason:"Failed to get remote url of submodule"}}}}if(n==null)return{result:"failure",reason:"Remote branch is not configured"};if(i==null)return{result:"failure",reason:"Failed to get current branch name"};if(a==null){let l=n.substring(0,n.indexOf("/"));if(a=await e.getConfig(`remote.${l}.url`),a==null)return{result:"failure",reason:"Failed to get remote url"}}let o=a.match(/(?:^https:\/\/github\.com\/(.+)\/(.+?)(?:\.git)?$)|(?:^[a-zA-Z]+@github\.com:(.+)\/(.+?)(?:\.git)?$)/);if(o==null)return{result:"failure",reason:"Could not parse remote url"};{let[l,c,u,f,d]=o;return{result:"success",isGitHub:!!l,repo:u||d,user:c||f,branch:i,filePath:s}}}m();var aM=require("obsidian"),mh=class extends aM.FuzzySuggestModal{constructor(e,r){super(e.app),this.plugin=e,this.changedFiles=r,this.setPlaceholder("Not supported files will be opened by default app!")}getItems(){return this.changedFiles}getItemText(e){if(e.index=="U"&&e.workingDir=="U")return`Untracked | ${e.vaultPath}`;let r="",n="";return e.workingDir!=" "&&(r=`Working Dir: ${e.workingDir} `),e.index!=" "&&(n=`Index: ${e.index}`),`${r}${n} | ${e.vaultPath}`}onChooseItem(e,r){this.plugin.app.metadataCache.getFirstLinkpathDest(e.vaultPath,"")==null?this.app.openWithDefaultApp(e.vaultPath):this.plugin.app.workspace.openLinkText(e.vaultPath,"/")}};m();var sM=require("obsidian"),gh=class extends sM.Modal{constructor(r,n){super(r);this.content=n;this.resolve=null}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onOpen(){let{contentEl:r,titleEl:n}=this;n.setText("Edit .gitignore");let i=r.createDiv(),a=i.createEl("textarea",{text:this.content,cls:["obsidian-git-textarea"],attr:{rows:10,cols:30,wrap:"off"}});i.createEl("button",{cls:["mod-cta","obsidian-git-center-button"],text:"Save"}).addEventListener("click",()=>{this.resolve(a.value),this.close()})}onClose(){let{contentEl:r}=this;r.empty(),this.resolve&&this.resolve(void 0)}};function oM(t){let e=t.app;t.addCommand({id:"edit-gitignore",name:"Edit .gitignore",callback:async()=>{let r=t.gitManager.getRelativeVaultPath(".gitignore");await e.vault.adapter.exists(r)||await e.vault.adapter.write(r,"");let n=await e.vault.adapter.read(r),a=await new gh(e,n).openAndGetReslt();a!==void 0&&(await e.vault.adapter.write(r,a),await t.refresh())}}),t.addCommand({id:"open-git-view",name:"Open source control view",callback:async()=>{var i;let r=e.workspace.getLeavesOfType($t.type),n;r.length===0?(n=(i=e.workspace.getRightLeaf(!1))!=null?i:e.workspace.getLeaf(),await n.setViewState({type:$t.type})):n=r.first(),await e.workspace.revealLeaf(n),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-history-view",name:"Open history view",callback:async()=>{var i;let r=e.workspace.getLeavesOfType(Zr.type),n;r.length===0?(n=(i=e.workspace.getRightLeaf(!1))!=null?i:e.workspace.getLeaf(),await n.setViewState({type:Zr.type})):n=r.first(),await e.workspace.revealLeaf(n),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-diff-view",name:"Open diff view",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;{let i=t.gitManager.getRelativeRepoPath(n.path,!0);t.tools.openDiff({aFile:i,aRef:""})}}}),t.addCommand({id:"view-file-on-github",name:"Open file on GitHub",editorCallback:(r,{file:n})=>{if(n)return rM(r,n,t.gitManager)}}),t.addCommand({id:"view-history-on-github",name:"Open file history on GitHub",editorCallback:(r,{file:n})=>{if(n)return nM(n,t.gitManager)}}),t.addCommand({id:"pull",name:"Pull",callback:()=>t.promiseQueue.addTask(()=>t.pullChangesFromRemote())}),t.addCommand({id:"fetch",name:"Fetch",callback:()=>t.promiseQueue.addTask(()=>t.fetch())}),t.addCommand({id:"switch-to-remote-branch",name:"Switch to remote branch",callback:()=>t.promiseQueue.addTask(()=>t.switchRemoteBranch())}),t.addCommand({id:"add-to-gitignore",name:"Add file to .gitignore",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.addFileToGitignore(n.path,n instanceof bn.TFolder).catch(i=>t.displayError(i))}}),t.addCommand({id:"push",name:"Commit-and-sync",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1}))}),t.addCommand({id:"backup-and-close",name:"Commit-and-sync and then close Obsidian",callback:()=>t.promiseQueue.addTask(async()=>{await t.commitAndSync({fromAutoBackup:!1}),window.close()})}),t.addCommand({id:"commit-push-specified-message",name:"Commit-and-sync with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit",name:"Commit all changes",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1}))}),t.addCommand({id:"commit-specified-message",name:"Commit all changes with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit-smart",name:"Commit",callback:()=>t.promiseQueue.addTask(async()=>{let n=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!1,onlyStaged:n})})}),t.addCommand({id:"commit-staged",name:"Commit staged",checkCallback:function(r){if(r)return!1;t.promiseQueue.addTask(async()=>t.commit({fromAuto:!1,requestCustomMessage:!1}))}}),bn.Platform.isDesktopApp&&t.addCommand({id:"commit-amend-staged-specified-message",name:"Amend staged",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0,amend:!0}))}),t.addCommand({id:"commit-smart-specified-message",name:"Commit with specific message",callback:()=>t.promiseQueue.addTask(async()=>{let n=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:n})})}),t.addCommand({id:"commit-staged-specified-message",name:"Commit staged with specific message",checkCallback:function(r){return r?!1:t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0}))}}),t.addCommand({id:"push2",name:"Push",callback:()=>t.promiseQueue.addTask(()=>t.push())}),t.addCommand({id:"stage-current-file",name:"Stage current file",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.promiseQueue.addTask(()=>t.stageFile(n))}}),t.addCommand({id:"unstage-current-file",name:"Unstage current file",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.promiseQueue.addTask(()=>t.unstageFile(n))}}),t.addCommand({id:"edit-remotes",name:"Edit remotes",callback:()=>t.editRemotes().catch(r=>t.displayError(r))}),t.addCommand({id:"remove-remote",name:"Remove remote",callback:()=>t.removeRemote().catch(r=>t.displayError(r))}),t.addCommand({id:"set-upstream-branch",name:"Set upstream branch",callback:()=>t.setUpstreamBranch().catch(r=>t.displayError(r))}),t.addCommand({id:"delete-repo",name:"CAUTION: Delete repository",callback:async()=>{await e.vault.adapter.exists(`${t.settings.basePath}/.git`)?await new ze(t,{options:["NO","YES"],placeholder:"Do you really want to delete the repository (.git directory)? plugin action cannot be undone.",onlySelection:!0}).openAndGetResult()==="YES"&&(await e.vault.adapter.rmdir(`${t.settings.basePath}/.git`,!0),new bn.Notice("Successfully deleted repository. Reloading plugin..."),t.unloadPlugin(),await t.init({fromReload:!0})):new bn.Notice("No repository found")}}),t.addCommand({id:"init-repo",name:"Initialize a new repo",callback:()=>t.createNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"clone-repo",name:"Clone an existing remote repo",callback:()=>t.cloneNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"list-changed-files",name:"List changed files",callback:async()=>{if(await t.isAllInitialized())try{let r=await t.updateCachedStatus();if(r.changed.length+r.staged.length>500){t.displayError("Too many changes to display");return}new mh(t,r.all).open()}catch(r){t.displayError(r)}}}),t.addCommand({id:"switch-branch",name:"Switch branch",callback:()=>{t.switchBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"create-branch",name:"Create new branch",callback:()=>{t.createBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"delete-branch",name:"Delete branch",callback:()=>{t.deleteBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"discard-all",name:"CAUTION: Discard all changes",callback:async()=>{let r=await t.discardAll();switch(r){case"discard":new bn.Notice("Discarded all changes in tracked files.");break;case"delete":new bn.Notice("Discarded all files.");break;case!1:break;default:Ud(r)}}}),t.addCommand({id:"pause-automatic-routines",name:"Pause/Resume automatic routines",callback:()=>{let r=!t.localStorage.getPausedAutomatics();t.localStorage.setPausedAutomatics(r),r?(t.automaticsManager.unload(),new bn.Notice("Paused automatic routines.")):(t.automaticsManager.reload("commit","push","pull"),new bn.Notice("Resumed automatic routines."))}}),t.addCommand({id:"raw-command",name:"Raw command",checkCallback:r=>{let n=t.gitManager;if(r)return n instanceof Ce;t.tools.runRawCommand().catch(i=>t.displayError(i))}}),t.addCommand({id:"toggle-line-author-info",name:"Toggle line author information",callback:()=>{var r;return(r=t.settingsTab)==null?void 0:r.configureLineAuthorShowStatus(!t.settings.lineAuthor.show)}})}m();var vh=class{constructor(e){this.plugin=e;this.prefix=this.plugin.manifest.id+":",this.app=e.app}migrate(){let e=["password","hostname","conflict","lastAutoPull","lastAutoBackup","lastAutoPush","gitPath","pluginDisabled"];for(let r of e){let n=localStorage.getItem(this.prefix+r);this.app.loadLocalStorage(this.prefix+r)==null&&n!=null&&n!=null&&(this.app.saveLocalStorage(this.prefix+r,n),localStorage.removeItem(this.prefix+r))}}getPassword(){return this.app.loadLocalStorage(this.prefix+"password")}setPassword(e){return this.app.saveLocalStorage(this.prefix+"password",e)}getUsername(){return this.app.loadLocalStorage(this.prefix+"username")}setUsername(e){return this.app.saveLocalStorage(this.prefix+"username",e)}getHostname(){return this.app.loadLocalStorage(this.prefix+"hostname")}setHostname(e){return this.app.saveLocalStorage(this.prefix+"hostname",e)}getConflict(){return this.app.loadLocalStorage(this.prefix+"conflict")=="true"}setConflict(e){return this.app.saveLocalStorage(this.prefix+"conflict",`${e}`)}getLastAutoPull(){return this.app.loadLocalStorage(this.prefix+"lastAutoPull")}setLastAutoPull(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPull",e)}getLastAutoBackup(){return this.app.loadLocalStorage(this.prefix+"lastAutoBackup")}setLastAutoBackup(e){return this.app.saveLocalStorage(this.prefix+"lastAutoBackup",e)}getLastAutoPush(){return this.app.loadLocalStorage(this.prefix+"lastAutoPush")}setLastAutoPush(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPush",e)}getGitPath(){return this.app.loadLocalStorage(this.prefix+"gitPath")}setGitPath(e){return this.app.saveLocalStorage(this.prefix+"gitPath",e)}getPATHPaths(){var e,r;return(r=(e=this.app.loadLocalStorage(this.prefix+"PATHPaths"))==null?void 0:e.split(":"))!=null?r:[]}setPATHPaths(e){return this.app.saveLocalStorage(this.prefix+"PATHPaths",e.join(":"))}getEnvVars(){var e;return JSON.parse((e=this.app.loadLocalStorage(this.prefix+"envVars"))!=null?e:"[]")}setEnvVars(e){return this.app.saveLocalStorage(this.prefix+"envVars",JSON.stringify(e))}getPluginDisabled(){return this.app.loadLocalStorage(this.prefix+"pluginDisabled")=="true"}setPluginDisabled(e){return this.app.saveLocalStorage(this.prefix+"pluginDisabled",`${e}`)}getPausedAutomatics(){return this.app.loadLocalStorage(this.prefix+"pausedAutomatics")=="true"}setPausedAutomatics(e){return this.app.saveLocalStorage(this.prefix+"pausedAutomatics",`${e}`)}};m();var Ho=require("obsidian");var Uc=class{constructor(e){this.plugin=e}async hasTooBigFiles(e){let r=await this.plugin.gitManager.branchInfo(),n=r.tracking?ki(r.tracking)[0]:null;if(!n)return!1;let i=await this.plugin.gitManager.getRemoteUrl(n);if(i!=null&&i.includes("github.com")){let a=[],s=this.plugin.gitManager;for(let o of e){let l=this.plugin.app.vault.getAbstractFileByPath(o.vaultPath),c=!1;if(l instanceof Ho.TFile)l.stat.size>=1e8&&(c=!0);else{let u=await this.plugin.app.vault.adapter.stat(o.vaultPath);u&&u.size>=1e8&&(c=!0)}if(c){let u=!1;s instanceof Ce&&(u=await s.isFileTrackedByLFS(o.path)),u||a.push(o)}}if(a.length>0)return this.plugin.displayError(`Aborted commit, because the following files are too big: +- ${a.map(o=>o.vaultPath).join(` +- `)} +Please remove them or add to .gitignore.`),!0}return!1}async writeAndOpenFile(e){e!==void 0&&await this.plugin.app.vault.adapter.write(To,e);let r=!1;this.plugin.app.workspace.iterateAllLeaves(n=>{n.getDisplayText()!=""&&To.startsWith(n.getDisplayText())&&(r=!0)}),r||await this.plugin.app.workspace.openLinkText(To,"/",!0)}openDiff({aFile:e,bFile:r,aRef:n,bRef:i,event:a}){var l,c;let s=this.plugin.settings.diffStyle;Ho.Platform.isMobileApp&&(s="git_unified");let o={aFile:e,bFile:r!=null?r:e,aRef:n,bRef:i};s=="split"?(l=vn(this.plugin.app,a))==null||l.setViewState({type:ca.type,active:!0,state:o}):s=="git_unified"&&((c=vn(this.plugin.app,a))==null||c.setViewState({type:ua.type,active:!0,state:o}))}async runRawCommand(){let e=this.plugin.gitManager;if(!(e instanceof Ce))return;let n=await new ze(this.plugin,{placeholder:"push origin master",allowEmpty:!1}).openAndGetResult();n!==void 0&&this.plugin.promiseQueue.addTask(async()=>{let i=new Ho.Notice(`Running '${n}'...`,999999);try{let a=await e.rawCommand(n);a?(i.setMessage(a),window.setTimeout(()=>i.hide(),5e3)):i.hide()}catch(a){throw i.hide(),a}})}};m();m();m();m();var Ke;(function(t){t.INSERT="insert",t.DELETE="delete",t.CONTEXT="context"})(Ke||(Ke={}));var lM={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},cM={LINES:"lines",WORDS:"words",NONE:"none"},uM={WORD:"word",CHAR:"char"},as;(function(t){t.AUTO="auto",t.DARK="dark",t.LIGHT="light"})(as||(as={}));m();var SU=["-","[","]","/","{","}","(",")","*","+","?",".","\\","^","$","|"],EU=RegExp("["+SU.join("\\")+"]","g");function fM(t){return t.replace(EU,"\\$&")}function Hv(t){return t&&t.replace(/\\/g,"/")}function dM(t){let e,r,n,i=0;for(e=0,n=t.length;e1?r[r.length-1]:e}function pM(t,e){return e.reduce((r,n)=>r||t.startsWith(n),!1)}var mM=["a/","b/","i/","w/","c/","o/"];function ga(t,e,r){let n=r!==void 0?[...mM,r]:mM,i=e?new RegExp(`^${fM(e)} "?(.+?)"?$`):new RegExp('^"?(.+?)"?$'),[,a=""]=i.exec(t)||[],s=n.find(l=>a.indexOf(l)===0);return(s?a.slice(s.length):a).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,"")}function AU(t,e){return ga(t,"---",e)}function kU(t,e){return ga(t,"+++",e)}function gM(t,e={}){let r=[],n=null,i=null,a=null,s=null,o=null,l=null,c=null,u="--- ",f="+++ ",d="@@",h=/^old mode (\d{6})/,p=/^new mode (\d{6})/,g=/^deleted file mode (\d{6})/,v=/^new file mode (\d{6})/,y=/^copy from "?(.+)"?/,b=/^copy to "?(.+)"?/,E=/^rename from "?(.+)"?/,S=/^rename to "?(.+)"?/,A=/^similarity index (\d+)%/,k=/^dissimilarity index (\d+)%/,w=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/,x=/^Binary files (.*) and (.*) differ/,_=/^GIT binary patch/,T=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/,C=/^mode (\d{6}),(\d{6})\.\.(\d{6})/,I=/^new file mode (\d{6})/,L=/^deleted file mode (\d{6}),(\d{6})/,$=t.replace(/\\ No newline at end of file/g,"").replace(/\r\n?/g,` +`).split(` +`);function J(){i!==null&&n!==null&&(n.blocks.push(i),i=null)}function de(){n!==null&&(!n.oldName&&l!==null&&(n.oldName=l),!n.newName&&c!==null&&(n.newName=c),n.newName&&(r.push(n),n=null)),l=null,c=null}function le(){J(),de(),n={blocks:[],deletedLines:0,addedLines:0}}function ce(N){J();let W;n!==null&&((W=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(N))?(n.isCombined=!1,a=parseInt(W[1],10),o=parseInt(W[2],10)):(W=/^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(N))?(n.isCombined=!0,a=parseInt(W[1],10),s=parseInt(W[2],10),o=parseInt(W[3],10)):(N.startsWith(d)&&console.error("Failed to parse lines, starting in 0!"),a=0,o=0,n.isCombined=!1)),i={lines:[],oldStartLine:a,oldStartLine2:s,newStartLine:o,header:N}}function Te(N){if(n===null||i===null||a===null||o===null)return;let W={content:N},B=n.isCombined?["+ "," +","++"]:["+"],$e=n.isCombined?["- "," -","--"]:["-"];pM(N,B)?(n.addedLines++,W.type=Ke.INSERT,W.oldNumber=void 0,W.newNumber=o++):pM(N,$e)?(n.deletedLines++,W.type=Ke.DELETE,W.oldNumber=a++,W.newNumber=void 0):(W.type=Ke.CONTEXT,W.oldNumber=a++,W.newNumber=o++),i.lines.push(W)}function ne(N,W){let B=W;for(;B<$.length-3;){if(N.startsWith("diff"))return!1;if($[B].startsWith(u)&&$[B+1].startsWith(f)&&$[B+2].startsWith(d))return!0;B++}return!1}return $.forEach((N,W)=>{if(!N||N.startsWith("*"))return;let B,$e=$[W-1],lr=$[W+1],Ut=$[W+2];if(N.startsWith("diff --git")||N.startsWith("diff --combined")){if(le(),(B=/^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/.exec(N))&&(l=ga(B[1],void 0,e.dstPrefix),c=ga(B[2],void 0,e.srcPrefix)),n===null)throw new Error("Where is my file !!!");n.isGitDiff=!0;return}if(N.startsWith("Binary files")&&!(n!=null&&n.isGitDiff)){if(le(),(B=/^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/.exec(N))&&(l=ga(B[1],void 0,e.dstPrefix),c=ga(B[2],void 0,e.srcPrefix)),n===null)throw new Error("Where is my file !!!");n.isBinary=!0;return}if((!n||!n.isGitDiff&&n&&N.startsWith(u)&&lr.startsWith(f)&&Ut.startsWith(d))&&le(),n!=null&&n.isTooBig)return;if(n&&(typeof e.diffMaxChanges=="number"&&n.addedLines+n.deletedLines>e.diffMaxChanges||typeof e.diffMaxLineLength=="number"&&N.length>e.diffMaxLineLength)){n.isTooBig=!0,n.addedLines=0,n.deletedLines=0,n.blocks=[],i=null;let Oe=typeof e.diffTooBigMessage=="function"?e.diffTooBigMessage(r.length):"Diff too big to be displayed";ce(Oe);return}if(N.startsWith(u)&&lr.startsWith(f)||N.startsWith(f)&&$e.startsWith(u)){if(n&&!n.oldName&&N.startsWith("--- ")&&(B=AU(N,e.srcPrefix))){n.oldName=B,n.language=hM(n.oldName,n.language);return}if(n&&!n.newName&&N.startsWith("+++ ")&&(B=kU(N,e.dstPrefix))){n.newName=B,n.language=hM(n.newName,n.language);return}}if(n&&(N.startsWith(d)||n.isGitDiff&&n.oldName&&n.newName&&!i)){ce(N);return}if(i&&(N.startsWith("+")||N.startsWith("-")||N.startsWith(" "))){Te(N);return}let X=!ne(N,W);if(n===null)throw new Error("Where is my file !!!");(B=h.exec(N))?n.oldMode=B[1]:(B=p.exec(N))?n.newMode=B[1]:(B=g.exec(N))?(n.deletedFileMode=B[1],n.isDeleted=!0):(B=v.exec(N))?(n.newFileMode=B[1],n.isNew=!0):(B=y.exec(N))?(X&&(n.oldName=B[1]),n.isCopy=!0):(B=b.exec(N))?(X&&(n.newName=B[1]),n.isCopy=!0):(B=E.exec(N))?(X&&(n.oldName=B[1]),n.isRename=!0):(B=S.exec(N))?(X&&(n.newName=B[1]),n.isRename=!0):(B=x.exec(N))?(n.isBinary=!0,n.oldName=ga(B[1],void 0,e.srcPrefix),n.newName=ga(B[2],void 0,e.dstPrefix),ce("Binary file")):_.test(N)?(n.isBinary=!0,ce(N)):(B=A.exec(N))?n.unchangedPercentage=parseInt(B[1],10):(B=k.exec(N))?n.changedPercentage=parseInt(B[1],10):(B=w.exec(N))?(n.checksumBefore=B[1],n.checksumAfter=B[2],B[3]&&(n.mode=B[3])):(B=T.exec(N))?(n.checksumBefore=[B[2],B[3]],n.checksumAfter=B[1]):(B=C.exec(N))?(n.oldMode=[B[2],B[3]],n.newMode=B[1]):(B=I.exec(N))?(n.newFileMode=B[1],n.isNew=!0):(B=L.exec(N))&&(n.deletedFileMode=B[1],n.isDeleted=!0)}),J(),de(),r}m();m();m();function CU(t,e){if(t.length===0)return e.length;if(e.length===0)return t.length;let r=[],n;for(n=0;n<=e.length;n++)r[n]=[n];let i;for(i=0;i<=t.length;i++)r[0][i]=i;for(n=1;n<=e.length;n++)for(i=1;i<=t.length;i++)e.charAt(n-1)===t.charAt(i-1)?r[n][i]=r[n-1][i-1]:r[n][i]=Math.min(r[n-1][i-1]+1,Math.min(r[n][i-1]+1,r[n-1][i]+1));return r[e.length][t.length]}function Uo(t){return(e,r)=>{let n=t(e).trim(),i=t(r).trim();return CU(n,i)/(n.length+i.length)}}function Go(t){function e(n,i,a=new Map){let s=1/0,o;for(let l=0;l0||o.indexB>0)&&(E=v.concat(E)),(n.length>d||i.length>h)&&(E=E.concat(b)),E}return r}var Dt={INSERTS:"d2h-ins",DELETES:"d2h-del",CONTEXT:"d2h-cntx",INFO:"d2h-info",INSERT_CHANGES:"d2h-ins d2h-change",DELETE_CHANGES:"d2h-del d2h-change"},ss={matching:cM.NONE,matchWordsThreshold:.25,maxLineLengthHighlight:1e4,diffStyle:uM.WORD,colorScheme:as.LIGHT},Zn="/",vM=Uo(t=>t.value),PU=Go(vM);function Gv(t){return t.indexOf("dev/null")!==-1}function RU(t){return t.replace(/(]*>((.|\n)*?)<\/ins>)/g,"")}function MU(t){return t.replace(/(]*>((.|\n)*?)<\/del>)/g,"")}function zo(t){switch(t){case Ke.CONTEXT:return Dt.CONTEXT;case Ke.INSERT:return Dt.INSERTS;case Ke.DELETE:return Dt.DELETES}}function Vo(t){switch(t){case as.DARK:return"d2h-dark-color-scheme";case as.AUTO:return"d2h-auto-color-scheme";case as.LIGHT:default:return"d2h-light-color-scheme"}}function OU(t){return t?2:1}function va(t){return t.slice(0).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}function en(t,e,r=!0){let n=OU(e);return{prefix:t.substring(0,n),content:r?va(t.substring(n)):t.substring(n)}}function os(t){let e=Hv(t.oldName),r=Hv(t.newName);if(e!==r&&!Gv(e)&&!Gv(r)){let n=[],i=[],a=e.split(Zn),s=r.split(Zn),o=a.length,l=s.length,c=0,u=o-1,f=l-1;for(;cc&&f>c&&a[u]===s[f];)i.unshift(s[f]),u-=1,f-=1;let d=n.join(Zn),h=i.join(Zn),p=a.slice(c,u+1).join(Zn),g=s.slice(c,f+1).join(Zn);return d.length&&h.length?d+Zn+"{"+p+" \u2192 "+g+"}"+Zn+h:d.length?d+Zn+"{"+p+" \u2192 "+g+"}":h.length?"{"+p+" \u2192 "+g+"}"+Zn+h:e+" \u2192 "+r}else return Gv(r)?e:r}function qo(t){return`d2h-${dM(os(t)).toString().slice(-6)}`}function Wo(t){let e="file-changed";return t.isRename||t.isCopy?e="file-renamed":t.isNew?e="file-added":t.isDeleted?e="file-deleted":t.newName!==t.oldName&&(e="file-renamed"),e}function wh(t,e,r,n={}){let{matching:i,maxLineLengthHighlight:a,matchWordsThreshold:s,diffStyle:o}=Object.assign(Object.assign({},ss),n),l=en(t,r,!1),c=en(e,r,!1);if(l.content.length>a||c.content.length>a)return{oldLine:{prefix:l.prefix,content:va(l.content)},newLine:{prefix:c.prefix,content:va(c.content)}};let u=o==="char"?E3(l.content,c.content):k3(l.content,c.content),f=[];if(o==="word"&&i==="words"){let h=u.filter(v=>v.removed),p=u.filter(v=>v.added);PU(p,h).forEach(v=>{v[0].length===1&&v[1].length===1&&vM(v[0][0],v[1][0]){let g=p.added?"ins":p.removed?"del":null,v=f.indexOf(p)>-1?' class="d2h-change"':"",y=va(p.value);return g!==null?`${h}<${g}${v}>${y}`:`${h}${y}`},"");return{oldLine:{prefix:l.prefix,content:RU(d)},newLine:{prefix:c.prefix,content:MU(d)}}}var yM="file-summary",IU="icon",FU={colorScheme:ss.colorScheme},bh=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},FU),r)}render(e){let r=e.map(n=>this.hoganUtils.render(yM,"line",{fileHtmlId:qo(n),oldName:n.oldName,newName:n.newName,fileName:os(n),deletedLines:"-"+n.deletedLines,addedLines:"+"+n.addedLines},{fileIcon:this.hoganUtils.template(IU,Wo(n))})).join(` +`);return this.hoganUtils.render(yM,"wrapper",{colorScheme:Vo(this.config.colorScheme),filesNumber:e.length,files:r})}};m();var Vv=Object.assign(Object.assign({},ss),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),Gc="generic",wM="line-by-line",$U="icon",DU="tag",zc=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},Vv),r)}render(e){let r=e.map(n=>{let i;return n.blocks.length?i=this.generateFileHtml(n):i=this.generateEmptyDiff(),this.makeFileDiffHtml(n,i)}).join(` +`);return this.hoganUtils.render(Gc,"wrapper",{colorScheme:Vo(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let n=this.hoganUtils.template(wM,"file-diff"),i=this.hoganUtils.template(Gc,"file-path"),a=this.hoganUtils.template($U,"file"),s=this.hoganUtils.template(DU,Wo(e));return n.render({file:e,fileHtmlId:qo(e),diffs:r,filePath:i.render({fileDiffName:os(e)},{fileIcon:a,fileTag:s})})}generateEmptyDiff(){return this.hoganUtils.render(Gc,"empty-diff",{contentClass:"d2h-code-line",CSSLineClass:Dt})}generateFileHtml(e){let r=Go(Uo(n=>en(n.content,e.isCombined).content));return e.blocks.map(n=>{let i=this.hoganUtils.render(Gc,"block-header",{CSSLineClass:Dt,blockHeader:e.isTooBig?n.header:va(n.header),lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line"});return this.applyLineGroupping(n).forEach(([a,s,o])=>{if(s.length&&o.length&&!a.length)this.applyRematchMatching(s,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e,e.isCombined,l,c);i+=u,i+=f});else if(a.length)a.forEach(l=>{let{prefix:c,content:u}=en(l.content,e.isCombined);i+=this.generateSingleLineHtml(e,{type:Dt.CONTEXT,prefix:c,content:u,oldNumber:l.oldNumber,newNumber:l.newNumber})});else if(s.length||o.length){let{left:l,right:c}=this.processChangedLines(e,e.isCombined,s,o);i+=l,i+=c}else console.error("Unknown state reached while processing groups of lines",a,s,o)}),i}).join(` +`)}applyLineGroupping(e){let r=[],n=[],i=[];for(let a=0;a0)&&(r.push([[],n,i]),n=[],i=[]),s.type===Ke.CONTEXT?r.push([[s],[],[]]):s.type===Ke.INSERT&&n.length===0?r.push([[],[],[s]]):s.type===Ke.INSERT&&n.length>0?i.push(s):s.type===Ke.DELETE&&n.push(s)}return(n.length||i.length)&&(r.push([[],n,i]),n=[],i=[]),r}applyRematchMatching(e,r,n){let i=e.length*r.length,a=yh(e.concat(r).map(o=>o.content.length));return i{let i;return n.blocks.length?i=this.generateFileHtml(n):i=this.generateEmptyDiff(),this.makeFileDiffHtml(n,i)}).join(` +`);return this.hoganUtils.render(Vc,"wrapper",{colorScheme:Vo(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let n=this.hoganUtils.template(LU,"file-diff"),i=this.hoganUtils.template(Vc,"file-path"),a=this.hoganUtils.template(jU,"file"),s=this.hoganUtils.template(NU,Wo(e));return n.render({file:e,fileHtmlId:qo(e),diffs:r,filePath:i.render({fileDiffName:os(e)},{fileIcon:a,fileTag:s})})}generateEmptyDiff(){return{right:"",left:this.hoganUtils.render(Vc,"empty-diff",{contentClass:"d2h-code-side-line",CSSLineClass:Dt})}}generateFileHtml(e){let r=Go(Uo(n=>en(n.content,e.isCombined).content));return e.blocks.map(n=>{let i={left:this.makeHeaderHtml(n.header,e),right:this.makeHeaderHtml("")};return this.applyLineGroupping(n).forEach(([a,s,o])=>{if(s.length&&o.length&&!a.length)this.applyRematchMatching(s,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e.isCombined,l,c);i.left+=u,i.right+=f});else if(a.length)a.forEach(l=>{let{prefix:c,content:u}=en(l.content,e.isCombined),{left:f,right:d}=this.generateLineHtml({type:Dt.CONTEXT,prefix:c,content:u,number:l.oldNumber},{type:Dt.CONTEXT,prefix:c,content:u,number:l.newNumber});i.left+=f,i.right+=d});else if(s.length||o.length){let{left:l,right:c}=this.processChangedLines(e.isCombined,s,o);i.left+=l,i.right+=c}else console.error("Unknown state reached while processing groups of lines",a,s,o)}),i}).reduce((n,i)=>({left:n.left+i.left,right:n.right+i.right}),{left:"",right:""})}applyLineGroupping(e){let r=[],n=[],i=[];for(let a=0;a0)&&(r.push([[],n,i]),n=[],i=[]),s.type===Ke.CONTEXT?r.push([[s],[],[]]):s.type===Ke.INSERT&&n.length===0?r.push([[],[],[s]]):s.type===Ke.INSERT&&n.length>0?i.push(s):s.type===Ke.DELETE&&n.push(s)}return(n.length||i.length)&&(r.push([[],n,i]),n=[],i=[]),r}applyRematchMatching(e,r,n){let i=e.length*r.length,a=yh(e.concat(r).map(o=>o.content.length));return i'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(n.rp("'),n.b(n.v(n.f("fileName",t,e,0))),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(n.v(n.f("addedLines",t,e,0))),n.b(""),n.b(` +`+r),n.b(' '),n.b(n.v(n.f("deletedLines",t,e,0))),n.b(""),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{"'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' Files changed ('),n.b(n.v(n.f("filesNumber",t,e,0))),n.b(")"),n.b(` +`+r),n.b(' hide'),n.b(` +`+r),n.b(' show'),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
    '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("files",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-block-header"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.s(n.f("blockHeader",t,e,1),t,e,0,156,173,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(s.t(s.f("blockHeader",i,a,0)))}),t.pop()),n.s(n.f("blockHeader",t,e,1),t,e,1,0,0,"")||n.b(" "),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-empty-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" File without changes"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-file-path"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(''),n.b(` +`+r),n.b(n.rp("'),n.b(n.v(n.f("fileDiffName",t,e,0))),n.b(""),n.b(` +`+r),n.b(n.rp(""),n.b(` +`+r),n.b('"),n.fl()},partials:{""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("lineNumber",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.s(n.f("prefix",t,e,1),t,e,0,162,238,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(' '),s.b(s.t(s.f("prefix",i,a,0))),s.b(""),s.b(` +`+r)}),t.pop()),n.s(n.f("prefix",t,e,1),t,e,1,0,0,"")||(n.b('  '),n.b(` +`+r)),n.s(n.f("content",t,e,1),t,e,0,371,445,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(' '),s.b(s.t(s.f("content",i,a,0))),s.b(""),s.b(` +`+r)}),t.pop()),n.s(n.f("content",t,e,1),t,e,1,0,0,"")||(n.b('
'),n.b(` +`+r)),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-wrapper"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("content",t,e,0))),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["icon-file-added"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-changed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-deleted"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-renamed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["line-by-line-file-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("filePath",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("diffs",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["line-by-line-numbers"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(n.v(n.f("oldNumber",t,e,0))),n.b("
"),n.b(` +`+r),n.b('
'),n.b(n.v(n.f("newNumber",t,e,0))),n.b("
"),n.fl()},partials:{},subs:{}});dt["side-by-side-file-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("filePath",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.d("diffs.left",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.d("diffs.right",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["tag-file-added"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('ADDED'),n.fl()},partials:{},subs:{}});dt["tag-file-changed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('CHANGED'),n.fl()},partials:{},subs:{}});dt["tag-file-deleted"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('DELETED'),n.fl()},partials:{},subs:{}});dt["tag-file-renamed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('RENAMED'),n.fl()},partials:{},subs:{}});var Wc=class{constructor({compiledTemplates:e={},rawTemplates:r={}}){let n=Object.entries(r).reduce((i,[a,s])=>{let o=Kv.compile(s,{asString:!1});return Object.assign(Object.assign({},i),{[a]:o})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},dt),e),n)}static compile(e){return Kv.compile(e,{asString:!1})}render(e,r,n,i,a){let s=this.templateKey(e,r);try{return this.preCompiledTemplates[s].render(n,i,a)}catch(o){throw new Error(`Could not find template to render '${s}'`)}}template(e,r){return this.preCompiledTemplates[this.templateKey(e,r)]}templateKey(e,r){return`${e}-${r}`}};var HU=Object.assign(Object.assign(Object.assign({},Vv),qv),{outputFormat:lM.LINE_BY_LINE,drawFileList:!0});function SM(t,e={}){let r=Object.assign(Object.assign({},HU),e),n=typeof t=="string"?gM(t,r):t,i=new Wc(r),{colorScheme:a}=r,s={colorScheme:a},o=r.drawFileList?new bh(i,s).render(n):"",l=r.outputFormat==="side-by-side"?new qc(i,r).render(n):new zc(i,r).render(n);return o+l}var xh=require("obsidian");var ls=class extends xh.ItemView{constructor(r,n){super(r);this.plugin=n;this.gettingDiff=!1;this.parser=new DOMParser,this.navigation=!0,this.gitRefreshRef=this.app.workspace.on("obsidian-git:status-changed",()=>{this.refresh().catch(console.error)})}getViewType(){return ua.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let n=this.state.bFile.split("/").last();return n!=null&&n.endsWith(".md")&&(n=n.slice(0,-3)),`Diff: ${n}`}return ua.name}getIcon(){return ua.icon}async setState(r,n){this.state=r,xh.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await this.refresh()}getState(){return this.state}onClose(){return this.app.workspace.offref(this.gitRefreshRef),this.app.workspace.offref(this.gitViewRefreshRef),super.onClose()}async onOpen(){return await this.refresh(),super.onOpen()}async refresh(){var r;if((r=this.state)!=null&&r.bFile&&!this.gettingDiff&&this.plugin.gitManager){this.gettingDiff=!0;try{let n=await this.plugin.gitManager.getDiffString(this.state.bFile,this.state.aRef=="HEAD",this.state.bRef);this.contentEl.empty();let i=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);if(!n){if(this.plugin.gitManager instanceof Ce&&await this.plugin.gitManager.isTracked(this.state.bFile))n=[`--- ${this.state.aFile}`,`+++ ${this.state.bFile}`,""].join(` +`);else if(await this.app.vault.adapter.exists(i)){let a=await this.app.vault.adapter.read(i);n=[...`--- /dev/null ++++ ${this.state.bFile} +@@ -0,0 +1,${a.split(` +`).length} @@`.split(` +`),...a.split(` +`).map(o=>`+${o}`)].join(` +`)}}if(n){let a=this.parser.parseFromString(SM(n),"text/html").querySelector(".d2h-file-diff");this.contentEl.append(a)}else{let a=this.contentEl.createDiv({cls:"obsidian-git-center"});a.createSpan({text:"\u26A0\uFE0F",attr:{style:"font-size: 2em"}}),a.createEl("br"),a.createSpan({text:"File not found: "+this.state.bFile})}}finally{this.gettingDiff=!1}}}};m();var Qo=require("obsidian");var el=require("@codemirror/commands");m();var Ie=require("@codemirror/view"),ke=require("@codemirror/state");m();var Zv="\u037C",EM=typeof Symbol=="undefined"?"__"+Zv:Symbol.for(Zv),Jv=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),AM=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},Sh=class{constructor(e,r){this.rules=[];let{finish:n}=r||{};function i(s){return/^@/.test(s)?[s]:s.split(/,\s*/)}function a(s,o,l,c){let u=[],f=/^@(\w+)\b/.exec(s[0]),d=f&&f[1]=="keyframes";if(f&&o==null)return l.push(s[0]+";");for(let h in o){let p=o[h];if(/&/.test(h))a(h.split(/,\s*/).map(g=>s.map(v=>g.replace(/&/,v))).reduce((g,v)=>g.concat(v)),p,l);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+h+") should be a primitive value.");a(i(h),p,u,d)}else p!=null&&u.push(h.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(u.length||d)&&l.push((n&&!f&&!c?s.map(n):s).join(", ")+" {"+u.join(" ")+"}")}for(let s in e)a(i(s),e[s],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=AM[EM]||1;return AM[EM]=e+1,Zv+e.toString(36)}static mount(e,r,n){let i=e[Jv],a=n&&n.nonce;i?a&&i.setNonce(a):i=new Qv(e,a),i.mount(Array.isArray(r)?r:[r],e)}},kM=new Map,Qv=class{constructor(e,r){let n=e.ownerDocument||e,i=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let a=kM.get(n);if(a)return e[Jv]=a;this.sheet=new i.CSSStyleSheet,kM.set(n,this)}else this.styleTag=n.createElement("style"),r&&this.styleTag.setAttribute("nonce",r);this.modules=[],e[Jv]=this}mount(e,r){let n=this.sheet,i=0,a=0;for(let s=0;s-1&&(this.modules.splice(l,1),a--,l=-1),l==-1){if(this.modules.splice(a++,0,o),n)for(let c=0;cc){let f=t.slice(e,r).indexOf(n.slice(i,a));if(f>-1)return[new pt(e,e+f,i,i),new pt(e+f+c,r,a,a)]}else if(c>l){let f=n.slice(i,a).indexOf(t.slice(e,r));if(f>-1)return[new pt(e,e,i,i+f),new pt(r,r,i+f+l,a)]}if(l==1||c==1)return[new pt(e,r,i,a)];let u=qM(t,e,r,n,i,a);if(u){let[f,d,h]=u;return us(t,e,f,n,i,d).concat(us(t,f+h,r,n,d+h,a))}return GU(t,e,r,n,i,a)}var Yc=1e9,Xc=0,s1=!1;function GU(t,e,r,n,i,a){let s=r-e,o=a-i;if(Yc<1e9&&Math.min(s,o)>Yc*16||Xc>0&&Date.now()>Xc)return Math.min(s,o)>Yc*64?[new pt(e,r,i,a)]:TM(t,e,r,n,i,a);let l=Math.ceil((s+o)/2);e1.reset(l),t1.reset(l);let c=(h,p)=>t.charCodeAt(e+h)==n.charCodeAt(i+p),u=(h,p)=>t.charCodeAt(r-h-1)==n.charCodeAt(a-p-1),f=(s-o)%2!=0?t1:null,d=f?null:e1;for(let h=0;hYc||Xc>0&&!(h&63)&&Date.now()>Xc)return TM(t,e,r,n,i,a);let p=e1.advance(h,s,o,l,f,!1,c)||t1.advance(h,s,o,l,d,!0,u);if(p)return zU(t,e,r,e+p[0],n,i,a,i+p[1])}return[new pt(e,r,i,a)]}var Ch=class{constructor(){this.vec=[]}reset(e){this.len=e<<1;for(let r=0;rr)this.end+=2;else if(f>n)this.start+=2;else if(a){let d=i+(r-n)-l;if(d>=0&&d=r-u)return[h,i+h-d]}else{let h=r-a.vec[d];if(u>=h)return[u,f]}}}return null}},e1=new Ch,t1=new Ch;function zU(t,e,r,n,i,a,s,o){let l=!1;return!Ko(t,n)&&++n==r&&(l=!0),!Ko(i,o)&&++o==s&&(l=!0),l?[new pt(e,r,a,s)]:us(t,e,n,i,a,o).concat(us(t,n,r,i,o,s))}function VM(t,e){let r=1,n=Math.min(t,e);for(;rr||u>a||t.slice(o,c)!=n.slice(l,u)){if(s==1)return o-e-(Ko(t,o)?0:1);s=s>>1}else{if(c==r||u==a)return c-e;o=c,l=u}}}function l1(t,e,r,n,i,a){if(e==r||i==a||t.charCodeAt(r-1)!=n.charCodeAt(a-1))return 0;let s=VM(r-e,a-i);for(let o=r,l=a;;){let c=o-s,u=l-s;if(c>1}else{if(c==e||u==i)return r-c;o=c,l=u}}}function r1(t,e,r,n,i,a,s,o){let l=n.slice(i,a),c=null;for(;;){if(c||s=r)break;let d=t.slice(u,f),h=-1;for(;(h=l.indexOf(d,h+1))!=-1;){let p=o1(t,f,r,n,i+h+d.length,a),g=l1(t,e,u,n,i,i+h),v=d.length+p+g;(!c||c[2]>1}}function qM(t,e,r,n,i,a){let s=r-e,o=a-i;if(si.fromA-e&&n.toB>i.fromB-e&&(t[r-1]=new pt(n.fromA,i.toA,n.fromB,i.toB),t.splice(r--,1))}}function VU(t,e,r){for(;;){WM(r,1);let n=!1;for(let i=0;i3||o>3){let l=i==t.length-1?e.length:t[i+1].fromA,c=a.fromA-n,u=l-a.toA,f=PM(e,a.fromA,c),d=CM(e,a.toA,u),h=a.fromA-f,p=d-a.toA;if((!s||!o)&&h&&p){let g=Math.max(s,o),[v,y,b]=s?[e,a.fromA,a.toA]:[r,a.fromB,a.toB];g>h&&e.slice(f,a.fromA)==v.slice(b-h,b)?(a=t[i]=new pt(f,f+s,a.fromB-h,a.toB-h),f=a.fromA,d=CM(e,a.toA,l-a.toA)):g>p&&e.slice(a.toA,d)==v.slice(y,y+p)&&(a=t[i]=new pt(d-s,d,a.fromB+p,a.toB+p),d=a.toA,f=PM(e,a.fromA,a.fromA-n)),h=a.fromA-f,p=d-a.toA}if(h||p)a=t[i]=new pt(a.fromA-h,a.toA+p,a.fromB-h,a.toB+p);else if(s){if(!o){let g=MM(e,a.fromA,a.toA),v,y=g<0?-1:RM(e,a.toA,a.fromA);g>-1&&(v=g-a.fromA)<=u&&e.slice(a.fromA,g)==e.slice(a.toA,a.toA+v)?a=t[i]=a.offset(v):y>-1&&(v=a.toA-y)<=c&&e.slice(a.fromA-v,a.fromA)==e.slice(y,a.toA)&&(a=t[i]=a.offset(-v))}}else{let g=MM(r,a.fromB,a.toB),v,y=g<0?-1:RM(r,a.toB,a.fromB);g>-1&&(v=g-a.fromB)<=u&&r.slice(a.fromB,g)==r.slice(a.toB,a.toB+v)?a=t[i]=a.offset(v):y>-1&&(v=a.toB-y)<=c&&r.slice(a.fromB-v,a.fromB)==r.slice(y,a.toB)&&(a=t[i]=a.offset(-v))}}n=a.toA}return WM(t,3),t}var cs;try{cs=new RegExp("[\\p{Alphabetic}\\p{Number}]","u")}catch(t){}function YM(t){return t>48&&t<58||t>64&&t<91||t>96&&t<123}function XM(t,e){if(e==t.length)return 0;let r=t.charCodeAt(e);return r<192?YM(r)?1:0:cs?!JM(r)||e==t.length-1?cs.test(String.fromCharCode(r))?1:0:cs.test(t.slice(e,e+2))?2:0:0}function KM(t,e){if(!e)return 0;let r=t.charCodeAt(e-1);return r<192?YM(r)?1:0:cs?!QM(r)||e==1?cs.test(String.fromCharCode(r))?1:0:cs.test(t.slice(e-2,e))?2:0:0}var ZM=8;function CM(t,e,r){if(e==t.length||!KM(t,e))return e;for(let n=e,i=e+r,a=0;ai)return n;n+=s}return e}function PM(t,e,r){if(!e||!XM(t,e))return e;for(let n=e,i=e-r,a=0;at>=55296&&t<=56319,QM=t=>t>=56320&&t<=57343;function Ko(t,e){return!e||e==t.length||!JM(t.charCodeAt(e-1))||!QM(t.charCodeAt(e))}function WU(t,e,r){var n;return Yc=((n=r==null?void 0:r.scanLimit)!==null&&n!==void 0?n:1e9)>>1,Xc=r!=null&&r.timeout?Date.now()+r.timeout:0,s1=!1,VU(t,e,us(t,0,t.length,e,0,e.length))}function eO(){return!s1}function tO(t,e,r){return qU(WU(t,e,r),t,e)}var Jn=ke.Facet.define({combine:t=>t[0]}),n1=ke.StateEffect.define(),YU=ke.Facet.define(),Zo=ke.StateField.define({create(t){return null},update(t,e){for(let r of e.effects)r.is(n1)&&(t=r.value);for(let r of e.state.facet(YU))t=r(t,e);return t}});var Xo=class t{constructor(e,r,n,i,a,s=!0){this.changes=e,this.fromA=r,this.toA=n,this.fromB=i,this.toB=a,this.precise=s}offset(e,r){return e||r?new t(this.changes,this.fromA+e,this.toA+e,this.fromB+r,this.toB+r,this.precise):this}get endA(){return Math.max(this.fromA,this.toA-1)}get endB(){return Math.max(this.fromB,this.toB-1)}static build(e,r,n){let i=tO(e.toString(),r.toString(),n);return rO(i,e,r,0,0,eO())}static updateA(e,r,n,i,a){return DM($M(e,i,!0,n.length),e,r,n,a)}static updateB(e,r,n,i,a){return DM($M(e,i,!1,r.length),e,r,n,a)}};function OM(t,e,r,n){let i=r.lineAt(t),a=n.lineAt(e);return i.to==t&&a.to==e&&tf+1&&v>d+1)break;h.push(p.offset(-c+n,-u+i)),[f,d]=IM(p.toA+n,p.toB+i,e,r),o++}s.push(new Xo(h,c,Math.max(c,f),u,Math.max(u,d),a))}return s}var Eh=1e3;function FM(t,e,r,n){let i=0,a=t.length;for(;;){if(i==a){let u=0,f=0;i&&({toA:u,toB:f}=t[i-1]);let d=e-(r?u:f);return[u+d,f+d]}let s=i+a>>1,o=t[s],[l,c]=r?[o.fromA,o.toA]:[o.fromB,o.toB];if(l>e)a=s;else if(c<=e)i=s+1;else return n?[o.fromA,o.fromB]:[o.toA,o.toB]}}function $M(t,e,r,n){let i=[];return e.iterChangedRanges((a,s,o,l)=>{let c=0,u=r?e.length:n,f=0,d=r?n:e.length;a>Eh&&([c,f]=FM(t,a-Eh,r,!0)),s=c?i[i.length-1]={fromA:p.fromA,fromB:p.fromB,toA:u,toB:d,diffA:p.diffA+g,diffB:p.diffB+v}:i.push({fromA:c,toA:u,fromB:f,toB:d,diffA:g,diffB:v})}),i}function DM(t,e,r,n,i){if(!t.length)return e;let a=[];for(let s=0,o=0,l=0,c=0;;s++){let u=s==t.length?null:t[s],f=u?u.fromA+o:r.length,d=u?u.fromB+l:n.length;for(;cf||v.toB+l>d)break;a.push(v.offset(o,l)),c++}if(!u)break;let h=u.toA+o+u.diffA,p=u.toB+l+u.diffB,g=tO(r.sliceString(f,h),n.sliceString(d,p),i);for(let v of rO(g,r,n,f,d,eO()))a.push(v);for(o+=u.diffA,l+=u.diffB;ch&&v.fromB+l>p)break;c++}}return a}var XU={scanLimit:500},nO=Ie.ViewPlugin.fromClass(class{constructor(t){({deco:this.deco,gutter:this.gutter}=NM(t))}update(t){(t.docChanged||t.viewportChanged||KU(t.startState,t.state)||ZU(t.startState,t.state))&&({deco:this.deco,gutter:this.gutter}=NM(t.view))}},{decorations:t=>t.deco}),Ah=ke.Prec.low((0,Ie.gutter)({class:"cm-changeGutter",markers:t=>{var e;return((e=t.plugin(nO))===null||e===void 0?void 0:e.gutter)||ke.RangeSet.empty}}));function KU(t,e){return t.field(Zo,!1)!=e.field(Zo,!1)}function ZU(t,e){return t.facet(Jn)!=e.facet(Jn)}var LM=Ie.Decoration.line({class:"cm-changedLine"}),JU=Ie.Decoration.mark({class:"cm-changedText"}),QU=Ie.Decoration.mark({tagName:"ins",class:"cm-insertedLine"}),eG=Ie.Decoration.mark({tagName:"del",class:"cm-deletedLine"}),jM=new class extends Ie.GutterMarker{constructor(){super(...arguments),this.elementClass="cm-changedLineGutter"}};function tG(t,e,r,n,i,a){let s=r?t.fromA:t.fromB,o=r?t.toA:t.toB,l=0;if(s!=o){i.add(s,s,LM),i.add(s,o,r?eG:QU),a&&a.add(s,s,jM);for(let c=e.iterRange(s,o-1),u=s;!c.next().done;){if(c.lineBreak){u++,i.add(u,u,LM),a&&a.add(u,u,jM);continue}let f=u+c.value.length;if(n)for(;l=u)break;(s?f.toA:f.toB)>c&&(!a||!a(t.state,f,o,l))&&tG(f,t.state.doc,s,n,o,l)}return{deco:o.finish(),gutter:l&&l.finish()}}var Yo=class extends Ie.WidgetType{constructor(e){super(),this.height=e}eq(e){return this.height==e.height}toDOM(){let e=document.createElement("div");return e.className="cm-mergeSpacer",e.style.height=this.height+"px",e}updateDOM(e){return e.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},Ph=ke.StateEffect.define({map:(t,e)=>t.map(e)}),Kc=ke.StateField.define({create:()=>Ie.Decoration.none,update:(t,e)=>{for(let r of e.effects)if(r.is(Ph))return r.value;return t.map(e.changes)},provide:t=>Ie.EditorView.decorations.from(t)}),kh=.01;function BM(t,e){if(t.size!=e.size)return!1;let r=t.iter(),n=e.iter();for(;r.value;){if(r.from!=n.from||Math.abs(r.value.spec.widget.height-n.value.spec.widget.height)>1)return!1;r.next(),n.next()}return!0}function rG(t,e,r){let n=new ke.RangeSetBuilder,i=new ke.RangeSetBuilder,a=t.state.field(Kc).iter(),s=e.state.field(Kc).iter(),o=0,l=0,c=0,u=0,f=t.viewport,d=e.viewport;for(let v=0;;v++){let y=vkh&&(u+=k,i.add(l,l,Ie.Decoration.widget({widget:new Yo(k),block:!0,side:-1})))}if(b>o+1e3&&of.from&&ld.from){let S=Math.min(f.from-o,d.from-l);o+=S,l+=S,v--}else if(y)o=y.toA,l=y.toB;else break;for(;a.value&&a.fromkh&&i.add(e.state.doc.length,e.state.doc.length,Ie.Decoration.widget({widget:new Yo(h),block:!0,side:1}));let p=n.finish(),g=i.finish();BM(p,t.state.field(Kc))||t.dispatch({effects:Ph.of(p)}),BM(g,e.state.field(Kc))||e.dispatch({effects:Ph.of(g)})}var i1=ke.StateEffect.define({map:(t,e)=>e.mapPos(t)}),a1=class extends Ie.WidgetType{constructor(e){super(),this.lines=e}eq(e){return this.lines==e.lines}toDOM(e){let r=document.createElement("div");return r.className="cm-collapsedLines",r.textContent=e.state.phrase("$ unchanged lines",this.lines),r.addEventListener("click",n=>{let i=e.posAtDOM(n.target);e.dispatch({effects:i1.of(i)});let{side:a,sibling:s}=e.state.facet(Jn);s&&s().dispatch({effects:i1.of(nG(i,e.state.field(Zo),a=="a"))})}),r}ignoreEvent(e){return e instanceof MouseEvent}get estimatedHeight(){return 27}get type(){return"collapsed-unchanged-code"}};function nG(t,e,r){let n=0,i=0;for(let a=0;;a++){let s=a=t)return i+(t-n);[n,i]=r?[s.toA,s.toB]:[s.toB,s.toA]}}var iG=ke.StateField.define({create(t){return Ie.Decoration.none},update(t,e){t=t.map(e.changes);for(let r of e.effects)r.is(i1)&&(t=t.update({filter:n=>n!=r.value}));return t},provide:t=>Ie.EditorView.decorations.from(t)});function HM({margin:t=3,minSize:e=4}){return iG.init(r=>aG(r,t,e))}function aG(t,e,r){let n=new ke.RangeSetBuilder,i=t.facet(Jn).side=="a",a=t.field(Zo),s=1;for(let o=0;;o++){let l=o=r&&n.add(t.doc.line(c).from,t.doc.line(u).to,Ie.Decoration.replace({widget:new a1(f),block:!0})),!l)break;s=t.doc.lineAt(Math.min(t.doc.length,i?l.toA:l.toB)).number}return n.finish()}var sG=Ie.EditorView.styleModule.of(new Sh({".cm-mergeView":{overflowY:"auto"},".cm-mergeViewEditors":{display:"flex",alignItems:"stretch"},".cm-mergeViewEditor":{flexGrow:1,flexBasis:0,overflow:"hidden"},".cm-merge-revert":{width:"1.6em",flexGrow:0,flexShrink:0,position:"relative"},".cm-merge-revert button":{position:"absolute",display:"block",width:"100%",boxSizing:"border-box",textAlign:"center",background:"none",border:"none",font:"inherit",cursor:"pointer"}})),oG=Ie.EditorView.baseTheme({".cm-mergeView & .cm-scroller, .cm-mergeView &":{height:"auto !important",overflowY:"visible !important"},"&.cm-merge-a .cm-changedLine, .cm-deletedChunk":{backgroundColor:"rgba(160, 128, 100, .08)"},"&.cm-merge-b .cm-changedLine, .cm-inlineChangedLine":{backgroundColor:"rgba(100, 160, 128, .08)"},"&light.cm-merge-a .cm-changedText, &light .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ee443366, #ee443366) bottom/100% 2px no-repeat"},"&dark.cm-merge-a .cm-changedText, &dark .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ffaa9966, #ffaa9966) bottom/100% 2px no-repeat"},"&light.cm-merge-b .cm-changedText":{background:"linear-gradient(#22bb22aa, #22bb22aa) bottom/100% 2px no-repeat"},"&dark.cm-merge-b .cm-changedText":{background:"linear-gradient(#88ff88aa, #88ff88aa) bottom/100% 2px no-repeat"},"&.cm-merge-b .cm-deletedText":{background:"#ff000033"},".cm-insertedLine, .cm-deletedLine, .cm-deletedLine del":{textDecoration:"none"},".cm-deletedChunk":{paddingLeft:"6px","& .cm-chunkButtons":{position:"absolute",insetInlineEnd:"5px"},"& button":{border:"none",cursor:"pointer",color:"white",margin:"0 2px",borderRadius:"3px","&[name=accept]":{background:"#2a2"},"&[name=reject]":{background:"#d43"}}},".cm-collapsedLines":{padding:"5px 5px 5px 10px",cursor:"pointer","&:before":{content:'"\u299A"',marginInlineEnd:"7px"},"&:after":{content:'"\u299A"',marginInlineStart:"7px"}},"&light .cm-collapsedLines":{color:"#444",background:"linear-gradient(to bottom, transparent 0, #f3f3f3 30%, #f3f3f3 70%, transparent 100%)"},"&dark .cm-collapsedLines":{color:"#ddd",background:"linear-gradient(to bottom, transparent 0, #222 30%, #222 70%, transparent 100%)"},".cm-changeGutter":{width:"3px",paddingLeft:"1px"},"&light.cm-merge-a .cm-changedLineGutter, &light .cm-deletedLineGutter":{background:"#e43"},"&dark.cm-merge-a .cm-changedLineGutter, &dark .cm-deletedLineGutter":{background:"#fa9"},"&light.cm-merge-b .cm-changedLineGutter":{background:"#2b2"},"&dark.cm-merge-b .cm-changedLineGutter":{background:"#8f8"},".cm-inlineChangedLineGutter":{background:"#75d"}}),UM=new ke.Compartment,Th=new ke.Compartment,Rh=class{constructor(e){this.revertDOM=null,this.revertToA=!1,this.revertToLeft=!1,this.measuring=-1,this.diffConf=e.diffConfig||XU;let r=[ke.Prec.low(nO),oG,sG,Kc,Ie.EditorView.updateListener.of(f=>{this.measuring<0&&(f.heightChanged||f.viewportChanged)&&!f.transactions.some(d=>d.effects.some(h=>h.is(Ph)))&&this.measure()})],n=[Jn.of({side:"a",sibling:()=>this.b,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&n.push(Ah);let i=ke.EditorState.create({doc:e.a.doc,selection:e.a.selection,extensions:[e.a.extensions||[],Ie.EditorView.editorAttributes.of({class:"cm-merge-a"}),Th.of(n),r]}),a=[Jn.of({side:"b",sibling:()=>this.a,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&a.push(Ah);let s=ke.EditorState.create({doc:e.b.doc,selection:e.b.selection,extensions:[e.b.extensions||[],Ie.EditorView.editorAttributes.of({class:"cm-merge-b"}),Th.of(a),r]});this.chunks=Xo.build(i.doc,s.doc,this.diffConf);let o=[Zo.init(()=>this.chunks),UM.of(e.collapseUnchanged?HM(e.collapseUnchanged):[])];i=i.update({effects:ke.StateEffect.appendConfig.of(o)}).state,s=s.update({effects:ke.StateEffect.appendConfig.of(o)}).state,this.dom=document.createElement("div"),this.dom.className="cm-mergeView",this.editorDOM=this.dom.appendChild(document.createElement("div")),this.editorDOM.className="cm-mergeViewEditors";let l=e.orientation||"a-b",c=document.createElement("div");c.className="cm-mergeViewEditor";let u=document.createElement("div");u.className="cm-mergeViewEditor",this.editorDOM.appendChild(l=="a-b"?c:u),this.editorDOM.appendChild(l=="a-b"?u:c),this.a=new Ie.EditorView({state:i,parent:c,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.a)}),this.b=new Ie.EditorView({state:s,parent:u,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.b)}),this.setupRevertControls(!!e.revertControls,e.revertControls=="b-to-a",e.renderRevertControl),e.parent&&e.parent.appendChild(this.dom),this.scheduleMeasure()}dispatch(e,r){if(e.some(n=>n.docChanged)){let n=e[e.length-1],i=e.reduce((s,o)=>s.compose(o.changes),ke.ChangeSet.empty(e[0].startState.doc.length));this.chunks=r==this.a?Xo.updateA(this.chunks,n.newDoc,this.b.state.doc,i,this.diffConf):Xo.updateB(this.chunks,this.a.state.doc,n.newDoc,i,this.diffConf),r.update([...e,n.state.update({effects:n1.of(this.chunks)})]);let a=r==this.a?this.b:this.a;a.update([a.state.update({effects:n1.of(this.chunks)})]),this.scheduleMeasure()}else r.update(e)}reconfigure(e){if("diffConfig"in e&&(this.diffConf=e.diffConfig),"orientation"in e){let a=e.orientation!="b-a";if(a!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let s=this.a.dom.parentNode,o=this.b.dom.parentNode;s.remove(),o.remove(),this.editorDOM.insertBefore(a?s:o,this.editorDOM.firstChild),this.editorDOM.appendChild(a?o:s),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in e||"renderRevertControl"in e){let a=!!this.revertDOM,s=this.revertToA,o=this.renderRevert;"revertControls"in e&&(a=!!e.revertControls,s=e.revertControls=="b-to-a"),"renderRevertControl"in e&&(o=e.renderRevertControl),this.setupRevertControls(a,s,o)}let r="highlightChanges"in e,n="gutter"in e,i="collapseUnchanged"in e;if(r||n||i){let a=[],s=[];if(r||n){let o=this.a.state.facet(Jn),l=n?e.gutter!==!1:o.markGutter,c=r?e.highlightChanges!==!1:o.highlightChanges;a.push(Th.reconfigure([Jn.of({side:"a",sibling:()=>this.b,highlightChanges:c,markGutter:l}),l?Ah:[]])),s.push(Th.reconfigure([Jn.of({side:"b",sibling:()=>this.a,highlightChanges:c,markGutter:l}),l?Ah:[]]))}if(i){let o=UM.reconfigure(e.collapseUnchanged?HM(e.collapseUnchanged):[]);a.push(o),s.push(o)}this.a.dispatch({effects:a}),this.b.dispatch({effects:s})}this.scheduleMeasure()}setupRevertControls(e,r,n){this.revertToA=r,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=n,!e&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):e&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",i=>this.revertClicked(i)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(this.measuring<0){let e=this.dom.ownerDocument.defaultView||window;this.measuring=e.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){rG(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let e=this.revertDOM,r=e.firstChild,n=this.a.viewport,i=this.b.viewport;for(let a=0;an.to||s.fromB>i.to)break;if(s.fromA-1&&(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring),this.dom.remove()}};function GM(t){let e=t.nextSibling;return t.remove(),e}var Mh=require("@codemirror/search"),Jo=require("@codemirror/state"),tn=require("@codemirror/view");var fs=class extends Qo.ItemView{constructor(r,n){super(r);this.plugin=n;this.refreshing=!1;this.ignoreNextModification=!1;this.navigation=!0,this.registerEvent(this.app.workspace.on("obsidian-git:status-changed",()=>{this.mergeView?this.updateRefEditors().catch(console.error):this.createMergeView().catch(console.error)})),this.intervalRef=window.setInterval(()=>{this.mergeView&&this.updateRefEditors().catch(console.error)},30*1e3),this.registerEvent(this.app.vault.on("modify",i=>{this.state.bRef==null&&i.path===this.state.bFile&&(this.ignoreNextModification?this.ignoreNextModification=!1:this.updateModifiableEditor().catch(console.error))})),this.registerEvent(this.app.vault.on("delete",i=>{this.state.bRef==null&&i.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("create",i=>{this.state.bRef==null&&i.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("rename",(i,a)=>{this.state.bRef==null&&(i.path===this.state.bFile||a===this.state.bFile)&&this.createMergeView().catch(console.error)})),this.fileSaveDebouncer=(0,Qo.debounce)(i=>{let a=this.state.bFile;a&&(this.ignoreNextModification=!0,this.plugin.app.vault.adapter.write(this.plugin.gitManager.getRelativeVaultPath(a),i).catch(s=>this.plugin.displayError(s)))},1e3,!1)}getViewType(){return ca.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let n=this.state.bFile.split("/").last();return n!=null&&n.endsWith(".md")&&(n=n.slice(0,-3)),`Diff: ${n}`}return ca.name}getIcon(){return ca.icon}async setState(r,n){this.state=r,Qo.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await super.setState(r,n),await this.createMergeView()}getState(){return this.state}onClose(){return window.clearInterval(this.intervalRef),super.onClose()}async onOpen(){return await this.createMergeView(),super.onOpen()}async gitShow(r,n){try{return await this.plugin.gitManager.show(r,n,!1)}catch(i){if(i instanceof wr&&(i.message.includes("does not exist")||i.message.includes("unknown revision or path")||i.message.includes("exists on disk, but not in")||i.message.includes("fatal: bad object")))return i.message.includes("fatal: bad object")&&this.plugin.displayError(i.message),"";throw i}}async bShouldBeEditable(){if(this.state.bRef!=null)return!1;let r=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);return await this.app.vault.adapter.exists(r)}async updateModifiableEditor(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.b;this.refreshing=!0;let n=await this.app.vault.adapter.read(this.state.bFile);if(n!=r.state.doc.toString()){let i=r.state.update({changes:{from:0,to:r.state.doc.length,insert:n},annotations:[Jo.Transaction.remote.of(!0)]});r.dispatch(i)}this.refreshing=!1}async updateRefEditors(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.a,n=this.mergeView.b;this.refreshing=!0;let i=await this.gitShow(this.state.aRef,this.state.aFile),a;if(this.state.bRef!=null&&(a=await this.gitShow(this.state.bRef,this.state.bFile)),i!=r.state.doc.toString()){let s=r.state.update({changes:{from:0,to:r.state.doc.length,insert:i}});r.dispatch(s)}if(a!=null&&a!=n.state.doc.toString()){let s=n.state.update({changes:{from:0,to:n.state.doc.length,insert:a}});n.dispatch(s)}this.refreshing=!1}async createMergeView(){var r,n,i;if((r=this.state)!=null&&r.aFile&&((n=this.state)!=null&&n.bFile)&&!this.refreshing&&this.plugin.gitManager){this.refreshing=!0,(i=this.mergeView)==null||i.destroy();let a=this.containerEl.children[1];a.empty(),this.contentEl.addClass("git-split-diff-view"),this.bIsEditable=await this.bShouldBeEditable();let s=await this.gitShow(this.state.aRef,this.state.aFile),o;if(this.state.bRef!=null)o=await this.gitShow(this.state.bRef,this.state.bFile);else{let p=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);await this.app.vault.adapter.exists(p)?o=await this.app.vault.adapter.read(p):o=""}let l=[(0,tn.lineNumbers)(),(0,Mh.highlightSelectionMatches)(),(0,tn.drawSelection)(),tn.keymap.of([...el.standardKeymap,el.indentWithTab]),(0,el.history)(),(0,Mh.search)(),tn.EditorView.lineWrapping],c=this,u=tn.ViewPlugin.define(p=>({update(g){if(g.docChanged&&!g.transactions.some(v=>v.annotation(Jo.Transaction.remote))){let v=p.state.doc.toString();c.fileSaveDebouncer(v)}}})),f={doc:s,extensions:[...l,tn.EditorView.editable.of(!1),Jo.EditorState.readOnly.of(!0)]},d=[...l];this.bIsEditable?d.push(u):d.push(tn.EditorView.editable.of(!1),Jo.EditorState.readOnly.of(!0));let h={doc:o,extensions:d};a.addClasses(["cm-s-obsidian","mod-cm6","markdown-source-view","cm-content"]),this.mergeView=new Rh({b:h,a:f,collapseUnchanged:{minSize:6,margin:4},diffConfig:{scanLimit:this.bIsEditable?1e3:1e4},parent:a}),this.refreshing=!1}}};m();var C5=require("obsidian");m();m();m();var iO="5";var aO,sO,oO;typeof window!="undefined"&&((oO=(sO=(aO=window.__svelte)!=null?aO:window.__svelte={}).v)!=null?oO:sO.v=new Set).add(iO);m();m();m();var tl="[",ya="[!",ds="]",Ci={};var qe=Symbol(),rn=Symbol("filename"),lO=Symbol("hmr"),cO="http://www.w3.org/1999/xhtml";m();m();m();m();var Oh=!0;m();var D=!1;m();var nn=Array.isArray,uO=Array.prototype.indexOf,Zc=Array.from,c1=Object.keys,qt=Object.defineProperty,_r=Object.getOwnPropertyDescriptor,u1=Object.getOwnPropertyDescriptors,f1=Object.prototype,fO=Array.prototype,rl=Object.getPrototypeOf,d1=Object.isExtensible;function h1(t){return typeof t=="function"}var ir=()=>{};function Jc(t){for(var e=0;e{t=n,e=i});return{promise:r,resolve:t,reject:e}}m();m();var xr=Symbol("$state"),Qc=Symbol("legacy props"),hO=Symbol(""),Ih=Symbol("proxy path"),nl=new class extends Error{constructor(){super(...arguments);vt(this,"name","StaleReactionError");vt(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};var eu=3,an=8;m();m();function pO(){if(D){let t=new Error("await_outside_boundary\nCannot await outside a `` with a `pending` snippet\nhttps://svelte.dev/e/await_outside_boundary");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/await_outside_boundary")}function tu(t){if(D){let e=new Error(`lifecycle_outside_component +\`${t}(...)\` can only be used during component initialisation +https://svelte.dev/e/lifecycle_outside_component`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function mO(){if(D){let t=new Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/async_derived_orphan")}function p1(){if(D){let t=new Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function gO(){if(D){let t=new Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/derived_references_self")}function vO(t){if(D){let e=new Error(`effect_in_teardown +\`${t}\` cannot be used inside an effect cleanup function +https://svelte.dev/e/effect_in_teardown`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_in_teardown")}function yO(){if(D){let t=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function wO(t){if(D){let e=new Error(`effect_orphan +\`${t}\` can only be used inside an effect (e.g. during component initialisation) +https://svelte.dev/e/effect_orphan`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_orphan")}function bO(){if(D){let t=new Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function _O(){if(D){let t=new Error("flush_sync_in_effect\nCannot use `flushSync` inside an effect\nhttps://svelte.dev/e/flush_sync_in_effect");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/flush_sync_in_effect")}function xO(){if(D){let t=new Error(`hydration_failed +Failed to hydrate the application +https://svelte.dev/e/hydration_failed`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/hydration_failed")}function SO(t){if(D){let e=new Error(`props_invalid_value +Cannot do \`bind:${t}={undefined}\` when \`${t}\` has a fallback value +https://svelte.dev/e/props_invalid_value`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/props_invalid_value")}function EO(t){if(D){let e=new Error(`rune_outside_svelte +The \`${t}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files +https://svelte.dev/e/rune_outside_svelte`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/rune_outside_svelte")}function AO(){if(D){let t=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function kO(){if(D){let t=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_prototype_fixed")}function TO(){if(D){let t=new Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_unsafe_mutation")}m();m();m();var hs="font-weight: bold",ps="font-weight: normal";function CO(t){D?console.warn(`%c[svelte] await_reactivity_loss +%cDetected reactivity loss when reading \`${t}\`. This happens when state is read in an async function after an earlier \`await\` +https://svelte.dev/e/await_reactivity_loss`,hs,ps):console.warn("https://svelte.dev/e/await_reactivity_loss")}function PO(t,e){D?console.warn(`%c[svelte] await_waterfall +%cAn async derived, \`${t}\` (${e}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app +https://svelte.dev/e/await_waterfall`,hs,ps):console.warn("https://svelte.dev/e/await_waterfall")}function RO(t,e,r){D?console.warn(`%c[svelte] hydration_attribute_changed +%cThe \`${t}\` attribute on \`${e}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value +https://svelte.dev/e/hydration_attribute_changed`,hs,ps):console.warn("https://svelte.dev/e/hydration_attribute_changed")}function ms(t){D?console.warn(`%c[svelte] hydration_mismatch +%c${t?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${t}`:"Hydration failed because the initial UI does not match what was rendered on the server"} +https://svelte.dev/e/hydration_mismatch`,hs,ps):console.warn("https://svelte.dev/e/hydration_mismatch")}function MO(){D?console.warn(`%c[svelte] lifecycle_double_unmount +%cTried to unmount a component that was not mounted +https://svelte.dev/e/lifecycle_double_unmount`,hs,ps):console.warn("https://svelte.dev/e/lifecycle_double_unmount")}function Fh(t){D?console.warn(`%c[svelte] state_proxy_equality_mismatch +%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${t}\` will produce unexpected results +https://svelte.dev/e/state_proxy_equality_mismatch`,hs,ps):console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function OO(t){D?console.warn(`%c[svelte] transition_slide_display +%cThe \`slide\` transition does not work correctly for elements with \`display: ${t}\` +https://svelte.dev/e/transition_slide_display`,hs,ps):console.warn("https://svelte.dev/e/transition_slide_display")}var se=!1;function Yt(t){se=t}var ge;function et(t){if(t===null)throw ms(),Ci;return ge=t}function Xt(){return et(jt(ge))}function H(t){if(se){if(jt(ge)!==null)throw ms(),Ci;ge=t}}function il(t=1){if(se){for(var e=t,r=ge;e--;)r=jt(r);ge=r}}function gs(){for(var t=0,e=ge;;){if(e.nodeType===an){var r=e.data;if(r===ds){if(t===0)return e;t-=1}else(r===tl||r===ya)&&(t+=1)}var n=jt(e);e.remove(),e=n}}function $h(t){if(!t||t.nodeType!==an)throw ms(),Ci;return t.data}m();m();m();m();function Dh(t){return t===this.v}function Lh(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function jh(t){return!Lh(t,this.v)}m();var _n=!1,Pi=!1,Qn=!1;m();m();m();var ru=null;function ei(t){let e=Error(),r=e.stack;if(!r)return null;let n=r.split(` +`),i=[` +`];for(let a=0;a"}`,a=e.ctx;a!==null;)i+=` +${n}in ${(o=a.function)==null?void 0:o[rn].split("/").pop()}`,a=a.p;return{message:t.message+` +${i} +`,stack:(l=t.stack)==null?void 0:l.split(` +`).filter(c=>!c.includes("svelte/src/internal")).join(` +`)}}}function $O(t){let e=v1.get(t);e&&(qt(t,"message",{value:e.message}),qt(t,"stack",{value:e.stack}))}m();var au=[],w1=[];function DO(){var t=au;au=[],Jc(t)}function uG(){var t=w1;w1=[],Jc(t)}function Lr(t){au.length===0&&queueMicrotask(DO),au.push(t)}function LO(){au.length>0&&DO(),w1.length>0&&uG()}m();var ane=589952;function Uh(){for(var t=ee.b;t!==null&&!t.has_pending_snippet();)t=t.parent;return t===null&&pO(),t}m();m();var Ii=null;function S1(t){Ii=t}var ou=new Set;function vs(t){var e=2050,r=oe!==null&&oe.f&2?oe:null;ee===null||r!==null&&r.f&256?e|=256:ee.f|=524288;let n={ctx:ye,deps:null,effects:null,equals:Dh,f:e,fn:t,reactions:null,rv:0,v:qe,wv:0,parent:r!=null?r:ee,ac:null};return D&&Qn&&(n.created=ei("CreatedAt")),n}function E1(t,e){let r=ee;r===null&&mO();var n=r.b,i=void 0,a=jr(qe),s=null,o=!oe;return jO(()=>{var h;D&&(Ii=ee);try{var l=t()}catch(p){l=Promise.reject(p)}D&&(Ii=null);var c=()=>l;i=(h=s==null?void 0:s.then(c,c))!=null?h:Promise.resolve(l),s=i;var u=xe,f=n.pending;o&&(n.update_pending_count(1),f||u.increment());let d=(p,g=void 0)=>{s=null,Ii=null,f||u.activate(),g?g!==nl&&(a.f|=8388608,ri(a,g)):(a.f&8388608&&(a.f^=8388608),ri(a,p),D&&e!==void 0&&(ou.add(a),setTimeout(()=>{ou.has(a)&&(PO(a.label,e),ou.delete(a))}))),o&&(n.update_pending_count(-1),f||u.decrement()),Vh()};if(i.then(d,p=>d(null,p||"unknown")),u)return()=>{queueMicrotask(()=>u.neuter())}}),D&&(a.f|=4194304),new Promise(l=>{function c(u){function f(){u===i?l(a):c(i)}u.then(f,f)}c(i)})}function Ct(t){let e=vs(t);return qh(e),e}function ys(t){let e=vs(t);return e.equals=jh,e}function Gh(t){var e=t.effects;if(e!==null){t.effects=null;for(var r=0;rE1(l))).then(l=>{i==null||i.activate(),s();try{r([...t.map(n),...l])}catch(c){a.f&16384||al(c,a)}i==null||i.deactivate(),Vh()}).catch(l=>{o.error(l)})}function dG(){var t=ee,e=oe,r=ye;return function(){Nt(t),kt(e),ba(r),D&&S1(null)}}function Vh(){Nt(null),kt(null),ba(null),D&&S1(null)}var uu=new Set,xe=null,fu=null,_a=null,b1=new Set,Kh=[];function BO(){let t=Kh.shift();Kh.length>0&&queueMicrotask(BO),t()}var _s=[],Qh=null,k1=!1,Yh=!1,ol,ll,xa,du,hu,bs,cl,Sa,Ea,ul,pu,mu,An,HO,Xh,T1,Zh=class Zh{constructor(){yt(this,An);vt(this,"current",new Map);yt(this,ol,new Map);yt(this,ll,new Set);yt(this,xa,0);yt(this,du,null);yt(this,hu,!1);yt(this,bs,[]);yt(this,cl,[]);yt(this,Sa,[]);yt(this,Ea,[]);yt(this,ul,[]);yt(this,pu,[]);yt(this,mu,[]);vt(this,"skipped_effects",new Set)}process(e){var a;_s=[],fu=null;var r=null;if(uu.size>1){r=new Map,_a=new Map;for(let[s,o]of this.current)r.set(s,{v:s.v,wv:s.wv}),s.v=o;for(let s of uu)if(s!==this)for(let[o,l]of ue(s,ol))r.has(o)||(r.set(o,{v:o.v,wv:o.wv}),o.v=l)}for(let s of e)di(this,An,HO).call(this,s);if(ue(this,bs).length===0&&ue(this,xa)===0){di(this,An,T1).call(this);var n=ue(this,Sa),i=ue(this,Ea);It(this,Sa,[]),It(this,Ea,[]),It(this,ul,[]),fu=xe,xe=null,NO(n),NO(i),xe===null?xe=this:uu.delete(this),(a=ue(this,du))==null||a.resolve()}else di(this,An,Xh).call(this,ue(this,Sa)),di(this,An,Xh).call(this,ue(this,Ea)),di(this,An,Xh).call(this,ue(this,ul));if(r){for(let[s,{v:o,wv:l}]of r)s.wv<=l&&(s.v=o);_a=null}for(let s of ue(this,bs))$i(s);for(let s of ue(this,cl))$i(s);It(this,bs,[]),It(this,cl,[])}capture(e,r){ue(this,ol).has(e)||ue(this,ol).set(e,r),this.current.set(e,e.v)}activate(){xe=this}deactivate(){xe=null,fu=null;for(let e of b1)if(b1.delete(e),e(),xe!==null)break}neuter(){It(this,hu,!0)}flush(){_s.length>0?C1():di(this,An,T1).call(this),xe===this&&(ue(this,xa)===0&&uu.delete(this),this.deactivate())}increment(){It(this,xa,ue(this,xa)+1)}decrement(){if(It(this,xa,ue(this,xa)-1),ue(this,xa)===0){for(let e of ue(this,pu))mt(e,2048),ii(e);for(let e of ue(this,mu))mt(e,4096),ii(e);It(this,Sa,[]),It(this,Ea,[]),this.flush()}else this.deactivate()}add_callback(e){ue(this,ll).add(e)}settled(){var e;return((e=ue(this,du))!=null?e:It(this,du,dO())).promise}static ensure(){if(xe===null){let e=xe=new Zh;uu.add(xe),Yh||Zh.enqueue(()=>{xe===e&&e.flush()})}return xe}static enqueue(e){Kh.length===0&&queueMicrotask(BO),Kh.unshift(e)}};ol=new WeakMap,ll=new WeakMap,xa=new WeakMap,du=new WeakMap,hu=new WeakMap,bs=new WeakMap,cl=new WeakMap,Sa=new WeakMap,Ea=new WeakMap,ul=new WeakMap,pu=new WeakMap,mu=new WeakMap,An=new WeakSet,HO=function(e){var u;e.f^=1024;for(var r=e.first;r!==null;){var n=r.f,i=(n&96)!==0,a=i&&(n&1024)!==0,s=a||(n&8192)!==0||this.skipped_effects.has(r);if(!s&&r.fn!==null){if(i)r.f^=1024;else if(!(n&1024))if(n&4)ue(this,Ea).push(r);else if(_n&&n&8)ue(this,Sa).push(r);else if(n&4194304){var o=(u=r.b)!=null&&u.pending?ue(this,cl):ue(this,bs);o.push(r)}else Aa(r)&&(r.f&16&&ue(this,ul).push(r),$i(r));var l=r.first;if(l!==null){r=l;continue}}var c=r.parent;for(r=r.next;r===null&&c!==null;)r=c.next,c=c.parent}},Xh=function(e){for(let r of e)(r.f&2048?ue(this,pu):ue(this,mu)).push(r),mt(r,1024);e.length=0},T1=function(){if(!ue(this,hu))for(let e of ue(this,ll))e();ue(this,ll).clear()};var ti=Zh;function fl(t){_n&&ee!==null&&_O();var e=Yh;Yh=!0;try{var r;for(t&&(C1(),r=t());;){if(LO(),_s.length===0&&(xe==null||xe.flush(),_s.length===0))return Qh=null,r;C1()}}finally{Yh=e}}function C1(){var a;var t=xs;k1=!0;try{var e=0;for(P1(!0);_s.length>0;){var r=ti.ensure();if(e++>1e3){if(D){var n=new Map;for(let s of r.current.keys())for(let[o,l]of(a=s.updated)!=null?a:[]){var i=n.get(o);i||(i={error:l.error,count:0},n.set(o,i)),i.count+=l.count}for(let s of n.values())console.error(s.error)}hG()}r.process(_s),Di.clear()}}finally{k1=!1,P1(t),Qh=null}}function hG(){try{bO()}catch(t){D&&qt(t,"stack",{value:""}),al(t,Qh)}}function NO(t){var e=t.length;if(e!==0){for(var r=0;ri&&n.f&1048576)break}}for(;r0&&!O1&&I1()}return e}function I1(){O1=!1;let t=Array.from(ws);for(let e of t)e.f&1024&&mt(e,4096),Aa(e)&&$i(e);ws.clear()}function su(t){ie(t,t.v+1)}function GO(t,e){var r=t.reactions;if(r!==null)for(var n=on(),i=r.length,a=0;a{if(ka===s)return u();var f=oe,d=ka;kt(null),F1(s);var h=u();return kt(f),F1(d),h};n&&(r.set("length",Pe(t.length,a)),D&&(t=gG(t)));var l="";function c(u){l=u,sn(i,`${l} version`);for(let[f,d]of r)sn(d,Es(l,f))}return new Proxy(t,{defineProperty(u,f,d){(!("value"in d)||d.configurable===!1||d.enumerable===!1||d.writable===!1)&&AO();var h=r.get(f);return h===void 0?h=o(()=>{var p=Pe(d.value,a);return r.set(f,p),D&&typeof f=="string"&&sn(p,Es(l,f)),p}):ie(h,d.value,!0),!0},deleteProperty(u,f){var d=r.get(f);if(d===void 0){if(f in u){let h=o(()=>Pe(qe,a));r.set(f,h),su(i),D&&sn(h,Es(l,f))}}else ie(d,qe),su(i);return!0},get(u,f,d){var v;if(f===xr)return t;if(D&&f===Ih)return c;var h=r.get(f),p=f in u;if(h===void 0&&(!p||(v=_r(u,f))!=null&&v.writable)&&(h=o(()=>{var y=Ne(p?u[f]:qe),b=Pe(y,a);return D&&sn(b,Es(l,f)),b}),r.set(f,h)),h!==void 0){var g=R(h);return g===qe?void 0:g}return Reflect.get(u,f,d)},getOwnPropertyDescriptor(u,f){var d=Reflect.getOwnPropertyDescriptor(u,f);if(d&&"value"in d){var h=r.get(f);h&&(d.value=R(h))}else if(d===void 0){var p=r.get(f),g=p==null?void 0:p.v;if(p!==void 0&&g!==qe)return{enumerable:!0,configurable:!0,value:g,writable:!0}}return d},has(u,f){var g;if(f===xr)return!0;var d=r.get(f),h=d!==void 0&&d.v!==qe||Reflect.has(u,f);if(d!==void 0||ee!==null&&(!h||(g=_r(u,f))!=null&&g.writable)){d===void 0&&(d=o(()=>{var v=h?Ne(u[f]):qe,y=Pe(v,a);return D&&sn(y,Es(l,f)),y}),r.set(f,d));var p=R(d);if(p===qe)return!1}return h},set(u,f,d,h){var k;var p=r.get(f),g=f in u;if(n&&f==="length")for(var v=d;vPe(qe,a)),r.set(v+"",y),D&&sn(y,Es(l,v)))}if(p===void 0)(!g||(k=_r(u,f))!=null&&k.writable)&&(p=o(()=>Pe(void 0,a)),ie(p,Ne(d)),r.set(f,p),D&&sn(p,Es(l,f)));else{g=p.v!==qe;var b=o(()=>Ne(d));ie(p,b)}var E=Reflect.getOwnPropertyDescriptor(u,f);if(E!=null&&E.set&&E.set.call(h,d),!g){if(n&&typeof f=="string"){var S=r.get("length"),A=Number(f);Number.isInteger(A)&&A>=S.v&&ie(S,A+1)}su(i)}return!0},ownKeys(u){R(i);var f=Reflect.ownKeys(u).filter(p=>{var g=r.get(p);return g===void 0||g.v!==qe});for(var[d,h]of r)h.v!==qe&&!(d in u)&&f.push(d);return f},setPrototypeOf(){kO()}})}function Es(t,e){var r;return typeof e=="symbol"?`${t}[Symbol(${(r=e.description)!=null?r:""})]`:pG.test(e)?`${t}.${e}`:/^\d+$/.test(e)?`${t}[${e}]`:`${t}['${e}']`}function ep(t){try{if(t!==null&&typeof t=="object"&&xr in t)return t[xr]}catch(e){}return t}var mG=new Set(["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"]);function gG(t){return new Proxy(t,{get(e,r,n){var i=Reflect.get(e,r,n);return mG.has(r)?function(...a){UO();var s=i.apply(this,a);return I1(),s}:i}})}function VO(){let t=Array.prototype,e=Array.__svelte_cleanup;e&&e();let{indexOf:r,lastIndexOf:n,includes:i}=t;t.indexOf=function(a,s){let o=r.call(this,a,s);if(o===-1){for(let l=s!=null?s:0;l{t.indexOf=r,t.lastIndexOf=n,t.includes=i}}var $1,qO,iu,WO,YO;function tp(){if($1===void 0){$1=window,qO=document,iu=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,r=Text.prototype;WO=_r(e,"firstChild").get,YO=_r(e,"nextSibling").get,d1(t)&&(t.__click=void 0,t.__className=void 0,t.__attributes=null,t.__style=void 0,t.__e=void 0),d1(r)&&(r.__t=void 0),D&&(t.__svelte_meta=null,VO())}}function Bt(t=""){return document.createTextNode(t)}function Ht(t){return WO.call(t)}function jt(t){return YO.call(t)}function G(t,e){if(!se)return Ht(t);var r=Ht(ge);if(r===null)r=ge.appendChild(Bt());else if(e&&r.nodeType!==eu){var n=Bt();return r==null||r.before(n),et(n),n}return et(r),r}function kr(t,e){var i,a;if(!se){var r=Ht(t);return r instanceof Comment&&r.data===""?jt(r):r}if(e&&((i=ge)==null?void 0:i.nodeType)!==eu){var n=Bt();return(a=ge)==null||a.before(n),et(n),n}return ge}function te(t,e=1,r=!1){let n=se?ge:t;for(var i;e--;)i=n,n=jt(n);if(!se)return n;if(r&&(n==null?void 0:n.nodeType)!==eu){var a=Bt();return n===null?i==null||i.after(a):n.before(a),et(a),a}return et(n),n}function dl(t){t.textContent=""}function hl(){if(!_n)return!1;var t=ee.f;return(t&32768)!==0}function KO(t){ee===null&&oe===null&&wO(t),oe!==null&&oe.f&256&&ee===null&&yO(),Sn&&vO(t)}function vG(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function si(t,e,r,n=!0){var l;var i=ee;if(D)for(;i!==null&&i.f&131072;)i=i.parent;i!==null&&i.f&8192&&(t|=8192);var a={ctx:ye,deps:null,nodes_start:null,nodes_end:null,f:t|2048,first:null,fn:e,last:null,next:null,parent:i,b:i&&i.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(D&&(a.component_function=xn),r)try{$i(a),a.f|=32768}catch(c){throw At(a),c}else e!==null&&ii(a);var s=r&&a.deps===null&&a.first===null&&a.nodes_start===null&&a.teardown===null&&(a.f&524288)===0;if(!s&&n&&(i!==null&&vG(a,i),oe!==null&&oe.f&2&&!(t&64))){var o=oe;((l=o.effects)!=null?l:o.effects=[]).push(a)}return a}function Hr(t){let e=si(8,null,!1);return mt(e,1024),e.teardown=t,e}function Zt(t){var i;KO("$effect"),D&&qt(t,"name",{value:"$effect"});var e=ee.f,r=!oe&&(e&32)!==0&&(e&32768)===0;if(r){var n=ye;((i=n.e)!=null?i:n.e=[]).push(t)}else return g1(t)}function g1(t){return si(1048580,t,!1)}function L1(t){ti.ensure();let e=si(64,t,!0);return()=>{At(e)}}function ZO(t){ti.ensure();let e=si(64,t,!0);return(r={})=>new Promise(n=>{r.outro?ni(e,()=>{At(e),n(void 0)}):(At(e),n(void 0))})}function Tr(t){return si(4,t,!1)}function jO(t){return si(4718592,t,!0)}function Kt(t,e=0){return si(8|e,t,!0)}function Fe(t,e=[],r=[]){Wh(e,r,n=>{si(8,()=>t(...n.map(R)),!0)})}function Sr(t,e=0){var r=si(16|e,t,!0);return D&&(r.dev_stack=Mi),r}function Et(t,e=!0){return si(32,t,!0,e)}function j1(t){var e=t.teardown;if(e!==null){let r=Sn,n=oe;D1(!0),kt(null);try{e.call(null)}finally{D1(r),kt(n)}}}function N1(t,e=!1){var i;var r=t.first;for(t.first=t.last=null;r!==null;){(i=r.ac)==null||i.abort(nl);var n=r.next;r.f&64?r.parent=null:At(r,e),r=n}}function JO(t){for(var e=t.first;e!==null;){var r=e.next;e.f&32||At(e),e=r}}function At(t,e=!0){var r=!1;(e||t.f&262144)&&t.nodes_start!==null&&t.nodes_end!==null&&(QO(t.nodes_start,t.nodes_end),r=!0),N1(t,e&&!r),yu(t,0),mt(t,16384);var n=t.transitions;if(n!==null)for(let a of n)a.stop();j1(t);var i=t.parent;i!==null&&i.first!==null&&M1(t),D&&(t.component_function=null),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes_start=t.nodes_end=t.ac=null}function QO(t,e){for(;t!==null;){var r=t===e?null:jt(t);t.remove(),t=r}}function M1(t){var e=t.parent,r=t.prev,n=t.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=r))}function ni(t,e){var r=[];rp(t,r,!0),B1(r,()=>{At(t),e&&e()})}function B1(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function rp(t,e,r){if(!(t.f&8192)){if(t.f^=8192,t.transitions!==null)for(let s of t.transitions)(s.is_global||r)&&e.push(s);for(var n=t.first;n!==null;){var i=n.next,a=(n.f&65536)!==0||(n.f&32)!==0;rp(n,e,a?r:!1),n=i}}}function As(t){e5(t,!0)}function e5(t,e){if(t.f&8192){t.f^=8192,t.f&1024||(mt(t,2048),ii(t));for(var r=t.first;r!==null;){var n=r.next,i=(r.f&65536)!==0||(r.f&32)!==0;e5(r,i?e:!1),r=n}if(t.transitions!==null)for(let a of t.transitions)(a.is_global||e)&&a.in()}}m();var t5=null;var xs=!1;function P1(t){xs=t}var Sn=!1;function D1(t){Sn=t}var oe=null,Er=!1;function kt(t){oe=t}var ee=null;function Nt(t){ee=t}var Ar=null;function qh(t){oe!==null&&(!_n||oe.f&2)&&(Ar===null?Ar=[t]:Ar.push(t))}var or=null,Ur=0,Br=null;function zO(t){Br=t}var r5=1,wu=0,ka=wu;function F1(t){ka=t}var Fi=!1;function cu(){return++r5}function Aa(t){var f,d;var e=t.f;if(e&2048)return!0;if(e&4096){var r=t.deps,n=(e&256)!==0;if(r!==null){var i,a,s=(e&512)!==0,o=n&&ee!==null&&!Fi,l=r.length;if((s||o)&&(ee===null||!(ee.f&16384))){var c=t,u=c.parent;for(i=0;it.wv)return!0}(!n||ee!==null&&!Fi)&&mt(t,1024)}return!1}function n5(t,e,r=!0){var n=t.reactions;if(n!==null&&!(!_n&&(Ar!=null&&Ar.includes(t))))for(var i=0;i0)for(d.length=Ur+or.length,h=0;h{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(let r of t.target.elements)(e=r.__on_r)==null||e.call(r)})},{capture:!0}))}function ks(t){var e=oe,r=ee;kt(null),Nt(null);try{return t()}finally{kt(e),Nt(r)}}function G1(t,e,r,n=r){t.addEventListener(e,()=>ks(r));let i=t.__on_r;i?t.__on_r=()=>{i(),n(!0)}:t.__on_r=()=>n(!0),U1()}var z1=new Set,ap=new Set;function s5(t,e,r,n={}){function i(a){if(n.capture||pl.call(e,a),!a.cancelBubble)return ks(()=>r==null?void 0:r.call(this,a))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Lr(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function Gr(t,e,r,n,i){var a={capture:n,passive:i},s=s5(t,e,r,a);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&Hr(()=>{e.removeEventListener(t,s,a)})}function gt(t){for(var e=0;e{throw E});throw d}}finally{t.__root=e,delete t.currentTarget,kt(u),Nt(f)}}}m();var bG;function o5(){bG=void 0}m();m();function sp(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("",""),e.content}function oi(t,e){var r=ee;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function fe(t,e){var r=(e&1)!==0,n=(e&2)!==0,i,a=!t.startsWith("");return()=>{if(se)return oi(ge,null),ge;i===void 0&&(i=sp(a?t:""+t),r||(i=Ht(i)));var s=n||iu?document.importNode(i,!0):i.cloneNode(!0);if(r){var o=Ht(s),l=s.lastChild;oi(o,l)}else oi(s,s);return s}}function Li(){if(se)return oi(ge,null),ge;var t=document.createDocumentFragment(),e=document.createComment(""),r=Bt();return t.append(e,r),oi(e,r),t}function ae(t,e){if(se){ee.nodes_end=ge,Xt();return}t!==null&&t.before(e)}m();var EG=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory","defer","disablepictureinpicture","disableremoteplayback"];var Yae=[...EG,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject","noValidate","allowFullscreen","disablePictureInPicture","disableRemotePlayback"];var AG=["touchstart","touchmove"];function c5(t){return AG.includes(t)}var kG=["$state","$state.raw","$derived","$derived.by"],Xae=[...kG,"$state.snapshot","$props","$props.id","$bindable","$effect","$effect.pre","$effect.tracking","$effect.root","$effect.pending","$inspect","$inspect().with","$inspect.trace","$host"];var op=!0;function Be(t,e){var n;var r=e==null?"":typeof e=="object"?e+"":e;r!==((n=t.__t)!=null?n:t.__t=t.nodeValue)&&(t.__t=r,t.nodeValue=r+"")}function Ta(t,e){return u5(t,e)}function q1(t,e){var s;tp(),e.intro=(s=e.intro)!=null?s:!1;let r=e.target,n=se,i=ge;try{for(var a=Ht(r);a&&(a.nodeType!==an||a.data!==tl);)a=jt(a);if(!a)throw Ci;Yt(!0),et(a),Xt();let o=u5(t,{...e,anchor:a});if(ge===null||ge.nodeType!==an||ge.data!==ds)throw ms(),Ci;return Yt(!1),o}catch(o){if(o===Ci)return e.recover===!1&&xO(),tp(),dl(r),Yt(!1),Ta(t,e);throw o}finally{Yt(n),et(i),o5()}}var ml=new Map;function u5(t,{target:e,anchor:r,props:n={},events:i,context:a,intro:s=!0}){tp();var o=new Set,l=f=>{for(var d=0;d{var f=r!=null?r:e.appendChild(Bt());return Et(()=>{if(a){tt({});var d=ye;d.c=a}i&&(n.$$events=i),se&&oi(f,null),op=s,c=t(f,n)||{},op=!0,se&&(ee.nodes_end=ge),a&&rt()}),()=>{var p;for(var d of o){e.removeEventListener(d,pl);var h=ml.get(d);--h===0?(document.removeEventListener(d,pl),ml.delete(d)):ml.set(d,h)}ap.delete(l),f!==r&&((p=f.parentNode)==null||p.removeChild(f))}});return V1.set(c,u),c}var V1=new WeakMap;function ji(t,e){let r=V1.get(t);return r?(V1.delete(t),r(e)):(D&&MO(),Promise.resolve())}m();m();if(D){let t=function(e){if(!(e in globalThis)){let r;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(r!==void 0)return r;EO(e)},set:n=>{r=n}})}};t("$state"),t("$effect"),t("$derived"),t("$inspect"),t("$props"),t("$bindable")}function W1(t){ye===null&&tu("onMount"),Pi&&ye.l!==null?RG(ye).m.push(t):Zt(()=>{let e=Ue(t);if(typeof e=="function")return e})}function d5(t){ye===null&&tu("onDestroy"),W1(()=>()=>Ue(t))}function RG(t){var r;var e=t.l;return(r=e.u)!=null?r:e.u={a:[],b:[],m:[]}}m();m();var p5=new Map;function m5(t,e){var r=p5.get(t);r||(r=new Set,p5.set(t,r)),r.add(e)}m();m();m();m();m();m();m();m();m();function _e(t,e,r=!1){se&&Xt();var n=t,i=null,a=null,s=qe,o=r?65536:0,l=!1;let c=(h,p=!0)=>{l=!0,d(p,h)};var u=null;function f(){u!==null&&(u.lastChild.remove(),n.before(u),u=null);var h=s?i:a,p=s?a:i;h&&As(h),p&&ni(p,()=>{s?a=null:i=null})}let d=(h,p)=>{if(s===(s=h))return;let g=!1;if(se){let A=$h(n)===ya;!!s===A&&(n=gs(),et(n),Yt(!1),g=!0)}var v=hl(),y=n;if(v&&(u=document.createDocumentFragment(),u.append(y=Bt())),s?i!=null||(i=p&&Et(()=>p(y))):a!=null||(a=p&&Et(()=>p(y))),v){var b=xe,E=s?i:a,S=s?a:i;E&&b.skipped_effects.delete(E),S&&b.skipped_effects.add(S),b.add_callback(f)}else f();g&&Yt(!0)};Sr(()=>{l=!1,e(c),l||d(null,null)},o),se&&(n=ge)}m();m();m();var bu=null;function zr(t,e){return e}function $G(t,e,r){for(var n=t.items,i=[],a=e.length,s=0;s0&&i.length===0&&r!==null;if(o){var l=r.parentNode;dl(l),l.append(r),n.clear(),li(t,e[0].prev,e[a-1].next)}B1(i,()=>{for(var c=0;c{var y=r();return nn(y)?y:y==null?[]:Zc(y)}),p,g;function v(){DG(g,p,o,d,s,i,e,n,r),a!==null&&(p.length===0?u?As(u):u=Et(()=>a(s)):u!==null&&ni(u,()=>{u=null}))}Sr(()=>{var I;g!=null||(g=ee),p=R(h);var y=p.length;if(f&&y===0)return;f=y===0;let b=!1;if(se){var E=$h(s)===ya;E!==(y===0)&&(s=gs(),et(s),Yt(!1),b=!0)}if(se){for(var S=null,A,k=0;k0&&et(gs())}if(se)y===0&&a&&(u=Et(()=>a(s)));else if(hl()){var _=new Set,T=xe;for(k=0;k0){var le=s&4&&f===0?i:null;if(c){for(w=0;w{var B;if(y!==void 0)for(k of y)(B=k.a)==null||B.apply()}),t.first=r.first&&r.first.e,t.last=v&&v.e;for(var ce of n.values())At(ce.e);n.clear()}function v5(t,e,r,n){n&1&&ri(t.v,e),n&2?ri(t.i,r):t.i=r}function X1(t,e,r,n,i,a,s,o,l,c,u){var f=bu,d=(l&1)!==0,h=(l&16)===0,p=d?h?Ss(i,!1,!1):jr(i):i,g=l&2?jr(s):s;D&&d&&(p.trace=()=>{var b=typeof g=="number"?s:g.v;c()[b]});var v={i:g,v:p,k:a,a:null,e:null,prev:r,next:n};bu=v;try{if(t===null){var y=document.createDocumentFragment();y.append(t=Bt())}return v.e=Et(()=>o(t,p,g,c),se),v.e.prev=r&&r.e,v.e.next=n&&n.e,r===null?u||(e.first=v):(r.next=v,r.e.next=v.e),n!==null&&(n.prev=v,n.e.prev=v.e),v}finally{bu=f}}function Y1(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,a=t.e.nodes_start;a!==null&&a!==n;){var s=jt(a);i.before(a),a=s}}function li(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}m();m();m();m();m();function Tn(t,e){Tr(()=>{var i;var r=t.getRootNode(),n=r.host?r:(i=r.head)!=null?i:r.ownerDocument.head;if(!n.querySelector("#"+e.hash)){let a=document.createElement("style");a.id=e.hash,a.textContent=e.code,n.appendChild(a),D&&m5(e.hash,a)}})}m();m();m();m();m();m();var w5=[...` +\r\f\xA0\v\uFEFF`];function b5(t,e,r){var n=t==null?"":""+t;if(e&&(n=n?n+" "+e:e),r){for(var i in r)if(r[i])n=n?n+" "+i:i;else if(n.length)for(var a=i.length,s=0;(s=n.indexOf(i,s))>=0;){var o=s+a;(s===0||w5.includes(n[s-1]))&&(o===n.length||w5.includes(n[o]))?n=(s===0?"":n.substring(0,s))+n.substring(o+1):s=o}}return n===""?null:n}m();function ot(t,e,r,n,i,a){var s=t.__className;if(se||s!==r||s===void 0){var o=b5(r,n,a);(!se||o!==t.getAttribute("class"))&&(o==null?t.removeAttribute("class"):e?t.className=o:t.setAttribute("class",o)),t.__className=r}else if(a&&i!==a)for(var l in a){var c=!!a[l];(i==null||c!==!!i[l])&&t.classList.toggle(l,c)}return a}m();m();var zG=Symbol("class"),VG=Symbol("style"),qG=Symbol("is custom element"),WG=Symbol("is html");function ve(t,e,r,n){var i=YG(t);if(se&&(i[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName==="LINK")){n||KG(t,e,r!=null?r:"");return}i[e]!==(i[e]=r)&&(e==="loading"&&(t[hO]=r),r==null?t.removeAttribute(e):typeof r!="string"&&XG(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function YG(t){var e;return(e=t.__attributes)!=null?e:t.__attributes={[qG]:t.nodeName.includes("-"),[WG]:t.namespaceURI===cO}}var _5=new Map;function XG(t){var e=_5.get(t.nodeName);if(e)return e;_5.set(t.nodeName,e=[]);for(var r,n=t,i=Element.prototype;i!==n;){r=u1(n);for(var a in r)r[a].set&&e.push(a);n=rl(n)}return e}function KG(t,e,r){var n;D&&(e==="srcset"&&ZG(t,r)||K1((n=t.getAttribute(e))!=null?n:"",r)||RO(e,t.outerHTML.replace(t.innerHTML,t.innerHTML&&"..."),String(r)))}function K1(t,e){return t===e?!0:new URL(t,document.baseURI).href===new URL(e,document.baseURI).href}function x5(t){return t.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function ZG(t,e){var r=x5(t.srcset),n=x5(e);return n.length===r.length&&n.every(([i,a],s)=>a===r[s][1]&&(K1(r[s][0],i)||K1(i,r[s][0])))}m();m();m();var JG=Oh?()=>performance.now():()=>Date.now(),Cn={tick:t=>(Oh?requestAnimationFrame:ir)(t),now:()=>JG(),tasks:new Set};function S5(){let t=Cn.now();Cn.tasks.forEach(e=>{e.c(t)||(Cn.tasks.delete(e),e.f())}),Cn.tasks.size!==0&&Cn.tick(S5)}function E5(t){let e;return Cn.tasks.size===0&&Cn.tick(S5),{promise:new Promise(r=>{Cn.tasks.add(e={c:t,f:r})}),abort(){Cn.tasks.delete(e)}}}function up(t,e){ks(()=>{t.dispatchEvent(new CustomEvent(e))})}function rz(t){if(t==="float")return"cssFloat";if(t==="offset")return"cssOffset";if(t.startsWith("--"))return t;let e=t.split("-");return e.length===1?e[0]:e[0]+e.slice(1).map(r=>r[0].toUpperCase()+r.slice(1)).join("")}function A5(t){let e={},r=t.split(";");for(let n of r){let[i,a]=n.split(":");if(!i||a===void 0)break;let s=rz(i.trim());e[s]=a.trim()}return e}var nz=t=>t;function Pn(t,e,r,n){var E;var i=(t&1)!==0,a=(t&2)!==0,s=i&&a,o=(t&4)!==0,l=s?"both":i?"in":"out",c,u=e.inert,f=e.style.overflow,d,h;function p(){return ks(()=>{var S;return c!=null?c:c=r()(e,(S=n==null?void 0:n())!=null?S:{},{direction:l})})}var g={is_global:o,in(){var S;if(e.inert=u,!i){h==null||h.abort(),(S=h==null?void 0:h.reset)==null||S.call(h);return}a||d==null||d.abort(),up(e,"introstart"),d=Z1(e,p(),h,1,()=>{up(e,"introend"),d==null||d.abort(),d=c=void 0,e.style.overflow=f})},out(S){if(!a){S==null||S(),c=void 0;return}e.inert=!0,up(e,"outrostart"),h=Z1(e,p(),d,0,()=>{up(e,"outroend"),S==null||S()})},stop:()=>{d==null||d.abort(),h==null||h.abort()}},v=ee;if(((E=v.transitions)!=null?E:v.transitions=[]).push(g),i&&op){var y=o;if(!y){for(var b=v.parent;b&&b.f&65536;)for(;(b=b.parent)&&!(b.f&16););y=!b||(b.f&32768)!==0}y&&Tr(()=>{Ue(()=>g.in())})}}function Z1(t,e,r,n,i){var a=n===1;if(h1(e)){var s,o=!1;return Lr(()=>{if(!o){var v=e({direction:a?"in":"out"});s=Z1(t,v,r,n,i)}}),{abort:()=>{o=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:ir,deactivate:ir,reset:ir,t:()=>n};let{delay:l=0,css:c,tick:u,easing:f=nz}=e;var d=[];if(a&&r===void 0&&(u&&u(0,1),c)){var h=A5(c(0,1));d.push(h,h)}var p=()=>1-n,g=t.animate(d,{duration:l,fill:"forwards"});return g.onfinish=()=>{var _;g.cancel();var v=(_=r==null?void 0:r.t())!=null?_:1-n;r==null||r.abort();var y=n-v,b=e.duration*Math.abs(y),E=[];if(b>0){var S=!1;if(c)for(var A=Math.ceil(b/16.666666666666668),k=0;k<=A;k+=1){var w=v+y*f(k/A),x=A5(c(w,1-w));E.push(x),S||(S=x.overflow==="hidden")}S&&(t.style.overflow="hidden"),p=()=>{var T=g.currentTime;return v+y*f(T/b)},u&&E5(()=>{if(g.playState!=="running")return!1;var T=p();return u(T,1-T),!0})}g=t.animate(E,{duration:b,fill:"forwards"}),g.onfinish=()=>{p=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{g&&(g.cancel(),g.effect=null,g.onfinish=ir)},deactivate:()=>{i=ir},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>p()}}m();m();function ey(t,e,r=e){var n=on(),i=new WeakSet;G1(t,"input",a=>{D&&t.type==="checkbox"&&p1();var s=a?t.defaultValue:t.value;if(s=J1(t)?Q1(s):s,r(s),xe!==null&&i.add(xe),n&&s!==(s=e())){var o=t.selectionStart,l=t.selectionEnd;t.value=s!=null?s:"",l!==null&&(t.selectionStart=o,t.selectionEnd=Math.min(l,t.value.length))}}),(se&&t.defaultValue!==t.value||Ue(e)==null&&t.value)&&(r(J1(t)?Q1(t.value):t.value),xe!==null&&i.add(xe)),Kt(()=>{var o;D&&t.type==="checkbox"&&p1();var a=e();if(t===document.activeElement){var s=(o=fu)!=null?o:xe;if(i.has(s))return}J1(t)&&a===Q1(t.value)||t.type==="date"&&!a&&!t.value||a!==t.value&&(t.value=a!=null?a:"")})}function J1(t){var e=t.type;return e==="number"||e==="range"}function Q1(t){return t===""?null:+t}m();m();m();m();m();function k5(t,e){return t===e||(t==null?void 0:t[xr])===e}function Ze(t={},e,r,n){return Tr(()=>{var i,a;return Kt(()=>{i=a,a=(n==null?void 0:n())||[],Ue(()=>{t!==r(...a)&&(e(t,...a),i&&k5(r(...i),t)&&e(null,...i))})}),()=>{Lr(()=>{a&&k5(r(...a),t)&&e(null,...a)})}}),t}m();m();m();m();m();m();m();m();m();var dp=!1,Wde=Symbol();function ry(t){var e=dp;try{return dp=!1,[t(),dp]}finally{dp=e}}function cn(t,e,r,n){var E,S;var i=!Pi||(r&2)!==0,a=(r&8)!==0,s=(r&16)!==0,o=n,l=!0,c=()=>(l&&(l=!1,o=s?Ue(n):n),o),u;if(a){var f=xr in t||Qc in t;u=(S=(E=_r(t,e))==null?void 0:E.set)!=null?S:f&&e in t?A=>t[e]=A:void 0}var d,h=!1;a?[d,h]=ry(()=>t[e]):d=t[e],d===void 0&&n!==void 0&&(d=c(),u&&(i&&SO(e),u(d)));var p;if(i?p=()=>{var A=t[e];return A===void 0?c():(l=!0,A)}:p=()=>{var A=t[e];return A!==void 0&&(o=void 0),A===void 0?o:A},i&&!(r&4))return p;if(u){var g=t.$$legacy;return function(A,k){return arguments.length>0?((!i||!k||g||h)&&u(k?p():A),A):p()}}var v=!1,y=(r&1?vs:ys)(()=>(v=!1,p()));D&&(y.label=e),a&&R(y);var b=ee;return function(A,k){if(arguments.length>0){let w=k?R(y):i&&a?Ne(A):A;return ie(y,w),v=!0,o!==void 0&&(o=w),A}return Sn&&v||b.f&16384?y.v:R(y)}}m();m();m();function T5(t){return new ny(t)}var Ni,un,ny=class{constructor(e){yt(this,Ni);yt(this,un);var a,s;var r=new Map,n=(o,l)=>{var c=Ss(l,!1,!1);return r.set(o,c),c};let i=new Proxy({...e.props||{},$$events:{}},{get(o,l){var c;return R((c=r.get(l))!=null?c:n(l,Reflect.get(o,l)))},has(o,l){var c;return l===Qc?!0:(R((c=r.get(l))!=null?c:n(l,Reflect.get(o,l))),Reflect.has(o,l))},set(o,l,c){var u;return ie((u=r.get(l))!=null?u:n(l,c),c),Reflect.set(o,l,c)}});It(this,un,(e.hydrate?q1:Ta)(e.component,{target:e.target,anchor:e.anchor,props:i,context:e.context,intro:(a=e.intro)!=null?a:!1,recover:e.recover})),!_n&&(!((s=e==null?void 0:e.props)!=null&&s.$$host)||e.sync===!1)&&fl(),It(this,Ni,i.$$events);for(let o of Object.keys(ue(this,un)))o==="$set"||o==="$destroy"||o==="$on"||qt(this,o,{get(){return ue(this,un)[o]},set(l){ue(this,un)[o]=l},enumerable:!0});ue(this,un).$set=o=>{Object.assign(i,o)},ue(this,un).$destroy=()=>{ji(ue(this,un))}}$set(e){ue(this,un).$set(e)}$on(e,r){ue(this,Ni)[e]=ue(this,Ni)[e]||[];let n=(...i)=>r.call(this,...i);return ue(this,Ni)[e].push(n),()=>{ue(this,Ni)[e]=ue(this,Ni)[e].filter(i=>i!==n)}}$destroy(){ue(this,un).$destroy()}};Ni=new WeakMap,un=new WeakMap;var vz;typeof HTMLElement=="function"&&(vz=class extends HTMLElement{constructor(e,r,n){super();vt(this,"$$ctor");vt(this,"$$s");vt(this,"$$c");vt(this,"$$cn",!1);vt(this,"$$d",{});vt(this,"$$r",!1);vt(this,"$$p_d",{});vt(this,"$$l",{});vt(this,"$$l_u",new Map);vt(this,"$$me");this.$$ctor=e,this.$$s=r,n&&this.attachShadow({mode:"open"})}addEventListener(e,r,n){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){let i=this.$$c.$on(e,r);this.$$l_u.set(r,i)}super.addEventListener(e,r,n)}removeEventListener(e,r,n){if(super.removeEventListener(e,r,n),this.$$c){let i=this.$$l_u.get(r);i&&(i(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(i){return a=>{let s=document.createElement("slot");i!=="default"&&(s.name=i),ae(a,s)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let r={},n=yz(this);for(let i of this.$$s)i in n&&(i==="default"&&!this.$$d.children?(this.$$d.children=e(i),r.default=!0):r[i]=e(i));for(let i of this.attributes){let a=this.$$g_p(i.name);a in this.$$d||(this.$$d[a]=iy(a,i.value,this.$$p_d,"toProp"))}for(let i in this.$$p_d)!(i in this.$$d)&&this[i]!==void 0&&(this.$$d[i]=this[i],delete this[i]);this.$$c=T5({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:r,$$host:this}}),this.$$me=L1(()=>{Kt(()=>{var i;this.$$r=!0;for(let a of c1(this.$$c)){if(!((i=this.$$p_d[a])!=null&&i.reflect))continue;this.$$d[a]=this.$$c[a];let s=iy(a,this.$$d[a],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[a].attribute||a):this.setAttribute(this.$$p_d[a].attribute||a,s)}this.$$r=!1})});for(let i in this.$$l)for(let a of this.$$l[i]){let s=this.$$c.$on(i,a);this.$$l_u.set(a,s)}this.$$l={}}}attributeChangedCallback(e,r,n){var i;this.$$r||(e=this.$$g_p(e),this.$$d[e]=iy(e,n,this.$$p_d,"toProp"),(i=this.$$c)==null||i.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return c1(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function iy(t,e,r,n){var a;let i=(a=r[t])==null?void 0:a.type;if(e=i==="Boolean"&&typeof e!="boolean"?e!=null:e,!n||!r[t])return e;if(n==="toAttribute")switch(i){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e==null?null:e;default:return e}else switch(i){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function yz(t){let e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}m();m();function Ts(t,e,r,n){function i(a){return a instanceof r?a:new r(function(s){s(a)})}return new(r||(r=Promise))(function(a,s){function o(u){try{c(n.next(u))}catch(f){s(f)}}function l(u){try{c(n.throw(u))}catch(f){s(f)}}function c(u){u.done?a(u.value):i(u.value).then(o,l)}c((n=n.apply(t,e||[])).next())})}var ly=require("obsidian");m();var sy=require("obsidian");m();function wz(t){let e=t-1;return e*e*e+1}var ay=!1;function ui(t,{delay:e=0,duration:r=400,easing:n=wz,axis:i="y"}={}){let a=getComputedStyle(t);D&&!ay&&/(contents|inline|table)/.test(a.display)&&(ay=!0,Promise.resolve().then(()=>ay=!1),OO(a.display));let s=+a.opacity,o=i==="y"?"height":"width",l=parseFloat(a[o]),c=i==="y"?["top","bottom"]:["left","right"],u=c.map(y=>`${y[0].toUpperCase()}${y.slice(1)}`),f=parseFloat(a[`padding${u[0]}`]),d=parseFloat(a[`padding${u[1]}`]),h=parseFloat(a[`margin${u[0]}`]),p=parseFloat(a[`margin${u[1]}`]),g=parseFloat(a[`border${u[0]}Width`]),v=parseFloat(a[`border${u[1]}Width`]);return{delay:e,duration:r,easing:n,css:y=>`overflow: hidden;opacity: ${Math.min(y*20,1)*s};${o}: ${y*l}px;padding-${c[0]}: ${y*f}px;padding-${c[1]}: ${y*d}px;margin-${c[0]}: ${y*h}px;margin-${c[1]}: ${y*p}px;border-${c[0]}-width: ${y*g}px;border-${c[1]}-width: ${y*v}px;min-${o}: 0`}}m();var hp=require("obsidian");var bz=fe('
'),_z=fe('
'),xz={hash:"svelte-1wbh8tp",code:"main.svelte-1wbh8tp .nav-file-title:where(.svelte-1wbh8tp) {align-items:center;}"};function _u(t,e){tt(e,!0),Tn(t,xz);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let y of r)y&&(0,hp.setIcon)(y,y.getAttr("data-icon"))});function i(y){y.stopPropagation(),Io(e.diff.path)?a(y):s(y)}function a(y){var b;y.stopPropagation();let E=e.view.app.vault.getAbstractFileByPath(e.diff.vaultPath);E instanceof hp.TFile&&((b=vn(e.view.app,y))===null||b===void 0||b.openFile(E).catch(S=>e.view.plugin.displayError(S)))}function s(y){var b;e.view.plugin.tools.openDiff({event:y,aFile:(b=e.diff.fromPath)!==null&&b!==void 0?b:e.diff.path,aRef:`${e.diff.hash}^`,bFile:e.diff.path,bRef:e.diff.hash})}var o=_z();o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=y=>{var b=bz();b.__click=a,Ze(b,E=>r[0]=E,()=>r==null?void 0:r[0]),Gr("auxclick",b,a),ae(y,b)};_e(h,y=>{Fo(e.diff.vaultPath,e.view.app)&&y(p)})}H(d);var g=te(d,2),v=G(g,!0);H(g),H(f),H(l),H(o),Fe(y=>{ve(l,"data-path",e.diff.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.diff.vaultPath),Be(u,y),ve(g,"data-type",e.diff.status),Be(v,e.diff.status)},[()=>Kn(e.diff.vaultPath)]),Gr("auxclick",o,y=>{y.stopPropagation(),y.button==2?Xn(e.view.app,y,e.diff.vaultPath,e.view.leaf,"git-history"):i(y)}),ae(t,o),rt()}gt(["click"]);m();var Sz=fe("
"),Ez=(t,e,r)=>e(t,R(r)),Az=fe(''),kz=fe('
'),Tz=fe("
"),Cz={hash:"svelte-1lnl15d",code:"main.svelte-1lnl15d .nav-folder-title-content:where(.svelte-1lnl15d) {display:flex;align-items:center;}"};function xu(t,e){tt(e,!0),Tn(t,Cz);let r=cn(e,"topLevel",3,!1),n=cn(e,"closed",15),i=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function a(l,c){l.stopPropagation(),n(n()[c.path]=!n()[c.path],!0)}var s=Tz();let o;Vr(s,21,()=>e.hierarchy.children,zr,(l,c)=>{var u=Li(),f=kr(u);{var d=p=>{var g=Sz(),v=G(g);_u(v,{get diff(){return R(c).data},get view(){return e.view}}),H(g),ae(p,g)},h=p=>{var g=kz();let v;var y=G(g);y.__click=[Ez,a,c];var b=te(G(y),2);let E;var S=te(b,2),A=G(S,!0);H(S),H(y);var k=te(y,2);{var w=x=>{var _=Az(),T=G(_);xu(T,{get hierarchy(){return R(c)},get plugin(){return e.plugin},get view(){return e.view},get closed(){return n()},set closed(C){n(C)}}),H(_),Pn(3,_,()=>ui,()=>({duration:150})),ae(x,_)};_e(k,x=>{n()[R(c).path]||x(w)})}H(g),Fe((x,_)=>{v=ot(g,1,"tree-item nav-folder",null,v,x),ve(y,"data-tooltip-position",R(i)),ve(y,"aria-label",R(c).vaultPath),E=ot(b,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,E,_),Be(A,R(c).title)},[()=>({"is-collapsed":n()[R(c).path]}),()=>({"is-collapsed":n()[R(c).path]})]),ae(p,g)};_e(f,p=>{R(c).data?p(d):p(h,!1)})}ae(l,u)}),H(s),Fe(l=>o=ot(s,1,"svelte-1lnl15d",null,o,l),[()=>({topLevel:r()})]),ae(t,s),rt()}gt(["click"]);var Pz=(t,e)=>ie(e,!R(e)),Rz=fe('
'),Mz=fe('
'),Oz=fe('
'),Iz=fe(''),Fz=fe('
'),$z={hash:"svelte-45h",code:""};function oy(t,e){tt(e,!0),Tn(t,$z);let r=Ct(()=>({title:"",path:"",vaultPath:"",children:e.plugin.gitManager.getTreeStructure(e.log.diff.files)})),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left"),i=Pe(!0),a=Pe(Ne({}));function s(x){let _=x.author.name;if(e.plugin.settings.authorInHistoryView=="full")return _;if(e.plugin.settings.authorInHistoryView=="initials")return _.split(" ").filter(C=>C.length>0).map(C=>C[0].toUpperCase()).join("")}var o=Fz(),l=G(o);let c;var u=G(l);u.__click=[Pz,i];var f=G(u);let d;var h=te(f,2),p=G(h);{var g=x=>{var _=Rz(),T=G(_,!0);H(_),Fe(C=>Be(T,C),[()=>e.log.refs.join(", ")]),ae(x,_)};_e(p,x=>{e.log.refs.length>0&&x(g)})}var v=te(p,2);{var y=x=>{var _=Mz(),T=G(_,!0);H(_),Fe(C=>Be(T,C),[()=>s(e.log)]),ae(x,_)};_e(v,x=>{var _;e.plugin.settings.authorInHistoryView!="hide"&&((_=e.log.author)!=null&&_.name)&&x(y)})}var b=te(v,2);{var E=x=>{var _=Oz(),T=G(_,!0);H(_),Fe(C=>Be(T,C),[()=>(0,sy.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)]),ae(x,_)};_e(b,x=>{e.plugin.settings.dateInHistoryView&&x(E)})}var S=te(b,2),A=G(S,!0);H(S),H(h),H(u);var k=te(u,2);{var w=x=>{var _=Iz(),T=G(_);{var C=L=>{xu(L,{get hierarchy(){return R(r)},get plugin(){return e.plugin},get view(){return e.view},topLevel:!0,get closed(){return R(a)},set closed($){ie(a,$,!0)}})},I=L=>{var $=Li(),J=kr($);Vr(J,17,()=>e.log.diff.files,zr,(de,le)=>{_u(de,{get view(){return e.view},get diff(){return R(le)}})}),ae(L,$)};_e(T,L=>{e.showTree?L(C):L(I,!1)})}H(_),Pn(3,_,()=>ui,()=>({duration:150})),ae(x,_)};_e(k,x=>{R(i)||x(w)})}H(l),H(o),Fe((x,_,T)=>{c=ot(l,1,"tree-item nav-folder",null,c,x),ve(u,"aria-label",_),ve(u,"data-tooltip-position",R(n)),d=ot(f,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,d,T),Be(A,e.log.message)},[()=>({"is-collapsed":R(i)}),()=>{var x;return`${e.log.refs.length>0?e.log.refs.join(", ")+` +`:""}${(x=e.log.author)==null?void 0:x.name} +${(0,sy.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)} +${e.log.message}`},()=>({"is-collapsed":R(i)})]),ae(t,o),rt()}gt(["click"]);function Dz(t,e){e().catch(console.error)}var Lz=(t,e,r,n)=>{ie(e,!R(e)),(0,ly.setIcon)(r[0],R(e)?"list":"folder"),n(n().settings.treeStructure=R(e),!0),n().saveSettings()},jz=fe(''),Nz=fe('
'),Bz={hash:"svelte-45h",code:""};function cy(t,e){tt(e,!0),Tn(t,Bz);let r=cn(e,"plugin",15),n=Pe(!1),i=Ne([]),a=Pe(void 0),s=Pe(Ne(r().settings.treeStructure)),o,l;Zt(()=>{l&&l.empty()}),o=e.view.app.workspace.on("obsidian-git:head-change",()=>void c().catch(console.error)),Zt(()=>{i.forEach(S=>(0,ly.setIcon)(S,S.getAttr("data-icon")))}),d5(()=>{e.view.app.workspace.offref(o)}),W1(()=>{let S=new IntersectionObserver(k=>{k[0].isIntersecting&&!R(n)&&u().catch(console.error)}),A=document.querySelector("#sentinel");return A&&S.observe(A),()=>{S.disconnect()}}),c().catch(console.error);function c(){return Ts(this,void 0,void 0,function*(){var S;if(!r().gitReady){ie(a,void 0);return}ie(n,!0);let A=r().gitManager instanceof Ce,k;((S=R(a)===null||R(a)===void 0?void 0:R(a).length)!==null&&S!==void 0?S:0)==0?k=A?50:10:k=R(a).length,ie(a,yield r().gitManager.log(void 0,!1,k),!0),ie(n,!1)})}function u(){return Ts(this,void 0,void 0,function*(){var S;if(!r().gitReady||R(a)===void 0)return;ie(n,!0);let k=r().gitManager instanceof Ce?50:10,w=yield r().gitManager.log(void 0,!1,k,(S=R(a).last())===null||S===void 0?void 0:S.hash);R(a).push(...w.slice(1)),ie(n,!1)})}var f=Nz(),d=G(f),h=G(d),p=G(h);p.__click=[Lz,s,i,r],Ze(p,S=>i[0]=S,()=>i==null?void 0:i[0]);var g=te(p,2);let v;g.__click=[Dz,c],Ze(g,S=>i[1]=S,()=>i==null?void 0:i[1]),H(h),H(d);var y=te(d,2),b=G(y);{var E=S=>{var A=jz();Vr(A,21,()=>R(a),zr,(k,w)=>{oy(k,{get view(){return e.view},get showTree(){return R(s)},get log(){return R(w)},get plugin(){return r()}})}),H(A),ae(S,A)};_e(b,S=>{R(a)&&S(E)})}il(4),H(y),H(f),Fe(S=>{ve(p,"data-icon",R(s)?"list":"folder"),v=ot(g,1,"clickable-icon nav-action-button",null,v,S)},[()=>({loading:R(n)})]),ae(t,f),rt()}gt(["click"]);var Su=class extends C5.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return Zr.type}getDisplayText(){return Zr.name}getIcon(){return Zr.icon}onClose(){return this._view&&ji(this._view),super.onClose()}reload(){this._view&&ji(this._view),this._view=Ta(cy,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var P5=require("obsidian"),pp=class extends P5.FuzzySuggestModal{constructor(r,n){super(r.app);this.branches=n;this.setPlaceholder("Select branch to checkout")}getItems(){return this.branches}getItemText(r){return r}onChooseItem(r,n){this.resolve(r)}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}};m();var $5=require("obsidian");m();var Ms=require("obsidian");m();var Au=require("obsidian");m();m();var Hz=Ot(R5()),Ca=require("obsidian");function Cs(t,e,r){let n=t.target;app.workspace.trigger("hover-link",{event:t,source:e.getViewType(),hoverParent:e,targetEl:n,linktext:r})}m();var M5=require("obsidian");var gl=class extends M5.Modal{constructor({app:r,path:n,filesToDeleteCount:i,filesToDiscardCount:a}){super(r);this.resolve=null;this.path=n,this.deleteCount=i,this.discardCount=a}openAndGetResult(){return this.open(),new Promise(r=>{this.resolve=r})}onOpen(){let r=this.deleteCount+this.discardCount,{contentEl:n,titleEl:i}=this,a="";this.path!=""&&(r>1?a=`files in "${this.path}"`:a=`"${this.path}"`),i.setText(`${this.discardCount==0?"Delete":"Discard"} ${a}`),this.deleteCount>0&&n.createEl("p").setText(`Are you sure you want to DELETE the ${Ic(this.deleteCount,"untracked file")}? They are deleted according to your Obsidian trash settting.`),this.discardCount>0&&n.createEl("p").setText(`Are you sure you want to discard ALL changes in ${Ic(this.discardCount,"tracked file")}?`);let s=n.createDiv({cls:"modal-button-container"});if(this.deleteCount>0){let l=s.createEl("button",{cls:"mod-warning",text:`${this.discardCount>0?"Discard":"Delete"} all ${Ic(r,"file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("delete"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("delete"),this.close()})}if(this.discardCount>0){let l=s.createEl("button",{cls:"mod-warning",text:`Discard all ${Ic(this.discardCount,"tracked file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("discard"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("discard"),this.close()})}let o=s.createEl("button",{text:"Cancel"});o.addEventListener("click",()=>(this.resolve&&this.resolve(!1),this.close())),o.addEventListener("keypress",()=>(this.resolve&&this.resolve(!1),this.close()))}onClose(){let{contentEl:r}=this;r.empty()}};function Uz(t,e){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}function Gz(t,e){t.stopPropagation(),e.manager.stage(e.change.path,!1).catch(r=>e.view.plugin.displayError(r)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function zz(t,e){t.stopPropagation();let r=e.change.workingDir=="U";new gl({app:e.view.app,filesToDeleteCount:r?1:0,filesToDiscardCount:r?0:1,path:e.change.vaultPath}).openAndGetResult().then(n=>Ts(this,void 0,void 0,function*(){if(n=="delete"){let i=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);i instanceof Au.TFile?yield e.view.app.fileManager.trashFile(i):yield e.view.app.vault.adapter.remove(e.change.vaultPath)}else n=="discard"&&(yield e.manager.discard(e.change.path).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")}));e.view.app.workspace.trigger("obsidian-git:refresh")}),n=>e.view.plugin.displayError(n))}var Vz=fe('
'),qz=fe('
');function ku(t,e){tt(e,!0);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let E of r)E&&(0,Au.setIcon)(E,E.getAttr("data-icon"))});function i(E){E.stopPropagation(),Io(e.change.path)?a(E):s(E)}function a(E){var S;E.stopPropagation();let A=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);A instanceof Au.TFile&&((S=vn(e.view.app,E))===null||S===void 0||S.openFile(A).catch(k=>e.view.plugin.displayError(k)))}function s(E){E.stopPropagation(),e.view.plugin.tools.openDiff({aFile:e.change.path,aRef:"",event:E})}var o=qz();o.__mouseover=[Uz,e],o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=E=>{var S=Vz();S.__click=a,Ze(S,A=>r[0]=A,()=>r==null?void 0:r[0]),Gr("auxclick",S,a),ae(E,S)};_e(h,E=>{Fo(e.change.vaultPath,e.view.app)&&E(p)})}var g=te(h,2);g.__click=[zz,e],Ze(g,E=>r[1]=E,()=>r==null?void 0:r[1]);var v=te(g,2);v.__click=[Gz,e],Ze(v,E=>r[2]=E,()=>r==null?void 0:r[2]),H(d);var y=te(d,2),b=G(y,!0);H(y),H(f),H(l),H(o),Fe(E=>{ve(l,"data-path",e.change.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.change.vaultPath),Be(u,E),ve(y,"data-type",e.change.workingDir),Be(b,e.change.workingDir)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",o,E=>{E.stopPropagation(),E.button==2?Xn(e.view.app,E,e.change.vaultPath,e.view.leaf,"git-source-control"):i(E)}),ae(t,o),rt()}gt(["mouseover","click"]);m();var O5=require("obsidian");function Wz(t,e){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}var Yz=fe('
');function Tu(t,e){tt(e,!0);let r=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function n(f){var d;f.stopPropagation();let h=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);h instanceof O5.TFile&&((d=vn(e.view.app,f))===null||d===void 0||d.openFile(h).catch(p=>e.view.plugin.displayError(p)))}var i=Yz();i.__mouseover=[Wz,e],i.__click=n;var a=G(i),s=G(a),o=G(s,!0);H(s);var l=te(s,2),c=G(l),u=G(c,!0);H(c),H(l),H(a),H(i),Fe(f=>{ve(a,"data-path",e.change.vaultPath),ve(a,"data-tooltip-position",R(r)),ve(a,"aria-label",e.change.vaultPath),Be(o,f),ve(c,"data-type",e.change.workingDir),Be(u,e.change.workingDir)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",i,f=>{f.stopPropagation(),f.button==2?Xn(e.view.app,f,e.change.vaultPath,e.view.leaf,"git-source-control"):n(f)}),ae(t,i),rt()}gt(["mouseover","click"]);m();var mp=require("obsidian");function Xz(t,e){e.view.app.vault.getFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}function Kz(t,e){t.stopPropagation(),e.manager.unstage(e.change.path,!1).catch(r=>e.view.plugin.displayError(r)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}var Zz=fe('
'),Jz=fe('
');function Cu(t,e){tt(e,!0);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let b of r)b&&(0,mp.setIcon)(b,b.getAttr("data-icon"))});function i(b){b.stopPropagation(),Io(e.change.path)?a(b):s(b)}function a(b){var E;b.stopPropagation();let S=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);S instanceof mp.TFile&&((E=vn(e.view.app,b))===null||E===void 0||E.openFile(S).catch(A=>e.view.plugin.displayError(A)))}function s(b){var E;b.stopPropagation(),e.view.plugin.tools.openDiff({aFile:(E=e.change.from)!==null&&E!==void 0?E:e.change.path,bFile:e.change.path,aRef:"HEAD",bRef:"",event:b})}var o=Jz();o.__mouseover=[Xz,e],o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=b=>{var E=Zz();E.__click=a,Ze(E,S=>r[0]=S,()=>r==null?void 0:r[0]),ae(b,E)};_e(h,b=>{Fo(e.change.vaultPath,e.view.app)&&b(p)})}var g=te(h,2);g.__click=[Kz,e],Ze(g,b=>r[1]=b,()=>r==null?void 0:r[1]),H(d);var v=te(d,2),y=G(v,!0);H(v),H(f),H(l),H(o),Fe(b=>{ve(l,"data-path",e.change.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.change.vaultPath),Be(u,b),ve(v,"data-type",e.change.index),Be(y,e.change.index)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",o,b=>{b.stopPropagation(),b.button==2?Xn(e.view.app,b,e.change.vaultPath,e.view.leaf,"git-source-control"):i(b)}),ae(t,o),rt()}gt(["mouseover","click"]);m();m();var Qz=fe(''),eV=fe("
");function Ps(t,e){tt(e,!0);var r=eV(),n=G(r);{var i=a=>{var s=Qz(),o=G(s),l=G(o),c=G(l,!0);H(l),H(o),H(s),Fe(()=>{ve(o,"aria-label","And "+(e.files.length-500)+" more files"),Be(c,"And "+(e.files.length-500)+" more files")}),ae(a,s)};_e(n,a=>{e.files.length>500&&a(i)})}H(r),ae(t,r),rt()}var rV=fe("
"),nV=(t,e,r)=>e(t,R(r)),iV=(t,e,r)=>e(t,R(r).path),aV=fe('
'),sV=(t,e,r)=>e(t,R(r)),oV=(t,e,r)=>e(t,R(r).path),lV=fe('
',1),cV=fe(''),uV=fe('
'),fV=fe("
");function Rs(t,e){tt(e,!0);var r,n;let i=cn(e,"topLevel",3,!1),a=cn(e,"closed",15);for(let g of e.hierarchy.children)((n=(r=g.children)===null||r===void 0?void 0:r.length)!==null&&n!==void 0?n:0)>100&&a(a()[g.title]=!0,!0);let s=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function o(g,v){g.stopPropagation(),e.plugin.gitManager.stageAll({dir:v}).catch(y=>e.plugin.displayError(y)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function l(g,v){g.stopPropagation(),e.plugin.gitManager.unstageAll({dir:v}).catch(y=>e.plugin.displayError(y)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function c(g,v){g.stopPropagation(),e.plugin.discardAll(v.vaultPath)}function u(g,v){g.stopPropagation(),a(a()[v.path]=!a()[v.path],!0)}var f=fV();let d;var h=G(f);Vr(h,17,()=>Fc(e.hierarchy.children,500),zr,(g,v)=>{var y=Li(),b=kr(y);{var E=A=>{var k=rV(),w=G(k);{var x=T=>{Cu(T,{get change(){return R(v).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},_=T=>{var C=Li(),I=kr(C);{var L=J=>{ku(J,{get change(){return R(v).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},$=J=>{var de=Li(),le=kr(de);{var ce=Te=>{Tu(Te,{get change(){return R(v).data},get view(){return e.view}})};_e(le,Te=>{e.fileType==2&&Te(ce)},!0)}ae(J,de)};_e(I,J=>{e.fileType==1?J(L):J($,!1)},!0)}ae(T,C)};_e(w,T=>{e.fileType==0?T(x):T(_,!1)})}H(k),ae(A,k)},S=A=>{var k=uV();k.__click=[nV,u,v];let w;var x=G(k),_=te(G(x),2);let T;var C=te(_,2),I=G(C,!0);H(C);var L=te(C,2),$=G(L),J=G($);{var de=ne=>{var N=aV();N.__click=[iV,l,v],ae(ne,N)},le=ne=>{var N=lV(),W=kr(N);W.__click=[sV,c,v];var B=te(W,2);B.__click=[oV,o,v],ae(ne,N)};_e(J,ne=>{e.fileType==0?ne(de):ne(le,!1)})}il(2),H($),H(L),H(x);var ce=te(x,2);{var Te=ne=>{var N=cV(),W=G(N);Rs(W,{get hierarchy(){return R(v)},get plugin(){return e.plugin},get view(){return e.view},get fileType(){return e.fileType},get closed(){return a()},set closed(B){a(B)}}),H(N),Pn(3,N,()=>ui,()=>({duration:150})),ae(ne,N)};_e(ce,ne=>{a()[R(v).path]||ne(Te)})}H(k),Fe((ne,N)=>{w=ot(k,1,"tree-item nav-folder",null,w,ne),ve(x,"data-tooltip-position",R(s)),ve(x,"aria-label",R(v).vaultPath),T=ot(_,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,T,N),Be(I,R(v).title)},[()=>({"is-collapsed":a()[R(v).path]}),()=>({"is-collapsed":a()[R(v).path]})]),Gr("auxclick",k,ne=>Xn(e.view.app,ne,R(v).vaultPath,e.view.leaf,"git-source-control")),ae(A,k)};_e(b,A=>{R(v).data?A(E):A(S,!1)})}ae(g,y)});var p=te(h,2);Ps(p,{get files(){return e.hierarchy.children}}),H(f),Fe(g=>d=ot(f,1,"",null,d,g),[()=>({topLevel:i()})]),ae(t,f),rt()}gt(["click"]);function dV(t,e,r,n,i,a){if(ie(e,!0),R(r)){let s=R(r).staged.length>0;n().promiseQueue.addTask(()=>n().commit({fromAuto:!1,commitMessage:R(i),onlyStaged:s}).then(()=>ie(i,n().settings.commitMessage,!0)).finally(a))}}function I5(t,e,r,n,i){t.stopPropagation(),ie(e,!0),r().promiseQueue.addTask(()=>r().gitManager.stageAll({status:R(n)}).finally(i))}function F5(t,e,r,n,i){t.stopPropagation(),ie(e,!0),r().promiseQueue.addTask(()=>r().gitManager.unstageAll({status:R(n)}).finally(i))}function hV(t,e,r,n){ie(e,!0),r().promiseQueue.addTask(()=>r().push().finally(n))}function pV(t,e,r,n){ie(e,!0),r().promiseQueue.addTask(()=>r().pullChangesFromRemote().finally(n))}function mV(t,e){t.stopPropagation(),e().discardAll()}var gV=(t,e,r,n)=>{ie(e,!R(e)),(0,Ms.setIcon)(r[6],R(e)?"list":"folder"),n().settings.treeStructure=R(e),n().saveSettings()},vV=(t,e)=>ie(e,""),yV=fe('
'),wV=(t,e)=>ie(e,!R(e)),bV=fe(" ",1),_V=fe(''),xV=(t,e)=>ie(e,!R(e)),SV=fe(" ",1),EV=fe(''),AV=(t,e)=>ie(e,!R(e)),kV=fe(" ",1),TV=fe(''),CV=fe('
'),PV=fe(''),RV=fe('
'),MV={hash:"svelte-11adhly",code:`.commit-msg-input.svelte-11adhly {width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field);}.git-commit-msg.svelte-11adhly {position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto;}main.svelte-11adhly .git-tools:where(.svelte-11adhly) .files-count:where(.svelte-11adhly) {padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center;}.nav-folder-title.svelte-11adhly {align-items:center;}.git-commit-msg-clear-button.svelte-11adhly {position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out;}.git-commit-msg-clear-button.svelte-11adhly:after {content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat;}`};function fy(t,e){tt(e,!0),Tn(t,MV);let r=cn(e,"plugin",7),n=cn(e,"view",7),i=Pe(!1),a=Pe(void 0),s=Pe(Ne([])),o=Pe(Ne(r().settings.commitMessage)),l=Ne([]),c=Pe(void 0),u=Pe(void 0),f=Pe(void 0),d=Pe(!0),h=Pe(!0),p=Pe(!0),g=Pe(0),v=Pe(Ne({})),y=Pe(Ne({})),b=Pe(Ne({})),E=Pe(Ne(r().settings.treeStructure));n().registerEvent(n().app.workspace.on("obsidian-git:loading-status",()=>ie(i,!0))),n().registerEvent(n().app.workspace.on("obsidian-git:status-changed",()=>void A().catch(console.error))),n().plugin.cachedStatus==null?n().plugin.refresh().catch(console.error):A().catch(console.error),Zt(()=>{l.forEach(X=>(0,Ms.setIcon)(X,X.getAttr("data-icon")))}),Zt(()=>{l.forEach(X=>{var Oe,De;!X||X.id!="push"||(Ms.Platform.isMobile?(X.removeClass("button-border"),R(g)>0&&X.addClass("button-border")):((Oe=X.firstElementChild)===null||Oe===void 0||Oe.removeAttribute("color"),R(g)>0&&((De=X.firstElementChild)===null||De===void 0||De.setAttr("color","var(--text-accent)"))))})}),n().scope=new Ms.Scope(r().app.scope),n().scope.register(["Ctrl"],"Enter",X=>S());function S(){if(ie(i,!0),R(a)){let X=R(a).staged.length>0;r().promiseQueue.addTask(()=>r().commitAndSync({fromAutoBackup:!1,commitMessage:R(o),onlyStaged:X}).then(()=>{ie(o,r().settings.commitMessage,!0)}).finally(k))}}function A(){return Ts(this,void 0,void 0,function*(){if(!r().gitReady){ie(a,void 0);return}if(ie(g,yield r().gitManager.getUnpushedCommits(),!0),ie(a,r().cachedStatus,!0),ie(i,!1),r().lastPulledFiles&&r().lastPulledFiles!=R(s)&&(ie(s,r().lastPulledFiles,!0),ie(f,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(s))},!0)),R(a)){let X=(Oe,De)=>Oe.vaultPath.split("/").last().localeCompare(Kn(De.vaultPath));R(a).changed.sort(X),R(a).staged.sort(X),ie(c,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(a).changed)},!0),ie(u,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(a).staged)},!0)}else ie(c,void 0),ie(u,void 0)})}function k(){n().app.workspace.trigger("obsidian-git:refresh")}let w=Ct(()=>(R(o).match(/\n/g)||[]).length+1||1);var x=RV(),_=G(x),T=G(_),C=G(T);C.__click=S,Ze(C,X=>l[0]=X,()=>l==null?void 0:l[0]);var I=te(C,2);I.__click=[dV,i,a,r,o,k],Ze(I,X=>l[1]=X,()=>l==null?void 0:l[1]);var L=te(I,2);L.__click=[I5,i,r,a,k],Ze(L,X=>l[2]=X,()=>l==null?void 0:l[2]);var $=te(L,2);$.__click=[F5,i,r,a,k],Ze($,X=>l[3]=X,()=>l==null?void 0:l[3]);var J=te($,2);J.__click=[hV,i,r,k],Ze(J,X=>l[4]=X,()=>l==null?void 0:l[4]);var de=te(J,2);de.__click=[pV,i,r,k],Ze(de,X=>l[5]=X,()=>l==null?void 0:l[5]);var le=te(de,2);le.__click=[gV,E,l,r],Ze(le,X=>l[6]=X,()=>l==null?void 0:l[6]);var ce=te(le,2);let Te;ce.__click=k,Ze(ce,X=>l[7]=X,()=>l==null?void 0:l[7]),H(T),H(_);var ne=te(_,2),N=G(ne);H1(N);var W=te(N,2);{var B=X=>{var Oe=yV();Oe.__click=[vV,o],ve(Oe,"aria-label","Clear"),ae(X,Oe)};_e(W,X=>{R(o)&&X(B)})}H(ne);var $e=te(ne,2),lr=G($e);{var Ut=X=>{var Oe=PV(),De=G(Oe);let Pt;var Le=G(De);Le.__click=[wV,h];var U=G(Le);let Je;var j=te(U,4),Z=G(j),Se=G(Z);Se.__click=[F5,i,r,a,k],Ze(Se,Mt=>l[8]=Mt,()=>l==null?void 0:l[8]),H(Z);var We=te(Z,2),Rt=G(We,!0);H(We),H(j),H(Le);var vl=te(Le,2);{var j5=Mt=>{var Gt=_V(),Bi=G(Gt);{var Rn=Jt=>{Rs(Jt,{get hierarchy(){return R(u)},get plugin(){return r()},get view(){return n()},get fileType(){return 0},topLevel:!0,get closed(){return R(v)},set closed(fn){ie(v,fn,!0)}})},Os=Jt=>{var fn=bV(),Pa=kr(fn);Vr(Pa,17,()=>Fc(R(a).staged,500),zr,(Hi,yl)=>{Cu(Hi,{get change(){return R(yl)},get view(){return n()},get manager(){return r().gitManager}})});var fi=te(Pa,2);Ps(fi,{get files(){return R(a).staged}}),ae(Jt,fn)};_e(Bi,Jt=>{R(E)?Jt(Rn):Jt(Os,!1)})}H(Gt),Pn(3,Gt,()=>ui,()=>({duration:150})),ae(Mt,Gt)};_e(vl,Mt=>{R(h)&&Mt(j5)})}H(De);var Ru=te(De,2);let dy;var Mu=G(Ru);Mu.__click=[xV,d];var hy=G(Mu);let py;var my=te(hy,4),yp=G(my),gy=G(yp);gy.__click=[mV,r];var vy=te(gy,2);vy.__click=[I5,i,r,a,k],Ze(vy,Mt=>l[9]=Mt,()=>l==null?void 0:l[9]),H(yp);var yy=te(yp,2),N5=G(yy,!0);H(yy),H(my),H(Mu);var B5=te(Mu,2);{var H5=Mt=>{var Gt=EV(),Bi=G(Gt);{var Rn=Jt=>{Rs(Jt,{get hierarchy(){return R(c)},get plugin(){return r()},get view(){return n()},get fileType(){return 1},topLevel:!0,get closed(){return R(y)},set closed(fn){ie(y,fn,!0)}})},Os=Jt=>{var fn=SV(),Pa=kr(fn);Vr(Pa,17,()=>Fc(R(a).changed,500),zr,(Hi,yl)=>{ku(Hi,{get change(){return R(yl)},get view(){return n()},get manager(){return r().gitManager}})});var fi=te(Pa,2);Ps(fi,{get files(){return R(a).changed}}),ae(Jt,fn)};_e(Bi,Jt=>{R(E)?Jt(Rn):Jt(Os,!1)})}H(Gt),Pn(3,Gt,()=>ui,()=>({duration:150})),ae(Mt,Gt)};_e(B5,Mt=>{R(d)&&Mt(H5)})}H(Ru);var U5=te(Ru,2);{var G5=Mt=>{var Gt=CV();let Bi;var Rn=G(Gt);Rn.__click=[AV,p];var Os=te(G(Rn),4),Jt=G(Os,!0);H(Os),H(Rn);var fn=te(Rn,2);{var Pa=fi=>{var Hi=TV(),yl=G(Hi);{var z5=Is=>{Rs(Is,{get hierarchy(){return R(f)},get plugin(){return r()},get view(){return n()},get fileType(){return 2},topLevel:!0,get closed(){return R(b)},set closed(Ou){ie(b,Ou,!0)}})},V5=Is=>{var Ou=kV(),wy=kr(Ou);Vr(wy,17,()=>R(s),zr,(W5,Y5)=>{Tu(W5,{get change(){return R(Y5)},get view(){return n()}})});var q5=te(wy,2);Ps(q5,{get files(){return R(s)}}),ae(Is,Ou)};_e(yl,Is=>{R(E)?Is(z5):Is(V5,!1)})}H(Hi),Pn(3,Hi,()=>ui,()=>({duration:150})),ae(fi,Hi)};_e(fn,fi=>{R(p)&&fi(Pa)})}H(Gt),Fe(fi=>{Bi=ot(Gt,1,"pulled nav-folder",null,Bi,fi),Be(Jt,R(s).length)},[()=>({"is-collapsed":!R(p)})]),ae(Mt,Gt)};_e(U5,Mt=>{R(s).length>0&&R(f)&&Mt(G5)})}H(Oe),Fe((Mt,Gt,Bi,Rn)=>{Pt=ot(De,1,"staged tree-item nav-folder",null,Pt,Mt),Je=ot(U,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,Je,Gt),Be(Rt,R(a).staged.length),dy=ot(Ru,1,"changes tree-item nav-folder",null,dy,Bi),py=ot(hy,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,py,Rn),Be(N5,R(a).changed.length)},[()=>({"is-collapsed":!R(h)}),()=>({"is-collapsed":!R(h)}),()=>({"is-collapsed":!R(d)}),()=>({"is-collapsed":!R(d)})]),ae(X,Oe)};_e(lr,X=>{R(a)&&R(u)&&R(c)&&X(Ut)})}H($e),H(x),Fe(X=>{ve(x,"data-type",$t.type),ve(le,"data-icon",R(E)?"list":"folder"),Te=ot(ce,1,"clickable-icon nav-action-button",null,Te,X),ve(N,"rows",R(w))},[()=>({loading:R(i)})]),ey(N,()=>R(o),X=>ie(o,X)),ae(t,x),rt()}gt(["click"]);var Pu=class extends $5.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return $t.type}getDisplayText(){return $t.name}getIcon(){return $t.icon}onClose(){return this._view&&ji(this._view),super.onClose()}reload(){this._view&&ji(this._view),this._view=Ta(fy,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var gp=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.statusBarEl.addClass("mod-clickable"),this.statusBarEl.onClickEvent(n=>{this.plugin.switchBranch().catch(i=>r.displayError(i))})}async display(){if(this.plugin.gitReady){let e=await this.plugin.gitManager.branchInfo();e.current!=null?this.statusBarEl.setText(e.current):this.statusBarEl.empty()}else this.statusBarEl.empty()}remove(){this.statusBarEl.remove()}};var vp=class extends we.Plugin{constructor(){super(...arguments);this.automaticsManager=new Bc(this);this.tools=new Uc(this);this.localStorage=new vh(this);this.state={gitAction:0,offlineMode:!1};this.gitReady=!1;this.promiseQueue=new fh(this);this.intervalsToClear=[];this.lineAuthoringFeature=new uh(this)}setPluginState(r){var n;this.state=Object.assign(this.state,r),(n=this.statusBar)==null||n.display()}async updateCachedStatus(){var r,n;return this.app.workspace.trigger("obsidian-git:loading-status"),this.cachedStatus=await this.gitManager.status(),this.cachedStatus.conflicted.length>0?(this.localStorage.setConflict(!0),await((r=this.branchBar)==null?void 0:r.display())):(this.localStorage.setConflict(!1),await((n=this.branchBar)==null?void 0:n.display())),this.app.workspace.trigger("obsidian-git:status-changed",this.cachedStatus),this.cachedStatus}async refresh(){if(!this.gitReady)return;let r=this.app.workspace.getLeavesOfType($t.type),n=this.app.workspace.getLeavesOfType(Zr.type);(this.settings.changedFilesInStatusBar||r.some(i=>{var a;return!((a=i.isDeferred)!=null&&a)})||n.some(i=>{var a;return!((a=i.isDeferred)!=null&&a)}))&&await this.updateCachedStatus().catch(i=>this.displayError(i)),this.app.workspace.trigger("obsidian-git:refreshed")}refreshUpdatedHead(){this.lineAuthoringFeature.refreshLineAuthorViews()}async onload(){console.log("loading "+this.manifest.name+" plugin: v"+this.manifest.version),Nc.plugin=this,this.localStorage.migrate(),await this.loadSettings(),await this.migrateSettings(),this.settingsTab=new Kd(this.app,this),this.addSettingTab(this.settingsTab),this.localStorage.getPluginDisabled()||(this.registerStuff(),this.app.workspace.onLayoutReady(()=>this.init({fromReload:!1}).catch(r=>this.displayError(r))))}onExternalSettingsChange(){this.reloadSettings().catch(r=>this.displayError(r))}async reloadSettings(){let r=JSON.stringify(this.settings);await this.loadSettings();let n=JSON.stringify(this.settings);r!==n&&(this.log("Reloading settings"),this.unloadPlugin(),await this.init({fromReload:!0}),this.app.workspace.getLeavesOfType($t.type).forEach(i=>{var a;if(!((a=i.isDeferred)!=null&&a))return i.view.reload()}),this.app.workspace.getLeavesOfType(Zr.type).forEach(i=>{var a;if(!((a=i.isDeferred)!=null&&a))return i.view.reload()}))}registerStuff(){this.registerEvent(this.app.workspace.on("obsidian-git:refresh",()=>{this.refresh().catch(r=>this.displayError(r))})),this.registerEvent(this.app.workspace.on("obsidian-git:head-change",()=>{this.refreshUpdatedHead()})),this.registerEvent(this.app.workspace.on("file-menu",(r,n,i)=>{this.handleFileMenu(r,n,i,"file-manu")})),this.registerEvent(this.app.workspace.on("obsidian-git:menu",(r,n,i)=>{this.handleFileMenu(r,n,i,"obsidian-git:menu")})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>{this.onActiveLeafChange(r)})),this.registerEvent(this.app.vault.on("modify",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("delete",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("create",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("rename",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerView($t.type,r=>new Pu(r,this)),this.registerView(Zr.type,r=>new Su(r,this)),this.registerView(ua.type,r=>new ls(r,this)),this.registerView(ca.type,r=>new fs(r,this)),this.addRibbonIcon("git-pull-request","Open Git source control",async()=>{var i;let r=this.app.workspace.getLeavesOfType($t.type),n;r.length===0?(n=(i=this.app.workspace.getRightLeaf(!1))!=null?i:this.app.workspace.getLeaf(),await n.setViewState({type:$t.type})):n=r.first(),await this.app.workspace.revealLeaf(n)}),this.registerHoverLinkSource($t.type,{display:"Git View",defaultMod:!0}),this.lineAuthoringFeature.onLoadPlugin(),this.setRefreshDebouncer(),oM(this)}setRefreshDebouncer(){var r;(r=this.debRefresh)==null||r.cancel(),this.debRefresh=(0,we.debounce)(()=>{this.settings.refreshSourceControl&&this.refresh().catch(console.error)},this.settings.refreshSourceControlTimer,!0)}async addFileToGitignore(r,n){let i=this.gitManager.getRelativeRepoPath(r,!0),a=u3({isFolder:n,gitRelativePath:i});return await this.app.vault.adapter.append(this.gitManager.getRelativeVaultPath(".gitignore"),` +`+a),this.refresh()}handleFileMenu(r,n,i,a){if(!this.gitReady||!this.settings.showFileMenu||!n)return;let s;if(typeof n=="string"?s=n:s=n.path,i=="file-explorer-context-menu"&&(r.addItem(o=>{o.setTitle("Git: Stage").setIcon("plus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{n instanceof we.TFile?await this.stageFile(n):(await this.gitManager.stageAll({dir:this.gitManager.getRelativeRepoPath(s,!0)}),this.app.workspace.trigger("obsidian-git:refresh"))})})}),r.addItem(o=>{o.setTitle("Git: Unstage").setIcon("minus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{n instanceof we.TFile?await this.unstageFile(n):(await this.gitManager.unstageAll({dir:this.gitManager.getRelativeRepoPath(s,!0)}),this.app.workspace.trigger("obsidian-git:refresh"))})})}),r.addItem(o=>{o.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(l=>{this.addFileToGitignore(s,n instanceof we.TFolder).catch(c=>this.displayError(c))})})),i=="git-source-control"){r.addItem(l=>{l.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(c=>{this.addFileToGitignore(s,n instanceof we.TFolder).catch(u=>this.displayError(u))})});let o=this.app.vault.adapter;a==="obsidian-git:menu"&&o instanceof we.FileSystemAdapter&&(r.addItem(l=>{l.setTitle("Open in default app").setIcon("arrow-up-right").setSection("action").onClick(c=>{this.app.openWithDefaultApp(s)})}),r.addItem(l=>{l.setTitle("Show in system explorer").setIcon("arrow-up-right").setSection("action").onClick(c=>{window.electron.shell.showItemInFolder(L5.join(o.getBasePath(),s))})}))}}async migrateSettings(){this.settings.mergeOnPull!=null&&(this.settings.syncMethod=this.settings.mergeOnPull?"merge":"rebase",this.settings.mergeOnPull=void 0,await this.saveSettings()),this.settings.autoCommitMessage===void 0&&(this.settings.autoCommitMessage=this.settings.commitMessage,await this.saveSettings()),this.settings.gitPath!=null&&(this.localStorage.setGitPath(this.settings.gitPath),this.settings.gitPath=void 0,await this.saveSettings()),this.settings.username!=null&&(this.localStorage.setPassword(this.settings.username),this.settings.username=void 0,await this.saveSettings())}unloadPlugin(){var r,n;this.gitReady=!1,this.lineAuthoringFeature.deactivateFeature(),this.automaticsManager.unload(),(r=this.branchBar)==null||r.remove(),(n=this.statusBar)==null||n.remove(),this.statusBar=void 0,this.branchBar=void 0,this.gitManager.unload(),this.promiseQueue.clear();for(let i of this.intervalsToClear)window.clearInterval(i);this.intervalsToClear=[],this.debRefresh.cancel()}onunload(){this.unloadPlugin(),console.log("unloading "+this.manifest.name+" plugin")}async loadSettings(){let r=await this.loadData();r==null&&(r={showedMobileNotice:!0}),this.settings=gT(Xe,r)}async saveSettings(){var r;(r=this.settingsTab)==null||r.beforeSaveSettings(),await this.saveData(this.settings)}get useSimpleGit(){return we.Platform.isDesktopApp}async init({fromReload:r=!1}){var n;if(this.settings.showStatusBar&&!this.statusBar){let i=this.addStatusBarItem();this.statusBar=new dh(i,this),this.intervalsToClear.push(window.setInterval(()=>{var a;return(a=this.statusBar)==null?void 0:a.display()},1e3))}try{this.useSimpleGit?(this.gitManager=new Ce(this),await this.gitManager.setGitInstance()):this.gitManager=new wn(this);let i=await this.gitManager.checkRequirements(),a=this.localStorage.getPausedAutomatics();switch(i){case"missing-git":this.displayError(`Cannot run git command. Trying to run: '${this.localStorage.getGitPath()||"git"}' .`);break;case"missing-repo":new we.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo.",1e4);break;case"valid":if(this.gitReady=!0,this.setPluginState({gitAction:0}),we.Platform.isDesktop&&this.settings.showBranchStatusBar&&!this.branchBar){let s=this.addStatusBarItem();this.branchBar=new gp(s,this),this.intervalsToClear.push(window.setInterval(()=>{var o;return void((o=this.branchBar)==null?void 0:o.display().catch(console.error))},6e4))}await((n=this.branchBar)==null?void 0:n.display()),this.lineAuthoringFeature.conditionallyActivateBySettings(),this.app.workspace.trigger("obsidian-git:refresh"),this.app.workspace.trigger("obsidian-git:head-change"),!r&&this.settings.autoPullOnBoot&&!a&&this.promiseQueue.addTask(()=>this.pullChangesFromRemote()),a||await this.automaticsManager.init(),a&&new we.Notice("Automatic routines are currently paused.");break;default:this.log("Something weird happened. The 'checkRequirements' result is "+i)}}catch(i){this.displayError(i),console.error(i)}}async createNewRepo(){try{await this.gitManager.init(),new we.Notice("Initialized new repo"),await this.init({fromReload:!0})}catch(r){this.displayError(r)}}async cloneNewRepo(){let n=await new ze(this,{placeholder:"Enter remote URL"}).openAndGetResult();if(n){let i="Vault Root",a=await new ze(this,{options:this.gitManager instanceof wn?[i]:[],placeholder:"Enter directory for clone. It needs to be empty or not existent.",allowEmpty:this.gitManager instanceof wn}).openAndGetResult();if(a==null)return;if(a===i&&(a="."),a=(0,we.normalizePath)(a),a==="/"&&(a="."),a==="."){let f=await new ze(this,{options:["NO","YES"],placeholder:`Does your remote repo contain a ${this.app.vault.configDir} directory at the root?`,onlySelection:!0}).openAndGetResult();if(f===void 0){new we.Notice("Aborted clone");return}else if(f==="YES"){let d="DELETE ALL YOUR LOCAL CONFIG AND PLUGINS";if(await new ze(this,{options:["Abort clone",d],placeholder:`To avoid conflicts, the local ${this.app.vault.configDir} directory needs to be deleted.`,onlySelection:!0}).openAndGetResult()===d)await this.app.vault.adapter.rmdir(this.app.vault.configDir,!0);else{new we.Notice("Aborted clone");return}}}let s=await new ze(this,{placeholder:"Specify depth of clone. Leave empty for full clone.",allowEmpty:!0}).openAndGetResult(),o;if(s===void 0){new we.Notice("Aborted clone");return}if(s!==""&&(o=parseInt(s),isNaN(o))){new we.Notice("Invalid depth. Aborting clone.");return}new we.Notice(`Cloning new repo into "${a}"`);let l=this.settings.basePath,c=a&&a!==".";c&&(this.settings.basePath=a);try{await this.gitManager.clone(vv(n),a,o),new we.Notice("Cloned new repo."),new we.Notice("Please restart Obsidian"),c&&await this.saveSettings()}catch(u){this.displayError(u),this.settings.basePath=l,await this.saveSettings()}}}async isAllInitialized(){return this.gitReady||await this.init({fromReload:!0}),this.gitReady}async pullChangesFromRemote(){if(!await this.isAllInitialized())return;let r=await this.pull();if(r!==!1){if(r||this.displayMessage("Pull: Everything is up-to-date"),this.gitManager instanceof Ce){let n=await this.updateCachedStatus();n.conflicted.length>0&&(this.displayError(`You have conflicts in ${n.conflicted.length} ${n.conflicted.length==1?"file":"files"}`),await this.handleConflict(n.conflicted))}this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0})}}async commitAndSync({fromAutoBackup:r,requestCustomMessage:n=!1,commitMessage:i,onlyStaged:a=!1}){!await this.isAllInitialized()||(this.settings.syncMethod=="reset"&&this.settings.pullBeforePush&&await this.pull(),!await this.commit({fromAuto:r,requestCustomMessage:n,commitMessage:i,onlyStaged:a}))||(this.settings.syncMethod!="reset"&&this.settings.pullBeforePush&&await this.pull(),this.settings.disablePush||(await this.remotesAreSet()&&await this.gitManager.canPush()?await this.push():this.displayMessage("No commits to push")),this.setPluginState({gitAction:0}))}async commit({fromAuto:r,requestCustomMessage:n=!1,onlyStaged:i=!1,commitMessage:a,amend:s=!1}){if(!await this.isAllInitialized())return!1;try{let o=this.localStorage.getConflict(),l,c=[],u=[];if(this.gitManager instanceof Ce){if(await this.mayDeleteConflictFile(),l=await this.updateCachedStatus(),l.conflicted.length==0&&(o=!1),r&&l.conflicted.length>0)return this.displayError(`Did not commit, because you have conflicts in ${l.conflicted.length} ${l.conflicted.length==1?"file":"files"}. Please resolve them and commit per command.`),await this.handleConflict(l.conflicted),!1;c=l.staged,u=l.changed}else{if(r&&o)return this.displayError("Did not commit, because you have conflicts. Please resolve them and commit per command."),!1;{o&&await this.mayDeleteConflictFile();let f=this.gitManager;i?c=await f.getStagedFiles():u=(await f.getUnstagedFiles()).map(({path:h,type:p})=>({vaultPath:this.gitManager.getRelativeVaultPath(h),path:h,type:p}))}}if(await this.tools.hasTooBigFiles(i?c:[...c,...u]))return this.setPluginState({gitAction:0}),!1;if(u.length+c.length!==0||o){let f=a!=null?a:a=r?this.settings.autoCommitMessage:this.settings.commitMessage;if(r&&this.settings.customMessageOnAutoBackup||n){!this.settings.disablePopups&&r&&new we.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort");let p=await new hh(this).openAndGetResult();if(p!=null&&p!=""&&p!="...")f=p;else return this.setPluginState({gitAction:0}),!1}else if(this.gitManager instanceof Ce&&this.settings.commitMessageScript){let p=this.settings.commitMessageScript,g=this.localStorage.getHostname()||"",v=p.replace("{{hostname}}",g);v=v.replace("{{date}}",(0,we.moment)().format(this.settings.commitDateFormat));let y=await $c("sh",["-c",v],{cwd:this.gitManager.absoluteRepoPath});y.code!=0?this.displayError(y.stderr):y.stdout.trim().length==0?this.displayMessage("Stdout from commit message script is empty. Using default message."):f=y.stdout}let d;i?d=await this.gitManager.commit({message:f,amend:s}):d=await this.gitManager.commitAll({message:f,status:l,unstagedFiles:u,amend:s}),this.gitManager instanceof Ce&&await this.updateCachedStatus();let h=!1;d===void 0&&(h=!0,d=u.length+c.length||0),this.displayMessage(`Committed${h?" approx.":""} ${d} ${d==1?"file":"files"}`)}else this.displayMessage("No changes to commit");return this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(o){return this.displayError(o),!1}}async push(){if(!await this.isAllInitialized()||!await this.remotesAreSet())return!1;let r=this.localStorage.getConflict();try{this.gitManager instanceof Ce&&await this.mayDeleteConflictFile();let n;if(this.gitManager instanceof Ce&&(n=await this.updateCachedStatus()).conflicted.length>0)return this.displayError(`Cannot push. You have conflicts in ${n.conflicted.length} ${n.conflicted.length==1?"file":"files"}`),await this.handleConflict(n.conflicted),!1;if(this.gitManager instanceof wn&&r)return this.displayError("Cannot push. You have conflicts"),!1;this.log("Pushing....");let i=await this.gitManager.push();return i!==void 0&&(i>0?this.displayMessage(`Pushed ${i} ${i==1?"file":"files"} to remote`):this.displayMessage("No commits to push")),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(n){return n instanceof Co?this.handleNoNetworkError(n):this.displayError(n),!1}}async pull(){if(!await this.remotesAreSet())return!1;try{this.log("Pulling....");let r=await this.gitManager.pull()||[];return this.setPluginState({offlineMode:!1}),r.length>0&&(this.displayMessage(`Pulled ${r.length} ${r.length==1?"file":"files"} from remote`),this.lastPulledFiles=r),r.length}catch(r){return this.displayError(r),!1}}async fetch(){if(await this.remotesAreSet())try{await this.gitManager.fetch(),this.displayMessage("Fetched from remote"),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh")}catch(r){this.displayError(r)}}async mayDeleteConflictFile(){let r=this.app.vault.getAbstractFileByPath(To);r&&(this.app.workspace.iterateAllLeaves(n=>{var i;n.view instanceof we.MarkdownView&&((i=n.view.file)==null?void 0:i.path)==r.path&&n.detach()}),await this.app.vault.delete(r))}async stageFile(r){return await this.isAllInitialized()?(await this.gitManager.stage(r.path,!0),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async unstageFile(r){return await this.isAllInitialized()?(await this.gitManager.unstage(r.path,!0),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async switchBranch(){var i;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo(),n=await new pp(this,r.branches).openAndGetReslt();if(n!=null)return await this.gitManager.checkout(n),this.displayMessage(`Switched to ${n}`),this.app.workspace.trigger("obsidian-git:refresh"),await((i=this.branchBar)==null?void 0:i.display()),n}async switchRemoteBranch(){var a;if(!await this.isAllInitialized())return;let r=await this.selectRemoteBranch()||"",[n,i]=ki(r);if(i!=null&&n!=null)return await this.gitManager.checkout(i,n),this.displayMessage(`Switched to ${r}`),await((a=this.branchBar)==null?void 0:a.display()),r}async createBranch(){var n;if(!await this.isAllInitialized())return;let r=await new ze(this,{placeholder:"Create new branch"}).openAndGetResult();if(r!=null)return await this.gitManager.createBranch(r),this.displayMessage(`Created new branch ${r}`),await((n=this.branchBar)==null?void 0:n.display()),r}async deleteBranch(){var i;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo();r.current&&r.branches.remove(r.current);let n=await new ze(this,{options:r.branches,placeholder:"Delete branch",onlySelection:!0}).openAndGetResult();if(n!=null){let a=!1;if(!await this.gitManager.branchIsMerged(n)){let o=await new ze(this,{options:["YES","NO"],placeholder:"This branch isn't merged into HEAD. Force delete?",onlySelection:!0}).openAndGetResult();if(o!=="YES")return;a=o==="YES"}return await this.gitManager.deleteBranch(n,a),this.displayMessage(`Deleted branch ${n}`),await((i=this.branchBar)==null?void 0:i.display()),n}}async remotesAreSet(){return this.settings.updateSubmodules||(await this.gitManager.branchInfo()).tracking?!0:(new we.Notice("No upstream branch is set. Please select one."),await this.setUpstreamBranch())}async setUpstreamBranch(){let r=await this.selectRemoteBranch();return r==null?(this.displayError("Aborted. No upstream-branch is set!",1e4),this.setPluginState({gitAction:0}),!1):(await this.gitManager.updateUpstreamBranch(r),this.displayMessage(`Set upstream branch to ${r}`),this.setPluginState({gitAction:0}),!0)}async discardAll(r){if(!await this.isAllInitialized())return!1;let n=await this.gitManager.status({path:r}),i=0,a=0;for(let o of n.changed)o.workingDir=="U"?i++:a++;if(i+a==0)return!1;let s=await new gl({app:this.app,filesToDeleteCount:i,filesToDiscardCount:a,path:r!=null?r:""}).openAndGetResult();switch(s){case!1:return s;case"discard":await this.gitManager.discardAll({dir:r,status:this.cachedStatus});break;case"delete":{await this.gitManager.discardAll({dir:r,status:this.cachedStatus});let o=await this.gitManager.getUntrackedPaths({path:r,status:this.cachedStatus});for(let l of o){let c=this.gitManager.getRelativeVaultPath(l),u=this.app.vault.getAbstractFileByPath(c);u?await this.app.fileManager.trashFile(u):l.endsWith("/")?await this.app.vault.adapter.rmdir(c,!0):await this.app.vault.adapter.remove(c)}break}default:Ud(s)}return this.app.workspace.trigger("obsidian-git:refresh"),s}async handleConflict(r){this.localStorage.setConflict(!0);let n;r!==void 0&&(n=["# Conflicts","Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`","(This file will automatically be deleted before commit)","[[#Additional Instructions]] available below file list","",...r.map(i=>{let a=this.app.vault.getAbstractFileByPath(i);return a instanceof we.TFile?`- [[${this.app.metadataCache.fileToLinktext(a,"/")}]]`:`- Not a file: ${i}`}),` +# Additional Instructions +I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text. + +\`\`\`diff +<<<<<<< HEAD + File changes in local repository +======= + File changes in remote repository +>>>>>>> origin/main +\`\`\``]),await this.tools.writeAndOpenFile(n==null?void 0:n.join(` +`))}async editRemotes(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),i=await new ze(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}).openAndGetResult();if(i){let a=await this.gitManager.getRemoteUrl(i),o=await new ze(this,{initialValue:a,placeholder:"Enter remote URL"}).openAndGetResult();if(o)return await this.gitManager.setRemote(i,vv(o)),i}}async selectRemoteBranch(){let r=await this.gitManager.getRemotes(),n;r.length===0&&(n=await this.editRemotes(),n==null&&(r=await this.gitManager.getRemotes()));let i=new ze(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}),a=n!=null?n:await i.openAndGetResult();if(a){this.displayMessage("Fetching remote branches"),await this.gitManager.fetch(a);let s=await this.gitManager.getRemoteBranches(a),l=await new ze(this,{options:s,placeholder:"Select or create a new remote branch by typing its name and selecting it"}).openAndGetResult();return l==null?void 0:l.startsWith(a+"/")?l:`${a}/${l}`}}async removeRemote(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),i=await new ze(this,{options:r,placeholder:"Select a remote"}).openAndGetResult();i&&await this.gitManager.removeRemote(i)}onActiveLeafChange(r){var s,o;let n=r==null?void 0:r.view;if(!(n!=null&&n.getState().file)&&!(n instanceof ls||n instanceof fs))return;let i=this.app.workspace.getLeavesOfType($t.type).first(),a=this.app.workspace.getLeavesOfType(Zr.type).first();if((s=i==null?void 0:i.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||s.removeClass("is-active"),(o=a==null?void 0:a.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||o.removeClass("is-active"),(r==null?void 0:r.view)instanceof ls||(r==null?void 0:r.view)instanceof fs){let l=r.view.state.bFile;this.lastDiffViewState=r.view.getState();let c;i&&r.view.state.aRef=="HEAD"?c=i.view.containerEl.querySelector(`div.staged div.tree-item-self[data-path='${l}']`):i&&r.view.state.aRef==""?c=i.view.containerEl.querySelector(`div.changes div.tree-item-self[data-path='${l}']`):a&&(c=a.view.containerEl.querySelector(`div.tree-item-self[data-path='${l}']`)),c==null||c.addClass("is-active")}else this.lastDiffViewState=void 0}handleNoNetworkError(r){this.state.offlineMode?this.log("Encountered network error, but already in offline mode"):this.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.",2e3),this.setPluginState({gitAction:0,offlineMode:!0})}displayMessage(r,n=4*1e3){var i;(i=this.statusBar)==null||i.displayMessage(r.toLowerCase(),n),this.settings.disablePopups||(!this.settings.disablePopupsForNoChanges||!r.startsWith("No changes"))&&new we.Notice(r,5*1e3),this.log(r)}displayError(r,n=10*1e3){var a;if(r instanceof D5.Errors.UserCanceledError){new we.Notice("Aborted");return}let i;r instanceof Error?i=r:i=new Error(String(r)),this.setPluginState({gitAction:0}),this.settings.showErrorNotices&&new we.Notice(i.message,n),console.error(`${this.manifest.id}:`,i.stack),(a=this.statusBar)==null||a.displayMessage(i.message.toLowerCase(),n)}log(...r){console.log(`${this.manifest.id}:`,...r)}}; +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +crc-32/crc32.js: + (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *) + +js-sha256/src/sha256.js: + (** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + *) + +feather-icons/dist/feather.js: + (*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json new file mode 100644 index 0000000..2f24b79 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -0,0 +1,10 @@ +{ + "author": "Vinzent", + "authorUrl": "https://github.com/Vinzent03", + "id": "obsidian-git", + "name": "Git", + "description": "Integrate Git version control with automatic backup and other advanced features.", + "isDesktopOnly": false, + "fundingUrl": "https://ko-fi.com/vinzent", + "version": "2.35.2" +} diff --git a/.obsidian/plugins/obsidian-git/obsidian_askpass.sh b/.obsidian/plugins/obsidian-git/obsidian_askpass.sh new file mode 100755 index 0000000..2e5eb5d --- /dev/null +++ b/.obsidian/plugins/obsidian-git/obsidian_askpass.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +PROMPT="$1" +TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT" + +cleanup() { + rm -f "$TEMP_FILE" "$TEMP_FILE.response" +} +trap cleanup EXIT + +echo "$PROMPT" > "$TEMP_FILE" + +while [ ! -e "$TEMP_FILE.response" ]; do + if [ ! -e "$TEMP_FILE" ]; then + echo "Trigger file got removed: Abort" >&2 + exit 1 + fi + sleep 0.1 +done + +RESPONSE=$(cat "$TEMP_FILE.response") + +echo "$RESPONSE" diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css new file mode 100644 index 0000000..83c543b --- /dev/null +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -0,0 +1,629 @@ +@keyframes loading { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +.workspace-leaf-content[data-type="git-view"] .button-border { + border: 2px solid var(--interactive-accent); + border-radius: var(--radius-s); +} + +.workspace-leaf-content[data-type="git-view"] .view-content { + padding-left: 0; + padding-top: 0; + padding-right: 0; +} + +.workspace-leaf-content[data-type="git-history-view"] .view-content { + padding-left: 0; + padding-top: 0; + padding-right: 0; +} + +.loading { + overflow: hidden; +} + +.loading > svg { + animation: 2s linear infinite loading; + transform-origin: 50% 50%; + display: inline-block; +} + +.obsidian-git-center { + margin: auto; + text-align: center; + width: 50%; +} + +.obsidian-git-textarea { + display: block; + margin-left: auto; + margin-right: auto; +} + +.obsidian-git-disabled { + opacity: 0.5; +} + +.obsidian-git-center-button { + display: block; + margin: 20px auto; +} + +.tooltip.mod-left { + overflow-wrap: break-word; +} + +.tooltip.mod-right { + overflow-wrap: break-word; +} + +/* Limits the scrollbar to the view body */ +.git-view { + display: flex; + flex-direction: column; + position: relative; + height: 100%; +} + +.git-tools { + display: flex; + margin-left: auto; +} +.git-tools .type { + padding-left: var(--size-2-1); + display: flex; + align-items: center; + justify-content: center; + width: 11px; +} + +.git-tools .type[data-type="M"] { + color: orange; +} +.git-tools .type[data-type="D"] { + color: red; +} +.git-tools .buttons { + display: flex; +} +.git-tools .buttons > * { + padding: 0 0; + height: auto; +} + +.workspace-leaf-content[data-type="git-view"] .tree-item-self, +.workspace-leaf-content[data-type="git-history-view"] .tree-item-self { + align-items: center; +} + +.workspace-leaf-content[data-type="git-view"] + .tree-item-self:hover + .clickable-icon, +.workspace-leaf-content[data-type="git-history-view"] + .tree-item-self:hover + .clickable-icon { + color: var(--icon-color-hover); +} + +/* Highlight an item as active if it's diff is currently opened */ +.is-active .git-tools .buttons > * { + color: var(--nav-item-color-active); +} + +.git-author { + color: var(--text-accent); +} + +.git-date { + color: var(--text-accent); +} + +.git-ref { + color: var(--text-accent); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-d-none { + display: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper { + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-header { + background-color: var(--background-primary); + border-bottom: 1px solid var(--interactive-accent); + font-family: var(--font-monospace); + height: 35px; + padding: 5px 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-header, +.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { + font-size: 14px; + margin-left: auto; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added { + border: 1px solid #b4e2b4; + border-radius: 5px 0 0 5px; + color: #399839; + padding: 2px; + text-align: right; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted { + border: 1px solid #e9aeae; + border-radius: 0 5px 5px 0; + color: #c33; + margin-left: 1px; + padding: 2px; + text-align: left; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 15px; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-name { + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper { + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + margin-bottom: 1em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse { + -webkit-box-pack: end; + -ms-flex-pack: end; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + cursor: pointer; + display: none; + font-size: 12px; + justify-content: flex-end; + padding: 4px 8px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected { + background-color: #c8e1ff; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input { + margin: 0 4px 0 0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table { + border-collapse: collapse; + font-family: Menlo, Consolas, monospace; + font-size: 13px; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff { + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff { + overflow-y: hidden; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff { + display: inline-block; + margin-bottom: -8px; + margin-right: -4px; + overflow-x: scroll; + overflow-y: hidden; + width: 50%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line { + padding: 0 8em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { + padding: 0 4.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn { + word-wrap: normal; + background: none; + display: inline-block; + padding: 0; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + vertical-align: middle; + white-space: pre; + width: 100%; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { + background-color: #ffb6ba; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { + background-color: #8d232881; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { + border-radius: 0.2em; + display: inline-block; + margin-top: -1px; + text-decoration: none; + vertical-align: middle; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { + background-color: #97f295; + text-align: left; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { + background-color: #1d921996; + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix { + word-wrap: normal; + background: none; + display: inline; + padding: 0; + white-space: pre; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num1 { + float: left; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num1, +.workspace-leaf-content[data-type="diff-view"] .line-num2 { + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + padding: 0 0.5em; + text-overflow: ellipsis; + width: 3.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num2 { + float: right; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + position: absolute; + text-align: right; + width: 7.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after { + content: "\200b"; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + overflow: hidden; + padding: 0 0.5em; + position: absolute; + text-align: right; + text-overflow: ellipsis; + width: 4em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr { + position: relative; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after { + content: "\200b"; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder, +.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { + direction: rtl; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del { + background-color: #fee8e9; + border-color: #e9aeae; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins { + background-color: #dfd; + border-color: #b4e2b4; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del { + background-color: #521b1d83; + border-color: #691d1d73; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins { + background-color: rgba(30, 71, 30, 0.5); + border-color: #13501381; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-info { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + color: var(--text-normal); +} + +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { + background-color: #fdf2d0; +} + +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { + background-color: #55492480; +} + +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { + background-color: #ded; +} + +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { + background-color: rgba(37, 78, 37, 0.418); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper { + margin-bottom: 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a { + color: #3572b0; + text-decoration: none; +} + +.workspace-leaf-content[data-type="diff-view"] + .d2h-file-list-wrapper + a:visited { + color: #3572b0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header { + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title { + font-weight: 700; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list { + display: block; + list-style: none; + margin: 0; + padding: 0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { + border-bottom: 1px solid var(--background-modifier-border); + margin: 0; + padding: 5px 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { + border-bottom: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch { + cursor: pointer; + display: none; + font-size: 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-icon { + fill: currentColor; + margin-right: 10px; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-deleted { + color: #c33; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-added { + color: #399839; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-changed { + color: #d0b44c; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-moved { + color: #3572b0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-tag { + background-color: var(--background-primary); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 10px; + margin-left: 5px; + padding: 0 2px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag { + border: 2px solid #c33; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag { + border: 1px solid #399839; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag { + border: 1px solid #d0b44c; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag { + border: 1px solid #3572b0; +} + +/* ====================== Line Authoring Information ====================== */ + +.cm-gutterElement.obs-git-blame-gutter { + /* Add background color to spacing inbetween and around the gutter for better aesthetics */ + border-width: 0px 2px 0.2px 2px; + border-style: solid; + border-color: var(--background-secondary); + background-color: var(--background-secondary); +} + +.cm-gutterElement.obs-git-blame-gutter > div, +.line-author-settings-preview { + /* delegate text color to settings */ + color: var(--obs-git-gutter-text); + font-family: monospace; + height: 100%; /* ensure, that age-based background color occupies entire parent */ + text-align: right; + padding: 0px 6px 0px 6px; + white-space: pre; /* Keep spaces and do not collapse them. */ +} + +@media (max-width: 800px) { + /* hide git blame gutter not to superpose text */ + .cm-gutterElement.obs-git-blame-gutter { + display: none; + } +} + +.git-unified-diff-view, +.git-split-diff-view .cm-deletedLine .cm-changedText { + background-color: #ee443330; +} + +.git-unified-diff-view, +.git-split-diff-view .cm-insertedLine .cm-changedText { + background-color: #22bb2230; +} + +.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,'); +} + +.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,'); +} + +/* Override styling of Codemirror merge view "collapsed lines" indicator */ +.git-split-diff-view .ͼ2 .cm-collapsedLines { + background: var(--interactive-normal); + border-radius: var(--radius-m); + color: var(--text-accent); + font-size: var(--font-small); + padding: var(--size-4-1) var(--size-4-1); +} +.git-split-diff-view .ͼ2 .cm-collapsedLines:hover { + background: var(--interactive-hover); + color: var(--text-accent-hover); +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json new file mode 100644 index 0000000..e91db91 --- /dev/null +++ b/.obsidian/workspace.json @@ -0,0 +1,204 @@ +{ + "main": { + "id": "ec994ed12db82d87", + "type": "split", + "children": [ + { + "id": "e0578e41bd228cdb", + "type": "tabs", + "children": [ + { + "id": "4391c77430fca8f8", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "4.2/1.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "1" + } + }, + { + "id": "de165f0f9ededdcb", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "4.2/2.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "2" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "ffe8c4b94831212e", + "type": "split", + "children": [ + { + "id": "17ee7f46383d07b4", + "type": "tabs", + "children": [ + { + "id": "c7d6d5d21d68df06", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "a7dd44f06319ff4d", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "133762096bfd3b00", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "1aca95e9c21abecb", + "type": "split", + "children": [ + { + "id": "7ec0b972b1b93586", + "type": "tabs", + "children": [ + { + "id": "693d66113586cc4e", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "3_1/1.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks for 1" + } + }, + { + "id": "6de13a0184cb879d", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "3_1/1.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links from 1" + } + }, + { + "id": "757cb1589f578da0", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "83c6df4ad8ca5437", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "3_1/1.md", + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "Outline of 1" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "bases:Create new base": false, + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, + "obsidian-git:Open Git source control": false + } + }, + "active": "4391c77430fca8f8", + "lastOpenFiles": [ + "4.2/2.md", + "4.2/1.md", + "3_1/2.md", + "3_1/1-0.2.0.md", + "3_1/3practice.md", + "4.2", + "3_1/1v3correction.md", + "3_1/3v0.md", + "3_1/1v2.md", + "Untitled.base", + "Untitled 1.canvas", + "Untitled.canvas", + "3_1/1-0.1.0.md", + "Untitled 1.base" + ] +} \ No newline at end of file diff --git a/3_1/1-0.1.0.md b/3_1/1-0.1.0.md new file mode 100644 index 0000000..e3dcce0 --- /dev/null +++ b/3_1/1-0.1.0.md @@ -0,0 +1,163 @@ +Кооперативная +Вытесняющая - пример: процессор +преимуще + +для синтаксиса - объяснить, что вызов функции не исполняет ее сразу, как в js, а возвращает (пока что) какое-то значение, которое исполнит функцию по вызову .await на ней + +макрос - привести пример #[tokio::main] и #[tokio::main(...)] + +## Start: + +Допустим, перед вами стоит несколько задач, которые надо выполнить параллельно, но фокусироваться в один момент вы можете только одной задаче. По какой стратегии вы будете переключаться между этими задачами? + +## Кооперативная и вытесняющая многозадачность +Одним из вариантов, который может прийти в голову, это сделать небольшой прогресс в одной задаче, потом переключиться на вторую, сделать в ней небольшой прогресс, и так далее. Такая многозадачность, когда исполнитель решает момент, когда нужно переключаться между задачами, называется **вытесняющей** (так как одна задача как бы вытесняет другую). По такому принципу распределяют задачи на процессор все современные десктопные ОС. +А теперь представьте, что момент переключения на другую задачу решаете не вы, а сама задача. Такая многозадачность называется **кооперативной** (так как задачам приходится кооперировать друг с другом за процессорное время). + +Квиз-Одиночный выбор +В чем отличие кооперативной многозадачности от вытесняющей? +1. Исполнитель решает, когда переключаться между задачами + Нет, в кооперативной многозадачности момент переключения решают задачи, а не исполнитель +2. Задачи переключаются по истечению времени + Нет, задачи могут выполняться сколько угодно +3. Задачи решают, когда можно переключиться с них + Правильно, только задачи решают, когда переключаться и могут выполняться сколько угодно +4. Все задачи выполняются только в один поток + Нет, такого требования к кооперативности нет + +Квиз-Множественный выбор +У каких из этих задач кооперативная многозадачность? +1. Потоки процессов на Linux +2. У модема по adsl для звонков и интернета (пользоваться интернетом, пока идет звонок, нельзя) +3. Пер +4. Очередь на печать на принтере +5. Обработка +## Многозадачность в асинхронном rust +В rust для асинхронного кода выбрана кооперативная многозадачность. Такой выбор обоснован тем, что переключение между задачами в кооперативной многозадачности существенно быстрее, и дешевле по производительности обходится безопасность по памяти. Если бы многозадачность была вытесняющей, то при переключении задач пришлось бы выполнять дополнительные действия для сохранения состояния задачи, в то время как в кооперативной задачи сами отвечают за свое состояние. При этом у кооперативной многозадачности есть и недостатки: если задача зависает, то другие задачи не могут выполняться. Поэтому во всех современных десктопных ОС выбрана именно вытесняющая многозадачность, ведь иначе какой-нибудь процесс случайно или злонамеренно мог бы повесить всю систему. И поэтому при написании асинхронных функций нужно следить за тем, как долго они выполняются, и если возникает хоть немного занимающая время задача, ее нужно выносить в отдельный поток (в рантаймах есть встроенные инструменты для этого) + +Квиз-Множественный выбор +Выберите преимущества кооперативной многозадачности перед вытесняющей. +1. Задачи выполняются в порядке создания + Нет, задачи могут выполняться в любом порядке +2. Быстрее переключение между задачами + Да, реализация переключения при кооперативной многозадачности проще и быстрее, чем при вытесняющей +3. Идеальная предсказуемость времени выполнения задачи + Нет, кооперативная многозадачность не гарантирует идеальную предсказуемость выполнения. Более того, если одна из других задач будет долго исполняться, выполнение задачи тоже затянется +4. Из-за одной неправильной задачи случайно не остановятся другие + Нет, это преимущество вытесняющей многозадачности +5. Быстрее безопасное обращение к памяти + Да, благодаря предсказуемости момента переключения, задача успеет закончить свое обращение к памят + +## Синтаксис async/await +Для кооперативной многозадачности в самих задачах нужна логика для передачи управления. Для этого в rust существует синтаксис async/await, он выглядит так: +```rust +// создание асинхронной функции +async fn task1() { + do_something().await; // вызов асинхроной функции и ожидание результата от нее +} +``` +Сам по себе вызов такой функции (к примеру, просто `do_something()`) ничего не сделает. Для вызова асинхронной функции нужно использовать .await, если вызывать из асинхронной функции, либо вызывать из рантайма. +Для асинхронных замыканий тоже добавляется ключевое слово async: +```rust +let closure = async || { + do_something().await; +} +``` +Или, если нет аргументов, можно опустить `||`: +```rust +let closure = async { + do_something().await; +} +``` + +Квиз-Одиночный выбор +Что выведет данный код: +```rust +fn main() { + async { + + } +} +``` +1. Не скомпилируется +2. чтото +3. Ничего +4. другое что-то + +В rust нет встроенного рантайма, они все реализованы в виде библиотек. Самыми популярными являются tokio и smol (раньше еще был async-std, но он теперь discontinued). В данном уроке остановимся на tokio, так как он самый популярный. +Чтобы запустить асинхронный код с помошью tokio, можно использовать макрос tokio::main +```rust +#[tokio::main] +async fn main() { + do_something().await; +} +``` +По стандартным настройкам этом макрос cоздает многопоточный рантайм, поэтому он эквивалентен такому коду: +```rust +fn main() { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + do_something().await; + }) +} +``` +Данный код создает многопоточный рантайм tokio, запускает и ожидает завершения функции, переданной в Builder::block_on +`.enable_all()` отвечает за возможность использования всего IO tokio и tokio::time +Многопоточность в макросе указать явно можно так: +```rust +#[tokio::main(flavor = "multi_thread")] +async fn main() { + do_something().await; +} +``` +Так же в макросе можно указать количество потоков, на которых будут запускаться асинхронные функции (по умолчанию их столько же, сколько потоков в процессоре в системе): +```rust +#[tokio::main(flavor = "multi_thread", worker_threads = 8)] +async fn main() { + //... +} +``` +То же самое, но без макроса: +```rust +fn main() { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(8) + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` +Чтобы рантайм был однопоточным, можно в макросе указать параметр flavor: +```rust +#[tokio::main(flavor = "current_thread")] +async fn main() { + //... +} +``` +То же самое, но без макроса: +```rust +fn main() { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Квиз-Одиночный выбор +На скольких потоках будут запускаться асинхронные функции, если просто использовать макрос `#[tokio::main]`: +1. 1 +2. ошибка, нужно указать явно +3. 8 +4. сколько потоков в процессоре на данной системе + + diff --git a/3_1/1-0.2.0.md b/3_1/1-0.2.0.md new file mode 100644 index 0000000..9e81f09 --- /dev/null +++ b/3_1/1-0.2.0.md @@ -0,0 +1,221 @@ +ОР — Знает разницу между кооперативной и вытесняющей многозадачностью +Допустим, перед вами стоит несколько задач, которые надо выполнить параллельно, но фокусироваться в один момент вы можете только одной задаче. По какой стратегии вы будете переключаться между этими задачами? + +## Кооперативная и вытесняющая многозадачность + +Одним из вариантов, который может прийти в голову, это сделать небольшой прогресс в одной задаче, потом переключиться на вторую, сделать в ней небольшой прогресс, и так далее. Такая многозадачность, когда исполнитель решает момент, когда нужно переключаться между задачами, называется **вытесняющей** (так как одна задача как бы вытесняет другую). По такому принципу распределяют задачи на процессор все современные десктопные ОС. А теперь представьте, что момент переключения на другую задачу решаете не вы, а сама задача. Такая многозадачность называется **кооперативной** (так как задачам приходится кооперировать друг с другом за процессорное время). + +Квиз-Одиночный выбор + +В чем отличие кооперативной многозадачности от вытесняющей? + +Исполнитель решает, когда переключаться между задачами + +Нет, в кооперативной многозадачности момент переключения решают задачи, а не исполнитель + +Задачи переключаются по истечению времени + +Нет, задачи могут выполняться сколько угодно + +Задачи решают, когда можно переключиться с них + +Правильно, только задачи решают, когда переключаться и могут выполняться сколько угодно + +Все задачи выполняются только в один поток + +Нет, такого требования к кооперативности нет + +## Многозадачность в асинхронном rust + +ОР — Знает преимущества кооперативной многозадачности +В rust для асинхронного кода выбрана кооперативная многозадачность. Такой выбор обоснован тем, что переключение между задачами в кооперативной многозадачности существенно быстрее, и дешевле по производительности обходится безопасность по памяти. Если бы многозадачность была вытесняющей, то при переключении задач пришлось бы выполнять дополнительные действия для сохранения состояния задачи, в то время как в кооперативной задачи сами отвечают за свое состояние. При этом у кооперативной многозадачности есть и недостатки: если задача зависает, то другие задачи не могут выполняться. Поэтому во всех современных десктопных ОС выбрана именно вытесняющая многозадачность, ведь иначе какой-нибудь процесс случайно или злонамеренно мог бы повесить всю систему. И поэтому при написании асинхронных функций нужно следить за тем, как долго они выполняются, и если возникает хоть немного занимающая время задача, ее нужно выносить в отдельный поток (в рантаймах есть встроенные инструменты для этого) + +Квиз-Множественный выбор + +Выберите преимущества кооперативной многозадачности перед вытесняющей. + +Задачи выполняются в порядке создания + +Нет, задачи могут выполняться в любом порядке + +Быстрее переключение между задачами + +Да, реализация переключения при кооперативной многозадачности проще и быстрее, чем при вытесняющей + +Идеальная предсказуемость времени выполнения задачи + +Нет, кооперативная многозадачность не гарантирует идеальную предсказуемость выполнения. Более того, если одна из других задач будет долго исполняться, выполнение задачи тоже затянется + +Из-за одной неправильной задачи случайно не остановятся другие + +Нет, это преимущество вытесняющей многозадачности + +Быстрее безопасное обращение к памяти + +Да, благодаря предсказуемости момента переключения, задача успеет закончить свое обращение к памяти + +## Синтаксис async/await + +ОР — Умеет использовать async/await синтаксис + +Для кооперативной многозадачности в самих задачах нужна логика для передачи управления. Для этого в rust существует синтаксис async/await, он выглядит так: + +``` +// создание асинхронной функции +async fn task1() { + do_something().await; // вызов асинхроной функции и ожидание результата от нее +} +``` + +Сам по себе вызов такой функции (к примеру, просто `do_something()`) ничего не сделает. Для вызова асинхронной функции нужно использовать .await, если вызывать из асинхронной функции, либо вызывать из рантайма. Для асинхронных замыканий тоже добавляется ключевое слово async: + +``` + +let closure = async || { + do_something().await; +} +``` + +Или, если нет аргументов, можно опустить `||`: + +``` + +let closure = async { + do_something().await; +} +``` + +Квиз-Одиночный выбор + +Что выведет данный код: + +``` + +fn main() { + async { + println!("42"); + } +} +``` + +Не скомпилируется из-за синтаксической ошибки + +Нет, данный код полностью валидный и скомпилируется + +Не скомпилируется, так как асинхронный код нельзя вызывать из синхронной функции + +Нет, в данном случае просто создается асинхронное замыкание и ничего не вызывается через .await, поэтому код ничего не выведет + +Ничего + +Правильно, данный код просто создаст асинхронное замыкание, без его вызова + +Выведет в консоль 42 + +Нет, данный лишь создаст асинхронное замыкание, но не вызовет его, поэтому на экран не будет ничего выведено + +ОР — Умеет настраивать и запускать tokio runtime через макрос + +ОР — Умеет настраивать и запускать tokio runtime вручную + +В rust нет встроенного рантайма, они все реализованы в виде библиотек. Самыми популярными являются tokio и smol (раньше еще был async-std, но он теперь discontinued). В данном уроке остановимся на tokio, так как он самый популярный. Чтобы запустить асинхронный код с помошью tokio, можно использовать макрос tokio::main + +``` +#[tokio::main] +async fn main() { + do_something().await; +} +``` + +По стандартным настройкам этом макрос cоздает многопоточный рантайм, поэтому он эквивалентен такому коду: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + do_something().await; + }) +} +``` + +Данный код создает многопоточный рантайм tokio, запускает и ожидает завершения функции, переданной в Builder::block_on `.enable_all()` отвечает за возможность использования всего IO tokio и tokio::time Многопоточность в макросе указать явно можно так: + +``` +#[tokio::main(flavor = "multi_thread")] +async fn main() { + do_something().await; +} +``` + +Так же в макросе можно указать количество потоков, на которых будут запускаться асинхронные функции (по умолчанию их столько же, сколько потоков в процессоре в системе): + +``` +#[tokio::main(flavor = "multi_thread", worker_threads = 8)] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(8) + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Чтобы рантайм был однопоточным, можно в макросе указать параметр flavor: + +``` +#[tokio::main(flavor = "current_thread")] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Квиз-Одиночный выбор + +На скольких потоках будут запускаться асинхронные функции, если просто использовать макрос `#[tokio::main]`: + +1 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Ошибка, нужно указать явно + +Нет, указывать явно не нужно, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +8 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Столько, сколько потоков в процессоре на данной системе + +Правильно, без явного указания потоков будет столько же, сколько их в процессоре в системе \ No newline at end of file diff --git a/3_1/1v2.md b/3_1/1v2.md new file mode 100644 index 0000000..b532174 --- /dev/null +++ b/3_1/1v2.md @@ -0,0 +1,223 @@ +==Умеет порождать конкурентные задачи через spawn/join/select.== + +ОР — Знает разницу между кооперативной и вытесняющей многозадачностью +Допустим, перед вами стоит несколько задач, которые надо выполнить параллельно, но фокусироваться в один момент вы можете только одной задаче. По какой стратегии вы будете переключаться между этими задачами? + +## Кооперативная и вытесняющая многозадачность + +Одним из вариантов, который может прийти в голову, это сделать небольшой прогресс в одной задаче, потом переключиться на вторую, сделать в ней небольшой прогресс, и так далее. Такая многозадачность, когда исполнитель решает момент, когда нужно переключаться между задачами, называется **вытесняющей** (так как одна задача как бы вытесняет другую). По такому принципу распределяют задачи на процессор все современные десктопные ОС. А теперь представьте, что момент переключения на другую задачу решаете не вы, а сама задача. Такая многозадачность называется **кооперативной** (так как задачам приходится кооперировать друг с другом за процессорное время). + +Квиз-Одиночный выбор + +В чем отличие кооперативной многозадачности от вытесняющей? + +Исполнитель решает, когда переключаться между задачами + +Нет, в кооперативной многозадачности момент переключения решают задачи, а не исполнитель + +Задачи переключаются по истечению времени + +Нет, задачи могут выполняться сколько угодно + +Задачи решают, когда можно переключиться с них + +Правильно, только задачи решают, когда переключаться и могут выполняться сколько угодно + +Все задачи выполняются только в один поток + +Нет, такого требования к кооперативности нет + +## Многозадачность в асинхронном rust + +ОР — Знает преимущества кооперативной многозадачности +В rust для асинхронного кода выбрана кооперативная многозадачность. Такой выбор обоснован тем, что переключение между задачами в кооперативной многозадачности существенно быстрее, и дешевле по производительности обходится безопасность по памяти. Если бы многозадачность была вытесняющей, то при переключении задач пришлось бы выполнять дополнительные действия для сохранения состояния задачи, в то время как в кооперативной задачи сами отвечают за свое состояние. При этом у кооперативной многозадачности есть и недостатки: если задача зависает, то другие задачи не могут выполняться. Поэтому во всех современных десктопных ОС выбрана именно вытесняющая многозадачность, ведь иначе какой-нибудь процесс случайно или злонамеренно мог бы повесить всю систему. И поэтому при написании асинхронных функций нужно следить за тем, как долго они выполняются, и если возникает хоть немного занимающая время задача, ее нужно выносить в отдельный поток (в рантаймах есть встроенные инструменты для этого) + +Квиз-Множественный выбор + +Выберите преимущества кооперативной многозадачности перед вытесняющей. + +Задачи выполняются в порядке создания + +Нет, задачи могут выполняться в любом порядке + +Быстрее переключение между задачами + +Да, реализация переключения при кооперативной многозадачности проще и быстрее, чем при вытесняющей + +Идеальная предсказуемость времени выполнения задачи + +Нет, кооперативная многозадачность не гарантирует идеальную предсказуемость выполнения. Более того, если одна из других задач будет долго исполняться, выполнение задачи тоже затянется + +Из-за одной неправильной задачи случайно не остановятся другие + +Нет, это преимущество вытесняющей многозадачности + +Быстрее безопасное обращение к памяти + +Да, благодаря предсказуемости момента переключения, задача успеет закончить свое обращение к памяти + +## Синтаксис async/await + +ОР — Умеет использовать async/await синтаксис + +Для кооперативной многозадачности в самих задачах нужна логика для передачи управления. Для этого в rust существует синтаксис async/await, он выглядит так: + +``` +// создание асинхронной функции +async fn task1() { + do_something().await; // вызов асинхроной функции и ожидание результата от нее +} +``` + +Сам по себе вызов такой функции (к примеру, просто `do_something()`) ничего не сделает. Для вызова асинхронной функции нужно использовать .await, если вызывать из асинхронной функции, либо вызывать из рантайма. Для асинхронных замыканий тоже добавляется ключевое слово async: + +``` + +let closure = async || { + do_something().await; +} +``` + +Или, если нет аргументов, можно опустить `||`: + +``` + +let closure = async { + do_something().await; +} +``` + +Квиз-Одиночный выбор + +Что выведет данный код: + +``` + +fn main() { + async { + println!("42"); + } +} +``` + +Не скомпилируется из-за синтаксической ошибки + +Нет, данный код полностью валидный и скомпилируется + +Не скомпилируется, так как асинхронный код нельзя вызывать из синхронной функции + +Нет, в данном случае просто создается асинхронное замыкание и ничего не вызывается через .await, поэтому код ничего не выведет + +Ничего + +Правильно, данный код просто создаст асинхронное замыкание, без его вызова + +Выведет в консоль 42 + +Нет, данный лишь создаст асинхронное замыкание, но не вызовет его, поэтому на экран не будет ничего выведено + +ОР — Умеет настраивать и запускать tokio runtime через макрос + +ОР — Умеет настраивать и запускать tokio runtime вручную + +В rust нет встроенного рантайма, они все реализованы в виде библиотек. Самыми популярными являются tokio и smol (раньше еще был async-std, но он теперь discontinued). В данном уроке остановимся на tokio, так как он самый популярный. Чтобы запустить асинхронный код с помошью tokio, можно использовать макрос tokio::main + +``` +#[tokio::main] +async fn main() { + do_something().await; +} +``` + +По стандартным настройкам этом макрос cоздает многопоточный рантайм, поэтому он эквивалентен такому коду: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + do_something().await; + }) +} +``` + +Данный код создает многопоточный рантайм tokio, запускает и ожидает завершения функции, переданной в Builder::block_on `.enable_all()` отвечает за возможность использования всего IO tokio и tokio::time Многопоточность в макросе указать явно можно так: + +``` +#[tokio::main(flavor = "multi_thread")] +async fn main() { + do_something().await; +} +``` + +Так же в макросе можно указать количество потоков, на которых будут запускаться асинхронные функции (по умолчанию их столько же, сколько потоков в процессоре в системе): + +``` +#[tokio::main(flavor = "multi_thread", worker_threads = 8)] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(8) + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Чтобы рантайм был однопоточным, можно в макросе указать параметр flavor: + +``` +#[tokio::main(flavor = "current_thread")] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Квиз-Одиночный выбор + +На скольких потоках будут запускаться асинхронные функции, если просто использовать макрос `#[tokio::main]`: + +1 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Ошибка, нужно указать явно + +Нет, указывать явно не нужно, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +8 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Столько, сколько потоков в процессоре на данной системе + +Правильно, без явного указания потоков будет столько же, сколько их в процессоре в системе \ No newline at end of file diff --git a/3_1/1v3correction.md b/3_1/1v3correction.md new file mode 100644 index 0000000..541ddb7 --- /dev/null +++ b/3_1/1v3correction.md @@ -0,0 +1,420 @@ +==Умеет порождать конкурентные задачи через spawn/join/select. + +Асинхронность позволяет эффективно управлять многозадачностью, как и многопоточная программа. Но отличие от многопоточного синхронного кода, асинхронный код позволяет выполнять несколько операций одновременно в одном потоке, что позволяет приложениям, работающих с сетью или файловыми системами, использовать вычислительные ресурсы эффективнее. +В этой теме мы рассмотрим два типа многозадачности: кооперативную и вытесняющую. Также мы научимся использовать синтаксис async/await, который используется для написания асинхронного кода в Rust. Вы узнаете, как компилятор обрабатывает асинхронный код и что происходит под капотом. +Научимся запускать асинхронные задачи используя tokio, работать с неблокирующими примитивами для сети и файлов, а также порождать конкурентные задачи через spawn/join/select. Всё это поможет создавать быстрые и эффективные асинхронные приложения. + +ОР — Знает разницу между кооперативной и вытесняющей многозадачностью +Допустим, перед вами стоит несколько задач, которые надо выполнить параллельно, но фокусироваться в один момент вы можете только одной задаче. По какой стратегии вы будете переключаться между этими задачами? + +## Кооперативная и вытесняющая многозадачность + +Одним из вариантов, который может прийти в голову, это сделать небольшой прогресс в одной задаче, потом переключиться на вторую, сделать в ней небольшой прогресс, и так далее. Такая многозадачность, когда исполнитель решает момент, когда нужно переключаться между задачами, называется **вытесняющей** (так как одна задача как бы вытесняет другую). По такому принципу распределяют задачи на процессор все современные десктопные ОС. А теперь представьте, что момент переключения на другую задачу решаете не вы, а сама задача. Такая многозадачность называется **кооперативной** (так как задачам приходится кооперировать друг с другом за процессорное время). + +И у кооперативной многозадачности есть несколько преимуществ. Во первых, реализация такой многозадачности проще, что позволяет быстрее переключаться между задачами. Второе, это упрощение синхронизации по памяти: задачи сами управляют моментом переключения, так что они успевают завершить запись в память, а при вытесняющей переключение может произойти посреди записей и память будет невалидной для других задач. + +Квиз-Одиночный выбор + +В чем отличие кооперативной многозадачности от вытесняющей? + +Исполнитель решает, когда переключаться между задачами + +Нет, в кооперативной многозадачности момент переключения решают задачи, а не исполнитель + +Задачи переключаются по истечению времени + +Нет, задачи могут выполняться сколько угодно + +Задачи решают, когда можно переключиться с них + +Правильно, только задачи решают, когда переключаться и могут выполняться сколько угодно + +Все задачи выполняются только в один поток + +Нет, такого требования к кооперативности нет + +## Многозадачность в асинхронном rust + +ОР — Знает преимущества кооперативной многозадачности +В rust для асинхронного кода выбрана кооперативная многозадачность. Такой выбор обоснован тем, что переключение между задачами в кооперативной многозадачности существенно быстрее, и дешевле по производительности обходится безопасность по памяти. Если бы многозадачность была вытесняющей, то при переключении задач пришлось бы выполнять дополнительные действия для сохранения состояния задачи, в то время как в кооперативной задачи сами отвечают за свое состояние. При этом у кооперативной многозадачности есть и недостатки: если задача зависает, то другие задачи не могут выполняться. Поэтому во всех современных десктопных ОС выбрана именно вытесняющая многозадачность, ведь иначе какой-нибудь процесс случайно или злонамеренно мог бы повесить всю систему. И поэтому при написании асинхронных функций нужно следить за тем, как долго они выполняются, и если возникает хоть немного занимающая время задача, ее нужно выносить в отдельный поток (в рантаймах есть встроенные инструменты для этого) + +Квиз-Множественный выбор + +Выберите преимущества кооперативной многозадачности перед вытесняющей. + +Задачи выполняются в порядке создания + +Нет, задачи могут выполняться в любом порядке + +Быстрее переключение между задачами + +Да, реализация переключения при кооперативной многозадачности проще и быстрее, чем при вытесняющей + +Идеальная предсказуемость времени выполнения задачи + +Нет, кооперативная многозадачность не гарантирует идеальную предсказуемость выполнения. Более того, если одна из других задач будет долго исполняться, выполнение задачи тоже затянется + +Из-за одной неправильной задачи случайно не остановятся другие + +Нет, это преимущество вытесняющей многозадачности + +Быстрее безопасное обращение к памяти + +Да, благодаря предсказуемости момента переключения, задача успеет закончить свое обращение к памяти + +## Синтаксис async/await + +ОР — Умеет использовать async/await синтаксис + +Для кооперативной многозадачности в самих задачах нужна логика для передачи управления. Для этого в rust существует синтаксис async/await, он выглядит так: + +``` +// создание асинхронной функции +async fn task1() { + do_something().await; // вызов асинхроной функции и ожидание результата от нее +} +``` + +Сам по себе вызов такой функции (к примеру, просто `do_something()`) ничего не сделает. Для вызова асинхронной функции нужно использовать .await, если вызывать из асинхронной функции, либо вызывать из рантайма. Для асинхронных замыканий тоже добавляется ключевое слово async: + +``` + +let closure = async || { + do_something().await; +} +``` + +Или, если нет аргументов, можно опустить `||`: + +``` + +let closure = async { + do_something().await; +} +``` + +Кстати, так же, как и для синхронных сокрытий существуют трейты FnOnce, FnMut и Fn, для асинхронных реализованы AsyncFnOnce, AsyncFnMut, AsyncFn аналогично + +Квиз-Одиночный выбор + +Что выведет данный код: + +``` + +fn main() { + async { + println!("42"); + } +} +``` + +Не скомпилируется из-за синтаксической ошибки + +Нет, данный код полностью валидный и скомпилируется + +Не скомпилируется, так как асинхронный код нельзя вызывать из синхронной функции + +Нет, в данном случае просто создается асинхронное замыкание и ничего не вызывается через .await, поэтому код ничего не выведет + +Ничего + +Правильно, данный код просто создаст асинхронное замыкание, без его вызова + +Выведет в консоль 42 + +Нет, данный лишь создаст асинхронное замыкание, но не вызовет его, поэтому на экран не будет ничего выведено + +ОР — Умеет настраивать и запускать tokio runtime через макрос + +ОР — Умеет настраивать и запускать tokio runtime вручную + +В rust нет встроенного рантайма, они все реализованы в виде библиотек. Самыми популярными являются tokio и smol (раньше еще был async-std, но он теперь discontinued). В данном уроке остановимся на tokio, так как он самый популярный. Чтобы запустить асинхронный код с помошью tokio, можно использовать макрос tokio::main + +``` +#[tokio::main] +async fn main() { + do_something().await; +} +``` + +По стандартным настройкам этом макрос cоздает многопоточный рантайм, поэтому он эквивалентен такому коду: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + do_something().await; + }) +} +``` + +Данный код создает многопоточный рантайм tokio, запускает и ожидает завершения функции, переданной в Builder::block_on `.enable_all()` отвечает за возможность использования всего IO tokio и tokio::time Многопоточность в макросе указать явно можно так: + +``` +#[tokio::main(flavor = "multi_thread")] +async fn main() { + do_something().await; +} +``` + +Так же в макросе можно указать количество потоков, на которых будут запускаться асинхронные функции (по умолчанию их столько же, сколько потоков в процессоре в системе): + +``` +#[tokio::main(flavor = "multi_thread", worker_threads = 8)] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_multi_thread() + .worker_threads(8) + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Чтобы рантайм был однопоточным, можно в макросе указать параметр flavor: + +``` +#[tokio::main(flavor = "current_thread")] +async fn main() { + //... +} +``` + +То же самое, но без макроса: + +``` + +fn main() { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + //... + }) +} +``` + +Квиз-Одиночный выбор + +На скольких потоках будут запускаться асинхронные функции, если просто использовать макрос `#[tokio::main]`: + +1 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Ошибка, нужно указать явно + +Нет, указывать явно не нужно, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +8 + +Нет, по умолчанию tokio будет запускать задачи на стольких потоках, сколько потоков у процессора в системе + +Столько, сколько потоков в процессоре на данной системе + +Правильно, без явного указания потоков будет столько же, сколько их в процессоре в системе + +## Конкурентность +А теперь, попробуем понаписать асинхронный код. Пускай у нас будет две такие функции: +```rust +use tokio::time::sleep; +use std::time::Duration; + +async fn task1() { + sleep(Duration::from_millis(1000)).await; + print("task1"); +} + +async fn task2() { + sleep(Duration::from_millis(500)).await; + print("task2"); +} +``` +Попробуем их вызвать? +```rust +#[tokio::main] +async fn main() { + let res1 = task1().await; + let res2 = task2().await; +} +``` +Попробуйте запустить. Выполнение происходит последовательно. А как нам вызвать их так, чтобы задачи выполнялись параллельно? На помощь вам придут spawn, {{join и select}}[join и select не зависят от рантайма, поэтому представлены в tokio, futures, smol, а join еще и в стандартной библиотеке (пока эксперементально)]. Каждый из них выполняет разные задачи, но одинаковую роль: параллельное исполнение задач, давайте разберем каждого из них! +### join! +Макрос join ожидает окончания выполнения всех фьючерсов, переданных ему, а потом возвращает результат их всех +```rust +#[tokio::main] +async fn main() { + let (res1, res2) = tokio::join!( + task1(), + task2(), + ) +} +``` +А еще, в библиотеке futures, есть функция join_all, которая делает то же самое, но на вход она принимает итератор по фьючерсам: +```rust +use futures::future::join_all; + +async fn foo(i: u32) -> u32 { i } + +let futures = vec![foo(1), foo(2), foo(3)]; + +assert_eq!(join_all(futures).await, [1, 2, 3]); +``` +### select! +Макрос select ожидает окончания выполнения одного из фьючерсов, и возвращает его значение, которое можно обработать, как в синтаксисе match: +```rust +#[tokio::main] +async fn main() { + let res = tokio::select! { + res1 = task1() => { + // возможность выполнения логики + res1 + }, + res2 = task2() => res2, + }; +} +``` +При этом, выполнение второго фьючерса ==отменится==. (Кстати, про то, какие фьючерсы не стоит отменять будет рассказано в следующем уроке). К примеру, с помощью select можно отменять ожидание UDP пакета с таймаутом: +```rust +use tokio::net::UdpSocket; +use tokio::time::sleep; +use std::io; + +#[tokio::main] +async fn main() -> io::Result<()> { + let sock = UdpSocket::bind("0.0.0.0:8080").await?; + let mut buf = [0; 1024]; + loop { + tokio::select! { + data = sock.recv_from(&mut buf) => { + let (len, addr) = data?; + println!("{:?} bytes received from {:?}", len, addr); + } + _ = sleep(Duration::from_secs(10)) => {} + } + } +} + +``` +### spawn +Функция spawn добавит задачу в очередь задач tokio, и при свободном исполнителе, запустит задачу. А если текущий рантайм tokio многопоточный, то это позволит использовать многопоточность, так как задачи, созданные через spawn, tokio может распределять между потоками. Так же возвращает JoinHandle, аналогичные по функционалу JoinHandle из стандартной библиотеки. Но, функцию невозможно выполнить из других рантаймов. +```rust +#[tokio::main] +async fn main() { + let handle = tokio::spawn(async { + println!("spawned"); + }); + // main может напечататься и до spawned, и после + // то есть примерно такое же поведение, как и у многопоточности + println!("main"); + // Дождаться завершения можно вызвав .await, + // (как .join() в std::thread::JoinHandle) + handle.await.unwrap(); +} +``` +Квиз-Одиночный выбор +Что произойдет с остальными фьючерсами, переданными в select, кроме того, из которого получили значение? +1. Будет ожидание их завершения + Нет, их исполнение отменится +2. Отменятся + Правильно, их исполнение отмениться (вызовется) +3. Продолжат исполняться параллельно + Нет, их выполнение отменится +4. Останутся в том состоянии, котором были + Нет, их выполнение отменится +Квиз-Одиночный выбор +Что делает макрос tokio::join? +5. join возвращает итератор значений, возвращаемых из фьючерсов + Нет, он вернет все значения после окончания исполнения фьючерсов +6. Будет ожидание завершения всех фьючерсов, потом вернутся все значения + Правильно, он вернет все значения +7. Ждет выполнения одного фьючерса, потом возвращает его значение, а остальные отменяет + Нет, таково поведение макроса select, join же ожидает выполнения всех фьючерсов +8. Добавит фьючерсы в очередь задач tokio + Нет, такова роль функции tokio::spawn. join будет просто ожидать выполнения всех фьючерсов одновременно +## Практика: мини-бэкенд +Попробуйте написать функцию handle_connections, которая будет выполнять переданные ей фьючерсы с помощью tokio::spawn: +```rust +use futures::future::join_all; +use std::time::Duration; +use tokio::time::sleep; + +// напишите здесь асинхронную функцию handle_connections + +// Тесты +#[tokio::main] +async fn main() { + use std::time::Instant; + + let connections = { + let mut connections = Vec::new(); + for i in 0..10 { + let connection = async move { + sleep(Duration::from_millis(100)).await; + println!("Hello from connection {i}"); + }; + connections.push(connection); + } + connections + }; + + let start = Instant::now(); + handle_connections(connections).await; + let end = start.elapsed(); + + assert!(end < Duration::from_millis(500)) +} +``` +### Подсказки +- tokio::spawn запускает фьючерс без вызова .await +- При завершении программы все потоки завершатся без ожидания задач в них +- .await на JoinHandle, полученом от tokio::spawn, будет ожидать завершения потока +- join_all позволяет ожидать выполнения всех фьючерсов в переданном итераторе +Проверьте свой код по чек-листу: +Механика квиз-множественный выбор (все ответы верные, без фидб==э==ков) +- [ ] Используется tokio::spawn +- [ ] Задачи выполняются параллельно +- [ ] 10 раз печатается `Hello from connection {i}` +- [ ] Тест проходит +### Решение +```rust +async fn handle_connections(connections: I) +where + ::Output: Send + 'static, + I: IntoIterator, + F: Future + Send + 'static, +{ + let mut handles = Vec::new(); + for connection in connections.into_iter() { + let handle = tokio::spawn(connection); + handles.push(handle); + } + join_all(handles).await; +} +``` +tokio::spawn запускает фьючерс без вызова .await +При завершении программы все потоки завершатся без ожидания задач в них +.await на JoinHandle, полученом от tokio::spawn, будет ожидать завершения потока +join_all позволяет ожидать выполнения всех фьючерсов в переданном итераторе +Проверьте свой код по чек-листу: +Механика квиз-множественный выбор (все ответы верные, без фидб==э==ков) +Используется tokio::spawn +Задачи выполняются параллельно +10 раз печатается `Hello from connection {i}` +Тест проходит \ No newline at end of file diff --git a/3_1/2.md b/3_1/2.md new file mode 100644 index 0000000..9a5725c --- /dev/null +++ b/3_1/2.md @@ -0,0 +1,540 @@ +ОРы: +Знает как работает трейт Future. +Знает, как компилятор преобразует асинхронный код. +Понимает, зачем нужен Pinning. +Умеет использовать трейт-объекты Box\. +Понимает, как асинхронный рантайм выполняет задачи. +Может написать свою реализацию Future. + + +Пример идеи фьючерсов и полинга на примере общения/пинга менеджера +## Асинхронность под капотом + +io - epoll + timeout +time / nothing - futex + timeout + +## Трейт Future + +## Start +В прошлом уроке мы узнали, как писать асинхронный код в rust. Но как же он работает под капотом? +Выполнение асинхронного кода происходит по запросу, выглядит примерно так: +Происходит запрос к Future, может ли он сейчас выполнить работу и выдать результат. Также Future получает референс на контекст, который + +## Концепция асинхронности в Rust +В rust асинхронные функции выполняются лениво. При вызове асинхронной функции они выполняют различные вычисления, до того, пока не произойдет io-bound задачи, на которой они передадут выполнение исполнителю, а выполнение функции продолжится когда она вызовет waker +Если функция не может вернуть окончательное значение, +При этом вызов waker означает, что значение может быть готово + +В основе асинхронности в rust лежит трейт Future. +Future — это значение, которое ещё может быть не вычислено до конца. +## Ignore this: +## --- +## Интерфейс асинхронной функции +Каждая асинхронная функция в rust превращается в обычную функцию, которая выдает некоторую машину состояний (создается приватный тип, который известен только компилятору, примерно как с сокрытиями), для которой реализован трейт Future. +## --- + +## Start 2 +В прошлом уроке мы узнали про то, что асинхронность в rust реализована через кооперативную многозадачность, а значит задачи должны cами передавать управление потоком. Но как же это происходит в асинхронной функции? Ведь в ней мы делаем возврат из функции только с готовыми значениями. На самом деле async/await это лишь синтаксический сахар, и компилятор сильно преобразует то, что написано в асинхронной функции. +## Трейт Future +ОР - Знает как работает трейт Future. +Для начала мы разберем трейт Future, который позволяет реализовать кооперативность. Его интерфейс весьма прост и состоит лишь из одного метода poll. Вот определение трейта: +```rust +pub trait Future { + type Output; + + // Required method + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll; +} +``` +poll означает запрос, может ли future выдать прямо сейчас готовое значение. Если да, то возвращается значение Poll::Ready(val), если нет, то Poll::Pending (подобно на Option). Возврат Poll::Pending и является моментом передачи управления потоком от задачи исполнителю и означает, что нужный для исполнения ресурс пока не доступен и нужно подождать (к примеру, попытка подключения к сокету и ожидание, пока соединение установится). Но сколько же исполнителю нужно ждать? Для этого в метод poll передается специальная структура `Waker`, через которую исполнителя можно уведомить, что возможно выполнить прогресс по задаче, вызвав `Waker.wake()` или `Waker.wake_by_ref()`. Получить `Waker` можно через `Context`, переданный в метод poll, вызвав `Context.waker()` (пока `Context` используется только для получения `Waker`). Этот `Waker` уже обычно передается куда-нибудь, что сможет вызывать `Waker` по возможной готовности ресурса (потому что сам future уже вернул управление и никак не может выполнить никакой код). +Трейт Future реализован для всех асинхронных функций. На самом деле, когда мы вызываем метод tokio::runtime::Runtime::block_on, мы просто вызываем poll до тех пор, пока он не вернет Poll::Ready(val). + +Квиз +ОР - Знает как работает трейт Future. +Какой метод вызывается, если исполнитель знает, что можно сделать прогресс у задачи? +1. Future::poll + Верно, это метод, который обозначает запрос и позволяет узнать, выполнена ли до конца задача +2. Waker::wake_by_ref + Нет, хоть эта функция и создана для уведомления о возможности прогресса по задаче, сделана она концептуально для вызова со стороны задачи для уведомления исполнителя о готовности +3. Poll::Pending + Нет, это возвращаемое значение, которое означает, что задача еще до конца не выполнена +## Практика +ОР - Понимает, как асинхронный рантайм выполняет задачи. +Попробуем написать свой мини-tokio. Для этого создадим новый проект через cargo, добавив в зависимости waker-fn и smol. smol - это рантайм, очень похожий на tokio, но в отличии от него, позволяет исполняться своим функциям не в своих рантаймах. Нам в данном примере от него нужны только асинхронные функции для I/O. +Для примера, попробуем выполнить простую асинхронную функцию: +```rust +async fn read_toml() -> String { + smol::fs::read_to_string("./Cargo.toml").await.unwrap() +} +``` +Пока эту функцию можно воспринимать аналогично этой: +```rust +fn read_toml() -> impl Future { + async { + smol::fs::read_to_string("./Cargo.toml").await.unwrap() + } +} +``` +То есть, при вызове `read_toml()`, мы получим что-то, что реализует трейт Future (это будет приватный тип, известный только компилятору). На полученном значении мы и будем вызывать poll: +```rust +use std::task::{Context, Waker}; + +fn main() { + // Создание контекста с Waker, который при вызове ничего не делает + let waker = Waker::noop(); + let mut cx = Context::from_waker(waker); + + let future = read_toml(); + // Про Pin будет ниже, пока это расматривайте как требование для поллинга фьючерсов + let mut future = std::pin::pin!(future); + loop { + match future.as_mut().poll(&mut cx) { + std::task::Poll::Pending => { + println!("Pending future"); + } + std::task::Poll::Ready(value) => { + println!("Ready! value:\n{value}"); + break; + } + } + } +} + +``` +Попробуем запустить код. Он успешно вывел файл! Но у нашего рантайма есть проблема - он никогда не ожидает готовности ресурсов, что приводит к бесмысленной трате процессорного времени. Попробуем это оптимизировать: будем отправлять поток в сон, пока не вызовется Waker: +```rust +use std::task::{Context, Waker}; +use waker_fn::waker_fn; + +async fn read_toml() -> String { + smol::fs::read_to_string("./Cargo.toml").await.unwrap() +} + +fn main() { + let (waker, wait) = make_waker(); + let mut cx = Context::from_waker(&waker); + + let future = read_toml(); + let mut future = std::pin::pin!(future); + loop { + match future.as_mut().poll(&mut cx) { + std::task::Poll::Pending => { + println!("Pending future"); + } + std::task::Poll::Ready(value) => { + println!("Ready! value:\n{value}"); + break; + } + } + wait(); + } +} + +/// Returns (waker, wait) +fn make_waker() -> (Waker, impl Fn()) { + let t = std::thread::current(); + let waker = waker_fn(move || { + t.unpark(); + }); + let wait = move || { + // Go to sleep and wait + std::thread::park(); + }; + (waker, wait) +} + +``` +(Здесь для упрощения примера используется крейт waker-fn, но Waker можно собирать и без него) +При исполнении результат будет таким же, но poll не будет вызываться бессмысленно кучу раз. Если сравнить вывод, то теперь `Pending future` вывелся только один раз, хотя в прошлый раз он вывелся очень много раз. Заметьте, это не означает, что poll всегда возвращает Pending только один раз, это значение может возвращаться сколь угодно раз, пока не получится вернуть значение Ready. +Данный пример сильно упрощен. На деле рантаймы не просто засыпают, а делают определенный syscall, который вернется при доступности одного из запрошенных ресурсов +Квиз +ОР - Понимает, как асинхронный рантайм выполняет задачи. +Мульти: Когда рантайм вызовет Future::poll? +1. В первый раз по возможности + Правильно, для первого вызова poll ничего делать не надо +2. Сразу после предыдущего вызова poll + Нет, рантайм будет ждать, пока не вызовется waker +3. Когда не будет других задач для выполнения + Нет, рантайм без задач рантайм отправится в ожидание +4. После вызова Waker когда исполнитель освободится + Правильно, после этого вызова исполнитель будет знать, что в исполнении задачи может произойти прогресс, и вызовет тогда, когда освободится от других задач +5. Сразу после вызова Waker + Нет, poll вызовется только тогда, когда исполнитель освободится от других задач +## Трейт Future +ОР - Знает как работает трейт Future. +ОР - Может написать свою реализацию Future. +А теперь подойдем к реализации асинхронности со стороны задачи. Попробуем написать свое асинхронное ожидание промежутка времени используя трейт Future. Создадим функцию +```rust +fn wait_for(duration: Duration) -> impl Future { + WaitFor { duration } +} + +struct WaitFor { + duration: Duration, +} +``` +Теперь попробуем реализовать Future. Пускай для начала просто возвращает Pending: +```rust +impl Future for WaitFor { + type Output = (); + + fn poll(self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> std::task::Poll { + std::task::Poll::Pending + } +} +``` +Заметьте, как функция `wait_for` по определению похожа на функцию `read_toml`, что мы определяли ранее. Из-за того, что мы возвращаем фьючерс, это функция является асинхронной. Поэтому мы можем вызывать на ней .await! (который, по сути, является просто синтаксическим сахаром для поллинга) +Для этого напишем такой main: +```rust +#[tokio::main] +async fn main() { + println!("Before wait"); + wait_for(std::time::Duration::from_secs(2)).await; + println!("After wait"); +} +``` +Задание: попробуйте написать то же самое по функциональности, но используя рантайм, который мы только что написали сами +Попробуем запустить, программа такой результат: +``` +Before wait +``` + +`After wait` не вывелся, так как Future продолжит исполняться только после вызова Waker (не не обязательно сразу после вызова, так как исполнитель может быть занят другими задачами, и задача не начнет исполняться, пока исполнитель не освободится, так как у нас кооперативная многозадачность). Попробуем вызвать Waker по истечению нужного промежутка времени. Для простоты примера, будет вызываться отдельный поток, но обычно в рантаймах Waker передается в собственный I/O event loop, который вызовет Waker при выполнении нужных условий. +```rust + fn poll( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll { + let waker = cx.waker().clone(); + let duration = self.duration; + std::thread::spawn(move || { + std::thread::sleep(duration); + waker.wake(); + }); + std::task::Poll::Pending + } +``` + +Попробуем вызвать, но в консоли все еще выводится только `Before wait`. Почему так происходит? На самом деле наш poll вызывается, в данном случае, раз в две секунды (потому что создаем поток, который через 2 секунды вызывает Waker), Но мы никогда не возвращаем Ready. Попробуем это исправить: +```rust +struct WaitFor { + duration: Duration, + waited: bool, +} + +fn wait_for(duration: Duration) -> WaitFor { + WaitFor { duration, waited: false } +} + +impl Future for WaitFor { + type Output = (); + + fn poll( + mut self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll { + if self.waited { + return std::task::Poll::Ready(()); + } + self.waited = true; + let waker = cx.waker().clone(); + let duration = self.duration; + std::thread::spawn(move || { + std::thread::sleep(duration); + waker.wake(); + }); + std::task::Poll::Pending + } +} +``` +Попробуем запустить: +``` +Before wait +After wait +``` +Ура! 🎉 Теперь мы получили ожидаемый результат. + +Квиз +ОР - Может написать свою реализацию Future. +Какой вызов Future всегда является последним? +1. Когда возвращает Self::Output + Нет, фьючерс никогда не может просто вернуть Self::Output. Вместо этого по готовности возвращается Poll::Ready(Self::Output) +2. Когда возвращает Poll::Ready(Self::Output) + Правильно, после возврата Poll::Ready(Self::Output) фьючерс больше не должен вызываться +3. Когда возвращает Poll::Pending + Нет, Poll::Pending возвращается во все вызовы, кроме последнего, в котором возвращается Poll::Ready(Self::Output) +4. Следующий за вызовом Waker + Нет, после вызова Waker фьючерс может вызваться сколь угодно раз +## Преобразование синтаксиса async/await в Future +ОР - Знает, как компилятор преобразует асинхронный код. +Теперь, зная что async/await просто превращается во фьючерс, посмотрим, как это происходит на примере такой функции: +```rust +async fn wait() -> usize { + tokio::task::yield_now().await; + 67 +} +``` +На самом деле, при компиляции она превратится в некую машину состояний: (это псевдокод, так как написать в точности, как будет скомпилировано, невозможно) +```rust +fn wait() -> Wait { + Wait::new() +} + +struct Wait { + state: u8, + yield_now: typeof, +} + +impl Wait { + fn new() -> Self { + unsafe { std::mem::zeroed() } + } +} + +impl Future for Wait { + type Output = usize; + + fn poll(self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> std::task::Poll { + use std::task::Poll; + + loop { + match self.state { + 0 => { + self.yield_now = tokio::task::yield_now(); + self.state += 1; + }, + 1 => { + match self.yield_now.poll() { + Poll::Pending => return Poll::Pending + Poll::Ready(_) => { + self.state += 1; + } + } + }, + 2 => { + self.state += 1; + return Poll::Ready(67) + } + _ => panic!("wait called after completion") + } + } + } +} + +``` +Квиз +ОР - Знает, как компилятор преобразует асинхронный код. +Допустим, у нас есть такая функция: +```rust +async fn number() -> usize { + 42 +} +``` +Что вернет первый вызов Future::poll на ней? +1. 42 + Нет, poll всегда возвращает значение типа Poll, в данном случае вернется Poll::Ready(42) +2. Poll::Pending + Нет, в данном случае значение сразу готово, так как нет .await поинтов, и при первом же вызове вернется Poll::Ready(42) +3. Poll::Ready(42) + Верно, первый вызов сразу же вернет это значение, так как значение будет сразу готово +## Pin +ОР - Понимает, зачем нужен Pinning. +Заметили, что poll везде принимает загадочный тип Pin? Давайте разберем данную функцию: +```rust +async fn selfreferential() { + let value = 1; + let refvalue = &value; + tokio::task::yield_now().await; + println!("value by ref: {}", refvalue); +} +``` +Как для нее будет выглядеть тип, как из примера выше? +```rust +struct Selfreferential { + value: u32,<----| // refvalue ссылается на value + refvalue: &u32,-| + yield_now: typeof, +} +``` +Что произойдет, если для нее выполнить самое обычное перемещение в памяти? референс refvalue станет невалидным! Ведь референс уже будет указывать на невалидную область памяти. А для раста это недопустимо. Поэтому для вызова асинхронной функции требуется Pin: он принимает указатель на объект и дает гарантии, что объект под этим указателем не будет перемещен в памяти + +Квиз +ОР - Понимает, зачем нужен Pinning. +Если бы для вызова асинхронной функции не требовался тип Pin, какая проблема возникала бы? +1. Было бы не безопасно использовать указатели + Правильно +2. Асинхронные функции не могли бы вызывать друг друга + Нет,вызов не связан с пиннингом. Pin нужен для управления размещением в памяти, а не для вызовов функций. +3. Выполнение асинхронного кода стало бы значительно медленнее + Нет, Pin — это механизм безопасности, а не оптимизации. Его наличие или отсутствие не влияет напрямую на скорость выполнения, только на корректность и безопасность доступа к данным +4. Future не смог бы хранить ссылки на другие Future + Нет, можно хранить ссылки между Future, если соблюдены правила заимствования. Pin лишь гарантирует, что объект не будет перемещён, но не ограничивает владение +## Асинхронная рекурсия +ОР - Умеет использовать трейт-объекты Box\. +Допустим, вы решили написать асинхронную рекурсивную функцию. Пускай она выглядит так: +```rust +async fn recursion() { + recursion().await; +} +``` +Как будет выглядеть тип для нее (по примеру с Wait из примера выше)? Кажется, вот так: +```rust +struct Recursion { + state: u8, + recursion: Recursion, +} +``` +Но вложенные структуры невозможны, так как тогда они будут бесконечного размера. Тут на помощь приходит Box: +```rust +struct Recursion { + state: u8, + recursion: Box, +} +``` +Не забываем, что для вызова нам потом нужен будет Pin, поэтому определение будет такое: +```rust +struct Recursion { + state: u8, + recursion: Pin, +} +``` + И фьючерс стал конечного размера. В самой функции это будет выглядеть так: +```rust +async fn recursion() { + Box::pin(recursion()).await; +} +``` +Квиз +ОР - Умеет использовать трейт-объекты Box\. +Без какого типа можно создать простую асинхронную функцию, но не создать синхронную? +1. Future + Нет, Future нужен для всех асинхронных функций, а еще Future - это трейт +2. Pin + Нет, Pin нужен для вызова poll на всех фьючерсах +3. Box + Правильно, благодаря нему фьючерс не будет бесконечно большим + +## Практика +Порой, выполнение функции по времени нужно ограничить. Попробуйте написать такой таймаут! +```rust +use std::{ + pin::Pin, + task::{Context, Poll}, + time::Duration, +}; + +use tokio::time::Sleep; + +#[derive(Debug)] +enum TimeoutFuture { + Result(O), + Timeout, +} + +fn timeouted_read( + timeout: Duration, + future: F, +) -> TimeoutedFuture<::IntoFuture> { + let future = future.into_future(); + let sleep = tokio::time::sleep(timeout); + TimeoutedFuture { future, sleep } +} + +struct TimeoutedFuture { + future: F, + sleep: Sleep, +} + +impl TimeoutedFuture { + fn future(self: Pin<&mut Self>) -> Pin<&mut F> { + unsafe { self.map_unchecked_mut(|s| &mut s.future) } + } + + fn sleep(self: Pin<&mut Self>) -> Pin<&mut Sleep> { + unsafe { self.map_unchecked_mut(|s| &mut s.sleep) } + } +} + +impl Future for TimeoutedFuture { + type Output = TimeoutFuture; + + fn poll(mut self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + // Релеазуйте метод poll + } +} + +// Тесты +#[tokio::main] +async fn main() { + let instant = async { 0 }; + let result = timeouted_read(Duration::from_millis(123), instant).await; + println!("Result: {result:?}"); // Result(0) + + let wait100 = async { + let delay = 100; + tokio::time::sleep(Duration::from_millis(delay)).await; + delay + }; + let result = timeouted_read(Duration::from_millis(123), wait100).await; + println!("Result: {result:?}"); // Result(100) + + let wait150 = async { + let delay = 150; + tokio::time::sleep(Duration::from_millis(delay)).await; + delay + }; + let result = timeouted_read(Duration::from_millis(123), wait150).await; + println!("Result: {result:?}"); // Timeout + + let never = std::future::pending::(); + let result = timeouted_read(Duration::from_millis(123), never).await; + println!("Result: {result:?}"); // Timeout +} +``` +### Подсказки +- Для получение фьчерсов, на которых можно вызвать poll, реализованы помогающие методы TimeoutedFuture::future() и TimeoutedFuture::sleep(). +- Чтобы два раза вызвать методы, забирающие владение Pin, можно использовать метод Pin::as_mut +- Чтобы проверить, не завершился ли фьючерс, можно вызвать метод Future::Poll +- По окончанию выполнения Future::poll возвращает Poll::Ready +- Poll::Pending означает, что результат еще не готов +Проверьте свой код по чек-листу: +Механика квиз-множественный выбор (все ответы верные, без фидб==э==ков) +- [ ] Вызывается poll на future +- [ ] Вызывается poll на sleep +- [ ] При завершении future возвращается значение из нее внутри TimeoutFuture::Result +- [ ] При таймауте возвращается TimeoutFuture:Timeout +- [ ] Все тесты проходят +### Решение +```rust +impl Future for TimeoutedFuture { + type Output = TimeoutFuture; + + fn poll(mut self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let future = self.as_mut().future(); + + match future.poll(cx) { + Poll::Ready(output) => return Poll::Ready(TimeoutFuture::Result(output)), + Poll::Pending => {} + } + + let sleep = self.as_mut().sleep(); + + match sleep.poll(cx) { + Poll::Ready(()) => Poll::Ready(TimeoutFuture::Timeout), + Poll::Pending => Poll::Pending, + } + } +} +``` +P.S.: то, что вы написали, альтернативно функции tokio::time::timeout + +Чтобы проверить, не завершился ли фьючерс, можно вызвать метод Future::Poll +По окончанию выполнения Future::poll возвращает Poll::Ready +Poll::Pending означает, что результат еще не готов +Проверьте свой код по чек-листу: +Механика квиз-множественный выбор (все ответы верные, без фидб==э==ков) +Вызывается poll на future +Вызывается poll на sleep +При завершении future возвращается значение из нее внутри TimeoutFuture::Result +При таймауте возвращается TimeoutFuture:Timeout +Все тесты проходят \ No newline at end of file diff --git a/3_1/3practice.md b/3_1/3practice.md new file mode 100644 index 0000000..41e5075 --- /dev/null +++ b/3_1/3practice.md @@ -0,0 +1,72 @@ +### **Практическое задание: задачи с таймаутом** + +Создайте метод TaskPool::create, которая будет отправлять задачу в канал, но если не получается отправить задачу в канал в течение 100 миллисекунд, возвращается None +```rust +use std::time::{Duration, Instant}; + +use tokio::{ + sync::mpsc::{Receiver, Sender, channel, error::SendError}, + time::timeout, +}; + +struct TaskPool { + tasks: Receiver, + sender: Sender, +} + +impl TaskPool { + fn new(queue_size: usize) -> Self { + let (sender, tasks) = channel::(queue_size); + Self { tasks, sender } + } + + async fn create(&self, task: T) -> Option>> { + // Напишите свое решение здесь + } + + async fn pull_task(&mut self) -> Option { + self.tasks.recv().await + } +} + +#[tokio::main] +async fn main() { + let mut tasks = TaskPool::new(2); + + assert_eq!(tasks.create(()).await, Some(Ok(()))); + assert_eq!(tasks.create(()).await, Some(Ok(()))); + + let start = Instant::now(); + assert_eq!(tasks.create(()).await, None); + let end = start.elapsed(); + + assert!(end > Duration::from_millis(90)); + assert!(end < Duration::from_millis(110)); + + assert_eq!(tasks.pull_task().await, Some(())); + assert_eq!(tasks.create(()).await, Some(Ok(()))); +} +``` +### Подсказки + +используйте tokio::time::timeout для таймаута +tokio::time::timeout принимает фьючерс для которого нужен таймаут +используйте .send() для отправки значение +обратите внимание, что .send() возвращает фьючерс + +Проверьте свой код по чек-листу: +используется tokio::time::timeout +используются асинхронные каналы +все тесты проходят +### **Решение** +```rust +async fn create(&self, task: T) -> Option>> { + let sender = self.sender.send(task); + timeout(Duration::from_millis(100), sender).await.ok() +} +``` + +Вы знаете про существование таких синхронизационных примитивов в стандартной библиотеке, как Mutex, RwLock, каналы. И в тоже происходит ожидание. Но они блокируют поток, поэтому в tokio есть альтернативы с идентичным интерфейсом, но асинхронным: + +У асинхронных мьютекса и RwLock есть преимущество: если фьючерс ожидает лока асинхронного мьютекса, токио будет обратно переключаться на другие фьючерсы. В то время, как синхронные версии будут держать поток и не давать другим фьючерсам исполняться. Для синхронных версий это создает проблему: если MutexGuard пересек границу .await, где, к примеру, ожидается ответ в течение 30 секунд, то другой фьючерс, ожидающий лока мьютекса, будет держать целый поток токио в течение всего этого времени, что приведет к потере производительности. А если рантайм токио будет однопоточным, то программа зависнет навсегда. +после вызова await залочен, что приводит к ожиданию анлока от других \ No newline at end of file diff --git a/3_1/3v0.md b/3_1/3v0.md new file mode 100644 index 0000000..24e1f39 --- /dev/null +++ b/3_1/3v0.md @@ -0,0 +1,190 @@ +В прошлом уроке мы разобрали, как устроена асинхронность в rust под капотом и как рантайм вызывает код. В этом уроке мы окунемся поглубже в то, как в tokio происходит ожидание готовностей ресурсов, то, как работать с асинхронным вводом/выводом, как делать асинхронные сетевые запросы, работать с файловой системой, и как использовать неблокирующие примитивы синхронизации + +## Асинхронные чтение/запись +ОР - Умеет работать с асинхронным абстрактным вводом/выводом. +В rust для чтения/записи всего (к примеру, файлов, или сокетов) есть трейты Read и Write, но свои задачи они выполняют синхронно. Для асихронного мира существуют трейты AsyncRead и AsyncWrite. Их определение выглядит так: +```rust +pub trait AsyncRead { + // Required method + fn poll_read( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll>; +} +``` +```rust +pub trait AsyncWrite { + // Required methods + fn poll_write( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll>; + fn poll_flush( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll>; + fn poll_shutdown( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll>; + + // Provided methods + fn poll_write_vectored( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[IoSlice<'_>], + ) -> Poll> { ... } + fn is_write_vectored(&self) -> bool { ... } +} +``` +Можно по определению методов заметить, что поведение у них идентично Future::poll - если могут выполнить чтение/запись прямо сейчас, то возвращают Poll::Ready, а если нет, то Poll::Pending. Но, с этими трейтами пользователи библиотек не взаимодействуют, для всех типов, для которых реализованы AsyncRead/AsyncWrite реализованы и трейты AsyncReadExt/AsyncWriteExt соответственно. У них интерфейс уже почти идентичен std::io::{Read,Write}. К примеру у AsyncReadExt: +```rust +pub trait AsyncReadExt: AsyncRead { + // Provided methods + fn chain(self, next: R) -> Chain + where Self: Sized, + R: AsyncRead { ... } + fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self> + where Self: Unpin { ... } + fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B> + where Self: Unpin, + B: BufMut + ?Sized { ... } + fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> + where Self: Unpin { ... } + fn read_u8(&mut self) -> ReadU8<&mut Self> + where Self: Unpin { ... } + // и другие методы +} +``` +Эти трейты позволяют писать асинхронные чтение/запись почти идентично синхронным версиям, с одним только отличием - добавлением await +## Взаимодействие с интернетом и фс +ОР - Может использовать неблокирующее сетевое взаимодействие (TCP, UDP) и работу с файловой системой. +Чтобы делать сетевые запросы в tokio реализованы TcpStream, UdpSocket и TcpSocket (асинхронные аналоги таких же синхронных версий из стандартной библиотеки) +Давайте попробуем написать небольшой http клиент: +```rust +use tokio::net::TcpStream; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; + +#[tokio::main] +async fn main() -> std::io::Result<()> { + // Подключение к http://google.com + let mut stream = TcpStream::connect(("google.com", 80)).await?; + + // Отправка GET запроса + stream.write_all(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n").await?; + + // Упрощено для примера, но обычно так не делают + // Работает для этого примера, так как + // гугл отсылает ответ одним tcp пакетом + let mut buf = [0u8; 1024]; + let len = stream.read(&mut buf).await?; + let buf = buf[..len].to_vec(); + let output = String::from_utf8(buf).unwrap(); + + println!("Returned:\n{output}"); + Ok(()) +} +``` +Как видите, интерфейс абсолютно такой же, как и у синхронных трейтов в стандартной библиотеке, только добавляется .await после вызова. +Для работы с файловой системой все аналогично: +```rust +#[tokio::main] +async fn main() -> std::io::Result<()> { + let cargo = tokio::fs::read_to_string("./Cargo.toml").await?; + println!("Cargo.toml content:\n{cargo}"); + Ok(()) +} +``` + +ОР - Умеет использовать неблокирующие примитивы синхронизации и каналы разных видов. +Так же есть похожие на стандартные каналы: +`tokio::sync::mpsc::unbounded_channel()` - альтернатива `std::sync::mpsc::channel()` из стандартной библиотеки, но при ожидании результата не блокирует поток, а передает управление +`tokio::sync::mpsc::channel(buffer: usize)` - альтернатива `std::sync::mpsc::sync_channel()` из стандартной библиотеки, но при заполнении буфера не блокирует поток, а передает управление +И примитивы синхронизации: +`tokio::sync::Mutex` - альтернатива `std::sync::Mutex`, но не блокирует поток при вызове lock, а еще не будет происходить дедлока при пересечении .await. Если один фьючерс залочил значение в стандартном мьютексе, потом вызвал асинхронную функцию, и другому фьючерсу понадобилось залочить этот мьютекс, то возникнет дедлок. Поэтому, если MutexGuard проходит через .await, нужно использовать именно `tokio::sync::Mutex` +`tokio::sync::RwLock` - те же преимущества, что и у мьютекса + +Квиз +ОР - Умеет использовать неблокирующие примитивы синхронизации и каналы разных видов. +Чем отличается tokio::sync::mpsc::unbounded_channel() от стандартного std::sync::mpsc::channel()? +Он поддерживает передачу только Send + Sync типов +Нет, это является требованием для обоих каналов +Он использует общий буфер для всех задач +Нет, у каждого канала свой буфер +Он не блокирует поток при ожидании, а передаёт управление исполнителю +Правильно, тем самым исполнитель не простаивает на ожидании +Он автоматически очищает буфер после каждого await +Нет, очистка буфера не зависит от вызова await + +Квиз +Что произойдет, если использовать std::sync::Mutex внутри async-функции и удерживать его guard через .await? +Мьютекс автоматически разблокируется при .await +Нет, мьютекс не знает ничего про асинхронность +Может возникнуть дедлок +Правильно, после переключения к мьютексу может обратиться другой фьючерс и возникнет дедлок +Компилятор выдаст ошибку +Нет, компилятор не выдаст ошибку. Но при этом есть линтеры, которые укажут о прохождение мьютекса из стандартной библиотеки через await + +Квиз +Что произойдет при переполнении буфера у `tokio::sync::mpsc::channel()`? +Поток заблокируется до освобождения места +Нет, если буфер заполнен, текущая задача приостанавливается (`.await`), но поток может продолжить выполнение других задач. Это ключевое отличие от `std::sync::mpsc::sync_channel` +Новые сообщения будут теряться +Нет, каналы не теряют сообщения +Задача временно уступит управление (await), пока не появится место +Правильно! При переполнении буфера отправка сообщения асинхронно приостанавливает текущую задачу (`.await`), позволяя планировщику выполнять другие задачи до освобождения места в канале +Произойдет паника +Нет, каналы при переполнении не паникуют + +## Таймаут по вызову Future +ОР - Понимает, как использовать таймауты, неблокирующее ожидание и cancelation safety. +Для ожидания фьючерса с таймаутом в токио есть удобная функция tokio::time::timeout +```rust +if let Err(_) = tokio::time::timeout(Duration::from_secs(1), std::future::pending()).await { + println!("не выполнилось в течении 1 секунды"); +} +``` +По истечении указанного времени исполнение Future отменяется +## Вызов cpu-bound кода из асинхронного +ОР - Понимает, как использовать таймауты, неблокирующее ожидание и cancelation safety. +Так как асинхронность в rust кооперативная, возвращать управление потоком нужно как можно быстрее. Но что если у нас вместо io-bound задачи возникает cpu-bound задача? Тогда задачу нужно вымещать в отдельный thread pool. В токио есть встроенный (который упоминается как worker threads), его удобство заключается в том, что ожидать результата синхронноой функции можно через await, не блокируя исполнения, как с ожиданием у обычного thread pool +```rust +let res = tokio::task::spawn_blocking(move || { + // cpu-bound задачи. К примеру, перемножение матриц + multipy_matrixes() +}).await?; +``` +Самое интересное, что большинство функций в модуле tokio::fs это такие обертки spawn_blocking над синхронными версиями. К примеру, tokio::fs::read_to_string, что мы использовали ранее в самом токио выглядит так: +```rust +pub async fn read_to_string(path: impl AsRef) -> io::Result { + let path = path.as_ref().to_owned(); + // asyncify - вызывает внутри spawn_blocking, + // просто с дополнительной небольшой проверкой + asyncify(move || std::fs::read_to_string(path)).await +} +``` +Это обусловленно тем, у некоторых операционных систем блокирующие чтения файлов. Сетевые же запросы, к примеру, сделаны асинхронно + +## Cancelation safety +ОР - Понимает, как использовать таймауты, неблокирующее ожидание и cancelation safety. +Cancellation safety — это свойство future, которое гарантирует, что если её отменить (вызов drop), это не приведёт к потере данных или нарушению логики программы. К примеру, разберем такой псевдокод: +```rust +let tcpstream = TcpStream::connect("localhost:8000").await.unwrap(); +loop { + tokio::select! { + v = read_some_data(&mut tcpstream) => { + // do something with data + }, + _ => tokio::time::sleep(Duration::from_millis(10)) => {} + } + println!("Cyclel timeout"); +} +``` +Выглядит хорошо: ожидаем чтение, а по таймауту перезапускаем цикл. Но что если read_some_data уже успела прочитать какие-то данные до таймаута, но не успела вернуть их? Тогда эти данные будут утеряны навсегда. Такие функции, отмена выполнения которых приводит к потере данных не считаются cancelation safe. +Примерами таких функций из токио являются: +`tokio::io::AsyncReadExt::read_exact` +`tokio::io::AsyncReadExt::read_to_end` +`tokio::io::AsyncReadExt::read_to_string` +`tokio::io::AsyncWriteExt::write_all` \ No newline at end of file diff --git a/4.2/1.md b/4.2/1.md new file mode 100644 index 0000000..25064c9 --- /dev/null +++ b/4.2/1.md @@ -0,0 +1,454 @@ +ОР - Умеет собирать статические и динамические библиотеки из Rust кода, и экспортировать функции из них. А также проверять экспортируемые символы с помощью системных утилит (например, nm). +ОР - Умеет описывать Си ABI в Rust коде. (с точки зрения best practice) +ОР - Умеет линковать Си библиотеки к Rust коду (статически, динамически и в рантайме - все три варианта) +ОР - Понимает, как использовать Rust библиотеку в других языках (например, в python) и понимает, для чего это может быть полезно. +ОР - Умеет использовать bindgen и cc для генерации Rust API из Си header файлов и сборки Си библиотеки (https://github.com/DaveGamble/cJSON). + +- [x] Умеет собирать статические и динамические библиотеки из Rust кода, и экспортировать функции из них. А также проверять экспортируемые символы с помощью системных утилит (например, nm). +- [x] Умеет описывать Си ABI в Rust коде. (с точки зрения best practice) +- [x] Умеет линковать Си библиотеки к Rust коду (статически, динамически и в рантайме - все три варианта) +- [x] Понимает, как использовать Rust библиотеку в других языках (например, в python) и понимает, для чего это может быть полезно. +- [x] Умеет использовать bindgen и cc для генерации Rust API из Си header файлов и сборки Си библиотеки (https://github.com/DaveGamble/cJSON). + - [x] Умеет импользовать bindgen и cc для генерации Rust API из Си header файлов + - [x] Практика: сборка Си библиотеки (https://github.com/DaveGamble/cJSON). + +- [ ] Прописать ОРы для глав +- [ ] Придумать квизы + +старт +- [x] Сначала практически расписать бест практис с с аби, +- [x] потом рассказать про биндген +- [x] потом сс +- [x] потом линковка +- [x] ??а если мы захотим уже раст использовать как бблиотеку в другом языке? +- [x] рассказать низкоуровнево как прописывать экспорт раст кода +- [x] (упомянуть про как посмотреть экспорт) +- [x] в том числе и про разные способы линковки +- [x] потом показать на примере линковки к питону +- [ ] потом рассказать про бест практис (возможно решив какую-нибудь проблему в предыдущей главе) +## C ABI Best practice +- [x] Рассказать немного про бест практис, протом перейти к bindgen +- [x] best practice: +- [x] use std::ffi types +- [x] use \*-sys +- [x] Добавление поля links в Cargo.toml крейта \*-sys +- [x] use bindgen +- [x] генерация с build.rs (build dependencies) +- [ ] Option nonnull for c abi (null optimization) +?cstr +## Линковка +Рассказать про то, как низкоуровнево линкуется при помощи rustc, потом рассказать про то, как линковать с build.rs и потом cc +# Start + +В прошлом уроке вы узнали, как описывается C ABI в Rust. Давайте теперь посмотрим, как используется C ABI в production коде. Для этого изучим best practice использования C ABI. + +## Правильное использование C ABI +ОР - Умеет описывать Си ABI в Rust коде. (с точки зрения best practice) +### Совместимость начинается со стандартов +Допустим, у нас есть такая волшебная функция на С: +```c +int square(int x) { + return x * x; +} +``` +Как описать эту функцию в Rust? Возможно так? +```rust +unsafe extern "C" { + fn square(x: i32) -> i32; +} +``` +Но тут возникает проблема: в rust явно указана размерность в 32 бита, в то время как в C, int может быть не только размером 32 бита (к примеру у avr, той самой, которая используется в Arduino, размер int 16 бит). Для таких исключений есть модуль core::ffi (который реэкспортирован как std::ffi, так что его можно встретить с импортом по этому пути, но рекомендуется использовать именно по пути core от для поддержки {{no_std}}[https://docs.rust-embedded.org/book/intro/no-std.html] среды). И для описания функций рекомендуется использовать именно эти типы, так как в rust может добавиться поддержка новой архитектуры, со своими типами из C, и программа может незаметно стать памяти-небезопасной. +Перепишем функцию: +```rust +use core::ffi::c_int; + +unsafe extern "C" { + fn square(x: c_int) -> c_int; +} +``` +Заметка (extern без unsafe): +(может быть под тогл/скрываемый блок?) +Если читать код библиотек, можно встретить, что extern пишется без unsafe (взаимодействие и смысл этого ключевого слова вы изучите в следующем уроке). Так можно было делать раньше, но в rust это стало обязательным с версии 1.85. Идея заключается в том, что пишущий код человек может задекларировать функцию неправильно, и это обязанность программиста, а не компилятора соблюсти здесь безопасность по памяти (пример такой ситуации вы только что разобрали). +### Optional pointer (null optimization) - нужно ли? +### Отделение взаимодействия с ffi в отдельный крейт +Если вы пишете библиотеку, взаимодействующую с C ABI, отделяйте это взаимодействие в отдельный крейт (который обычно называют \*-sys). На это есть несколько веских {{причин}}[https://doc.rust-lang.org/cargo/reference/build-scripts.html#-sys-packages]: +- Несколько разных библиотек могут переиспользовать уже написанный код для взаимодействия с библиотекой +- Так, одна и та же библиотека не будет собираться несколько раз и не будет слинкована несколько раз (то есть не будет существовать несколько разных или одинаковых версий библиотеки в бинаре) +- Легкость изменения библиотеки, от которой зависит бинарь (версии, поиска ее пути и всей остальной конфигурации) + +Квиз - множественный выбор +Зачем отделять FFI-взаимодействие в отдельный \*-sys крейт? + +Чтобы ускорить выполнение сборки программы с нуля. +Нет. Это не ускорит сборку конченой программы. Но, будет полезно, если разрабатываете библиотеку, ведь при каждом изменении не будет выполнятся build скрипт с линковкой. + +Чтобы ускорить выполнение программы во время рантайма. +Нет, отделение логики не ускорит программу. + +Чтобы переиспользовать взаимодействие с библиотекой. +Правильно, при отделении логики в -sys крейт, ее смогут переиспользовать другие крейты. Так же, как и при отделении логики в фукнцию, которую можно использовать в другом месте кода + +Чтобы не собирать статическую библиотеку несколько раз. +Правильно, при переиспользовании -sys крейта статические библиотеки, которые собираются из исходного кода, будут собраны и включены в бинарь только один раз, вместо сборки в каждом использующем библиотеку крейте + +Чтобы было проще обновлять или перенастраивать зависимую C-библиотеку (версия, путь, параметры сборки). +Правильно, программист сможет изменить используемую библиотеку через аттрибут {{target.\.\}}[https://doc.rust-lang.org/cargo/reference/config.html#targettriplelinks] в файле настроек cargo (./cargo/config.toml) + +Чтобы избежать необходимости писать unsafe-код в основном проекте. +Нет. Хоть и часть unsafe логики отделяется в этот крейт (а именно декларация функций), взаимодействие с этими функциями все еще будет не безопасным +### Добавление поля links в Cargo.toml крейта \*-sys +При написании крейта, который линкуется с одной библиотекой, используйте {{links}}[https://doc.rust-lang.org/cargo/reference/build-scripts.html#the-links-manifest-key] в манифесте Cargo.toml, для указания, с какой библиотекой происходит линковка: +```toml +# Cargo.toml +[package] +links = "mylib" +``` +Благодаря этому, программисты, в коде которых будет использоваться такой крейт, смогут {{перезаписать использование build скрипта}}[https://doc.rust-lang.org/cargo/reference/build-scripts.html#overriding-build-scripts], благодаря чему мы и получим третий плюс из предыдущего пункта +### Автоматическая генерация extern внешних функций +ОР - Умеет использовать bindgen и cc для генерации Rust API из Си header файлов и сборки Си библиотеки (https://github.com/DaveGamble/cJSON). +С обновлением версий библиотек, меняется и их интерфейс. К примеру, могут добавиться новые функции. Но поддерживать актуальные декларации внешних функций (так называемые {{байндинги}}[на английском термин binding, исходит от to bind, который переводится как связывать. говорит компилятору языка, что у нас существует такая функция, а линкеру объясняет, с какой функцией надо связывать]) вручную весьма трудозатратная задача (как и в принципе изначальное написание таких байндингов вручную). На помощь приходит автоматическая генерация при помощи крейта {{bindgen}}[https://github.com/rust-lang/rust-bindgen]. +Одним из вариантов использования bindgen является его cli. Установите его: +```bash +cargo install bindgen-cli +``` +Создайте новый проект, запишите следующее в файлы: +```rust +// src/main.rs +include!("./bindgen.rs"); + +fn main() { + println!("Squared eleven: {}", unsafe { square(11) }); +} +``` +```c +// src/mylib.c +int square(int x) { + return x * x; +} +``` +```c +// src/mylib.h +int square(int x); +``` +теперь используем bindgen для генерации байндингов: +```bash +bindgen src/mylib.h -o src/bindgen.rs +``` +можете посмотреть в файл `src/bindgen.rs`, и увидеть там аналогичную декларацию функции, что вы писали, но сгенерированную автоматически :) +Теперь соберем C библиотеку: +```bash +clang -c src/mylib.c -o mylib.o +``` +*Вместо clang можно использовать и gcc (и, теоретически, любой другой C компилятор), но так как rust зависит от инфраструктуры llvm, все примеры будут именно для clang* +И соберем и запустим программу: +```bash +RUSTFLAGS="-L. -l./mylib.o" cargo run +``` +*Переменная среды RUSTFLAGS позволяет добавить флаги, которые будут переданы rustc. В данном случае переданы флаги, которые говорят включить в сборку вашу библиотеку. То, как обычно это делается (через скрипт сборки и через cc) будет разобрано чуть позже в этом уроке.* + +Ваша программа успешно запустилась и выдала ожидаемый результат: +``` +Squared eleven: 121 +``` +## Автоматизация сборки +ОР - Умеет линковать Си библиотеки к Rust коду (статически, динамически и в рантайме - все три варианта) +Для того, чтобы не делать все это вручную, в cargo есть возможность написать свой скрипт сборщика, который выполнит нужные нам действия перед компиляцией и передаст cargo инструкции для компиляции кода. Обычно такой код расположен в файле build.rs (но путь к нему можно изменить через атрибут {{build}}[https://doc.rust-lang.org/cargo/reference/manifest.html#the-build-field] в Cargo.toml). +Давайте сделаем то же самое, но используя build.rs. Для начала, подчистим выхлоп предыдущего эксперимента: +```bash +rm src/bindgen.rs # но пока оставим mylib.o +``` +Теперь напишем build.rs (в корне проекта): +```rust +// build.rs +use bindgen; +use std::{env, path::PathBuf}; + +fn main() { + let bindings = bindgen::builder() + // Файл, для которого создаются байндинги + .header("src/mylib.h") + // Перезапуск сборки при изменении переданных файлов + .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) + // Сгенерировать байндинги + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + // Записать получившиеся байндинги в файл OUT_DIR/bindgen.rs + .write_to_file(out_path.join("bindgen.rs")) + .expect("Couldn't write bindings!"); + + // Передать линкеру, что библиотеки нужно искать в нынешней папке + // Аналогичен флагу -L. + // Информация в cargo передается через stdout + println!("cargo::rustc-link-search=."); + // Передать линкеру, что нужно слинковать с библиотекой ./mylib.o + // Аналогичен флагу -l./mylib.o + println!("cargo::rustc-link-lib=./mylib.o"); +} +``` +Как вы тут заметили, вместо вызова cli тут используется вызов крейта bindgen. Это рекомендуемый способ использования bindgen, и cli на практике используется редко. Чтобы иметь возможность использовать его в сборочном скрипте, добавьте его в зависимости для сборки: +```bash +cargo add bindgen --build +``` +Так же, вместо выхлопа bindgen.rs в папку src/ выходной файл будет находиться внутри папки {{OUT_DIR}}[https://doc.rust-lang.org/cargo/reference/environment-variables.html#:~:text=.exe.-,OUT_DIR,-%E2%80%94%20If%20the%20package]. Это именно та папка, куда build.rs должен ложить все свои выходные файлы. Ни в коем случае не надо ложить файлы в src! Так как выходные файлы не являются сами по себе частью проекта, и являются промежуточным результатом компиляции, то и находится они должны в одной из подпапок target, а именно в OUT_DIR. +Так как путь к bindgen.rs изменился, замените предыдущий include! в src/main.rs на такой: +```rust +include!(concat!(env!("OUT_DIR"), "/bindgen.rs")); +``` +Попробуем запустить все это: +```bash +cargo run +``` +Байндинги автоматически были созданы и линковка тоже произошла, осталось добавить сборку C кода в библиотеку. +## Сброка C кода в Rust +ОР - Умеет использовать bindgen и cc для генерации Rust API из Си header файлов и сборки Си библиотеки (https://github.com/DaveGamble/cJSON). +Так же, как и для генерации байндингов существует bindgen, для компиляции библиотек существует крейт`cc`. Фактически, он под капотом вызывает компилятор C со всеми задаными флагами. Добавим его в зависимости для сборки: +```bash +cargo add cc --build +``` +И обновим build.rs: +```rust +// build.rs +use bindgen; +use cc; +use std::{env, path::PathBuf}; + +fn main() { + let bindings = bindgen::builder() + // Файл, для которого создаются байндинги + .header("src/mylib.h") + // Перезапуск сборки при изменении переданных файлов + .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) + // Сгенерировать байндинги + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + // Записать получившиеся байндинги в файл OUT_DIR/bindgen.rs + .write_to_file(out_path.join("bindgen.rs")) + .expect("Couldn't write bindings!"); + + cc::Build::new() + // добавить src/mylib.c в выходную библиотеку + .file("src/mylib.c") + // скомпилировать C код как библиотеку libmylib.a в папке OUT_DIR + .compile("mylib"); +} +``` +Заметьте, что пропало явное обозначение, что нужно слинковать с библиотекой. cc сам передаст cargo название библиотеки, с которой нужно слинковать. +Перед запуском, для чистоты эксперимента, удалите старый файл: +```bash +rm mylib.o +``` +Теперь сборку и запуск можно делать просто через `cargo run`, не выполняя лишних команд. +## Линковка с динамической библиотекой +До этого мы собирали только со статической библиотекой. Теперь, давайте слинкуем с динамической библиотекой. Для этого, сначала соберем ее: +```bash +clang src/mylib.c -shared -o libmylib.so +``` +А теперь, в build.rs уберите использование cc и добавьте в конце функции main: +```rust +fn main() { + // Генерация байндингов + // ... + + println!("cargo:rustc-link-search=."); + println!("cargo:rustc-link-lib=dylib=mylib"); +} +``` +// update +В cargo:rustc-link-lib передано значение dylib=mylib. Оно позволяет явно указать, что нужно подгрузить динамическую библиотеку (dylib) с название mylib (у такой библиотеки будет название libmylib.so на примере linux). Значение \[тип=] опционально и может быть одним из: + - dylib - динамическая библиотека + - static - статическая библиотека + - framework - специфичный формат для MacOS, содержащий динамичекую библиотеку с дополнительными ресурсами +cc не поддерживает генерацию динамических библиотек, так как она не будет являться частью создаваемого cargo и rustc бинаря. Динамические библиотеки обычно являются частью системы (те же libc, zlib, openssl, присутствие которых бинари будут ожидать по стандартным путям). Установлены они могут быть, к примеру, через apt, pacman, установщики windows, и так далее. Либо создаются отдельно и поставляются с программой. +## Линковка в рантайме +ОР - Умеет линковать Си библиотеки к Rust коду (статически, динамически и в рантайме - все три варианта) +Последний способ линковки в рантайме, позволяет не тратить лишний раз оперативную память, загружая код лишь только тогда, когда он нужен. Для независимости от платформы будем использовать dlopen и dlsym. +- dlopen - подгружает нужную нам библиотеку +- dlsym - ищет в библиотеке нужный символ и выдает его адрес, и это может быть не только функция, но и, к примеру, константа, статическая переменая, и тд. +Для начала, удалите build.rs. Добавьте libc как зависимость. +Напишите в src/main.rs: +```rust +// src/main.rs +use libc::{dlopen, dlsym}; +use std::ffi::c_int; + +fn main() { + let mylib = unsafe { dlopen(c"./libmylib.so".as_ptr(), 0) }; + let square: extern "C" fn(c_int) -> c_int = + unsafe { std::mem::transmute(dlsym(mylib, c"square".as_ptr())) }; + println!("Squared eleven: {}", unsafe { square(11) }); +} +``` +Запустив это, получите ровно тот же результат, что и раньше, но теперь библиотеку мы подгружаем сами. Кстати, линкер для динамических библиотек делает то же самое, но подгружает библиотеки еще до вызова main, а адреса функций кладет в заранее заготовленную таблицу функций. + +## Практика +Создайте новый проект, с таким содержимым в src/main.rs: +```rust +include!(concat!(env!("OUT_DIR"), "/bindgen.rs")); + +use std::ffi::{CStr, CString}; + +const TEST_JSON: &CStr = c"{ + \"meaning_of_life\": 42 +}"; + +fn main() { + let json: *mut cJSON = unsafe { cJSON_Parse(TEST_JSON.as_ptr()) }; + + let json_str = unsafe { cJSON_PrintUnformatted(json) }; + let json_str = unsafe { CString::from_raw(json_str) }; + let json_str = json_str.to_str().unwrap(); + assert_eq!(json_str, r#"{"meaning_of_life":42}"#); + + let meaning_of_life = unsafe { cJSON_GetObjectItem(json, c"meaning_of_life".as_ptr()) }; + let meaning_of_life = unsafe { cJSON_GetNumberValue(meaning_of_life) }; + println!("Meaning of life: {}", meaning_of_life); + assert_eq!(meaning_of_life, 42f64); +} +``` +Создайте такой build.rs, чтобы этот код заработал. Используйте библиотеку [cJSON](https://github.com/DaveGamble/cJSON), ее можно склонировать прямо в корень проекта. +Подсказки: +Экспорт функций можно сгенерировать от cJSON.h используя bindgen +Чтобы была возможность использовать код из cJSON, соберите библиотеку через cc +Байндинги записываются в bindgen.rs в папке, указанной в переменной среды OUT_DIR +Чек-лист: +Линкуется cJSON как статическая библиотека +Файл bindgen.rs с байндингами находится в папке, указанной в переменной среды OUT_DIR +Тесты проходят +Решение: +```rust +use bindgen; +use cc; +use std::{env, path::PathBuf}; + +fn main() { + let bindings = bindgen::builder() + .header("cJSON/cJSON.h") + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindgen.rs")) + .expect("Couldn't write bindings!"); + + cc::Build::new() + // добавить src/mylib.c в выходную библиотеку + .file("cJSON/cJSON.c") + // скомпилировать C код как библиотеку libmylib.a в папке OUT_DIR + .compile("cJSON"); +} +``` + +## Rust как библиотека +ОР - Умеет собирать статические и динамические библиотеки из Rust кода, и экспортировать функции из них. А также проверять экспортируемые символы с помощью системных утилит (например, nm). +ОР - Понимает, как использовать Rust библиотеку в других языках (например, в python) и понимает, для чего это может быть полезно. +В течении всего урока мы использовали C код из Rust кода. А что если нужно будет использовать rust код из других языков, к примеру, того же C, Go, или Python? И это тоже возможно, через тот же C ABI, но на экспорт. Такая функция декларируется так: +```rust +#[unsafe(no_mangle)] +pub extern "C" fn doublefast(x: u32) -> u32 { + x << 1 +} +``` +- no_mangle - говорит rust, что название функции не надо преобразовывать +- extern "C" - использовать C ABI +- pub extern - экспорт функции +Создайте новый проект как библиотеку: +```bash +cargo new --lib mylib +``` +В Cargo.toml добавьте: +```toml +[lib] +crate-type = ["cdylib"] # cdylib означает, что нужно собрать динамическую библиотеку +``` +А в src/lib.rs внесите показанный ранее код: +```rust +#[unsafe(no_mangle)] +pub extern "C" fn doublefast(x: u32) -> u32 { + x << 1 +} +``` +Соберите библиотеку. Выходным файлом получится target/debug/libmylib.so (В зависимости от вашей ОС расширение .so, используемое в linux, может замениться на .dylib в macos или .dll в windows). Можем проверить наличие символа в библиотеке для функции через nm из пакета binutils: +```bash +# nm выведет весь список символов +# grep покажет только doublefast, если он есть +nm target/debug/libmylib.so | grep doublefast +``` +Попробуем использовать нашу функцию, к примеру, такой код в Python: +```python +from ctypes import cdll +mylib = cdll.LoadLibrary("target/debug/libmylib.dylib") +print(mylib.doublefast(8)) +``` +Успешно выведет 16 +*Информация о том, какие типы функция принимает и выдает не сохраняется в библиотеке, просто по дефолту python считает, что функция принимает и выдает i32* +Такое применение имеет практическую пользу: аналогичный код на rust выполняется в разы быстрее, чем код на python, поэтому много библиотек для python пишутся на C, а со становления rust популяным многие уже пишутся на rust. +### Сборка статической библиотеки +Что собрать то же самое, но в статическую библиотеку, нужно в `crate-type` изменить `cdylib` на `staticlib` (либо можно оставить и то и то, тогда будут собираться обе версии библиотеки): +```toml +[lib] +crate-type = ["staticlib"] +# или можно сделать такой вариант, тогда соберется +# два файла с разными расширениями +# crate-type = ["cdylib", "staticlib"] +``` +Попробуем использовать статическую библиотеку, но теперь пример для C: +```c +// main.c +#include +#include + +uint32_t doublefast(uint32_t); + +int main() { + printf("Double six: %d\n", doublefast(6)); +} +``` +Соберем C код с использованием нашей библиотеки: +```bash +clang main.c target/debug/libmylib.a -o ./a.exe +``` +При запуске ./a.exe будет получен ожидаемый результат. +// update +Для crate-type возможны следующие значения: +- staticlib - сборка статической библиотеки +- dylib - сборка динамической библиотеки, предназначенной для использования в rust коде. Собираться использующий код и dylib должны одной и той же версией компилятора, так как у dylib нет стабильного интерфейса +- cdylib - сборка динамической библиотеки, но предназначеную для использования во всех языках, поэтому отличается от dylib: + - интерфейсы фукнций следуют c abi + - в библиотеку будет включена стандартная rust библиотека (rust-std) +- bin - сборка конечной программ +- lib - соберет библиотеку, вид которой будет выбран компилятором (стандартное значение для крейтов-библиотек) +- rlib - внутренний тип библиотек rust +- proc-macro - крейт, в котором экспортированы proc макросы + +Квиз - одиночный выбор +Какое значение нужно указать в crate-type, чтобы использовать ваш rust код как динамическую библитеку в проекте на Go? +lib +Нет, lib соберет библиотеку на выбор компилятора + +cdylib +Правильно, cdylib соберет динамическую библиотеку с C ABI, который подходит для Go + +dylib +Нет, хоть dylib и соберет динамическую библиотеку, но полноценно подходить она будет только для rust кода + +staticlib +Нет, staticlib соберет статическую библиотеку + + +// update +### cbindgen +Так же, как и для генерации rust байндингов из C есть библитека bindgen, для генерации C/C++/cython байндингов из rust кода есть cbindgen: +```bash +cargo install cbindgen +``` + +## Итоги +В этом уроке мы на практике разобрали, как взаимодействовать с кодом на C в проектах на rust, best practice этого взаимодействия, а так же узнали, как можно взаимодействовать с кодом на rust из других языков. Вы научились автоматически генерировать декларации внешних функций, а так же собирать статические библиотеки при сборке проекта на rust. +Далее вы узнаете, что означает ключевое слово unsafe, зачем оно нужно при взаимодействии с внешними библиотеками, а так же изучите best practice при написании unsafe кода. \ No newline at end of file diff --git a/4.2/2.md b/4.2/2.md new file mode 100644 index 0000000..c0a376c --- /dev/null +++ b/4.2/2.md @@ -0,0 +1,46 @@ +- [ ] Умеет писать unsafe код и безопасные обёртки для него. +- [ ] Понимает причины UB и знает, как его не допустить. (откуда взялось, что значит и как может нанести вред работе программы) +- [ ] для автора - проверка ОРа квизами, включая примеры кода. +- [ ] Умеет проектировать безопасный интерфейс для unsafe кода. +- [ ] Знает best practice для написания unsafe кода. +- [ ] Можно использовать примеры из third party крейтов. + +- [ ] Начать с проблемы, когда компилятор не может гарантировать безопасность по памяти (но без этого невозможно написать программу), возможно из ub +- [ ] Рассказать про причины ub +- [ ] Рассказать, чем является unsafe, ответственность на программисте, про ub (НЕ является избавлением от borrow checker) +- [ ] Рассказать про применение unsafe (взаимодействие с С, оптимизация (вспомнить небезопасную либу для бэкенда: rocket или actix), написание основы/базы языка) +- [ ] Определении функции unsafe если соблюдение инвариантов висит на пользователе (при написании такой функции смотреть - является ли сам интерфейс функции safe) +- [ ] примеры из third party +- [ ] Рассказать про бест практис при написании unsafe: + - [ ] Лучший unsafe - отсутствующий unsafe + - [ ] Уменьшение зоны unsafe (легче найти баг + проще просчитать ub) + - [ ] Safety + - [ ] SAFETY + - [ ] assert_unsafe_precondition! + - [ ] ... +- [ ] Практика +- [ ] Лайфтаймы как помошники при взаимодействии с c abi +- [ ] Drop + +Почему unsafe внутри unsafe fn: +фн показывает, что инварианты должен соблюдать пользователь функции +ансейф блок же показывает скоуп, где нужно искать баги (где они и будут тк анйсейф операция) +подводный камень: +при ансейф баг может возникать в любом из блоков анйсефа, даже если он возникает в другом месте + +ub: из-за различий архитектру цп и ос и для оптимизаций + +еслм возникает баг, значит неправильно реализованы инварианты в одном из unsafe блоков с которым взаимодействовали (даже в совершенно другом месте) + +Возможно рассказать еще про это все? +- pointers +- nonnull +- phantomdata (инвариантность/ковариантность и тд) +- unsafecell +- send/sync + unsafe trait markers (мб практический пример: написание собстенного mutex) +- unsafe traits +- + +При описании бест практис про Safety, привести пример, почему нужно (а еще потому, что при изменении логики функции самим тоже нужно следить, какие инварианты висят за пользователем) +Практика: подумайте над тем, какие инварианты тут должны быть соблюдены и какие из них не соблюдены. или пропробовать найти несоблюденный инвариант и "взломать" программу?) +допустим, нам нужно дя создания сокета узнать, можем ли мы использовать tcp/udp/icmp/etc, для этого используем сискол WSAEnumProtocolsA diff --git a/Untitled 1.base b/Untitled 1.base new file mode 100644 index 0000000..c6ab609 --- /dev/null +++ b/Untitled 1.base @@ -0,0 +1,3 @@ +views: + - type: table + name: Table diff --git a/Untitled 1.canvas b/Untitled 1.canvas new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/Untitled 1.canvas @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Untitled.base b/Untitled.base new file mode 100644 index 0000000..c6ab609 --- /dev/null +++ b/Untitled.base @@ -0,0 +1,3 @@ +views: + - type: table + name: Table diff --git a/Untitled.canvas b/Untitled.canvas new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/Untitled.canvas @@ -0,0 +1 @@ +{} \ No newline at end of file