10 lines
No EOL
39 KiB
JavaScript
10 lines
No EOL
39 KiB
JavaScript
import * as ___react___ from 'react';
|
|
import * as ___react_dom___ from 'react-dom';
|
|
|
|
function require(mod) {
|
|
if (mod === 'react') return ___react___;
|
|
if (mod === 'react-dom') return ___react_dom___;
|
|
throw new Error(`Unknown module ${mod}`);
|
|
}
|
|
var B=5e3,H=100,$=1,Q=2,Y=64,b="Search timed out after 5 seconds. This kind of search is expensive, and your table might be too large.",f=class extends Error{constructor(){super(b),this.name="FullTableSearchTimeoutError"}},h=/^[\da-f]{8}-[\da-f]{4}-[1-5][\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/i,A=/^[+-]?(?:\d+|\d*\.\d+)$/,C=/^(\d{4})$/,_=/^(\d{4})-(\d{2})$/,x=/^(\d{4})-(\d{2})-(\d{2})$/,I=/^(\d{4})-(\d{2})-(\d{2})(?:[T ]?([01]\d|2[0-3])(?::([0-5]\d)(?::([0-5]\d)(?:\.(\d{1,3}))?)?)?)(?:[Zz])?$/,U=/^([01]\d|2[0-3])(?::([0-5]\d)(?::([0-5]\d)(?:\.(\d{1,6}))?)?)?$/;function G(){return{activeController:null,latestRequestId:0}}function L(t){return(t?.trim().length??0)>0}async function z(t){let{executor:e,options:s,query:n,searchTerm:r,state:o}=t;if(!L(r))return await e.execute(n,s);let m=new AbortController,i=new AbortController;o.latestRequestId+=1;let u=o.latestRequestId,a=setTimeout(()=>{i.abort()},5e3);o.activeController?.abort(),o.activeController=m;let l=w([s.abortSignal,m.signal,i.signal]);try{let[c,d]=await e.execute(n,{abortSignal:l.signal});return c&&i.signal.aborted?[new f]:c?[c]:[null,d]}finally{clearTimeout(a),l.cleanup(),o.latestRequestId===u&&(o.activeController=null)}}function X(t){let e=t.searchTerm?.trim()??"";if(e.length===0)return{normalizedSearchTerm:e,predicates:[]};let s=Object.values(t.table.columns),n=[],r=M(e),o=D(e),m=q(e),i=F(e),u=k(e);if(e.length>=2){let l=`%${N(e)}%`,c=s.filter(d=>R(d)).slice(0,64);for(let d of c)n.push({column:d.name,kind:"text-like",pattern:l})}if(r!==void 0)for(let a of s)a.datatype.group!=="boolean"||a.datatype.isArray||n.push({column:a.name,kind:"boolean-equals",value:r});if(o!==null)for(let a of s)a.datatype.group!=="numeric"||a.datatype.isArray||n.push({column:a.name,kind:"numeric-equals",value:o});if(m!==null)for(let a of s)y(a)&&n.push({column:a.name,kind:"uuid-equals",value:m});if(i!==null)for(let a of s)a.datatype.group!=="datetime"||a.datatype.isArray||n.push({column:a.name,endExclusive:i.endExclusive,kind:"datetime-day-range",startInclusive:i.startInclusive});if(u!==null)for(let a of s)a.datatype.group!=="time"||a.datatype.isArray||n.push({column:a.name,kind:"time-equals",value:u});return{normalizedSearchTerm:e,predicates:n}}function K(t,e){let{dialect:s}=e;return n=>t.predicates.length===0?n.lit(!0):n.or(t.predicates.map(r=>{switch(r.kind){case"text-like":{if(s==="postgres")return n(n.cast(r.column,"text"),"ilike",r.pattern);let o=s==="mysql"?"char":"text";return n(n.fn("lower",[n.cast(r.column,o)]),"like",r.pattern.toLowerCase())}case"numeric-equals":return n(n.cast(r.column,g(s)),"=",n.cast(n.val(r.value),g(s)));case"boolean-equals":return n(r.column,"=",r.value);case"uuid-equals":return n(r.column,"=",r.value);case"datetime-day-range":return n.and([n(r.column,">=",r.startInclusive),n(r.column,"<",r.endExclusive)]);case"time-equals":return n(r.column,"=",r.value)}}))}function g(t){return t==="mysql"?"decimal":"numeric"}function N(t){return t.replaceAll("%","\\%").replaceAll("_","\\_")}function R(t){return t.datatype.isArray||v(t)?!1:t.datatype.group==="enum"?!0:t.datatype.group!=="string"?!1:!y(t)}function v(t){let e=t.datatype.name.toLowerCase();return e.includes("blob")||e.includes("bytea")||e.includes("binary")}function y(t){return t.datatype.isArray?!1:t.datatype.name.toLowerCase()==="uuid"}function M(t){let e=t.toLowerCase();if(["true","t","1","yes","y","on"].includes(e))return!0;if(["false","f","0","no","n","off"].includes(e))return!1}function D(t){return A.test(t)?t:null}function q(t){return h.test(t)?t:null}function F(t){let e=O(t);if(e)return e;let s=t.match(C);if(s){let l=Number.parseInt(s[1],10),c=T(l,1,1),d=T(l+1,1,1);return!c||!d?null:{endExclusive:d.toISOString(),startInclusive:c.toISOString()}}let n=t.match(_);if(n){let l=Number.parseInt(n[1],10),c=Number.parseInt(n[2],10),d=T(l,c,1),E=c===12?1:c+1,S=c===12?l+1:l,p=T(S,E,1);return!d||!p?null:{endExclusive:p.toISOString(),startInclusive:d.toISOString()}}let r=t.match(x);if(!r)return null;let o=Number.parseInt(r[1],10),m=Number.parseInt(r[2],10),i=Number.parseInt(r[3],10),u=T(o,m,i);if(!u)return null;let a=new Date(u);return a.setUTCDate(a.getUTCDate()+1),{endExclusive:a.toISOString(),startInclusive:u.toISOString()}}function O(t){let e=t.match(I);if(!e)return null;let s=Number.parseInt(e[1],10),n=Number.parseInt(e[2],10),r=Number.parseInt(e[3],10),o=Number.parseInt(e[4],10),m=Number.parseInt(e[5]??"00",10),i=Number.parseInt(e[6]??"00",10),u=e[7]?Number.parseInt(e[7].padEnd(3,"0"),10):0,a=P({day:r,hour:o,milliseconds:u,minute:m,month:n,second:i,year:s});if(!a)return null;let l=new Date(a);return e[7]!=null?l.setUTCMilliseconds(l.getUTCMilliseconds()+1):e[6]!=null?l.setUTCSeconds(l.getUTCSeconds()+1):e[5]!=null?l.setUTCMinutes(l.getUTCMinutes()+1):l.setUTCHours(l.getUTCHours()+1),{endExclusive:l.toISOString(),startInclusive:a.toISOString()}}function k(t){let e=t.match(U);if(!e)return null;let s=e[1],n=e[2]??"00",r=e[3]??"00",o=e[4];return o?`${s}:${n}:${r}.${o}`:`${s}:${n}:${r}`}function T(t,e,s){let n=new Date(Date.UTC(t,e-1,s));return Number.isNaN(n.getTime())||n.getUTCFullYear()!==t||n.getUTCMonth()!==e-1||n.getUTCDate()!==s?null:n}function P(t){let{day:e,hour:s,milliseconds:n,minute:r,month:o,second:m,year:i}=t,u=new Date(Date.UTC(i,o-1,e,s,r,m,n));return Number.isNaN(u.getTime())||u.getUTCFullYear()!==i||u.getUTCMonth()!==o-1||u.getUTCDate()!==e||u.getUTCHours()!==s||u.getUTCMinutes()!==r||u.getUTCSeconds()!==m||u.getUTCMilliseconds()!==n?null:u}function w(t){let e=new AbortController,s=[],n=r=>{e.signal.aborted||e.abort(r.reason)};for(let r of t){if(!r)continue;if(r.aborted){n(r);continue}let o=()=>n(r);r.addEventListener("abort",o),s.push({listener:o,signal:r})}return{cleanup(){for(let{listener:r,signal:o}of s)o.removeEventListener("abort",r)},signal:e.signal}}export{B as a,H as b,$ as c,Q as d,Y as e,b as f,f as g,G as h,L as i,z as j,X as k,K as l};
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9mdWxsLXRhYmxlLXNlYXJjaC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBFeHByZXNzaW9uLCBFeHByZXNzaW9uQnVpbGRlciwgU3FsQm9vbCB9IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHR5cGUge1xuICBBZGFwdGVyUXVlcnlPcHRpb25zLFxuICBBZGFwdGVyUmVxdWlyZW1lbnRzLFxuICBDb2x1bW4sXG4gIFRhYmxlLFxufSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeVJlc3VsdCB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuL3R5cGUtdXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IEZVTExfVEFCTEVfU0VBUkNIX1RJTUVPVVRfTVMgPSA1XzAwMDtcbmV4cG9ydCBjb25zdCBGVUxMX1RBQkxFX1NFQVJDSF9QT1NUR1JFU19MT0NLX1RJTUVPVVRfTVMgPSAxMDA7XG5leHBvcnQgY29uc3QgRlVMTF9UQUJMRV9TRUFSQ0hfTVlTUUxfTE9DS19XQUlUX1RJTUVPVVRfU0VDT05EUyA9IDE7XG5leHBvcnQgY29uc3QgRlVMTF9UQUJMRV9TRUFSQ0hfTUlOX1FVRVJZX0xFTkdUSCA9IDI7XG5leHBvcnQgY29uc3QgRlVMTF9UQUJMRV9TRUFSQ0hfTUFYX1RFWFRfQ09MVU1OUyA9IDY0O1xuZXhwb3J0IGNvbnN0IEZVTExfVEFCTEVfU0VBUkNIX1RJTUVPVVRfTUVTU0FHRSA9XG4gIFwiU2VhcmNoIHRpbWVkIG91dCBhZnRlciA1IHNlY29uZHMuIFRoaXMga2luZCBvZiBzZWFyY2ggaXMgZXhwZW5zaXZlLCBhbmQgeW91ciB0YWJsZSBtaWdodCBiZSB0b28gbGFyZ2UuXCI7XG5cbmV4cG9ydCBjbGFzcyBGdWxsVGFibGVTZWFyY2hUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEZVTExfVEFCTEVfU0VBUkNIX1RJTUVPVVRfTUVTU0FHRSk7XG4gICAgdGhpcy5uYW1lID0gXCJGdWxsVGFibGVTZWFyY2hUaW1lb3V0RXJyb3JcIjtcbiAgfVxufVxuXG5jb25zdCBVVUlEX1BBVFRFUk4gPVxuICAvXltcXGRhLWZdezh9LVtcXGRhLWZdezR9LVsxLTVdW1xcZGEtZl17M30tWzg5YWJdW1xcZGEtZl17M30tW1xcZGEtZl17MTJ9JC9pO1xuY29uc3QgTlVNRVJJQ19QQVRURVJOID0gL15bKy1dPyg/OlxcZCt8XFxkKlxcLlxcZCspJC87XG5jb25zdCBEQVRFX1lFQVJfUEFUVEVSTiA9IC9eKFxcZHs0fSkkLztcbmNvbnN0IERBVEVfWUVBUl9NT05USF9QQVRURVJOID0gL14oXFxkezR9KS0oXFxkezJ9KSQvO1xuY29uc3QgREFURV9ZRUFSX01PTlRIX0RBWV9QQVRURVJOID0gL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KSQvO1xuY29uc3QgREFURVRJTUVfUEFSVElBTF9QQVRURVJOID1cbiAgL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KSg/OltUIF0/KFswMV1cXGR8MlswLTNdKSg/OjooWzAtNV1cXGQpKD86OihbMC01XVxcZCkoPzpcXC4oXFxkezEsM30pKT8pPyk/KSg/Oltael0pPyQvO1xuY29uc3QgVElNRV9QQVRURVJOID1cbiAgL14oWzAxXVxcZHwyWzAtM10pKD86OihbMC01XVxcZCkoPzo6KFswLTVdXFxkKSg/OlxcLihcXGR7MSw2fSkpPyk/KT8kLztcblxuaW50ZXJmYWNlIERhdGV0aW1lRGF5UmFuZ2Uge1xuICBlbmRFeGNsdXNpdmU6IHN0cmluZztcbiAgc3RhcnRJbmNsdXNpdmU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRnVsbFRhYmxlU2VhcmNoRGlhbGVjdCA9IFwicG9zdGdyZXNcIiB8IFwibXlzcWxcIiB8IFwic3FsaXRlXCI7XG5cbmV4cG9ydCB0eXBlIEZ1bGxUYWJsZVNlYXJjaFByZWRpY2F0ZSA9XG4gIHwge1xuICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICBraW5kOiBcInRleHQtbGlrZVwiO1xuICAgICAgcGF0dGVybjogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBjb2x1bW46IHN0cmluZztcbiAgICAgIGtpbmQ6IFwibnVtZXJpYy1lcXVhbHNcIjtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIGNvbHVtbjogc3RyaW5nO1xuICAgICAga2luZDogXCJib29sZWFuLWVxdWFsc1wiO1xuICAgICAgdmFsdWU6IGJvb2xlYW47XG4gICAgfVxuICB8IHtcbiAgICAgIGNvbHVtbjogc3RyaW5nO1xuICAgICAga2luZDogXCJ1dWlkLWVxdWFsc1wiO1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICBraW5kOiBcImRhdGV0aW1lLWRheS1yYW5nZVwiO1xuICAgICAgZW5kRXhjbHVzaXZlOiBzdHJpbmc7XG4gICAgICBzdGFydEluY2x1c2l2ZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBjb2x1bW46IHN0cmluZztcbiAgICAgIGtpbmQ6IFwidGltZS1lcXVhbHNcIjtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBGdWxsVGFibGVTZWFyY2hQbGFuIHtcbiAgbm9ybWFsaXplZFNlYXJjaFRlcm06IHN0cmluZztcbiAgcHJlZGljYXRlczogRnVsbFRhYmxlU2VhcmNoUHJlZGljYXRlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbFRhYmxlU2VhcmNoRXhlY3V0aW9uU3RhdGUge1xuICBhY3RpdmVDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCBudWxsO1xuICBsYXRlc3RSZXF1ZXN0SWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZ1bGxUYWJsZVNlYXJjaEV4ZWN1dGlvblN0YXRlKCk6IEZ1bGxUYWJsZVNlYXJjaEV4ZWN1dGlvblN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVDb250cm9sbGVyOiBudWxsLFxuICAgIGxhdGVzdFJlcXVlc3RJZDogMCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVsbFRhYmxlU2VhcmNoUmVxdWVzdChcbiAgc2VhcmNoVGVybTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoc2VhcmNoVGVybT8udHJpbSgpLmxlbmd0aCA/PyAwKSA+IDA7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlUXVlcnlXaXRoRnVsbFRhYmxlU2VhcmNoR3VhcmRyYWlsczxUPihhcmdzOiB7XG4gIGV4ZWN1dG9yOiBBZGFwdGVyUmVxdWlyZW1lbnRzW1wiZXhlY3V0b3JcIl07XG4gIG9wdGlvbnM6IEFkYXB0ZXJRdWVyeU9wdGlvbnM7XG4gIHF1ZXJ5OiBRdWVyeTxUPjtcbiAgc2VhcmNoVGVybTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGF0ZTogRnVsbFRhYmxlU2VhcmNoRXhlY3V0aW9uU3RhdGU7XG59KTogUHJvbWlzZTxFaXRoZXI8RXJyb3IsIFF1ZXJ5UmVzdWx0PFF1ZXJ5PFQ+Pj4+IHtcbiAgY29uc3QgeyBleGVjdXRvciwgb3B0aW9ucywgcXVlcnksIHNlYXJjaFRlcm0sIHN0YXRlIH0gPSBhcmdzO1xuXG4gIGlmICghaXNGdWxsVGFibGVTZWFyY2hSZXF1ZXN0KHNlYXJjaFRlcm0pKSB7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3QgcmVxdWVzdENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBzdGF0ZS5sYXRlc3RSZXF1ZXN0SWQgKz0gMTtcbiAgY29uc3QgcmVxdWVzdElkID0gc3RhdGUubGF0ZXN0UmVxdWVzdElkO1xuICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0aW1lb3V0Q29udHJvbGxlci5hYm9ydCgpO1xuICB9LCBGVUxMX1RBQkxFX1NFQVJDSF9USU1FT1VUX01TKTtcblxuICBzdGF0ZS5hY3RpdmVDb250cm9sbGVyPy5hYm9ydCgpO1xuICBzdGF0ZS5hY3RpdmVDb250cm9sbGVyID0gcmVxdWVzdENvbnRyb2xsZXI7XG5cbiAgY29uc3QgbWVyZ2VkID0gbWVyZ2VBYm9ydFNpZ25hbHMoW1xuICAgIG9wdGlvbnMuYWJvcnRTaWduYWwsXG4gICAgcmVxdWVzdENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIHRpbWVvdXRDb250cm9sbGVyLnNpZ25hbCxcbiAgXSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCB7XG4gICAgICBhYm9ydFNpZ25hbDogbWVyZ2VkLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGlmIChlcnJvciAmJiB0aW1lb3V0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIFtuZXcgRnVsbFRhYmxlU2VhcmNoVGltZW91dEVycm9yKCldO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgcmV0dXJuIFtlcnJvcl07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtudWxsLCByZXN1bHRdO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIG1lcmdlZC5jbGVhbnVwKCk7XG5cbiAgICBpZiAoc3RhdGUubGF0ZXN0UmVxdWVzdElkID09PSByZXF1ZXN0SWQpIHtcbiAgICAgIHN0YXRlLmFjdGl2ZUNvbnRyb2xsZXIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGdWxsVGFibGVTZWFyY2hQbGFuKGFyZ3M6IHtcbiAgc2VhcmNoVGVybTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0YWJsZTogVGFibGU7XG59KTogRnVsbFRhYmxlU2VhcmNoUGxhbiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2hUZXJtID0gYXJncy5zZWFyY2hUZXJtPy50cmltKCkgPz8gXCJcIjtcblxuICBpZiAobm9ybWFsaXplZFNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vcm1hbGl6ZWRTZWFyY2hUZXJtLFxuICAgICAgcHJlZGljYXRlczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbnMgPSBPYmplY3QudmFsdWVzKGFyZ3MudGFibGUuY29sdW1ucyk7XG4gIGNvbnN0IHByZWRpY2F0ZXM6IEZ1bGxUYWJsZVNlYXJjaFByZWRpY2F0ZVtdID0gW107XG4gIGNvbnN0IHBhcnNlZEJvb2xlYW4gPSBwYXJzZUJvb2xlYW5UZXJtKG5vcm1hbGl6ZWRTZWFyY2hUZXJtKTtcbiAgY29uc3QgcGFyc2VkTnVtZXJpYyA9IHBhcnNlTnVtZXJpY1Rlcm0obm9ybWFsaXplZFNlYXJjaFRlcm0pO1xuICBjb25zdCBwYXJzZWRVdWlkID0gcGFyc2VVdWlkVGVybShub3JtYWxpemVkU2VhcmNoVGVybSk7XG4gIGNvbnN0IHBhcnNlZERheVJhbmdlID0gcGFyc2VEYXRlT25seVRlcm0obm9ybWFsaXplZFNlYXJjaFRlcm0pO1xuICBjb25zdCBwYXJzZWRUaW1lID0gcGFyc2VUaW1lVGVybShub3JtYWxpemVkU2VhcmNoVGVybSk7XG5cbiAgaWYgKG5vcm1hbGl6ZWRTZWFyY2hUZXJtLmxlbmd0aCA+PSBGVUxMX1RBQkxFX1NFQVJDSF9NSU5fUVVFUllfTEVOR1RIKSB7XG4gICAgY29uc3QgZXNjYXBlZFRlcm0gPSBlc2NhcGVMaWtlUGF0dGVybihub3JtYWxpemVkU2VhcmNoVGVybSk7XG4gICAgY29uc3QgcGF0dGVybiA9IGAlJHtlc2NhcGVkVGVybX0lYDtcbiAgICBjb25zdCB0ZXh0Q29sdW1ucyA9IGNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gaXNUZXh0U2VhcmNoQ29sdW1uKGNvbHVtbikpXG4gICAgICAuc2xpY2UoMCwgRlVMTF9UQUJMRV9TRUFSQ0hfTUFYX1RFWFRfQ09MVU1OUyk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0ZXh0Q29sdW1ucykge1xuICAgICAgcHJlZGljYXRlcy5wdXNoKHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW4ubmFtZSxcbiAgICAgICAga2luZDogXCJ0ZXh0LWxpa2VcIixcbiAgICAgICAgcGF0dGVybixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXJzZWRCb29sZWFuICE9PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sdW1uLmRhdGF0eXBlLmdyb3VwICE9PSBcImJvb2xlYW5cIiB8fCBjb2x1bW4uZGF0YXR5cGUuaXNBcnJheSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHJlZGljYXRlcy5wdXNoKHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW4ubmFtZSxcbiAgICAgICAga2luZDogXCJib29sZWFuLWVxdWFsc1wiLFxuICAgICAgICB2YWx1ZTogcGFyc2VkQm9vbGVhbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXJzZWROdW1lcmljICE9PSBudWxsKSB7XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgaWYgKGNvbHVtbi5kYXRhdHlwZS5ncm91cCAhPT0gXCJudW1lcmljXCIgfHwgY29sdW1uLmRhdGF0eXBlLmlzQXJyYXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHByZWRpY2F0ZXMucHVzaCh7XG4gICAgICAgIGNvbHVtbjogY29sdW1uLm5hbWUsXG4gICAgICAgIGtpbmQ6IFwibnVtZXJpYy1lcXVhbHNcIixcbiAgICAgICAgdmFsdWU6IHBhcnNlZE51bWVyaWMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VkVXVpZCAhPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmICghaXNVdWlkQ29sdW1uKGNvbHVtbikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHByZWRpY2F0ZXMucHVzaCh7XG4gICAgICAgIGNvbHVtbjogY29sdW1uLm5hbWUsXG4gICAgICAgIGtpbmQ6IFwidXVpZC1lcXVhbHNcIixcbiAgICAgICAgdmFsdWU6IHBhcnNlZFV1aWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VkRGF5UmFuZ2UgIT09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sdW1uLmRhdGF0eXBlLmdyb3VwICE9PSBcImRhdGV0aW1lXCIgfHwgY29sdW1uLmRhdGF0eXBlLmlzQXJyYXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHByZWRpY2F0ZXMucHVzaCh7XG4gICAgICAgIGNvbHVtbjogY29sdW1uLm5hbWUsXG4gICAgICAgIGVuZEV4Y2x1c2l2ZTogcGFyc2VkRGF5UmFuZ2UuZW5kRXhjbHVzaXZlLFxuICAgICAgICBraW5kOiBcImRhdGV0aW1lLWRheS1yYW5nZVwiLFxuICAgICAgICBzdGFydEluY2x1c2l2ZTogcGFyc2VkRGF5UmFuZ2Uuc3RhcnRJbmNsdXNpdmUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VkVGltZSAhPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmIChjb2x1bW4uZGF0YXR5cGUuZ3JvdXAgIT09IFwidGltZVwiIHx8IGNvbHVtbi5kYXRhdHlwZS5pc0FycmF5KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcmVkaWNhdGVzLnB1c2goe1xuICAgICAgICBjb2x1bW46IGNvbHVtbi5uYW1lLFxuICAgICAgICBraW5kOiBcInRpbWUtZXF1YWxzXCIsXG4gICAgICAgIHZhbHVlOiBwYXJzZWRUaW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub3JtYWxpemVkU2VhcmNoVGVybSxcbiAgICBwcmVkaWNhdGVzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbFRhYmxlU2VhcmNoRXhwcmVzc2lvbihcbiAgcGxhbjogRnVsbFRhYmxlU2VhcmNoUGxhbixcbiAgYXJnczoge1xuICAgIGRpYWxlY3Q6IEZ1bGxUYWJsZVNlYXJjaERpYWxlY3Q7XG4gIH0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pOiAoZWI6IEV4cHJlc3Npb25CdWlsZGVyPGFueSwgYW55PikgPT4gRXhwcmVzc2lvbjxTcWxCb29sPiB7XG4gIGNvbnN0IHsgZGlhbGVjdCB9ID0gYXJncztcblxuICByZXR1cm4gKGViKSA9PiB7XG4gICAgaWYgKHBsYW4ucHJlZGljYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBlYi5saXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGViLm9yKFxuICAgICAgcGxhbi5wcmVkaWNhdGVzLm1hcCgocHJlZGljYXRlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocHJlZGljYXRlLmtpbmQpIHtcbiAgICAgICAgICBjYXNlIFwidGV4dC1saWtlXCI6IHtcbiAgICAgICAgICAgIGlmIChkaWFsZWN0ID09PSBcInBvc3RncmVzXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGViKFxuICAgICAgICAgICAgICAgIGViLmNhc3QocHJlZGljYXRlLmNvbHVtbiwgXCJ0ZXh0XCIpLFxuICAgICAgICAgICAgICAgIFwiaWxpa2VcIixcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGUucGF0dGVybixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGV4dENhc3RUeXBlID0gZGlhbGVjdCA9PT0gXCJteXNxbFwiID8gXCJjaGFyXCIgOiBcInRleHRcIjtcbiAgICAgICAgICAgIHJldHVybiBlYihcbiAgICAgICAgICAgICAgZWIuZm4oXCJsb3dlclwiLCBbZWIuY2FzdChwcmVkaWNhdGUuY29sdW1uLCB0ZXh0Q2FzdFR5cGUpXSksXG4gICAgICAgICAgICAgIFwibGlrZVwiLFxuICAgICAgICAgICAgICBwcmVkaWNhdGUucGF0dGVybi50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIFwibnVtZXJpYy1lcXVhbHNcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGViKFxuICAgICAgICAgICAgICBlYi5jYXN0KHByZWRpY2F0ZS5jb2x1bW4sIGdldE51bWVyaWNDYXN0VHlwZShkaWFsZWN0KSksXG4gICAgICAgICAgICAgIFwiPVwiLFxuICAgICAgICAgICAgICBlYi5jYXN0KGViLnZhbChwcmVkaWNhdGUudmFsdWUpLCBnZXROdW1lcmljQ2FzdFR5cGUoZGlhbGVjdCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIFwiYm9vbGVhbi1lcXVhbHNcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGViKHByZWRpY2F0ZS5jb2x1bW4sIFwiPVwiLCBwcmVkaWNhdGUudmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgXCJ1dWlkLWVxdWFsc1wiOiB7XG4gICAgICAgICAgICByZXR1cm4gZWIocHJlZGljYXRlLmNvbHVtbiwgXCI9XCIsIHByZWRpY2F0ZS52YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSBcImRhdGV0aW1lLWRheS1yYW5nZVwiOiB7XG4gICAgICAgICAgICByZXR1cm4gZWIuYW5kKFtcbiAgICAgICAgICAgICAgZWIocHJlZGljYXRlLmNvbHVtbiwgXCI+PVwiLCBwcmVkaWNhdGUuc3RhcnRJbmNsdXNpdmUpLFxuICAgICAgICAgICAgICBlYihwcmVkaWNhdGUuY29sdW1uLCBcIjxcIiwgcHJlZGljYXRlLmVuZEV4Y2x1c2l2ZSksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIFwidGltZS1lcXVhbHNcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGViKHByZWRpY2F0ZS5jb2x1bW4sIFwiPVwiLCBwcmVkaWNhdGUudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TnVtZXJpY0Nhc3RUeXBlKFxuICBkaWFsZWN0OiBGdWxsVGFibGVTZWFyY2hEaWFsZWN0LFxuKTogXCJkZWNpbWFsXCIgfCBcIm51bWVyaWNcIiB7XG4gIGlmIChkaWFsZWN0ID09PSBcIm15c3FsXCIpIHtcbiAgICByZXR1cm4gXCJkZWNpbWFsXCI7XG4gIH1cblxuICByZXR1cm4gXCJudW1lcmljXCI7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUxpa2VQYXR0ZXJuKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZUFsbChcIiVcIiwgXCJcXFxcJVwiKS5yZXBsYWNlQWxsKFwiX1wiLCBcIlxcXFxfXCIpO1xufVxuXG5mdW5jdGlvbiBpc1RleHRTZWFyY2hDb2x1bW4oY29sdW1uOiBDb2x1bW4pOiBib29sZWFuIHtcbiAgaWYgKGNvbHVtbi5kYXRhdHlwZS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzQmluYXJ5TGlrZUNvbHVtbihjb2x1bW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNvbHVtbi5kYXRhdHlwZS5ncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjb2x1bW4uZGF0YXR5cGUuZ3JvdXAgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWlzVXVpZENvbHVtbihjb2x1bW4pO1xufVxuXG5mdW5jdGlvbiBpc0JpbmFyeUxpa2VDb2x1bW4oY29sdW1uOiBDb2x1bW4pOiBib29sZWFuIHtcbiAgY29uc3QgdHlwZU5hbWUgPSBjb2x1bW4uZGF0YXR5cGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiAoXG4gICAgdHlwZU5hbWUuaW5jbHVkZXMoXCJibG9iXCIpIHx8XG4gICAgdHlwZU5hbWUuaW5jbHVkZXMoXCJieXRlYVwiKSB8fFxuICAgIHR5cGVOYW1lLmluY2x1ZGVzKFwiYmluYXJ5XCIpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzVXVpZENvbHVtbihjb2x1bW46IENvbHVtbik6IGJvb2xlYW4ge1xuICBpZiAoY29sdW1uLmRhdGF0eXBlLmlzQXJyYXkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gY29sdW1uLmRhdGF0eXBlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ1dWlkXCI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbGVhblRlcm0odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICBpZiAoW1widHJ1ZVwiLCBcInRcIiwgXCIxXCIsIFwieWVzXCIsIFwieVwiLCBcIm9uXCJdLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoW1wiZmFsc2VcIiwgXCJmXCIsIFwiMFwiLCBcIm5vXCIsIFwiblwiLCBcIm9mZlwiXS5pbmNsdWRlcyhub3JtYWxpemVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTnVtZXJpY1Rlcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIU5VTUVSSUNfUEFUVEVSTi50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVV1aWRUZXJtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIFVVSURfUEFUVEVSTi50ZXN0KHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXRlT25seVRlcm0odmFsdWU6IHN0cmluZyk6IERhdGV0aW1lRGF5UmFuZ2UgfCBudWxsIHtcbiAgY29uc3QgZGF0ZVRpbWVSYW5nZSA9IHBhcnNlRGF0ZVRpbWVUZXJtKHZhbHVlKTtcblxuICBpZiAoZGF0ZVRpbWVSYW5nZSkge1xuICAgIHJldHVybiBkYXRlVGltZVJhbmdlO1xuICB9XG5cbiAgY29uc3QgeWVhck1hdGNoID0gdmFsdWUubWF0Y2goREFURV9ZRUFSX1BBVFRFUk4pO1xuXG4gIGlmICh5ZWFyTWF0Y2gpIHtcbiAgICBjb25zdCB5ZWFyID0gTnVtYmVyLnBhcnNlSW50KHllYXJNYXRjaFsxXSEsIDEwKTtcbiAgICBjb25zdCBzdGFydCA9IGNyZWF0ZVV0Y0RhdGUoeWVhciwgMSwgMSk7XG4gICAgY29uc3QgZW5kID0gY3JlYXRlVXRjRGF0ZSh5ZWFyICsgMSwgMSwgMSk7XG5cbiAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbmRFeGNsdXNpdmU6IGVuZC50b0lTT1N0cmluZygpLFxuICAgICAgc3RhcnRJbmNsdXNpdmU6IHN0YXJ0LnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHllYXJNb250aE1hdGNoID0gdmFsdWUubWF0Y2goREFURV9ZRUFSX01PTlRIX1BBVFRFUk4pO1xuXG4gIGlmICh5ZWFyTW9udGhNYXRjaCkge1xuICAgIGNvbnN0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoeWVhck1vbnRoTWF0Y2hbMV0hLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBOdW1iZXIucGFyc2VJbnQoeWVhck1vbnRoTWF0Y2hbMl0hLCAxMCk7XG4gICAgY29uc3Qgc3RhcnQgPSBjcmVhdGVVdGNEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICBjb25zdCBlbmRNb250aCA9IG1vbnRoID09PSAxMiA/IDEgOiBtb250aCArIDE7XG4gICAgY29uc3QgZW5kWWVhciA9IG1vbnRoID09PSAxMiA/IHllYXIgKyAxIDogeWVhcjtcbiAgICBjb25zdCBlbmQgPSBjcmVhdGVVdGNEYXRlKGVuZFllYXIsIGVuZE1vbnRoLCAxKTtcblxuICAgIGlmICghc3RhcnQgfHwgIWVuZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuZEV4Y2x1c2l2ZTogZW5kLnRvSVNPU3RyaW5nKCksXG4gICAgICBzdGFydEluY2x1c2l2ZTogc3RhcnQudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgeWVhck1vbnRoRGF5TWF0Y2ggPSB2YWx1ZS5tYXRjaChEQVRFX1lFQVJfTU9OVEhfREFZX1BBVFRFUk4pO1xuXG4gIGlmICgheWVhck1vbnRoRGF5TWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoeWVhck1vbnRoRGF5TWF0Y2hbMV0hLCAxMCk7XG4gIGNvbnN0IG1vbnRoID0gTnVtYmVyLnBhcnNlSW50KHllYXJNb250aERheU1hdGNoWzJdISwgMTApO1xuICBjb25zdCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoeWVhck1vbnRoRGF5TWF0Y2hbM10hLCAxMCk7XG4gIGNvbnN0IHN0YXJ0ID0gY3JlYXRlVXRjRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcblxuICBpZiAoIXN0YXJ0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbmQgPSBuZXcgRGF0ZShzdGFydCk7XG4gIGVuZC5zZXRVVENEYXRlKGVuZC5nZXRVVENEYXRlKCkgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIGVuZEV4Y2x1c2l2ZTogZW5kLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRJbmNsdXNpdmU6IHN0YXJ0LnRvSVNPU3RyaW5nKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZVRpbWVUZXJtKHZhbHVlOiBzdHJpbmcpOiBEYXRldGltZURheVJhbmdlIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goREFURVRJTUVfUEFSVElBTF9QQVRURVJOKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB5ZWFyID0gTnVtYmVyLnBhcnNlSW50KG1hdGNoWzFdISwgMTApO1xuICBjb25zdCBtb250aCA9IE51bWJlci5wYXJzZUludChtYXRjaFsyXSEsIDEwKTtcbiAgY29uc3QgZGF5ID0gTnVtYmVyLnBhcnNlSW50KG1hdGNoWzNdISwgMTApO1xuICBjb25zdCBob3VyID0gTnVtYmVyLnBhcnNlSW50KG1hdGNoWzRdISwgMTApO1xuICBjb25zdCBtaW51dGUgPSBOdW1iZXIucGFyc2VJbnQobWF0Y2hbNV0gPz8gXCIwMFwiLCAxMCk7XG4gIGNvbnN0IHNlY29uZCA9IE51bWJlci5wYXJzZUludChtYXRjaFs2XSA/PyBcIjAwXCIsIDEwKTtcbiAgY29uc3QgbWlsbGlzZWNvbmRzID0gbWF0Y2hbN11cbiAgICA/IE51bWJlci5wYXJzZUludChtYXRjaFs3XS5wYWRFbmQoMywgXCIwXCIpLCAxMClcbiAgICA6IDA7XG5cbiAgY29uc3Qgc3RhcnQgPSBjcmVhdGVVdGNEYXRlVGltZSh7XG4gICAgZGF5LFxuICAgIGhvdXIsXG4gICAgbWlsbGlzZWNvbmRzLFxuICAgIG1pbnV0ZSxcbiAgICBtb250aCxcbiAgICBzZWNvbmQsXG4gICAgeWVhcixcbiAgfSk7XG5cbiAgaWYgKCFzdGFydCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZW5kID0gbmV3IERhdGUoc3RhcnQpO1xuXG4gIGlmIChtYXRjaFs3XSAhPSBudWxsKSB7XG4gICAgZW5kLnNldFVUQ01pbGxpc2Vjb25kcyhlbmQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyAxKTtcbiAgfSBlbHNlIGlmIChtYXRjaFs2XSAhPSBudWxsKSB7XG4gICAgZW5kLnNldFVUQ1NlY29uZHMoZW5kLmdldFVUQ1NlY29uZHMoKSArIDEpO1xuICB9IGVsc2UgaWYgKG1hdGNoWzVdICE9IG51bGwpIHtcbiAgICBlbmQuc2V0VVRDTWludXRlcyhlbmQuZ2V0VVRDTWludXRlcygpICsgMSk7XG4gIH0gZWxzZSB7XG4gICAgZW5kLnNldFVUQ0hvdXJzKGVuZC5nZXRVVENIb3VycygpICsgMSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuZEV4Y2x1c2l2ZTogZW5kLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRJbmNsdXNpdmU6IHN0YXJ0LnRvSVNPU3RyaW5nKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZVRlcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFRJTUVfUEFUVEVSTik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaG91ciA9IG1hdGNoWzFdITtcbiAgY29uc3QgbWludXRlID0gbWF0Y2hbMl0gPz8gXCIwMFwiO1xuICBjb25zdCBzZWNvbmQgPSBtYXRjaFszXSA/PyBcIjAwXCI7XG4gIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG1hdGNoWzRdO1xuXG4gIGlmICghbWlsbGlzZWNvbmRzKSB7XG4gICAgcmV0dXJuIGAke2hvdXJ9OiR7bWludXRlfToke3NlY29uZH1gO1xuICB9XG5cbiAgcmV0dXJuIGAke2hvdXJ9OiR7bWludXRlfToke3NlY29uZH0uJHttaWxsaXNlY29uZHN9YDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVXRjRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogRGF0ZSB8IG51bGwge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTtcblxuICBpZiAoXG4gICAgTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSB8fFxuICAgIGRhdGUuZ2V0VVRDRnVsbFllYXIoKSAhPT0geWVhciB8fFxuICAgIGRhdGUuZ2V0VVRDTW9udGgoKSAhPT0gbW9udGggLSAxIHx8XG4gICAgZGF0ZS5nZXRVVENEYXRlKCkgIT09IGRheVxuICApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVVdGNEYXRlVGltZShhcmdzOiB7XG4gIGRheTogbnVtYmVyO1xuICBob3VyOiBudW1iZXI7XG4gIG1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBtaW51dGU6IG51bWJlcjtcbiAgbW9udGg6IG51bWJlcjtcbiAgc2Vjb25kOiBudW1iZXI7XG4gIHllYXI6IG51bWJlcjtcbn0pOiBEYXRlIHwgbnVsbCB7XG4gIGNvbnN0IHsgZGF5LCBob3VyLCBtaWxsaXNlY29uZHMsIG1pbnV0ZSwgbW9udGgsIHNlY29uZCwgeWVhciB9ID0gYXJncztcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKFxuICAgIERhdGUuVVRDKHllYXIsIG1vbnRoIC0gMSwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRzKSxcbiAgKTtcblxuICBpZiAoXG4gICAgTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSB8fFxuICAgIGRhdGUuZ2V0VVRDRnVsbFllYXIoKSAhPT0geWVhciB8fFxuICAgIGRhdGUuZ2V0VVRDTW9udGgoKSAhPT0gbW9udGggLSAxIHx8XG4gICAgZGF0ZS5nZXRVVENEYXRlKCkgIT09IGRheSB8fFxuICAgIGRhdGUuZ2V0VVRDSG91cnMoKSAhPT0gaG91ciB8fFxuICAgIGRhdGUuZ2V0VVRDTWludXRlcygpICE9PSBtaW51dGUgfHxcbiAgICBkYXRlLmdldFVUQ1NlY29uZHMoKSAhPT0gc2Vjb25kIHx8XG4gICAgZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKSAhPT0gbWlsbGlzZWNvbmRzXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQWJvcnRTaWduYWxzKHNpZ25hbHM6IEFycmF5PEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkPik6IHtcbiAgY2xlYW51cDogKCkgPT4gdm9pZDtcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbn0ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBsaXN0ZW5lcnM6IEFycmF5PHsgbGlzdGVuZXI6ICgpID0+IHZvaWQ7IHNpZ25hbDogQWJvcnRTaWduYWwgfT4gPSBbXTtcblxuICBjb25zdCBvbkFib3J0ID0gKHNpZ25hbDogQWJvcnRTaWduYWwpID0+IHtcbiAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnRyb2xsZXIuYWJvcnQoc2lnbmFsLnJlYXNvbik7XG4gIH07XG5cbiAgZm9yIChjb25zdCBzaWduYWwgb2Ygc2lnbmFscykge1xuICAgIGlmICghc2lnbmFsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIG9uQWJvcnQoc2lnbmFsKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RlbmVyID0gKCkgPT4gb25BYm9ydChzaWduYWwpO1xuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgbGlzdGVuZXIpO1xuICAgIGxpc3RlbmVycy5wdXNoKHsgbGlzdGVuZXIsIHNpZ25hbCB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2xlYW51cCgpIHtcbiAgICAgIGZvciAoY29uc3QgeyBsaXN0ZW5lciwgc2lnbmFsIH0gb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgbGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBV08sSUFBTUEsRUFBK0IsSUFDL0JDLEVBQTZDLElBQzdDQyxFQUFvRCxFQUNwREMsRUFBcUMsRUFDckNDLEVBQXFDLEdBQ3JDQyxFQUNYLHlHQUVXQyxFQUFOLGNBQTBDLEtBQU0sQ0FDckQsYUFBYyxDQUNaLE1BQU1ELENBQWlDLEVBQ3ZDLEtBQUssS0FBTyw2QkFDZCxDQUNGLEVBRU1FLEVBQ0osd0VBQ0lDLEVBQWtCLDBCQUNsQkMsRUFBb0IsWUFDcEJDLEVBQTBCLG9CQUMxQkMsRUFBOEIsNEJBQzlCQyxFQUNKLDJHQUNJQyxFQUNKLGtFQW9ESyxTQUFTQyxHQUFxRSxDQUNuRixNQUFPLENBQ0wsaUJBQWtCLEtBQ2xCLGdCQUFpQixDQUNuQixDQUNGLENBRU8sU0FBU0MsRUFDZEMsRUFDUyxDQUNULE9BQVFBLEdBQVksS0FBSyxFQUFFLFFBQVUsR0FBSyxDQUM1QyxDQUVBLGVBQXNCQyxFQUE2Q0MsRUFNakIsQ0FDaEQsR0FBTSxDQUFFLFNBQUFDLEVBQVUsUUFBQUMsRUFBUyxNQUFBQyxFQUFPLFdBQUFMLEVBQVksTUFBQU0sQ0FBTSxFQUFJSixFQUV4RCxHQUFJLENBQUNILEVBQXlCQyxDQUFVLEVBQ3RDLE9BQU8sTUFBTUcsRUFBUyxRQUFRRSxFQUFPRCxDQUFPLEVBRzlDLElBQU1HLEVBQW9CLElBQUksZ0JBQ3hCQyxFQUFvQixJQUFJLGdCQUM5QkYsRUFBTSxpQkFBbUIsRUFDekIsSUFBTUcsRUFBWUgsRUFBTSxnQkFDbEJJLEVBQVksV0FBVyxJQUFNLENBQ2pDRixFQUFrQixNQUFNLENBQzFCLEVBQUcsR0FBNEIsRUFF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QUFZLElBQU1MLEdBQ3ZCSyxFQUFLLGNBQWMsSUFBTUosR0FDekJJLEVBQUssY0FBYyxJQUFNSCxHQUN6QkcsRUFBSyxtQkFBbUIsSUFBTUYsRUFFdkIsS0FHRkUsQ0FDVCxDQUVBLFNBQVNyRCxFQUFrQnNELEVBR3pCLENBQ0EsSUFBTUMsRUFBYSxJQUFJLGdCQUNqQkMsRUFBa0UsQ0FBQyxFQUVuRUMsRUFBV0MsR0FBd0IsQ0FDbkNILEVBQVcsT0FBTyxTQUl0QkEsRUFBVyxNQUFNRyxFQUFPLE1BQU0sQ0FDaEMsRUFFQSxRQUFXQSxLQUFVSixFQUFTLENBQzVCLEdBQUksQ0FBQ0ksRUFDSCxTQUdGLEdBQUlBLEVBQU8sUUFBUyxDQUNsQkQsRUFBUUMsQ0FBTSxFQUNkLFFBQ0YsQ0FFQSxJQUFNQyxFQUFXLElBQU1GLEVBQVFDLENBQU0sRUFDckNBLEVBQU8saUJBQWlCLFFBQVNDLENBQVEsRUFDekNILEVBQVUsS0FBSyxDQUFFLFNBQUFHLEVBQVUsT0FBQUQsQ0FBTyxDQUFDLENBQ3JDLENBRUEsTUFBTyxDQUNMLFNBQVUsQ0FDUixPQUFXLENBQUUsU0FBQUMsRUFBVSxPQUFBRCxDQUFPLElBQUtGLEVBQ2pDRSxFQUFPLG9CQUFvQixRQUFTQyxDQUFRLENBRWhELEVBQ0EsT0FBUUosRUFBVyxNQUNyQixDQUNGIiwKICAibmFtZXMiOiBbIkZVTExfVEFCTEVfU0VBUkNIX1RJTUVPVVRfTVMiLCAiRlVMTF9UQUJMRV9TRUFSQ0hfUE9TVEdSRVNfTE9DS19USU1FT1VUX01TIiwgIkZVTExfVEFCTEVfU0VBUkNIX01ZU1FMX0xPQ0tfV0FJVF9USU1FT1VUX1NFQ09ORFMiLCAiRlVMTF9UQUJMRV9TRUFSQ0hfTUlOX1FVRVJZX0xFTkdUSCIsICJGVUxMX1RBQkxFX1NFQVJDSF9NQVhfVEVYVF9DT0xVTU5TIiwgIkZVTExfVEFCTEVfU0VBUkNIX1RJTUVPVVRfTUVTU0FHRSIsICJGdWxsVGFibGVTZWFyY2hUaW1lb3V0RXJyb3IiLCAiVVVJRF9QQVRURVJOIiwgIk5VTUVSSUNfUEFUVEVSTiIsICJEQVRFX1lFQVJfUEFUVEVSTiIsICJEQVRFX1lFQVJfTU9OVEhfUEFUVEVSTiIsICJEQVRFX1lFQVJfTU9OVEhfREFZX1BBVFRFUk4iLCAiREFURVRJTUVfUEFSVElBTF9QQVRURVJOIiwgIlRJTUVfUEFUVEVSTiIsICJjcmVhdGVGdWxsVGFibGVTZWFyY2hFeGVjdXRpb25TdGF0ZSIsICJpc0Z1bGxUYWJsZVNlYXJjaFJlcXVlc3QiLCAic2VhcmNoVGVybSIsICJleGVjdXRlUXVlcnlXaXRoRnVsbFRhYmxlU2VhcmNoR3VhcmRyYWlscyIsICJhcmdzIiwgImV4ZWN1dG9yIiwgIm9wdGlvbnMiLCAicXVlcnkiLCAic3RhdGUiLCAicmVxdWVzdENvbnRyb2xsZXIiLCAidGltZW91dENvbnRyb2xsZXIiLCAicmVxdWVzdElkIiwgInRpbWVvdXRJZCIsICJtZXJnZWQiLCAibWVyZ2VBYm9ydFNpZ25hbHMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImJ1aWxkRnVsbFRhYmxlU2VhcmNoUGxhbiIsICJub3JtYWxpemVkU2VhcmNoVGVybSIsICJjb2x1bW5zIiwgInByZWRpY2F0ZXMiLCAicGFyc2VkQm9vbGVhbiIsICJwYXJzZUJvb2xlYW5UZXJtIiwgInBhcnNlZE51bWVyaWMiLCAicGFyc2VOdW1lcmljVGVybSIsICJwYXJzZWRVdWlkIiwgInBhcnNlVXVpZFRlcm0iLCAicGFyc2VkRGF5UmFuZ2UiLCAicGFyc2VEYXRlT25seVRlcm0iLCAicGFyc2VkVGltZSIsICJwYXJzZVRpbWVUZXJtIiwgInBhdHRlcm4iLCAiZXNjYXBlTGlrZVBhdHRlcm4iLCAidGV4dENvbHVtbnMiLCAiY29sdW1uIiwgImlzVGV4dFNlYXJjaENvbHVtbiIsICJpc1V1aWRDb2x1bW4iLCAiZ2V0RnVsbFRhYmxlU2VhcmNoRXhwcmVzc2lvbiIsICJwbGFuIiwgImRpYWxlY3QiLCAiZWIiLCAicHJlZGljYXRlIiwgInRleHRDYXN0VHlwZSIsICJnZXROdW1lcmljQ2FzdFR5cGUiLCAidmFsdWUiLCAiaXNCaW5hcnlMaWtlQ29sdW1uIiwgInR5cGVOYW1lIiwgIm5vcm1hbGl6ZWQiLCAiZGF0ZVRpbWVSYW5nZSIsICJwYXJzZURhdGVUaW1lVGVybSIsICJ5ZWFyTWF0Y2giLCAieWVhciIsICJzdGFydCIsICJjcmVhdGVVdGNEYXRlIiwgImVuZCIsICJ5ZWFyTW9udGhNYXRjaCIsICJtb250aCIsICJlbmRNb250aCIsICJlbmRZZWFyIiwgInllYXJNb250aERheU1hdGNoIiwgImRheSIsICJtYXRjaCIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWNvbmRzIiwgImNyZWF0ZVV0Y0RhdGVUaW1lIiwgImRhdGUiLCAic2lnbmFscyIsICJjb250cm9sbGVyIiwgImxpc3RlbmVycyIsICJvbkFib3J0IiwgInNpZ25hbCIsICJsaXN0ZW5lciJdCn0K
|