pup-recorder 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ import'source-map-support/register.js';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {createRequire}from'module';import {dirname,join}from'path';import c from'zod';import {rmSync}from'fs';import {mkdtemp}from'fs/promises';import {tmpdir,platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import Fe from'tree-kill';import {EventEmitter}from'events';var be=Object.create;var $=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var q=(r,e)=>(e=Symbol[r])?e:Symbol.for("Symbol."+r),A=r=>{throw TypeError(r)};var Y=(r,e,t)=>e in r?$(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t;var Q=r=>[,,,be(null)],X=["class","method","getter","setter","accessor","field","value","get","set"],E=r=>r!==void 0&&typeof r!="function"?A("Function expected"):r,ye=(r,e,t,o,n)=>({kind:X[r],name:e,metadata:o,addInitializer:s=>t._?A("Already initialized"):n.push(E(s||null))}),G=(r,e)=>Y(e,q("metadata"),r[3]),Z=(r,e,t,o)=>{for(var n=0,s=r[e>>1],l=s&&s.length;n<l;n++)s[n].call(t);return o},_=(r,e,t,o,n,s)=>{var i,p,y,x,a=e&7,C=false,g=false,k=2,P=X[a+5],fe=r[k]||(r[k]=[]),b=((n=n.prototype),we(n,t));for(var S=o.length-1;S>=0;S--)y=ye(a,t,p={},r[3],fe),(y.static=C,y.private=g,x=y.access={has:d=>t in d},(x.get=d=>d[t]),a>2),i=(0, o[S])(b[P],y),p._=1,E(i)&&(b[P]=i);return b&&$(n,t,b),n},ee=(r,e,t)=>Y(r,e+"",t);var re=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(`${e}
2
+ `),this.redraw();}finish(e){this.clear(),this._out.write(`${e}
3
+ `),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,t=Math.round(e*40),o="#".repeat(t)+"-".repeat(40-t),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function ze(r){let e=t=>(...o)=>{r.clear(),t(...o),r.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function te(r,e,t){try{return e(process.env[r])}catch{return t}}function oe(r){if(typeof r=="number")return r;let e=Number(r);if(Number.isNaN(e))throw new Error(`Value ${r} is not a valid number`);return e}function Ze(r){return typeof r=="string"?r:String(r)}function er(r){return e=>typeof e!="string"||e.trim()===""?[]:e.split(",").map(t=>r(t.trim()))}var Te=createRequire(import.meta.url),O=te("PUP_LOG_LEVEL",oe,2),D=dirname(Te.resolve("pup-recorder/package.json")),ne=join(D,"dist","app.cjs");join(D,"dist","runtime","audio_preload.cjs");join(D,"dist","runtime","shoot_preload.cjs");join(D,"dist","runtime","render_preload.cjs");var F="<pup@debug>",U="<pup@info>",j="<pup@warn>",H="<pup@error>",W="<pup@fatal>";function R(r,e){return function(...t){let o=t.map(n=>n instanceof Error?n.stack??String(n):n);return r.call(this,...o)}}var se,ie,ae,le,pe,v;pe=[R],le=[R],ae=[R],ie=[R],se=[R];var w=class{constructor(e=O){this._level=e;Z(v,5,this);ee(this,"_impl");this.impl=console;}_level;get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let t=e.debug??console.debug,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,l=this._level;this._impl={debug:l>=3?t:void 0,info:l>=2?o:void 0,warn:l>=1?n:void 0,error:l>=0?s:void 0};}debug(...e){this.impl?.debug?.(F,...e);}info(...e){this.impl?.info?.(U,...e);}warn(...e){this.impl?.warn?.(j,...e);}error(...e){this.impl?.error?.(H,...e);}fatal(...e){this.impl?.error?.(W,...e),process.exit(1);}dispatch(e){let t=e.trimEnd();t.startsWith(F)?this.debug(t.slice(F.length+1)):t.startsWith(U)?this.info(t.slice(U.length+1)):t.startsWith(j)?this.warn(t.slice(j.length+1)):t.startsWith(H)?this.error(t.slice(H.length+1)):this.info(t);}attach(e,t){return new Promise((o,n)=>{this.debug(`${t}.attach`);let s="",l=i=>{let p=i.toString();p.startsWith(W)?s+=p.slice(W.length+1):this.dispatch(p);};e.stderr?.on("data",l),e.stdout?.on("data",l),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${t}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${t}.close`),o());}).on("unhandledRejection",i=>{this.error(`${t}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${t}.unhandled`,i);});})}};v=Q(),_(v,1,"debug",pe,w),_(v,1,"info",le,w),_(v,1,"warn",ae,w),_(v,1,"error",ie,w),_(v,1,"fatal",se,w),G(v,w);var u=new w;Log.setCallback((r,e)=>{let t=e.trimEnd();t&&(r<=AV_LOG_ERROR?u.error(t):r<=AV_LOG_WARNING&&u.warn(t));});function wr(r,e){return (...t)=>{try{let o=r(...t);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var Ae=1920,Re=1080,Ie=30,Oe=5,De=10,Le=["out/html.mp4","out/html.webm"],kr=c.object({duration:c.number().describe("Duration in seconds"),width:c.number().describe("Video width"),height:c.number().describe("Video height"),fps:c.number().describe("Frames per second"),withAudio:c.boolean().describe("Capture and encode audio"),outFiles:c.array(c.string()).describe("Output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:c.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:c.boolean().describe("Render by frame rather than recording"),disableGpu:c.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:c.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:c.boolean().describe("Fall back to dom-ready if warmup load times out"),windowTimeout:c.number().describe("Window load timeout in seconds"),screenshots:c.array(c.number()).describe("Second marks to dump frame bitmaps as PNG")}),ce={width:Ae,height:Re,fps:Ie,duration:Oe,outFiles:Le,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false,windowTimeout:De,screenshots:[]};var Me="[HWAccel]";async function $e(){let r=HardwareContext.auto(),e=r!==null;return r?.dispose(),e}var ue=$e().then(r=>(u.debug(Me,"gpu:",r),r));async function de(r){let e=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","deny-permission-prompts","use-mock-keychain","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];O>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let t=["FontationBackend"];if(!(await ue&&!r))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),t.push("Vulkan"));}return e.push(`enable-features=${t.join(",")}`),e}var B="--pup-priv-args";function Gr(){let r=process.argv,e=r.find(o=>o.startsWith(B));if(!e)return u.debug("procargv",r),process.argv;let t=["exec",...r.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),t.push(...JSON.parse(e)),u.debug("pupargs",t),t}function me(r,e){let t=r.split(" ").filter(i=>i.length),[o,...n]=t;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),l=false;return {process:s,wait:u.attach(s,o),get killed(){return l},kill(){if(l)return;l=true;let i=s.pid;i?Fe(i,"SIGKILL"):s.kill("SIGKILL");}}}async function Be(r){return [...await de(r),"headless=new"]}var ge="[Electron]";async function he({args:r}){let{default:e}=await import('electron'),t=await Be(r.includes("--disable-gpu")),o=await mkdtemp(join(tmpdir(),"pup-profile-")),n=t.map(p=>`--${p}`);n.push(`--user-data-dir=${o}`),n.push(`${B}=${Buffer.from(JSON.stringify(r)).toString("base64")}`);let s=[e,...n,ne].join(" ");u.debug(ge,s);let l={...process.env,RUST_BACKTRACE:"full"},i=me(s,{stdio:["ignore","pipe","pipe","ipc"],env:l});return i.process.once("exit",()=>{try{rmSync(o,{recursive:!0,force:!0});}catch(p){u.warn(ge,"profile cleanup failed:",p);}}),i}var L=class extends EventEmitter{constructor(e){super(),e.on("message",t=>{let o=t;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",t=>this.emit("close",t));}};var V="[pup]";async function Je(r,e){u.debug(V,"runPupApp",r,e);let t=[r,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--window-timeout",`${e.windowTimeout}`,"--out-file",e.outFiles.join(",")];return e.withAudio&&t.push("--with-audio"),e.useInnerProxy&&t.push("--use-inner-proxy"),e.deterministic&&t.push("--deterministic"),e.disableGpu&&t.push("--disable-gpu"),e.disableHwCodec&&t.push("--disable-hw-codec"),e.windowTolerant&&t.push("--window-tolerant"),e.screenshots.length>0&&t.push("--screenshots",e.screenshots.join(",")),he({args:t})}var m=ce;async function nt(r,e){u.debug(V,"pup",r,e);let{signal:t}=e;t?.throwIfAborted();let o=e.outFiles??m.outFiles,n={width:e.width??m.width,height:e.height??m.height,fps:e.fps??m.fps,duration:e.duration??m.duration,withAudio:e.withAudio??m.withAudio,useInnerProxy:e.useInnerProxy??m.useInnerProxy,deterministic:e.deterministic??m.deterministic,disableGpu:e.disableGpu??m.disableGpu,disableHwCodec:e.disableHwCodec??m.disableHwCodec,windowTolerant:e.windowTolerant??m.windowTolerant,windowTimeout:e.windowTimeout??m.windowTimeout,screenshots:e.screenshots??m.screenshots,outFiles:o},s=performance.now(),l=0,i=a=>{l=a,e.onProgress?.(a);},p=await Je(r,n),y,x=()=>{p.process.send?.({type:"cancel",reason:String(t?.reason??"abort")}),y=setTimeout(()=>p.kill(),5e3);};t?.addEventListener("abort",x,{once:true});try{let a=new Promise((g,k)=>{new L(p.process).on("close",P=>{let T=JSON.stringify({source:r,progress:l,code:P,killed:p.killed});k(new Error(`crashed: ${T}`));}).on("progress",i).on("console",(P,T)=>e.onConsole?.(P,T)).on("done",g).on("error",k);});i(0);let[C]=await Promise.all([a,p.wait]);return i(100),u.debug(V,`done ${o.join(",")} in ${Math.round(performance.now()-s)}ms`),{...C,options:n}}catch(a){throw p.kill(),t?.throwIfAborted(),a}finally{clearTimeout(y),t?.removeEventListener("abort",x);}}export{re as a,ze as b,te as c,oe as d,Ze as e,er as f,w as g,u as h,wr as i,Gr as j,Ae as k,Re as l,Ie as m,Oe as n,De as o,kr as p,ce as q,nt as r};//# sourceMappingURL=chunk-SMSS3H5W.js.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9od2FjY2VsLnRzIiwiLi4vc3JjL2Jhc2UvY2hyb21pdW0udHMiLCIuLi9zcmMvYmFzZS9wcm9jZXNzLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2VsZWN0cm9uLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInBhcnNlU3RyaW5nIiwicGFyc2VBcnJheSIsIml0ZW0iLCJzIiwicmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJwdXBMb2dMZXZlbCIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsIkRFQlVHIiwiSU5GTyIsIldBUk4iLCJFUlJPUiIsIkZBVEFMIiwic3RhY2tIb29rIiwidGFyZ2V0IiwiX2NvbnRleHQiLCJtZXNzYWdlcyIsInByb2Nlc3NlZCIsIm1zZyIsIl9mYXRhbF9kZWMiLCJfZXJyb3JfZGVjIiwiX3dhcm5fZGVjIiwiX2luZm9fZGVjIiwiX2RlYnVnX2RlYyIsIl9pbml0IiwiTG9nZ2VyIiwiX2xldmVsIiwiX19ydW5Jbml0aWFsaXplcnMiLCJfX3B1YmxpY0ZpZWxkIiwidmFsdWUiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJsdiIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsInJlamVjdCIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJMb2ciLCJsZXZlbCIsIkFWX0xPR19FUlJPUiIsIkFWX0xPR19XQVJOSU5HIiwibm9lcnIiLCJyZXQiLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX1dJTkRPV19USU1FT1VUIiwiREVGQVVMVF9PVVRfRklMRVMiLCJyZW5kZXJTY2hlbWEiLCJ6IiwiZGVmYXVsdFJlbmRlck9wdGlvbnMiLCJUQUciLCJkZXRlY3RHUFVEcml2ZXIiLCJodyIsIkhhcmR3YXJlQ29udGV4dCIsInJlc3VsdCIsImNhbklVc2VHUFUiLCJjaHJvbWl1bU9wdGlvbnMiLCJkaXNhYmxlR3B1IiwiZmVhdHVyZXMiLCJwbGF0IiwicGxhdGZvcm0iLCJQVVBfQVJHU19LRVkiLCJwYXJncyIsImFyZ3YiLCJwcml2IiwiYXJnIiwiZXhlYyIsImNtZCIsIm9wdGlvbnMiLCJwYXJ0cyIsImNvbW1hbmQiLCJzcGF3biIsImtpbGxlZCIsInBpZCIsInRyZWVLaWxsIiwiZWxlY3Ryb25PcHRzIiwicnVuRWxlY3Ryb25BcHAiLCJlbGVjdHJvbiIsInByb2ZpbGVEaXIiLCJta2R0ZW1wIiwidG1wZGlyIiwiZWxlY3Ryb25BcmdzIiwiYSIsImVudiIsImhhbmRsZSIsInJtU3luYyIsImUiLCJJcGNSZWFkZXIiLCJFdmVudEVtaXR0ZXIiLCJjaGlsZCIsInJhdyIsImMiLCJydW5QdXBBcHAiLCJzb3VyY2UiLCJyZW5kZXIiLCJkIiwicHVwIiwib3V0RmlsZXMiLCJyZW5kZXJPcHRzIiwidDAiLCJwcm9ncmVzcyIsInRpY2siLCJwIiwia2lsbFRpbWVyIiwi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QU0sV0FBQSxDQUFZLEdBQUEsRUFBSSxDQUFJRSxDQUFFLENBQUMsSUFBSSxDQUFBLENBQ2xGLENBQUUsR0FBR1EsQ0FBQUEsQ0FBUyxPQUFBLENBQVNULENBQVcsQ0FDM0MsQ0FBQSxNQUFTWixDQUFBQSxDQUFHLENBQ1YsTUFBQUYsQ0FBQUEsQ0FBTyxJQUFBLEVBQUssQ0FDWnZELENBQUFBLEVBQVEsY0FBQSxFQUFlLENBQ2pCeUQsQ0FDUixDQUFBLE9BQUUsQ0FDQSxZQUFBLENBQWFpQixDQUFTLENBQUEsQ0FDdEIxRSxDQUFBQSxFQUFRLG1CQUFBLENBQW9CLE9BQUEsQ0FBUzJFLENBQU8sRUFDOUMsQ0FDRiIsImZpbGUiOiJjaHVuay1TTVNTM0g1Vy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDUvMjYuXG5cbmltcG9ydCB0eXBlIHsgTG9nZ2VyTGlrZSB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuY29uc3QgQkFSX1dJRFRIID0gNDA7XG5cbmludGVyZmFjZSBCYXJPcHRpb25zIHtcbiAgdG90YWw6IG51bWJlcjtcbiAgb3V0OiBOb2RlSlMuV3JpdGVTdHJlYW07XG4gIHNob3dDb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0JhciB7XG4gIHByaXZhdGUgX3dyaXR0ZW4gPSAwO1xuICBwcml2YXRlIF9zaG93biA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b3RhbDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXQ6IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHR5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaG93Q291bnQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Iob3B0czogQmFyT3B0aW9ucykge1xuICAgIHRoaXMuX3RvdGFsID0gb3B0cy50b3RhbDtcbiAgICB0aGlzLl9vdXQgPSBvcHRzLm91dDtcbiAgICB0aGlzLl90dHkgPSAhIW9wdHMub3V0LmlzVFRZO1xuICAgIHRoaXMuX3Nob3dDb3VudCA9IG9wdHMuc2hvd0NvdW50ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHRvdGFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsO1xuICB9XG5cbiAgdXBkYXRlKHdyaXR0ZW46IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3dyaXR0ZW4gPSBNYXRoLm1pbih0aGlzLl90b3RhbCwgTWF0aC5tYXgoMCwgd3JpdHRlbikpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cGRhdGVQZXJjZW50KHBjdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGUoTWF0aC5yb3VuZCgocGN0IC8gMTAwKSAqIHRoaXMuX3RvdGFsKSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHR5ICYmIHRoaXMuX3Nob3duKSB7XG4gICAgICB0aGlzLl9vdXQud3JpdGUoXCJcXHJcXHgxYlsyS1wiKTtcbiAgICB9XG4gIH1cblxuICByZWRyYXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxvZyhsaW5lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5fb3V0LndyaXRlKGAke2xpbmV9XFxuYCk7XG4gICAgdGhpcy5yZWRyYXcoKTtcbiAgfVxuXG4gIGZpbmlzaChsaW5lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5fb3V0LndyaXRlKGAke2xpbmV9XFxuYCk7XG4gICAgdGhpcy5fc2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl93cml0dGVuID09PSAwICYmICF0aGlzLl9zaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByYXRpbyA9IHRoaXMuX3RvdGFsID4gMCA/IHRoaXMuX3dyaXR0ZW4gLyB0aGlzLl90b3RhbCA6IDA7XG4gICAgY29uc3QgZmlsbGVkID0gTWF0aC5yb3VuZChyYXRpbyAqIEJBUl9XSURUSCk7XG4gICAgY29uc3QgYmFyID0gXCIjXCIucmVwZWF0KGZpbGxlZCkgKyBcIi1cIi5yZXBlYXQoQkFSX1dJRFRIIC0gZmlsbGVkKTtcbiAgICBjb25zdCBwY3QgPSBNYXRoLnJvdW5kKHJhdGlvICogMTAwKTtcbiAgICBjb25zdCBzdWZmaXggPSB0aGlzLl9zaG93Q291bnQgPyBgJHt0aGlzLl93cml0dGVufS8ke3RoaXMuX3RvdGFsfSAoJHtwY3R9JSlgIDogYCR7cGN0fSVgO1xuICAgIHRoaXMuX291dC53cml0ZShgXFxyWyR7YmFyfV0gJHtzdWZmaXh9YCk7XG4gICAgdGhpcy5fc2hvd24gPSB0cnVlO1xuICB9XG59XG5cbi8vIEFyb3VuZCBlYWNoIGNvbnNvbGUuKiBjYWxsLCBjbGVhciB0aGUgYmFyIGxpbmUgdGhlbiByZWRyYXcg4oCUIGtlZXBzIG5hdGl2ZSBjb25zb2xlIGNvbG9yaW5nIGludGFjdC5cbmV4cG9ydCBmdW5jdGlvbiBiYXJMb2dnZXIoYmFyOiBQcm9ncmVzc0Jhcik6IExvZ2dlckxpa2Uge1xuICBjb25zdCB3cmFwID1cbiAgICA8VCBleHRlbmRzICguLi5hOiB1bmtub3duW10pID0+IHZvaWQ+KGZuOiBUKSA9PlxuICAgICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgIGJhci5jbGVhcigpO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgICBiYXIucmVkcmF3KCk7XG4gICAgfTtcbiAgcmV0dXJuIHtcbiAgICBkZWJ1Zzogd3JhcChjb25zb2xlLmRlYnVnKSxcbiAgICBpbmZvOiB3cmFwKGNvbnNvbGUuaW5mbyksXG4gICAgd2Fybjogd3JhcChjb25zb2xlLndhcm4pLFxuICAgIGVycm9yOiB3cmFwKGNvbnNvbGUuZXJyb3IpLFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuZXhwb3J0IHR5cGUgRW52UGFyc2VyPFQ+ID0gKHZhbHVlOiB1bmtub3duKSA9PiBUO1xuXG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU6IFQpOiBUO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU/OiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlcihwcm9jZXNzLmVudltuYW1lXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWJlcih4OiB1bmtub3duKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgY29uc3QgbnVtID0gTnVtYmVyKHgpO1xuICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlICR7eH0gaXMgbm90IGEgdmFsaWQgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIG51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyaW5nKHg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4geDtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHgpO1xufVxuXG4vLyBDb21tYS1zZXBhcmF0ZWQgc3RyaW5nIOKGkiBhcnJheSB2aWEgYSBwZXItaXRlbSBwYXJzZXI7IGVtcHR5L2JsYW5rIOKGkiBbXS5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFycmF5PFQ+KGl0ZW06ICh4OiB1bmtub3duKSA9PiBUKTogKHg6IHVua25vd24pID0+IFRbXSB7XG4gIHJldHVybiAoeCkgPT4ge1xuICAgIGlmICh0eXBlb2YgeCAhPT0gXCJzdHJpbmdcIiB8fCB4LnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4geC5zcGxpdChcIixcIikubWFwKChzKSA9PiBpdGVtKHMudHJpbSgpKSk7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGVudiB9IGZyb20gXCIuL2VudlwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9wYXJzZXJcIjtcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuZXhwb3J0IGNvbnN0IHB1cExvZ0xldmVsID0gcGVudihcIlBVUF9MT0dfTEVWRUxcIiwgcGFyc2VOdW1iZXIsIDIpO1xuXG5leHBvcnQgY29uc3QgcHVwUGtnUm9vdCA9IGRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKFwicHVwLXJlY29yZGVyL3BhY2thZ2UuanNvblwiKSk7XG5leHBvcnQgY29uc3QgcHVwQXBwID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJhcHAuY2pzXCIpO1xuZXhwb3J0IGNvbnN0IHB1cEF1ZGlvUHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwicnVudGltZVwiLCBcImF1ZGlvX3ByZWxvYWQuY2pzXCIpO1xuZXhwb3J0IGNvbnN0IHB1cFNob290UHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwicnVudGltZVwiLCBcInNob290X3ByZWxvYWQuY2pzXCIpO1xuZXhwb3J0IGNvbnN0IHB1cFJlbmRlclByZWxvYWQgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcInJ1bnRpbWVcIiwgXCJyZW5kZXJfcHJlbG9hZC5janNcIik7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA2LlxuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IExvZyB9IGZyb20gXCJub2RlLWF2XCI7XG5pbXBvcnQgeyBBVl9MT0dfRVJST1IsIEFWX0xPR19XQVJOSU5HIH0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckxpa2Uge1xuICBkZWJ1Zz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgaW5mbz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgd2Fybj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgZXJyb3I/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xufVxuXG5jb25zdCBERUJVRyA9IFwiPHB1cEBkZWJ1Zz5cIjtcbmNvbnN0IElORk8gPSBcIjxwdXBAaW5mbz5cIjtcbmNvbnN0IFdBUk4gPSBcIjxwdXBAd2Fybj5cIjtcbmNvbnN0IEVSUk9SID0gXCI8cHVwQGVycm9yPlwiO1xuY29uc3QgRkFUQUwgPSBcIjxwdXBAZmF0YWw+XCI7XG5cbmZ1bmN0aW9uIHN0YWNrSG9vayh0YXJnZXQ6ICguLi5tZXNzYWdlczogdW5rbm93bltdKSA9PiB1bmtub3duLCBfY29udGV4dDogQ2xhc3NNZXRob2REZWNvcmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogTG9nZ2VyLCAuLi5tZXNzYWdlczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gbWVzc2FnZXMubWFwKChtc2cpID0+IHtcbiAgICAgIHJldHVybiBtc2cgaW5zdGFuY2VvZiBFcnJvciA/IChtc2cuc3RhY2sgPz8gU3RyaW5nKG1zZykpIDogbXNnO1xuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQuY2FsbCh0aGlzLCAuLi5wcm9jZXNzZWQpO1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyTGlrZSB7XG4gIHByaXZhdGUgX2ltcGw/OiBMb2dnZXJMaWtlO1xuXG4gIGdldCBsZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgfVxuXG4gIHNldCBsZXZlbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGV2ZWwgPSB2YWx1ZTtcbiAgICB0aGlzLmltcGwgPSB0aGlzLl9pbXBsID8/IGNvbnNvbGU7XG4gIH1cblxuICBnZXQgaW1wbCgpOiBMb2dnZXJMaWtlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW1wbDtcbiAgfVxuXG4gIHNldCBpbXBsKHZhbHVlOiBMb2dnZXJMaWtlKSB7XG4gICAgY29uc3QgZGVidWcgPSB2YWx1ZS5kZWJ1ZyA/PyBjb25zb2xlLmRlYnVnO1xuICAgIGNvbnN0IGluZm8gPSB2YWx1ZS5pbmZvID8/IGNvbnNvbGUuaW5mbztcbiAgICBjb25zdCB3YXJuID0gdmFsdWUud2FybiA/PyBjb25zb2xlLndhcm47XG4gICAgY29uc3QgZXJyb3IgPSB2YWx1ZS5lcnJvciA/PyBjb25zb2xlLmVycm9yO1xuICAgIGNvbnN0IGx2ID0gdGhpcy5fbGV2ZWw7XG4gICAgdGhpcy5faW1wbCA9IHtcbiAgICAgIGRlYnVnOiBsdiA+PSAzID8gZGVidWcgOiB1bmRlZmluZWQsXG4gICAgICBpbmZvOiBsdiA+PSAyID8gaW5mbyA6IHVuZGVmaW5lZCxcbiAgICAgIHdhcm46IGx2ID49IDEgPyB3YXJuIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IGx2ID49IDAgPyBlcnJvciA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGV2ZWw6IG51bWJlciA9IHB1cExvZ0xldmVsKSB7XG4gICAgdGhpcy5pbXBsID0gY29uc29sZTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZGVidWcoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZGVidWc/LihERUJVRywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBpbmZvKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmluZm8/LihJTkZPLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIHdhcm4oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8ud2Fybj8uKFdBUk4sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZXJyb3IoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihFUlJPUiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBmYXRhbCguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEZBVEFMLCAuLi5tZXNzYWdlcyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlLnRyaW1FbmQoKTtcbiAgICBpZiAobXNnLnN0YXJ0c1dpdGgoREVCVUcpKSB7XG4gICAgICB0aGlzLmRlYnVnKG1zZy5zbGljZShERUJVRy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChJTkZPKSkge1xuICAgICAgdGhpcy5pbmZvKG1zZy5zbGljZShJTkZPLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKFdBUk4pKSB7XG4gICAgICB0aGlzLndhcm4obXNnLnNsaWNlKFdBUk4ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoRVJST1IpKSB7XG4gICAgICB0aGlzLmVycm9yKG1zZy5zbGljZShFUlJPUi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5mbyhtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaChwcm9jOiBDaGlsZFByb2Nlc3MsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmF0dGFjaGApO1xuICAgICAgbGV0IGZhdGFsOiBzdHJpbmcgPSBcIlwiO1xuICAgICAgY29uc3QgZGlzcGF0Y2ggPSAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoRkFUQUwpKSB7XG4gICAgICAgICAgZmF0YWwgKz0gbWVzc2FnZS5zbGljZShGQVRBTC5sZW5ndGggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcHJvYy5zdGRlcnI/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jLnN0ZG91dD8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2NcbiAgICAgICAgLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIGZhdGFsICs9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIHByb2Mua2lsbCgpO1xuICAgICAgICB9KVxuICAgICAgICAub25jZShcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgICBpZiAoY29kZSB8fCBzaWduYWwgfHwgZmF0YWwpIHtcbiAgICAgICAgICAgIGZhdGFsIHx8PSBgY29tbWFuZCBmYWlsZWQ6ICR7cHJvYy5zcGF3bmFyZ3Muam9pbihcIiBcIil9YDtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgLCB7IGNvZGUsIHNpZ25hbCwgZmF0YWwgfSk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGZhdGFsKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAocmVhc29uKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCByZWFzb24pO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4vLyBSb3V0ZSBmZm1wZWcgbmF0aXZlIGxvZ3MgdGhyb3VnaCBwdXAncyBsb2dnZXIuXG5Mb2cuc2V0Q2FsbGJhY2soKGxldmVsLCBtZXNzYWdlKSA9PiB7XG4gIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICBpZiAoIW1zZykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobGV2ZWwgPD0gQVZfTE9HX0VSUk9SKSB7XG4gICAgbG9nZ2VyLmVycm9yKG1zZyk7XG4gIH0gZWxzZSBpZiAobGV2ZWwgPD0gQVZfTE9HX1dBUk5JTkcpIHtcbiAgICBsb2dnZXIud2Fybihtc2cpO1xuICB9XG59KTtcblxuZXhwb3J0IHsgbG9nZ2VyIH07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI0LlxuXG5leHBvcnQgZnVuY3Rpb24gbm9lcnI8QSBleHRlbmRzIHVua25vd25bXSwgUiwgRD4oZm46ICguLi5hcmdzOiBBKSA9PiBSLCBkZWZhdWx0VmFsdWU6IEQpOiAoLi4uYXJnczogQSkgPT4gUiB8IEQge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0ID0gZm4oLi4uYXJncyk7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmV0LmNhdGNoKCgpID0+IGRlZmF1bHRWYWx1ZSkgYXMgUiB8IEQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA2LlxuXG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gMTkyMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9IDEwODA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GUFMgPSAzMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RVUkFUSU9OID0gNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJTkRPV19USU1FT1VUID0gMTA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRfRklMRVMgPSBbXCJvdXQvaHRtbC5tcDRcIiwgXCJvdXQvaHRtbC53ZWJtXCJdO1xuXG5leHBvcnQgY29uc3QgcmVuZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBkdXJhdGlvbjogei5udW1iZXIoKS5kZXNjcmliZShcIkR1cmF0aW9uIGluIHNlY29uZHNcIiksXG4gIHdpZHRoOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVmlkZW8gd2lkdGhcIiksXG4gIGhlaWdodDogei5udW1iZXIoKS5kZXNjcmliZShcIlZpZGVvIGhlaWdodFwiKSxcbiAgZnBzOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiRnJhbWVzIHBlciBzZWNvbmRcIiksXG4gIHdpdGhBdWRpbzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJDYXB0dXJlIGFuZCBlbmNvZGUgYXVkaW9cIiksXG4gIG91dEZpbGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLmRlc2NyaWJlKFwiT3V0cHV0IHBhdGhzOyBleHRlbnNpb24gKC5tcDQvLndlYm0pIHNlbGVjdHMgZW5jb2RlclwiKSxcbiAgdXNlSW5uZXJQcm94eTogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJVc2UgYmlsaWJpbGkgaW5uZXIgcHJveHkgZm9yIHJlc291cmNlIGFjY2Vzc1wiKSxcbiAgZGV0ZXJtaW5pc3RpYzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJSZW5kZXIgYnkgZnJhbWUgcmF0aGVyIHRoYW4gcmVjb3JkaW5nXCIpLFxuICBkaXNhYmxlR3B1OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkRpc2FibGUgR1BVIHJlbmRlcmluZywgbWF5IHJlZHVjZSBwZXJmb3JtYW5jZSBidXQgaW5jcmVhc2Ugc3RhYmlsaXR5XCIpLFxuICBkaXNhYmxlSHdDb2RlYzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGhhcmR3YXJlIHZpZGVvIGVuY29kZXIgKE5WRU5DL1ZpZGVvVG9vbGJveCksIHVzZSBzb2Z0d2FyZSB4MjY1XCIpLFxuICB3aW5kb3dUb2xlcmFudDogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJGYWxsIGJhY2sgdG8gZG9tLXJlYWR5IGlmIHdhcm11cCBsb2FkIHRpbWVzIG91dFwiKSxcbiAgd2luZG93VGltZW91dDogei5udW1iZXIoKS5kZXNjcmliZShcIldpbmRvdyBsb2FkIHRpbWVvdXQgaW4gc2Vjb25kc1wiKSxcbiAgc2NyZWVuc2hvdHM6IHouYXJyYXkoei5udW1iZXIoKSkuZGVzY3JpYmUoXCJTZWNvbmQgbWFya3MgdG8gZHVtcCBmcmFtZSBiaXRtYXBzIGFzIFBOR1wiKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBSZW5kZXJPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgcmVuZGVyU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ29uc29sZUNhbGxiYWNrID0gKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayA9IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQQ1JlbmRlck9wdGlvbnMgZXh0ZW5kcyBSZW5kZXJPcHRpb25zIHtcbiAgc291cmNlOiBzdHJpbmc7XG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG4gIG9uUHJvZ3Jlc3M6IFByb2dyZXNzQ2FsbGJhY2s7XG4gIG9uQ29uc29sZTogQ29uc29sZUNhbGxiYWNrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclJlc3VsdCB7XG4gIG9wdGlvbnM6IFJlbmRlck9wdGlvbnM7XG4gIHdyaXR0ZW46IG51bWJlcjtcbiAgamFuazogbnVtYmVyO1xuICBvdXRGaWxlczogc3RyaW5nW107XG4gIGJsYW5rOiBudW1iZXI7XG4gIHNjcmVlbnNob3RzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZW5kZXJPcHRpb25zOiBSZW5kZXJPcHRpb25zID0ge1xuICB3aWR0aDogREVGQVVMVF9XSURUSCxcbiAgaGVpZ2h0OiBERUZBVUxUX0hFSUdIVCxcbiAgZnBzOiBERUZBVUxUX0ZQUyxcbiAgZHVyYXRpb246IERFRkFVTFRfRFVSQVRJT04sXG4gIG91dEZpbGVzOiBERUZBVUxUX09VVF9GSUxFUyxcbiAgd2l0aEF1ZGlvOiBmYWxzZSxcbiAgdXNlSW5uZXJQcm94eTogZmFsc2UsXG4gIGRldGVybWluaXN0aWM6IGZhbHNlLFxuICBkaXNhYmxlR3B1OiBmYWxzZSxcbiAgZGlzYWJsZUh3Q29kZWM6IGZhbHNlLFxuICB3aW5kb3dUb2xlcmFudDogZmFsc2UsXG4gIHdpbmRvd1RpbWVvdXQ6IERFRkFVTFRfV0lORE9XX1RJTUVPVVQsXG4gIHNjcmVlbnNob3RzOiBbXSxcbn07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI3LlxuXG5pbXBvcnQgeyBIYXJkd2FyZUNvbnRleHQgfSBmcm9tIFwibm9kZS1hdi9hcGlcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuY29uc3QgVEFHID0gXCJbSFdBY2NlbF1cIjtcblxuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0R1BVRHJpdmVyKCkge1xuICBjb25zdCBodyA9IEhhcmR3YXJlQ29udGV4dC5hdXRvKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGh3ICE9PSBudWxsO1xuICBodz8uZGlzcG9zZSgpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgY2FuSVVzZUdQVSA9IGRldGVjdEdQVURyaXZlcigpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBcImdwdTpcIiwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNC8wMy5cblxuaW1wb3J0IHsgcGxhdGZvcm0gfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbklVc2VHUFUgfSBmcm9tIFwiLi9od2FjY2VsXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICBjb25zdCBvcHRzID0gW1xuICAgIC8vIOWuueWZqOaymeeusVxuICAgIFwibm8tc2FuZGJveFwiLFxuICAgIFwiZGlzYWJsZS1kZXYtc2htLXVzYWdlXCIsXG4gICAgLy8g6Leo5Z+fL+WuieWFqFxuICAgIFwiZGlzYWJsZS13ZWItc2VjdXJpdHlcIixcbiAgICBcImRpc2FibGUtc2l0ZS1pc29sYXRpb24tdHJpYWxzXCIsXG4gICAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gICAgLy8g5b2V5Yi26KGM5Li6XG4gICAgXCJkaXNhYmxlLWJsaW5rLWZlYXR1cmVzPUF1dG9tYXRpb25Db250cm9sbGVkXCIsXG4gICAgXCJtdXRlLWF1ZGlvXCIsXG4gICAgXCJhdXRvcGxheS1wb2xpY3k9bm8tdXNlci1nZXN0dXJlLXJlcXVpcmVkXCIsXG4gICAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgICBcImRlbnktcGVybWlzc2lvbi1wcm9tcHRzXCIsXG4gICAgXCJ1c2UtbW9jay1rZXljaGFpblwiLFxuICAgIC8vIOa4suafk1xuICAgIFwiZm9yY2UtZGV2aWNlLXNjYWxlLWZhY3Rvcj0xXCIsXG4gICAgXCJmb3JjZS1jb2xvci1wcm9maWxlPXNyZ2JcIixcbiAgICBcImlnbm9yZS1ncHUtYmxvY2tsaXN0XCIsXG4gICAgXCJ1c2UtZ2w9YW5nbGVcIixcbiAgICBcImRldGVybWluaXN0aWMtbW9kZVwiLFxuICAgIFwiZW5hYmxlLWJlZ2luLWZyYW1lLWNvbnRyb2xcIixcbiAgICBcImRpc2FibGUtbmV3LWNvbnRlbnQtcmVuZGVyaW5nLXRpbWVvdXRcIixcbiAgICBcInJ1bi1hbGwtY29tcG9zaXRvci1zdGFnZXMtYmVmb3JlLWRyYXdcIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtYW5pbWF0aW9uXCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLXNjcm9sbGluZ1wiLFxuICAgIFwiZGlzYWJsZS1jaGVja2VyLWltYWdpbmdcIixcbiAgICBcImRpc2FibGUtaW1hZ2UtYW5pbWF0aW9uLXJlc3luY1wiLFxuICAgIFwiZW5hYmxlLXN1cmZhY2Utc3luY2hyb25pemF0aW9uXCIsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3B1cHBldGVlci9wdXBwZXRlZXIvaXNzdWVzLzI0MTBcbiAgICBcImZvbnQtcmVuZGVyLWhpbnRpbmc9bm9uZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmdcIixcbiAgICBcImpzLWZsYWdzPS0tbWF4LW9sZC1zcGFjZS1zaXplPTUxMlwiLFxuICAgIFwicmVuZGVyZXItcHJvY2Vzcy1saW1pdD0xXCIsXG4gICAgXCJudW0tcmFzdGVyLXRocmVhZHM9MlwiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmdcIixcbiAgICBcImRpc2FibGUtcmVuZGVyZXItYmFja2dyb3VuZGluZ1wiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3NcIixcbiAgICAvLyDml6Xlv5fov73ouKpcbiAgICBcImVuYWJsZS1sb2dnaW5nPXN0ZGVyclwiLFxuICBdO1xuXG4gIGlmIChwdXBMb2dMZXZlbCA+PSAzKSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTBcIiwgXCJ2PTFcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTNcIik7XG4gIH1cblxuICBjb25zdCBmZWF0dXJlcyA9IFtcIkZvbnRhdGlvbkJhY2tlbmRcIl07XG4gIGNvbnN0IGVuYWJsZUdwdSA9IChhd2FpdCBjYW5JVXNlR1BVKSAmJiAhZGlzYWJsZUdwdTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImRpc2FibGUtZ3B1LXNhbmRib3hcIiwgXCJlbmFibGUtdW5zYWZlLXdlYmdwdVwiKTtcbiAgICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgICBpZiAocGxhdCA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPW1ldGFsXCIpO1xuICAgIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9ZDNkMTFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJkaXNhYmxlLXZ1bGthbi1zdXJmYWNlXCIpO1xuICAgICAgZmVhdHVyZXMucHVzaChcIlZ1bGthblwiKTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnB1c2goYGVuYWJsZS1mZWF0dXJlcz0ke2ZlYXR1cmVzLmpvaW4oXCIsXCIpfWApO1xuICByZXR1cm4gb3B0cztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmltcG9ydCB7IHR5cGUgQ2hpbGRQcm9jZXNzLCB0eXBlIFNwYXduT3B0aW9ucywgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgdHJlZUtpbGwgZnJvbSBcInRyZWUta2lsbFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5leHBvcnQgY29uc3QgUFVQX0FSR1NfS0VZID0gXCItLXB1cC1wcml2LWFyZ3NcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmdzKCkge1xuICBjb25zdCBhcmd2ID0gcHJvY2Vzcy5hcmd2O1xuICBsZXQgcHJpdiA9IGFyZ3YuZmluZCgoYXJnKSA9PiBhcmcuc3RhcnRzV2l0aChQVVBfQVJHU19LRVkpKTtcbiAgaWYgKCFwcml2KSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicHJvY2FyZ3ZcIiwgYXJndik7XG4gICAgcmV0dXJuIHByb2Nlc3MuYXJndjtcbiAgfVxuICBjb25zdCBhcmdzID0gW1wiZXhlY1wiLCAuLi5hcmd2LnNsaWNlKC0xKV07XG4gIHByaXYgPSBCdWZmZXIuZnJvbShwcml2LnNwbGl0KFwiPVwiKVsxXSEsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKCk7XG4gIGFyZ3MucHVzaCguLi5KU09OLnBhcnNlKHByaXYpKTtcbiAgbG9nZ2VyLmRlYnVnKFwicHVwYXJnc1wiLCBhcmdzKTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0hhbmRsZSB7XG4gIHByb2Nlc3M6IENoaWxkUHJvY2VzcztcbiAgd2FpdDogUHJvbWlzZTx2b2lkPjtcbiAgZ2V0IGtpbGxlZCgpOiBib29sZWFuO1xuICBraWxsKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNtZDogc3RyaW5nLCBvcHRpb25zPzogU3Bhd25PcHRpb25zKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHBhcnRzID0gY21kLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoKTtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLmFyZ3NdID0gcGFydHM7XG4gIGlmICghY29tbWFuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImVtcHR5IGNvbW1hbmRcIik7XG4gIH1cbiAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG4gIGxldCBraWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzOiBwcm9jLFxuICAgIHdhaXQ6IGxvZ2dlci5hdHRhY2gocHJvYywgY29tbWFuZCksXG4gICAgZ2V0IGtpbGxlZCgpIHtcbiAgICAgIHJldHVybiBraWxsZWQ7XG4gICAgfSxcbiAgICBraWxsKCkge1xuICAgICAgaWYgKGtpbGxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBraWxsZWQgPSB0cnVlO1xuICAgICAgY29uc3QgcGlkID0gcHJvYy5waWQ7XG4gICAgICBpZiAocGlkKSB7XG4gICAgICAgIHRyZWVLaWxsKHBpZCwgXCJTSUdLSUxMXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvYy5raWxsKFwiU0lHS0lMTFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgcm1TeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IG1rZHRlbXAgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjaHJvbWl1bU9wdGlvbnMgfSBmcm9tIFwiLi4vYmFzZS9jaHJvbWl1bVwiO1xuaW1wb3J0IHsgcHVwQXBwIH0gZnJvbSBcIi4uL2Jhc2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjLCBQVVBfQVJHU19LRVkgfSBmcm9tIFwiLi4vYmFzZS9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbGVjdHJvbk9wdHMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICByZXR1cm4gWy4uLihhd2FpdCBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdSkpLCBcImhlYWRsZXNzPW5ld1wiXTtcbn1cblxuY29uc3QgVEFHID0gXCJbRWxlY3Ryb25dXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRWxlY3Ryb25BcHBPcHRpb25zIHtcbiAgYXJnczogdW5rbm93bltdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH06IFJ1bkVsZWN0cm9uQXBwT3B0aW9ucykge1xuICAvLyBMYXp5OiBlbGVjdHJvbidzIGVudHJ5IHRocm93cyBpZiB0aGUgYmluYXJ5IGlzIGFic2VudCwgc28gdXRpbC1vbmx5IGNvbnN1bWVycyBtdXN0IG5vdCBsb2FkIGl0IGF0IGltcG9ydCB0aW1lLlxuICBjb25zdCB7IGRlZmF1bHQ6IGVsZWN0cm9uIH0gPSBhd2FpdCBpbXBvcnQoXCJlbGVjdHJvblwiKTtcbiAgY29uc3Qgb3B0cyA9IGF3YWl0IGVsZWN0cm9uT3B0cyhhcmdzLmluY2x1ZGVzKFwiLS1kaXNhYmxlLWdwdVwiKSk7XG4gIC8vIFBlci1wcm9jZXNzIHByb2ZpbGU6IGlzb2xhdGVzIHRoaXMgY2FsbCdzIENocm9taXVtIGNhY2hlICh3YXJtdXAgd2luZG93cyBzaGFyZSBpdCB2aWEgZGVmYXVsdFNlc3Npb24pLCB3aXBlZCBvbiBleGl0LlxuICBjb25zdCBwcm9maWxlRGlyID0gYXdhaXQgbWtkdGVtcChqb2luKHRtcGRpcigpLCBcInB1cC1wcm9maWxlLVwiKSk7XG4gIGNvbnN0IGVsZWN0cm9uQXJncyA9IG9wdHMubWFwKChhKSA9PiBgLS0ke2F9YCk7XG4gIGVsZWN0cm9uQXJncy5wdXNoKGAtLXVzZXItZGF0YS1kaXI9JHtwcm9maWxlRGlyfWApO1xuICBlbGVjdHJvbkFyZ3MucHVzaChgJHtQVVBfQVJHU19LRVl9PSR7QnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoYXJncykpLnRvU3RyaW5nKFwiYmFzZTY0XCIpfWApO1xuICBjb25zdCBjbWQgPSBbZWxlY3Ryb24sIC4uLmVsZWN0cm9uQXJncywgcHVwQXBwXS5qb2luKFwiIFwiKTtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgY21kKTtcblxuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0geyAuLi5wcm9jZXNzLmVudiwgUlVTVF9CQUNLVFJBQ0U6IFwiZnVsbFwiIH07XG4gIGNvbnN0IGhhbmRsZSA9IGV4ZWMoY21kLCB7IHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiLCBcImlwY1wiXSwgZW52IH0pO1xuICBoYW5kbGUucHJvY2Vzcy5vbmNlKFwiZXhpdFwiLCAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJtU3luYyhwcm9maWxlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oVEFHLCBcInByb2ZpbGUgY2xlYW51cCBmYWlsZWQ6XCIsIGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBoYW5kbGU7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzAxLlxuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJub2RlOmV2ZW50c1wiO1xuXG5leHBvcnQgZW51bSBJcGNNc2dUeXBlIHtcbiAgLy8gY2hpbGQg4oaSIHBhcmVudFxuICBDb25zb2xlID0gXCJjb25zb2xlXCIsXG4gIFByb2dyZXNzID0gXCJwcm9ncmVzc1wiLFxuICBEb25lID0gXCJkb25lXCIsXG4gIEVycm9yID0gXCJlcnJvclwiLFxuICAvLyBwYXJlbnQg4oaSIGNoaWxkXG4gIENhbmNlbCA9IFwiY2FuY2VsXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc29sZU1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuQ29uc29sZTtcbiAgbGV2ZWw6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbE1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuQ2FuY2VsO1xuICByZWFzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXBjRG9uZVBheWxvYWQge1xuICB3cml0dGVuOiBudW1iZXI7XG4gIGphbms6IG51bWJlcjtcbiAgb3V0RmlsZXM6IHN0cmluZ1tdO1xuICBibGFuazogbnVtYmVyO1xuICBzY3JlZW5zaG90czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLlByb2dyZXNzO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbmVNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkRvbmU7XG4gIHBheWxvYWQ6IElwY0RvbmVQYXlsb2FkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5FcnJvcjtcbiAgZXJyb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXBjTXNnID0gQ29uc29sZU1zZyB8IFByb2dyZXNzTXNnIHwgRG9uZU1zZyB8IEVycm9yTXNnIHwgQ2FuY2VsTXNnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElwY0V2ZW50cyB7XG4gIHByb2dyZXNzOiBbdmFsdWU6IG51bWJlcl07XG4gIGNvbnNvbGU6IFtsZXZlbDogc3RyaW5nLCBtc2c6IHN0cmluZ107XG4gIGRvbmU6IFtwYXlsb2FkOiBJcGNEb25lUGF5bG9hZF07XG4gIGVycm9yOiBbZXJyb3I6IEVycm9yXTtcbiAgY2xvc2U6IFtjb2RlOiBudW1iZXIgfCBudWxsXTtcbn1cblxuZXhwb3J0IGNsYXNzIElwY1dyaXRlciB7XG4gIHdyaXRlQ29uc29sZShsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkNvbnNvbGUsIGxldmVsLCBtZXNzYWdlIH0pO1xuICB9XG5cbiAgd3JpdGVQcm9ncmVzcyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5Qcm9ncmVzcywgdmFsdWUgfSk7XG4gIH1cblxuICB3cml0ZUVycm9yKGVycm9yOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5FcnJvciwgZXJyb3IgfSk7XG4gIH1cblxuICB3cml0ZURvbmUocGF5bG9hZDogSXBjRG9uZVBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5Eb25lLCBwYXlsb2FkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kKG1zZzogSXBjTXNnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoIXByb2Nlc3Muc2VuZCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5zZW5kKG1zZywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXBjUmVhZGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyPElwY0V2ZW50cz4ge1xuICBjb25zdHJ1Y3RvcihjaGlsZDogQ2hpbGRQcm9jZXNzKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjaGlsZC5vbihcIm1lc3NhZ2VcIiwgKHJhdykgPT4ge1xuICAgICAgY29uc3QgbXNnID0gcmF3IGFzIElwY01zZztcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkNvbnNvbGU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjb25zb2xlXCIsIG1zZy5sZXZlbCwgbXNnLm1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5Qcm9ncmVzczoge1xuICAgICAgICAgIHRoaXMuZW1pdChcInByb2dyZXNzXCIsIG1zZy52YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkRvbmU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJkb25lXCIsIG1zZy5wYXlsb2FkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuRXJyb3I6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgRXJyb3IobXNnLmVycm9yKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjaGlsZC5vbmNlKFwiZXhpdFwiLCAoYykgPT4gdGhpcy5lbWl0KFwiY2xvc2VcIiwgYykpO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IHJ1bkVsZWN0cm9uQXBwIH0gZnJvbSBcIi4vcmVuZGVyZXIvZWxlY3Ryb25cIjtcbmltcG9ydCB7IHR5cGUgSXBjRG9uZVBheWxvYWQsIElwY01zZ1R5cGUsIElwY1JlYWRlciB9IGZyb20gXCIuL3JlbmRlcmVyL2lwY1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25zb2xlQ2FsbGJhY2ssXG4gIGRlZmF1bHRSZW5kZXJPcHRpb25zLFxuICB0eXBlIFByb2dyZXNzQ2FsbGJhY2ssXG4gIHR5cGUgUmVuZGVyT3B0aW9ucyxcbiAgdHlwZSBSZW5kZXJSZXN1bHQsXG59IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG5jb25zdCBUQUcgPSBcIltwdXBdXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVuZGVyT3B0aW9ucz4ge1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XG4gIG9uQ29uc29sZT86IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXBSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHQge31cblxuYXN5bmMgZnVuY3Rpb24gcnVuUHVwQXBwKHNvdXJjZTogc3RyaW5nLCByZW5kZXI6IFJlbmRlck9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHJ1blB1cEFwcGAsIHNvdXJjZSwgcmVuZGVyKTtcblxuICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtcbiAgICBzb3VyY2UsXG4gICAgYC0td2lkdGhgLFxuICAgIGAke3JlbmRlci53aWR0aH1gLFxuICAgIGAtLWhlaWdodGAsXG4gICAgYCR7cmVuZGVyLmhlaWdodH1gLFxuICAgIGAtLWZwc2AsXG4gICAgYCR7cmVuZGVyLmZwc31gLFxuICAgIGAtLWR1cmF0aW9uYCxcbiAgICBgJHtyZW5kZXIuZHVyYXRpb259YCxcbiAgICBgLS13aW5kb3ctdGltZW91dGAsXG4gICAgYCR7cmVuZGVyLndpbmRvd1RpbWVvdXR9YCxcbiAgICBgLS1vdXQtZmlsZWAsXG4gICAgcmVuZGVyLm91dEZpbGVzLmpvaW4oXCIsXCIpLFxuICBdO1xuICBpZiAocmVuZGVyLndpdGhBdWRpbykge1xuICAgIGFyZ3MucHVzaChgLS13aXRoLWF1ZGlvYCk7XG4gIH1cbiAgaWYgKHJlbmRlci51c2VJbm5lclByb3h5KSB7XG4gICAgYXJncy5wdXNoKGAtLXVzZS1pbm5lci1wcm94eWApO1xuICB9XG4gIGlmIChyZW5kZXIuZGV0ZXJtaW5pc3RpYykge1xuICAgIGFyZ3MucHVzaChgLS1kZXRlcm1pbmlzdGljYCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kaXNhYmxlR3B1KSB7XG4gICAgYXJncy5wdXNoKGAtLWRpc2FibGUtZ3B1YCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kaXNhYmxlSHdDb2RlYykge1xuICAgIGFyZ3MucHVzaChgLS1kaXNhYmxlLWh3LWNvZGVjYCk7XG4gIH1cbiAgaWYgKHJlbmRlci53aW5kb3dUb2xlcmFudCkge1xuICAgIGFyZ3MucHVzaChgLS13aW5kb3ctdG9sZXJhbnRgKTtcbiAgfVxuICBpZiAocmVuZGVyLnNjcmVlbnNob3RzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzLnB1c2goYC0tc2NyZWVuc2hvdHNgLCByZW5kZXIuc2NyZWVuc2hvdHMuam9pbihcIixcIikpO1xuICB9XG5cbiAgcmV0dXJuIHJ1bkVsZWN0cm9uQXBwKHsgYXJncyB9KTtcbn1cblxuY29uc3QgZCA9IGRlZmF1bHRSZW5kZXJPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVwKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQYXJ0aWFsPFB1cE9wdGlvbnM+KTogUHJvbWlzZTxQdXBSZXN1bHQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgeyBzaWduYWwgfSA9IG9wdGlvbnM7XG4gIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBjb25zdCBvdXRGaWxlcyA9IG9wdGlvbnMub3V0RmlsZXMgPz8gZC5vdXRGaWxlcztcbiAgY29uc3QgcmVuZGVyT3B0czogUmVuZGVyT3B0aW9ucyA9IHtcbiAgICB3aWR0aDogb3B0aW9ucy53aWR0aCA/PyBkLndpZHRoLFxuICAgIGhlaWdodDogb3B0aW9ucy5oZWlnaHQgPz8gZC5oZWlnaHQsXG4gICAgZnBzOiBvcHRpb25zLmZwcyA/PyBkLmZwcyxcbiAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiA/PyBkLmR1cmF0aW9uLFxuICAgIHdpdGhBdWRpbzogb3B0aW9ucy53aXRoQXVkaW8gPz8gZC53aXRoQXVkaW8sXG4gICAgdXNlSW5uZXJQcm94eTogb3B0aW9ucy51c2VJbm5lclByb3h5ID8/IGQudXNlSW5uZXJQcm94eSxcbiAgICBkZXRlcm1pbmlzdGljOiBvcHRpb25zLmRldGVybWluaXN0aWMgPz8gZC5kZXRlcm1pbmlzdGljLFxuICAgIGRpc2FibGVHcHU6IG9wdGlvbnMuZGlzYWJsZUdwdSA/PyBkLmRpc2FibGVHcHUsXG4gICAgZGlzYWJsZUh3Q29kZWM6IG9wdGlvbnMuZGlzYWJsZUh3Q29kZWMgPz8gZC5kaXNhYmxlSHdDb2RlYyxcbiAgICB3aW5kb3dUb2xlcmFudDogb3B0aW9ucy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgIHdpbmRvd1RpbWVvdXQ6IG9wdGlvbnMud2luZG93VGltZW91dCA/PyBkLndpbmRvd1RpbWVvdXQsXG4gICAgc2NyZWVuc2hvdHM6IG9wdGlvbnMuc2NyZWVuc2hvdHMgPz8gZC5zY3JlZW5zaG90cyxcbiAgICBvdXRGaWxlcyxcbiAgfTtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgcHJvZ3Jlc3MgPSAwO1xuICBjb25zdCB0aWNrID0gKHA6IG51bWJlcikgPT4ge1xuICAgIHByb2dyZXNzID0gcDtcbiAgICBvcHRpb25zLm9uUHJvZ3Jlc3M/LihwKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCByZW5kZXJPcHRzKTtcblxuICBsZXQga2lsbFRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICBoYW5kbGUucHJvY2Vzcy5zZW5kPy4oeyB0eXBlOiBJcGNNc2dUeXBlLkNhbmNlbCwgcmVhc29uOiBTdHJpbmcoc2lnbmFsPy5yZWFzb24gPz8gXCJhYm9ydFwiKSB9KTtcbiAgICBraWxsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZS5raWxsKCksIDVfMDAwKTtcbiAgfTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2U8SXBjRG9uZVBheWxvYWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBJcGNSZWFkZXIoaGFuZGxlLnByb2Nlc3MpXG4gICAgICAgIC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoeyBzb3VyY2UsIHByb2dyZXNzLCBjb2RlLCBraWxsZWQ6IGhhbmRsZS5raWxsZWQgfSk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgY3Jhc2hlZDogJHttc2d9YCkpO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJwcm9ncmVzc1wiLCB0aWNrKVxuICAgICAgICAub24oXCJjb25zb2xlXCIsIChsLCBtKSA9PiBvcHRpb25zLm9uQ29uc29sZT8uKGwsIG0pKVxuICAgICAgICAub24oXCJkb25lXCIsIHJlc29sdmUpXG4gICAgICAgIC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgdGljaygwKTtcbiAgICBjb25zdCBbc3VtbWFyeV0gPSBhd2FpdCBQcm9taXNlLmFsbChbcmVzdWx0LCBoYW5kbGUud2FpdF0pO1xuICAgIHRpY2soMTAwKTtcbiAgICBsb2dnZXIuZGVidWcoVEFHLCBgZG9uZSAke291dEZpbGVzLmpvaW4oXCIsXCIpfSBpbiAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcbiAgICByZXR1cm4geyAuLi5zdW1tYXJ5LCBvcHRpb25zOiByZW5kZXJPcHRzIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGUua2lsbCgpO1xuICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICB0aHJvdyBlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dChraWxsVGltZXIpO1xuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpO1xuICB9XG59XG4iXX0=
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- import'source-map-support/register.js';import {n,o,g,d,f,h,a,b as b$1,p}from'./chunk-LQ5XNASZ.js';import {realpathSync}from'fs';import {resolve}from'path';import {program}from'commander';function G(r){if(r.includes("://")||r.startsWith("data:"))return r;let e;try{e=realpathSync(r);}catch{e=resolve(r);}return `file://${e}`}async function b(r){let e=n.shape,i=o;program.name(r.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",e.width.description,`${i.width}`).option("-H, --height <number>",e.height.description,`${i.height}`).option("-f, --fps <number>",e.fps.description,`${i.fps}`).option("-t, --duration <number>",e.duration.description,`${i.duration}`).option("-o, --out-file <path>",e.outFile.description,i.outFile).option("-a, --with-audio",e.withAudio.description,i.withAudio).option("-d, --deterministic",e.deterministic.description,i.deterministic).option("--use-inner-proxy",e.useInnerProxy.description,i.useInnerProxy).option("--disable-gpu",e.disableGpu.description,i.disableGpu).option("--disable-hw-codec",e.disableHwCodec.description,i.disableHwCodec).option("--window-tolerant",e.windowTolerant.description,i.windowTolerant).option("--window-timeout <number>",e.windowTimeout.description,`${i.windowTimeout}`).action(async(s,o)=>{try{await r.run(G(s),{width:g(d,i.width)(o.width),height:g(d,i.height)(o.height),fps:g(d,i.fps)(o.fps),duration:g(d,i.duration)(o.duration),outFile:o.outFile??i.outFile,withAudio:o.withAudio??i.withAudio,useInnerProxy:o.useInnerProxy??i.useInnerProxy,deterministic:o.deterministic??i.deterministic,disableGpu:o.disableGpu??i.disableGpu,disableHwCodec:o.disableHwCodec??i.disableHwCodec,windowTolerant:o.windowTolerant??i.windowTolerant,windowTimeout:g(d,i.windowTimeout)(o.windowTimeout)});}catch(n){f.fatal(n);}}),await program.parseAsync(h());}b({name:"pup",run:async(r,e)=>{let i=new AbortController,s=0;process.once("SIGTERM",()=>{s=143,i.abort(new Error("SIGTERM"));}),process.once("SIGINT",()=>{s=130,i.abort(new Error("SIGINT"));}),process.once("exit",t=>{s=t,i.abort(new Error("SIGKILL"));});let o=Math.ceil(e.fps*e.duration),n=new a({total:o,out:process.stderr,showCount:true});f.impl=b$1(n);let c=e.outFile.split(",").map(t=>t.trim()).filter(Boolean);n.log(`rendering ${r} \u2192 ${c.join(", ")}`);let I=performance.now();try{await p(r,{...e,signal:i.signal,onProgress:y=>n.updatePercent(y)});let t=((performance.now()-I)/1e3).toFixed(2);n.update(o),n.finish(`done: ${c.join(", ")} (${o} frames, ${e.width}x${e.height} @ ${e.fps}fps) in ${t}s`);}catch(t){n.finish(`error: ${t instanceof Error?t.message:String(t)}`);}finally{process.exit(s);}}});//# sourceMappingURL=cli.js.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwib3V0cyIsInQwIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IjJMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxFQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxDQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLENBQUEsQ0FDakIsUUFBQSxDQUFTLFVBQUEsQ0FBWSxvREFBb0QsQ0FBQSxDQUN6RSxNQUFBLENBQU8sc0JBQUEsQ0FBd0JDLENBQUFBLENBQU0sS0FBQSxDQUFNLFdBQUEsQ0FB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LE1BQU0sQ0FBQSxHQUFBLEVBQU1BLEVBQVEsR0FBRyxDQUFBLFFBQUEsRUFBV3dCLENBQUcsQ0FBQSxDQUFBLENBQzlHLEVBQ0YsQ0FBQSxNQUFTZCxDQUFBQSxDQUFHLENBQ1ZPLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsT0FBQSxFQUFVUCxDQUFBQSxZQUFhLEtBQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxPQUFBLENBQVUsTUFBQSxDQUFPQSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQ25FLENBQUEsT0FBRSxDQUNBLE9BQUEsQ0FBUSxJQUFBLENBQUtJLENBQVEsRUFDdkIsQ0FDRixDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9iYXNlL3BhcnNlclwiO1xuaW1wb3J0IHsgcGFyZ3MgfSBmcm9tIFwiLi9iYXNlL3Byb2Nlc3NcIjtcbmltcG9ydCB7IGRlZmF1bHRSZW5kZXJPcHRpb25zLCB0eXBlIFJlbmRlck9wdGlvbnMsIHJlbmRlclNjaGVtYSB9IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG4vLyBTY2hlbWVkIFVSSXMgcGFzcyB0aHJvdWdoOyBiYXJlIHBhdGhzIGdldCBjYW5vbmljYWxpemVkIGFuZCB3cmFwcGVkIGFzIGZpbGU6Ly8uXG5mdW5jdGlvbiBub3JtYWxpemVTb3VyY2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHMuaW5jbHVkZXMoXCI6Ly9cIikgfHwgcy5zdGFydHNXaXRoKFwiZGF0YTpcIikpIHtcbiAgICByZXR1cm4gcztcbiAgfVxuICBsZXQgYWJzOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgYWJzID0gcmVhbHBhdGhTeW5jKHMpO1xuICB9IGNhdGNoIHtcbiAgICBhYnMgPSByZXNvbHZlKHMpO1xuICB9XG4gIHJldHVybiBgZmlsZTovLyR7YWJzfWA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ0xJT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgcnVuOiAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFJlbmRlck9wdGlvbnMpID0+IFByb21pc2U8dW5rbm93bj47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWtlQ0xJKG9wdGlvbnM6IENMSU9wdGlvbnMpIHtcbiAgY29uc3Qgc2hhcGUgPSByZW5kZXJTY2hlbWEuc2hhcGU7XG4gIGNvbnN0IGQgPSBkZWZhdWx0UmVuZGVyT3B0aW9ucztcbiAgcHJvZ3JhbVxuICAgIC5uYW1lKG9wdGlvbnMubmFtZSlcbiAgICAuYXJndW1lbnQoXCI8c291cmNlPlwiLCBcImZpbGU6Ly8sIGh0dHAocyk6Ly8sIGRhdGE6IFVSSSwgb3IgZmlsZXN5c3RlbSBwYXRoXCIpXG4gICAgLm9wdGlvbihcIi1XLCAtLXdpZHRoIDxudW1iZXI+XCIsIHNoYXBlLndpZHRoLmRlc2NyaXB0aW9uLCBgJHtkLndpZHRofWApXG4gICAgLm9wdGlvbihcIi1ILCAtLWhlaWdodCA8bnVtYmVyPlwiLCBzaGFwZS5oZWlnaHQuZGVzY3JpcHRpb24sIGAke2QuaGVpZ2h0fWApXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke2QuZnBzfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtkLmR1cmF0aW9ufWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1maWxlIDxwYXRoPlwiLCBzaGFwZS5vdXRGaWxlLmRlc2NyaXB0aW9uLCBkLm91dEZpbGUpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBkLndpdGhBdWRpbylcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBkLmRldGVybWluaXN0aWMpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIGQudXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWdwdVwiLCBzaGFwZS5kaXNhYmxlR3B1LmRlc2NyaXB0aW9uLCBkLmRpc2FibGVHcHUpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ody1jb2RlY1wiLCBzaGFwZS5kaXNhYmxlSHdDb2RlYy5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlSHdDb2RlYylcbiAgICAub3B0aW9uKFwiLS13aW5kb3ctdG9sZXJhbnRcIiwgc2hhcGUud2luZG93VG9sZXJhbnQuZGVzY3JpcHRpb24sIGQud2luZG93VG9sZXJhbnQpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRpbWVvdXQgPG51bWJlcj5cIiwgc2hhcGUud2luZG93VGltZW91dC5kZXNjcmlwdGlvbiwgYCR7ZC53aW5kb3dUaW1lb3V0fWApXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9wdGlvbnMucnVuKG5vcm1hbGl6ZVNvdXJjZShzb3VyY2UpLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpZHRoKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmhlaWdodCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIGQuZnBzKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmR1cmF0aW9uKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXRGaWxlOiBvcHRzLm91dEZpbGUgPz8gZC5vdXRGaWxlLFxuICAgICAgICAgIHdpdGhBdWRpbzogb3B0cy53aXRoQXVkaW8gPz8gZC53aXRoQXVkaW8sXG4gICAgICAgICAgdXNlSW5uZXJQcm94eTogb3B0cy51c2VJbm5lclByb3h5ID8/IGQudXNlSW5uZXJQcm94eSxcbiAgICAgICAgICBkZXRlcm1pbmlzdGljOiBvcHRzLmRldGVybWluaXN0aWMgPz8gZC5kZXRlcm1pbmlzdGljLFxuICAgICAgICAgIGRpc2FibGVHcHU6IG9wdHMuZGlzYWJsZUdwdSA/PyBkLmRpc2FibGVHcHUsXG4gICAgICAgICAgZGlzYWJsZUh3Q29kZWM6IG9wdHMuZGlzYWJsZUh3Q29kZWMgPz8gZC5kaXNhYmxlSHdDb2RlYyxcbiAgICAgICAgICB3aW5kb3dUb2xlcmFudDogb3B0cy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgICAgICAgIHdpbmRvd1RpbWVvdXQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpbmRvd1RpbWVvdXQpKG9wdHMud2luZG93VGltZW91dCksXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIuZmF0YWwoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIGF3YWl0IHByb2dyYW0ucGFyc2VBc3luYyhwYXJncygpKTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmltcG9ydCB7IGJhckxvZ2dlciwgUHJvZ3Jlc3NCYXIgfSBmcm9tIFwiLi9iYXNlL2NsaV91aVwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBtYWtlQ0xJIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBwdXAgfSBmcm9tIFwiLi9wdXBcIjtcblxubWFrZUNMSSh7XG4gIG5hbWU6IFwicHVwXCIsXG4gIHJ1bjogYXN5bmMgKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICBwcm9jZXNzLm9uY2UoXCJTSUdURVJNXCIsICgpID0+IHtcbiAgICAgIGV4aXRDb2RlID0gMTQzO1xuICAgICAgY3RybC5hYm9ydChuZXcgRXJyb3IoXCJTSUdURVJNXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJTSUdJTlRcIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxMzA7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0lOVFwiKSk7XG4gICAgfSk7XG4gICAgcHJvY2Vzcy5vbmNlKFwiZXhpdFwiLCAoYykgPT4ge1xuICAgICAgZXhpdENvZGUgPSBjO1xuICAgICAgY3RybC5hYm9ydChuZXcgRXJyb3IoXCJTSUdLSUxMXCIpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvdGFsID0gTWF0aC5jZWlsKG9wdGlvbnMuZnBzICogb3B0aW9ucy5kdXJhdGlvbik7XG4gICAgY29uc3QgYmFyID0gbmV3IFByb2dyZXNzQmFyKHsgdG90YWwsIG91dDogcHJvY2Vzcy5zdGRlcnIsIHNob3dDb3VudDogdHJ1ZSB9KTtcbiAgICBsb2dnZXIuaW1wbCA9IGJhckxvZ2dlcihiYXIpO1xuXG4gICAgY29uc3Qgb3V0cyA9IG9wdGlvbnMub3V0RmlsZVxuICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgLm1hcCgocykgPT4gcy50cmltKCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGJhci5sb2coYHJlbmRlcmluZyAke3NvdXJjZX0g4oaSICR7b3V0cy5qb2luKFwiLCBcIil9YCk7XG4gICAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBiYXIuZmluaXNoKFxuICAgICAgICBgZG9uZTogJHtvdXRzLmpvaW4oXCIsIFwiKX0gKCR7dG90YWx9IGZyYW1lcywgJHtvcHRpb25zLndpZHRofXgke29wdGlvbnMuaGVpZ2h0fSBAICR7b3B0aW9ucy5mcHN9ZnBzKSBpbiAke3NlY31zYCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
1
+ import'source-map-support/register.js';import {p,q,f,d,i,e,h,j,a,b,r}from'./chunk-SMSS3H5W.js';import {realpathSync}from'fs';import {resolve}from'path';import {program}from'commander';function A(r){if(r.includes("://")||r.startsWith("data:"))return r;let i;try{i=realpathSync(r);}catch{i=resolve(r);}return `file://${i}`}async function I(r){let i$1=p.shape,e$1=q;program.name(r.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",i$1.width.description,`${e$1.width}`).option("-H, --height <number>",i$1.height.description,`${e$1.height}`).option("-S, --screenshots <seconds>",i$1.screenshots.description,"").option("-f, --fps <number>",i$1.fps.description,`${e$1.fps}`).option("-t, --duration <number>",i$1.duration.description,`${e$1.duration}`).option("-o, --out-file <paths>",i$1.outFiles.description,e$1.outFiles.join(",")).option("-a, --with-audio",i$1.withAudio.description,e$1.withAudio).option("-d, --deterministic",i$1.deterministic.description,e$1.deterministic).option("--use-inner-proxy",i$1.useInnerProxy.description,e$1.useInnerProxy).option("--disable-gpu",i$1.disableGpu.description,e$1.disableGpu).option("--disable-hw-codec",i$1.disableHwCodec.description,e$1.disableHwCodec).option("--window-tolerant",i$1.windowTolerant.description,e$1.windowTolerant).option("--window-timeout <number>",i$1.windowTimeout.description,`${e$1.windowTimeout}`).action(async(a,o)=>{try{await r.run(A(a),{width:i(d,e$1.width)(o.width),height:i(d,e$1.height)(o.height),fps:i(d,e$1.fps)(o.fps),duration:i(d,e$1.duration)(o.duration),outFiles:f(e)(o.outFile),withAudio:o.withAudio??e$1.withAudio,useInnerProxy:o.useInnerProxy??e$1.useInnerProxy,deterministic:o.deterministic??e$1.deterministic,disableGpu:o.disableGpu??e$1.disableGpu,disableHwCodec:o.disableHwCodec??e$1.disableHwCodec,windowTolerant:o.windowTolerant??e$1.windowTolerant,windowTimeout:i(d,e$1.windowTimeout)(o.windowTimeout),screenshots:f(d)(o.screenshots)});}catch(t){h.fatal(t);}}),await program.parseAsync(j());}I({name:"pup",run:async(r$1,i)=>{let e=new AbortController,a$1=0;process.once("SIGTERM",()=>{a$1=143,e.abort(new Error("SIGTERM"));}),process.once("SIGINT",()=>{a$1=130,e.abort(new Error("SIGINT"));}),process.once("exit",n=>{a$1=n,e.abort(new Error("SIGKILL"));});let o=Math.ceil(i.fps*i.duration),t=new a({total:o,out:process.stderr,showCount:true});h.impl=b(t);let T=performance.now();try{let{screenshots:n,outFiles:u}=await r(r$1,{...i,signal:e.signal,onProgress:x=>t.updatePercent(x)}),$=((performance.now()-T)/1e3).toFixed(2);t.update(o),n.length&&t.log(`screenshots \u2192 ${n.join(",")}`),u.length&&t.log(`videos \u2192 ${u.join(",")}`),t.finish(`summary \u2192 ${o} frames, ${i.width}x${i.height} @ ${i.fps}fps in ${$}s`);}catch(n){t.finish(`error: ${n instanceof Error?n.message:String(n)}`);}finally{process.exit(a$1);}}});//# sourceMappingURL=cli.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsInBhcnNlQXJyYXkiLCJwYXJzZVN0cmluZyIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwidDAiLCJzY3JlZW5zaG90cyIsIm91dEZpbGVzIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IndMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsR0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxHQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLEVBQ2pCLFFBQUEsQ0FBUyxVQUFBLENBQVksb0RBQW9ELENBQUEsQ0FDekUsTUFBQSxD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QUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUU5Q0MsQ0FBQUEsQ0FBUyxNQUFBLEVBQ1hMLENBQUFBLENBQUksR0FBQSxDQUFJLENBQUEsY0FBQSxFQUFZSyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FFMUNMLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsZUFBQSxFQUFhRCxDQUFLLENBQUEsU0FBQSxFQUFZbEIsQ0FBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxFQUFJQSxDQUFBQSxDQUFRLE1BQU0sQ0FBQSxHQUFBLEVBQU1BLENBQUFBLENBQVEsR0FBRyxDQUFBLE9BQUEsRUFBVTJCLENBQUcsQ0FBQSxDQUFBLENBQUcsRUFDM0csQ0FBQSxNQUFTZixDQUFBQSxDQUFHLENBQ1ZPLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsT0FBQSxFQUFVUCxDQUFBQSxZQUFhLEtBQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxPQUFBLENBQVUsTUFBQSxDQUFPQSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQ25FLENBQUEsT0FBRSxDQUNBLE9BQUEsQ0FBUSxJQUFBLENBQUtJLEdBQVEsRUFDdkIsQ0FDRixDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VBcnJheSwgcGFyc2VOdW1iZXIsIHBhcnNlU3RyaW5nIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgdHlwZSBSZW5kZXJPcHRpb25zLCByZW5kZXJTY2hlbWEgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gcmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItUywgLS1zY3JlZW5zaG90cyA8c2Vjb25kcz5cIiwgc2hhcGUuc2NyZWVuc2hvdHMuZGVzY3JpcHRpb24sIFwiXCIpXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke2QuZnBzfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtkLmR1cmF0aW9ufWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1maWxlIDxwYXRocz5cIiwgc2hhcGUub3V0RmlsZXMuZGVzY3JpcHRpb24sIGQub3V0RmlsZXMuam9pbihcIixcIikpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBkLndpdGhBdWRpbylcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBkLmRldGVybWluaXN0aWMpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIGQudXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWdwdVwiLCBzaGFwZS5kaXNhYmxlR3B1LmRlc2NyaXB0aW9uLCBkLmRpc2FibGVHcHUpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ody1jb2RlY1wiLCBzaGFwZS5kaXNhYmxlSHdDb2RlYy5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlSHdDb2RlYylcbiAgICAub3B0aW9uKFwiLS13aW5kb3ctdG9sZXJhbnRcIiwgc2hhcGUud2luZG93VG9sZXJhbnQuZGVzY3JpcHRpb24sIGQud2luZG93VG9sZXJhbnQpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRpbWVvdXQgPG51bWJlcj5cIiwgc2hhcGUud2luZG93VGltZW91dC5kZXNjcmlwdGlvbiwgYCR7ZC53aW5kb3dUaW1lb3V0fWApXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9wdGlvbnMucnVuKG5vcm1hbGl6ZVNvdXJjZShzb3VyY2UpLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpZHRoKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmhlaWdodCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIGQuZnBzKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmR1cmF0aW9uKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXRGaWxlczogcGFyc2VBcnJheShwYXJzZVN0cmluZykob3B0cy5vdXRGaWxlKSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgICB3aW5kb3dUaW1lb3V0OiBub2VycihwYXJzZU51bWJlciwgZC53aW5kb3dUaW1lb3V0KShvcHRzLndpbmRvd1RpbWVvdXQpLFxuICAgICAgICAgIHNjcmVlbnNob3RzOiBwYXJzZUFycmF5KHBhcnNlTnVtYmVyKShvcHRzLnNjcmVlbnNob3RzKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxNDM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpO1xuICAgIH0pO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCAoKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IDEzMDtcbiAgICAgIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IGM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0tJTExcIikpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHNjcmVlbnNob3RzLCBvdXRGaWxlcyB9ID0gYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBpZiAoc2NyZWVuc2hvdHMubGVuZ3RoKSB7XG4gICAgICAgIGJhci5sb2coYHNjcmVlbnNob3RzIOKGkiAke3NjcmVlbnNob3RzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG91dEZpbGVzLmxlbmd0aCkge1xuICAgICAgICBiYXIubG9nKGB2aWRlb3Mg4oaSICR7b3V0RmlsZXMuam9pbihcIixcIil9YCk7XG4gICAgICB9XG4gICAgICBiYXIuZmluaXNoKGBzdW1tYXJ5IOKGkiAke3RvdGFsfSBmcmFtZXMsICR7b3B0aW9ucy53aWR0aH14JHtvcHRpb25zLmhlaWdodH0gQCAke29wdGlvbnMuZnBzfWZwcyBpbiAke3NlY31zYCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import'source-map-support/register.js';export{l as DEFAULT_DURATION,k as DEFAULT_FPS,j as DEFAULT_HEIGHT,i as DEFAULT_WIDTH,m as DEFAULT_WINDOW_TIMEOUT,e as Logger,a as ProgressBar,b as barLogger,f as logger,g as noerr,d as parseNumber,c as penv,p as pup}from'./chunk-LQ5XNASZ.js';import {setTimeout as setTimeout$1}from'timers/promises';var a=class{constructor(e){this.makeValue=e;}makeValue;get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};function l(r){return new Promise(e=>setTimeout(e,r))}function _(r,e){let t,o=false;async function i(s){let n=await r(s);o||(t=setTimeout(()=>i(s+1),n??e));}return t=setTimeout(()=>i(0),e),()=>{o=true,clearTimeout(t);}}function E({fn:r,maxAttempts:e=3,timeout:t,signal:o}){let i=new Error(`timeout over ${t}ms`);return async(...s)=>{let n=0;for(;;){o?.throwIfAborted();try{let u=[r(...s)];return t&&u.push(setTimeout$1(t).then(()=>{throw i})),await Promise.race(u)}catch(u){if(o?.throwIfAborted(),n++,n>=e)throw u;await l(2**n*100+Math.random()*100);}}}}export{a as Lazy,_ as periodical,l as sleep,E as useRetry};//# sourceMappingURL=index.js.map
1
+ import'source-map-support/register.js';export{n as DEFAULT_DURATION,m as DEFAULT_FPS,l as DEFAULT_HEIGHT,k as DEFAULT_WIDTH,o as DEFAULT_WINDOW_TIMEOUT,g as Logger,a as ProgressBar,b as barLogger,h as logger,i as noerr,d as parseNumber,c as penv,r as pup}from'./chunk-SMSS3H5W.js';import {setTimeout as setTimeout$1}from'timers/promises';var a=class{constructor(e){this.makeValue=e;}makeValue;get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};function l(r){return new Promise(e=>setTimeout(e,r))}function _(r,e){let t,o=false;async function i(s){let n=await r(s);o||(t=setTimeout(()=>i(s+1),n??e));}return t=setTimeout(()=>i(0),e),()=>{o=true,clearTimeout(t);}}function E({fn:r,maxAttempts:e=3,timeout:t,signal:o}){let i=new Error(`timeout over ${t}ms`);return async(...s)=>{let n=0;for(;;){o?.throwIfAborted();try{let u=[r(...s)];return t&&u.push(setTimeout$1(t).then(()=>{throw i})),await Promise.race(u)}catch(u){if(o?.throwIfAborted(),n++,n>=e)throw u;await l(2**n*100+Math.random()*100);}}}}export{a as Lazy,_ as periodical,l as sleep,E as useRetry};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2xhenkudHMiLCIuLi9zcmMvYmFzZS90aW1pbmcudHMiLCIuLi9zcmMvYmFzZS9yZXRyeS50cyJdLCJuYW1lcyI6WyJMYXp5IiwibWFrZVZhbHVlIiwic2xlZXAiLCJtcyIsInJlc29sdmUiLCJwZXJpb2RpY2FsIiwiY2FsbGJhY2siLCJ0b2tlbiIsImNsb3NlZCIsInRpY2siLCJjb3VudCIsIm5leHQiLCJ1c2VSZXRyeSIsImZuIiwibWF4QXR0ZW1wdHMiLCJ0aW1lb3V0Iiwic2lnbmFsIiwidGltZW91dEVycm9yIiwiYXJncyIsImF0dGVtcHQiLCJwcm9taXNlcyIsInNldFRpbWVvdXQiLCJlIl0sIm1hcHBpbmdzIjoia1ZBRU8sSUFBTUEsQ0FBQUEsQ0FBTixLQUFjLENBQ25CLFdBQUEsQ0FBcUJDLEVBQW9CLENBQXBCLElBQUEsQ0FBQSxTQUFBLENBQUFBLEVBQXFCLENBQXJCLFNBQUEsQ0FFckIsSUFBSSxLQUFBLEVBQVcsQ0FDYixPQUFLLElBQUEsQ0FBSyxZQUFBLEdBQ1IsS0FBSyxNQUFBLENBQVMsSUFBQSxDQUFLLFdBQVUsQ0FDN0IsSUFBQSxDQUFLLGFBQWUsSUFBQSxDQUFBLENBRWYsSUFBQSxDQUFLLE1BQ2QsQ0FFQSxJQUFJLGFBQXVCLENBQ3pCLE9BQU8sS0FBSyxZQUNkLENBRVEsYUFBZSxLQUFBLENBQ2YsTUFDVixFQ2pCTyxTQUFTQyxDQUFBQSxDQUFNQyxDQUFBQSxDQUFZLENBQ2hDLE9BQU8sSUFBSSxPQUFBLENBQWVDLENBQUFBLEVBQVksV0FBV0EsQ0FBQUEsQ0FBU0QsQ0FBRSxDQUFDLENBQy9ELENBc0JPLFNBQVNFLENBQUFBLENBQVdDLENBQUFBLENBQXNFSCxFQUFZLENBQzNHLElBQUlJLEVBQ0FDLENBQUFBLENBQVMsS0FBQSxDQUNiLGVBQWVDLENBQUFBLENBQUtDLENBQUFBLENBQWUsQ0FDakMsSUFBTUMsQ0FBQUEsQ0FBTyxNQUFNTCxDQUFBQSxDQUFTSSxDQUFLLEVBQzdCRixDQUFBQSxHQUdKRCxDQUFBQSxDQUFRLFdBQVcsSUFBTUUsQ0FBQUEsQ0FBS0MsRUFBUSxDQUFDLENBQUEsQ0FBR0MsR0FBUVIsQ0FBRSxDQUFBLEVBQ3RELENBQ0EsT0FBQUksQ0FBQUEsQ0FBUSxXQUFXLElBQU1FLENBQUFBLENBQUssQ0FBQyxDQUFBLENBQUdOLENBQUUsQ0FBQSxDQUM3QixJQUFNLENBQ1hLLENBQUFBLENBQVMsS0FDVCxZQUFBLENBQWFELENBQUssRUFDcEIsQ0FDRixDQzVCTyxTQUFTSyxDQUFBQSxDQUFzQyxDQUNwRCxHQUFBQyxDQUFBQSxDQUNBLFdBQUEsQ0FBQUMsRUFBYyxDQUFBLENBQ2QsT0FBQSxDQUFBQyxFQUNBLE1BQUEsQ0FBQUMsQ0FDRixFQUE0QixDQUMxQixJQUFNQyxFQUFlLElBQUksS0FBQSxDQUFNLGdCQUFnQkYsQ0FBTyxDQUFBLEVBQUEsQ0FBSSxFQUMxRCxPQUFPLE1BQUEsR0FBVUcsSUFBZSxDQUM5QixJQUFJQyxFQUFVLENBQUEsQ0FDZCxPQUFhLENBQ1hILENBQUFBLEVBQVEsY0FBQSxHQUNSLEdBQUksQ0FDRixJQUFNSSxDQUFBQSxDQUFXLENBQUNQLENBQUFBLENBQUcsR0FBR0ssQ0FBSSxDQUFDLEVBQzdCLE9BQUlILENBQUFBLEVBQ0ZLLEVBQVMsSUFBQSxDQUNQQyxZQUFBQSxDQUFXTixDQUFPLENBQUEsQ0FBRSxJQUFBLENBQUssSUFBTSxDQUM3QixNQUFNRSxDQUNSLENBQUMsQ0FDSCxFQUVLLE1BQU0sT0FBQSxDQUFRLElBQUEsQ0FBS0csQ0FBUSxDQUNwQyxDQUFBLE1BQVNFLEVBQUcsQ0FHVixHQUZBTixHQUFRLGNBQUEsRUFBZSxDQUN2QkcsSUFDSUEsQ0FBQUEsRUFBV0wsQ0FBQUEsQ0FDYixNQUFNUSxDQUFBQSxDQUVSLE1BQU1wQixFQUFNLENBQUEsRUFBS2lCLENBQUFBLENBQVUsSUFBTSxJQUFBLENBQUssTUFBQSxHQUFXLEdBQUcsRUFDdEQsQ0FDRixDQUNGLENBQ0YiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgY2xhc3MgTGF6eTxUPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG1ha2VWYWx1ZTogKCkgPT4gVCkge31cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLm1ha2VWYWx1ZSgpO1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsdWUhO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXplZDtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlOiBUIHwgdW5kZWZpbmVkO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuZXhwb3J0IGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVGltZW91dDxUPihwOiBQcm9taXNlPFQ+LCBtczogbnVtYmVyLCBsYWJlbDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYCR7bGFiZWx9IHRpbWVkIG91dCBhZnRlciAke21zfW1zYCkpLCBtcyk7XG4gICAgcC50aGVuKHJlc29sdmUsIHJlamVjdCkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpKTtcbiAgfSk7XG59XG5cbi8vIFJlamVjdCBhcyBzb29uIGFzIGBzaWduYWxgIGFib3J0cywgZWxzZSBzZXR0bGUgd2l0aCBgcGA7IG5vLW9wIHBhc3N0aHJvdWdoIHdoZW4gbm8gc2lnbmFsLlxuZXhwb3J0IGZ1bmN0aW9uIGFib3J0YWJsZTxUPihwOiBQcm9taXNlPFQ+LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8VD4ge1xuICBpZiAoIXNpZ25hbCkge1xuICAgIHJldHVybiBwO1xuICB9XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHJlamVjdChzaWduYWwucmVhc29uKTtcbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICBwLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KS5maW5hbGx5KCgpID0+IHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCkpO1xuICB9KTtcbn1cblxuLy8gQ2FsbGJhY2sgbWF5IHJldHVybiB0aGUgbmV4dCBpbnRlcnZhbCAobXMpIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGZvciB0aGUgZm9sbG93aW5nIHRpY2suXG5leHBvcnQgZnVuY3Rpb24gcGVyaW9kaWNhbChjYWxsYmFjazogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCwgbXM6IG51bWJlcikge1xuICBsZXQgdG9rZW46IE5vZGVKUy5UaW1lb3V0O1xuICBsZXQgY2xvc2VkID0gZmFsc2U7XG4gIGFzeW5jIGZ1bmN0aW9uIHRpY2soY291bnQ6IG51bWJlcikge1xuICAgIGNvbnN0IG5leHQgPSBhd2FpdCBjYWxsYmFjayhjb3VudCk7XG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0b2tlbiA9IHNldFRpbWVvdXQoKCkgPT4gdGljayhjb3VudCArIDEpLCBuZXh0ID8/IG1zKTtcbiAgfVxuICB0b2tlbiA9IHNldFRpbWVvdXQoKCkgPT4gdGljaygwKSwgbXMpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWU7XG4gICAgY2xlYXJUaW1lb3V0KHRva2VuKTtcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDUuXG5cbmltcG9ydCB7IHNldFRpbWVvdXQgfSBmcm9tIFwibm9kZTp0aW1lcnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4vdGltaW5nXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFJldD4ge1xuICBmbjogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmV0PjtcbiAgbWF4QXR0ZW1wdHM/OiBudW1iZXI7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8vIEFib3J0IGJhaWxzIGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgcmV0cnlpbmc7IHNpZ25hbCBpcyBub3QgYXV0by10aHJlYWRlZCBpbnRvIGZuIOKAlCBjYWxsZXIgd2lyZXMgaXQgKGZldGNoLCBTMyBzZW5kKS5cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZXRyeTxBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBSZXQ+KHtcbiAgZm4sXG4gIG1heEF0dGVtcHRzID0gMyxcbiAgdGltZW91dCxcbiAgc2lnbmFsLFxufTogUmV0cnlPcHRpb25zPEFyZ3MsIFJldD4pIHtcbiAgY29uc3QgdGltZW91dEVycm9yID0gbmV3IEVycm9yKGB0aW1lb3V0IG92ZXIgJHt0aW1lb3V0fW1zYCk7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogQXJncykgPT4ge1xuICAgIGxldCBhdHRlbXB0ID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbZm4oLi4uYXJncyldO1xuICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyB0aW1lb3V0RXJyb3I7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGF0dGVtcHQrKztcbiAgICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIgKiogYXR0ZW1wdCAqIDEwMCArIE1hdGgucmFuZG9tKCkgKiAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ 'use strict';require('source-map-support/register.js');function o(){window.__HF_MODE__="export";}window.self!==window.top&&o();//# sourceMappingURL=render_preload.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2hmX2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS9yZW5kZXJfcHJlbG9hZC50cyJdLCJuYW1lcyI6WyJpbnN0YWxsSGZIb29rIl0sIm1hcHBpbmdzIjoidURBUU8sU0FBU0EsQ0FBQUEsRUFBZ0IsQ0FDOUIsTUFBQSxDQUFPLFdBQUEsQ0FBYyxTQUN2QixDQ05JLE1BQUEsQ0FBTyxJQUFBLEdBQVMsTUFBQSxDQUFPLEdBQUEsRUFDekJBLENBQUFBLEVBQWMiLCJmaWxlIjoicmVuZGVyX3ByZWxvYWQuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8xNi5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX0hGX01PREVfXz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEhmSG9vaygpIHtcbiAgd2luZG93Ll9fSEZfTU9ERV9fID0gXCJleHBvcnRcIjtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDUvMjYuXG5cbmltcG9ydCB7IGluc3RhbGxIZkhvb2sgfSBmcm9tIFwiLi9oZl9ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsSGZIb29rKCk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ 'use strict';require('source-map-support/register.js');function H(){window.__HF_MODE__="export";}function v(){if(window.__pup_tick__)return;let n=Date,t=n.now(),e=0,r=0,o=[],s={},a=1,m=()=>(r+=.01,r);function u(...i){return this instanceof u?i.length?new(Function.prototype.bind.apply(n,[null,...i])):new n(t+e+m()):new n(t+e).toString()}u.prototype=n.prototype,u.now=()=>t+e+m(),u.parse=n.parse,u.UTC=n.UTC,window.Date=u,performance.now=()=>e+m(),window.requestAnimationFrame=i=>{let c=a++;return o.push({id:c,cb:i}),c},window.cancelAnimationFrame=i=>{o=o.filter(c=>c.id!==i);},window.setTimeout=(i,c)=>{let d=a++;return s[d]={type:"timeout",cb:i,delay:c||0,next:e+(c||0)},d},window.clearTimeout=i=>{typeof i=="number"&&delete s[i];},window.setInterval=(i,c)=>{let d=a++,l=Math.max(c||0,1);return s[d]={type:"interval",cb:i,delay:l,next:e+l},d},window.clearInterval=i=>{typeof i=="number"&&delete s[i];};function h(i){try{typeof i=="string"?new Function(i)():i();}catch(c){console.error("[Tick] error:",c instanceof Error&&c.stack||c);}}function p(i,c){try{i(c);}catch(d){console.error("[Tick] error:",d instanceof Error&&d.stack||d);}}let b=new WeakMap;function g(i){let c;try{c=document.getAnimations();}catch{return}for(let d of c){let l=d.playState;if(l==="idle"||l==="finished"){b.delete(d);continue}let M=typeof d.playbackRate=="number"?d.playbackRate:1;if(M===0)continue;let y=b.get(d);if(!y){let $=typeof d.currentTime=="number"?d.currentTime:0;y={startMs:i-$/M,pausedAccum:0,pausedAt:-1},b.set(d,y);}if(l==="paused"){y.pausedAt<0&&(y.pausedAt=i);continue}y.pausedAt>=0&&(y.pausedAccum+=i-y.pausedAt,y.pausedAt=-1),d.currentTime=(i-y.startMs-y.pausedAccum)*M;}}function w(i){e=i,r=0;for(let d of Object.keys(s)){let l=s[Number(d)];if(l)for(;l.next<=e;){if(h(l.cb),l.type==="timeout"){delete s[Number(d)];break}l.next+=l.delay;}}let c=o.splice(0);for(let d of c)p(d.cb,e);g(e);}window.__pup_tick__={process:w};}var j=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function R(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function S(n,t){let e=window.getComputedStyle(n);t.style.position="absolute",t.style.left=`${n.offsetLeft}px`,t.style.top=`${n.offsetTop}px`,t.style.width=`${n.offsetWidth}px`,t.style.height=`${n.offsetHeight}px`;for(let u of j){if(u==="position"||u==="left"||u==="top"||u==="right"||u==="bottom")continue;let h=e.getPropertyValue(R(u));h&&t.style.setProperty(R(u),h);}let r=n.getBoundingClientRect(),o=window.devicePixelRatio||1,s=Math.max(1,Math.round(r.width*o)),a=Math.max(1,Math.round(r.height*o)),m=false;return t.width!==s&&(t.width=s,m=true),t.height!==a&&(t.height=a,m=true),m}function A(n,t){let e=document.createElement("canvas");if(e.dataset.pupVideoOverlay="1",e.style.pointerEvents="none",n.style.visibility="hidden",n.muted=true,(n.parentNode||document.body).insertBefore(e,n.nextSibling),S(n,e),t)try{e.getContext("2d").drawImage(t,0,0,e.width,e.height);}catch{}return e}function L(n,t,e,r,o){if(o==="none")return [(e-n)/2,(r-t)/2,n,t];if(o==="contain"||o==="scale-down"){let s=Math.min(e/n,r/t),a=o==="scale-down"?Math.min(1,s):s,m=a*n,u=a*t;return [(e-m)/2,(r-u)/2,m,u]}if(o==="cover"){let s=Math.max(e/n,r/t),a=s*n,m=s*t;return [(e-a)/2,(r-m)/2,a,m]}return [0,0,e,r]}var T="pup-frame://";var C="[VideoHook]";function V(n){return {length:n>0?1:0,start:()=>0,end:()=>n}}function f(n,t){n.dispatchEvent(new Event(t));}function W(n){if(n.rvfc.size===0)return;let t=[...n.rvfc.values()];n.rvfc.clear();let e=performance.now(),r={presentationTime:e,expectedDisplayTime:e,width:n.meta.frameWidth,height:n.meta.frameHeight,mediaTime:n.currentTime,presentedFrames:n.presentedFrames};for(let o of t)o(e,r);}async function q(n,t,e,r){let o=n.cache.cacheOf(e.meta.id);o.readers.set(e,r);let s=o.bitmaps.get(r);if(!s){n.cache.prefetch(e,r+1,9);let u=await n.cache.fetch(e,r);if(n.sessions.get(t)!==e)return;if(!u){!e.paused&&!e.waiting&&(e.waiting=true,f(t,"waiting"));return}s=u;}e.waiting&&(e.waiting=false,e.paused||f(t,"playing"));let a=e.cv,m=L(s.width,s.height,a.width,a.height,e.objectFit);e.ctx.clearRect(0,0,a.width,a.height),e.ctx.drawImage(s,m[0],m[1],m[2],m[3]),e.lastDrawnIdx=r,e.presentedFrames++,W(e),n.cache.prefetch(e,r+1,10),n.cache.evict(o);}function O(n,t){let e=Math.max(0,t-n.currMs)/1e3;n.currMs=t;let r=[];return document.querySelectorAll("video").forEach(o=>{let s=o,a=n.sessions.get(s);if(!a||a.dead||(S(s,a.cv)&&(a.lastDrawnIdx=-1),!a.meta))return;if(a.meta.frameWidth<a.meta.width&&a.cv.width>a.meta.frameWidth*1.05&&!n.attaching.has(s)){n.reattach(s,a);return}!a.paused&&!a.ended&&(a.currentTime+=e*(s.playbackRate||1),a.maxReached=Math.max(a.maxReached,a.currentTime),a.currentTime>=a.meta.duration?s.loop?a.currentTime=a.currentTime%a.meta.duration:(a.currentTime=a.meta.duration,a.paused=true,a.ended=true,f(s,"ended")):f(s,"timeupdate"));let m=Math.max(1,Math.round(a.currentTime*a.meta.fps));m!==a.lastDrawnIdx&&r.push(q(n,s,a,m));}),Promise.all(r)}var x=class{_caches=new Map;cacheOf(t){let e=this._caches.get(t);return e||(e={bitmaps:new Map,inFlight:new Map,readers:new Map},this._caches.set(t,e)),e}fetch(t,e){let r=t.meta;if(!r)return Promise.resolve(void 0);let o=this.cacheOf(r.id),s=o.inFlight.get(e);if(s)return s;let a=o.bitmaps.get(e);if(a)return Promise.resolve(a);let m=r.frameWidth,u=r.frameHeight,h=fetch(`${T}frame?id=${r.id}&idx=${e}`).then(p=>p.ok?p.arrayBuffer():void 0).then(p=>p&&p.byteLength===m*u*4?createImageBitmap(new ImageData(new Uint8ClampedArray(p),m,u)):void 0).then(p=>(o.inFlight.delete(e),p&&o.bitmaps.set(e,p),p)).catch(()=>{o.inFlight.delete(e);});return o.inFlight.set(e,h),h}prefetch(t,e,r){let o=t.meta;if(!o)return;let s=Math.max(1,Math.round(o.duration*o.fps));for(let a=e;a<e+r;a++)a<1||a>s||this.fetch(t,a);}evict(t){let e=1/0;if(t.readers.forEach(o=>{o<e&&(e=o);}),!Number.isFinite(e))return;let r=e-2;t.bitmaps.forEach((o,s)=>{s<r&&(o.close(),t.bitmaps.delete(s));});}release(t,e){let r=this._caches.get(t);r&&(r.readers.delete(e),!(r.readers.size>0)&&(r.bitmaps.forEach(o=>{o.close();}),this._caches.delete(t),fetch(`${T}close?id=${t}`,{keepalive:true})));}};function F(n){let t=HTMLVideoElement.prototype,e=HTMLMediaElement.prototype,r=i=>Object.getOwnPropertyDescriptor(t,i)||Object.getOwnPropertyDescriptor(e,i),o=r("currentTime"),s=r("src"),a=r("playbackRate"),m=t.pause,u=t.requestVideoFrameCallback,h=t.cancelVideoFrameCallback,p=t.getVideoPlaybackQuality,b=t.load,g=n.sessions,w=(i,c)=>{let d=r(i)?.get;if(!d)throw new Error(`media_shim: no native getter for ${i}`);Object.defineProperty(t,i,{configurable:true,get(){let l=g.get(this);return l?c(l):d.call(this)}});};if(w("paused",i=>i.paused),w("ended",i=>i.ended),w("readyState",i=>i.readyState),w("networkState",i=>i.networkState),w("error",i=>i.error??null),w("seeking",i=>i.seeking),w("buffered",i=>V(i.meta?i.meta.duration:0)),w("seekable",i=>V(i.meta?i.meta.duration:0)),w("played",i=>V(i.maxReached)),t.play=function(){let i=g.get(this);return i?(n.resume(this,i),Promise.resolve()):n.attach(this).then(c=>{c&&n.resume(this,c);})},t.pause=function(){let i=g.get(this);if(!i){m.call(this);return}i.paused||(i.paused=true,f(this,"pause"));},o?.get&&o.set){let i=o.get,c=o.set;Object.defineProperty(t,"currentTime",{configurable:true,get(){let d=g.get(this);return d?d.currentTime:i.call(this)},set(d){let l=g.get(this);if(!l){c.call(this,d);return}let M=l.meta?l.meta.duration:d;l.currentTime=Math.max(0,Math.min(d,M)),l.maxReached=Math.max(l.maxReached,l.currentTime),l.currentTime<M&&(l.ended=false),l.seeking=true,f(this,"seeking"),l.seeking=false,f(this,"seeked"),f(this,"timeupdate");}});}if(a?.set){let i=a.set;Object.defineProperty(t,"playbackRate",{configurable:true,get:a.get,set(c){i.call(this,c),g.has(this)&&f(this,"ratechange");}});}if(t.requestVideoFrameCallback=function(i){let c=g.get(this);if(!c)return u.call(this,i);let d=++n.rvfcSeq;return c.rvfc.set(d,i),d},t.cancelVideoFrameCallback=function(i){let c=g.get(this);if(!c){h.call(this,i);return}c.rvfc.delete(i);},t.getVideoPlaybackQuality=function(){let i=g.get(this);return i?{creationTime:performance.now(),totalVideoFrames:i.presentedFrames,droppedVideoFrames:0,corruptedVideoFrames:0}:p.call(this)},t.load=function(){if(!g.has(this))return b.call(this);n.detach(this),f(this,"emptied"),this.__pupLastSrc=void 0,n.attach(this);},s?.set){let i=s.set;Object.defineProperty(t,"src",{configurable:true,get:s.get,set(c){i.call(this,c),n.onSrcChange(this);}});}}function P(n,t){return {meta:void 0,cv:t,ctx:t.getContext("2d"),paused:!(n.autoplay||!n.paused),currentTime:0,ended:false,lastDrawnIdx:-1,dead:false,objectFit:window.getComputedStyle(n).objectFit||"fill",readyState:0,networkState:0,seeking:false,waiting:false,error:void 0,presentedFrames:0,maxReached:0,rvfc:new Map}}function D(n,t,e){t.dead=true,t.error=e,t.networkState=3,console.error(C,`${e.message} src=${n.src||n.currentSrc}`),f(n,"error");}async function I(n,t){let{video:e,state:r,src:o,birthMs:s,native:a}=t,m=Number.parseInt(e.dataset.pupFps||"30",10);r.networkState=2,f(e,"loadstart");let u;try{let b=a?"":`&w=${r.cv.width}&h=${r.cv.height}&fit=${encodeURIComponent(r.objectFit)}`;u=await fetch(`${T}open?src=${encodeURIComponent(o)}&fps=${m}${b}`);}catch(b){return D(e,r,{code:2,message:`open failed: ${b instanceof Error?b.message:String(b)}`})}if(n.sessions.get(e)!==r)return;if(!u.ok)return D(e,r,{code:3,message:`open ${u.status}: ${await u.text()}`});let h=await u.json();if(n.sessions.get(e)!==r)return;r.meta=h,r.currentTime=r.paused?0:Math.max(0,(n.currMs-s)/1e3);let p=e.videoWidth>0;return Object.defineProperty(e,"videoWidth",{value:h.width,configurable:true}),Object.defineProperty(e,"videoHeight",{value:h.height,configurable:true}),Object.defineProperty(e,"duration",{value:h.duration,configurable:true}),r.readyState=1,p||(f(e,"durationchange"),f(e,"loadedmetadata")),r.readyState=4,p||(f(e,"loadeddata"),f(e,"canplay"),f(e,"canplaythrough")),r.networkState=1,p||(f(e,"suspend"),r.paused||(f(e,"play"),f(e,"playing"))),n.cache.prefetch(r,1,10),r}var k=class{sessions=new WeakMap;attaching=new WeakMap;opening=new Set;cache=new x;rvfcSeq=0;currMs=0;_lastSnapshot=new WeakMap;install(){F(this),this.scan(document.documentElement),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLVideoElement&&e.attributeName==="src"){this.onSrcChange(e.target);continue}e.addedNodes.forEach(r=>{r instanceof Element&&this.scan(r);}),e.removedNodes.forEach(r=>{r instanceof HTMLVideoElement&&this.detach(r);});}}).observe(document,{subtree:true,childList:true,attributes:true,attributeFilter:["src"]}),window.__pup_video__={advance:t=>O(this,t),ready:()=>this.ready()};}attach(t,e=false){let r=this.sessions.get(t);if(r)return Promise.resolve(r);let o=this.attaching.get(t);if(o)return o;let s=t.src||t.currentSrc;if(!s||/^(blob:|data:|mediastream:)/i.test(s))return Promise.resolve(void 0);let a=A(t,this._lastSnapshot.get(t)),m=P(t,a);this.sessions.set(t,m);let u=I(this,{video:t,state:m,src:s,birthMs:this.currMs,native:e}).finally(()=>{this.attaching.delete(t),this.opening.delete(u);});return this.attaching.set(t,u),this.opening.add(u),u}async ready(){await Promise.allSettled([...this.opening]);}resume(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,f(t,"play"),f(t,"playing"));}detach(t){let e=this.sessions.get(t);if(e){if(e.meta){if(e.lastDrawnIdx>=0)try{let r=new OffscreenCanvas(e.cv.width,e.cv.height),o=r.getContext("2d");if(!o)throw new Error("no 2d context");o.drawImage(e.cv,0,0),this._lastSnapshot.set(t,r);}catch{}this.cache.release(e.meta.id,e);}e.cv.remove(),this.sessions.delete(t),this.attaching.delete(t);}}onSrcChange(t){let e=t.src||t.currentSrc||"";t.__pupLastSrc!==e&&(t.__pupLastSrc=e,this.sessions.has(t)&&this.detach(t),this.attach(t));}reattach(t,e){let r=e.currentTime,o=e.paused,s=e.ended;this.detach(t),this.attach(t,true).then(a=>{a&&(a.currentTime=r,a.paused=o,a.ended=s);});}scan(t){t&&(t.tagName==="VIDEO"&&this.attach(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>{this.attach(e);}));}};function N(){window.__pup_video__||new k().install();}window.self!==window.top&&(H(),v(),N());
2
+ //# sourceMappingURL=shoot_preload.cjs.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2hmX2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS90aWNrX2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9vdmVybGF5LnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vdHlwZXMudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9kcml2ZXIudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9mcmFtZV9jYWNoZS50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL21lZGlhX3NoaW0udHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9zZXNzaW9uLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vaG9vay50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3Nob290X3ByZWxvYWQudHMiXSwibmFtZXMiOlsiaW5zdGFsbEhmSG9vayIsImluc3RhbGxUaWNrSG9vayIsIlJFQUxfREFURSIsImRhdGVPcmlnaW4iLCJjdXJyTXMiLCJ0aW1lT2Zmc2V0IiwicmFmUXVldWUiLCJ0aW1lcnMiLCJuZXh0SWQiLCJ0aWNrIiwiRmFrZURhdGUiLCJhcmdzIiwiY2IiLCJpZCIsInIiLCJkZWxheSIsImQiLCJzYWZlSW52b2tlVGltZXIiLCJmbiIsImUiLCJzYWZlSW52b2tlUmFmIiwidHMiLCJhbmltU3RhdGUiLCJzeW5jQW5pbWF0aW9ucyIsIm1zIiwiYW5pbXMiLCJhIiwic3RhdGUiLCJyYXRlIiwicyIsImN0MCIsInByb2Nlc3MiLCJ0aW1lc3RhbXBNcyIsInQiLCJyYWZzIiwiTUlSUk9SX1BST1BTIiwiY3NzQ2FzZSIsImMiLCJzeW5jT3ZlcmxheSIsInZpZGVvIiwiY3YiLCJjcyIsInAiLCJ2IiwidnIiLCJkcHIiLCJ3IiwiaCIsInJlc2l6ZWQiLCJzZXR1cENhbnZhcyIsInNuYXAiLCJmaXRSZWN0Iiwic3JjVyIsInNyY0giLCJkc3RXIiwiZHN0SCIsImZpdCIsInNjIiwiayIsIndzIiwiaHMiLCJzYzIiLCJ3czIiLCJoczIiLCJTQ0hFTUUiLCJUQUciLCJ0aW1lUmFuZ2VzIiwiZW5kIiwiZmlyZSIsImVsIiwidHlwZSIsImZpcmVGcmFtZUNhbGxiYWNrcyIsImNicyIsIm5vdyIsIm1ldGEiLCJwYWludCIsImhvb2siLCJpZHgiLCJibSIsImZldGNoZWQiLCJhZHZhbmNlIiwiZHQiLCJwcyIsIkZyYW1lQ2FjaGUiLCJleGlzdGluZyIsImNhY2hlZCIsImJ1ZiIsImZyb21JZHgiLCJjb3VudCIsIm1heElkeCIsImkiLCJtaW5JZHgiLCJmbG9vciIsImluc3RhbGxNZWRpYVNoaW0iLCJIVkUiLCJNRURJQSIsIm1kZXNjIiwiY3REZXNjIiwic3JjRGVzYyIsInJhdGVEZXNjIiwib3JpZ1BhdXNlIiwib3JpZ1JWRkMiLCJvcmlnQ2FuY2VsUlZGQyIsIm9yaWdRdWFsaXR5Iiwib3JpZ0xvYWQiLCJzZXNzaW9ucyIsImRlZiIsInByb3AiLCJwaWNrIiwibmF0aXZlR2V0IiwibnMiLCJjdEdldCIsImN0U2V0IiwiZHVyIiwicmF0ZVNldCIsInNyY1NldCIsIm5ld1ZpZGVvU3RhdGUiLCJmYWlsT3BlbiIsImVycm9yIiwib3BlblNlc3Npb24iLCJzcmMiLCJiaXJ0aE1zIiwibmF0aXZlIiwiZnBzIiwicmVzIiwicSIsIm5hdGl2ZU1ldGEiLCJWaWRlb0hvb2siLCJtdXRzIiwibSIsIm4iLCJwZW5kaW5nIiwic2N0eCIsInBhdXNlZCIsImVuZGVkIiwicm9vdCIsImluc3RhbGxWaWRlb0hvb2siXSwibWFwcGluZ3MiOiJ1REFRTyxTQUFTQSxHQUFnQixDQUM5QixNQUFBLENBQU8sWUFBYyxTQUN2QixDQ2NPLFNBQVNDLENBQUFBLEVBQXdCLENBQ3RDLEdBQUksTUFBQSxDQUFPLGFBQ1QsT0FHRixJQUFNQyxFQUFZLElBQUEsQ0FDWkMsQ0FBQUEsQ0FBYUQsRUFBVSxHQUFBLEVBQUksQ0FDN0JFLENBQUFBLENBQVMsQ0FBQSxDQUNUQyxFQUFhLENBQUEsQ0FDYkMsQ0FBQUEsQ0FBdUIsRUFBQyxDQUN0QkMsQ0FBQUEsQ0FB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ZSI6InNob290X3ByZWxvYWQuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8xNi5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX0hGX01PREVfXz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEhmSG9vaygpIHtcbiAgd2luZG93Ll9fSEZfTU9ERV9fID0gXCJleHBvcnRcIjtcbn1cbiIsImRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfdGlja19fPzogeyBwcm9jZXNzOiAobXM6IG51bWJlcikgPT4gdm9pZCB9O1xuICB9XG59XG5cbmludGVyZmFjZSBUaW1lciB7XG4gIHR5cGU6IFwidGltZW91dFwiIHwgXCJpbnRlcnZhbFwiO1xuICBjYjogVGltZXJIYW5kbGVyO1xuICBkZWxheTogbnVtYmVyO1xuICBuZXh0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSYWZFbnRyeSB7XG4gIGlkOiBudW1iZXI7XG4gIGNiOiBGcmFtZVJlcXVlc3RDYWxsYmFjaztcbn1cblxuaW50ZXJmYWNlIEFuaW1FbnRyeSB7XG4gIHN0YXJ0TXM6IG51bWJlcjtcbiAgcGF1c2VkQWNjdW06IG51bWJlcjtcbiAgcGF1c2VkQXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxUaWNrSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF90aWNrX18pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBSRUFMX0RBVEUgPSBEYXRlO1xuICBjb25zdCBkYXRlT3JpZ2luID0gUkVBTF9EQVRFLm5vdygpO1xuICBsZXQgY3Vyck1zID0gMDtcbiAgbGV0IHRpbWVPZmZzZXQgPSAwO1xuICBsZXQgcmFmUXVldWU6IFJhZkVudHJ5W10gPSBbXTtcbiAgY29uc3QgdGltZXJzOiBSZWNvcmQ8bnVtYmVyLCBUaW1lciB8IHVuZGVmaW5lZD4gPSB7fTtcbiAgbGV0IG5leHRJZCA9IDE7XG4gIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgdGltZU9mZnNldCArPSAwLjAxO1xuICAgIHJldHVybiB0aW1lT2Zmc2V0O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEZha2VEYXRlKHRoaXM6IHVua25vd24sIC4uLmFyZ3M6IHVua25vd25bXSk6IERhdGUgfCBzdHJpbmcge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGYWtlRGF0ZSkpIHtcbiAgICAgIHJldHVybiBuZXcgUkVBTF9EQVRFKGRhdGVPcmlnaW4gKyBjdXJyTXMpLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBhcmdzLmxlbmd0aFxuICAgICAgPyBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KFJFQUxfREFURSwgW251bGwsIC4uLmFyZ3NdKSkoKVxuICAgICAgOiBuZXcgUkVBTF9EQVRFKGRhdGVPcmlnaW4gKyBjdXJyTXMgKyB0aWNrKCkpO1xuICB9XG4gIEZha2VEYXRlLnByb3RvdHlwZSA9IFJFQUxfREFURS5wcm90b3R5cGU7XG4gIEZha2VEYXRlLm5vdyA9ICgpID0+IGRhdGVPcmlnaW4gKyBjdXJyTXMgKyB0aWNrKCk7XG4gIEZha2VEYXRlLnBhcnNlID0gUkVBTF9EQVRFLnBhcnNlO1xuICBGYWtlRGF0ZS5VVEMgPSBSRUFMX0RBVEUuVVRDO1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBEYXRlOiB1bmtub3duIH0pLkRhdGUgPSBGYWtlRGF0ZTtcbiAgcGVyZm9ybWFuY2Uubm93ID0gKCkgPT4gY3Vyck1zICsgdGljaygpO1xuXG4gIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSAoY2IpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHJhZlF1ZXVlLnB1c2goeyBpZCwgY2IgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSAoaWQpID0+IHtcbiAgICByYWZRdWV1ZSA9IHJhZlF1ZXVlLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICB9O1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBzZXRUaW1lb3V0OiB1bmtub3duIH0pLnNldFRpbWVvdXQgPSAoY2I6IFRpbWVySGFuZGxlciwgZGVsYXk/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHRpbWVyc1tpZF0gPSB7IHR5cGU6IFwidGltZW91dFwiLCBjYiwgZGVsYXk6IGRlbGF5IHx8IDAsIG5leHQ6IGN1cnJNcyArIChkZWxheSB8fCAwKSB9O1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNsZWFyVGltZW91dCA9IChpZCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGRlbGV0ZSB0aW1lcnNbaWRdO1xuICAgIH1cbiAgfTtcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgc2V0SW50ZXJ2YWw6IHVua25vd24gfSkuc2V0SW50ZXJ2YWwgPSAoY2I6IFRpbWVySGFuZGxlciwgZGVsYXk/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIGNvbnN0IGQgPSBNYXRoLm1heChkZWxheSB8fCAwLCAxKTtcbiAgICB0aW1lcnNbaWRdID0geyB0eXBlOiBcImludGVydmFsXCIsIGNiLCBkZWxheTogZCwgbmV4dDogY3Vyck1zICsgZCB9O1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNsZWFySW50ZXJ2YWwgPSAoaWQpID0+IHtcbiAgICBpZiAodHlwZW9mIGlkID09PSBcIm51bWJlclwiKSB7XG4gICAgICBkZWxldGUgdGltZXJzW2lkXTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gc2FmZUludm9rZVRpbWVyKGZuOiBUaW1lckhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAvLyBTdHJpbmcgdGltZXIgaGFuZGxlciBydW5zIGFzIHBhZ2Ugc2NyaXB0IGluIGdsb2JhbCBzY29wZSAoSFRNTCBzcGVjKTsgRnVuY3Rpb24gY3RvciBtYXRjaGVzIHRoYXQsIGF2b2lkcyBldmFsLlxuICAgICAgICBuZXcgRnVuY3Rpb24oZm4pKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVGlja10gZXJyb3I6XCIsIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykgfHwgZSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VSYWYoY2I6IEZyYW1lUmVxdWVzdENhbGxiYWNrLCB0czogbnVtYmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNiKHRzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1RpY2tdIGVycm9yOlwiLCAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHx8IGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFuaW1TdGF0ZSA9IG5ldyBXZWFrTWFwPEFuaW1hdGlvbiwgQW5pbUVudHJ5PigpO1xuICBmdW5jdGlvbiBzeW5jQW5pbWF0aW9ucyhtczogbnVtYmVyKSB7XG4gICAgbGV0IGFuaW1zOiBBbmltYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgYW5pbXMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgYSBvZiBhbmltcykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhLnBsYXlTdGF0ZTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJpZGxlXCIgfHwgc3RhdGUgPT09IFwiZmluaXNoZWRcIikge1xuICAgICAgICBhbmltU3RhdGUuZGVsZXRlKGEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhdGUgPSB0eXBlb2YgYS5wbGF5YmFja1JhdGUgPT09IFwibnVtYmVyXCIgPyBhLnBsYXliYWNrUmF0ZSA6IDE7XG4gICAgICBpZiAocmF0ZSA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxldCBzID0gYW5pbVN0YXRlLmdldChhKTtcbiAgICAgIGlmICghcykge1xuICAgICAgICBjb25zdCBjdDAgPSB0eXBlb2YgYS5jdXJyZW50VGltZSA9PT0gXCJudW1iZXJcIiA/IGEuY3VycmVudFRpbWUgOiAwO1xuICAgICAgICBzID0geyBzdGFydE1zOiBtcyAtIGN0MCAvIHJhdGUsIHBhdXNlZEFjY3VtOiAwLCBwYXVzZWRBdDogLTEgfTtcbiAgICAgICAgYW5pbVN0YXRlLnNldChhLCBzKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJwYXVzZWRcIikge1xuICAgICAgICBpZiAocy5wYXVzZWRBdCA8IDApIHtcbiAgICAgICAgICBzLnBhdXNlZEF0ID0gbXM7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocy5wYXVzZWRBdCA+PSAwKSB7XG4gICAgICAgIHMucGF1c2VkQWNjdW0gKz0gbXMgLSBzLnBhdXNlZEF0O1xuICAgICAgICBzLnBhdXNlZEF0ID0gLTE7XG4gICAgICB9XG4gICAgICBhLmN1cnJlbnRUaW1lID0gKG1zIC0gcy5zdGFydE1zIC0gcy5wYXVzZWRBY2N1bSkgKiByYXRlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHByb2Nlc3ModGltZXN0YW1wTXM6IG51bWJlcikge1xuICAgIGN1cnJNcyA9IHRpbWVzdGFtcE1zO1xuICAgIHRpbWVPZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXModGltZXJzKSkge1xuICAgICAgY29uc3QgdCA9IHRpbWVyc1tOdW1iZXIoaWQpXTtcbiAgICAgIGlmICghdCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh0Lm5leHQgPD0gY3Vyck1zKSB7XG4gICAgICAgIHNhZmVJbnZva2VUaW1lcih0LmNiKTtcbiAgICAgICAgaWYgKHQudHlwZSA9PT0gXCJ0aW1lb3V0XCIpIHtcbiAgICAgICAgICBkZWxldGUgdGltZXJzW051bWJlcihpZCldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHQubmV4dCArPSB0LmRlbGF5O1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByYWZzID0gcmFmUXVldWUuc3BsaWNlKDApO1xuICAgIGZvciAoY29uc3QgciBvZiByYWZzKSB7XG4gICAgICBzYWZlSW52b2tlUmFmKHIuY2IsIGN1cnJNcyk7XG4gICAgfVxuICAgIHN5bmNBbmltYXRpb25zKGN1cnJNcyk7XG4gIH1cblxuICB3aW5kb3cuX19wdXBfdGlja19fID0geyBwcm9jZXNzIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG50eXBlIFZlYzQgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuY29uc3QgTUlSUk9SX1BST1BTID0gW1xuICBcImJvcmRlclJhZGl1c1wiLFxuICBcImJvcmRlclRvcExlZnRSYWRpdXNcIixcbiAgXCJib3JkZXJUb3BSaWdodFJhZGl1c1wiLFxuICBcImJvcmRlckJvdHRvbUxlZnRSYWRpdXNcIixcbiAgXCJib3JkZXJCb3R0b21SaWdodFJhZGl1c1wiLFxuICBcInRyYW5zZm9ybVwiLFxuICBcInRyYW5zZm9ybU9yaWdpblwiLFxuICBcImZpbHRlclwiLFxuICBcImNsaXBQYXRoXCIsXG4gIFwiYm94U2hhZG93XCIsXG4gIFwib3BhY2l0eVwiLFxuICBcIm1peEJsZW5kTW9kZVwiLFxuICBcIm1hc2tcIixcbiAgXCJ6SW5kZXhcIixcbiAgXCJwb3NpdGlvblwiLFxuICBcImxlZnRcIixcbiAgXCJ0b3BcIixcbiAgXCJyaWdodFwiLFxuICBcImJvdHRvbVwiLFxuXSBhcyBjb25zdDtcblxuZnVuY3Rpb24gY3NzQ2FzZShzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcy5yZXBsYWNlKC9bQS1aXS9nLCAoYykgPT4gYC0ke2MudG9Mb3dlckNhc2UoKX1gKTtcbn1cblxuLy8gVHJhY2sgdGhlIG92ZXJsYXkgY2FudmFzIHRvIHRoZSB2aWRlbyBlbGVtZW50J3MgbGl2ZSBib3g7IHRydWUgPSBiYWNraW5nIHN0b3JlIHJlc2l6ZWQgKHdoaWNoIHdpcGVzIHRoZSBjYW52YXMpLlxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNPdmVybGF5KHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBjdjogSFRNTENhbnZhc0VsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWRlbyk7XG4gIGN2LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAvLyBvZmZzZXQqIGFyZSBwcmUtdHJhbnNmb3JtIGNvb3JkcyBmcm9tIG9mZnNldFBhcmVudCdzIHBhZGRpbmcgZWRnZSA9IHRoZSBhYnMgY29udGFpbmluZy1ibG9jayBvcmlnaW47IG1hcCBkaXJlY3QuXG4gIGN2LnN0eWxlLmxlZnQgPSBgJHt2aWRlby5vZmZzZXRMZWZ0fXB4YDtcbiAgY3Yuc3R5bGUudG9wID0gYCR7dmlkZW8ub2Zmc2V0VG9wfXB4YDtcbiAgY3Yuc3R5bGUud2lkdGggPSBgJHt2aWRlby5vZmZzZXRXaWR0aH1weGA7XG4gIGN2LnN0eWxlLmhlaWdodCA9IGAke3ZpZGVvLm9mZnNldEhlaWdodH1weGA7XG4gIGZvciAoY29uc3QgcCBvZiBNSVJST1JfUFJPUFMpIHtcbiAgICBpZiAocCA9PT0gXCJwb3NpdGlvblwiIHx8IHAgPT09IFwibGVmdFwiIHx8IHAgPT09IFwidG9wXCIgfHwgcCA9PT0gXCJyaWdodFwiIHx8IHAgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2ID0gY3MuZ2V0UHJvcGVydHlWYWx1ZShjc3NDYXNlKHApKTtcbiAgICBpZiAodikge1xuICAgICAgY3Yuc3R5bGUuc2V0UHJvcGVydHkoY3NzQ2FzZShwKSwgdik7XG4gICAgfVxuICB9XG4gIC8vIEJhY2tpbmcgc3RvcmUgYXQgb24tc2NyZWVuIHBpeGVsIHNpemUgKHBvc3QtdHJhbnNmb3JtKSBzbyBkZWNvZGUgcmVzb2x1dGlvbiBtYXRjaGVzIGRpc3BsYXllZCBwaXhlbHMuXG4gIGNvbnN0IHZyID0gdmlkZW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRwciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIGNvbnN0IHcgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHZyLndpZHRoICogZHByKSk7XG4gIGNvbnN0IGggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHZyLmhlaWdodCAqIGRwcikpO1xuICBsZXQgcmVzaXplZCA9IGZhbHNlO1xuICBpZiAoY3Yud2lkdGggIT09IHcpIHtcbiAgICBjdi53aWR0aCA9IHc7XG4gICAgcmVzaXplZCA9IHRydWU7XG4gIH1cbiAgaWYgKGN2LmhlaWdodCAhPT0gaCkge1xuICAgIGN2LmhlaWdodCA9IGg7XG4gICAgcmVzaXplZCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlc2l6ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENhbnZhcyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc25hcDogT2Zmc2NyZWVuQ2FudmFzIHwgdW5kZWZpbmVkKTogSFRNTENhbnZhc0VsZW1lbnQge1xuICBjb25zdCBjdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGN2LmRhdGFzZXRbXCJwdXBWaWRlb092ZXJsYXlcIl0gPSBcIjFcIjtcbiAgY3Yuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICB2aWRlby5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgdmlkZW8ubXV0ZWQgPSB0cnVlO1xuICBjb25zdCBwYXJlbnQgPSB2aWRlby5wYXJlbnROb2RlIHx8IGRvY3VtZW50LmJvZHk7XG4gIHBhcmVudC5pbnNlcnRCZWZvcmUoY3YsIHZpZGVvLm5leHRTaWJsaW5nKTtcbiAgc3luY092ZXJsYXkodmlkZW8sIGN2KTtcbiAgaWYgKHNuYXApIHtcbiAgICB0cnkge1xuICAgICAgY3YuZ2V0Q29udGV4dChcIjJkXCIpIS5kcmF3SW1hZ2Uoc25hcCwgMCwgMCwgY3Yud2lkdGgsIGN2LmhlaWdodCk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjdjtcbn1cblxuLy8gRHJhdyByZWN0IGZvciB0aGUgYml0bWFwIHdpdGhpbiB0aGUgY2FudmFzIHBlciBvYmplY3RGaXQuXG5leHBvcnQgZnVuY3Rpb24gZml0UmVjdChzcmNXOiBudW1iZXIsIHNyY0g6IG51bWJlciwgZHN0VzogbnVtYmVyLCBkc3RIOiBudW1iZXIsIGZpdDogc3RyaW5nKTogVmVjNCB7XG4gIGlmIChmaXQgPT09IFwibm9uZVwiKSB7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHNyY1cpIC8gMiwgKGRzdEggLSBzcmNIKSAvIDIsIHNyY1csIHNyY0hdO1xuICB9XG4gIGlmIChmaXQgPT09IFwiY29udGFpblwiIHx8IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIpIHtcbiAgICBjb25zdCBzYyA9IE1hdGgubWluKGRzdFcgLyBzcmNXLCBkc3RIIC8gc3JjSCk7XG4gICAgY29uc3QgayA9IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIgPyBNYXRoLm1pbigxLCBzYykgOiBzYztcbiAgICBjb25zdCB3cyA9IGsgKiBzcmNXO1xuICAgIGNvbnN0IGhzID0gayAqIHNyY0g7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHdzKSAvIDIsIChkc3RIIC0gaHMpIC8gMiwgd3MsIGhzXTtcbiAgfVxuICBpZiAoZml0ID09PSBcImNvdmVyXCIpIHtcbiAgICBjb25zdCBzYzIgPSBNYXRoLm1heChkc3RXIC8gc3JjVywgZHN0SCAvIHNyY0gpO1xuICAgIGNvbnN0IHdzMiA9IHNjMiAqIHNyY1c7XG4gICAgY29uc3QgaHMyID0gc2MyICogc3JjSDtcbiAgICByZXR1cm4gWyhkc3RXIC0gd3MyKSAvIDIsIChkc3RIIC0gaHMyKSAvIDIsIHdzMiwgaHMyXTtcbiAgfVxuICByZXR1cm4gWzAsIDAsIGRzdFcsIGRzdEhdO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuZXhwb3J0IGNvbnN0IFNDSEVNRSA9IFwicHVwLWZyYW1lOi8vXCI7XG5leHBvcnQgY29uc3QgQUhFQUQgPSAxMDtcbmV4cG9ydCBjb25zdCBUQUcgPSBcIltWaWRlb0hvb2tdXCI7XG5cbmV4cG9ydCBjb25zdCBNRURJQV9FUlJfTkVUV09SSyA9IDI7XG5leHBvcnQgY29uc3QgTUVESUFfRVJSX0RFQ09ERSA9IDM7XG5leHBvcnQgY29uc3QgSEFWRV9OT1RISU5HID0gMDtcbmV4cG9ydCBjb25zdCBIQVZFX01FVEFEQVRBID0gMTtcbmV4cG9ydCBjb25zdCBIQVZFX0VOT1VHSF9EQVRBID0gNDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0VNUFRZID0gMDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0lETEUgPSAxO1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfTE9BRElORyA9IDI7XG5leHBvcnQgY29uc3QgTkVUV09SS19OT19TT1VSQ0UgPSAzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvTWV0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmcmFtZVdpZHRoOiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0OiBudW1iZXI7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRnJhbWVNZXRhIHtcbiAgcHJlc2VudGF0aW9uVGltZTogbnVtYmVyO1xuICBleHBlY3RlZERpc3BsYXlUaW1lOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBtZWRpYVRpbWU6IG51bWJlcjtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZyYW1lQ2IgPSAobm93OiBudW1iZXIsIG1ldGE6IFZpZGVvRnJhbWVNZXRhKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhRXJyb3JMaWtlIHtcbiAgY29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9DYWNoZSB7XG4gIGJpdG1hcHM6IE1hcDxudW1iZXIsIEltYWdlQml0bWFwPjtcbiAgaW5GbGlnaHQ6IE1hcDxudW1iZXIsIFByb21pc2U8SW1hZ2VCaXRtYXAgfCB1bmRlZmluZWQ+PjtcbiAgcmVhZGVyczogTWFwPFZpZGVvU3RhdGUsIG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9TdGF0ZSB7XG4gIG1ldGE/OiBWaWRlb01ldGE7XG4gIGN2OiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIHBhdXNlZDogYm9vbGVhbjtcbiAgY3VycmVudFRpbWU6IG51bWJlcjtcbiAgZW5kZWQ6IGJvb2xlYW47XG4gIGxhc3REcmF3bklkeDogbnVtYmVyO1xuICBkZWFkOiBib29sZWFuO1xuICBvYmplY3RGaXQ6IHN0cmluZztcbiAgcmVhZHlTdGF0ZTogbnVtYmVyO1xuICBuZXR3b3JrU3RhdGU6IG51bWJlcjtcbiAgc2Vla2luZzogYm9vbGVhbjtcbiAgd2FpdGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IE1lZGlhRXJyb3JMaWtlIHwgdW5kZWZpbmVkO1xuICBwcmVzZW50ZWRGcmFtZXM6IG51bWJlcjtcbiAgbWF4UmVhY2hlZDogbnVtYmVyO1xuICBydmZjOiBNYXA8bnVtYmVyLCBGcmFtZUNiPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lUmFuZ2VzTGlrZSB7XG4gIGxlbmd0aDogbnVtYmVyO1xuICBzdGFydChpOiBudW1iZXIpOiBudW1iZXI7XG4gIGVuZChpOiBudW1iZXIpOiBudW1iZXI7XG59XG5cbi8vIFdob2xlIGNsaXAgaXMgZGVjb2RlLW9uLWRlbWFuZCwgc28gdGhlIGF2YWlsYWJsZSByYW5nZSBpcyBhbHdheXMgWzAsIGVuZF0gKG9uZSBUaW1lUmFuZ2VzIGVudHJ5KS5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lUmFuZ2VzKGVuZDogbnVtYmVyKTogVGltZVJhbmdlc0xpa2Uge1xuICByZXR1cm4geyBsZW5ndGg6IGVuZCA+IDAgPyAxIDogMCwgc3RhcnQ6ICgpID0+IDAsIGVuZDogKCkgPT4gZW5kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJlKGVsOiBFdmVudFRhcmdldCwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gIGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KHR5cGUpKTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB0eXBlIHsgVmlkZW9Ib29rIH0gZnJvbSBcIi4vaG9va1wiO1xuaW1wb3J0IHsgZml0UmVjdCwgc3luY092ZXJsYXkgfSBmcm9tIFwiLi9vdmVybGF5XCI7XG5pbXBvcnQgeyBBSEVBRCwgZmlyZSwgdHlwZSBWaWRlb0ZyYW1lTWV0YSwgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZnVuY3Rpb24gZmlyZUZyYW1lQ2FsbGJhY2tzKHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gIGlmIChzdGF0ZS5ydmZjLnNpemUgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY2JzID0gWy4uLnN0YXRlLnJ2ZmMudmFsdWVzKCldO1xuICBzdGF0ZS5ydmZjLmNsZWFyKCk7XG4gIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCBtZXRhOiBWaWRlb0ZyYW1lTWV0YSA9IHtcbiAgICBwcmVzZW50YXRpb25UaW1lOiBub3csXG4gICAgZXhwZWN0ZWREaXNwbGF5VGltZTogbm93LFxuICAgIHdpZHRoOiBzdGF0ZS5tZXRhIS5mcmFtZVdpZHRoLFxuICAgIGhlaWdodDogc3RhdGUubWV0YSEuZnJhbWVIZWlnaHQsXG4gICAgbWVkaWFUaW1lOiBzdGF0ZS5jdXJyZW50VGltZSxcbiAgICBwcmVzZW50ZWRGcmFtZXM6IHN0YXRlLnByZXNlbnRlZEZyYW1lcyxcbiAgfTtcbiAgZm9yIChjb25zdCBjYiBvZiBjYnMpIHtcbiAgICBjYihub3csIG1ldGEpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhaW50KGhvb2s6IFZpZGVvSG9vaywgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlLCBpZHg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjID0gaG9vay5jYWNoZS5jYWNoZU9mKHN0YXRlLm1ldGEhLmlkKTtcbiAgYy5yZWFkZXJzLnNldChzdGF0ZSwgaWR4KTtcbiAgbGV0IGJtID0gYy5iaXRtYXBzLmdldChpZHgpO1xuICBpZiAoIWJtKSB7XG4gICAgaG9vay5jYWNoZS5wcmVmZXRjaChzdGF0ZSwgaWR4ICsgMSwgQUhFQUQgLSAxKTtcbiAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgaG9vay5jYWNoZS5mZXRjaChzdGF0ZSwgaWR4KTtcbiAgICBpZiAoaG9vay5zZXNzaW9ucy5nZXQodmlkZW8pICE9PSBzdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWZldGNoZWQpIHtcbiAgICAgIGlmICghc3RhdGUucGF1c2VkICYmICFzdGF0ZS53YWl0aW5nKSB7XG4gICAgICAgIHN0YXRlLndhaXRpbmcgPSB0cnVlO1xuICAgICAgICBmaXJlKHZpZGVvLCBcIndhaXRpbmdcIik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGJtID0gZmV0Y2hlZDtcbiAgfVxuICBpZiAoc3RhdGUud2FpdGluZykge1xuICAgIHN0YXRlLndhaXRpbmcgPSBmYWxzZTtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCkge1xuICAgICAgZmlyZSh2aWRlbywgXCJwbGF5aW5nXCIpO1xuICAgIH1cbiAgfVxuICBjb25zdCBjdiA9IHN0YXRlLmN2O1xuICBjb25zdCByID0gZml0UmVjdChibS53aWR0aCwgYm0uaGVpZ2h0LCBjdi53aWR0aCwgY3YuaGVpZ2h0LCBzdGF0ZS5vYmplY3RGaXQpO1xuICBzdGF0ZS5jdHguY2xlYXJSZWN0KDAsIDAsIGN2LndpZHRoLCBjdi5oZWlnaHQpO1xuICBzdGF0ZS5jdHguZHJhd0ltYWdlKGJtLCByWzBdLCByWzFdLCByWzJdLCByWzNdKTtcbiAgc3RhdGUubGFzdERyYXduSWR4ID0gaWR4O1xuICBzdGF0ZS5wcmVzZW50ZWRGcmFtZXMrKztcbiAgZmlyZUZyYW1lQ2FsbGJhY2tzKHN0YXRlKTtcbiAgaG9vay5jYWNoZS5wcmVmZXRjaChzdGF0ZSwgaWR4ICsgMSwgQUhFQUQpO1xuICBob29rLmNhY2hlLmV2aWN0KGMpO1xufVxuXG4vLyBWaXJ0dWFsLXRpbWUgdGljazogc3luYyBvdmVybGF5cywgYWR2YW5jZSBlYWNoIGhvb2tlZCB2aWRlbydzIGNsb2NrIChsb29wL2VuZCksIHBhaW50IHRoZSBkdWUgZnJhbWUuXG5leHBvcnQgZnVuY3Rpb24gYWR2YW5jZShob29rOiBWaWRlb0hvb2ssIHRpbWVzdGFtcE1zOiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgZHQgPSBNYXRoLm1heCgwLCB0aW1lc3RhbXBNcyAtIGhvb2suY3Vyck1zKSAvIDEwMDA7XG4gIGhvb2suY3Vyck1zID0gdGltZXN0YW1wTXM7XG4gIGNvbnN0IHBzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInZpZGVvXCIpLmZvckVhY2goKGVsKSA9PiB7XG4gICAgY29uc3QgdmlkZW8gPSBlbCBhcyBIVE1MVmlkZW9FbGVtZW50O1xuICAgIGNvbnN0IHN0YXRlID0gaG9vay5zZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmICghc3RhdGUgfHwgc3RhdGUuZGVhZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBBIGJhY2tpbmctc3RvcmUgcmVzaXplIChhbmltYXRlZCBjb250YWluZXIpIHdpcGVzIHRoZSBjYW52YXM7IGZvcmNlIGEgcmVkcmF3IGV2ZW4gb24gYW4gdW5jaGFuZ2VkIGZyYW1lIGlkeC5cbiAgICBpZiAoc3luY092ZXJsYXkodmlkZW8sIHN0YXRlLmN2KSkge1xuICAgICAgc3RhdGUubGFzdERyYXduSWR4ID0gLTE7XG4gICAgfVxuICAgIGlmICghc3RhdGUubWV0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBFbGVtZW50IGdyZXcgcGFzdCB0aGUgZGVjb2RlZCAoZG93bnNjYWxlZCkgcmVzIOKGkiByZS1kZWNvZGUgYXQgbmF0aXZlLCBvbmUtc2hvdCAoY292ZXJzIHpvb20pLlxuICAgIGlmIChcbiAgICAgIHN0YXRlLm1ldGEuZnJhbWVXaWR0aCA8IHN0YXRlLm1ldGEud2lkdGggJiZcbiAgICAgIHN0YXRlLmN2LndpZHRoID4gc3RhdGUubWV0YS5mcmFtZVdpZHRoICogMS4wNSAmJlxuICAgICAgIWhvb2suYXR0YWNoaW5nLmhhcyh2aWRlbylcbiAgICApIHtcbiAgICAgIGhvb2sucmVhdHRhY2godmlkZW8sIHN0YXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50VGltZSArPSBkdCAqICh2aWRlby5wbGF5YmFja1JhdGUgfHwgMSk7XG4gICAgICBzdGF0ZS5tYXhSZWFjaGVkID0gTWF0aC5tYXgoc3RhdGUubWF4UmVhY2hlZCwgc3RhdGUuY3VycmVudFRpbWUpO1xuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUaW1lID49IHN0YXRlLm1ldGEuZHVyYXRpb24pIHtcbiAgICAgICAgaWYgKHZpZGVvLmxvb3ApIHtcbiAgICAgICAgICBzdGF0ZS5jdXJyZW50VGltZSA9IHN0YXRlLmN1cnJlbnRUaW1lICUgc3RhdGUubWV0YS5kdXJhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS5jdXJyZW50VGltZSA9IHN0YXRlLm1ldGEuZHVyYXRpb247XG4gICAgICAgICAgc3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgICAgICAgZmlyZSh2aWRlbywgXCJlbmRlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyZSh2aWRlbywgXCJ0aW1ldXBkYXRlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpZHggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHN0YXRlLmN1cnJlbnRUaW1lICogc3RhdGUubWV0YS5mcHMpKTtcbiAgICBpZiAoaWR4ID09PSBzdGF0ZS5sYXN0RHJhd25JZHgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHMucHVzaChwYWludChob29rLCB2aWRlbywgc3RhdGUsIGlkeCkpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHBzKTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB7IFNDSEVNRSwgdHlwZSBWaWRlb0NhY2hlLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBQZXItc2Vzc2lvbiBiaXRtYXAgY2FjaGU6IGZldGNoZXMgUkdCQSBmcmFtZXMgZnJvbSB0aGUgZnJhbWUgcHJvdG9jb2wsIGRlZHVwZXMgaW4tZmxpZ2h0LCBldmljdHMgYmVoaW5kIHJlYWRlcnMuXG5leHBvcnQgY2xhc3MgRnJhbWVDYWNoZSB7XG4gIHByaXZhdGUgX2NhY2hlcyA9IG5ldyBNYXA8c3RyaW5nLCBWaWRlb0NhY2hlPigpO1xuXG4gIGNhY2hlT2YoaWQ6IHN0cmluZyk6IFZpZGVvQ2FjaGUge1xuICAgIGxldCBjID0gdGhpcy5fY2FjaGVzLmdldChpZCk7XG4gICAgaWYgKCFjKSB7XG4gICAgICBjID0geyBiaXRtYXBzOiBuZXcgTWFwKCksIGluRmxpZ2h0OiBuZXcgTWFwKCksIHJlYWRlcnM6IG5ldyBNYXAoKSB9O1xuICAgICAgdGhpcy5fY2FjaGVzLnNldChpZCwgYyk7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgZmV0Y2goc3RhdGU6IFZpZGVvU3RhdGUsIGlkeDogbnVtYmVyKTogUHJvbWlzZTxJbWFnZUJpdG1hcCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1ldGEgPSBzdGF0ZS5tZXRhO1xuICAgIGlmICghbWV0YSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBjb25zdCBjID0gdGhpcy5jYWNoZU9mKG1ldGEuaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYy5pbkZsaWdodC5nZXQoaWR4KTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkID0gYy5iaXRtYXBzLmdldChpZHgpO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FjaGVkKTtcbiAgICB9XG4gICAgY29uc3QgdyA9IG1ldGEuZnJhbWVXaWR0aDtcbiAgICBjb25zdCBoID0gbWV0YS5mcmFtZUhlaWdodDtcbiAgICBjb25zdCBwID0gZmV0Y2goYCR7U0NIRU1FfWZyYW1lP2lkPSR7bWV0YS5pZH0maWR4PSR7aWR4fWApXG4gICAgICAudGhlbigocikgPT4gKHIub2sgPyByLmFycmF5QnVmZmVyKCkgOiB1bmRlZmluZWQpKVxuICAgICAgLnRoZW4oKGJ1ZikgPT5cbiAgICAgICAgYnVmICYmIGJ1Zi5ieXRlTGVuZ3RoID09PSB3ICogaCAqIDRcbiAgICAgICAgICA/IGNyZWF0ZUltYWdlQml0bWFwKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGJ1ZiksIHcsIGgpKVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgKVxuICAgICAgLnRoZW4oKGJtKSA9PiB7XG4gICAgICAgIGMuaW5GbGlnaHQuZGVsZXRlKGlkeCk7XG4gICAgICAgIGlmIChibSkge1xuICAgICAgICAgIGMuYml0bWFwcy5zZXQoaWR4LCBibSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJtO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGMuaW5GbGlnaHQuZGVsZXRlKGlkeCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICBjLmluRmxpZ2h0LnNldChpZHgsIHApO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgcHJlZmV0Y2goc3RhdGU6IFZpZGVvU3RhdGUsIGZyb21JZHg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1ldGEgPSBzdGF0ZS5tZXRhO1xuICAgIGlmICghbWV0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYXhJZHggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKG1ldGEuZHVyYXRpb24gKiBtZXRhLmZwcykpO1xuICAgIGZvciAobGV0IGkgPSBmcm9tSWR4OyBpIDwgZnJvbUlkeCArIGNvdW50OyBpKyspIHtcbiAgICAgIGlmIChpIDwgMSB8fCBpID4gbWF4SWR4KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdm9pZCB0aGlzLmZldGNoKHN0YXRlLCBpKTtcbiAgICB9XG4gIH1cblxuICBldmljdChjOiBWaWRlb0NhY2hlKTogdm9pZCB7XG4gICAgbGV0IG1pbklkeCA9IEluZmluaXR5O1xuICAgIGMucmVhZGVycy5mb3JFYWNoKChpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPCBtaW5JZHgpIHtcbiAgICAgICAgbWluSWR4ID0gaWR4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbklkeCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmxvb3IgPSBtaW5JZHggLSAyO1xuICAgIGMuYml0bWFwcy5mb3JFYWNoKChibSwgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4IDwgZmxvb3IpIHtcbiAgICAgICAgYm0uY2xvc2UoKTtcbiAgICAgICAgYy5iaXRtYXBzLmRlbGV0ZShpZHgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gRHJvcCBhIHJlYWRlcjsgd2hlbiB0aGUgbGFzdCBsZWF2ZXMsIGNsb3NlIGJpdG1hcHMgYW5kIHRlbGwgdGhlIHNlcnZlciB0byByZWxlYXNlIHRoZSBkZWNvZGUgc2Vzc2lvbi5cbiAgcmVsZWFzZShpZDogc3RyaW5nLCBzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGMgPSB0aGlzLl9jYWNoZXMuZ2V0KGlkKTtcbiAgICBpZiAoIWMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYy5yZWFkZXJzLmRlbGV0ZShzdGF0ZSk7XG4gICAgaWYgKGMucmVhZGVycy5zaXplID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjLmJpdG1hcHMuZm9yRWFjaCgoYm0pID0+IHtcbiAgICAgIGJtLmNsb3NlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5fY2FjaGVzLmRlbGV0ZShpZCk7XG4gICAgZmV0Y2goYCR7U0NIRU1FfWNsb3NlP2lkPSR7aWR9YCwgeyBrZWVwYWxpdmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB0eXBlIHsgVmlkZW9Ib29rIH0gZnJvbSBcIi4vaG9va1wiO1xuaW1wb3J0IHsgdHlwZSBGcmFtZUNiLCBmaXJlLCB0aW1lUmFuZ2VzLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBPdmVycmlkZSB0aGUgSFRNTE1lZGlhRWxlbWVudCBzdXJmYWNlIGZvciBob29rZWQgPHZpZGVvPjsgdW5ob29rZWQgZWxlbWVudHMgZmFsbCB0aHJvdWdoIHRvIG5hdGl2ZS5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsTWVkaWFTaGltKGhvb2s6IFZpZGVvSG9vayk6IHZvaWQge1xuICBjb25zdCBIVkUgPSBIVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZTtcbiAgY29uc3QgTUVESUEgPSBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZTtcbiAgY29uc3QgbWRlc2MgPSAocDogc3RyaW5nKSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhWRSwgcCkgfHwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNRURJQSwgcCk7XG4gIGNvbnN0IGN0RGVzYyA9IG1kZXNjKFwiY3VycmVudFRpbWVcIik7XG4gIGNvbnN0IHNyY0Rlc2MgPSBtZGVzYyhcInNyY1wiKTtcbiAgY29uc3QgcmF0ZURlc2MgPSBtZGVzYyhcInBsYXliYWNrUmF0ZVwiKTtcbiAgY29uc3Qgb3JpZ1BhdXNlID0gSFZFLnBhdXNlO1xuICBjb25zdCBvcmlnUlZGQyA9IEhWRS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrO1xuICBjb25zdCBvcmlnQ2FuY2VsUlZGQyA9IEhWRS5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2s7XG4gIGNvbnN0IG9yaWdRdWFsaXR5ID0gSFZFLmdldFZpZGVvUGxheWJhY2tRdWFsaXR5O1xuICBjb25zdCBvcmlnTG9hZCA9IEhWRS5sb2FkO1xuICBjb25zdCBzZXNzaW9ucyA9IGhvb2suc2Vzc2lvbnM7XG5cbiAgLy8gU2Vzc2lvbi1iYWNrZWQgcmVhZC1vbmx5IHByb3BlcnR5IHdpdGggbmF0aXZlIGZhbGxiYWNrIHdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgaG9va2VkLlxuICBjb25zdCBkZWYgPSAocHJvcDogc3RyaW5nLCBwaWNrOiAoczogVmlkZW9TdGF0ZSkgPT4gdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUdldCA9IG1kZXNjKHByb3ApPy5nZXQ7XG4gICAgaWYgKCFuYXRpdmVHZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbWVkaWFfc2hpbTogbm8gbmF0aXZlIGdldHRlciBmb3IgJHtwcm9wfWApO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBwcm9wLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICByZXR1cm4gcyA/IHBpY2socykgOiBuYXRpdmVHZXQuY2FsbCh0aGlzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG4gIGRlZihcInBhdXNlZFwiLCAocykgPT4gcy5wYXVzZWQpO1xuICBkZWYoXCJlbmRlZFwiLCAocykgPT4gcy5lbmRlZCk7XG4gIGRlZihcInJlYWR5U3RhdGVcIiwgKHMpID0+IHMucmVhZHlTdGF0ZSk7XG4gIGRlZihcIm5ldHdvcmtTdGF0ZVwiLCAocykgPT4gcy5uZXR3b3JrU3RhdGUpO1xuICBkZWYoXCJlcnJvclwiLCAocykgPT4gcy5lcnJvciA/PyBudWxsKTtcbiAgZGVmKFwic2Vla2luZ1wiLCAocykgPT4gcy5zZWVraW5nKTtcbiAgZGVmKFwiYnVmZmVyZWRcIiwgKHMpID0+IHRpbWVSYW5nZXMocy5tZXRhID8gcy5tZXRhLmR1cmF0aW9uIDogMCkpO1xuICBkZWYoXCJzZWVrYWJsZVwiLCAocykgPT4gdGltZVJhbmdlcyhzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiAwKSk7XG4gIGRlZihcInBsYXllZFwiLCAocykgPT4gdGltZVJhbmdlcyhzLm1heFJlYWNoZWQpKTtcblxuICBIVkUucGxheSA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIHJldHVybiBob29rLmF0dGFjaCh0aGlzKS50aGVuKChucykgPT4ge1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICBob29rLnJlc3VtZSh0aGlzLCBucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBob29rLnJlc3VtZSh0aGlzLCBzKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH07XG4gIEhWRS5wYXVzZSA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIG9yaWdQYXVzZS5jYWxsKHRoaXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXMucGF1c2VkKSB7XG4gICAgICBzLnBhdXNlZCA9IHRydWU7XG4gICAgICBmaXJlKHRoaXMsIFwicGF1c2VcIik7XG4gICAgfVxuICB9O1xuICBpZiAoY3REZXNjPy5nZXQgJiYgY3REZXNjLnNldCkge1xuICAgIGNvbnN0IGN0R2V0ID0gY3REZXNjLmdldDtcbiAgICBjb25zdCBjdFNldCA9IGN0RGVzYy5zZXQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJjdXJyZW50VGltZVwiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICByZXR1cm4gcyA/IHMuY3VycmVudFRpbWUgOiBjdEdldC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCB0OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgY3RTZXQuY2FsbCh0aGlzLCB0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZHVyID0gcy5tZXRhID8gcy5tZXRhLmR1cmF0aW9uIDogdDtcbiAgICAgICAgcy5jdXJyZW50VGltZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHQsIGR1cikpO1xuICAgICAgICBzLm1heFJlYWNoZWQgPSBNYXRoLm1heChzLm1heFJlYWNoZWQsIHMuY3VycmVudFRpbWUpO1xuICAgICAgICBpZiAocy5jdXJyZW50VGltZSA8IGR1cikge1xuICAgICAgICAgIHMuZW5kZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzLnNlZWtpbmcgPSB0cnVlO1xuICAgICAgICBmaXJlKHRoaXMsIFwic2Vla2luZ1wiKTtcbiAgICAgICAgcy5zZWVraW5nID0gZmFsc2U7XG4gICAgICAgIGZpcmUodGhpcywgXCJzZWVrZWRcIik7XG4gICAgICAgIGZpcmUodGhpcywgXCJ0aW1ldXBkYXRlXCIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBpZiAocmF0ZURlc2M/LnNldCkge1xuICAgIGNvbnN0IHJhdGVTZXQgPSByYXRlRGVzYy5zZXQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJwbGF5YmFja1JhdGVcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiByYXRlRGVzYy5nZXQsXG4gICAgICBzZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCwgcjogbnVtYmVyKSB7XG4gICAgICAgIHJhdGVTZXQuY2FsbCh0aGlzLCByKTtcbiAgICAgICAgaWYgKHNlc3Npb25zLmhhcyh0aGlzKSkge1xuICAgICAgICAgIGZpcmUodGhpcywgXCJyYXRlY2hhbmdlXCIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIEhWRS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIGNiKTogbnVtYmVyIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgcmV0dXJuIG9yaWdSVkZDLmNhbGwodGhpcywgY2IpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9ICsraG9vay5ydmZjU2VxO1xuICAgIHMucnZmYy5zZXQoaWQsIGNiIGFzIEZyYW1lQ2IpO1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgSFZFLmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCBpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIG9yaWdDYW5jZWxSVkZDLmNhbGwodGhpcywgaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzLnJ2ZmMuZGVsZXRlKGlkKTtcbiAgfTtcbiAgSFZFLmdldFZpZGVvUGxheWJhY2tRdWFsaXR5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgcmV0dXJuIG9yaWdRdWFsaXR5LmNhbGwodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGlvblRpbWU6IHBlcmZvcm1hbmNlLm5vdygpLFxuICAgICAgdG90YWxWaWRlb0ZyYW1lczogcy5wcmVzZW50ZWRGcmFtZXMsXG4gICAgICBkcm9wcGVkVmlkZW9GcmFtZXM6IDAsXG4gICAgICBjb3JydXB0ZWRWaWRlb0ZyYW1lczogMCxcbiAgICB9IGFzIFZpZGVvUGxheWJhY2tRdWFsaXR5O1xuICB9O1xuICBIVkUubG9hZCA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKCFzZXNzaW9ucy5oYXModGhpcykpIHtcbiAgICAgIHJldHVybiBvcmlnTG9hZC5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICBob29rLmRldGFjaCh0aGlzKTtcbiAgICBmaXJlKHRoaXMsIFwiZW1wdGllZFwiKTtcbiAgICB0aGlzLl9fcHVwTGFzdFNyYyA9IHVuZGVmaW5lZDtcbiAgICBob29rLmF0dGFjaCh0aGlzKTtcbiAgfTtcbiAgaWYgKHNyY0Rlc2M/LnNldCkge1xuICAgIGNvbnN0IHNyY1NldCA9IHNyY0Rlc2Muc2V0O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIFwic3JjXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogc3JjRGVzYy5nZXQsXG4gICAgICBzZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCwgdjogc3RyaW5nKSB7XG4gICAgICAgIHNyY1NldC5jYWxsKHRoaXMsIHYpO1xuICAgICAgICBob29rLm9uU3JjQ2hhbmdlKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHR5cGUgeyBWaWRlb0hvb2sgfSBmcm9tIFwiLi9ob29rXCI7XG5pbXBvcnQge1xuICBBSEVBRCxcbiAgZmlyZSxcbiAgSEFWRV9FTk9VR0hfREFUQSxcbiAgSEFWRV9NRVRBREFUQSxcbiAgSEFWRV9OT1RISU5HLFxuICBNRURJQV9FUlJfREVDT0RFLFxuICBNRURJQV9FUlJfTkVUV09SSyxcbiAgdHlwZSBNZWRpYUVycm9yTGlrZSxcbiAgTkVUV09SS19FTVBUWSxcbiAgTkVUV09SS19JRExFLFxuICBORVRXT1JLX0xPQURJTkcsXG4gIE5FVFdPUktfTk9fU09VUkNFLFxuICBTQ0hFTUUsXG4gIFRBRyxcbiAgdHlwZSBWaWRlb01ldGEsXG4gIHR5cGUgVmlkZW9TdGF0ZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2hBcmdzIHtcbiAgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHN0YXRlOiBWaWRlb1N0YXRlO1xuICBzcmM6IHN0cmluZztcbiAgYmlydGhNczogbnVtYmVyO1xuICBuYXRpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdWaWRlb1N0YXRlKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBjdjogSFRNTENhbnZhc0VsZW1lbnQpOiBWaWRlb1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRhOiB1bmRlZmluZWQsXG4gICAgY3YsXG4gICAgY3R4OiBjdi5nZXRDb250ZXh0KFwiMmRcIikhLFxuICAgIHBhdXNlZDogISh2aWRlby5hdXRvcGxheSB8fCAhdmlkZW8ucGF1c2VkKSxcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBlbmRlZDogZmFsc2UsXG4gICAgbGFzdERyYXduSWR4OiAtMSxcbiAgICBkZWFkOiBmYWxzZSxcbiAgICBvYmplY3RGaXQ6IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZGVvKS5vYmplY3RGaXQgfHwgXCJmaWxsXCIsXG4gICAgcmVhZHlTdGF0ZTogSEFWRV9OT1RISU5HLFxuICAgIG5ldHdvcmtTdGF0ZTogTkVUV09SS19FTVBUWSxcbiAgICBzZWVraW5nOiBmYWxzZSxcbiAgICB3YWl0aW5nOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIHByZXNlbnRlZEZyYW1lczogMCxcbiAgICBtYXhSZWFjaGVkOiAwLFxuICAgIHJ2ZmM6IG5ldyBNYXAoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmFpbE9wZW4odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlLCBlcnJvcjogTWVkaWFFcnJvckxpa2UpOiB1bmRlZmluZWQge1xuICBzdGF0ZS5kZWFkID0gdHJ1ZTtcbiAgc3RhdGUuZXJyb3IgPSBlcnJvcjtcbiAgc3RhdGUubmV0d29ya1N0YXRlID0gTkVUV09SS19OT19TT1VSQ0U7XG4gIGNvbnNvbGUuZXJyb3IoVEFHLCBgJHtlcnJvci5tZXNzYWdlfSBzcmM9JHt2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyY31gKTtcbiAgZmlyZSh2aWRlbywgXCJlcnJvclwiKTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gT3BlbiB0aGUgZnJhbWUgc2VydmVyIHNlc3Npb24sIHRoZW4gZW1pdCB0aGUgSFRNTE1lZGlhRWxlbWVudCBsb2FkIHNlcXVlbmNlIChyZWFkeVN0YXRlL25ldHdvcmtTdGF0ZSArIGV2ZW50cykuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblNlc3Npb24oaG9vazogVmlkZW9Ib29rLCBhcmdzOiBBdHRhY2hBcmdzKTogUHJvbWlzZTxWaWRlb1N0YXRlIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgdmlkZW8sIHN0YXRlLCBzcmMsIGJpcnRoTXMsIG5hdGl2ZSB9ID0gYXJncztcbiAgY29uc3QgZnBzID0gTnVtYmVyLnBhcnNlSW50KHZpZGVvLmRhdGFzZXRbXCJwdXBGcHNcIl0gfHwgXCIzMFwiLCAxMCk7XG4gIHN0YXRlLm5ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORztcbiAgZmlyZSh2aWRlbywgXCJsb2Fkc3RhcnRcIik7XG4gIGxldCByZXM6IFJlc3BvbnNlO1xuICB0cnkge1xuICAgIGNvbnN0IHEgPSBuYXRpdmUgPyBcIlwiIDogYCZ3PSR7c3RhdGUuY3Yud2lkdGh9Jmg9JHtzdGF0ZS5jdi5oZWlnaHR9JmZpdD0ke2VuY29kZVVSSUNvbXBvbmVudChzdGF0ZS5vYmplY3RGaXQpfWA7XG4gICAgcmVzID0gYXdhaXQgZmV0Y2goYCR7U0NIRU1FfW9wZW4/c3JjPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNyYyl9JmZwcz0ke2Zwc30ke3F9YCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFpbE9wZW4odmlkZW8sIHN0YXRlLCB7XG4gICAgICBjb2RlOiBNRURJQV9FUlJfTkVUV09SSyxcbiAgICAgIG1lc3NhZ2U6IGBvcGVuIGZhaWxlZDogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSl9YCxcbiAgICB9KTtcbiAgfVxuICBpZiAoaG9vay5zZXNzaW9ucy5nZXQodmlkZW8pICE9PSBzdGF0ZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gZmFpbE9wZW4odmlkZW8sIHN0YXRlLCB7XG4gICAgICBjb2RlOiBNRURJQV9FUlJfREVDT0RFLFxuICAgICAgbWVzc2FnZTogYG9wZW4gJHtyZXMuc3RhdHVzfTogJHthd2FpdCByZXMudGV4dCgpfWAsXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWV0YSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBWaWRlb01ldGE7XG4gIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBzdGF0ZS5tZXRhID0gbWV0YTtcbiAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5wYXVzZWQgPyAwIDogTWF0aC5tYXgoMCwgKGhvb2suY3Vyck1zIC0gYmlydGhNcykgLyAxMDAwKTtcbiAgLy8gVGhlIHN0dWIgbWVkaWEgdXN1YWxseSBsb2FkcyBuYXRpdmVseSBmaXJzdDsgQmxpbmsgdGhlbiBvd25zIHRoZSByZWFsIGV2ZW50IHNlcXVlbmNlIOKAlCBkb24ndCBkdXBsaWNhdGUgaXQuXG4gIGNvbnN0IG5hdGl2ZU1ldGEgPSB2aWRlby52aWRlb1dpZHRoID4gMDtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcInZpZGVvV2lkdGhcIiwge1xuICAgIHZhbHVlOiBtZXRhLndpZHRoLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJ2aWRlb0hlaWdodFwiLCB7XG4gICAgdmFsdWU6IG1ldGEuaGVpZ2h0LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJkdXJhdGlvblwiLCB7XG4gICAgdmFsdWU6IG1ldGEuZHVyYXRpb24sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9KTtcbiAgc3RhdGUucmVhZHlTdGF0ZSA9IEhBVkVfTUVUQURBVEE7XG4gIGlmICghbmF0aXZlTWV0YSkge1xuICAgIGZpcmUodmlkZW8sIFwiZHVyYXRpb25jaGFuZ2VcIik7XG4gICAgZmlyZSh2aWRlbywgXCJsb2FkZWRtZXRhZGF0YVwiKTtcbiAgfVxuICBzdGF0ZS5yZWFkeVN0YXRlID0gSEFWRV9FTk9VR0hfREFUQTtcbiAgaWYgKCFuYXRpdmVNZXRhKSB7XG4gICAgZmlyZSh2aWRlbywgXCJsb2FkZWRkYXRhXCIpO1xuICAgIGZpcmUodmlkZW8sIFwiY2FucGxheVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcImNhbnBsYXl0aHJvdWdoXCIpO1xuICB9XG4gIHN0YXRlLm5ldHdvcmtTdGF0ZSA9IE5FVFdPUktfSURMRTtcbiAgaWYgKCFuYXRpdmVNZXRhKSB7XG4gICAgZmlyZSh2aWRlbywgXCJzdXNwZW5kXCIpO1xuICAgIGlmICghc3RhdGUucGF1c2VkKSB7XG4gICAgICBmaXJlKHZpZGVvLCBcInBsYXlcIik7XG4gICAgICBmaXJlKHZpZGVvLCBcInBsYXlpbmdcIik7XG4gICAgfVxuICB9XG4gIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIDEsIEFIRUFEKTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHsgYWR2YW5jZSB9IGZyb20gXCIuL2RyaXZlclwiO1xuaW1wb3J0IHsgRnJhbWVDYWNoZSB9IGZyb20gXCIuL2ZyYW1lX2NhY2hlXCI7XG5pbXBvcnQgeyBpbnN0YWxsTWVkaWFTaGltIH0gZnJvbSBcIi4vbWVkaWFfc2hpbVwiO1xuaW1wb3J0IHsgc2V0dXBDYW52YXMgfSBmcm9tIFwiLi9vdmVybGF5XCI7XG5pbXBvcnQgeyBuZXdWaWRlb1N0YXRlLCBvcGVuU2Vzc2lvbiB9IGZyb20gXCIuL3Nlc3Npb25cIjtcbmltcG9ydCB7IGZpcmUsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfdmlkZW9fXz86IHsgYWR2YW5jZTogKG1zOiBudW1iZXIpID0+IFByb21pc2U8dW5rbm93bj47IHJlYWR5OiAoKSA9PiBQcm9taXNlPHZvaWQ+IH07XG4gIH1cbiAgaW50ZXJmYWNlIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIF9fcHVwTGFzdFNyYz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmlkZW9Ib29rIHtcbiAgcmVhZG9ubHkgc2Vzc2lvbnMgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBWaWRlb1N0YXRlPigpO1xuICByZWFkb25seSBhdHRhY2hpbmcgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBQcm9taXNlPFZpZGVvU3RhdGUgfCB1bmRlZmluZWQ+PigpO1xuICAvLyBFbnVtZXJhYmxlIG1pcnJvciBvZiBpbi1mbGlnaHQgb3BlbnMgKFdlYWtNYXAgaXNuJ3QgaXRlcmFibGUpIHNvIHJlYWR5KCkgY2FuIGF3YWl0IHRoZW0uXG4gIHJlYWRvbmx5IG9wZW5pbmcgPSBuZXcgU2V0PFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IEZyYW1lQ2FjaGUoKTtcbiAgcnZmY1NlcSA9IDA7XG4gIGN1cnJNcyA9IDA7XG4gIHByaXZhdGUgX2xhc3RTbmFwc2hvdCA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIE9mZnNjcmVlbkNhbnZhcz4oKTtcblxuICBpbnN0YWxsKCk6IHZvaWQge1xuICAgIGluc3RhbGxNZWRpYVNoaW0odGhpcyk7XG4gICAgdGhpcy5zY2FuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dHMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRzKSB7XG4gICAgICAgIGlmIChtLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmIG0udGFyZ2V0IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCAmJiBtLmF0dHJpYnV0ZU5hbWUgPT09IFwic3JjXCIpIHtcbiAgICAgICAgICB0aGlzLm9uU3JjQ2hhbmdlKG0udGFyZ2V0KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBtLmFkZGVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zY2FuKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG0ucmVtb3ZlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0YWNoKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkub2JzZXJ2ZShkb2N1bWVudCwgeyBzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW1wic3JjXCJdIH0pO1xuICAgIHdpbmRvdy5fX3B1cF92aWRlb19fID0geyBhZHZhbmNlOiAobXMpID0+IGFkdmFuY2UodGhpcywgbXMpLCByZWFkeTogKCkgPT4gdGhpcy5yZWFkeSgpIH07XG4gIH1cblxuICBhdHRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIG5hdGl2ZSA9IGZhbHNlKTogUHJvbWlzZTxWaWRlb1N0YXRlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnNlc3Npb25zLmdldCh2aWRlbyk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGV4aXN0aW5nKTtcbiAgICB9XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuYXR0YWNoaW5nLmdldCh2aWRlbyk7XG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cbiAgICBjb25zdCBzcmMgPSB2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyYztcbiAgICBpZiAoIXNyYykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBpZiAoL14oYmxvYjp8ZGF0YTp8bWVkaWFzdHJlYW06KS9pLnRlc3Qoc3JjKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICBjb25zdCBjdiA9IHNldHVwQ2FudmFzKHZpZGVvLCB0aGlzLl9sYXN0U25hcHNob3QuZ2V0KHZpZGVvKSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXdWaWRlb1N0YXRlKHZpZGVvLCBjdik7XG4gICAgdGhpcy5zZXNzaW9ucy5zZXQodmlkZW8sIHN0YXRlKTtcbiAgICBjb25zdCBwID0gb3BlblNlc3Npb24odGhpcywgeyB2aWRlbywgc3RhdGUsIHNyYywgYmlydGhNczogdGhpcy5jdXJyTXMsIG5hdGl2ZSB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuYXR0YWNoaW5nLmRlbGV0ZSh2aWRlbyk7XG4gICAgICB0aGlzLm9wZW5pbmcuZGVsZXRlKHApO1xuICAgIH0pO1xuICAgIHRoaXMuYXR0YWNoaW5nLnNldCh2aWRlbywgcCk7XG4gICAgdGhpcy5vcGVuaW5nLmFkZChwKTtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIC8vIEF3YWl0IG9ubHkgdGhlIG9wZW5zIGluIGZsaWdodCByaWdodCBub3cg4oCUIG5ldmVyIGNoYXNlIG5ld2x5LXNwYXduZWQgb25lcywgb3IgYSByZXRyeWluZyBwYWdlIGxvb3BzIGZvcmV2ZXIuXG4gIGFzeW5jIHJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbLi4udGhpcy5vcGVuaW5nXSk7XG4gIH1cblxuICByZXN1bWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0YXRlLnBhdXNlZCA9IGZhbHNlO1xuICAgIHN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgZmlyZSh2aWRlbywgXCJwbGF5XCIpO1xuICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgfVxuXG4gIGRldGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0YXRlLm1ldGEpIHtcbiAgICAgIGlmIChzdGF0ZS5sYXN0RHJhd25JZHggPj0gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHN0YXRlLmN2LndpZHRoLCBzdGF0ZS5jdi5oZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IHNjdHggPSBzbmFwLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICBpZiAoIXNjdHgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vIDJkIGNvbnRleHRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNjdHguZHJhd0ltYWdlKHN0YXRlLmN2LCAwLCAwKTtcbiAgICAgICAgICB0aGlzLl9sYXN0U25hcHNob3Quc2V0KHZpZGVvLCBzbmFwKTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgICAgdGhpcy5jYWNoZS5yZWxlYXNlKHN0YXRlLm1ldGEuaWQsIHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuY3YucmVtb3ZlKCk7XG4gICAgdGhpcy5zZXNzaW9ucy5kZWxldGUodmlkZW8pO1xuICAgIHRoaXMuYXR0YWNoaW5nLmRlbGV0ZSh2aWRlbyk7XG4gIH1cblxuICBvblNyY0NoYW5nZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNyYyA9IHZpZGVvLnNyYyB8fCB2aWRlby5jdXJyZW50U3JjIHx8IFwiXCI7XG4gICAgaWYgKHZpZGVvLl9fcHVwTGFzdFNyYyA9PT0gc3JjKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZpZGVvLl9fcHVwTGFzdFNyYyA9IHNyYztcbiAgICBpZiAodGhpcy5zZXNzaW9ucy5oYXModmlkZW8pKSB7XG4gICAgICB0aGlzLmRldGFjaCh2aWRlbyk7XG4gICAgfVxuICAgIHRoaXMuYXR0YWNoKHZpZGVvKTtcbiAgfVxuXG4gIC8vIFJlLW9wZW4gYXQgbmF0aXZlIHJlc29sdXRpb24gKHRoZSBlbGVtZW50IG91dGdyZXcgdGhlIGRvd25zY2FsZWQgZGVjb2RlKSwgcHJlc2VydmluZyBwbGF5YmFjayBzdGF0ZS5cbiAgcmVhdHRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgdCA9IHN0YXRlLmN1cnJlbnRUaW1lO1xuICAgIGNvbnN0IHBhdXNlZCA9IHN0YXRlLnBhdXNlZDtcbiAgICBjb25zdCBlbmRlZCA9IHN0YXRlLmVuZGVkO1xuICAgIHRoaXMuZGV0YWNoKHZpZGVvKTtcbiAgICB2b2lkIHRoaXMuYXR0YWNoKHZpZGVvLCB0cnVlKS50aGVuKChucykgPT4ge1xuICAgICAgaWYgKCFucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBucy5jdXJyZW50VGltZSA9IHQ7XG4gICAgICBucy5wYXVzZWQgPSBwYXVzZWQ7XG4gICAgICBucy5lbmRlZCA9IGVuZGVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FuKHJvb3Q6IEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyb290LnRhZ05hbWUgPT09IFwiVklERU9cIikge1xuICAgICAgdGhpcy5hdHRhY2gocm9vdCBhcyBIVE1MVmlkZW9FbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKHJvb3QucXVlcnlTZWxlY3RvckFsbCkge1xuICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKFwidmlkZW9cIikuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICB0aGlzLmF0dGFjaCh2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbFZpZGVvSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF92aWRlb19fKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5ldyBWaWRlb0hvb2soKS5pbnN0YWxsKCk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA1LzI2LlxuXG5pbXBvcnQgeyBpbnN0YWxsSGZIb29rIH0gZnJvbSBcIi4vaGZfaG9va1wiO1xuaW1wb3J0IHsgaW5zdGFsbFRpY2tIb29rIH0gZnJvbSBcIi4vdGlja19ob29rXCI7XG5pbXBvcnQgeyBpbnN0YWxsVmlkZW9Ib29rIH0gZnJvbSBcIi4vdmlkZW8vaG9va1wiO1xuXG5pZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgaW5zdGFsbEhmSG9vaygpO1xuICBpbnN0YWxsVGlja0hvb2soKTtcbiAgaW5zdGFsbFZpZGVvSG9vaygpO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pup-recorder",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Record web pages as video",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,20 +40,20 @@
40
40
  "electron"
41
41
  ],
42
42
  "optionalDependencies": {
43
- "@seydx/node-av-darwin-arm64": "latest",
44
- "@seydx/node-av-darwin-x64": "latest",
45
- "@seydx/node-av-linux-arm64": "latest",
46
- "@seydx/node-av-linux-x64": "latest",
47
- "@seydx/node-av-win32-arm64-mingw": "latest",
48
- "@seydx/node-av-win32-arm64-msvc": "latest",
49
- "@seydx/node-av-win32-x64-mingw": "latest",
50
- "@seydx/node-av-win32-x64-msvc": "latest"
43
+ "@seydx/node-av-darwin-arm64": "6.0.0",
44
+ "@seydx/node-av-darwin-x64": "6.0.0",
45
+ "@seydx/node-av-linux-arm64": "6.0.0",
46
+ "@seydx/node-av-linux-x64": "6.0.0",
47
+ "@seydx/node-av-win32-arm64-mingw": "6.0.0",
48
+ "@seydx/node-av-win32-arm64-msvc": "6.0.0",
49
+ "@seydx/node-av-win32-x64-mingw": "6.0.0",
50
+ "@seydx/node-av-win32-x64-msvc": "6.0.0"
51
51
  },
52
52
  "dependencies": {
53
53
  "commander": "latest",
54
54
  "electron": "latest",
55
55
  "fflate": "latest",
56
- "node-av": "latest",
56
+ "node-av": "6.0.0",
57
57
  "tree-kill": "latest",
58
58
  "source-map-support": "latest",
59
59
  "systeminformation": "latest",