pup-recorder 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,6 @@ pup - record web pages as video
8
8
 
9
9
  ```
10
10
  pup <source> [-w width] [-h height] [-f fps] [-t duration] [-o dir] [-a]
11
- pup-mcp-server
12
11
  ```
13
12
 
14
13
  ## DESCRIPTION
@@ -16,8 +15,6 @@ pup-mcp-server
16
15
  Captures web pages as video using Electron offscreen rendering. Outputs MP4
17
16
  by default; with `-a` outputs WebM (VP9) and MOV (HEVC alpha).
18
17
 
19
- `pup-mcp-server` exposes pup as an MCP tool for AI assistants.
20
-
21
18
  ## OPTIONS
22
19
 
23
20
  ```
@@ -58,15 +55,10 @@ const { mp4, cover, width, height, fps, duration } = await pup(
58
55
 
59
56
  Returns `{ mp4?, webm?, mov?, cover, width, height, fps, duration }`.
60
57
 
61
- ## AI INTEGRATION
62
-
63
- Supports MCP and OpenCode.
64
-
65
58
  ## FILES
66
59
 
67
60
  ```
68
61
  dist/cli.js CLI
69
- dist/mcp_server.js MCP server
70
62
  dist/index.js library
71
63
  rust/*.node native module
72
64
  x265/* x265 binaries
@@ -82,7 +74,7 @@ pup https://example.com -w 1280 -h 720 -f 60
82
74
 
83
75
  ## SEE ALSO
84
76
 
85
- pup-server(1), pup(7)
77
+ pup-recorder-mcp(1), pup-server(1), pup(7)
86
78
 
87
79
  ## AUTHOR
88
80
 
package/build.ts CHANGED
@@ -30,7 +30,6 @@ await Promise.all([
30
30
  entry: [
31
31
  "src/index.ts", //
32
32
  "src/cli.ts",
33
- "src/mcp_server.ts",
34
33
  ],
35
34
  format: "esm",
36
35
  outDir: "dist",
@@ -41,7 +40,6 @@ await Promise.all([
41
40
  entry: [
42
41
  "src/index.ts", //
43
42
  "src/cli.ts",
44
- "src/mcp_server.ts",
45
43
  "src/app.ts",
46
44
  ],
47
45
  format: "cjs",
@@ -1,3 +1,2 @@
1
- 'use strict';require('source-map-support/register.js');var mcp_js=require('@modelcontextprotocol/sdk/server/mcp.js'),stdio_js=require('@modelcontextprotocol/sdk/server/stdio.js'),_=require('zod'),promises=require('fs/promises'),path=require('path'),fs=require('fs'),url=require('url'),Ze=require('electron'),child_process=require('child_process'),process$1=require('process'),plugin=require('@opencode-ai/plugin'),promises$1=require('timers/promises');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ___default=/*#__PURE__*/_interopDefault(_);var Ze__default=/*#__PURE__*/_interopDefault(Ze);var Me=Object.create;var G=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var le=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),$=t=>{throw TypeError(t)};var fe=(t,e,r)=>e in t?G(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var he=t=>[,,,Me(null)],ge=["class","method","getter","setter","accessor","field","value","get","set"],O=t=>t!==void 0&&typeof t!="function"?$("Function expected"):t,ze=(t,e,r,o,i)=>({kind:ge[t],name:e,metadata:o,addInitializer:n=>r._?$("Already initialized"):i.push(O(n||null))}),q=(t,e)=>fe(e,le("metadata"),t[3]),be=(t,e,r,o)=>{for(var i=0,n=t[e>>1],p=n&&n.length;i<p;i++)n[i].call(r);return o},k=(t,e,r,o,i,n)=>{var a,d,l,b,s=e&7,x=false,f=false,E=2,C=ge[s+5],h=t[E]||(t[E]=[]),m=((i=i.prototype),Ve(i,r));for(var P=o.length-1;P>=0;P--)l=ze(s,r,d={},t[3],h),(l.static=x,l.private=f,b=l.access={has:u=>r in u},(b.get=u=>u[r]),s>2),a=(0, o[P])(m[C],l),d._=1,O(a)&&(m[C]=a);return m&&G(i,r,m),i},xe=(t,e,r)=>fe(t,e+"",r);var We=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,c=We();var Q={name:"pup-recorder",version:"0.0.16",description:"A nice webview recording tool.",repository:{type:"git",url:"https://github.com/Autokaka/pup-recorder.git"},license:"MIT",author:{name:"autokaka",email:"qq1909698494@gmail.com"},type:"module",bin:{pup:"dist/cli.js","pup-cjs":"dist/cjs/cli.cjs","pup-mcp-server":"dist/mcp_server.js","pup-mcp-server-cjs":"dist/cjs/mcp_server.cjs"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/cjs/index.cjs"}},engines:{bun:">= 1",node:">= 20"},engineStrict:true,devDependencies:{"@types/bun":"latest","@types/node":"^20.0.0","@typescript/native-preview":"latest",tsup:"latest",typescript:"latest"},dependencies:{"@modelcontextprotocol/sdk":"latest","@opencode-ai/plugin":"latest",commander:"latest",electron:"latest","source-map-support":"latest",zod:"latest"},scripts:{build:"bun build.ts && bun build_rust.ts"}};var F=1920,D=1080,X=30,K=5,Y="out",we=___default.default.object({duration:___default.default.number().optional().default(K).describe("Recording duration in seconds"),width:___default.default.number().optional().default(F).describe("Video width"),height:___default.default.number().optional().default(D).describe("Video height"),fps:___default.default.number().optional().default(X).describe("Frames per second"),withAlphaChannel:___default.default.boolean().optional().default(false).describe("Output with alpha channel"),outDir:___default.default.string().optional().default(Y).describe("Output directory"),useInnerProxy:___default.default.boolean().optional().default(false).describe("Use bilibili inner proxy for resource access")});var M=class t{constructor(e,r=1e3){this.query=e;this.interval=r;e&&this.tick();}_callback;_aborted;_stopped=false;static start(e,r){return new t(e,r)}get aborted(){return !this._stopped&&this._aborted}get stopped(){return this._stopped}async onAbort(e){this._aborted?await e():this._callback=e;}wait(...e){let r=new Promise((o,i)=>{this.onAbort(async()=>{e.forEach(n=>n.process.kill()),i(new Error("aborted"));});});return Promise.race([r,Promise.all(e.map(o=>o.wait))])}stop(){this._stopped=true;}tick(){setTimeout(async()=>{this._stopped||(this._aborted=await this.query?.(),!this._stopped&&(this._aborted?await this._callback?.():this.tick()));},this.interval);}};var T=path.dirname(url.fileURLToPath(c));function ve(t,e,r){try{return e(process.env[t])}catch{return r}}function V(t){if(typeof t=="number")return t;let e=Number(t);if(Number.isNaN(e))throw new Error(`Value ${t} is not a valid number`);return e}var Xe=[path.join(T,"cjs/app.cjs"),path.join(T,"app.cjs"),path.join(T,"../../cjs/app.cjs")],ye=Xe.find(fs.existsSync),_e=process.env,L=ve("PUP_LOG_LEVEL",V,2),Dt=_e.PUP_USE_INNER_PROXY==="1",U=_e.FFMPEG_BIN??"ffmpeg";var ee="<pup@debug>",te="<pup@info>",re="<pup@warn>",oe="<pup@error>",ie="<pup@fatal>";function j(t,e){return function(...r){let o=r.map(i=>i instanceof Error?i.stack??String(i):i);return t.call(this,...o)}}var Pe,Te,Se,Ae,Ee,S;Ee=[j],Ae=[j],Se=[j],Te=[j],Pe=[j];var w=class{constructor(){be(S,5,this);xe(this,"_impl");this.impl=console;}get impl(){return this._impl}set impl(e){let r=e.debug??console.debug,o=e.info??console.info,i=e.warn??console.warn,n=e.error??console.error;this._impl={debug:L>=3?r:void 0,info:L>=2?o:void 0,warn:L>=1?i:void 0,error:L>=0?n:void 0};}debug(...e){this.impl?.debug?.(ee,...e);}info(...e){this.impl?.info?.(te,...e);}warn(...e){this.impl?.warn?.(re,...e);}error(...e){this.impl?.error?.(oe,...e);}fatal(...e){this.impl?.error?.(ie,...e),process.exit(1);}dispatch(e){e.startsWith(ee)?this.debug(e.slice(ee.length+1)):e.startsWith(te)?this.info(e.slice(te.length+1)):e.startsWith(re)?this.warn(e.slice(re.length+1)):e.startsWith(oe)?this.error(e.slice(oe.length+1)):this.info(e);}attach(e,r){return new Promise((o,i)=>{this.debug(`${r}.attach`);let n="",p=a=>{let d=a.toString();d.startsWith(ie)?n+=d.slice(ie.length+1):this.dispatch(d);};e.stderr?.on("data",p),e.stdout?.on("data",p),e.on("message",p).on("error",a=>{n+=a.message,e.kill();}).once("close",(a,d)=>{a||d||n?(n||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:a,signal:d,fatal:n}),i(new Error(n))):(this.debug(`${r}.close`),o());}).on("unhandledRejection",a=>{this.error(`${r}.unhandled`,a);}).on("uncaughtExceptionMonitor",a=>{this.error(`${r}.unhandled`,a);});})}};S=he(),k(S,1,"debug",Ee,w),k(S,1,"info",Ae,w),k(S,1,"warn",Se,w),k(S,1,"error",Te,w),k(S,1,"fatal",Pe,w),q(S,w);var v=new w;var Ye="__PUP_ARGS__";function Ht(){let t=process.env[Ye];if(t){let e=["exec",...process.argv.slice(-1)];return e.push(...JSON.parse(t)),v.debug("pupargs",e),e}return v.debug("procargv",process.argv),process.argv}function A(t,e){let r=t.split(" ").filter(p=>p.length),[o,...i]=r;if(!o)throw new Error("empty command");let n=child_process.spawn(o,i,{stdio:"inherit",...e});return {process:n,wait:v.attach(n,o)}}var et=["no-sandbox","disable-setuid-sandbox","disable-gpu","disable-dev-shm-usage","disable-software-rasterizer","disable-web-security","disable-site-isolation-trials","disable-features=IsolateOrigins,site-per-process","allow-insecure-localhost","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","disable-extensions","disable-background-networking","address-family=ipv4","disable-async-dns","force-device-scale-factor=1","trace-warnings","force-color-profile=srgb","disable-color-correct-rendering","log-level=3"];function Ce(t,e,r){let o=et.map(n=>`--${n}`),i=[];return process.platform==="linux"&&i.push("xvfb-run","--auto-servernum",`--server-args='-screen 0 ${t.width}x${t.height}x24'`),i.push(Ze__default.default,...o,e),A(i.join(" "),{stdio:["ignore","pipe","pipe"],shell:true,env:{...process.env,ELECTRON_DISABLE_DBUS:"1",RUST_BACKTRACE:"full",__PUP_ARGS__:JSON.stringify(r)}})}var z=["-hide_banner","-loglevel","error","-nostats"];function it(){let t=`x265/${process$1.platform}-${process$1.arch}`,r=[path.join(T,`../../${t}`),path.join(T,`../${t}`)].find(fs.existsSync);if(!r)throw new Error("x265 not found");return r}function ke(t,e,r){let{fps:o,frames:i}=e,n=["-y",...z,"-f","rawvideo","-pix_fmt","bgra","-s",`${e.size.width}x${e.size.height}`,"-r",`${o}`,"-i",t,"-frames:v",`${Math.floor(i)}`];return r.mp4&&n.push("-colorspace","bt709","-color_primaries","bt709","-color_trc","bt709","-c:v","libx264","-preset","fast","-threads","0","-pix_fmt","yuv420p","-movflags","+faststart",r.mp4),r.webm&&n.push("-c:v","libvpx-vp9","-row-mt","1","-cpu-used","1","-threads","0","-pix_fmt","yuva420p","-auto-alt-ref","0",r.webm),{command:U,args:n}}function Oe(t,e,r){let{fps:o,size:i}=e;return {raw:{command:U,args:["-y",...z,"-f","rawvideo","-pix_fmt","bgra","-s",`${i.width}x${i.height}`,"-r",`${o}`,"-i",t,"-f","rawvideo","-pix_fmt","yuva420p10le","pipe:1"]},x265:{command:it(),args:["--no-progress","--log-level","error","--input","-","--input-res",`${i.width}x${i.height}`,"--input-csp","i420","--input-depth","10","--output-depth","10","--fps",`${o}`,"--alpha","--bframes","0","--colorprim","bt709","--transfer","bt709","--colormatrix","bt709","--crf","18","--output","-"]},mux:{command:U,args:["-y",...z,"-f","hevc","-r",`${o}`,"-i","pipe:0","-c:v","copy","-tag:v","hvc1","-movflags","+faststart",r]}}}function $e(t,e){return {command:U,args:["-y",...z,"-i",t,"-frames:v","1","-q:v","2",e]}}function ne(t,e,r,o){let n=ke(t,r,o==="mp4"?{mp4:e}:{webm:e});return A(`${n.command} ${n.args.join(" ")}`,{stdio:["ignore","inherit","inherit"]})}function Fe(t,e,r){let o=Oe(t,r,e),i=[`${o.raw.command} ${o.raw.args.join(" ")}`,`${o.x265.command} ${o.x265.args.join(" ")}`,`${o.mux.command} ${o.mux.args.join(" ")}`].join(" | ");return A(i,{stdio:["ignore","inherit","inherit"],shell:true})}var H=class{constructor(e){this.maxConcurrency=e;}_active=0;_queue=[];_pending=0;_ended=false;get active(){return this._active}get pending(){return this._pending}async schedule(e){if(this._ended)throw new Error("ended");return new Promise((r,o)=>{let i=()=>{this._active++,this._pending--,e().then(r).catch(o).finally(()=>{this._active--,this.next();});};this._pending++,this._active<this.maxConcurrency?i():this._queue.push(i);})}async end(){if(!this._ended)for(this._ended=true;this._active>0||this._pending>0;)await new Promise(e=>setTimeout(e,50));}next(){this._active<this.maxConcurrency&&this._queue.length>0&&this._queue.shift()?.();}};var B="[pup]",De=" progress: ";function st(t,e){v.debug(B,"runPupApp",t,e);let r=[t];e.width&&r.push("--width",`${e.width}`),e.height&&r.push("--height",`${e.height}`),e.fps&&r.push("--fps",`${e.fps}`),e.duration&&r.push("--duration",`${e.duration}`),e.outDir&&r.push("--out-dir",e.outDir),e.withAlphaChannel&&r.push("--with-alpha-channel"),e.useInnerProxy&&r.push("--use-inner-proxy");let o=e.width??F,i=e.height??D,n=Ce({width:o,height:i},ye,r),p=new H(1);return n.process.stdout?.on("data",a=>{let d=a.toString().trim(),l=d.indexOf(De);if(l<0)return;d=d.slice(l+De.length);let b=d.indexOf("%");if(b<0)return;let s=d.slice(0,b),x=V(s);p.schedule(async()=>{await e.onProgress?.(x);});}),{handle:n,counter:p}}async function W(t,e){v.debug(B,"pup",t,e);let r=M.start(e.cancelQuery),o=e.outDir??"out",i=performance.now(),{handle:n,counter:p}=st(t,{...e,outDir:o});await r.wait(n),await p.end(),v.info(B,`capture cost ${Math.round(performance.now()-i)}ms`);let a=path.join(o,"record.json"),d=JSON.parse(await promises.readFile(a,"utf-8")),{bgraPath:l,written:b,options:s}=d,{fps:x,width:f,height:E,withAlphaChannel:C}=s,I={width:f,height:E},h={mp4:C?void 0:path.join(o,"output.mp4"),webm:C?path.join(o,"output.webm"):void 0,mov:C?path.join(o,"output.mov"):void 0,cover:path.join(o,"cover.png")};try{let m=performance.now(),P={fps:x,frames:b,size:I},u=[];h.mp4&&u.push(ne(l,h.mp4,P,"mp4")),h.webm&&u.push(ne(l,h.webm,P,"webm")),h.mov&&u.push(Fe(l,h.mov,P)),await r.wait(...u);let R=h.mov??h.webm??h.mp4;if(R){let ce=$e(R,h.cover),Ie=A(`${ce.command} ${ce.args.join(" ")}`);await r.wait(Ie);}return r.stop(),v.info(B,`encoding cost ${Math.round(performance.now()-m)}ms`),await Promise.all([promises.rm(l,{force:!0}),promises.rm(a,{force:!0})]),{...h,width:f,height:E,fps:x,duration:Math.ceil(b/x)}}catch(m){throw await promises.rm(o,{recursive:true,force:true}),m}}var g=___default.default.object({source:___default.default.string().describe("file://, http(s)://, or data: URI")}).extend(we.shape),ae=Q.name,ct="Record Webpage",pe="Record a webpage to video";function ut(t){t.registerTool(ae,{title:ct,description:pe,inputSchema:g},async e=>{try{let r=await W(e.source,e);return {content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(r){return {isError:true,content:[{type:"text",text:JSON.stringify({error:String(r)})}]}}});}async function Rr(){let t=new mcp_js.McpServer(Q);ut(t),await t.connect(new stdio_js.StdioServerTransport);}var y=plugin.tool.schema,dt=y.object({source:y.string().describe(g.shape.source.description),duration:y.number().optional().default(K).describe(g.shape.duration.description),width:y.number().optional().default(F).describe(g.shape.width.description),height:y.number().optional().default(D).describe(g.shape.height.description),fps:y.number().optional().default(X).describe(g.shape.fps.description),withAlphaChannel:y.boolean().optional().default(false).describe(g.shape.withAlphaChannel.description),outDir:y.string().optional().default(Y).describe(g.shape.outDir.description),useInnerProxy:y.boolean().optional().default(false).describe(g.shape.useInnerProxy.description)}),Ur=async()=>({tool:{[ae]:plugin.tool({description:pe,args:dt.shape,async execute(t){try{let e=await W(t.source,t);return JSON.stringify(e,null,2)}catch(e){return JSON.stringify({error:String(e)})}}})}});var je=class{constructor(e){this.makeValue=e;}get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};function Vr(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}function Ne(t){return new Promise(e=>setTimeout(e,t))}function Br(t,e){let r,o=false;async function i(n){await t(n),!o&&(r=setTimeout(()=>i(n+1),e));}return r=setTimeout(()=>i(0),e),()=>{o=true,clearTimeout(r);}}function Qr({fn:t,maxAttempts:e=3,timeout:r}){let o=new Error(`timeout over ${r}ms`);return async function(...i){let n=0;for(;;)try{let p=[t(...i)];return r&&p.push(promises$1.setTimeout(r).then(()=>{throw o})),await Promise.race(p)}catch(p){if(n++,n>=e)throw p;await Ne(Math.pow(2,n)*100+Math.random()*100);}}}
2
- exports.ConcurrencyLimiter=H;exports.DEFAULT_DURATION=K;exports.DEFAULT_FPS=X;exports.DEFAULT_HEIGHT=D;exports.DEFAULT_OUT_DIR=Y;exports.DEFAULT_WIDTH=F;exports.Lazy=je;exports.MCP_TOOL_DESC=pe;exports.MCP_TOOL_NAME=ae;exports.MCP_TOOL_TITLE=ct;exports.PUP_ARGS_ENV_KEY=Ye;exports.PupMCPSchema=g;exports.PupOpenCodePlugin=Ur;exports.RecordSchema=we;exports.exec=A;exports.logger=v;exports.mcpAddPup=ut;exports.noerr=Vr;exports.pargs=Ht;exports.parseNumber=V;exports.penv=ve;exports.periodical=Br;exports.pup=W;exports.pupAppPath=ye;exports.pupFFmpegPath=U;exports.pupLogLevel=L;exports.pupUseInnerProxy=Dt;exports.sleep=Ne;exports.startMCPServer=Rr;exports.useRetry=Qr;//# sourceMappingURL=index.cjs.map
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYnVuL3RzdXBAOC41LjErM2YyOWI5MDQzN2QwMDFhZC9ub2RlX21vZHVsZXMvdHN1cC9hc3NldHMvY2pzX3NoaW1zLmpzIiwiLi4vLi4vcGFja2FnZS5qc29uIiwiLi4vLi4vc3JjL2Jhc2Uvc2NoZW1hLnRzIiwiLi4vLi4vc3JjL2Jhc2UvYWJvcnQudHMiLCIuLi8uLi9zcmMvYmFzZS9iYXNlZGlyLnRzIiwiLi4vLi4vc3JjL2Jhc2UvZW52LnRzIiwiLi4vLi4vc3JjL2Jhc2UvcGFyc2VyLnRzIiwiLi4vLi4vc3JjL2Jhc2UvY29uc3RhbnRzLnRzIiwiLi4vLi4vc3JjL2Jhc2UvbG9nZ2luZy50cyIsIi4uLy4uL3NyYy9iYXNlL3Byb2Nlc3MudHMiLCIuLi8uLi9zcmMvYmFzZS9lbGVjdHJvbi50cyIsIi4uLy4uL3NyYy9iYXNlL2ZmbXBlZy50cyIsIi4uLy4uL3NyYy9iYXNlL2VuY29kZXIudHMiLCIuLi8uLi9zcmMvYmFzZS9saW1pdGVyLnRzIiwiLi4vLi4vc3JjL3B1cC50cyIsIi4uLy4uL3NyYy9haS9tY3AudHMiLCIuLi8uLi9zcmMvYWkvb3BlbmNvZGUudHMiLCIuLi8uLi9zcmMvYmFzZS9sYXp5LnRzIiwiLi4vLi4vc3JjL2Jhc2Uvbm9lcnIudHMiLCIuLi8uLi9zcmMvYmFzZS90aW1pbmcudHMiLCIuLi8uLi9zcmMvYmFzZS9yZXRyeS50cyJdLCJuYW1lcyI6WyJnZXRJbXBvcnRNZXRhVXJsIiwiaW1wb3J0TWV0YVVybCIsInBhY2thZ2VfZGVmYXVsdCIsIkRFRkFVTFRfV0lEVEgiLCJERUZBVUxUX0hFSUdIVCIsIkRFRkFVTFRfRlBTIiwiREVGQVVMVF9EVVJBVElPTiIsIkRFRkFVTFRfT1VUX0RJUiIsIlJlY29yZFNjaGVtYSIsInoiLCJBYm9ydExpbmsiLCJfQWJvcnRMaW5rIiwicXVlcnkiLCJpbnRlcnZhbCIsImNhbGxiYWNrIiwiaGFuZGxlcyIsImFib3J0IiwiXyIsInJlamVjdCIsImgiLCJiYXNlZGlyIiwiZGlybmFtZSIsImZpbGVVUkxUb1BhdGgiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwidmFsdWUiLCJudW0iLCJwdXBBcHBTZWFyY2hQYXRocyIsImpvaW4iLCJwdXBBcHBQYXRoIiwiZXhpc3RzU3luYyIsImVudiIsInB1cExvZ0xldmVsIiwicHVwVXNlSW5uZXJQcm94eSIsInB1cEZGbXBlZ1BhdGgiLCJERUJVRyIsIklORk8iLCJXQVJOIiwiRVJST1IiLCJGQVRBTCIsInN0YWNrSG9vayIsInRhcmdldCIsIl9jb250ZXh0IiwibWVzc2FnZXMiLCJwcm9jZXNzZWQiLCJtc2ciLCJfZmF0YWxfZGVjIiwiX2Vycm9yX2RlYyIsIl93YXJuX2RlYyIsIl9pbmZvX2RlYyIsIl9kZWJ1Z19kZWMiLCJfaW5pdCIsIkxvZ2dlciIsIl9fcnVuSW5pdGlhbGl6ZXJzIiwiX19wdWJsaWNGaWVsZCIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJQVVBfQVJHU19FTlZfS0VZIiwicGFyZ3MiLCJwdXBBcmdzIiwiYXJncyIsImV4ZWMiLCJjbWQiLCJvcHRpb25zIiwicGFydHMiLCJzIiwiY29tbWFuZCIsInNwYXduIiwiRUxFQ1RST05fT1BUUyIsInJ1bkVsZWN0cm9uQXBwIiwic2l6ZSIsImFwcCIsImVsZWN0cm9uQXJncyIsImEiLCJjbWRQYXJ0cyIsImVsZWN0cm9uIiwicXVpZXQiLCJyZXNvbHZlWDI2NSIsInBhdGgiLCJwbGF0Zm9ybSIsImFyY2giLCJmb3VuZCIsImNyZWF0ZUJncmFGaWxlQ29tbWFuZCIsImJncmFQYXRoIiwic3BlYyIsImZpbGVzIiwiZnBzIiwiZnJhbWVzIiwiY3JlYXRlQmdyYVRvTW92UGlwZWxpbmUiLCJtb3YiLCJjcmVhdGVDb3ZlckNvbW1hbmQiLCJzcmMiLCJkc3QiLCJlbmNvZGVCZ3JhRmlsZSIsIm91dHB1dFBhdGgiLCJmb3JtYXQiLCJlbmNvZGVCZ3JhVG9Nb3YiLCJtb3ZQYXRoIiwieDI2NSIsInNoZWxsQ21kIiwiQ29uY3VycmVuY3lMaW1pdGVyIiwibWF4Q29uY3VycmVuY3kiLCJmbiIsInJ1biIsIlRBRyIsIlBST0dSRVNTX1RBRyIsInJ1blB1cEFwcCIsInNvdXJjZSIsInciLCJoYW5kbGUiLCJjb3VudGVyIiwic3RhcnQiLCJlbmQiLCJwcm9ncmVzc1N0ciIsInByb2dyZXNzIiwicHVwIiwibGluayIsIm91dERpciIsInQwIiwibWV0YVBhdGgiLCJtZXRhIiwicmVhZEZpbGUiLCJ3cml0dGVuIiwicmVjb3JkT3B0aW9ucyIsIndpZHRoIiwiaGVpZ2h0Iiwid2l0aEFscGhhQ2hhbm5lbCIsIm91dHB1dHMiLCJ0MSIsImNvdmVyU3JjIiwiY292ZXJDbWQiLCJybSIsIlB1cE1DUFNjaGVtYSIsIk1DUF9UT09MX05BTUUiLCJNQ1BfVE9PTF9USVRMRSIsIk1DUF9UT09MX0RFU0MiLCJtY3BBZGRQdXAiLCJzZXJ2ZXIiLCJyZXN1bHQiLCJzdGFydE1DUFNlcnZlciIsIk1jcFNlcnZlciIsIlN0ZGlvU2VydmVyVHJhbnNwb3J0IiwidG9vbCIsIlB1cFBsdWdpblNjaGVtYSIsIlB1cE9wZW5Db2RlUGx1Z2luIiwiTGF6eSIsIm1ha2VWYWx1ZSIsIm5vZXJyIiwicmV0Iiwic2xlZXAiLCJtcyIsInBlcmlvZGljYWwiLCJ0b2tlbiIsImNsb3NlZCIsInRpY2siLCJjb3VudCIsInVzZVJldHJ5IiwibWF4QXR0ZW1wdHMiLCJ0aW1lb3V0IiwidGltZW91dEVycm9yIiwiYXR0ZW1wdCIsInByb21pc2VzIiwic2V0VGltZW91dCIsImUiXSwibWFwcGluZ3MiOiJxbUJBS0EsSUFBQSxFQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsY0FBQSxDQUFBLElBQUEsRUFBQSxDQUFBLE1BQUEsQ0FBQSx3QkFBQSxDQUFBLElBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxNQUFBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFVBQUEsQ0FBQSxJQUFBLENBQUEsWUFBQSxDQUFBLElBQUEsQ0FBQSxRQUFBLENBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQSxFQUFBLElBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsT0FBQSxDQUFBLFFBQUEsQ0FBQSxRQUFBLENBQUEsUUFBQSxDQUFBLFVBQUEsQ0FBQSxPQUFBLENBQUEsT0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsR0FBQSxNQUFBLEVBQUEsT0FBQSxDQUFBLEVBQUEsVUFBQSxDQUFBLENBQUEsQ0FBQSxtQkFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxjQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLHFCQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsU0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxJQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQU1BLEdBQW1CLElBQ3ZCLE9BQU8sUUFBQSxDQUFhLEdBQUEsQ0FDaEIsSUFBSSxHQUFBLENBQUksQ0FBQSxL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QUEsQ0FBUyxJQUFBLENBQ1BDLHNCQUFXSixDQUFPLENBQUEsQ0FBRSxJQUFBLENBQUssSUFBTSxDQUM3QixNQUFNQyxDQUNSLENBQUMsQ0FDSCxFQUVLLE1BQU0sT0FBQSxDQUFRLEtBQUtFLENBQVEsQ0FDcEMsT0FBU0UsQ0FBQUEsQ0FBRyxDQUVWLEdBREFILENBQUFBLEVBQUFBLENBQ0lBLEdBQVdILENBQUFBLENBQ2IsTUFBTU0sRUFFUixNQUFNZCxFQUFBQSxDQUFNLEtBQUssR0FBQSxDQUFJLENBQUEsQ0FBR1csQ0FBTyxDQUFBLENBQUksSUFBTSxJQUFBLENBQUssTUFBQSxHQUFXLEdBQUcsRUFDOUQsQ0FFSixDQUNGIiwiZmlsZSI6ImluZGV4LmNqcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNoaW0gZ2xvYmFscyBpbiBjanMgYnVuZGxlXG4vLyBUaGVyZSdzIGEgd2VpcmQgYnVnIHRoYXQgZXNidWlsZCB3aWxsIGFsd2F5cyBpbmplY3QgaW1wb3J0TWV0YVVybFxuLy8gaWYgd2UgZXhwb3J0IGl0IGFzIGBjb25zdCBpbXBvcnRNZXRhVXJsID0gLi4uIF9fZmlsZW5hbWUgLi4uYFxuLy8gQnV0IHVzaW5nIGEgZnVuY3Rpb24gd2lsbCBub3QgY2F1c2UgdGhpcyBpc3N1ZVxuXG5jb25zdCBnZXRJbXBvcnRNZXRhVXJsID0gKCkgPT4gXG4gIHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIiBcbiAgICA/IG5ldyBVUkwoYGZpbGU6JHtfX2ZpbGVuYW1lfWApLmhyZWYgXG4gICAgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1NDUklQVCcpIFxuICAgICAgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyBcbiAgICAgIDogbmV3IFVSTChcIm1haW4uanNcIiwgZG9jdW1lbnQuYmFzZVVSSSkuaHJlZjtcblxuZXhwb3J0IGNvbnN0IGltcG9ydE1ldGFVcmwgPSAvKiBAX19QVVJFX18gKi8gZ2V0SW1wb3J0TWV0YVVybCgpXG4iLCJ7XG4gIFwibmFtZVwiOiBcInB1cC1yZWNvcmRlclwiLFxuICBcInZlcnNpb25cIjogXCIwLjAuMTZcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkEgbmljZSB3ZWJ2aWV3IHJlY29yZGluZyB0b29sLlwiLFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL0F1dG9rYWthL3B1cC1yZWNvcmRlci5naXRcIlxuICB9LFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJhdXRob3JcIjoge1xuICAgIFwibmFtZVwiOiBcImF1dG9rYWthXCIsXG4gICAgXCJlbWFpbFwiOiBcInFxMTkwOTY5ODQ5NEBnbWFpbC5jb21cIlxuICB9LFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJiaW5cIjoge1xuICAgIFwicHVwXCI6IFwiZGlzdC9jbGkuanNcIixcbiAgICBcInB1cC1janNcIjogXCJkaXN0L2Nqcy9jbGkuY2pzXCIsXG4gICAgXCJwdXAtbWNwLXNlcnZlclwiOiBcImRpc3QvbWNwX3NlcnZlci5qc1wiLFxuICAgIFwicHVwLW1jcC1zZXJ2ZXItY2pzXCI6IFwiZGlzdC9janMvbWNwX3NlcnZlci5janNcIlxuICB9LFxuICBcImV4cG9ydHNcIjoge1xuICAgIFwiLlwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvY2pzL2luZGV4LmNqc1wiXG4gICAgfVxuICB9LFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwiYnVuXCI6IFwiPj0gMVwiLFxuICAgIFwibm9kZVwiOiBcIj49IDIwXCJcbiAgfSxcbiAgXCJlbmdpbmVTdHJpY3RcIjogdHJ1ZSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHR5cGVzL2J1blwiOiBcImxhdGVzdFwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjAuMC4wXCIsXG4gICAgXCJAdHlwZXNjcmlwdC9uYXRpdmUtcHJldmlld1wiOiBcImxhdGVzdFwiLFxuICAgIFwidHN1cFwiOiBcImxhdGVzdFwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcImxhdGVzdFwiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGtcIjogXCJsYXRlc3RcIixcbiAgICBcIkBvcGVuY29kZS1haS9wbHVnaW5cIjogXCJsYXRlc3RcIixcbiAgICBcImNvbW1hbmRlclwiOiBcImxhdGVzdFwiLFxuICAgIFwiZWxlY3Ryb25cIjogXCJsYXRlc3RcIixcbiAgICBcInNvdXJjZS1tYXAtc3VwcG9ydFwiOiBcImxhdGVzdFwiLFxuICAgIFwiem9kXCI6IFwibGF0ZXN0XCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImJ1aWxkXCI6IFwiYnVuIGJ1aWxkLnRzICYmIGJ1biBidWlsZF9ydXN0LnRzXCJcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9TcGVjIHtcbiAgZnBzOiBudW1iZXI7XG4gIGZyYW1lczogbnVtYmVyO1xuICBzaXplOiBTaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRmlsZXMge1xuICBtcDQ/OiBzdHJpbmc7XG4gIHdlYm0/OiBzdHJpbmc7XG4gIG1vdj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb0ZpbGVzV2l0aENvdmVyIGV4dGVuZHMgVmlkZW9GaWxlcyB7XG4gIGNvdmVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gMTkyMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9IDEwODA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GUFMgPSAzMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RVUkFUSU9OID0gNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVF9ESVIgPSBcIm91dFwiO1xuXG5leHBvcnQgY29uc3QgUmVjb3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICBkdXJhdGlvbjogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9EVVJBVElPTilcbiAgICAuZGVzY3JpYmUoXCJSZWNvcmRpbmcgZHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfV0lEVEgpLmRlc2NyaWJlKFwiVmlkZW8gd2lkdGhcIiksXG4gIGhlaWdodDogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9IRUlHSFQpXG4gICAgLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfRlBTKS5kZXNjcmliZShcIkZyYW1lcyBwZXIgc2Vjb25kXCIpLFxuICB3aXRoQWxwaGFDaGFubmVsOiB6XG4gICAgLmJvb2xlYW4oKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLmRlc2NyaWJlKFwiT3V0cHV0IHdpdGggYWxwaGEgY2hhbm5lbFwiKSxcbiAgb3V0RGlyOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVmYXVsdChERUZBVUxUX09VVF9ESVIpXG4gICAgLmRlc2NyaWJlKFwiT3V0cHV0IGRpcmVjdG9yeVwiKSxcbiAgdXNlSW5uZXJQcm94eTogelxuICAgIC5ib29sZWFuKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5kZXNjcmliZShcIlVzZSBiaWxpYmlsaSBpbm5lciBwcm94eSBmb3IgcmVzb3VyY2UgYWNjZXNzXCIpLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkT3B0aW9ucyB7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmcHM6IG51bWJlcjtcbiAgd2l0aEFscGhhQ2hhbm5lbDogYm9vbGVhbjtcbiAgb3V0RGlyOiBzdHJpbmc7XG4gIHVzZUlubmVyUHJveHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkUmVzdWx0IHtcbiAgb3B0aW9uczogUmVjb3JkT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBiZ3JhUGF0aDogc3RyaW5nO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8xMS5cblxuaW1wb3J0IHR5cGUgeyBQcm9jZXNzSGFuZGxlIH0gZnJvbSBcIi4vcHJvY2Vzc1wiO1xuXG5leHBvcnQgdHlwZSBBc3luY1Rhc2sgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbmV4cG9ydCB0eXBlIEFib3J0UXVlcnkgPSAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcblxuZXhwb3J0IGNsYXNzIEFib3J0TGluayB7XG4gIHByaXZhdGUgX2NhbGxiYWNrPzogQXN5bmNUYXNrO1xuICBwcml2YXRlIF9hYm9ydGVkPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3RvcHBlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcXVlcnk/OiBBYm9ydFF1ZXJ5LFxuICAgIHJlYWRvbmx5IGludGVydmFsOiBudW1iZXIgPSAxMDAwLFxuICApIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMudGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBzdGFydChxdWVyeT86IEFib3J0UXVlcnksIGludGVydmFsPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBBYm9ydExpbmsocXVlcnksIGludGVydmFsKTtcbiAgfVxuXG4gIGdldCBhYm9ydGVkKCkge1xuICAgIHJldHVybiAhdGhpcy5fc3RvcHBlZCAmJiB0aGlzLl9hYm9ydGVkO1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBvbkFib3J0KGNhbGxiYWNrOiBBc3luY1Rhc2spIHtcbiAgICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgICAgYXdhaXQgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICB3YWl0KC4uLmhhbmRsZXM6IFByb2Nlc3NIYW5kbGVbXSkge1xuICAgIGNvbnN0IGFib3J0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5vbkFib3J0KGFzeW5jICgpID0+IHtcbiAgICAgICAgaGFuZGxlcy5mb3JFYWNoKChoKSA9PiBoLnByb2Nlc3Mua2lsbCgpKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcImFib3J0ZWRcIikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgICBhYm9ydCxcbiAgICAgIFByb21pc2UuYWxsKGhhbmRsZXMubWFwKChoKSA9PiBoLndhaXQpKSwgLy9cbiAgICBdKTtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5fc3RvcHBlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHRpY2soKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9hYm9ydGVkID0gYXdhaXQgdGhpcy5xdWVyeT8uKCk7XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLl9jYWxsYmFjaz8uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRpY2soKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLmludGVydmFsKTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcInVybFwiO1xuXG5leHBvcnQgY29uc3QgYmFzZWRpciA9IGRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIHBhcnNlcjogRW52UGFyc2VyPFQ+LFxuICBkZWZhdWx0VmFsdWU/OiBULFxuKTogVCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIHBhcnNlcjogRW52UGFyc2VyPFQ+LFxuICBkZWZhdWx0VmFsdWU/OiBULFxuKTogVCB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlcihwcm9jZXNzLmVudltuYW1lXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBiYXNlZGlyIH0gZnJvbSBcIi4vYmFzZWRpclwiO1xuaW1wb3J0IHsgcGVudiB9IGZyb20gXCIuL2VudlwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9wYXJzZXJcIjtcblxuY29uc3QgcHVwQXBwU2VhcmNoUGF0aHMgPSBbXG4gIGpvaW4oYmFzZWRpciwgXCJjanMvYXBwLmNqc1wiKSwgLy8gcHJvY2VzcyBmcm9tIGRpc3RcbiAgam9pbihiYXNlZGlyLCBcImFwcC5janNcIiksIC8vIHByb2Nlc3MgZnJvbSBkaXN0L2Nqc1xuICBqb2luKGJhc2VkaXIsIFwiLi4vLi4vY2pzL2FwcC5janNcIiksIC8vIHByb2Nlc3MgZnJvbSBzcmNcbl07XG5leHBvcnQgY29uc3QgcHVwQXBwUGF0aCA9IHB1cEFwcFNlYXJjaFBhdGhzLmZpbmQoZXhpc3RzU3luYykhO1xuXG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcbmV4cG9ydCBjb25zdCBwdXBMb2dMZXZlbCA9IHBlbnYoXCJQVVBfTE9HX0xFVkVMXCIsIHBhcnNlTnVtYmVyLCAyKTtcbmV4cG9ydCBjb25zdCBwdXBVc2VJbm5lclByb3h5ID0gZW52W1wiUFVQX1VTRV9JTk5FUl9QUk9YWVwiXSA9PT0gXCIxXCI7XG5leHBvcnQgY29uc3QgcHVwRkZtcGVnUGF0aCA9IGVudltcIkZGTVBFR19CSU5cIl0gPz8gYGZmbXBlZ2A7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA2LlxuXG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MsIHR5cGUgU2VyaWFsaXphYmxlIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHB1cExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyTGlrZSB7XG4gIGRlYnVnPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBpbmZvPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICB3YXJuPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBlcnJvcj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG59XG5cbmNvbnN0IERFQlVHID0gXCI8cHVwQGRlYnVnPlwiO1xuY29uc3QgSU5GTyA9IFwiPHB1cEBpbmZvPlwiO1xuY29uc3QgV0FSTiA9IFwiPHB1cEB3YXJuPlwiO1xuY29uc3QgRVJST1IgPSBcIjxwdXBAZXJyb3I+XCI7XG5jb25zdCBGQVRBTCA9IFwiPHB1cEBmYXRhbD5cIjtcblxuZnVuY3Rpb24gc3RhY2tIb29rKHRhcmdldDogRnVuY3Rpb24sIF9jb250ZXh0OiBDbGFzc01ldGhvZERlY29yYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBMb2dnZXIsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBtZXNzYWdlcy5tYXAoKG1zZykgPT4ge1xuICAgICAgcmV0dXJuIG1zZyBpbnN0YW5jZW9mIEVycm9yID8gKG1zZy5zdGFjayA/PyBTdHJpbmcobXNnKSkgOiBtc2c7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhcmdldC5jYWxsKHRoaXMsIC4uLnByb2Nlc3NlZCk7XG4gIH07XG59XG5cbmNsYXNzIExvZ2dlciBpbXBsZW1lbnRzIExvZ2dlckxpa2Uge1xuICBwcml2YXRlIF9pbXBsPzogTG9nZ2VyTGlrZTtcblxuICBnZXQgaW1wbCgpOiBMb2dnZXJMaWtlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW1wbDtcbiAgfVxuXG4gIHNldCBpbXBsKHZhbHVlOiBMb2dnZXJMaWtlKSB7XG4gICAgY29uc3QgZGVidWcgPSB2YWx1ZS5kZWJ1ZyA/PyBjb25zb2xlLmRlYnVnO1xuICAgIGNvbnN0IGluZm8gPSB2YWx1ZS5pbmZvID8/IGNvbnNvbGUuaW5mbztcbiAgICBjb25zdCB3YXJuID0gdmFsdWUud2FybiA/PyBjb25zb2xlLndhcm47XG4gICAgY29uc3QgZXJyb3IgPSB2YWx1ZS5lcnJvciA/PyBjb25zb2xlLmVycm9yO1xuICAgIHRoaXMuX2ltcGwgPSB7XG4gICAgICBkZWJ1ZzogcHVwTG9nTGV2ZWwgPj0gMyA/IGRlYnVnIDogdW5kZWZpbmVkLFxuICAgICAgaW5mbzogcHVwTG9nTGV2ZWwgPj0gMiA/IGluZm8gOiB1bmRlZmluZWQsXG4gICAgICB3YXJuOiBwdXBMb2dMZXZlbCA+PSAxID8gd2FybiA6IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiBwdXBMb2dMZXZlbCA+PSAwID8gZXJyb3IgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW1wbCA9IGNvbnNvbGU7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGRlYnVnKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmRlYnVnPy4oREVCVUcsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgaW5mbyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5pbmZvPy4oSU5GTywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICB3YXJuKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/Lndhcm4/LihXQVJOLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGVycm9yKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRVJST1IsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZmF0YWwoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihGQVRBTCwgLi4ubWVzc2FnZXMpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2gobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChERUJVRykpIHtcbiAgICAgIHRoaXMuZGVidWcobWVzc2FnZS5zbGljZShERUJVRy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoSU5GTykpIHtcbiAgICAgIHRoaXMuaW5mbyhtZXNzYWdlLnNsaWNlKElORk8ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5zdGFydHNXaXRoKFdBUk4pKSB7XG4gICAgICB0aGlzLndhcm4obWVzc2FnZS5zbGljZShXQVJOLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChFUlJPUikpIHtcbiAgICAgIHRoaXMuZXJyb3IobWVzc2FnZS5zbGljZShFUlJPUi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5mbyhtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBhdHRhY2gocHJvYzogQ2hpbGRQcm9jZXNzLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5hdHRhY2hgKTtcbiAgICAgIGxldCBmYXRhbDogc3RyaW5nID0gXCJcIjtcbiAgICAgIGNvbnN0IGRpc3BhdGNoID0gKGRhdGE6IEJ1ZmZlciB8IFNlcmlhbGl6YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICBpZiAobWVzc2FnZS5zdGFydHNXaXRoKEZBVEFMKSkge1xuICAgICAgICAgIGZhdGFsICs9IG1lc3NhZ2Uuc2xpY2UoRkFUQUwubGVuZ3RoICsgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHByb2Muc3RkZXJyPy5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jXG4gICAgICAgIC5vbihcIm1lc3NhZ2VcIiwgZGlzcGF0Y2gpXG4gICAgICAgIC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICBmYXRhbCArPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBwcm9jLmtpbGwoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uY2UoXCJjbG9zZVwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgICAgaWYgKGNvZGUgfHwgc2lnbmFsIHx8IGZhdGFsKSB7XG4gICAgICAgICAgICBmYXRhbCB8fD0gYGNvbW1hbmQgZmFpbGVkOiAke3Byb2Muc3Bhd25hcmdzLmpvaW4oXCIgXCIpfWA7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCwgeyBjb2RlLCBzaWduYWwsIGZhdGFsIH0pO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihmYXRhbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgcmVhc29uKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIGVycik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcblxuZXhwb3J0IHsgbG9nZ2VyIH07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5pbXBvcnQgeyBzcGF3biwgdHlwZSBDaGlsZFByb2Nlc3MsIHR5cGUgU3Bhd25PcHRpb25zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuZXhwb3J0IGNvbnN0IFBVUF9BUkdTX0VOVl9LRVkgPSBcIl9fUFVQX0FSR1NfX1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyZ3MoKSB7XG4gIGNvbnN0IHB1cEFyZ3MgPSBwcm9jZXNzLmVudltQVVBfQVJHU19FTlZfS0VZXTtcbiAgaWYgKHB1cEFyZ3MpIHtcbiAgICBjb25zdCBhcmdzID0gW1wiZXhlY1wiLCAuLi5wcm9jZXNzLmFyZ3Yuc2xpY2UoLTEpXTtcbiAgICBhcmdzLnB1c2goLi4uSlNPTi5wYXJzZShwdXBBcmdzKSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwicHVwYXJnc1wiLCBhcmdzKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZyhcInByb2Nhcmd2XCIsIHByb2Nlc3MuYXJndik7XG4gIHJldHVybiBwcm9jZXNzLmFyZ3Y7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0hhbmRsZSB7XG4gIHByb2Nlc3M6IENoaWxkUHJvY2VzcztcbiAgd2FpdDogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY21kOiBzdHJpbmcsIG9wdGlvbnM/OiBTcGF3bk9wdGlvbnMpOiBQcm9jZXNzSGFuZGxlIHtcbiAgY29uc3QgcGFydHMgPSBjbWQuc3BsaXQoXCIgXCIpLmZpbHRlcigocykgPT4gcy5sZW5ndGgpO1xuICBjb25zdCBbY29tbWFuZCwgLi4uYXJnc10gPSBwYXJ0cztcbiAgaWYgKCFjb21tYW5kKSB0aHJvdyBuZXcgRXJyb3IoXCJlbXB0eSBjb21tYW5kXCIpO1xuICBjb25zdCBwcm9jID0gc3Bhd24oY29tbWFuZCwgYXJncywge1xuICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbiAgcmV0dXJuIHsgcHJvY2VzczogcHJvYywgd2FpdDogbG9nZ2VyLmF0dGFjaChwcm9jLCBjb21tYW5kKSB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IGVsZWN0cm9uLCB7IHR5cGUgU2l6ZSB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL3Byb2Nlc3NcIjtcblxuZXhwb3J0IGNvbnN0IEVMRUNUUk9OX09QVFMgPSBbXG4gIFwibm8tc2FuZGJveFwiLFxuICBcImRpc2FibGUtc2V0dWlkLXNhbmRib3hcIixcbiAgXCJkaXNhYmxlLWdwdVwiLFxuICBcImRpc2FibGUtZGV2LXNobS11c2FnZVwiLFxuICBcImRpc2FibGUtc29mdHdhcmUtcmFzdGVyaXplclwiLFxuICBcImRpc2FibGUtd2ViLXNlY3VyaXR5XCIsXG4gIFwiZGlzYWJsZS1zaXRlLWlzb2xhdGlvbi10cmlhbHNcIixcbiAgXCJkaXNhYmxlLWZlYXR1cmVzPUlzb2xhdGVPcmlnaW5zLHNpdGUtcGVyLXByb2Nlc3NcIixcbiAgXCJhbGxvdy1pbnNlY3VyZS1sb2NhbGhvc3RcIixcbiAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gIFwiZGlzYWJsZS1ibGluay1mZWF0dXJlcz1BdXRvbWF0aW9uQ29udHJvbGxlZFwiLFxuICBcIm11dGUtYXVkaW9cIixcbiAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgXCJkaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZ1wiLFxuICBcImFkZHJlc3MtZmFtaWx5PWlwdjRcIixcbiAgXCJkaXNhYmxlLWFzeW5jLWRuc1wiLFxuICBcImZvcmNlLWRldmljZS1zY2FsZS1mYWN0b3I9MVwiLFxuICBcInRyYWNlLXdhcm5pbmdzXCIsXG4gIFwiZm9yY2UtY29sb3ItcHJvZmlsZT1zcmdiXCIsXG4gIFwiZGlzYWJsZS1jb2xvci1jb3JyZWN0LXJlbmRlcmluZ1wiLFxuICBcImxvZy1sZXZlbD0zXCIsXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoc2l6ZTogU2l6ZSwgYXBwOiB1bmtub3duLCBhcmdzOiB1bmtub3duW10pIHtcbiAgY29uc3QgZWxlY3Ryb25BcmdzID0gRUxFQ1RST05fT1BUUy5tYXAoKGEpID0+IGAtLSR7YX1gKTtcbiAgY29uc3QgY21kUGFydHMgPSBbXTtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwibGludXhcIikge1xuICAgIGNtZFBhcnRzLnB1c2goXG4gICAgICBcInh2ZmItcnVuXCIsXG4gICAgICBcIi0tYXV0by1zZXJ2ZXJudW1cIixcbiAgICAgIGAtLXNlcnZlci1hcmdzPSctc2NyZWVuIDAgJHtzaXplLndpZHRofXgke3NpemUuaGVpZ2h0fXgyNCdgLFxuICAgICk7XG4gIH1cbiAgY21kUGFydHMucHVzaChlbGVjdHJvbiwgLi4uZWxlY3Ryb25BcmdzLCBhcHApO1xuICByZXR1cm4gZXhlYyhjbWRQYXJ0cy5qb2luKFwiIFwiKSwge1xuICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgRUxFQ1RST05fRElTQUJMRV9EQlVTOiBcIjFcIixcbiAgICAgIFJVU1RfQkFDS1RSQUNFOiBcImZ1bGxcIixcbiAgICAgIF9fUFVQX0FSR1NfXzogSlNPTi5zdHJpbmdpZnkoYXJncyksXG4gICAgfSxcbiAgfSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGFyY2gsIHBsYXRmb3JtIH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IGJhc2VkaXIgfSBmcm9tIFwiLi9iYXNlZGlyXCI7XG5pbXBvcnQgeyBwdXBGRm1wZWdQYXRoIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IFZpZGVvRmlsZXMsIFZpZGVvU3BlYyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG5pbnRlcmZhY2UgQ29tbWFuZCB7XG4gIGNvbW1hbmQ6IHN0cmluZztcbiAgYXJnczogc3RyaW5nW107XG59XG5cbmNvbnN0IHF1aWV0ID0gW1wiLWhpZGVfYmFubmVyXCIsIFwiLWxvZ2xldmVsXCIsIFwiZXJyb3JcIiwgXCItbm9zdGF0c1wiXTtcblxuZnVuY3Rpb24gcmVzb2x2ZVgyNjUoKSB7XG4gIGNvbnN0IHBhdGggPSBgeDI2NS8ke3BsYXRmb3JtfS0ke2FyY2h9YDtcbiAgY29uc3QgZGlycyA9IFtcbiAgICBqb2luKGJhc2VkaXIsIGAuLi8uLi8ke3BhdGh9YCksIC8vIHByb2Nlc3MgZnJvbSBzcmNcbiAgICBqb2luKGJhc2VkaXIsIGAuLi8ke3BhdGh9YCksIC8vIHByb2Nlc3MgZnJvbSBkaXN0XG4gIF07XG4gIGNvbnN0IGZvdW5kID0gZGlycy5maW5kKGV4aXN0c1N5bmMpO1xuICBpZiAoIWZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwieDI2NSBub3QgZm91bmRcIik7XG4gIH1cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmdyYUZpbGVDb21tYW5kKFxuICBiZ3JhUGF0aDogc3RyaW5nLFxuICBzcGVjOiBWaWRlb1NwZWMsXG4gIGZpbGVzOiBWaWRlb0ZpbGVzLFxuKTogQ29tbWFuZCB7XG4gIGNvbnN0IHsgZnBzLCBmcmFtZXMgfSA9IHNwZWM7XG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgXCIteVwiLFxuICAgIC4uLnF1aWV0LFxuICAgIFwiLWZcIixcbiAgICBcInJhd3ZpZGVvXCIsXG4gICAgXCItcGl4X2ZtdFwiLFxuICAgIFwiYmdyYVwiLFxuICAgIFwiLXNcIixcbiAgICBgJHtzcGVjLnNpemUud2lkdGh9eCR7c3BlYy5zaXplLmhlaWdodH1gLFxuICAgIFwiLXJcIixcbiAgICBgJHtmcHN9YCxcbiAgICBcIi1pXCIsXG4gICAgYmdyYVBhdGgsXG4gICAgXCItZnJhbWVzOnZcIixcbiAgICBgJHtNYXRoLmZsb29yKGZyYW1lcyl9YCxcbiAgXTtcbiAgaWYgKGZpbGVzLm1wNCkge1xuICAgIGFyZ3MucHVzaChcbiAgICAgIFwiLWNvbG9yc3BhY2VcIixcbiAgICAgIFwiYnQ3MDlcIixcbiAgICAgIFwiLWNvbG9yX3ByaW1hcmllc1wiLFxuICAgICAgXCJidDcwOVwiLFxuICAgICAgXCItY29sb3JfdHJjXCIsXG4gICAgICBcImJ0NzA5XCIsXG4gICAgICBcIi1jOnZcIixcbiAgICAgIFwibGlieDI2NFwiLFxuICAgICAgXCItcHJlc2V0XCIsXG4gICAgICBcImZhc3RcIixcbiAgICAgIFwiLXRocmVhZHNcIixcbiAgICAgIFwiMFwiLFxuICAgICAgXCItcGl4X2ZtdFwiLFxuICAgICAgXCJ5dXY0MjBwXCIsXG4gICAgICBcIi1tb3ZmbGFnc1wiLFxuICAgICAgXCIrZmFzdHN0YXJ0XCIsXG4gICAgICBmaWxlcy5tcDQsXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsZXMud2VibSkge1xuICAgIGFyZ3MucHVzaChcbiAgICAgIFwiLWM6dlwiLFxuICAgICAgXCJsaWJ2cHgtdnA5XCIsXG4gICAgICBcIi1yb3ctbXRcIixcbiAgICAgIFwiMVwiLFxuICAgICAgXCItY3B1LXVzZWRcIixcbiAgICAgIFwiMVwiLFxuICAgICAgXCItdGhyZWFkc1wiLFxuICAgICAgXCIwXCIsXG4gICAgICBcIi1waXhfZm10XCIsXG4gICAgICBcInl1dmE0MjBwXCIsXG4gICAgICBcIi1hdXRvLWFsdC1yZWZcIixcbiAgICAgIFwiMFwiLFxuICAgICAgZmlsZXMud2VibSxcbiAgICApO1xuICB9XG4gIHJldHVybiB7IGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsIGFyZ3MgfTtcbn1cblxuaW50ZXJmYWNlIFgyNjVQaXBlbGluZSB7XG4gIHJhdzogQ29tbWFuZDtcbiAgeDI2NTogQ29tbWFuZDtcbiAgbXV4OiBDb21tYW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmdyYVRvTW92UGlwZWxpbmUoXG4gIGJncmFQYXRoOiBzdHJpbmcsXG4gIHNwZWM6IFZpZGVvU3BlYyxcbiAgbW92OiBzdHJpbmcsXG4pOiBYMjY1UGlwZWxpbmUge1xuICBjb25zdCB7IGZwcywgc2l6ZSB9ID0gc3BlYztcbiAgcmV0dXJuIHtcbiAgICByYXc6IHtcbiAgICAgIGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIFwiLXlcIixcbiAgICAgICAgLi4ucXVpZXQsXG4gICAgICAgIFwiLWZcIixcbiAgICAgICAgXCJyYXd2aWRlb1wiLFxuICAgICAgICBcIi1waXhfZm10XCIsXG4gICAgICAgIFwiYmdyYVwiLFxuICAgICAgICBcIi1zXCIsXG4gICAgICAgIGAke3NpemUud2lkdGh9eCR7c2l6ZS5oZWlnaHR9YCxcbiAgICAgICAgXCItclwiLFxuICAgICAgICBgJHtmcHN9YCxcbiAgICAgICAgXCItaVwiLFxuICAgICAgICBiZ3JhUGF0aCxcbiAgICAgICAgXCItZlwiLFxuICAgICAgICBcInJhd3ZpZGVvXCIsXG4gICAgICAgIFwiLXBpeF9mbXRcIixcbiAgICAgICAgXCJ5dXZhNDIwcDEwbGVcIixcbiAgICAgICAgXCJwaXBlOjFcIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICB4MjY1OiB7XG4gICAgICBjb21tYW5kOiByZXNvbHZlWDI2NSgpLFxuICAgICAgYXJnczogW1xuICAgICAgICBcIi0tbm8tcHJvZ3Jlc3NcIixcbiAgICAgICAgXCItLWxvZy1sZXZlbFwiLFxuICAgICAgICBcImVycm9yXCIsXG4gICAgICAgIFwiLS1pbnB1dFwiLFxuICAgICAgICBcIi1cIixcbiAgICAgICAgXCItLWlucHV0LXJlc1wiLFxuICAgICAgICBgJHtzaXplLndpZHRofXgke3NpemUuaGVpZ2h0fWAsXG4gICAgICAgIFwiLS1pbnB1dC1jc3BcIixcbiAgICAgICAgXCJpNDIwXCIsXG4gICAgICAgIFwiLS1pbnB1dC1kZXB0aFwiLFxuICAgICAgICBcIjEwXCIsXG4gICAgICAgIFwiLS1vdXRwdXQtZGVwdGhcIixcbiAgICAgICAgXCIxMFwiLFxuICAgICAgICBcIi0tZnBzXCIsXG4gICAgICAgIGAke2Zwc31gLFxuICAgICAgICBcIi0tYWxwaGFcIixcbiAgICAgICAgXCItLWJmcmFtZXNcIixcbiAgICAgICAgXCIwXCIsXG4gICAgICAgIFwiLS1jb2xvcnByaW1cIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tdHJhbnNmZXJcIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tY29sb3JtYXRyaXhcIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tY3JmXCIsXG4gICAgICAgIFwiMThcIixcbiAgICAgICAgXCItLW91dHB1dFwiLFxuICAgICAgICBcIi1cIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICBtdXg6IHtcbiAgICAgIGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIFwiLXlcIixcbiAgICAgICAgLi4ucXVpZXQsXG4gICAgICAgIFwiLWZcIixcbiAgICAgICAgXCJoZXZjXCIsXG4gICAgICAgIFwiLXJcIixcbiAgICAgICAgYCR7ZnBzfWAsXG4gICAgICAgIFwiLWlcIixcbiAgICAgICAgXCJwaXBlOjBcIixcbiAgICAgICAgXCItYzp2XCIsXG4gICAgICAgIFwiY29weVwiLFxuICAgICAgICBcIi10YWc6dlwiLFxuICAgICAgICBcImh2YzFcIixcbiAgICAgICAgXCItbW92ZmxhZ3NcIixcbiAgICAgICAgXCIrZmFzdHN0YXJ0XCIsXG4gICAgICAgIG1vdixcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvdmVyQ29tbWFuZChzcmM6IHN0cmluZywgZHN0OiBzdHJpbmcpOiBDb21tYW5kIHtcbiAgcmV0dXJuIHtcbiAgICBjb21tYW5kOiBwdXBGRm1wZWdQYXRoLFxuICAgIGFyZ3M6IFtcIi15XCIsIC4uLnF1aWV0LCBcIi1pXCIsIHNyYywgXCItZnJhbWVzOnZcIiwgXCIxXCIsIFwiLXE6dlwiLCBcIjJcIiwgZHN0XSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZUJncmFGaWxlQ29tbWFuZCwgY3JlYXRlQmdyYVRvTW92UGlwZWxpbmUgfSBmcm9tIFwiLi9mZm1wZWdcIjtcbmltcG9ydCB7IGV4ZWMsIHR5cGUgUHJvY2Vzc0hhbmRsZSB9IGZyb20gXCIuL3Byb2Nlc3NcIjtcbmltcG9ydCB0eXBlIHsgVmlkZW9TcGVjIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVCZ3JhRmlsZShcbiAgYmdyYVBhdGg6IHN0cmluZyxcbiAgb3V0cHV0UGF0aDogc3RyaW5nLFxuICBzcGVjOiBWaWRlb1NwZWMsXG4gIGZvcm1hdDogXCJtcDRcIiB8IFwid2VibVwiLFxuKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IGZpbGVzID0gZm9ybWF0ID09PSBcIm1wNFwiID8geyBtcDQ6IG91dHB1dFBhdGggfSA6IHsgd2VibTogb3V0cHV0UGF0aCB9O1xuICBjb25zdCBjbWQgPSBjcmVhdGVCZ3JhRmlsZUNvbW1hbmQoYmdyYVBhdGgsIHNwZWMsIGZpbGVzKTtcbiAgcmV0dXJuIGV4ZWMoYCR7Y21kLmNvbW1hbmR9ICR7Y21kLmFyZ3Muam9pbihcIiBcIil9YCwge1xuICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpbmhlcml0XCIsIFwiaW5oZXJpdFwiXSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVCZ3JhVG9Nb3YoXG4gIGJncmFQYXRoOiBzdHJpbmcsXG4gIG1vdlBhdGg6IHN0cmluZyxcbiAgc3BlYzogVmlkZW9TcGVjLFxuKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHgyNjUgPSBjcmVhdGVCZ3JhVG9Nb3ZQaXBlbGluZShiZ3JhUGF0aCwgc3BlYywgbW92UGF0aCk7XG4gIGNvbnN0IHNoZWxsQ21kID0gW1xuICAgIGAke3gyNjUucmF3LmNvbW1hbmR9ICR7eDI2NS5yYXcuYXJncy5qb2luKFwiIFwiKX1gLFxuICAgIGAke3gyNjUueDI2NS5jb21tYW5kfSAke3gyNjUueDI2NS5hcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgYCR7eDI2NS5tdXguY29tbWFuZH0gJHt4MjY1Lm11eC5hcmdzLmpvaW4oXCIgXCIpfWAsXG4gIF0uam9pbihcIiB8IFwiKTtcbiAgcmV0dXJuIGV4ZWMoc2hlbGxDbWQsIHtcbiAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaW5oZXJpdFwiLCBcImluaGVyaXRcIl0sXG4gICAgc2hlbGw6IHRydWUsXG4gIH0pO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGNsYXNzIENvbmN1cnJlbmN5TGltaXRlciB7XG4gIHByaXZhdGUgX2FjdGl2ZSA9IDA7XG4gIHByaXZhdGUgX3F1ZXVlOiBWb2lkRnVuY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9wZW5kaW5nID0gMDtcbiAgcHJpdmF0ZSBfZW5kZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYXhDb25jdXJyZW5jeTogbnVtYmVyKSB7fVxuXG4gIGdldCBhY3RpdmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZztcbiAgfVxuXG4gIGFzeW5jIHNjaGVkdWxlPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX2VuZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmRlZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlKys7XG4gICAgICAgIHRoaXMuX3BlbmRpbmctLTtcbiAgICAgICAgZm4oKVxuICAgICAgICAgIC50aGVuKHJlc29sdmUpXG4gICAgICAgICAgLmNhdGNoKHJlamVjdClcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUtLTtcbiAgICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX3BlbmRpbmcrKztcbiAgICAgIGlmICh0aGlzLl9hY3RpdmUgPCB0aGlzLm1heENvbmN1cnJlbmN5KSB7XG4gICAgICAgIHJ1bigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVldWUucHVzaChydW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZW5kKCkge1xuICAgIGlmICghdGhpcy5fZW5kZWQpIHtcbiAgICAgIHRoaXMuX2VuZGVkID0gdHJ1ZTtcbiAgICAgIHdoaWxlICh0aGlzLl9hY3RpdmUgPiAwIHx8IHRoaXMuX3BlbmRpbmcgPiAwKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0KCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPCB0aGlzLm1heENvbmN1cnJlbmN5ICYmIHRoaXMuX3F1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3F1ZXVlLnNoaWZ0KCk/LigpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyByZWFkRmlsZSwgcm0gfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQWJvcnRMaW5rLCB0eXBlIEFib3J0UXVlcnkgfSBmcm9tIFwiLi9iYXNlL2Fib3J0XCI7XG5pbXBvcnQgeyBwdXBBcHBQYXRoIH0gZnJvbSBcIi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IHJ1bkVsZWN0cm9uQXBwIH0gZnJvbSBcIi4vYmFzZS9lbGVjdHJvblwiO1xuaW1wb3J0IHsgZW5jb2RlQmdyYUZpbGUsIGVuY29kZUJncmFUb01vdiB9IGZyb20gXCIuL2Jhc2UvZW5jb2RlclwiO1xuaW1wb3J0IHsgY3JlYXRlQ292ZXJDb21tYW5kIH0gZnJvbSBcIi4vYmFzZS9mZm1wZWdcIjtcbmltcG9ydCB7IENvbmN1cnJlbmN5TGltaXRlciB9IGZyb20gXCIuL2Jhc2UvbGltaXRlclwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlciB9IGZyb20gXCIuL2Jhc2UvcGFyc2VyXCI7XG5pbXBvcnQgeyBleGVjLCB0eXBlIFByb2Nlc3NIYW5kbGUgfSBmcm9tIFwiLi9iYXNlL3Byb2Nlc3NcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSEVJR0hULFxuICBERUZBVUxUX1dJRFRILFxuICB0eXBlIFJlY29yZE9wdGlvbnMsXG4gIHR5cGUgUmVjb3JkUmVzdWx0LFxuICB0eXBlIFZpZGVvRmlsZXNXaXRoQ292ZXIsXG4gIHR5cGUgVmlkZW9TcGVjLFxufSBmcm9tIFwiLi9iYXNlL3NjaGVtYVwiO1xuXG5jb25zdCBUQUcgPSBcIltwdXBdXCI7XG5jb25zdCBQUk9HUkVTU19UQUcgPSBcIiBwcm9ncmVzczogXCI7XG5cbmV4cG9ydCB0eXBlIFB1cFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVjb3JkT3B0aW9ucz4ge1xuICBjYW5jZWxRdWVyeT86IEFib3J0UXVlcnk7XG4gIG9uUHJvZ3Jlc3M/OiBQdXBQcm9ncmVzc0NhbGxiYWNrO1xufVxuXG5mdW5jdGlvbiBydW5QdXBBcHAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFB1cE9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHJ1blB1cEFwcGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbc291cmNlXTtcbiAgaWYgKG9wdGlvbnMud2lkdGgpIGFyZ3MucHVzaChcIi0td2lkdGhcIiwgYCR7b3B0aW9ucy53aWR0aH1gKTtcbiAgaWYgKG9wdGlvbnMuaGVpZ2h0KSBhcmdzLnB1c2goXCItLWhlaWdodFwiLCBgJHtvcHRpb25zLmhlaWdodH1gKTtcbiAgaWYgKG9wdGlvbnMuZnBzKSBhcmdzLnB1c2goXCItLWZwc1wiLCBgJHtvcHRpb25zLmZwc31gKTtcbiAgaWYgKG9wdGlvbnMuZHVyYXRpb24pIGFyZ3MucHVzaChcIi0tZHVyYXRpb25cIiwgYCR7b3B0aW9ucy5kdXJhdGlvbn1gKTtcbiAgaWYgKG9wdGlvbnMub3V0RGlyKSBhcmdzLnB1c2goXCItLW91dC1kaXJcIiwgb3B0aW9ucy5vdXREaXIpO1xuICBpZiAob3B0aW9ucy53aXRoQWxwaGFDaGFubmVsKSBhcmdzLnB1c2goXCItLXdpdGgtYWxwaGEtY2hhbm5lbFwiKTtcbiAgaWYgKG9wdGlvbnMudXNlSW5uZXJQcm94eSkgYXJncy5wdXNoKFwiLS11c2UtaW5uZXItcHJveHlcIik7XG5cbiAgY29uc3QgdyA9IG9wdGlvbnMud2lkdGggPz8gREVGQVVMVF9XSURUSDtcbiAgY29uc3QgaCA9IG9wdGlvbnMuaGVpZ2h0ID8/IERFRkFVTFRfSEVJR0hUO1xuICBjb25zdCBoYW5kbGUgPSBydW5FbGVjdHJvbkFwcCh7IHdpZHRoOiB3LCBoZWlnaHQ6IGggfSwgcHVwQXBwUGF0aCwgYXJncyk7XG4gIGNvbnN0IGNvdW50ZXIgPSBuZXcgQ29uY3VycmVuY3lMaW1pdGVyKDEpO1xuICBoYW5kbGUucHJvY2Vzcy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgbGV0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGxldCBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZihQUk9HUkVTU19UQUcpO1xuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2Uuc2xpY2Uoc3RhcnQgKyBQUk9HUkVTU19UQUcubGVuZ3RoKTtcbiAgICBjb25zdCBlbmQgPSBtZXNzYWdlLmluZGV4T2YoXCIlXCIpO1xuICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb2dyZXNzU3RyID0gbWVzc2FnZS5zbGljZSgwLCBlbmQpO1xuICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VOdW1iZXIocHJvZ3Jlc3NTdHIpO1xuICAgIGNvdW50ZXIuc2NoZWR1bGUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgb3B0aW9ucy5vblByb2dyZXNzPy4ocHJvZ3Jlc3MpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHsgaGFuZGxlLCBjb3VudGVyIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFB1cE9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgbGluayA9IEFib3J0TGluay5zdGFydChvcHRpb25zLmNhbmNlbFF1ZXJ5KTtcbiAgY29uc3Qgb3V0RGlyID0gb3B0aW9ucy5vdXREaXIgPz8gXCJvdXRcIjtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCB7IGhhbmRsZSwgY291bnRlciB9ID0gcnVuUHVwQXBwKHNvdXJjZSwgeyAuLi5vcHRpb25zLCBvdXREaXIgfSk7XG5cbiAgYXdhaXQgbGluay53YWl0KGhhbmRsZSk7XG4gIGF3YWl0IGNvdW50ZXIuZW5kKCk7XG4gIGxvZ2dlci5pbmZvKFRBRywgYGNhcHR1cmUgY29zdCAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcblxuICBjb25zdCBtZXRhUGF0aCA9IGpvaW4ob3V0RGlyLCBcInJlY29yZC5qc29uXCIpO1xuICBjb25zdCBtZXRhID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShtZXRhUGF0aCwgXCJ1dGYtOFwiKSkgYXMgUmVjb3JkUmVzdWx0O1xuXG4gIGNvbnN0IHsgYmdyYVBhdGgsIHdyaXR0ZW4sIG9wdGlvbnM6IHJlY29yZE9wdGlvbnMgfSA9IG1ldGE7XG4gIGNvbnN0IHsgZnBzLCB3aWR0aCwgaGVpZ2h0LCB3aXRoQWxwaGFDaGFubmVsIH0gPSByZWNvcmRPcHRpb25zO1xuICBjb25zdCBzaXplOiBTaXplID0geyB3aWR0aCwgaGVpZ2h0IH07XG5cbiAgY29uc3Qgb3V0cHV0czogVmlkZW9GaWxlc1dpdGhDb3ZlciA9IHtcbiAgICBtcDQ6IHdpdGhBbHBoYUNoYW5uZWwgPyB1bmRlZmluZWQgOiBqb2luKG91dERpciwgXCJvdXRwdXQubXA0XCIpLFxuICAgIHdlYm06IHdpdGhBbHBoYUNoYW5uZWwgPyBqb2luKG91dERpciwgXCJvdXRwdXQud2VibVwiKSA6IHVuZGVmaW5lZCxcbiAgICBtb3Y6IHdpdGhBbHBoYUNoYW5uZWwgPyBqb2luKG91dERpciwgXCJvdXRwdXQubW92XCIpIDogdW5kZWZpbmVkLFxuICAgIGNvdmVyOiBqb2luKG91dERpciwgXCJjb3Zlci5wbmdcIiksXG4gIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgY29uc3Qgc3BlYzogVmlkZW9TcGVjID0geyBmcHMsIGZyYW1lczogd3JpdHRlbiwgc2l6ZSB9O1xuICAgIGNvbnN0IGhhbmRsZXM6IFByb2Nlc3NIYW5kbGVbXSA9IFtdO1xuICAgIGlmIChvdXRwdXRzLm1wNCkge1xuICAgICAgaGFuZGxlcy5wdXNoKGVuY29kZUJncmFGaWxlKGJncmFQYXRoLCBvdXRwdXRzLm1wNCwgc3BlYywgXCJtcDRcIikpO1xuICAgIH1cbiAgICBpZiAob3V0cHV0cy53ZWJtKSB7XG4gICAgICBoYW5kbGVzLnB1c2goZW5jb2RlQmdyYUZpbGUoYmdyYVBhdGgsIG91dHB1dHMud2VibSwgc3BlYywgXCJ3ZWJtXCIpKTtcbiAgICB9XG4gICAgaWYgKG91dHB1dHMubW92KSB7XG4gICAgICBoYW5kbGVzLnB1c2goZW5jb2RlQmdyYVRvTW92KGJncmFQYXRoLCBvdXRwdXRzLm1vdiwgc3BlYykpO1xuICAgIH1cbiAgICBhd2FpdCBsaW5rLndhaXQoLi4uaGFuZGxlcyk7XG5cbiAgICBjb25zdCBjb3ZlclNyYyA9IG91dHB1dHMubW92ID8/IG91dHB1dHMud2VibSA/PyBvdXRwdXRzLm1wNDtcbiAgICBpZiAoY292ZXJTcmMpIHtcbiAgICAgIGNvbnN0IGNvdmVyQ21kID0gY3JlYXRlQ292ZXJDb21tYW5kKGNvdmVyU3JjLCBvdXRwdXRzLmNvdmVyKTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IGV4ZWMoYCR7Y292ZXJDbWQuY29tbWFuZH0gJHtjb3ZlckNtZC5hcmdzLmpvaW4oXCIgXCIpfWApO1xuICAgICAgYXdhaXQgbGluay53YWl0KGhhbmRsZSk7XG4gICAgfVxuXG4gICAgbGluay5zdG9wKCk7XG4gICAgbG9nZ2VyLmluZm8oVEFHLCBgZW5jb2RpbmcgY29zdCAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MSl9bXNgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHJtKGJncmFQYXRoLCB7IGZvcmNlOiB0cnVlIH0pLFxuICAgICAgcm0obWV0YVBhdGgsIHsgZm9yY2U6IHRydWUgfSksXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm91dHB1dHMsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGZwcyxcbiAgICAgIGR1cmF0aW9uOiBNYXRoLmNlaWwod3JpdHRlbiAvIGZwcyksXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhd2FpdCBybShvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNi5cblxuaW1wb3J0IHsgTWNwU2VydmVyIH0gZnJvbSBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL21jcC5qc1wiO1xuaW1wb3J0IHsgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tIFwiQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanNcIjtcbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCBwYWNrYWdlSlNPTiBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5pbXBvcnQgeyBSZWNvcmRTY2hlbWEgfSBmcm9tIFwiLi4vYmFzZS9zY2hlbWFcIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuLi9wdXBcIjtcblxuZXhwb3J0IGNvbnN0IFB1cE1DUFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7IHNvdXJjZTogei5zdHJpbmcoKS5kZXNjcmliZShcImZpbGU6Ly8sIGh0dHAocyk6Ly8sIG9yIGRhdGE6IFVSSVwiKSB9KVxuICAuZXh0ZW5kKFJlY29yZFNjaGVtYS5zaGFwZSk7XG5cbmV4cG9ydCBjb25zdCBNQ1BfVE9PTF9OQU1FID0gcGFja2FnZUpTT04ubmFtZTtcbmV4cG9ydCBjb25zdCBNQ1BfVE9PTF9USVRMRSA9IFwiUmVjb3JkIFdlYnBhZ2VcIjtcbmV4cG9ydCBjb25zdCBNQ1BfVE9PTF9ERVNDID0gXCJSZWNvcmQgYSB3ZWJwYWdlIHRvIHZpZGVvXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtY3BBZGRQdXAoc2VydmVyOiBNY3BTZXJ2ZXIpIHtcbiAgc2VydmVyLnJlZ2lzdGVyVG9vbChcbiAgICBNQ1BfVE9PTF9OQU1FLFxuICAgIHtcbiAgICAgIHRpdGxlOiBNQ1BfVE9PTF9USVRMRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBNQ1BfVE9PTF9ERVNDLFxuICAgICAgaW5wdXRTY2hlbWE6IFB1cE1DUFNjaGVtYSxcbiAgICB9LFxuICAgIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwdXAoYXJncy5zb3VyY2UsIGFyZ3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpIH1dLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFN0cmluZyhlcnJvcikgfSkgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydE1DUFNlcnZlcigpIHtcbiAgY29uc3Qgc2VydmVyID0gbmV3IE1jcFNlcnZlcihwYWNrYWdlSlNPTik7XG4gIG1jcEFkZFB1cChzZXJ2ZXIpO1xuICBhd2FpdCBzZXJ2ZXIuY29ubmVjdChuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI2LlxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJAb3BlbmNvZGUtYWkvcGx1Z2luXCI7XG5pbXBvcnQgeyB0b29sIH0gZnJvbSBcIkBvcGVuY29kZS1haS9wbHVnaW5cIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfRFVSQVRJT04sXG4gIERFRkFVTFRfRlBTLFxuICBERUZBVUxUX0hFSUdIVCxcbiAgREVGQVVMVF9PVVRfRElSLFxuICBERUZBVUxUX1dJRFRILFxufSBmcm9tIFwiLi4vYmFzZS9zY2hlbWFcIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuLi9wdXBcIjtcbmltcG9ydCB7IE1DUF9UT09MX0RFU0MsIE1DUF9UT09MX05BTUUsIFB1cE1DUFNjaGVtYSB9IGZyb20gXCIuL21jcFwiO1xuXG5jb25zdCB6ID0gdG9vbC5zY2hlbWE7XG5cbmNvbnN0IFB1cFBsdWdpblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc291cmNlOiB6LnN0cmluZygpLmRlc2NyaWJlKFB1cE1DUFNjaGVtYS5zaGFwZS5zb3VyY2UuZGVzY3JpcHRpb24hKSxcbiAgZHVyYXRpb246IHpcbiAgICAubnVtYmVyKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZWZhdWx0KERFRkFVTFRfRFVSQVRJT04pXG4gICAgLmRlc2NyaWJlKFB1cE1DUFNjaGVtYS5zaGFwZS5kdXJhdGlvbi5kZXNjcmlwdGlvbiEpLFxuICB3aWR0aDogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9XSURUSClcbiAgICAuZGVzY3JpYmUoUHVwTUNQU2NoZW1hLnNoYXBlLndpZHRoLmRlc2NyaXB0aW9uISksXG4gIGhlaWdodDogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9IRUlHSFQpXG4gICAgLmRlc2NyaWJlKFB1cE1DUFNjaGVtYS5zaGFwZS5oZWlnaHQuZGVzY3JpcHRpb24hKSxcbiAgZnBzOiB6XG4gICAgLm51bWJlcigpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVmYXVsdChERUZBVUxUX0ZQUylcbiAgICAuZGVzY3JpYmUoUHVwTUNQU2NoZW1hLnNoYXBlLmZwcy5kZXNjcmlwdGlvbiEpLFxuICB3aXRoQWxwaGFDaGFubmVsOiB6XG4gICAgLmJvb2xlYW4oKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLmRlc2NyaWJlKFB1cE1DUFNjaGVtYS5zaGFwZS53aXRoQWxwaGFDaGFubmVsLmRlc2NyaXB0aW9uISksXG4gIG91dERpcjogelxuICAgIC5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9PVVRfRElSKVxuICAgIC5kZXNjcmliZShQdXBNQ1BTY2hlbWEuc2hhcGUub3V0RGlyLmRlc2NyaXB0aW9uISksXG4gIHVzZUlubmVyUHJveHk6IHpcbiAgICAuYm9vbGVhbigpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAuZGVzY3JpYmUoUHVwTUNQU2NoZW1hLnNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24hKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgUHVwT3BlbkNvZGVQbHVnaW46IFBsdWdpbiA9IGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0b29sOiB7XG4gICAgICBbTUNQX1RPT0xfTkFNRV06IHRvb2woe1xuICAgICAgICBkZXNjcmlwdGlvbjogTUNQX1RPT0xfREVTQyxcbiAgICAgICAgYXJnczogUHVwUGx1Z2luU2NoZW1hLnNoYXBlLFxuICAgICAgICBhc3luYyBleGVjdXRlKGFyZ3MpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHVwKGFyZ3Muc291cmNlLCBhcmdzKTtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogU3RyaW5nKGVycm9yKSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9LFxuICB9O1xufTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBjbGFzcyBMYXp5PFQ+IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWFrZVZhbHVlOiAoKSA9PiBUKSB7fVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMubWFrZVZhbHVlKCk7XG4gICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZSE7XG4gIH1cblxuICBnZXQgaW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCB1bmRlZmluZWQ7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI0LlxuXG5leHBvcnQgZnVuY3Rpb24gbm9lcnI8Rm4gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSwgRD4oXG4gIGZuOiBGbixcbiAgZGVmYXVsdFZhbHVlOiBELFxuKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Rm4+KSA9PiBSZXR1cm5UeXBlPEZuPiB8IEQge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0ID0gZm4oLi4uYXJncyk7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmV0LmNhdGNoKCgpID0+IGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5leHBvcnQgZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcmlvZGljYWwoXG4gIGNhbGxiYWNrOiAoY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQsXG4gIG1zOiBudW1iZXIsXG4pIHtcbiAgbGV0IHRva2VuOiBOb2RlSlMuVGltZW91dDtcbiAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICBhc3luYyBmdW5jdGlvbiB0aWNrKGNvdW50OiBudW1iZXIpIHtcbiAgICBhd2FpdCBjYWxsYmFjayhjb3VudCk7XG4gICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgIHRva2VuID0gc2V0VGltZW91dCgoKSA9PiB0aWNrKGNvdW50ICsgMSksIG1zKTtcbiAgfVxuICB0b2tlbiA9IHNldFRpbWVvdXQoKCkgPT4gdGljaygwKSwgbXMpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWU7XG4gICAgY2xlYXJUaW1lb3V0KHRva2VuKTtcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDUuXG5cbmltcG9ydCB7IHNldFRpbWVvdXQgfSBmcm9tIFwidGltZXJzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuL3RpbWluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9uczxBcmdzIGV4dGVuZHMgYW55W10sIFJldD4ge1xuICBmbjogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmV0PjtcbiAgbWF4QXR0ZW1wdHM/OiBudW1iZXI7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZXRyeTxBcmdzIGV4dGVuZHMgYW55W10sIFJldD4oe1xuICBmbixcbiAgbWF4QXR0ZW1wdHMgPSAzLFxuICB0aW1lb3V0LFxufTogUmV0cnlPcHRpb25zPEFyZ3MsIFJldD4pIHtcbiAgY29uc3QgdGltZW91dEVycm9yID0gbmV3IEVycm9yKGB0aW1lb3V0IG92ZXIgJHt0aW1lb3V0fW1zYCk7XG4gIHJldHVybiBhc3luYyBmdW5jdGlvbiAoLi4uYXJnczogQXJncykge1xuICAgIGxldCBhdHRlbXB0ID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbZm4oLi4uYXJncyldO1xuICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyB0aW1lb3V0RXJyb3I7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhdHRlbXB0Kys7XG4gICAgICAgIGlmIChhdHRlbXB0ID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzbGVlcChNYXRoLnBvdygyLCBhdHRlbXB0KSAqIDEwMCArIE1hdGgucmFuZG9tKCkgKiAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==
1
+ 'use strict';require('source-map-support/register.js');var fs=require('fs'),path=require('path'),url=require('url'),child_process=require('child_process'),promises=require('timers/promises'),v=require('zod'),promises$1=require('fs/promises'),Me=require('electron'),process$1=require('process');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var v__default=/*#__PURE__*/_interopDefault(v);var Me__default=/*#__PURE__*/_interopDefault(Me);var $e=Object.create;var I=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var ne=(r,e)=>(e=Symbol[r])?e:Symbol.for("Symbol."+r),E=r=>{throw TypeError(r)};var ie=(r,e,t)=>e in r?I(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t;var se=r=>[,,,$e(null)],ae=["class","method","getter","setter","accessor","field","value","get","set"],k=r=>r!==void 0&&typeof r!="function"?E("Function expected"):r,Ee=(r,e,t,o,n)=>({kind:ae[r],name:e,metadata:o,addInitializer:i=>t._?E("Already initialized"):n.push(k(i||null))}),H=(r,e)=>ie(e,ne("metadata"),r[3]),pe=(r,e,t,o)=>{for(var n=0,i=r[e>>1],p=i&&i.length;n<p;n++)i[n].call(t);return o},$=(r,e,t,o,n,i)=>{var a,m,l,g,s=e&7,b=false,f=false,A=2,S=ae[s+5],h=r[A]||(r[A]=[]),d=((n=n.prototype),ke(n,t));for(var _=o.length-1;_>=0;_--)l=Ee(s,t,m={},r[3],h),(l.static=b,l.private=f,g=l.access={has:u=>t in u},(g.get=u=>u[t]),s>2),a=(0, o[_])(d[S],l),m._=1,k(a)&&(d[S]=a);return d&&I(n,t,d),n},ce=(r,e,t)=>ie(r,e+"",t);var Oe=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,c=Oe();var y=path.dirname(url.fileURLToPath(c));function ue(r,e,t){try{return e(process.env[r])}catch{return t}}function D(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}var Le=[path.join(y,"cjs/app.cjs"),path.join(y,"app.cjs"),path.join(y,"../../cjs/app.cjs")],me=Le.find(fs.existsSync),de=process.env,C=ue("PUP_LOG_LEVEL",D,2),lr=de.PUP_USE_INNER_PROXY==="1",F=de.FFMPEG_BIN??"ffmpeg";var le=class{constructor(e){this.makeValue=e;}get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};var L=class{constructor(e){this.maxConcurrency=e;}_active=0;_queue=[];_pending=0;_ended=false;get active(){return this._active}get pending(){return this._pending}async schedule(e){if(this._ended)throw new Error("ended");return new Promise((t,o)=>{let n=()=>{this._active++,this._pending--,e().then(t).catch(o).finally(()=>{this._active--,this.next();});};this._pending++,this._active<this.maxConcurrency?n():this._queue.push(n);})}async end(){if(!this._ended)for(this._ended=true;this._active>0||this._pending>0;)await new Promise(e=>setTimeout(e,50));}next(){this._active<this.maxConcurrency&&this._queue.length>0&&this._queue.shift()?.();}};var G="<pup@debug>",W="<pup@info>",q="<pup@warn>",Q="<pup@error>",J="<pup@fatal>";function O(r,e){return function(...t){let o=t.map(n=>n instanceof Error?n.stack??String(n):n);return r.call(this,...o)}}var fe,he,ge,be,we,P;we=[O],be=[O],ge=[O],he=[O],fe=[O];var w=class{constructor(){pe(P,5,this);ce(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,i=e.error??console.error;this._impl={debug:C>=3?t:void 0,info:C>=2?o:void 0,warn:C>=1?n:void 0,error:C>=0?i:void 0};}debug(...e){this.impl?.debug?.(G,...e);}info(...e){this.impl?.info?.(W,...e);}warn(...e){this.impl?.warn?.(q,...e);}error(...e){this.impl?.error?.(Q,...e);}fatal(...e){this.impl?.error?.(J,...e),process.exit(1);}dispatch(e){e.startsWith(G)?this.debug(e.slice(G.length+1)):e.startsWith(W)?this.info(e.slice(W.length+1)):e.startsWith(q)?this.warn(e.slice(q.length+1)):e.startsWith(Q)?this.error(e.slice(Q.length+1)):this.info(e);}attach(e,t){return new Promise((o,n)=>{this.debug(`${t}.attach`);let i="",p=a=>{let m=a.toString();m.startsWith(J)?i+=m.slice(J.length+1):this.dispatch(m);};e.stderr?.on("data",p),e.stdout?.on("data",p),e.on("message",p).on("error",a=>{i+=a.message,e.kill();}).once("close",(a,m)=>{a||m||i?(i||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${t}.close`,{code:a,signal:m,fatal:i}),n(new Error(i))):(this.debug(`${t}.close`),o());}).on("unhandledRejection",a=>{this.error(`${t}.unhandled`,a);}).on("uncaughtExceptionMonitor",a=>{this.error(`${t}.unhandled`,a);});})}};P=se(),$(P,1,"debug",we,w),$(P,1,"info",be,w),$(P,1,"warn",ge,w),$(P,1,"error",he,w),$(P,1,"fatal",fe,w),H(P,w);var x=new w;function Tr(r,e){return (...t)=>{try{let o=r(...t);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var je="__PUP_ARGS__";function kr(){let r=process.env[je];if(r){let e=["exec",...process.argv.slice(-1)];return e.push(...JSON.parse(r)),x.debug("pupargs",e),e}return x.debug("procargv",process.argv),process.argv}function T(r,e){let t=r.split(" ").filter(p=>p.length),[o,...n]=t;if(!o)throw new Error("empty command");let i=child_process.spawn(o,n,{stdio:"inherit",...e});return {process:i,wait:x.attach(i,o)}}function xe(r){return new Promise(e=>setTimeout(e,r))}function Fr(r,e){let t,o=false;async function n(i){await r(i),!o&&(t=setTimeout(()=>n(i+1),e));}return t=setTimeout(()=>n(0),e),()=>{o=true,clearTimeout(t);}}function Lr({fn:r,maxAttempts:e=3,timeout:t}){let o=new Error(`timeout over ${t}ms`);return async function(...n){let i=0;for(;;)try{let p=[r(...n)];return t&&p.push(promises.setTimeout(t).then(()=>{throw o})),await Promise.race(p)}catch(p){if(i++,i>=e)throw p;await xe(Math.pow(2,i)*100+Math.random()*100);}}}var X=1920,K=1080,Ie=30,He=5,Be="out",Ir=v__default.default.object({duration:v__default.default.number().optional().default(He).describe("Recording duration in seconds"),width:v__default.default.number().optional().default(X).describe("Video width"),height:v__default.default.number().optional().default(K).describe("Video height"),fps:v__default.default.number().optional().default(Ie).describe("Frames per second"),withAlphaChannel:v__default.default.boolean().optional().default(false).describe("Output with alpha channel"),outDir:v__default.default.string().optional().default(Be).describe("Output directory"),useInnerProxy:v__default.default.boolean().optional().default(false).describe("Use bilibili inner proxy for resource access")});var N=class r{constructor(e,t=1e3){this.query=e;this.interval=t;e&&this.tick();}_callback;_aborted;_stopped=false;static start(e,t){return new r(e,t)}get aborted(){return !this._stopped&&this._aborted}get stopped(){return this._stopped}async onAbort(e){this._aborted?await e():this._callback=e;}wait(...e){let t=new Promise((o,n)=>{this.onAbort(async()=>{e.forEach(i=>i.process.kill()),n(new Error("aborted"));});});return Promise.race([t,Promise.all(e.map(o=>o.wait))])}stop(){this._stopped=true;}tick(){setTimeout(async()=>{this._stopped||(this._aborted=await this.query?.(),!this._stopped&&(this._aborted?await this._callback?.():this.tick()));},this.interval);}};var Ge=["no-sandbox","disable-setuid-sandbox","disable-gpu","disable-dev-shm-usage","disable-software-rasterizer","disable-web-security","disable-site-isolation-trials","disable-features=IsolateOrigins,site-per-process","allow-insecure-localhost","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","disable-extensions","disable-background-networking","address-family=ipv4","disable-async-dns","force-device-scale-factor=1","trace-warnings","force-color-profile=srgb","disable-color-correct-rendering","log-level=3"];function ve(r,e,t){let o=Ge.map(i=>`--${i}`),n=[];return process.platform==="linux"&&n.push("xvfb-run","--auto-servernum",`--server-args='-screen 0 ${r.width}x${r.height}x24'`),n.push(Me__default.default,...o,e),T(n.join(" "),{stdio:["ignore","pipe","pipe"],shell:true,env:{...process.env,ELECTRON_DISABLE_DBUS:"1",RUST_BACKTRACE:"full",__PUP_ARGS__:JSON.stringify(t)}})}var j=["-hide_banner","-loglevel","error","-nostats"];function Je(){let r=`x265/${process$1.platform}-${process$1.arch}`,t=[path.join(y,`../../${r}`),path.join(y,`../${r}`)].find(fs.existsSync);if(!t)throw new Error("x265 not found");return t}function ye(r,e,t){let{fps:o,frames:n}=e,i=["-y",...j,"-f","rawvideo","-pix_fmt","bgra","-s",`${e.size.width}x${e.size.height}`,"-r",`${o}`,"-i",r,"-frames:v",`${Math.floor(n)}`];return t.mp4&&i.push("-colorspace","bt709","-color_primaries","bt709","-color_trc","bt709","-c:v","libx264","-preset","fast","-threads","0","-pix_fmt","yuv420p","-movflags","+faststart",t.mp4),t.webm&&i.push("-c:v","libvpx-vp9","-row-mt","1","-cpu-used","1","-threads","0","-pix_fmt","yuva420p","-auto-alt-ref","0",t.webm),{command:F,args:i}}function Pe(r,e,t){let{fps:o,size:n}=e;return {raw:{command:F,args:["-y",...j,"-f","rawvideo","-pix_fmt","bgra","-s",`${n.width}x${n.height}`,"-r",`${o}`,"-i",r,"-f","rawvideo","-pix_fmt","yuva420p10le","pipe:1"]},x265:{command:Je(),args:["--no-progress","--log-level","error","--input","-","--input-res",`${n.width}x${n.height}`,"--input-csp","i420","--input-depth","10","--output-depth","10","--fps",`${o}`,"--alpha","--bframes","0","--colorprim","bt709","--transfer","bt709","--colormatrix","bt709","--crf","18","--output","-"]},mux:{command:F,args:["-y",...j,"-f","hevc","-r",`${o}`,"-i","pipe:0","-c:v","copy","-tag:v","hvc1","-movflags","+faststart",t]}}}function Te(r,e){return {command:F,args:["-y",...j,"-i",r,"-frames:v","1","-q:v","2",e]}}function Y(r,e,t,o){let i=ye(r,t,o==="mp4"?{mp4:e}:{webm:e});return T(`${i.command} ${i.args.join(" ")}`,{stdio:["ignore","inherit","inherit"]})}function Ae(r,e,t){let o=Pe(r,t,e),n=[`${o.raw.command} ${o.raw.args.join(" ")}`,`${o.x265.command} ${o.x265.args.join(" ")}`,`${o.mux.command} ${o.mux.args.join(" ")}`].join(" | ");return T(n,{stdio:["ignore","inherit","inherit"],shell:true})}var z="[pup]",Se=" progress: ";function Ke(r,e){x.debug(z,"runPupApp",r,e);let t=[r];e.width&&t.push("--width",`${e.width}`),e.height&&t.push("--height",`${e.height}`),e.fps&&t.push("--fps",`${e.fps}`),e.duration&&t.push("--duration",`${e.duration}`),e.outDir&&t.push("--out-dir",e.outDir),e.withAlphaChannel&&t.push("--with-alpha-channel"),e.useInnerProxy&&t.push("--use-inner-proxy");let o=e.width??X,n=e.height??K,i=ve({width:o,height:n},me,t),p=new L(1);return i.process.stdout?.on("data",a=>{let m=a.toString().trim(),l=m.indexOf(Se);if(l<0)return;m=m.slice(l+Se.length);let g=m.indexOf("%");if(g<0)return;let s=m.slice(0,g),b=D(s);p.schedule(async()=>{await e.onProgress?.(b);});}),{handle:i,counter:p}}async function xt(r,e){x.debug(z,"pup",r,e);let t=N.start(e.cancelQuery),o=e.outDir??"out",n=performance.now(),{handle:i,counter:p}=Ke(r,{...e,outDir:o});await t.wait(i),await p.end(),x.info(z,`capture cost ${Math.round(performance.now()-n)}ms`);let a=path.join(o,"record.json"),m=JSON.parse(await promises$1.readFile(a,"utf-8")),{bgraPath:l,written:g,options:s}=m,{fps:b,width:f,height:A,withAlphaChannel:S}=s,V={width:f,height:A},h={mp4:S?void 0:path.join(o,"output.mp4"),webm:S?path.join(o,"output.webm"):void 0,mov:S?path.join(o,"output.mov"):void 0,cover:path.join(o,"cover.png")};try{let d=performance.now(),_={fps:b,frames:g,size:V},u=[];h.mp4&&u.push(Y(l,h.mp4,_,"mp4")),h.webm&&u.push(Y(l,h.webm,_,"webm")),h.mov&&u.push(Ae(l,h.mov,_)),await t.wait(...u);let R=h.mov??h.webm??h.mp4;if(R){let ee=Te(R,h.cover),Re=T(`${ee.command} ${ee.args.join(" ")}`);await t.wait(Re);}return t.stop(),x.info(z,`encoding cost ${Math.round(performance.now()-d)}ms`),await Promise.all([promises$1.rm(l,{force:!0}),promises$1.rm(a,{force:!0})]),{...h,width:f,height:A,fps:b,duration:Math.ceil(g/b)}}catch(d){throw await promises$1.rm(o,{recursive:true,force:true}),d}}exports.ConcurrencyLimiter=L;exports.DEFAULT_DURATION=He;exports.DEFAULT_FPS=Ie;exports.DEFAULT_HEIGHT=K;exports.DEFAULT_OUT_DIR=Be;exports.DEFAULT_WIDTH=X;exports.Lazy=le;exports.PUP_ARGS_ENV_KEY=je;exports.RecordSchema=Ir;exports.exec=T;exports.logger=x;exports.noerr=Tr;exports.pargs=kr;exports.parseNumber=D;exports.penv=ue;exports.periodical=Fr;exports.pup=xt;exports.pupAppPath=me;exports.pupFFmpegPath=F;exports.pupLogLevel=C;exports.pupUseInnerProxy=lr;exports.sleep=xe;exports.useRetry=Lr;//# sourceMappingURL=index.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYnVuL3RzdXBAOC41LjErM2YyOWI5MDQzN2QwMDFhZC9ub2RlX21vZHVsZXMvdHN1cC9hc3NldHMvY2pzX3NoaW1zLmpzIiwiLi4vLi4vc3JjL2Jhc2UvYmFzZWRpci50cyIsIi4uLy4uL3NyYy9iYXNlL2Vudi50cyIsIi4uLy4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uLy4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uLy4uL3NyYy9iYXNlL2xhenkudHMiLCIuLi8uLi9zcmMvYmFzZS9saW1pdGVyLnRzIiwiLi4vLi4vc3JjL2Jhc2UvbG9nZ2luZy50cyIsIi4uLy4uL3NyYy9iYXNlL25vZXJyLnRzIiwiLi4vLi4vc3JjL2Jhc2UvcHJvY2Vzcy50cyIsIi4uLy4uL3NyYy9iYXNlL3RpbWluZy50cyIsIi4uLy4uL3NyYy9iYXNlL3JldHJ5LnRzIiwiLi4vLi4vc3JjL2Jhc2Uvc2NoZW1hLnRzIiwiLi4vLi4vc3JjL2Jhc2UvYWJvcnQudHMiLCIuLi8uLi9zcmMvYmFzZS9lbGVjdHJvbi50cyIsIi4uLy4uL3NyYy9iYXNlL2ZmbXBlZy50cyIsIi4uLy4uL3NyYy9iYXNlL2VuY29kZXIudHMiLCIuLi8uLi9zcmMvcHVwLnRzIl0sIm5hbWVzIjpbImdldEltcG9ydE1ldGFVcmwiLCJpbXBvcnRNZXRhVXJsIiwiYmFzZWRpciIsImRpcm5hbWUiLCJmaWxlVVJMVG9QYXRoIiwicGVudiIsIm5hbWUiLCJwYXJzZXIiLCJkZWZhdWx0VmFsdWUiLCJwYXJzZU51bWJlciIsInZhbHVlIiwibnVtIiwicHVwQXBwU2VhcmNoUGF0aHMiLCJqb2luIiwicHVwQXBwUGF0aCIsImV4aXN0c1N5bmMiLCJlbnYiLCJwdXBMb2dMZXZlbCIsInB1cFVzZUlubmVyUHJveHkiLCJwdXBGRm1wZWdQYXRoIiwiTGF6eSIsIm1ha2VWYWx1ZSIsIkNvbmN1cnJlbmN5TGltaXRlciIsIm1heENvbmN1cnJlbmN5IiwiZm4iLCJyZXNvbHZlIiwicmVqZWN0IiwicnVuIiwiREVCVUciLCJJTkZPIiwiV0FSTiIsIkVSUk9SIiwiRkFUQUwiLCJzdGFja0hvb2siLCJ0YXJnZXQiLCJfY29udGV4dCIsIm1lc3NhZ2VzIiwicHJvY2Vzc2VkIiwibXNnIiwiX2ZhdGFsX2RlYyIsIl9lcnJvcl9kZWMiLCJfd2Fybl9kZWMiLCJfaW5mb19kZWMiLCJfZGVidWdfZGVjIiwiX2luaXQiLCJMb2dnZXIiLCJfX3J1bkluaXRpYWxpemVycyIsIl9fcHVibGljRmllbGQiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJtZXNzYWdlIiwicHJvYyIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJub2VyciIsImFyZ3MiLCJyZXQiLCJQVVBfQVJHU19FTlZfS0VZIiwicGFyZ3MiLCJwdXBBcmdzIiwiZXhlYyIsImNtZCIsIm9wdGlvbnMiLCJwYXJ0cyIsInMiLCJjb21tYW5kIiwic3Bhd24iLCJzbGVlcCIsIm1zIiwicGVyaW9kaWNhbCIsImNhbGxiYWNrIiwidG9rZW4iLCJjbG9zZWQiLCJ0aWNrIiwiY291bnQiLCJ1c2VSZXRyeSIsIm1heEF0dGVtcHRzIiwidGltZW91dCIsInRpbWVvdXRFcnJvciIsImF0dGVtcHQiLCJwcm9taXNlcyIsInNldFRpbWVvdXQiLCJlIiwiREVGQVVMVF9XSURUSCIsIkRFRkFVTFRfSEVJR0hUIiwiREVGQVVMVF9GUFMiLCJERUZBVUxUX0RVUkFUSU9OIiwiREVGQVVMVF9PVVRfRElSIiwiUmVjb3JkU2NoZW1hIiwieiIsIkFib3J0TGluayIsIl9BYm9ydExpbmsiLCJxdWVyeSIsImludGVydmFsIiwiaGFuZGxlcyIsImFib3J0IiwiXyIsImgiLCJFTEVDVFJPTl9PUFRTIiwicnVuRWxlY3Ryb25BcHAiLCJzaXplIiwiYXBwIiwiZWxlY3Ryb25BcmdzIiwiYSIsImNtZFBhcnRzIiwiZWxlY3Ryb24iLCJxdWlldCIsInJlc29sdmVYMjY1IiwicGF0aCIsInBsYXRmb3JtIiwiYXJjaCIsImZvdW5kIiwiY3JlYXRlQmdyYUZpbGVDb21tYW5kIiwiYmdyYVBhdGgiLCJzcGVjIiwiZmlsZXMiLCJmcHMiLCJmcmFtZXMiLCJjcmVhdGVCZ3JhVG9Nb3ZQaXBlbGluZSIsIm1vdiIsImNyZWF0ZUNvdmVyQ29tbWFuZCIsInNyYyIsImRzdCIsImVuY29kZUJncmFGaWxlIiwib3V0cHV0UGF0aCIsImZvcm1hdCIsImVuY29kZUJncmFUb01vdiIsIm1vdlBhdGgiLCJ4MjY1Iiwic2hlbGxDbWQiLCJUQUciLCJQUk9HUkVTU19UQUciLCJydW5QdXBBcHAiLCJzb3VyY2UiLCJ3IiwiaGFuZGxlIiwiY291bnRlciIsInN0YXJ0IiwiZW5kIiwicHJvZ3Jlc3NTdHIiLCJwcm9ncmVzcyIsInB1cCIsImxpbmsiLCJvdXREaXIiLCJ0MCIsIm1ldGFQYXRoIiwibWV0YSIsInJlYWRGaWxlIiwid3JpdHRlbiIsInJlY29yZE9wdGlvbnMiLCJ3aWR0aCIsImhlaWdodCIsIndpdGhBbHBoYUNoYW5uZWwiLCJvdXRwdXRzIiwidDEiLCJjb3ZlclNyYyIsImNvdmVyQ21kIiwicm0iXSwibWFwcGluZ3MiOiJ1Y0FLQSxJQUFBLEVBQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxjQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsTUFBQSxDQUFBLHdCQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLE1BQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsVUFBQSxDQUFBLElBQUEsQ0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0FBQSxDQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsUUFBQSxDQUFBLFFBQUEsQ0FBQSxRQUFBLENBQUEsVUFBQSxDQUFBLE9BQUEsQ0FBQSxPQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLE1BQUEsRUFBQSxPQUFBLENBQUEsRUFBQSxVQUFBLENBQUEsQ0FBQSxDQUFBLG1CQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEscUJBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLFVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLElBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEs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QUFtQm1DLENBQUFBLENBQVVGLENBQUFBLENBQVEsS0FBSyxDQUFBLENBQ3JEbEIsRUFBQUEsQ0FBUzNFLENBQUFBLENBQUssR0FBR2dHLEVBQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsRUFBSUEsRUFBQUEsQ0FBUyxLQUFLLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQ3BFLE1BQU1kLENBQUFBLENBQUssSUFBQSxDQUFLUCxFQUFNLEVBQ3hCLENBRUEsT0FBQU8sQ0FBQUEsQ0FBSyxNQUFLLENBQ1Z6RixDQUFBQSxDQUFPLElBQUEsQ0FBSzZFLENBQUFBLENBQUssQ0FBQSxjQUFBLEVBQWlCLElBQUEsQ0FBSyxLQUFBLENBQU0sV0FBQSxDQUFZLEtBQUksQ0FBSXdCLENBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBSSxDQUFBLENBRXhFLE1BQU0sT0FBQSxDQUFRLEdBQUEsQ0FBSSxDQUNoQkcsYUFBQUEsQ0FBRzVDLENBQUFBLENBQVUsQ0FBRSxLQUFBLENBQU8sQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUM1QjRDLGFBQUFBLENBQUdaLEVBQVUsQ0FBRSxLQUFBLENBQU8sQ0FBQSxDQUFLLENBQUMsQ0FDOUIsQ0FBQyxDQUFBLENBQ00sQ0FDTCxHQUFHUSxDQUFBQSxDQUNILEtBQUEsQ0FBQUgsQ0FBQUEsQ0FDQSxNQUFBLENBQUFDLENBQUFBLENBQ0EsR0FBQSxDQUFBbkMsQ0FBQUEsQ0FDQSxRQUFBLENBQVUsS0FBSyxJQUFBLENBQUtnQyxDQUFBQSxDQUFVaEMsQ0FBRyxDQUNuQyxDQUNGLENBQUEsTUFBUzVFLENBQUFBLENBQU8sQ0FDZCxZQUFNcUgsYUFBQUEsQ0FBR2QsQ0FBQUEsQ0FBUSxDQUFFLFNBQUEsQ0FBVyxLQUFNLEtBQUEsQ0FBTyxJQUFLLENBQUMsQ0FBQSxDQUMzQ3ZHLENBQ1IsQ0FDRiIsImZpbGUiOiJpbmRleC5janMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaGltIGdsb2JhbHMgaW4gY2pzIGJ1bmRsZVxuLy8gVGhlcmUncyBhIHdlaXJkIGJ1ZyB0aGF0IGVzYnVpbGQgd2lsbCBhbHdheXMgaW5qZWN0IGltcG9ydE1ldGFVcmxcbi8vIGlmIHdlIGV4cG9ydCBpdCBhcyBgY29uc3QgaW1wb3J0TWV0YVVybCA9IC4uLiBfX2ZpbGVuYW1lIC4uLmBcbi8vIEJ1dCB1c2luZyBhIGZ1bmN0aW9uIHdpbGwgbm90IGNhdXNlIHRoaXMgaXNzdWVcblxuY29uc3QgZ2V0SW1wb3J0TWV0YVVybCA9ICgpID0+IFxuICB0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIgXG4gICAgPyBuZXcgVVJMKGBmaWxlOiR7X19maWxlbmFtZX1gKS5ocmVmIFxuICAgIDogKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdTQ1JJUFQnKSBcbiAgICAgID8gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMgXG4gICAgICA6IG5ldyBVUkwoXCJtYWluLmpzXCIsIGRvY3VtZW50LmJhc2VVUkkpLmhyZWY7XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRNZXRhVXJsID0gLyogQF9fUFVSRV9fICovIGdldEltcG9ydE1ldGFVcmwoKVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcInVybFwiO1xuXG5leHBvcnQgY29uc3QgYmFzZWRpciA9IGRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIHBhcnNlcjogRW52UGFyc2VyPFQ+LFxuICBkZWZhdWx0VmFsdWU/OiBULFxuKTogVCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIHBhcnNlcjogRW52UGFyc2VyPFQ+LFxuICBkZWZhdWx0VmFsdWU/OiBULFxuKTogVCB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlcihwcm9jZXNzLmVudltuYW1lXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBiYXNlZGlyIH0gZnJvbSBcIi4vYmFzZWRpclwiO1xuaW1wb3J0IHsgcGVudiB9IGZyb20gXCIuL2VudlwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9wYXJzZXJcIjtcblxuY29uc3QgcHVwQXBwU2VhcmNoUGF0aHMgPSBbXG4gIGpvaW4oYmFzZWRpciwgXCJjanMvYXBwLmNqc1wiKSwgLy8gcHJvY2VzcyBmcm9tIGRpc3RcbiAgam9pbihiYXNlZGlyLCBcImFwcC5janNcIiksIC8vIHByb2Nlc3MgZnJvbSBkaXN0L2Nqc1xuICBqb2luKGJhc2VkaXIsIFwiLi4vLi4vY2pzL2FwcC5janNcIiksIC8vIHByb2Nlc3MgZnJvbSBzcmNcbl07XG5leHBvcnQgY29uc3QgcHVwQXBwUGF0aCA9IHB1cEFwcFNlYXJjaFBhdGhzLmZpbmQoZXhpc3RzU3luYykhO1xuXG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcbmV4cG9ydCBjb25zdCBwdXBMb2dMZXZlbCA9IHBlbnYoXCJQVVBfTE9HX0xFVkVMXCIsIHBhcnNlTnVtYmVyLCAyKTtcbmV4cG9ydCBjb25zdCBwdXBVc2VJbm5lclByb3h5ID0gZW52W1wiUFVQX1VTRV9JTk5FUl9QUk9YWVwiXSA9PT0gXCIxXCI7XG5leHBvcnQgY29uc3QgcHVwRkZtcGVnUGF0aCA9IGVudltcIkZGTVBFR19CSU5cIl0gPz8gYGZmbXBlZ2A7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgY2xhc3MgTGF6eTxUPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG1ha2VWYWx1ZTogKCkgPT4gVCkge31cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLm1ha2VWYWx1ZSgpO1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsdWUhO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXplZDtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlOiBUIHwgdW5kZWZpbmVkO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGNsYXNzIENvbmN1cnJlbmN5TGltaXRlciB7XG4gIHByaXZhdGUgX2FjdGl2ZSA9IDA7XG4gIHByaXZhdGUgX3F1ZXVlOiBWb2lkRnVuY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIF9wZW5kaW5nID0gMDtcbiAgcHJpdmF0ZSBfZW5kZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYXhDb25jdXJyZW5jeTogbnVtYmVyKSB7fVxuXG4gIGdldCBhY3RpdmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZztcbiAgfVxuXG4gIGFzeW5jIHNjaGVkdWxlPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX2VuZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmRlZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlKys7XG4gICAgICAgIHRoaXMuX3BlbmRpbmctLTtcbiAgICAgICAgZm4oKVxuICAgICAgICAgIC50aGVuKHJlc29sdmUpXG4gICAgICAgICAgLmNhdGNoKHJlamVjdClcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUtLTtcbiAgICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX3BlbmRpbmcrKztcbiAgICAgIGlmICh0aGlzLl9hY3RpdmUgPCB0aGlzLm1heENvbmN1cnJlbmN5KSB7XG4gICAgICAgIHJ1bigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVldWUucHVzaChydW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZW5kKCkge1xuICAgIGlmICghdGhpcy5fZW5kZWQpIHtcbiAgICAgIHRoaXMuX2VuZGVkID0gdHJ1ZTtcbiAgICAgIHdoaWxlICh0aGlzLl9hY3RpdmUgPiAwIHx8IHRoaXMuX3BlbmRpbmcgPiAwKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0KCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPCB0aGlzLm1heENvbmN1cnJlbmN5ICYmIHRoaXMuX3F1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3F1ZXVlLnNoaWZ0KCk/LigpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCB0eXBlIFNlcmlhbGl6YWJsZSB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckxpa2Uge1xuICBkZWJ1Zz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgaW5mbz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgd2Fybj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgZXJyb3I/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xufVxuXG5jb25zdCBERUJVRyA9IFwiPHB1cEBkZWJ1Zz5cIjtcbmNvbnN0IElORk8gPSBcIjxwdXBAaW5mbz5cIjtcbmNvbnN0IFdBUk4gPSBcIjxwdXBAd2Fybj5cIjtcbmNvbnN0IEVSUk9SID0gXCI8cHVwQGVycm9yPlwiO1xuY29uc3QgRkFUQUwgPSBcIjxwdXBAZmF0YWw+XCI7XG5cbmZ1bmN0aW9uIHN0YWNrSG9vayh0YXJnZXQ6IEZ1bmN0aW9uLCBfY29udGV4dDogQ2xhc3NNZXRob2REZWNvcmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogTG9nZ2VyLCAuLi5tZXNzYWdlczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gbWVzc2FnZXMubWFwKChtc2cpID0+IHtcbiAgICAgIHJldHVybiBtc2cgaW5zdGFuY2VvZiBFcnJvciA/IChtc2cuc3RhY2sgPz8gU3RyaW5nKG1zZykpIDogbXNnO1xuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQuY2FsbCh0aGlzLCAuLi5wcm9jZXNzZWQpO1xuICB9O1xufVxuXG5jbGFzcyBMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXJMaWtlIHtcbiAgcHJpdmF0ZSBfaW1wbD86IExvZ2dlckxpa2U7XG5cbiAgZ2V0IGltcGwoKTogTG9nZ2VyTGlrZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcGw7XG4gIH1cblxuICBzZXQgaW1wbCh2YWx1ZTogTG9nZ2VyTGlrZSkge1xuICAgIGNvbnN0IGRlYnVnID0gdmFsdWUuZGVidWcgPz8gY29uc29sZS5kZWJ1ZztcbiAgICBjb25zdCBpbmZvID0gdmFsdWUuaW5mbyA/PyBjb25zb2xlLmluZm87XG4gICAgY29uc3Qgd2FybiA9IHZhbHVlLndhcm4gPz8gY29uc29sZS53YXJuO1xuICAgIGNvbnN0IGVycm9yID0gdmFsdWUuZXJyb3IgPz8gY29uc29sZS5lcnJvcjtcbiAgICB0aGlzLl9pbXBsID0ge1xuICAgICAgZGVidWc6IHB1cExvZ0xldmVsID49IDMgPyBkZWJ1ZyA6IHVuZGVmaW5lZCxcbiAgICAgIGluZm86IHB1cExvZ0xldmVsID49IDIgPyBpbmZvIDogdW5kZWZpbmVkLFxuICAgICAgd2FybjogcHVwTG9nTGV2ZWwgPj0gMSA/IHdhcm4gOiB1bmRlZmluZWQsXG4gICAgICBlcnJvcjogcHVwTG9nTGV2ZWwgPj0gMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmltcGwgPSBjb25zb2xlO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBkZWJ1ZyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5kZWJ1Zz8uKERFQlVHLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGluZm8oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uaW5mbz8uKElORk8sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgd2FybiguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy53YXJuPy4oV0FSTiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBlcnJvciguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEVSUk9SLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGZhdGFsKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRkFUQUwsIC4uLm1lc3NhZ2VzKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoREVCVUcpKSB7XG4gICAgICB0aGlzLmRlYnVnKG1lc3NhZ2Uuc2xpY2UoREVCVUcubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5zdGFydHNXaXRoKElORk8pKSB7XG4gICAgICB0aGlzLmluZm8obWVzc2FnZS5zbGljZShJTkZPLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChXQVJOKSkge1xuICAgICAgdGhpcy53YXJuKG1lc3NhZ2Uuc2xpY2UoV0FSTi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoRVJST1IpKSB7XG4gICAgICB0aGlzLmVycm9yKG1lc3NhZ2Uuc2xpY2UoRVJST1IubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluZm8obWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoKHByb2M6IENoaWxkUHJvY2VzcywgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uYXR0YWNoYCk7XG4gICAgICBsZXQgZmF0YWw6IHN0cmluZyA9IFwiXCI7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IChkYXRhOiBCdWZmZXIgfCBTZXJpYWxpemFibGUpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChGQVRBTCkpIHtcbiAgICAgICAgICBmYXRhbCArPSBtZXNzYWdlLnNsaWNlKEZBVEFMLmxlbmd0aCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9jLnN0ZGVycj8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2Muc3Rkb3V0Py5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvY1xuICAgICAgICAub24oXCJtZXNzYWdlXCIsIGRpc3BhdGNoKVxuICAgICAgICAub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgZmF0YWwgKz0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbmNlKFwiY2xvc2VcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIGlmIChjb2RlIHx8IHNpZ25hbCB8fCBmYXRhbCkge1xuICAgICAgICAgICAgZmF0YWwgfHw9IGBjb21tYW5kIGZhaWxlZDogJHtwcm9jLnNwYXduYXJncy5qb2luKFwiIFwiKX1gO1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWAsIHsgY29kZSwgc2lnbmFsLCBmYXRhbCB9KTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZmF0YWwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWApO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIChyZWFzb24pID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIHJlYXNvbik7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbmV4cG9ydCB7IGxvZ2dlciB9O1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNC5cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZXJyPEZuIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnksIEQ+KFxuICBmbjogRm4sXG4gIGRlZmF1bHRWYWx1ZTogRCxcbik6ICguLi5hcmdzOiBQYXJhbWV0ZXJzPEZuPikgPT4gUmV0dXJuVHlwZTxGbj4gfCBEIHtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldCA9IGZuKC4uLmFyZ3MpO1xuICAgICAgaWYgKHJldCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHJldC5jYXRjaCgoKSA9PiBkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuaW1wb3J0IHsgc3Bhd24sIHR5cGUgQ2hpbGRQcm9jZXNzLCB0eXBlIFNwYXduT3B0aW9ucyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBQVVBfQVJHU19FTlZfS0VZID0gXCJfX1BVUF9BUkdTX19cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmdzKCkge1xuICBjb25zdCBwdXBBcmdzID0gcHJvY2Vzcy5lbnZbUFVQX0FSR1NfRU5WX0tFWV07XG4gIGlmIChwdXBBcmdzKSB7XG4gICAgY29uc3QgYXJncyA9IFtcImV4ZWNcIiwgLi4ucHJvY2Vzcy5hcmd2LnNsaWNlKC0xKV07XG4gICAgYXJncy5wdXNoKC4uLkpTT04ucGFyc2UocHVwQXJncykpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInB1cGFyZ3NcIiwgYXJncyk7XG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoXCJwcm9jYXJndlwiLCBwcm9jZXNzLmFyZ3YpO1xuICByZXR1cm4gcHJvY2Vzcy5hcmd2O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NIYW5kbGUge1xuICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gIHdhaXQ6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNtZDogc3RyaW5nLCBvcHRpb25zPzogU3Bhd25PcHRpb25zKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHBhcnRzID0gY21kLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoKTtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLmFyZ3NdID0gcGFydHM7XG4gIGlmICghY29tbWFuZCkgdGhyb3cgbmV3IEVycm9yKFwiZW1wdHkgY29tbWFuZFwiKTtcbiAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG4gIHJldHVybiB7IHByb2Nlc3M6IHByb2MsIHdhaXQ6IGxvZ2dlci5hdHRhY2gocHJvYywgY29tbWFuZCkgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyaW9kaWNhbChcbiAgY2FsbGJhY2s6IChjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZCxcbiAgbXM6IG51bWJlcixcbikge1xuICBsZXQgdG9rZW46IE5vZGVKUy5UaW1lb3V0O1xuICBsZXQgY2xvc2VkID0gZmFsc2U7XG4gIGFzeW5jIGZ1bmN0aW9uIHRpY2soY291bnQ6IG51bWJlcikge1xuICAgIGF3YWl0IGNhbGxiYWNrKGNvdW50KTtcbiAgICBpZiAoY2xvc2VkKSByZXR1cm47XG4gICAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soY291bnQgKyAxKSwgbXMpO1xuICB9XG4gIHRva2VuID0gc2V0VGltZW91dCgoKSA9PiB0aWNrKDApLCBtcyk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgICBjbGVhclRpbWVvdXQodG9rZW4pO1xuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNS5cblxuaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gXCJ0aW1lcnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIi4vdGltaW5nXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zPEFyZ3MgZXh0ZW5kcyBhbnlbXSwgUmV0PiB7XG4gIGZuOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXQ+O1xuICBtYXhBdHRlbXB0cz86IG51bWJlcjtcbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVJldHJ5PEFyZ3MgZXh0ZW5kcyBhbnlbXSwgUmV0Pih7XG4gIGZuLFxuICBtYXhBdHRlbXB0cyA9IDMsXG4gIHRpbWVvdXQsXG59OiBSZXRyeU9wdGlvbnM8QXJncywgUmV0Pikge1xuICBjb25zdCB0aW1lb3V0RXJyb3IgPSBuZXcgRXJyb3IoYHRpbWVvdXQgb3ZlciAke3RpbWVvdXR9bXNgKTtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiBBcmdzKSB7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtmbiguLi5hcmdzKV07XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IHRpbWVvdXRFcnJvcjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGF0dGVtcHQrKztcbiAgICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKE1hdGgucG93KDIsIGF0dGVtcHQpICogMTAwICsgTWF0aC5yYW5kb20oKSAqIDEwMCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9TcGVjIHtcbiAgZnBzOiBudW1iZXI7XG4gIGZyYW1lczogbnVtYmVyO1xuICBzaXplOiBTaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRmlsZXMge1xuICBtcDQ/OiBzdHJpbmc7XG4gIHdlYm0/OiBzdHJpbmc7XG4gIG1vdj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb0ZpbGVzV2l0aENvdmVyIGV4dGVuZHMgVmlkZW9GaWxlcyB7XG4gIGNvdmVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gMTkyMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9IDEwODA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GUFMgPSAzMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RVUkFUSU9OID0gNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVF9ESVIgPSBcIm91dFwiO1xuXG5leHBvcnQgY29uc3QgUmVjb3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICBkdXJhdGlvbjogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9EVVJBVElPTilcbiAgICAuZGVzY3JpYmUoXCJSZWNvcmRpbmcgZHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfV0lEVEgpLmRlc2NyaWJlKFwiVmlkZW8gd2lkdGhcIiksXG4gIGhlaWdodDogelxuICAgIC5udW1iZXIoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoREVGQVVMVF9IRUlHSFQpXG4gICAgLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfRlBTKS5kZXNjcmliZShcIkZyYW1lcyBwZXIgc2Vjb25kXCIpLFxuICB3aXRoQWxwaGFDaGFubmVsOiB6XG4gICAgLmJvb2xlYW4oKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLmRlc2NyaWJlKFwiT3V0cHV0IHdpdGggYWxwaGEgY2hhbm5lbFwiKSxcbiAgb3V0RGlyOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVmYXVsdChERUZBVUxUX09VVF9ESVIpXG4gICAgLmRlc2NyaWJlKFwiT3V0cHV0IGRpcmVjdG9yeVwiKSxcbiAgdXNlSW5uZXJQcm94eTogelxuICAgIC5ib29sZWFuKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5kZXNjcmliZShcIlVzZSBiaWxpYmlsaSBpbm5lciBwcm94eSBmb3IgcmVzb3VyY2UgYWNjZXNzXCIpLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkT3B0aW9ucyB7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmcHM6IG51bWJlcjtcbiAgd2l0aEFscGhhQ2hhbm5lbDogYm9vbGVhbjtcbiAgb3V0RGlyOiBzdHJpbmc7XG4gIHVzZUlubmVyUHJveHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkUmVzdWx0IHtcbiAgb3B0aW9uczogUmVjb3JkT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBiZ3JhUGF0aDogc3RyaW5nO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8xMS5cblxuaW1wb3J0IHR5cGUgeyBQcm9jZXNzSGFuZGxlIH0gZnJvbSBcIi4vcHJvY2Vzc1wiO1xuXG5leHBvcnQgdHlwZSBBc3luY1Rhc2sgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbmV4cG9ydCB0eXBlIEFib3J0UXVlcnkgPSAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcblxuZXhwb3J0IGNsYXNzIEFib3J0TGluayB7XG4gIHByaXZhdGUgX2NhbGxiYWNrPzogQXN5bmNUYXNrO1xuICBwcml2YXRlIF9hYm9ydGVkPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3RvcHBlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcXVlcnk/OiBBYm9ydFF1ZXJ5LFxuICAgIHJlYWRvbmx5IGludGVydmFsOiBudW1iZXIgPSAxMDAwLFxuICApIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHRoaXMudGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBzdGFydChxdWVyeT86IEFib3J0UXVlcnksIGludGVydmFsPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBBYm9ydExpbmsocXVlcnksIGludGVydmFsKTtcbiAgfVxuXG4gIGdldCBhYm9ydGVkKCkge1xuICAgIHJldHVybiAhdGhpcy5fc3RvcHBlZCAmJiB0aGlzLl9hYm9ydGVkO1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBvbkFib3J0KGNhbGxiYWNrOiBBc3luY1Rhc2spIHtcbiAgICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgICAgYXdhaXQgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG4gIH1cblxuICB3YWl0KC4uLmhhbmRsZXM6IFByb2Nlc3NIYW5kbGVbXSkge1xuICAgIGNvbnN0IGFib3J0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5vbkFib3J0KGFzeW5jICgpID0+IHtcbiAgICAgICAgaGFuZGxlcy5mb3JFYWNoKChoKSA9PiBoLnByb2Nlc3Mua2lsbCgpKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcImFib3J0ZWRcIikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgICBhYm9ydCxcbiAgICAgIFByb21pc2UuYWxsKGhhbmRsZXMubWFwKChoKSA9PiBoLndhaXQpKSwgLy9cbiAgICBdKTtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5fc3RvcHBlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHRpY2soKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9hYm9ydGVkID0gYXdhaXQgdGhpcy5xdWVyeT8uKCk7XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLl9jYWxsYmFjaz8uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRpY2soKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLmludGVydmFsKTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IGVsZWN0cm9uLCB7IHR5cGUgU2l6ZSB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL3Byb2Nlc3NcIjtcblxuZXhwb3J0IGNvbnN0IEVMRUNUUk9OX09QVFMgPSBbXG4gIFwibm8tc2FuZGJveFwiLFxuICBcImRpc2FibGUtc2V0dWlkLXNhbmRib3hcIixcbiAgXCJkaXNhYmxlLWdwdVwiLFxuICBcImRpc2FibGUtZGV2LXNobS11c2FnZVwiLFxuICBcImRpc2FibGUtc29mdHdhcmUtcmFzdGVyaXplclwiLFxuICBcImRpc2FibGUtd2ViLXNlY3VyaXR5XCIsXG4gIFwiZGlzYWJsZS1zaXRlLWlzb2xhdGlvbi10cmlhbHNcIixcbiAgXCJkaXNhYmxlLWZlYXR1cmVzPUlzb2xhdGVPcmlnaW5zLHNpdGUtcGVyLXByb2Nlc3NcIixcbiAgXCJhbGxvdy1pbnNlY3VyZS1sb2NhbGhvc3RcIixcbiAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gIFwiZGlzYWJsZS1ibGluay1mZWF0dXJlcz1BdXRvbWF0aW9uQ29udHJvbGxlZFwiLFxuICBcIm11dGUtYXVkaW9cIixcbiAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgXCJkaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZ1wiLFxuICBcImFkZHJlc3MtZmFtaWx5PWlwdjRcIixcbiAgXCJkaXNhYmxlLWFzeW5jLWRuc1wiLFxuICBcImZvcmNlLWRldmljZS1zY2FsZS1mYWN0b3I9MVwiLFxuICBcInRyYWNlLXdhcm5pbmdzXCIsXG4gIFwiZm9yY2UtY29sb3ItcHJvZmlsZT1zcmdiXCIsXG4gIFwiZGlzYWJsZS1jb2xvci1jb3JyZWN0LXJlbmRlcmluZ1wiLFxuICBcImxvZy1sZXZlbD0zXCIsXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoc2l6ZTogU2l6ZSwgYXBwOiB1bmtub3duLCBhcmdzOiB1bmtub3duW10pIHtcbiAgY29uc3QgZWxlY3Ryb25BcmdzID0gRUxFQ1RST05fT1BUUy5tYXAoKGEpID0+IGAtLSR7YX1gKTtcbiAgY29uc3QgY21kUGFydHMgPSBbXTtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwibGludXhcIikge1xuICAgIGNtZFBhcnRzLnB1c2goXG4gICAgICBcInh2ZmItcnVuXCIsXG4gICAgICBcIi0tYXV0by1zZXJ2ZXJudW1cIixcbiAgICAgIGAtLXNlcnZlci1hcmdzPSctc2NyZWVuIDAgJHtzaXplLndpZHRofXgke3NpemUuaGVpZ2h0fXgyNCdgLFxuICAgICk7XG4gIH1cbiAgY21kUGFydHMucHVzaChlbGVjdHJvbiwgLi4uZWxlY3Ryb25BcmdzLCBhcHApO1xuICByZXR1cm4gZXhlYyhjbWRQYXJ0cy5qb2luKFwiIFwiKSwge1xuICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgRUxFQ1RST05fRElTQUJMRV9EQlVTOiBcIjFcIixcbiAgICAgIFJVU1RfQkFDS1RSQUNFOiBcImZ1bGxcIixcbiAgICAgIF9fUFVQX0FSR1NfXzogSlNPTi5zdHJpbmdpZnkoYXJncyksXG4gICAgfSxcbiAgfSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGFyY2gsIHBsYXRmb3JtIH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IGJhc2VkaXIgfSBmcm9tIFwiLi9iYXNlZGlyXCI7XG5pbXBvcnQgeyBwdXBGRm1wZWdQYXRoIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IFZpZGVvRmlsZXMsIFZpZGVvU3BlYyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG5pbnRlcmZhY2UgQ29tbWFuZCB7XG4gIGNvbW1hbmQ6IHN0cmluZztcbiAgYXJnczogc3RyaW5nW107XG59XG5cbmNvbnN0IHF1aWV0ID0gW1wiLWhpZGVfYmFubmVyXCIsIFwiLWxvZ2xldmVsXCIsIFwiZXJyb3JcIiwgXCItbm9zdGF0c1wiXTtcblxuZnVuY3Rpb24gcmVzb2x2ZVgyNjUoKSB7XG4gIGNvbnN0IHBhdGggPSBgeDI2NS8ke3BsYXRmb3JtfS0ke2FyY2h9YDtcbiAgY29uc3QgZGlycyA9IFtcbiAgICBqb2luKGJhc2VkaXIsIGAuLi8uLi8ke3BhdGh9YCksIC8vIHByb2Nlc3MgZnJvbSBzcmNcbiAgICBqb2luKGJhc2VkaXIsIGAuLi8ke3BhdGh9YCksIC8vIHByb2Nlc3MgZnJvbSBkaXN0XG4gIF07XG4gIGNvbnN0IGZvdW5kID0gZGlycy5maW5kKGV4aXN0c1N5bmMpO1xuICBpZiAoIWZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwieDI2NSBub3QgZm91bmRcIik7XG4gIH1cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmdyYUZpbGVDb21tYW5kKFxuICBiZ3JhUGF0aDogc3RyaW5nLFxuICBzcGVjOiBWaWRlb1NwZWMsXG4gIGZpbGVzOiBWaWRlb0ZpbGVzLFxuKTogQ29tbWFuZCB7XG4gIGNvbnN0IHsgZnBzLCBmcmFtZXMgfSA9IHNwZWM7XG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgXCIteVwiLFxuICAgIC4uLnF1aWV0LFxuICAgIFwiLWZcIixcbiAgICBcInJhd3ZpZGVvXCIsXG4gICAgXCItcGl4X2ZtdFwiLFxuICAgIFwiYmdyYVwiLFxuICAgIFwiLXNcIixcbiAgICBgJHtzcGVjLnNpemUud2lkdGh9eCR7c3BlYy5zaXplLmhlaWdodH1gLFxuICAgIFwiLXJcIixcbiAgICBgJHtmcHN9YCxcbiAgICBcIi1pXCIsXG4gICAgYmdyYVBhdGgsXG4gICAgXCItZnJhbWVzOnZcIixcbiAgICBgJHtNYXRoLmZsb29yKGZyYW1lcyl9YCxcbiAgXTtcbiAgaWYgKGZpbGVzLm1wNCkge1xuICAgIGFyZ3MucHVzaChcbiAgICAgIFwiLWNvbG9yc3BhY2VcIixcbiAgICAgIFwiYnQ3MDlcIixcbiAgICAgIFwiLWNvbG9yX3ByaW1hcmllc1wiLFxuICAgICAgXCJidDcwOVwiLFxuICAgICAgXCItY29sb3JfdHJjXCIsXG4gICAgICBcImJ0NzA5XCIsXG4gICAgICBcIi1jOnZcIixcbiAgICAgIFwibGlieDI2NFwiLFxuICAgICAgXCItcHJlc2V0XCIsXG4gICAgICBcImZhc3RcIixcbiAgICAgIFwiLXRocmVhZHNcIixcbiAgICAgIFwiMFwiLFxuICAgICAgXCItcGl4X2ZtdFwiLFxuICAgICAgXCJ5dXY0MjBwXCIsXG4gICAgICBcIi1tb3ZmbGFnc1wiLFxuICAgICAgXCIrZmFzdHN0YXJ0XCIsXG4gICAgICBmaWxlcy5tcDQsXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsZXMud2VibSkge1xuICAgIGFyZ3MucHVzaChcbiAgICAgIFwiLWM6dlwiLFxuICAgICAgXCJsaWJ2cHgtdnA5XCIsXG4gICAgICBcIi1yb3ctbXRcIixcbiAgICAgIFwiMVwiLFxuICAgICAgXCItY3B1LXVzZWRcIixcbiAgICAgIFwiMVwiLFxuICAgICAgXCItdGhyZWFkc1wiLFxuICAgICAgXCIwXCIsXG4gICAgICBcIi1waXhfZm10XCIsXG4gICAgICBcInl1dmE0MjBwXCIsXG4gICAgICBcIi1hdXRvLWFsdC1yZWZcIixcbiAgICAgIFwiMFwiLFxuICAgICAgZmlsZXMud2VibSxcbiAgICApO1xuICB9XG4gIHJldHVybiB7IGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsIGFyZ3MgfTtcbn1cblxuaW50ZXJmYWNlIFgyNjVQaXBlbGluZSB7XG4gIHJhdzogQ29tbWFuZDtcbiAgeDI2NTogQ29tbWFuZDtcbiAgbXV4OiBDb21tYW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmdyYVRvTW92UGlwZWxpbmUoXG4gIGJncmFQYXRoOiBzdHJpbmcsXG4gIHNwZWM6IFZpZGVvU3BlYyxcbiAgbW92OiBzdHJpbmcsXG4pOiBYMjY1UGlwZWxpbmUge1xuICBjb25zdCB7IGZwcywgc2l6ZSB9ID0gc3BlYztcbiAgcmV0dXJuIHtcbiAgICByYXc6IHtcbiAgICAgIGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIFwiLXlcIixcbiAgICAgICAgLi4ucXVpZXQsXG4gICAgICAgIFwiLWZcIixcbiAgICAgICAgXCJyYXd2aWRlb1wiLFxuICAgICAgICBcIi1waXhfZm10XCIsXG4gICAgICAgIFwiYmdyYVwiLFxuICAgICAgICBcIi1zXCIsXG4gICAgICAgIGAke3NpemUud2lkdGh9eCR7c2l6ZS5oZWlnaHR9YCxcbiAgICAgICAgXCItclwiLFxuICAgICAgICBgJHtmcHN9YCxcbiAgICAgICAgXCItaVwiLFxuICAgICAgICBiZ3JhUGF0aCxcbiAgICAgICAgXCItZlwiLFxuICAgICAgICBcInJhd3ZpZGVvXCIsXG4gICAgICAgIFwiLXBpeF9mbXRcIixcbiAgICAgICAgXCJ5dXZhNDIwcDEwbGVcIixcbiAgICAgICAgXCJwaXBlOjFcIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICB4MjY1OiB7XG4gICAgICBjb21tYW5kOiByZXNvbHZlWDI2NSgpLFxuICAgICAgYXJnczogW1xuICAgICAgICBcIi0tbm8tcHJvZ3Jlc3NcIixcbiAgICAgICAgXCItLWxvZy1sZXZlbFwiLFxuICAgICAgICBcImVycm9yXCIsXG4gICAgICAgIFwiLS1pbnB1dFwiLFxuICAgICAgICBcIi1cIixcbiAgICAgICAgXCItLWlucHV0LXJlc1wiLFxuICAgICAgICBgJHtzaXplLndpZHRofXgke3NpemUuaGVpZ2h0fWAsXG4gICAgICAgIFwiLS1pbnB1dC1jc3BcIixcbiAgICAgICAgXCJpNDIwXCIsXG4gICAgICAgIFwiLS1pbnB1dC1kZXB0aFwiLFxuICAgICAgICBcIjEwXCIsXG4gICAgICAgIFwiLS1vdXRwdXQtZGVwdGhcIixcbiAgICAgICAgXCIxMFwiLFxuICAgICAgICBcIi0tZnBzXCIsXG4gICAgICAgIGAke2Zwc31gLFxuICAgICAgICBcIi0tYWxwaGFcIixcbiAgICAgICAgXCItLWJmcmFtZXNcIixcbiAgICAgICAgXCIwXCIsXG4gICAgICAgIFwiLS1jb2xvcnByaW1cIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tdHJhbnNmZXJcIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tY29sb3JtYXRyaXhcIixcbiAgICAgICAgXCJidDcwOVwiLFxuICAgICAgICBcIi0tY3JmXCIsXG4gICAgICAgIFwiMThcIixcbiAgICAgICAgXCItLW91dHB1dFwiLFxuICAgICAgICBcIi1cIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICBtdXg6IHtcbiAgICAgIGNvbW1hbmQ6IHB1cEZGbXBlZ1BhdGgsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIFwiLXlcIixcbiAgICAgICAgLi4ucXVpZXQsXG4gICAgICAgIFwiLWZcIixcbiAgICAgICAgXCJoZXZjXCIsXG4gICAgICAgIFwiLXJcIixcbiAgICAgICAgYCR7ZnBzfWAsXG4gICAgICAgIFwiLWlcIixcbiAgICAgICAgXCJwaXBlOjBcIixcbiAgICAgICAgXCItYzp2XCIsXG4gICAgICAgIFwiY29weVwiLFxuICAgICAgICBcIi10YWc6dlwiLFxuICAgICAgICBcImh2YzFcIixcbiAgICAgICAgXCItbW92ZmxhZ3NcIixcbiAgICAgICAgXCIrZmFzdHN0YXJ0XCIsXG4gICAgICAgIG1vdixcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvdmVyQ29tbWFuZChzcmM6IHN0cmluZywgZHN0OiBzdHJpbmcpOiBDb21tYW5kIHtcbiAgcmV0dXJuIHtcbiAgICBjb21tYW5kOiBwdXBGRm1wZWdQYXRoLFxuICAgIGFyZ3M6IFtcIi15XCIsIC4uLnF1aWV0LCBcIi1pXCIsIHNyYywgXCItZnJhbWVzOnZcIiwgXCIxXCIsIFwiLXE6dlwiLCBcIjJcIiwgZHN0XSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZUJncmFGaWxlQ29tbWFuZCwgY3JlYXRlQmdyYVRvTW92UGlwZWxpbmUgfSBmcm9tIFwiLi9mZm1wZWdcIjtcbmltcG9ydCB7IGV4ZWMsIHR5cGUgUHJvY2Vzc0hhbmRsZSB9IGZyb20gXCIuL3Byb2Nlc3NcIjtcbmltcG9ydCB0eXBlIHsgVmlkZW9TcGVjIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVCZ3JhRmlsZShcbiAgYmdyYVBhdGg6IHN0cmluZyxcbiAgb3V0cHV0UGF0aDogc3RyaW5nLFxuICBzcGVjOiBWaWRlb1NwZWMsXG4gIGZvcm1hdDogXCJtcDRcIiB8IFwid2VibVwiLFxuKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IGZpbGVzID0gZm9ybWF0ID09PSBcIm1wNFwiID8geyBtcDQ6IG91dHB1dFBhdGggfSA6IHsgd2VibTogb3V0cHV0UGF0aCB9O1xuICBjb25zdCBjbWQgPSBjcmVhdGVCZ3JhRmlsZUNvbW1hbmQoYmdyYVBhdGgsIHNwZWMsIGZpbGVzKTtcbiAgcmV0dXJuIGV4ZWMoYCR7Y21kLmNvbW1hbmR9ICR7Y21kLmFyZ3Muam9pbihcIiBcIil9YCwge1xuICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpbmhlcml0XCIsIFwiaW5oZXJpdFwiXSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVCZ3JhVG9Nb3YoXG4gIGJncmFQYXRoOiBzdHJpbmcsXG4gIG1vdlBhdGg6IHN0cmluZyxcbiAgc3BlYzogVmlkZW9TcGVjLFxuKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHgyNjUgPSBjcmVhdGVCZ3JhVG9Nb3ZQaXBlbGluZShiZ3JhUGF0aCwgc3BlYywgbW92UGF0aCk7XG4gIGNvbnN0IHNoZWxsQ21kID0gW1xuICAgIGAke3gyNjUucmF3LmNvbW1hbmR9ICR7eDI2NS5yYXcuYXJncy5qb2luKFwiIFwiKX1gLFxuICAgIGAke3gyNjUueDI2NS5jb21tYW5kfSAke3gyNjUueDI2NS5hcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgYCR7eDI2NS5tdXguY29tbWFuZH0gJHt4MjY1Lm11eC5hcmdzLmpvaW4oXCIgXCIpfWAsXG4gIF0uam9pbihcIiB8IFwiKTtcbiAgcmV0dXJuIGV4ZWMoc2hlbGxDbWQsIHtcbiAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaW5oZXJpdFwiLCBcImluaGVyaXRcIl0sXG4gICAgc2hlbGw6IHRydWUsXG4gIH0pO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyByZWFkRmlsZSwgcm0gfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQWJvcnRMaW5rLCB0eXBlIEFib3J0UXVlcnkgfSBmcm9tIFwiLi9iYXNlL2Fib3J0XCI7XG5pbXBvcnQgeyBwdXBBcHBQYXRoIH0gZnJvbSBcIi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IHJ1bkVsZWN0cm9uQXBwIH0gZnJvbSBcIi4vYmFzZS9lbGVjdHJvblwiO1xuaW1wb3J0IHsgZW5jb2RlQmdyYUZpbGUsIGVuY29kZUJncmFUb01vdiB9IGZyb20gXCIuL2Jhc2UvZW5jb2RlclwiO1xuaW1wb3J0IHsgY3JlYXRlQ292ZXJDb21tYW5kIH0gZnJvbSBcIi4vYmFzZS9mZm1wZWdcIjtcbmltcG9ydCB7IENvbmN1cnJlbmN5TGltaXRlciB9IGZyb20gXCIuL2Jhc2UvbGltaXRlclwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlciB9IGZyb20gXCIuL2Jhc2UvcGFyc2VyXCI7XG5pbXBvcnQgeyBleGVjLCB0eXBlIFByb2Nlc3NIYW5kbGUgfSBmcm9tIFwiLi9iYXNlL3Byb2Nlc3NcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSEVJR0hULFxuICBERUZBVUxUX1dJRFRILFxuICB0eXBlIFJlY29yZE9wdGlvbnMsXG4gIHR5cGUgUmVjb3JkUmVzdWx0LFxuICB0eXBlIFZpZGVvRmlsZXNXaXRoQ292ZXIsXG4gIHR5cGUgVmlkZW9TcGVjLFxufSBmcm9tIFwiLi9iYXNlL3NjaGVtYVwiO1xuXG5jb25zdCBUQUcgPSBcIltwdXBdXCI7XG5jb25zdCBQUk9HUkVTU19UQUcgPSBcIiBwcm9ncmVzczogXCI7XG5cbmV4cG9ydCB0eXBlIFB1cFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVjb3JkT3B0aW9ucz4ge1xuICBjYW5jZWxRdWVyeT86IEFib3J0UXVlcnk7XG4gIG9uUHJvZ3Jlc3M/OiBQdXBQcm9ncmVzc0NhbGxiYWNrO1xufVxuXG5mdW5jdGlvbiBydW5QdXBBcHAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFB1cE9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHJ1blB1cEFwcGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbc291cmNlXTtcbiAgaWYgKG9wdGlvbnMud2lkdGgpIGFyZ3MucHVzaChcIi0td2lkdGhcIiwgYCR7b3B0aW9ucy53aWR0aH1gKTtcbiAgaWYgKG9wdGlvbnMuaGVpZ2h0KSBhcmdzLnB1c2goXCItLWhlaWdodFwiLCBgJHtvcHRpb25zLmhlaWdodH1gKTtcbiAgaWYgKG9wdGlvbnMuZnBzKSBhcmdzLnB1c2goXCItLWZwc1wiLCBgJHtvcHRpb25zLmZwc31gKTtcbiAgaWYgKG9wdGlvbnMuZHVyYXRpb24pIGFyZ3MucHVzaChcIi0tZHVyYXRpb25cIiwgYCR7b3B0aW9ucy5kdXJhdGlvbn1gKTtcbiAgaWYgKG9wdGlvbnMub3V0RGlyKSBhcmdzLnB1c2goXCItLW91dC1kaXJcIiwgb3B0aW9ucy5vdXREaXIpO1xuICBpZiAob3B0aW9ucy53aXRoQWxwaGFDaGFubmVsKSBhcmdzLnB1c2goXCItLXdpdGgtYWxwaGEtY2hhbm5lbFwiKTtcbiAgaWYgKG9wdGlvbnMudXNlSW5uZXJQcm94eSkgYXJncy5wdXNoKFwiLS11c2UtaW5uZXItcHJveHlcIik7XG5cbiAgY29uc3QgdyA9IG9wdGlvbnMud2lkdGggPz8gREVGQVVMVF9XSURUSDtcbiAgY29uc3QgaCA9IG9wdGlvbnMuaGVpZ2h0ID8/IERFRkFVTFRfSEVJR0hUO1xuICBjb25zdCBoYW5kbGUgPSBydW5FbGVjdHJvbkFwcCh7IHdpZHRoOiB3LCBoZWlnaHQ6IGggfSwgcHVwQXBwUGF0aCwgYXJncyk7XG4gIGNvbnN0IGNvdW50ZXIgPSBuZXcgQ29uY3VycmVuY3lMaW1pdGVyKDEpO1xuICBoYW5kbGUucHJvY2Vzcy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgbGV0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGxldCBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZihQUk9HUkVTU19UQUcpO1xuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2Uuc2xpY2Uoc3RhcnQgKyBQUk9HUkVTU19UQUcubGVuZ3RoKTtcbiAgICBjb25zdCBlbmQgPSBtZXNzYWdlLmluZGV4T2YoXCIlXCIpO1xuICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb2dyZXNzU3RyID0gbWVzc2FnZS5zbGljZSgwLCBlbmQpO1xuICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VOdW1iZXIocHJvZ3Jlc3NTdHIpO1xuICAgIGNvdW50ZXIuc2NoZWR1bGUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgb3B0aW9ucy5vblByb2dyZXNzPy4ocHJvZ3Jlc3MpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHsgaGFuZGxlLCBjb3VudGVyIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFB1cE9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgbGluayA9IEFib3J0TGluay5zdGFydChvcHRpb25zLmNhbmNlbFF1ZXJ5KTtcbiAgY29uc3Qgb3V0RGlyID0gb3B0aW9ucy5vdXREaXIgPz8gXCJvdXRcIjtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCB7IGhhbmRsZSwgY291bnRlciB9ID0gcnVuUHVwQXBwKHNvdXJjZSwgeyAuLi5vcHRpb25zLCBvdXREaXIgfSk7XG5cbiAgYXdhaXQgbGluay53YWl0KGhhbmRsZSk7XG4gIGF3YWl0IGNvdW50ZXIuZW5kKCk7XG4gIGxvZ2dlci5pbmZvKFRBRywgYGNhcHR1cmUgY29zdCAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcblxuICBjb25zdCBtZXRhUGF0aCA9IGpvaW4ob3V0RGlyLCBcInJlY29yZC5qc29uXCIpO1xuICBjb25zdCBtZXRhID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShtZXRhUGF0aCwgXCJ1dGYtOFwiKSkgYXMgUmVjb3JkUmVzdWx0O1xuXG4gIGNvbnN0IHsgYmdyYVBhdGgsIHdyaXR0ZW4sIG9wdGlvbnM6IHJlY29yZE9wdGlvbnMgfSA9IG1ldGE7XG4gIGNvbnN0IHsgZnBzLCB3aWR0aCwgaGVpZ2h0LCB3aXRoQWxwaGFDaGFubmVsIH0gPSByZWNvcmRPcHRpb25zO1xuICBjb25zdCBzaXplOiBTaXplID0geyB3aWR0aCwgaGVpZ2h0IH07XG5cbiAgY29uc3Qgb3V0cHV0czogVmlkZW9GaWxlc1dpdGhDb3ZlciA9IHtcbiAgICBtcDQ6IHdpdGhBbHBoYUNoYW5uZWwgPyB1bmRlZmluZWQgOiBqb2luKG91dERpciwgXCJvdXRwdXQubXA0XCIpLFxuICAgIHdlYm06IHdpdGhBbHBoYUNoYW5uZWwgPyBqb2luKG91dERpciwgXCJvdXRwdXQud2VibVwiKSA6IHVuZGVmaW5lZCxcbiAgICBtb3Y6IHdpdGhBbHBoYUNoYW5uZWwgPyBqb2luKG91dERpciwgXCJvdXRwdXQubW92XCIpIDogdW5kZWZpbmVkLFxuICAgIGNvdmVyOiBqb2luKG91dERpciwgXCJjb3Zlci5wbmdcIiksXG4gIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgY29uc3Qgc3BlYzogVmlkZW9TcGVjID0geyBmcHMsIGZyYW1lczogd3JpdHRlbiwgc2l6ZSB9O1xuICAgIGNvbnN0IGhhbmRsZXM6IFByb2Nlc3NIYW5kbGVbXSA9IFtdO1xuICAgIGlmIChvdXRwdXRzLm1wNCkge1xuICAgICAgaGFuZGxlcy5wdXNoKGVuY29kZUJncmFGaWxlKGJncmFQYXRoLCBvdXRwdXRzLm1wNCwgc3BlYywgXCJtcDRcIikpO1xuICAgIH1cbiAgICBpZiAob3V0cHV0cy53ZWJtKSB7XG4gICAgICBoYW5kbGVzLnB1c2goZW5jb2RlQmdyYUZpbGUoYmdyYVBhdGgsIG91dHB1dHMud2VibSwgc3BlYywgXCJ3ZWJtXCIpKTtcbiAgICB9XG4gICAgaWYgKG91dHB1dHMubW92KSB7XG4gICAgICBoYW5kbGVzLnB1c2goZW5jb2RlQmdyYVRvTW92KGJncmFQYXRoLCBvdXRwdXRzLm1vdiwgc3BlYykpO1xuICAgIH1cbiAgICBhd2FpdCBsaW5rLndhaXQoLi4uaGFuZGxlcyk7XG5cbiAgICBjb25zdCBjb3ZlclNyYyA9IG91dHB1dHMubW92ID8/IG91dHB1dHMud2VibSA/PyBvdXRwdXRzLm1wNDtcbiAgICBpZiAoY292ZXJTcmMpIHtcbiAgICAgIGNvbnN0IGNvdmVyQ21kID0gY3JlYXRlQ292ZXJDb21tYW5kKGNvdmVyU3JjLCBvdXRwdXRzLmNvdmVyKTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IGV4ZWMoYCR7Y292ZXJDbWQuY29tbWFuZH0gJHtjb3ZlckNtZC5hcmdzLmpvaW4oXCIgXCIpfWApO1xuICAgICAgYXdhaXQgbGluay53YWl0KGhhbmRsZSk7XG4gICAgfVxuXG4gICAgbGluay5zdG9wKCk7XG4gICAgbG9nZ2VyLmluZm8oVEFHLCBgZW5jb2RpbmcgY29zdCAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MSl9bXNgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHJtKGJncmFQYXRoLCB7IGZvcmNlOiB0cnVlIH0pLFxuICAgICAgcm0obWV0YVBhdGgsIHsgZm9yY2U6IHRydWUgfSksXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm91dHB1dHMsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGZwcyxcbiAgICAgIGR1cmF0aW9uOiBNYXRoLmNlaWwod3JpdHRlbiAvIGZwcyksXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhd2FpdCBybShvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl19
package/dist/index.d.ts CHANGED
@@ -1,26 +1,6 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import z from 'zod';
3
- import { Plugin } from '@opencode-ai/plugin';
4
1
  import { ChildProcess, SpawnOptions } from 'child_process';
5
2
  import { Size } from 'electron';
6
-
7
- declare const PupMCPSchema: z.ZodObject<{
8
- source: z.ZodString;
9
- duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10
- width: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
11
- height: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
12
- fps: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
- withAlphaChannel: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
14
- outDir: z.ZodDefault<z.ZodOptional<z.ZodString>>;
15
- useInnerProxy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
- }, z.core.$strip>;
17
- declare const MCP_TOOL_NAME: string;
18
- declare const MCP_TOOL_TITLE = "Record Webpage";
19
- declare const MCP_TOOL_DESC = "Record a webpage to video";
20
- declare function mcpAddPup(server: McpServer): void;
21
- declare function startMCPServer(): Promise<void>;
22
-
23
- declare const PupOpenCodePlugin: Plugin;
3
+ import z from 'zod';
24
4
 
25
5
  declare const pupAppPath: string;
26
6
  declare const pupLogLevel: number;
@@ -157,4 +137,4 @@ declare function pup(source: string, options: PupOptions): Promise<{
157
137
  mov?: string;
158
138
  }>;
159
139
 
160
- export { ConcurrencyLimiter, DEFAULT_DURATION, DEFAULT_FPS, DEFAULT_HEIGHT, DEFAULT_OUT_DIR, DEFAULT_WIDTH, type EnvParser, Lazy, type LoggerLike, MCP_TOOL_DESC, MCP_TOOL_NAME, MCP_TOOL_TITLE, PUP_ARGS_ENV_KEY, type ProcessHandle, PupMCPSchema, PupOpenCodePlugin, type PupOptions, type PupProgressCallback, type RecordOptions, type RecordResult, RecordSchema, type RetryOptions, type VideoFiles, type VideoFilesWithCover, type VideoSpec, exec, logger, mcpAddPup, noerr, pargs, parseNumber, penv, periodical, pup, pupAppPath, pupFFmpegPath, pupLogLevel, pupUseInnerProxy, sleep, startMCPServer, useRetry };
140
+ export { ConcurrencyLimiter, DEFAULT_DURATION, DEFAULT_FPS, DEFAULT_HEIGHT, DEFAULT_OUT_DIR, DEFAULT_WIDTH, type EnvParser, Lazy, type LoggerLike, PUP_ARGS_ENV_KEY, type ProcessHandle, type PupOptions, type PupProgressCallback, type RecordOptions, type RecordResult, RecordSchema, type RetryOptions, type VideoFiles, type VideoFilesWithCover, type VideoSpec, exec, logger, noerr, pargs, parseNumber, penv, periodical, pup, pupAppPath, pupFFmpegPath, pupLogLevel, pupUseInnerProxy, sleep, useRetry };