@prisma/studio-core 0.0.0-dev.202511161623 → 0.0.0-dev.202511162334

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ import * as ___react___ from 'react';
2
+ import * as ___react_dom___ from 'react-dom';
3
+
4
+ function require(mod) {
5
+ if (mod === 'react') return ___react___;
6
+ if (mod === 'react-dom') return ___react_dom___;
7
+ throw new Error(`Unknown module ${mod}`);
8
+ }
9
+ import{a as u}from"./chunk-OTK4ZF2W.js";import{h as E,i as g,l as q,m as I,n as S,p as _,q as Q,s as T,t as B}from"./chunk-WHLVNWIR.js";import{e as i}from"./chunk-GDQBQ7MK.js";i();i();i();var z={bool:{group:"boolean"},boolean:{group:"boolean"},bytea:{group:"string"},char:{group:"string"},citext:{group:"string"},date:{group:"datetime"},interval:{group:"string"},name:{group:"string"},varchar:{group:"string"},text:{group:"string"},time:{group:"time"},timestamp:{group:"datetime"},timestamptz:{group:"datetime"},"timestamp without time zone":{group:"datetime"},"timestamp with time zone":{group:"datetime"},timetz:{group:"time"},"time without time zone":{group:"time"},"time with time zone":{group:"datetime"},uuid:{group:"raw"},int2:{group:"numeric"},int4:{group:"numeric"},int8:{group:"numeric"},smallint:{group:"numeric"},integer:{group:"numeric"},bigint:{group:"numeric"},decimal:{group:"numeric"},numeric:{group:"numeric"},real:{group:"numeric"},float4:{group:"numeric"},float8:{group:"numeric"},"double precision":{group:"numeric"},json:{group:"json"},jsonb:{group:"json"}};i();i();function y(r){return S({...r,Adapter:I,QueryCompiler:q})}function j(r,s){let{table:{name:n,schema:t,columns:a},rows:e}=r,o=y(s);return _(o.withSchema(t).insertInto(n).values(T("insert",e,a)).returning(Object.keys(a)).returning(w().as("__ps_inserted_at__")))}function O(r,s){let{pageIndex:n,pageSize:t,sortOrder:a,table:{name:e,schema:o,columns:l},filter:c={kind:"FilterGroup",after:"and",filters:[]}}=r,m=y(s),d=B(c.filters,l),h=m.withSchema(o).selectFrom(e).where(d).select(p=>p.cast(p.fn.coalesce(p.fn.countAll(),g.lit(0)),"text").as("value"));return _(m.with("count",()=>h).withSchema(o).selectFrom([e,"count"]).where(d).select(g.ref("count.value").as("__ps_count__")).select(Object.keys(l)).$call(p=>a.reduce((b,k)=>b.orderBy(k.column,k.direction),p)).limit(t).offset(g.lit(BigInt(n)*BigInt(t))))}function oe(){return[{created_at:new Date("2025-01-26T21:56:12.345Z"),deleted_at:null,id:1,name:"John Doe",__ps_count__:"2",role:"admin",name_role:"Jonn Doe - admin"},{created_at:new Date("2025-01-26T20:56:12.345Z"),deleted_at:null,id:2,name:"Jane Doe",__ps_count__:"2",role:"poweruser",name_role:"Jane Doe - poweruser"}]}function P(r,s){let{changes:n,row:t,table:{columns:a,name:e,schema:o}}=r,l=y(s);return _(l.withSchema(o).updateTable(e).set(T("update",n,a)).$call(Q([t],a)).returning(Object.keys(a)).returning(w().as("__ps_updated_at__")))}function F(r,s){let{rows:n,table:{columns:t,name:a,schema:e}}=r,o=y(s);return _(o.withSchema(e).deleteFrom(a).$call(Q(n,t)).returning(Object.keys(t)).returning(w().as("__ps_deleted_at__")))}function w(){let r=E();return r.cast(r.fn("floor",[r(r.fn("extract",[g`epoch from now()`]),"*",1e3)]),"text")}i();i();function C(r){return g`(select coalesce(json_agg(agg), '[]') from ${r} as agg)`}var U="r",G="v",M=[U,G];function J(r){return _(y(r).selectFrom("pg_catalog.pg_class as cls").innerJoin("pg_catalog.pg_namespace as ns","cls.relnamespace","ns.oid").$call(W).where("cls.relkind","in",M).select(s=>["ns.nspname as schema","cls.relname as name",C(s.selectFrom("pg_catalog.pg_attribute as att").innerJoin("pg_catalog.pg_type as typ","typ.oid","att.atttypid").innerJoin("pg_catalog.pg_namespace as tns","tns.oid","typ.typnamespace").leftJoin("pg_catalog.pg_constraint as pk_con",n=>n.on("pk_con.contype","=","p").onRef("pk_con.conrelid","=","cls.oid").on(t=>t("att.attnum","=",t.fn.any("pk_con.conkey")))).leftJoin("pg_catalog.pg_constraint as fk_con",n=>n.on("fk_con.contype","=","f").onRef("fk_con.conrelid","=","cls.oid").on(t=>t("att.attnum","=",t.fn.any("fk_con.conkey")))).leftJoin("pg_catalog.pg_class as fk_cls","fk_cls.oid","fk_con.confrelid").leftJoin("pg_catalog.pg_namespace as fk_ns","fk_ns.oid","fk_cls.relnamespace").leftJoin("pg_catalog.pg_attribute as fk_att",n=>n.onRef("fk_att.attrelid","=","fk_cls.oid").on(t=>t("fk_att.attnum","=",t.fn.any("fk_con.confkey")))).whereRef("att.attrelid","=","cls.oid").where("att.attnum",">=",0).where("att.attisdropped","!=",!0).select(["att.attname as name","typ.typname as datatype","tns.nspname as datatype_schema","fk_ns.nspname as foreign_key_schema","fk_cls.relname as foreign_key_table","fk_att.attname as foreign_key_column"]).select(n=>[n("pk_con.conkey","is not",null).$castTo().as("pk"),n("att.attgenerated","!=","").$castTo().as("computed"),n("att.attnotnull","!=",!0).$castTo().as("nullable"),n.fn.coalesce(n.selectFrom("pg_catalog.pg_enum as enm").whereRef("enm.enumtypid","=","typ.oid").select(t=>t.fn.jsonAgg(t.ref("enm.enumlabel")).as("o")),g`'[]'`).as("options")])).as("columns")]))}function K(){return[{schema:"zoo",name:"animals",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]},{schema:"public",name:"users",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"deleted_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"role",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name_role",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!0,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]},{schema:"public",name:"composite_pk",columns:[{name:"id",datatype:"uuid",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null}]}]}function N(){let r=y();return _(r.selectNoFrom(r.fn("current_setting",[g.lit("timezone")]).as("timezone")))}function $(){return[{timezone:"UTC"}]}function W(r){return r.where("ns.nspname","!~","^pg_").where("ns.nspname","!=","information_schema")}function Ae(r){let{executor:s,...n}=r;return{defaultSchema:"public",async introspect(t){try{let a=J(n),e=N(),[[o,l],[c,m]]=await Promise.all([s.execute(a,t),s.execute(e,t)]);if(o)return u({error:o,query:a});if(c)return u({error:c,query:e});let d=m[0]?.timezone;return d?[null,v({query:a,tables:l,timezone:d})]:u({error:new Error("Timezone not found"),query:e})}catch(a){return u({error:a})}},async query(t,a){try{let e=O(t,n),[o,l]=await s.execute(e,a);return o?u({error:o,query:e}):[null,{filteredRowCount:l[0]?.__ps_count__||"0",rows:l,query:e}]}catch(e){return u({error:e})}},async insert(t,a){try{let e=j(t,n),[o,l]=await s.execute(e,a);return o?u({error:o,query:e}):[null,{rows:l,query:e}]}catch(e){return u({error:e})}},async update(t,a){try{let e=P(t,n),[o,l]=await s.execute(e,a);if(o)return u({error:o,query:e});let[c]=l;return c?[null,{row:c,query:e}]:u({error:new Error("Update failed"),query:e})}catch(e){return u({error:e})}},async delete(t,a){try{let e=F(t,n),[o]=await s.execute(e,a);return o?u({error:o,query:e}):[null,{...t,query:e}]}catch(e){return u({error:e})}}}}function v(r){let{tables:s,timezone:n,query:t}=r;return s.reduce((a,e)=>{let{schemas:o}=a,{columns:l,name:c,schema:m}=e,d=l.reduce((h,p)=>{let{datatype:b,datatype_schema:k,name:x,options:D,nullable:L}=p,A=b.startsWith("_"),R=A?b.slice(1):b;return{...h,[x]:{datatype:{...z[R]||{group:D.length>0?"enum":"raw"},isArray:A,isNative:k==="pg_catalog",name:A?`${R}[]`:R,options:D,schema:k},isComputed:p.computed,isInPrimaryKey:p.pk,name:x,nullable:L,schema:m,table:c,fkSchema:p.foreign_key_schema,fkTable:p.foreign_key_table,fkColumn:p.foreign_key_column}}},{});return o[m]===void 0&&(o[m]={name:m,tables:{}}),o[m].tables[c]={columns:d,name:c,schema:m},a},{schemas:{public:{tables:{},name:"public"}},timezone:n,filterOperators:Y,query:t})}var Y=["=","!=",">",">=","<","<=","is","is not","like","not like","ilike","not ilike"];function Re(){let r=K(),[{timezone:s}]=$();return v({tables:r,timezone:s,query:{parameters:[],sql:"<mocked>"}})}export{j as a,O as b,oe as c,P as d,F as e,J as f,K as g,N as h,$ as i,Ae as j,Re as k};
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2luZGV4LnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9hZGFwdGVyLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9kYXRhdHlwZS50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvZG1sLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9idWlsZGVyLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9pbnRyb3NwZWN0aW9uLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC44L25vZGVfbW9kdWxlcy9reXNlbHkvZGlzdC9lc20vaGVscGVycy9wb3N0Z3Jlcy5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZG1sXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5XCI7XG4iLCAiaW1wb3J0IHtcbiAgdHlwZSBBZGFwdGVyLFxuICB0eXBlIEFkYXB0ZXJEZWxldGVSZXN1bHQsXG4gIHR5cGUgQWRhcHRlckVycm9yLFxuICB0eXBlIEFkYXB0ZXJJbnNlcnRSZXN1bHQsXG4gIHR5cGUgQWRhcHRlckludHJvc3BlY3RSZXN1bHQsXG4gIHR5cGUgQWRhcHRlclF1ZXJ5UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJSZXF1aXJlbWVudHMsXG4gIHR5cGUgQWRhcHRlclVwZGF0ZVJlc3VsdCxcbiAgdHlwZSBDb2x1bW4sXG4gIGNyZWF0ZUFkYXB0ZXJFcnJvcixcbiAgdHlwZSBGaWx0ZXJPcGVyYXRvcixcbiAgdHlwZSBUYWJsZSxcbn0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEEgfSBmcm9tIFwiLi9kYXRhdHlwZVwiO1xuaW1wb3J0IHsgZ2V0RGVsZXRlUXVlcnksIGdldEluc2VydFF1ZXJ5LCBnZXRTZWxlY3RRdWVyeSwgZ2V0VXBkYXRlUXVlcnkgfSBmcm9tIFwiLi9kbWxcIjtcbmltcG9ydCB7IGdldFRhYmxlc1F1ZXJ5LCBnZXRUaW1lem9uZVF1ZXJ5LCBtb2NrVGFibGVzUXVlcnksIG1vY2tUaW1lem9uZVF1ZXJ5IH0gZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuXG5leHBvcnQgdHlwZSBQb3N0Z3Jlc0FkYXB0ZXJSZXF1aXJlbWVudHMgPSBBZGFwdGVyUmVxdWlyZW1lbnRzO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9zdGdyZXNBZGFwdGVyKHJlcXVpcmVtZW50czogUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzKTogQWRhcHRlciB7XG4gIGNvbnN0IHsgZXhlY3V0b3IsIC4uLm90aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0U2NoZW1hOiBcInB1YmxpY1wiLFxuXG4gICAgYXN5bmMgaW50cm9zcGVjdChvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVySW50cm9zcGVjdFJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRhYmxlc1F1ZXJ5ID0gZ2V0VGFibGVzUXVlcnkob3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICBjb25zdCB0aW1lem9uZVF1ZXJ5ID0gZ2V0VGltZXpvbmVRdWVyeSgpO1xuXG4gICAgICAgIGNvbnN0IFtbdGFibGVzRXJyb3IsIHRhYmxlc10sIFt0aW1lem9uZUVycm9yLCB0aW1lem9uZXNdXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICBleGVjdXRvci5leGVjdXRlKHRhYmxlc1F1ZXJ5LCBvcHRpb25zKSxcbiAgICAgICAgICBleGVjdXRvci5leGVjdXRlKHRpbWV6b25lUXVlcnksIG9wdGlvbnMpLFxuICAgICAgICBdKTtcblxuICAgICAgICBpZiAodGFibGVzRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IHRhYmxlc0Vycm9yLCBxdWVyeTogdGFibGVzUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGltZXpvbmVFcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogdGltZXpvbmVFcnJvciwgcXVlcnk6IHRpbWV6b25lUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lem9uZSA9IHRpbWV6b25lc1swXT8udGltZXpvbmU7XG5cbiAgICAgICAgaWYgKCF0aW1lem9uZSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogbmV3IEVycm9yKFwiVGltZXpvbmUgbm90IGZvdW5kXCIpLCBxdWVyeTogdGltZXpvbmVRdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgY3JlYXRlSW50cm9zcGVjdGlvbih7IHF1ZXJ5OiB0YWJsZXNRdWVyeSwgdGFibGVzLCB0aW1lem9uZSB9KV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcHJvcGVybHlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgcXVlcnkoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclF1ZXJ5UmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXRTZWxlY3RRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG5cbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIHsgZmlsdGVyZWRSb3dDb3VudDogcmVzdWx0c1swXT8uX19wc19jb3VudF9fIHx8IFwiMFwiLCByb3dzOiByZXN1bHRzLCBxdWVyeSB9XTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIC8vIFRPRE86IGhhbmRsZSBwcm9wZXJseVxuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBpbnNlcnQoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckluc2VydFJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0SW5zZXJ0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuXG4gICAgICAgIGNvbnN0IFtlcnJvciwgcm93c10gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvd3MsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGdldFVwZGF0ZVF1ZXJ5KGRldGFpbHMsIG90aGVyUmVxdWlyZW1lbnRzKTtcbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbcm93XSA9IHJlc3VsdHM7XG5cbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICAvLyBUT0RPOiBjdXN0b20gZXJyb3I/XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBuZXcgRXJyb3IoXCJVcGRhdGUgZmFpbGVkXCIpLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgeyByb3csIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgZGVsZXRlKGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJEZWxldGVSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGdldERlbGV0ZVF1ZXJ5KGRldGFpbHMsIG90aGVyUmVxdWlyZW1lbnRzKTtcblxuICAgICAgICAvLyBUT0RPOiB1c2UgcmVzdWx0cyB0b28uXG4gICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IC4uLmRldGFpbHMsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnRyb3NwZWN0aW9uKGFyZ3M6IHtcbiAgdGFibGVzOiBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+O1xuICB0aW1lem9uZTogc3RyaW5nO1xuICBxdWVyeTogUXVlcnk7XG59KTogQWRhcHRlckludHJvc3BlY3RSZXN1bHQge1xuICBjb25zdCB7IHRhYmxlcywgdGltZXpvbmUsIHF1ZXJ5IH0gPSBhcmdzO1xuXG4gIHJldHVybiB0YWJsZXMucmVkdWNlKFxuICAgIChyZXN1bHQsIHJvdykgPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWFzIH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0gPSByb3c7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnNSZWNvcmQgPSBjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGNvbHVtbnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0YXR5cGUsIGRhdGF0eXBlX3NjaGVtYSwgbmFtZTogY29sdW1uTmFtZSwgb3B0aW9ucywgbnVsbGFibGUgfSA9IGNvbHVtbjtcblxuICAgICAgICAgIGNvbnN0IGlzQXJyYXkgPSBkYXRhdHlwZS5zdGFydHNXaXRoKFwiX1wiKTtcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZERhdGFUeXBlID0gaXNBcnJheSA/IGRhdGF0eXBlLnNsaWNlKDEpIDogZGF0YXR5cGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgIFtjb2x1bW5OYW1lXToge1xuICAgICAgICAgICAgICBkYXRhdHlwZToge1xuICAgICAgICAgICAgICAgIC4uLihQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEFbc3RyaXBwZWREYXRhVHlwZV0gfHwge1xuICAgICAgICAgICAgICAgICAgZ3JvdXA6IG9wdGlvbnMubGVuZ3RoID4gMCA/IFwiZW51bVwiIDogXCJyYXdcIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgICAgICAgIGlzTmF0aXZlOiBkYXRhdHlwZV9zY2hlbWEgPT09IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IGlzQXJyYXkgPyBgJHtzdHJpcHBlZERhdGFUeXBlfVtdYCA6IHN0cmlwcGVkRGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGRhdGF0eXBlX3NjaGVtYSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaXNDb21wdXRlZDogY29sdW1uLmNvbXB1dGVkLFxuICAgICAgICAgICAgICBpc0luUHJpbWFyeUtleTogY29sdW1uLnBrLFxuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICBudWxsYWJsZSxcbiAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICB0YWJsZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgICBma1NjaGVtYTogY29sdW1uLmZvcmVpZ25fa2V5X3NjaGVtYSxcbiAgICAgICAgICAgICAgZmtUYWJsZTogY29sdW1uLmZvcmVpZ25fa2V5X3RhYmxlLFxuICAgICAgICAgICAgICBma0NvbHVtbjogY29sdW1uLmZvcmVpZ25fa2V5X2NvbHVtbixcbiAgICAgICAgICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbHVtbixcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBUYWJsZVtcImNvbHVtbnNcIl0sXG4gICAgICApO1xuXG4gICAgICBpZiAoc2NoZW1hc1tzY2hlbWFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NoZW1hc1tzY2hlbWFdID0ge1xuICAgICAgICAgIG5hbWU6IHNjaGVtYSxcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzY2hlbWFzW3NjaGVtYV0udGFibGVzW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnNSZWNvcmQsXG4gICAgICAgIG5hbWU6IHRhYmxlTmFtZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYXM6IHsgcHVibGljOiB7IHRhYmxlczoge30sIG5hbWU6IFwicHVibGljXCIgfSB9LFxuICAgICAgdGltZXpvbmUsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnMsXG4gICAgICBxdWVyeSxcbiAgICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCBhcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCxcbiAgKTtcbn1cblxuY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gW1xuICBcIj1cIixcbiAgXCIhPVwiLFxuICBcIj5cIixcbiAgXCI+PVwiLFxuICBcIjxcIixcbiAgXCI8PVwiLFxuICBcImlzXCIsXG4gIFwiaXMgbm90XCIsXG4gIFwibGlrZVwiLFxuICBcIm5vdCBsaWtlXCIsXG4gIFwiaWxpa2VcIixcbiAgXCJub3QgaWxpa2VcIixcbl0gc2F0aXNmaWVzIEZpbHRlck9wZXJhdG9yW107XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50cm9zcGVjdCgpIHtcbiAgY29uc3QgdGFibGVzID0gbW9ja1RhYmxlc1F1ZXJ5KCk7XG4gIGNvbnN0IFt7IHRpbWV6b25lIH1dID0gbW9ja1RpbWV6b25lUXVlcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB7IHBhcmFtZXRlcnM6IFtdLCBzcWw6IFwiPG1vY2tlZD5cIiB9IGFzIFF1ZXJ5O1xuXG4gIHJldHVybiBjcmVhdGVJbnRyb3NwZWN0aW9uKHsgdGFibGVzLCB0aW1lem9uZSwgcXVlcnkgfSkgYXMge1xuICAgIC8vIGJlc3QgZWZmb3J0LCBubyBuZWVkIGdvIG92ZXJib2FyZC5cbiAgICBzY2hlbWFzOiB7XG4gICAgICBbSyBpbiAodHlwZW9mIHRhYmxlcylbbnVtYmVyXVtcInNjaGVtYVwiXV06IHtcbiAgICAgICAgbmFtZTogSztcbiAgICAgICAgdGFibGVzOiB7XG4gICAgICAgICAgW1QgaW4gKHR5cGVvZiB0YWJsZXMpW251bWJlcl1bXCJuYW1lXCJdXTogVGFibGU7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgdGltZXpvbmU6IHR5cGVvZiB0aW1lem9uZTtcbiAgICBmaWx0ZXJPcGVyYXRvcnM6IEZpbHRlck9wZXJhdG9yW107XG4gICAgcXVlcnk6IFF1ZXJ5O1xuICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5cbmV4cG9ydCBjb25zdCBQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEE6IFJlY29yZDxzdHJpbmcsIFBpY2s8RGF0YVR5cGUsIFwiZ3JvdXBcIj4+ID0ge1xuICBib29sOiB7XG4gICAgZ3JvdXA6IFwiYm9vbGVhblwiLFxuICB9LFxuICBib29sZWFuOiB7XG4gICAgZ3JvdXA6IFwiYm9vbGVhblwiLFxuICB9LFxuICBieXRlYToge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBjaGFyOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIGNpdGV4dDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvKipcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQnXG4gICAqL1xuICBkYXRlOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIEBleGFtcGxlICcxIGRheSAyIGhvdXJzJ1xuICAgKi9cbiAgaW50ZXJ2YWw6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgbmFtZToge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICB2YXJjaGFyOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgLyoqXG4gICAqIHNob3J0IGZvcm0gb2YgYHRpbWUgd2l0aG91dCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMTQ6MzA6MDAnXG4gICAqL1xuICB0aW1lOiB7XG4gICAgZ3JvdXA6IFwidGltZVwiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lYC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDAnXG4gICAqL1xuICB0aW1lc3RhbXA6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZXN0YW1wIHdpdGggdGltZSB6b25lYC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDArMDAnXG4gICAqL1xuICB0aW1lc3RhbXB0ejoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBsb25nIGZvcm0gb2YgYHRpbWVzdGFtcGAuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDI1LTA0LTE0IDE0OjMwOjAwJ1xuICAgKi9cbiAgXCJ0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmVcIjoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBsb25nIGZvcm0gb2YgYHRpbWVzdGFtcHR6YC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDArMDAnXG4gICAqL1xuICBcInRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIHNob3J0IGZvcm0gb2YgYHRpbWUgd2l0aCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMTQ6MzA6MDArMDA6MDAnXG4gICAqL1xuICB0aW1ldHo6IHtcbiAgICBncm91cDogXCJ0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBsb25nIGZvcm0gb2YgYHRpbWVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMTQ6MzA6MDAnXG4gICAqL1xuICBcInRpbWUgd2l0aG91dCB0aW1lIHpvbmVcIjoge1xuICAgIGdyb3VwOiBcInRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXR6YC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDArMDAnXG4gICAqL1xuICBcInRpbWUgd2l0aCB0aW1lIHpvbmVcIjoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIHV1aWQ6IHtcbiAgICAvLyBUT0RPOiBwb3NzaWJseSBjaGFuZ2UgdG8gYW5vdGhlciBncm91cCBsYXRlci5cbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgLy8gTnVtZXJpYyB0eXBlc1xuICBpbnQyOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBpbnQ0OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBpbnQ4OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBzbWFsbGludDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgaW50ZWdlcjoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgYmlnaW50OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBkZWNpbWFsOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBudW1lcmljOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICByZWFsOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBmbG9hdDQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGZsb2F0ODoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgXCJkb3VibGUgcHJlY2lzaW9uXCI6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGpzb246IHtcbiAgICBncm91cDogXCJqc29uXCIsXG4gIH0sXG4gIGpzb25iOiB7XG4gICAgZ3JvdXA6IFwianNvblwiLFxuICB9LFxufTtcbiIsICJpbXBvcnQgeyBleHByZXNzaW9uQnVpbGRlciwgdHlwZSBJbmZlclJlc3VsdCwgdHlwZSBSZWZlcmVuY2VFeHByZXNzaW9uLCBzcWwgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlckRlbGV0ZURldGFpbHMsIEFkYXB0ZXJJbnNlcnREZXRhaWxzLCBBZGFwdGVyUXVlcnlEZXRhaWxzLCBBZGFwdGVyVXBkYXRlRGV0YWlscyB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQge1xuICBhcHBseUluZmVycmVkUm93RmlsdGVycyxcbiAgYXBwbHlUcmFuc2Zvcm1hdGlvbnMsXG4gIHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cyxcbiAgY29tcGlsZSxcbiAgZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZyB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBnZXRQb3N0Z3JlU1FMQnVpbGRlciB9IGZyb20gXCIuL2J1aWxkZXJcIjtcbmltcG9ydCB0eXBlIHsgbW9ja1RhYmxlc1F1ZXJ5IH0gZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIEluc2VydHMgb25lIG9yIG1vcmUgcm93cyBpbnRvIGEgdGFibGUgYW5kIHJldHVybnMgdGhlIGluc2VydGVkIHJvd3MgYWxvbmcgd2l0aCB0aGVpciBgY3RpZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnNlcnRRdWVyeShcbiAgZGV0YWlsczogQWRhcHRlckluc2VydERldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIHRhYmxlOiB7IG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hLCBjb2x1bW5zIH0sXG4gICAgcm93cyxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldFBvc3RncmVTUUxCdWlsZGVyPFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAuaW5zZXJ0SW50byh0YWJsZU5hbWUpXG4gICAgICAudmFsdWVzKGFwcGx5VHJhbnNmb3JtYXRpb25zKFwiaW5zZXJ0XCIsIHJvd3MsIGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhPYmplY3Qua2V5cyhjb2x1bW5zKSlcbiAgICAgIC5yZXR1cm5pbmcoZ2V0Q3VycmVudFRpbWVzdGFtcE1pbGxpcygpLmFzKFwiX19wc19pbnNlcnRlZF9hdF9fXCIpKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCBzZWxlY3RzIGFsbCBjb2x1bW5zIGZyb20gYSB0YWJsZSwgYWxvbmcgd2l0aCBhbiB1bmJvdW5kIHJvdyBjb3VudCBhcyBgX19wc19jb3VudF9fYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdFF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVyUXVlcnlEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBwYWdlSW5kZXgsXG4gICAgcGFnZVNpemUsXG4gICAgc29ydE9yZGVyLFxuICAgIHRhYmxlOiB7IG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hLCBjb2x1bW5zIH0sXG4gICAgZmlsdGVyID0geyBraW5kOiBcIkZpbHRlckdyb3VwXCIsIGFmdGVyOiBcImFuZFwiLCBmaWx0ZXJzOiBbXSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIGNvbnN0IGZpbHRlckV4cHJlc3Npb24gPSBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKGZpbHRlci5maWx0ZXJzLCBjb2x1bW5zKTtcblxuICBjb25zdCBjb3VudFF1ZXJ5ID0gYnVpbGRlclxuICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAuc2VsZWN0RnJvbSh0YWJsZU5hbWUpXG4gICAgLndoZXJlKGZpbHRlckV4cHJlc3Npb24pXG4gICAgLnNlbGVjdCgoZWIpID0+IGViLmNhc3Q8QmlnSW50U3RyaW5nPihlYi5mbi5jb2FsZXNjZShlYi5mbi5jb3VudEFsbCgpLCBzcWwubGl0KDApKSwgXCJ0ZXh0XCIpLmFzKFwidmFsdWVcIikpO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoKFwiY291bnRcIiwgKCkgPT4gY291bnRRdWVyeSlcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC5zZWxlY3RGcm9tKFt0YWJsZU5hbWUsIFwiY291bnRcIl0pXG4gICAgICAvLyBUT0RPOiBjdXJzb3IgcGFnaW5hdGlvbj9cbiAgICAgIC53aGVyZShmaWx0ZXJFeHByZXNzaW9uKVxuICAgICAgLnNlbGVjdChcbiAgICAgICAgc3FsXG4gICAgICAgICAgLnJlZjxCaWdJbnRTdHJpbmc+KFxuICAgICAgICAgICAgXCJjb3VudC52YWx1ZVwiIHNhdGlzZmllcyBSZWZlcmVuY2VFeHByZXNzaW9uPHsgY291bnQ6IEluZmVyUmVzdWx0PHR5cGVvZiBjb3VudFF1ZXJ5PltudW1iZXJdIH0sIFwiY291bnRcIj4sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hcyhcIl9fcHNfY291bnRfX1wiKSxcbiAgICAgIClcbiAgICAgIC5zZWxlY3QoT2JqZWN0LmtleXMoY29sdW1ucykpXG4gICAgICAuJGNhbGwoKHFiKSA9PiBzb3J0T3JkZXIucmVkdWNlKChxYiwgaXRlbSkgPT4gcWIub3JkZXJCeShpdGVtLmNvbHVtbiwgaXRlbS5kaXJlY3Rpb24pLCBxYikpXG4gICAgICAubGltaXQocGFnZVNpemUpXG4gICAgICAvLyB3ZSdyZSBpbmplY3RpbmcgdGhlIG9mZnNldCB2YWx1ZSBoZXJlIHRvIGF2b2lkIHNlcmlhbGl6YXRpb24gY29tcGxleGl0eSAoYGJpZ2ludGAgaXMgYSBuby1nbyBmb3IgYEpTT04uc3RyaW5naWZ5YCkuXG4gICAgICAub2Zmc2V0KHNxbC5saXQoQmlnSW50KHBhZ2VJbmRleCkgKiBCaWdJbnQocGFnZVNpemUpKSksXG4gICk7XG59XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrU2VsZWN0UXVlcnkoKSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoXCIyMDI1LTAxLTI2VDIxOjU2OjEyLjM0NVpcIiksXG4gICAgICBkZWxldGVkX2F0OiBudWxsLFxuICAgICAgaWQ6IDEsXG4gICAgICBuYW1lOiBcIkpvaG4gRG9lXCIsXG4gICAgICBfX3BzX2NvdW50X186IFwiMlwiLFxuICAgICAgcm9sZTogXCJhZG1pblwiLFxuICAgICAgbmFtZV9yb2xlOiBcIkpvbm4gRG9lIC0gYWRtaW5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKFwiMjAyNS0wMS0yNlQyMDo1NjoxMi4zNDVaXCIpLFxuICAgICAgZGVsZXRlZF9hdDogbnVsbCxcbiAgICAgIGlkOiAyLFxuICAgICAgbmFtZTogXCJKYW5lIERvZVwiLFxuICAgICAgX19wc19jb3VudF9fOiBcIjJcIixcbiAgICAgIHJvbGU6IFwicG93ZXJ1c2VyXCIsXG4gICAgICBuYW1lX3JvbGU6IFwiSmFuZSBEb2UgLSBwb3dlcnVzZXJcIixcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyB7XG4gICAgLy8gYmVzdCBlZmZvcnQgbm8gbmVlZCB0byBnbyBvdmVyYm9hcmRcbiAgICBbSyBpbiBSZXR1cm5UeXBlPHR5cGVvZiBtb2NrVGFibGVzUXVlcnk+WzFdW1wiY29sdW1uc1wiXVtudW1iZXJdW1wibmFtZVwiXSB8IFwiX19wc19jb3VudF9fXCJdOiB1bmtub3duO1xuICB9W107XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgdXBkYXRlcyBhIGdpdmVuIHJvdyBpbiBhIHRhYmxlIHdpdGggZ2l2ZW4gY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVwZGF0ZVF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVyVXBkYXRlRGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICByb3csXG4gICAgdGFibGU6IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEgfSxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldFBvc3RncmVTUUxCdWlsZGVyPFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAudXBkYXRlVGFibGUodGFibGVOYW1lKVxuICAgICAgLnNldChhcHBseVRyYW5zZm9ybWF0aW9ucyhcInVwZGF0ZVwiLCBjaGFuZ2VzLCBjb2x1bW5zKSlcbiAgICAgIC4kY2FsbChhcHBseUluZmVycmVkUm93RmlsdGVycyhbcm93XSwgY29sdW1ucykpXG4gICAgICAucmV0dXJuaW5nKE9iamVjdC5rZXlzKGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkuYXMoXCJfX3BzX3VwZGF0ZWRfYXRfX1wiKSksXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgZGVsZXRlcyBhIGdpdmVuIHNldCBvZiByb3dzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlUXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJEZWxldGVEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICByb3dzLFxuICAgIHRhYmxlOiB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgYnVpbGRlclxuICAgICAgLndpdGhTY2hlbWEoc2NoZW1hKVxuICAgICAgLmRlbGV0ZUZyb20odGFibGVOYW1lKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKHJvd3MsIGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhPYmplY3Qua2V5cyhjb2x1bW5zKSlcbiAgICAgIC5yZXR1cm5pbmcoZ2V0Q3VycmVudFRpbWVzdGFtcE1pbGxpcygpLmFzKFwiX19wc19kZWxldGVkX2F0X19cIikpLFxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkge1xuICBjb25zdCBlYiA9IGV4cHJlc3Npb25CdWlsZGVyKCk7XG5cbiAgcmV0dXJuIGViLmNhc3Q8QmlnSW50U3RyaW5nPihlYi5mbihcImZsb29yXCIsIFtlYihlYi5mbihcImV4dHJhY3RcIiwgW3NxbGBlcG9jaCBmcm9tIG5vdygpYF0pLCBcIipcIiwgMV8wMDApXSksIFwidGV4dFwiKTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIEt5c2VseSwgUG9zdGdyZXNBZGFwdGVyLCBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSBmcm9tIFwia3lzZWx5XCI7XG5cbmltcG9ydCB7IHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cywgZ2V0QnVpbGRlciB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlID0gYW55PihcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbik6IEt5c2VseTxEYXRhYmFzZT4ge1xuICByZXR1cm4gZ2V0QnVpbGRlcih7IC4uLnJlcXVpcmVtZW50cywgQWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyLCBRdWVyeUNvbXBpbGVyOiBQb3N0Z3Jlc1F1ZXJ5Q29tcGlsZXIgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBTZWxlY3RRdWVyeUJ1aWxkZXIsIHNxbCB9IGZyb20gXCJreXNlbHlcIjtcbmltcG9ydCB7IGpzb25BcnJheUZyb20gfSBmcm9tIFwia3lzZWx5L2hlbHBlcnMvcG9zdGdyZXNcIjtcblxuaW1wb3J0IHsgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBjb21waWxlLCB0eXBlIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRQb3N0Z3JlU1FMQnVpbGRlciB9IGZyb20gXCIuL2J1aWxkZXJcIjtcblxuY29uc3QgUkVHVUxBUl9UQUJMRV9LSU5EID0gXCJyXCI7XG5jb25zdCBWSUVXX1RBQkxFX0tJTkQgPSBcInZcIjtcbmNvbnN0IFRBQkxFX0tJTkRTID0gW1JFR1VMQVJfVEFCTEVfS0lORCwgVklFV19UQUJMRV9LSU5EXSBhcyBjb25zdDtcbnR5cGUgVGFibGVLaW5kID0gKHR5cGVvZiBUQUJMRV9LSU5EUylbbnVtYmVyXTtcblxuaW50ZXJmYWNlIERhdGFiYXNlIHtcbiAgLyoqIGNvbHVtbnMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVwiOiB7XG4gICAgLyoqIGNvbHVtbiBvcmRlciBudW1iZXIgaW4gaXRzIHRhYmxlICovXG4gICAgYXR0bnVtOiBudW1iZXI7XG4gICAgLyoqIHRhYmxlL3ZpZXcgaWRlbnRpZmllciAqL1xuICAgIGF0dHJlbGlkOiBzdHJpbmc7XG4gICAgLyoqIGNvbHVtbiBuYW1lICovXG4gICAgYXR0bmFtZTogc3RyaW5nO1xuICAgIC8qKiB3YXMgdGhlIGNvbHVtbiBkcm9wcGVkLiBkcm9wcGVkIGNvbHVtbnMgbWlnaHQgbm90IGJlIDEwMCUgcmVtb3ZlZCBpbW1lZGlhdGVseS4gKi9cbiAgICBhdHRpc2Ryb3BwZWQ6IGJvb2xlYW47XG4gICAgLyoqIGNvbHVtbiBkYXRhdHlwZSBpZGVudGlmaWVyICovXG4gICAgYXR0dHlwaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBnZW5lcmF0aW9uIGZsYWcgZm9yIGNvbXB1dGVkIGNvbHVtbnM6XG4gICAgICogJycgKGVtcHR5KSBmb3IgcmVndWxhciBjb2x1bW5zLFxuICAgICAqICdzJyBmb3IgU1RPUkVEIGdlbmVyYXRlZCBjb2x1bW5zIChQb3N0Z3JlcyBHRU5FUkFURUQgQUxXQVlTIEFTKS5cbiAgICAgKi9cbiAgICBhdHRnZW5lcmF0ZWQ6IFwiXCIgfCBcInNcIjtcbiAgICAvKiogTk9UIE5VTEwgY29uc3RyYWludDogdHJ1ZSBpZiB0aGUgY29sdW1uIGhhcyBhIE5PVCBOVUxMIGNvbnN0cmFpbnQgKi9cbiAgICBhdHRub3RudWxsOiBib29sZWFuO1xuICB9O1xuICAvKiogcmVzb3VyY2VzLCBlLmcuIHRhYmxlcywgc2VxdWVuY2VzLCBldGMuICovXG4gIFwicGdfY2F0YWxvZy5wZ19jbGFzc1wiOiB7XG4gICAgLyoqIHJlc291cmNlIGlkICovXG4gICAgb2lkOiBudW1iZXI7XG4gICAgLyoqIHJlc291cmNlIG5hbWUgKi9cbiAgICByZWxuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIHJlbG5hbWVzcGFjZTogbnVtYmVyO1xuICAgIC8qKiByZXNvdXJjZSBraW5kOiByZWd1bGFyIHRhYmxlLCB2aWV3ICovXG4gICAgcmVsa2luZDogVGFibGVLaW5kO1xuICB9O1xuICAvKiogZW51bSB0eXBlcycgdmFsdWVzICovXG4gIFwicGdfY2F0YWxvZy5wZ19lbnVtXCI6IHtcbiAgICAvKiogZW51bSB2YWx1ZSAqL1xuICAgIGVudW1sYWJlbDogc3RyaW5nO1xuICAgIC8qKiBlbnVtJ3MgdHlwZSBpZCAqL1xuICAgIGVudW10eXBpZDogbnVtYmVyO1xuICB9O1xuICAvKiogc2NoZW1hcyAqL1xuICBcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlXCI6IHtcbiAgICAvKiogc2NoZW1hIG5hbWUgKi9cbiAgICBuc3BuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHNjaGVtYSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICB9O1xuICAvKiogZGF0YXR5cGVzICovXG4gIFwicGdfY2F0YWxvZy5wZ190eXBlXCI6IHtcbiAgICAvKiogdHlwZSBpZCAqL1xuICAgIG9pZDogbnVtYmVyO1xuICAgIC8qKiB0eXBlIG5hbWUgKi9cbiAgICB0eXBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHR5cGUncyBzY2hlbWEgKGFrYSBuYW1lc3BhY2UpIGlkICovXG4gICAgdHlwbmFtZXNwYWNlOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogdHlwZSdzIGtpbmRcbiAgICAgKlxuICAgICAqICdlJyAtIGVudW0gdHlwZVxuICAgICAqL1xuICAgIHR5cHR5cGU6IFwiZVwiIHwgKHN0cmluZyAmIHt9KTtcbiAgfTtcbiAgLyoqIGNvbnN0cmFpbnRzICovXG4gIFwicGdfY2F0YWxvZy5wZ19jb25zdHJhaW50XCI6IHtcbiAgICAvKiogcmVsYXRpb24gKHRhYmxlKSBpZCB3aGljaCB0aGlzIGNvbnN0cmFpbnQgd2FzIGNyZWF0ZWQgZm9yICovXG4gICAgY29ucmVsaWQ6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBjb25zdHJhaW50IHR5cGUuXG4gICAgICpcbiAgICAgKiBgJ3AnYCAtIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuXG4gICAgICogYCdmJ2AgLSBmb3JlaWduIGtleSBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIGNvbnR5cGU6IFwicFwiIHwgXCJmXCIgfCAoc3RyaW5nICYge30pO1xuICAgIC8qKlxuICAgICAqIGFuIG9yZGVyZWQgYXJyYXkgb2YgY29sdW1ucyBpbmNsdWRlZCBpbiB0aGUgY29uc3RyYWludC5cbiAgICAgKlxuICAgICAqIHRoZSBjb2x1bW5zIGFyZSByZXByZXNlbnRlZCBieSB0aGVpciBvcmRpbmFsIG51bWJlciAoYGF0dG51bWApIGluIHRoZWlyIHJlbGF0aW9uICh0YWJsZSkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBgJ3sxLDN9J2AgLSBhIGNvbnN0cmFpbnQgd2l0aCAyIGNvbHVtbnMsIHRoZSAxc3QgJiAzcmQgaW4gdGhlaXIgdGFibGUuXG4gICAgICovXG4gICAgY29ua2V5OiBudW1iZXJbXTtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgdGFibGUgKi9cbiAgICBjb25mcmVsaWQ6IG51bWJlcjtcbiAgICAvKiogaWYgYSBmb3JlaWduIGtleSwgdGhlIHJlZmVyZW5jZWQgY29sdW1ucyAqL1xuICAgIGNvbmZrZXk6IG51bWJlcltdO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIGFsbCB1c2VyLWRlZmluZWQgdGFibGVzIGFuZCB2aWV3cyBpbiB0aGUgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZXNRdWVyeShyZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+KSB7XG4gIHJldHVybiBjb21waWxlKFxuICAgIGdldFBvc3RncmVTUUxCdWlsZGVyPERhdGFiYXNlPihyZXF1aXJlbWVudHMpXG4gICAgICAuc2VsZWN0RnJvbShcInBnX2NhdGFsb2cucGdfY2xhc3MgYXMgY2xzXCIpXG4gICAgICAuaW5uZXJKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgbnNcIiwgXCJjbHMucmVsbmFtZXNwYWNlXCIsIFwibnMub2lkXCIpXG4gICAgICAuJGNhbGwoZXhjbHVkZVN5c3RlbVRhYmxlcylcbiAgICAgIC8vIHJlZ3VsYXIgdGFibGVzIG9yIHZpZXdzXG4gICAgICAud2hlcmUoXCJjbHMucmVsa2luZFwiLCBcImluXCIsIFRBQkxFX0tJTkRTKVxuICAgICAgLnNlbGVjdCgoZWIpID0+IFtcbiAgICAgICAgXCJucy5uc3BuYW1lIGFzIHNjaGVtYVwiLFxuICAgICAgICBcImNscy5yZWxuYW1lIGFzIG5hbWVcIixcbiAgICAgICAganNvbkFycmF5RnJvbShcbiAgICAgICAgICBlYlxuICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBhdHRcIilcbiAgICAgICAgICAgIC5pbm5lckpvaW4oXCJwZ19jYXRhbG9nLnBnX3R5cGUgYXMgdHlwXCIsIFwidHlwLm9pZFwiLCBcImF0dC5hdHR0eXBpZFwiKVxuICAgICAgICAgICAgLmlubmVySm9pbihcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIGFzIHRuc1wiLCBcInRucy5vaWRcIiwgXCJ0eXAudHlwbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYXMgcGtfY29uXCIsIChqYikgPT5cbiAgICAgICAgICAgICAgamJcbiAgICAgICAgICAgICAgICAub24oXCJwa19jb24uY29udHlwZVwiLCBcIj1cIiwgXCJwXCIpXG4gICAgICAgICAgICAgICAgLm9uUmVmKFwicGtfY29uLmNvbnJlbGlkXCIsIFwiPVwiLCBcImNscy5vaWRcIilcbiAgICAgICAgICAgICAgICAub24oKGViKSA9PiBlYihcImF0dC5hdHRudW1cIiwgXCI9XCIsIGViLmZuLmFueShcInBrX2Nvbi5jb25rZXlcIikpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5sZWZ0Sm9pbihcInBnX2NhdGFsb2cucGdfY29uc3RyYWludCBhcyBma19jb25cIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vbihcImZrX2Nvbi5jb250eXBlXCIsIFwiPVwiLCBcImZcIilcbiAgICAgICAgICAgICAgICAub25SZWYoXCJma19jb24uY29ucmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgICAgIC5vbigoZWIpID0+IGViKFwiYXR0LmF0dG51bVwiLCBcIj1cIiwgZWIuZm4uYW55KFwiZmtfY29uLmNvbmtleVwiKSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19jbGFzcyBhcyBma19jbHNcIiwgXCJma19jbHMub2lkXCIsIFwiZmtfY29uLmNvbmZyZWxpZFwiKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgZmtfbnNcIiwgXCJma19ucy5vaWRcIiwgXCJma19jbHMucmVsbmFtZXNwYWNlXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhcyBma19hdHRcIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vblJlZihcImZrX2F0dC5hdHRyZWxpZFwiLCBcIj1cIiwgXCJma19jbHMub2lkXCIpXG4gICAgICAgICAgICAgICAgLy8gVXNlIGEgY2FsbGJhY2sgZm9yIHRoZSAub24oKSBjb25kaXRpb24gdG8gZW5zdXJlIGNvcnJlY3QgY29udGV4dCBmb3IgdHlwZXNcbiAgICAgICAgICAgICAgICAub24oKG9uX2ViKSA9PiBvbl9lYihcImZrX2F0dC5hdHRudW1cIiwgXCI9XCIsIG9uX2ViLmZuLmFueShcImZrX2Nvbi5jb25ma2V5XCIpKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAud2hlcmVSZWYoXCJhdHQuYXR0cmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgLy8gZXhjbHVkZSBzeXN0ZW0gY29sdW1uc1xuICAgICAgICAgICAgLndoZXJlKFwiYXR0LmF0dG51bVwiLCBcIj49XCIsIDApXG4gICAgICAgICAgICAud2hlcmUoXCJhdHQuYXR0aXNkcm9wcGVkXCIsIFwiIT1cIiwgdHJ1ZSlcbiAgICAgICAgICAgIC5zZWxlY3QoW1xuICAgICAgICAgICAgICBcImF0dC5hdHRuYW1lIGFzIG5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0eXAudHlwbmFtZSBhcyBkYXRhdHlwZVwiLFxuICAgICAgICAgICAgICBcInRucy5uc3BuYW1lIGFzIGRhdGF0eXBlX3NjaGVtYVwiLFxuICAgICAgICAgICAgICBcImZrX25zLm5zcG5hbWUgYXMgZm9yZWlnbl9rZXlfc2NoZW1hXCIsXG4gICAgICAgICAgICAgIFwiZmtfY2xzLnJlbG5hbWUgYXMgZm9yZWlnbl9rZXlfdGFibGVcIixcbiAgICAgICAgICAgICAgXCJma19hdHQuYXR0bmFtZSBhcyBmb3JlaWduX2tleV9jb2x1bW5cIixcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gW1xuICAgICAgICAgICAgICBlYihcInBrX2Nvbi5jb25rZXlcIiwgXCJpcyBub3RcIiwgbnVsbCkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwicGtcIiksXG4gICAgICAgICAgICAgIGViKFwiYXR0LmF0dGdlbmVyYXRlZFwiLCBcIiE9XCIsIFwiXCIpLiRjYXN0VG88Ym9vbGVhbj4oKS5hcyhcImNvbXB1dGVkXCIpLFxuICAgICAgICAgICAgICBlYihcImF0dC5hdHRub3RudWxsXCIsIFwiIT1cIiwgdHJ1ZSkuJGNhc3RUbzxib29sZWFuPigpLmFzKFwibnVsbGFibGVcIiksXG4gICAgICAgICAgICAgIGViLmZuXG4gICAgICAgICAgICAgICAgLmNvYWxlc2NlKFxuICAgICAgICAgICAgICAgICAgZWJcbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdEZyb20oXCJwZ19jYXRhbG9nLnBnX2VudW0gYXMgZW5tXCIpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZVJlZihcImVubS5lbnVtdHlwaWRcIiwgXCI9XCIsIFwidHlwLm9pZFwiKVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KChlYikgPT4gZWIuZm4uanNvbkFnZyhlYi5yZWYoXCJlbm0uZW51bWxhYmVsXCIpKS5hcyhcIm9cIikpLFxuICAgICAgICAgICAgICAgICAgc3FsPHN0cmluZ1tdPmAnW10nYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmFzKFwib3B0aW9uc1wiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApLmFzKFwiY29sdW1uc1wiKSxcbiAgICAgIF0pLFxuICApO1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1RhYmxlc1F1ZXJ5KCkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHNjaGVtYTogXCJ6b29cIixcbiAgICAgIG5hbWU6IFwiYW5pbWFsc1wiLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcImludDRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiB0cnVlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzY2hlbWE6IFwicHVibGljXCIsXG4gICAgICBuYW1lOiBcInVzZXJzXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwiaW50NFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogZmFsc2UsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV90YWJsZTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV9jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImRlbGV0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicm9sZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXJcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZV9yb2xlXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYTogXCJwdWJsaWNcIixcbiAgICAgIG5hbWU6IFwiY29tcG9zaXRlX3BrXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidXVpZFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBmb3JlaWduX2tleV9zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfdGFibGU6IG51bGwsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV90YWJsZTogbnVsbCxcbiAgICAgICAgICBmb3JlaWduX2tleV9jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZm9yZWlnbl9rZXlfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZvcmVpZ25fa2V5X2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXSBhcyBjb25zdCBzYXRpc2ZpZXMgUXVlcnlSZXN1bHQ8dHlwZW9mIGdldFRhYmxlc1F1ZXJ5Pjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IHRpbWV6b25lIHNldHRpbmcgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lem9uZVF1ZXJ5KCkge1xuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXIoKTtcblxuICByZXR1cm4gY29tcGlsZShidWlsZGVyLnNlbGVjdE5vRnJvbShidWlsZGVyLmZuPHN0cmluZz4oXCJjdXJyZW50X3NldHRpbmdcIiwgW3NxbC5saXQoXCJ0aW1lem9uZVwiKV0pLmFzKFwidGltZXpvbmVcIikpKTtcbn1cblxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tUaW1lem9uZVF1ZXJ5KCkge1xuICByZXR1cm4gW3sgdGltZXpvbmU6IFwiVVRDXCIgfV0gYXMgY29uc3Qgc2F0aXNmaWVzIFF1ZXJ5UmVzdWx0PHR5cGVvZiBnZXRUaW1lem9uZVF1ZXJ5Pjtcbn1cblxuLyoqXG4gKiBXZSBkb24ndCB3YW50IFBvc3RncmVTUUwgaW50ZXJuYWxzIGluIGludHJvc3BlY3Rpb24gcmVzdWx0cy4gVG8gYmUgdXNlZCBpbiBgJGNhbGxgLlxuICovXG5mdW5jdGlvbiBleGNsdWRlU3lzdGVtVGFibGVzPFxuICBUIGV4dGVuZHMgU2VsZWN0UXVlcnlCdWlsZGVyPFxuICAgIERhdGFiYXNlICYgeyBuczogRGF0YWJhc2VbXCJwZ19jYXRhbG9nLnBnX25hbWVzcGFjZVwiXTsgY2xzOiBEYXRhYmFzZVtcInBnX2NhdGFsb2cucGdfY2xhc3NcIl0gfSxcbiAgICBcIm5zXCIgfCBcImNsc1wiLFxuICAgIG9iamVjdFxuICA+LFxuPihxYjogVCk6IFQge1xuICByZXR1cm4gcWIud2hlcmUoYG5zLm5zcG5hbWVgLCBgIX5gLCBgXnBnX2ApLndoZXJlKGBucy5uc3BuYW1lYCwgYCE9YCwgYGluZm9ybWF0aW9uX3NjaGVtYWApIGFzIG5ldmVyO1xufVxuIiwgIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiLi9wb3N0Z3Jlcy5kLnRzXCIgLz5cbmltcG9ydCB7IHNxbCB9IGZyb20gJy4uL3Jhdy1idWlsZGVyL3NxbC5qcyc7XG4vKipcbiAqIEEgcG9zdGdyZXMgaGVscGVyIGZvciBhZ2dyZWdhdGluZyBhIHN1YnF1ZXJ5IChvciBvdGhlciBleHByZXNzaW9uKSBpbnRvIGEgSlNPTkIgYXJyYXkuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogPCEtLSBzaXRlRXhhbXBsZShcInNlbGVjdFwiLCBcIk5lc3RlZCBhcnJheVwiLCAxMTApIC0tPlxuICpcbiAqIFdoaWxlIGt5c2VseSBpcyBub3QgYW4gT1JNIGFuZCBpdCBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVsYXRpb25zLCB3ZSBkbyBwcm92aWRlXG4gKiBoZWxwZXJzIGZvciBmZXRjaGluZyBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzIGluIGEgc2luZ2xlIHF1ZXJ5LiBJbiB0aGlzIGV4YW1wbGUgd2VcbiAqIHVzZSB0aGUgYGpzb25BcnJheUZyb21gIGhlbHBlciB0byBmZXRjaCBwZXJzb24ncyBwZXRzIGFsb25nIHdpdGggdGhlIHBlcnNvbidzIGlkLlxuICpcbiAqIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgaGVscGVycyB1bmRlciB0aGUgYGt5c2VseS9oZWxwZXJzYCBmb2xkZXIsIGluY2x1ZGluZ1xuICogYGpzb25BcnJheUZyb21gLCBhcmUgbm90IGd1YXJhbnRlZWQgdG8gd29yayB3aXRoIHRoaXJkIHBhcnR5IGRpYWxlY3RzLiBJbiBvcmRlciBmb3JcbiAqIHRoZW0gdG8gd29yaywgdGhlIGRpYWxlY3QgbXVzdCBhdXRvbWF0aWNhbGx5IHBhcnNlIHRoZSBganNvbmAgZGF0YSB0eXBlIGludG9cbiAqIEphdmFTY3JpcHQgSlNPTiB2YWx1ZXMgbGlrZSBvYmplY3RzIGFuZCBhcnJheXMuIFNvbWUgZGlhbGVjdHMgbWlnaHQgc2ltcGx5IHJldHVyblxuICogdGhlIGRhdGEgYXMgYSBKU09OIHN0cmluZy4gSW4gdGhlc2UgY2FzZXMgeW91IGNhbiB1c2UgdGhlIGJ1aWx0IGluIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYFxuICogdG8gcGFyc2UgdGhlIHJlc3VsdHMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGpzb25BcnJheUZyb20gfSBmcm9tICdreXNlbHkvaGVscGVycy9wb3N0Z3JlcydcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25BcnJheUZyb20oXG4gKiAgICAgICBlYi5zZWxlY3RGcm9tKCdwZXQnKVxuICogICAgICAgICAuc2VsZWN0KFsncGV0LmlkIGFzIHBldF9pZCcsICdwZXQubmFtZSddKVxuICogICAgICAgICAud2hlcmVSZWYoJ3BldC5vd25lcl9pZCcsICc9JywgJ3BlcnNvbi5pZCcpXG4gKiAgICAgICAgIC5vcmRlckJ5KCdwZXQubmFtZScpXG4gKiAgICAgKS5hcygncGV0cycpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChQb3N0Z3JlU1FMKTpcbiAqXG4gKiBgYGBzcWxcbiAqIHNlbGVjdCBcImlkXCIsIChcbiAqICAgc2VsZWN0IGNvYWxlc2NlKGpzb25fYWdnKGFnZyksICdbXScpIGZyb20gKFxuICogICAgIHNlbGVjdCBcInBldFwiLlwiaWRcIiBhcyBcInBldF9pZFwiLCBcInBldFwiLlwibmFtZVwiXG4gKiAgICAgZnJvbSBcInBldFwiXG4gKiAgICAgd2hlcmUgXCJwZXRcIi5cIm93bmVyX2lkXCIgPSBcInBlcnNvblwiLlwiaWRcIlxuICogICAgIG9yZGVyIGJ5IFwicGV0XCIuXCJuYW1lXCJcbiAqICAgKSBhcyBhZ2dcbiAqICkgYXMgXCJwZXRzXCJcbiAqIGZyb20gXCJwZXJzb25cIlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uQXJyYXlGcm9tKGV4cHIpIHtcbiAgICByZXR1cm4gc3FsIGAoc2VsZWN0IGNvYWxlc2NlKGpzb25fYWdnKGFnZyksICdbXScpIGZyb20gJHtleHByfSBhcyBhZ2cpYDtcbn1cbi8qKlxuICogQSBwb3N0Z3JlcyBoZWxwZXIgZm9yIHR1cm5pbmcgYSBzdWJxdWVyeSAob3Igb3RoZXIgZXhwcmVzc2lvbikgaW50byBhIEpTT04gb2JqZWN0LlxuICpcbiAqIFRoZSBzdWJxdWVyeSBtdXN0IG9ubHkgcmV0dXJuIG9uZSByb3cuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogPCEtLSBzaXRlRXhhbXBsZShcInNlbGVjdFwiLCBcIk5lc3RlZCBvYmplY3RcIiwgMTIwKSAtLT5cbiAqXG4gKiBXaGlsZSBreXNlbHkgaXMgbm90IGFuIE9STSBhbmQgaXQgZG9lc24ndCBoYXZlIHRoZSBjb25jZXB0IG9mIHJlbGF0aW9ucywgd2UgZG8gcHJvdmlkZVxuICogaGVscGVycyBmb3IgZmV0Y2hpbmcgbmVzdGVkIG9iamVjdHMgYW5kIGFycmF5cyBpbiBhIHNpbmdsZSBxdWVyeS4gSW4gdGhpcyBleGFtcGxlIHdlXG4gKiB1c2UgdGhlIGBqc29uT2JqZWN0RnJvbWAgaGVscGVyIHRvIGZldGNoIHBlcnNvbidzIGZhdm9yaXRlIHBldCBhbG9uZyB3aXRoIHRoZSBwZXJzb24ncyBpZC5cbiAqXG4gKiBQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGhlbHBlcnMgdW5kZXIgdGhlIGBreXNlbHkvaGVscGVyc2AgZm9sZGVyLCBpbmNsdWRpbmdcbiAqIGBqc29uT2JqZWN0RnJvbWAsIGFyZSBub3QgZ3VhcmFudGVlZCB0byB3b3JrIHdpdGggdGhpcmQtcGFydHkgZGlhbGVjdHMuIEluIG9yZGVyIGZvclxuICogdGhlbSB0byB3b3JrLCB0aGUgZGlhbGVjdCBtdXN0IGF1dG9tYXRpY2FsbHkgcGFyc2UgdGhlIGBqc29uYCBkYXRhIHR5cGUgaW50b1xuICogSmF2YVNjcmlwdCBKU09OIHZhbHVlcyBsaWtlIG9iamVjdHMgYW5kIGFycmF5cy4gU29tZSBkaWFsZWN0cyBtaWdodCBzaW1wbHkgcmV0dXJuXG4gKiB0aGUgZGF0YSBhcyBhIEpTT04gc3RyaW5nLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW4gYFBhcnNlSlNPTlJlc3VsdHNQbHVnaW5gXG4gKiB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbk9iamVjdEZyb20gfSBmcm9tICdreXNlbHkvaGVscGVycy9wb3N0Z3JlcydcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25PYmplY3RGcm9tKFxuICogICAgICAgZWIuc2VsZWN0RnJvbSgncGV0JylcbiAqICAgICAgICAgLnNlbGVjdChbJ3BldC5pZCBhcyBwZXRfaWQnLCAncGV0Lm5hbWUnXSlcbiAqICAgICAgICAgLndoZXJlUmVmKCdwZXQub3duZXJfaWQnLCAnPScsICdwZXJzb24uaWQnKVxuICogICAgICAgICAud2hlcmUoJ3BldC5pc19mYXZvcml0ZScsICc9JywgdHJ1ZSlcbiAqICAgICApLmFzKCdmYXZvcml0ZV9wZXQnKVxuICogICBdKVxuICogICAuZXhlY3V0ZSgpXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgXCJpZFwiLCAoXG4gKiAgIHNlbGVjdCB0b19qc29uKG9iaikgZnJvbSAoXG4gKiAgICAgc2VsZWN0IFwicGV0XCIuXCJpZFwiIGFzIFwicGV0X2lkXCIsIFwicGV0XCIuXCJuYW1lXCJcbiAqICAgICBmcm9tIFwicGV0XCJcbiAqICAgICB3aGVyZSBcInBldFwiLlwib3duZXJfaWRcIiA9IFwicGVyc29uXCIuXCJpZFwiXG4gKiAgICAgYW5kIFwicGV0XCIuXCJpc19mYXZvcml0ZVwiID0gJDFcbiAqICAgKSBhcyBvYmpcbiAqICkgYXMgXCJmYXZvcml0ZV9wZXRcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25PYmplY3RGcm9tKGV4cHIpIHtcbiAgICByZXR1cm4gc3FsIGAoc2VsZWN0IHRvX2pzb24ob2JqKSBmcm9tICR7ZXhwcn0gYXMgb2JqKWA7XG59XG4vKipcbiAqIFRoZSBQb3N0Z3JlU1FMIGBqc29uX2J1aWxkX29iamVjdGAgZnVuY3Rpb24uXG4gKlxuICogTk9URTogVGhpcyBoZWxwZXIgaXMgb25seSBndWFyYW50ZWVkIHRvIGZ1bGx5IHdvcmsgd2l0aCB0aGUgYnVpbHQtaW4gYFBvc3RncmVzRGlhbGVjdGAuXG4gKiBXaGlsZSB0aGUgcHJvZHVjZWQgU1FMIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgUG9zdGdyZVNRTCBkYXRhYmFzZXMsIHNvbWUgdGhpcmQtcGFydHkgZGlhbGVjdHNcbiAqIG1heSBub3QgcGFyc2UgdGhlIG5lc3RlZCBKU09OIGludG8gb2JqZWN0cy4gSW4gdGhlc2UgY2FzZXMgeW91IGNhbiB1c2UgdGhlIGJ1aWx0IGluXG4gKiBgUGFyc2VKU09OUmVzdWx0c1BsdWdpbmAgdG8gcGFyc2UgdGhlIHJlc3VsdHMuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNxbCB9IGZyb20gJ2t5c2VseSdcbiAqIGltcG9ydCB7IGpzb25CdWlsZE9iamVjdCB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbkJ1aWxkT2JqZWN0KHtcbiAqICAgICAgIGZpcnN0OiBlYi5yZWYoJ2ZpcnN0X25hbWUnKSxcbiAqICAgICAgIGxhc3Q6IGViLnJlZignbGFzdF9uYW1lJyksXG4gKiAgICAgICBmdWxsOiBzcWw8c3RyaW5nPmBmaXJzdF9uYW1lIHx8XHUwMEEwJyAnIHx8IGxhc3RfbmFtZWBcbiAqICAgICB9KS5hcygnbmFtZScpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqXG4gKiByZXN1bHRbMF0/LmlkXG4gKiByZXN1bHRbMF0/Lm5hbWUuZmlyc3RcbiAqIHJlc3VsdFswXT8ubmFtZS5sYXN0XG4gKiByZXN1bHRbMF0/Lm5hbWUuZnVsbFxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogc2VsZWN0IFwiaWRcIiwganNvbl9idWlsZF9vYmplY3QoXG4gKiAgICdmaXJzdCcsIGZpcnN0X25hbWUsXG4gKiAgICdsYXN0JywgbGFzdF9uYW1lLFxuICogICAnZnVsbCcsIGZpcnN0X25hbWUgfHwgJyAnIHx8IGxhc3RfbmFtZVxuICogKSBhcyBcIm5hbWVcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25CdWlsZE9iamVjdChvYmopIHtcbiAgICByZXR1cm4gc3FsIGBqc29uX2J1aWxkX29iamVjdCgke3NxbC5qb2luKE9iamVjdC5rZXlzKG9iaikuZmxhdE1hcCgoaykgPT4gW3NxbC5saXQoayksIG9ialtrXV0pKX0pYDtcbn1cbi8qKlxuICogVGhlIFBvc3RncmVTUUwgYG1lcmdlX2FjdGlvbmAgZnVuY3Rpb24uXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGByZXR1cm5pbmdgIGNsYXVzZSB0byBnZXQgdGhlIGFjdGlvbiB0aGF0IHdhc1xuICogcGVyZm9ybWVkIGluIGEgYG1lcmdlSW50b2AgcXVlcnkuIFRoZSBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiB0aGUgZm9sbG93aW5nXG4gKiBzdHJpbmdzOiBgJ0lOU0VSVCdgLCBgJ1VQREFURSdgLCBvciBgJ0RFTEVURSdgLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBtZXJnZUFjdGlvbiB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5tZXJnZUludG8oJ3BlcnNvbiBhcyBwJylcbiAqICAgLnVzaW5nKCdwZXJzb25fYmFja3VwIGFzIHBiJywgJ3AuaWQnLCAncGIuaWQnKVxuICogICAud2hlbk1hdGNoZWQoKVxuICogICAudGhlblVwZGF0ZVNldCgoeyByZWYgfSkgPT4gKHtcbiAqICAgICBmaXJzdF9uYW1lOiByZWYoJ3BiLmZpcnN0X25hbWUnKSxcbiAqICAgICB1cGRhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKS4kY2FzdFRvPHN0cmluZyB8IG51bGw+KCksXG4gKiAgIH0pKVxuICogICAud2hlbk5vdE1hdGNoZWQoKVxuICogICAudGhlbkluc2VydFZhbHVlcygoeyByZWZ9KSA9PiAoe1xuICogICAgIGlkOiByZWYoJ3BiLmlkJyksXG4gKiAgICAgZmlyc3RfbmFtZTogcmVmKCdwYi5maXJzdF9uYW1lJyksXG4gKiAgICAgY3JlYXRlZF9hdDogcmVmKCdwYi51cGRhdGVkX2F0JyksXG4gKiAgICAgdXBkYXRlZF9hdDogcmVmKCdwYi51cGRhdGVkX2F0JykuJGNhc3RUbzxzdHJpbmcgfCBudWxsPigpLFxuICogICB9KSlcbiAqICAgLnJldHVybmluZyhbbWVyZ2VBY3Rpb24oKS5hcygnYWN0aW9uJyksICdwLmlkJywgJ3AudXBkYXRlZF9hdCddKVxuICogICAuZXhlY3V0ZSgpXG4gKlxuICogcmVzdWx0WzBdLmFjdGlvblxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogbWVyZ2UgaW50byBcInBlcnNvblwiIGFzIFwicFwiXG4gKiB1c2luZyBcInBlcnNvbl9iYWNrdXBcIiBhcyBcInBiXCIgb24gXCJwXCIuXCJpZFwiID0gXCJwYlwiLlwiaWRcIlxuICogd2hlbiBtYXRjaGVkIHRoZW4gdXBkYXRlIHNldFxuICogICBcImZpcnN0X25hbWVcIiA9IFwicGJcIi5cImZpcnN0X25hbWVcIixcbiAqICAgXCJ1cGRhdGVkX2F0XCIgPSBcInBiXCIuXCJ1cGRhdGVkX2F0XCI6OnRleHRcbiAqIHdoZW4gbm90IG1hdGNoZWQgdGhlbiBpbnNlcnQgdmFsdWVzIChcImlkXCIsIFwiZmlyc3RfbmFtZVwiLCBcImNyZWF0ZWRfYXRcIiwgXCJ1cGRhdGVkX2F0XCIpXG4gKiB2YWx1ZXMgKFwicGJcIi5cImlkXCIsIFwicGJcIi5cImZpcnN0X25hbWVcIiwgXCJwYlwiLlwidXBkYXRlZF9hdFwiLCBcInBiXCIuXCJ1cGRhdGVkX2F0XCIpXG4gKiByZXR1cm5pbmcgbWVyZ2VfYWN0aW9uKCkgYXMgXCJhY3Rpb25cIiwgXCJwXCIuXCJpZFwiLCBcInBcIi5cInVwZGF0ZWRfYXRcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUFjdGlvbigpIHtcbiAgICByZXR1cm4gc3FsIGBtZXJnZV9hY3Rpb24oKWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztnTEFBQUEsSUNBQUMsSUNBQUMsSUFFTyxJQUFNQyxFQUE2RSxDQUN4RixLQUFNLENBQ0osTUFBTyxTQUNULEVBQ0EsUUFBUyxDQUNQLE1BQU8sU0FDVCxFQUNBLE1BQU8sQ0FDTCxNQUFPLFFBQ1QsRUFDQSxLQUFNLENBQ0osTUFBTyxRQUNULEVBQ0EsT0FBUSxDQUNOLE1BQU8sUUFDVCxFQUlBLEtBQU0sQ0FDSixNQUFPLFVBQ1QsRUFJQSxTQUFVLENBQ1IsTUFBTyxRQUNULEVBQ0EsS0FBTSxDQUNKLE1BQU8sUUFDVCxFQUNBLFFBQVMsQ0FDUCxNQUFPLFFBQ1QsRUFDQSxLQUFNLENBQ0osTUFBTyxRQUNULEVBTUEsS0FBTSxDQUNKLE1BQU8sTUFDVCxFQU1BLFVBQVcsQ0FDVCxNQUFPLFVBQ1QsRUFNQSxZQUFhLENBQ1gsTUFBTyxVQUNULEVBTUEsOEJBQStCLENBQzdCLE1BQU8sVUFDVCxFQU1BLDJCQUE0QixDQUMxQixNQUFPLFVBQ1QsRUFNQSxPQUFRLENBQ04sTUFBTyxNQUNULEVBTUEseUJBQTBCLENBQ3hCLE1BQU8sTUFDVCxFQU1BLHNCQUF1QixDQUNyQixNQUFPLFVBQ1QsRUFDQSxLQUFNLENBRUosTUFBTyxLQUNULEVBRUEsS0FBTSxDQUNKLE1BQU8sU0FDVCxFQUNBLEtBQU0sQ0FDSixNQUFP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Q0FDdEIsSUFDQSxLQUNBLElBQ0EsS0FDQSxJQUNBLEtBQ0EsS0FDQSxTQUNBLE9BQ0EsV0FDQSxRQUNBLFdBQ0YsRUFLTyxTQUFTQyxJQUFpQixDQUMvQixJQUFNaEMsRUFBU2lDLEVBQWdCLEVBQ3pCLENBQUMsQ0FBRSxTQUFBN0IsQ0FBUyxDQUFDLEVBQUk4QixFQUFrQixFQUd6QyxPQUFPN0IsRUFBb0IsQ0FBRSxPQUFBTCxFQUFRLFNBQUFJLEVBQVUsTUFGakMsQ0FBRSxXQUFZLENBQUMsRUFBRyxJQUFLLFVBQVcsQ0FFSyxDQUFDLENBY3hEIiwKICAibmFtZXMiOiBbImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgIlBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQSIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJnZXRQb3N0Z3JlU1FMQnVpbGRlciIsICJyZXF1aXJlbWVudHMiLCAiZ2V0QnVpbGRlciIsICJQb3N0Z3Jlc0FkYXB0ZXIiLCAiUG9zdGdyZXNRdWVyeUNvbXBpbGVyIiwgImdldEluc2VydFF1ZXJ5IiwgImRldGFpbHMiLCAicmVxdWlyZW1lbnRzIiwgInRhYmxlTmFtZSIsICJzY2hlbWEiLCAiY29sdW1ucyIsICJyb3dzIiwgImJ1aWxkZXIiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAiY29tcGlsZSIsICJhcHBseVRyYW5zZm9ybWF0aW9ucyIsICJnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzIiwgImdldFNlbGVjdFF1ZXJ5IiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImZpbHRlckV4cHJlc3Npb24iLCAiZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbiIsICJjb3VudFF1ZXJ5IiwgImViIiwgInNxbCIsICJxYiIsICJpdGVtIiwgIm1vY2tTZWxlY3RRdWVyeSIsICJnZXRVcGRhdGVRdWVyeSIsICJjaGFuZ2VzIiwgInJvdyIsICJhcHBseUluZmVycmVkUm93RmlsdGVycyIsICJnZXREZWxldGVRdWVyeSIsICJleHByZXNzaW9uQnVpbGRlciIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJqc29uQXJyYXlGcm9tIiwgImV4cHIiLCAic3FsIiwgIlJFR1VMQVJfVEFCTEVfS0lORCIsICJWSUVXX1RBQkxFX0tJTkQiLCAiVEFCTEVfS0lORFMiLCAiZ2V0VGFibGVzUXVlcnkiLCAicmVxdWlyZW1lbnRzIiwgImNvbXBpbGUiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAiZXhjbHVkZVN5c3RlbVRhYmxlcyIsICJlYiIsICJqc29uQXJyYXlGcm9tIiwgImpiIiwgIm9uX2ViIiwgInNxbCIsICJtb2NrVGFibGVzUXVlcnkiLCAiZ2V0VGltZXpvbmVRdWVyeSIsICJidWlsZGVyIiwgIm1vY2tUaW1lem9uZVF1ZXJ5IiwgInFiIiwgImNyZWF0ZVBvc3RncmVzQWRhcHRlciIsICJyZXF1aXJlbWVudHMiLCAiZXhlY3V0b3IiLCAib3RoZXJSZXF1aXJlbWVudHMiLCAib3B0aW9ucyIsICJ0YWJsZXNRdWVyeSIsICJnZXRUYWJsZXNRdWVyeSIsICJ0aW1lem9uZVF1ZXJ5IiwgImdldFRpbWV6b25lUXVlcnkiLCAidGFibGVzRXJyb3IiLCAidGFibGVzIiwgInRpbWV6b25lRXJyb3IiLCAidGltZXpvbmVzIiwgImNyZWF0ZUFkYXB0ZXJFcnJvciIsICJ0aW1lem9uZSIsICJjcmVhdGVJbnRyb3NwZWN0aW9uIiwgImVycm9yIiwgImRldGFpbHMiLCAicXVlcnkiLCAiZ2V0U2VsZWN0UXVlcnkiLCAicmVzdWx0cyIsICJnZXRJbnNlcnRRdWVyeSIsICJyb3dzIiwgImdldFVwZGF0ZVF1ZXJ5IiwgInJvdyIsICJnZXREZWxldGVRdWVyeSIsICJhcmdzIiwgInJlc3VsdCIsICJzY2hlbWFzIiwgImNvbHVtbnMiLCAidGFibGVOYW1lIiwgInNjaGVtYSIsICJjb2x1bW5zUmVjb3JkIiwgImNvbHVtbiIsICJkYXRhdHlwZSIsICJkYXRhdHlwZV9zY2hlbWEiLCAiY29sdW1uTmFtZSIsICJudWxsYWJsZSIsICJpc0FycmF5IiwgInN0cmlwcGVkRGF0YVR5cGUiLCAiUE9TVEdSRVNRTF9EQVRBX1RZUEVTX1RPX01FVEFEQVRBIiwgImZpbHRlck9wZXJhdG9ycyIsICJtb2NrSW50cm9zcGVjdCIsICJtb2NrVGFibGVzUXVlcnkiLCAibW9ja1RpbWV6b25lUXVlcnkiXQp9Cg==
@@ -0,0 +1,10 @@
1
+ import * as ___react___ from 'react';
2
+ import * as ___react_dom___ from 'react-dom';
3
+
4
+ function require(mod) {
5
+ if (mod === 'react') return ___react___;
6
+ if (mod === 'react-dom') return ___react_dom___;
7
+ throw new Error(`Unknown module ${mod}`);
8
+ }
9
+ import{o as n}from"./chunk-WHLVNWIR.js";import{e}from"./chunk-GDQBQ7MK.js";e();function p(){return n("select pg_backend_pid() as pid")}function c(r){return{parameters:[r],sql:"select pg_cancel_backend($1);"}}export{p as a,c as b};
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL3V0aWxpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGFzUXVlcnksIHR5cGUgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBJRFF1ZXJ5KCk6IFF1ZXJ5PHsgcGlkOiB1bmtub3duIH0+IHtcbiAgcmV0dXJuIGFzUXVlcnkoXCJzZWxlY3QgcGdfYmFja2VuZF9waWQoKSBhcyBwaWRcIik7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBmdW5jdGlvbiBnZXRDYW5jZWxRdWVyeShwaWQ6IHt9KTogUXVlcnk8dW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IFtwaWRdLFxuICAgIHNxbDogXCJzZWxlY3QgcGdfY2FuY2VsX2JhY2tlbmQoJDEpO1wiLFxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7MkVBQUFBLElBRU8sU0FBU0MsR0FBdUMsQ0FDckQsT0FBT0MsRUFBUSxnQ0FBZ0MsQ0FDakQsQ0FHTyxTQUFTQyxFQUFlQyxFQUF5QixDQUN0RCxNQUFPLENBQ0wsV0FBWSxDQUFDQSxDQUFHLEVBQ2hCLElBQUssK0JBQ1AsQ0FDRiIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJnZXRQSURRdWVyeSIsICJhc1F1ZXJ5IiwgImdldENhbmNlbFF1ZXJ5IiwgInBpZCJdCn0K
@@ -0,0 +1,10 @@
1
+ import * as ___react___ from 'react';
2
+ import * as ___react_dom___ from 'react-dom';
3
+
4
+ function require(mod) {
5
+ if (mod === 'react') return ___react___;
6
+ if (mod === 'react-dom') return ___react_dom___;
7
+ throw new Error(`Unknown module ${mod}`);
8
+ }
9
+ import{e}from"./chunk-GDQBQ7MK.js";e();function u(r){return{parameters:[r],sql:"kill ?"}}export{u as a};
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9teXNxbC1jb3JlL3V0aWxpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbmNlbFF1ZXJ5KHRocmVhZElkOiB1bmtub3duKTogUXVlcnk8dW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IFt0aHJlYWRJZF0sXG4gICAgc3FsOiBcImtpbGwgP1wiLFxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7bUNBQUFBLElBRU8sU0FBU0MsRUFBZUMsRUFBbUMsQ0FDaEUsTUFBTyxDQUNMLFdBQVksQ0FBQ0EsQ0FBUSxFQUNyQixJQUFLLFFBQ1AsQ0FDRiIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJnZXRDYW5jZWxRdWVyeSIsICJ0aHJlYWRJZCJdCn0K
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var u=(e,r)=>{for(var p in r)n(e,p,{get:r[p],enumerable:!0})},m=(e,r,p,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of s(r))!a.call(e,t)&&t!==p&&n(e,t,{get:()=>r[t],enumerable:!(o=i(r,t))||o.enumerable});return e};var l=e=>m(n({},"__esModule",{value:!0}),e);var E={};u(E,{createMySQLAdapter:()=>A,getCancelQuery:()=>h});module.exports=l(E);function A(e){let{executor:r,...p}=e;return{delete(o,t){throw new Error("Method not implemented.")},insert(o,t){throw new Error("Method not implemented.")},introspect(o){throw new Error("Method not implemented.")},query(o,t){throw new Error("Method not implemented.")},update(o,t){throw new Error("Method not implemented.")}}}function h(e){return{parameters:[e],sql:"kill ?"}}
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbC1jb3JlL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9hZGFwdGVyLnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS91dGlsaXR5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5XCI7XG4iLCAiaW1wb3J0IHR5cGUge1xuICBBZGFwdGVyLFxuICBBZGFwdGVyRGVsZXRlUmVzdWx0LFxuICBBZGFwdGVyRXJyb3IsXG4gIEFkYXB0ZXJJbnNlcnRSZXN1bHQsXG4gIEFkYXB0ZXJJbnRyb3NwZWN0UmVzdWx0LFxuICBBZGFwdGVyUXVlcnlSZXN1bHQsXG4gIEFkYXB0ZXJSZXF1aXJlbWVudHMsXG4gIEFkYXB0ZXJVcGRhdGVSZXN1bHQsXG59IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIE15U1FMQWRhcHRlclJlcXVpcmVtZW50cyA9IEFkYXB0ZXJSZXF1aXJlbWVudHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeVNRTEFkYXB0ZXIocmVxdWlyZW1lbnRzOiBNeVNRTEFkYXB0ZXJSZXF1aXJlbWVudHMpOiBBZGFwdGVyIHtcbiAgY29uc3QgeyBleGVjdXRvciwgLi4uX290aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGUoX2RldGFpbHMsIF9vcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyRGVsZXRlUmVzdWx0Pj4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfSxcblxuICAgIGluc2VydChfZGV0YWlscywgX29wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJJbnNlcnRSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgaW50cm9zcGVjdChfb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgcXVlcnkoX2RldGFpbHMsIF9vcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyUXVlcnlSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgdXBkYXRlKF9kZXRhaWxzLCBfb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclVwZGF0ZVJlc3VsdD4+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBRdWVyeSB9IGZyb20gXCIuLi9xdWVyeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FuY2VsUXVlcnkodGhyZWFkSWQ6IHVua25vd24pOiBRdWVyeTx1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyczogW3RocmVhZElkXSxcbiAgICBzcWw6IFwia2lsbCA/XCIsXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAieWFBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLHdCQUFBRSxFQUFBLG1CQUFBQyxJQUFBLGVBQUFDLEVBQUFKLEdDY08sU0FBU0ssRUFBbUJDLEVBQWlELENBQ2xGLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLEdBQUdDLENBQW1CLEVBQUlGLEVBRTVDLE1BQU8sQ0FDTCxPQUFPRyxFQUFVQyxFQUE4RCxDQUM3RSxNQUFNLElBQUksTUFBTSx5QkFBeUIsQ0FDM0MsRUFFQSxPQUFPRCxFQUFVQyxFQUE4RCxDQUM3RSxNQUFNLElBQUksTUFBTSx5QkFBeUIsQ0FDM0MsRUFFQSxXQUFXQSxFQUFrRSxDQUMzRSxNQUFNLElBQUksTUFBTSx5QkFBeUIsQ0FDM0MsRUFFQSxNQUFNRCxFQUFVQyxFQUE2RCxDQUMzRSxNQUFNLElBQUksTUFBTSx5QkFBeUIsQ0FDM0MsRUFFQSxPQUFPRCxFQUFVQyxFQUE4RCxDQUM3RSxNQUFNLElBQUksTUFBTSx5QkFBeUIsQ0FDM0MsQ0FDRixDQUNGLENDcENPLFNBQVNDLEVBQWVDLEVBQW1DLENBQ2hFLE1BQU8sQ0FDTCxXQUFZLENBQUNBLENBQVEsRUFDckIsSUFBSyxRQUNQLENBQ0YiLAogICJuYW1lcyI6IFsibXlzcWxfY29yZV9leHBvcnRzIiwgIl9fZXhwb3J0IiwgImNyZWF0ZU15U1FMQWRhcHRlciIsICJnZXRDYW5jZWxRdWVyeSIsICJfX3RvQ29tbW9uSlMiLCAiY3JlYXRlTXlTUUxBZGFwdGVyIiwgInJlcXVpcmVtZW50cyIsICJleGVjdXRvciIsICJfb3RoZXJSZXF1aXJlbWVudHMiLCAiX2RldGFpbHMiLCAiX29wdGlvbnMiLCAiZ2V0Q2FuY2VsUXVlcnkiLCAidGhyZWFkSWQiXQp9Cg==
@@ -0,0 +1,9 @@
1
+ import { d as AdapterRequirements, A as Adapter, Q as Query } from '../../index-2horhMcs.cjs';
2
+ import 'kysely';
3
+
4
+ type MySQLAdapterRequirements = AdapterRequirements;
5
+ declare function createMySQLAdapter(requirements: MySQLAdapterRequirements): Adapter;
6
+
7
+ declare function getCancelQuery(threadId: unknown): Query<unknown>;
8
+
9
+ export { type MySQLAdapterRequirements, createMySQLAdapter, getCancelQuery };
@@ -0,0 +1,9 @@
1
+ import { d as AdapterRequirements, A as Adapter, Q as Query } from '../../index-2horhMcs.js';
2
+ import 'kysely';
3
+
4
+ type MySQLAdapterRequirements = AdapterRequirements;
5
+ declare function createMySQLAdapter(requirements: MySQLAdapterRequirements): Adapter;
6
+
7
+ declare function getCancelQuery(threadId: unknown): Query<unknown>;
8
+
9
+ export { type MySQLAdapterRequirements, createMySQLAdapter, getCancelQuery };
@@ -0,0 +1,10 @@
1
+ import * as ___react___ from 'react';
2
+ import * as ___react_dom___ from 'react-dom';
3
+
4
+ function require(mod) {
5
+ if (mod === 'react') return ___react___;
6
+ if (mod === 'react-dom') return ___react_dom___;
7
+ throw new Error(`Unknown module ${mod}`);
8
+ }
9
+ import{a as i}from"../../chunk-ZUEQ555M.js";import{e as t}from"../../chunk-GDQBQ7MK.js";t();t();function n(o){let{executor:d,...s}=o;return{delete(e,r){throw new Error("Method not implemented.")},insert(e,r){throw new Error("Method not implemented.")},introspect(e){throw new Error("Method not implemented.")},query(e,r){throw new Error("Method not implemented.")},update(e,r){throw new Error("Method not implemented.")}}}export{n as createMySQLAdapter,i as getCancelQuery};
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbC1jb3JlL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9hZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5XCI7XG4iLCAiaW1wb3J0IHR5cGUge1xuICBBZGFwdGVyLFxuICBBZGFwdGVyRGVsZXRlUmVzdWx0LFxuICBBZGFwdGVyRXJyb3IsXG4gIEFkYXB0ZXJJbnNlcnRSZXN1bHQsXG4gIEFkYXB0ZXJJbnRyb3NwZWN0UmVzdWx0LFxuICBBZGFwdGVyUXVlcnlSZXN1bHQsXG4gIEFkYXB0ZXJSZXF1aXJlbWVudHMsXG4gIEFkYXB0ZXJVcGRhdGVSZXN1bHQsXG59IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIE15U1FMQWRhcHRlclJlcXVpcmVtZW50cyA9IEFkYXB0ZXJSZXF1aXJlbWVudHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeVNRTEFkYXB0ZXIocmVxdWlyZW1lbnRzOiBNeVNRTEFkYXB0ZXJSZXF1aXJlbWVudHMpOiBBZGFwdGVyIHtcbiAgY29uc3QgeyBleGVjdXRvciwgLi4uX290aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGUoX2RldGFpbHMsIF9vcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyRGVsZXRlUmVzdWx0Pj4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfSxcblxuICAgIGluc2VydChfZGV0YWlscywgX29wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJJbnNlcnRSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgaW50cm9zcGVjdChfb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgcXVlcnkoX2RldGFpbHMsIF9vcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyUXVlcnlSZXN1bHQ+PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9LFxuXG4gICAgdXBkYXRlKF9kZXRhaWxzLCBfb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclVwZGF0ZVJlc3VsdD4+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH0sXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozt3RkFBQUEsSUNBQUMsSUFjTyxTQUFTQyxFQUFtQkMsRUFBaUQsQ0FDbEYsR0FBTSxDQUFFLFNBQUFDLEVBQVUsR0FBR0MsQ0FBbUIsRUFBSUYsRUFFNUMsTUFBTyxDQUNMLE9BQU9HLEVBQVVDLEVBQThELENBQzdFLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixDQUMzQyxFQUVBLE9BQU9ELEVBQVVDLEVBQThELENBQzdFLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixDQUMzQyxFQUVBLFdBQVdBLEVBQWtFLENBQzNFLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixDQUMzQyxFQUVBLE1BQU1ELEVBQVVDLEVBQTZELENBQzNFLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixDQUMzQyxFQUVBLE9BQU9ELEVBQVVDLEVBQThELENBQzdFLE1BQU0sSUFBSSxNQUFNLHlCQUF5QixDQUMzQyxDQUNGLENBQ0YiLAogICJuYW1lcyI6IFsiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiY3JlYXRlTXlTUUxBZGFwdGVyIiwgInJlcXVpcmVtZW50cyIsICJleGVjdXRvciIsICJfb3RoZXJSZXF1aXJlbWVudHMiLCAiX2RldGFpbHMiLCAiX29wdGlvbnMiXQp9Cg==
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var v=(e,r)=>{for(var o in r)c(e,o,{get:r[o],enumerable:!0})},Q=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of w(r))!q.call(e,n)&&n!==o&&c(e,n,{get:()=>r[n],enumerable:!(t=P(r,n))||t.enumerable});return e};var g=e=>Q(c({},"__esModule",{value:!0}),e);var R={};v(R,{createMySQL2Executor:()=>h});module.exports=g(R);var l=class extends Error{constructor(){super("This operation was aborted"),this.name="AbortError"}};function a(){return[new l]}function x(e){return{parameters:[e],sql:"kill ?"}}function h(e){return{execute:async(r,o)=>{let{abortSignal:t}=o||{};if(!t)try{let[i]=await e.query(r.sql,r.parameters);return[null,i]}catch(i){return[i]}if(t.aborted)return a();let n,s;try{let i,y=new Promise(b=>i=b);t.addEventListener("abort",n=()=>i());let m=e.getConnection(),p=await Promise.race([m,y]);if(!p)return m.catch(()=>{}),a();if(s=p,t.aborted)return s.release(),a();let f=(s||e).query(r.sql,r.parameters),u=await Promise.race([f,y]);if(!u)return Promise.allSettled([k(e,u),f]).finally(()=>s?.release()),a();s.release();let[E]=u;return[null,E]}catch(i){return s?.release(),[i]}finally{n&&t?.removeEventListener("abort",n)}}}}async function k(e,r){let o=x(r);try{await e.query(o.sql,o.parameters)}catch(t){console.error("Failed to cancel query:",t)}}
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbDIvaW5kZXgudHMiLCAiLi4vLi4vLi4vZGF0YS9leGVjdXRvci50cyIsICIuLi8uLi8uLi9kYXRhL215c3FsLWNvcmUvdXRpbGl0eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBQb29sLCBQb29sQ29ubmVjdGlvbiB9IGZyb20gXCJteXNxbDIvcHJvbWlzZVwiO1xuXG5pbXBvcnQgeyB0eXBlIEV4ZWN1dG9yLCBnZXRBYm9ydFJlc3VsdCB9IGZyb20gXCIuLi9leGVjdXRvclwiO1xuaW1wb3J0IHsgZ2V0Q2FuY2VsUXVlcnkgfSBmcm9tIFwiLi4vbXlzcWwtY29yZS91dGlsaXR5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeVNRTDJFeGVjdXRvcihwb29sOiBQb29sKTogRXhlY3V0b3Ige1xuICByZXR1cm4ge1xuICAgIGV4ZWN1dGU6IGFzeW5jIChxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgeyBhYm9ydFNpZ25hbCB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgaWYgKCFhYm9ydFNpZ25hbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgcG9vbC5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgcmV0dXJuIFtudWxsLCByZXN1bHQgYXMgbmV2ZXJdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYWJvcnRMaXN0ZW5lcjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGNvbm5lY3Rpb246IFBvb2xDb25uZWN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWJvcnRlZDogKCkgPT4gdm9pZDtcbiAgICAgICAgY29uc3QgYWJvcnRpb25Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IChhYm9ydGVkID0gcmVzb2x2ZSkpO1xuXG4gICAgICAgIGFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoYWJvcnRMaXN0ZW5lciA9ICgpID0+IGFib3J0ZWQoKSkpO1xuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm9taXNlID0gcG9vbC5nZXRDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY29ubmVjdGlvblJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbY29ubmVjdGlvblByb21pc2UsIGFib3J0aW9uUHJvbWlzZV0pO1xuXG4gICAgICAgIGlmICghY29ubmVjdGlvblJlc3VsdCkge1xuICAgICAgICAgIHZvaWQgY29ubmVjdGlvblByb21pc2UuY2F0Y2goKCkgPT4ge30pO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25uZWN0aW9uID0gY29ubmVjdGlvblJlc3VsdDtcblxuICAgICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVByb21pc2UgPSAoY29ubmVjdGlvbiB8fCBwb29sKS5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtxdWVyeVByb21pc2UsIGFib3J0aW9uUHJvbWlzZV0pO1xuXG4gICAgICAgIGlmICghcXVlcnlSZXN1bHQpIHtcbiAgICAgICAgICAvLyBub3QgaW1wb3J0YW50IGVub3VnaCB0byBhd2FpdC5cbiAgICAgICAgICB2b2lkIFByb21pc2UuYWxsU2V0dGxlZChbY2FuY2VsUXVlcnkocG9vbCwgcXVlcnlSZXN1bHQpLCBxdWVyeVByb21pc2VdKS5maW5hbGx5KCgpID0+IGNvbm5lY3Rpb24/LnJlbGVhc2UoKSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgIGNvbnN0IFtyZXN1bHRdID0gcXVlcnlSZXN1bHQ7XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCByZXN1bHQgYXMgbmV2ZXJdO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGFib3J0TGlzdGVuZXIpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FuY2VsUXVlcnkocG9vbDogUG9vbCwgdGhyZWFkSWQ6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcXVlcnkgPSBnZXRDYW5jZWxRdWVyeSh0aHJlYWRJZCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBwb29sLnF1ZXJ5KHF1ZXJ5LnNxbCwgcXVlcnkucGFyYW1ldGVycyk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjYW5jZWwgcXVlcnk6XCIsIGVycm9yKTtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgRWl0aGVyIH0gZnJvbSBcIi4vdHlwZS11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZTxUPihxdWVyeTogUXVlcnk8VD4sIG9wdGlvbnM/OiBFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEVycm9yLCBRdWVyeVJlc3VsdDxRdWVyeTxUPj4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlT3B0aW9ucyB7XG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbmV4cG9ydCBjbGFzcyBBYm9ydEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlRoaXMgb3BlcmF0aW9uIHdhcyBhYm9ydGVkXCIpO1xuICAgIHRoaXMubmFtZSA9IFwiQWJvcnRFcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYm9ydFJlc3VsdCgpOiBbQWJvcnRFcnJvcl0ge1xuICByZXR1cm4gW25ldyBBYm9ydEVycm9yKCldO1xufVxuIiwgImltcG9ydCB0eXBlIHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbmNlbFF1ZXJ5KHRocmVhZElkOiB1bmtub3duKTogUXVlcnk8dW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IFt0aHJlYWRJZF0sXG4gICAgc3FsOiBcImtpbGwgP1wiLFxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogInlhQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSwwQkFBQUUsSUFBQSxlQUFBQyxFQUFBSCxHQ1dPLElBQU1JLEVBQU4sY0FBeUIsS0FBTSxDQUNwQyxhQUFjLENBQ1osTUFBTSw0QkFBNEIsRUFDbEMsS0FBSyxLQUFPLFlBQ2QsQ0FDRixFQUVPLFNBQVNDLEdBQStCLENBQzdDLE1BQU8sQ0FBQyxJQUFJRCxDQUFZLENBQzFCLENDbEJPLFNBQVNFLEVBQWVDLEVBQW1DLENBQ2hFLE1BQU8sQ0FDTCxXQUFZLENBQUNBLENBQVEsRUFDckIsSUFBSyxRQUNQLENBQ0YsQ0ZGTyxTQUFTQyxFQUFxQkMsRUFBc0IsQ0FDekQsTUFBTyxDQUNMLFFBQVMsTUFBT0MsRUFBT0MsSUFBWSxDQUNqQyxHQUFNLENBQUUsWUFBQUMsQ0FBWSxFQUFJRCxHQUFXLENBQUMsRUFFcEMsR0FBSSxDQUFDQyxFQUNILEdBQUksQ0FDRixHQUFNLENBQUNDLENBQU0sRUFBSSxNQUFNSixFQUFLLE1BQU1DLEVBQU0sSUFBS0EsRUFBTSxVQUFVLEVBRTdELE1BQU8sQ0FBQyxLQUFNRyxDQUFlLENBQy9CLE9BQVNDLEVBQWdCLENBQ3ZCLE1BQU8sQ0FBQ0EsQ0FBYyxDQUN4QixDQUdGLEdBQUlGLEVBQVksUUFDZCxPQUFPRyxFQUFlLEVBR3hCLElBQUlDLEVBQ0FDLEVBRUosR0FBSSxDQUNGLElBQUlDLEVBQ0VDLEVBQWtCLElBQUksUUFBZUMsR0FBYUYsRUFBVUUsQ0FBUSxFQUUxRVIsRUFBWSxpQkFBaUIsUUFBVUksRUFBZ0IsSUFBTUUsRUFBUSxDQUFFLEVBRXZFLElBQU1HLEVBQW9CWixFQUFLLGNBQWMsRUFFdkNhLEVBQW1CLE1BQU0sUUFBUSxLQUFLLENBQUNELEVBQW1CRixDQUFlLENBQUMsRUFFaEYsR0FBSSxDQUFDRyxFQUNILE9BQUtELEVBQWtCLE1BQU0sSUFBTSxDQUFDLENBQUMsRUFFOUJOLEVBQWUsRUFLeEIsR0FGQUUsRUFBYUssRUFFVFYsRUFBWSxRQUNkLE9BQUFLLEVBQVcsUUFBUSxFQUVaRixFQUFlLEVBR3hCLElBQU1RLEdBQWdCTixHQUFjUixHQUFNLE1BQU1DLEVBQU0sSUFBS0EsRUFBTSxVQUFVLEVBRXJFYyxFQUFjLE1BQU0sUUFBUSxLQUFLLENBQUNELEVBQWNKLENBQWUsQ0FBQyxFQUV0RSxHQUFJLENBQUNLLEVBRUgsT0FBSyxRQUFRLFdBQVcsQ0FBQ0MsRUFBWWhCLEVBQU1lLENBQVcsRUFBR0QsQ0FBWSxDQUFDLEVBQUUsUUFBUSxJQUFNTixHQUFZLFFBQVEsQ0FBQyxFQUVwR0YsRUFBZSxFQUd4QkUsRUFBVyxRQUFRLEVBRW5CLEdBQU0sQ0FBQ0osQ0FBTSxFQUFJVyxFQUVqQixNQUFPLENBQUMsS0FBTVgsQ0FBZSxDQUMvQixPQUFTQyxFQUFnQixDQUN2QixPQUFBRyxHQUFZLFFBQVEsRUFFYixDQUFDSCxDQUFjLENBQ3hCLFFBQUUsQ0FDSUUsR0FDRkosR0FBYSxvQkFBb0IsUUFBU0ksQ0FBYSxDQUUzRCxDQUNGLENBQ0YsQ0FDRixDQUVBLGVBQWVTLEVBQVloQixFQUFZaUIsRUFBa0MsQ0FDdkUsSUFBTWhCLEVBQVFpQixFQUFlRCxDQUFRLEVBRXJDLEdBQUksQ0FDRixNQUFNakIsRUFBSyxNQUFNQyxFQUFNLElBQUtBLEVBQU0sVUFBVSxDQUM5QyxPQUFTSSxFQUFnQixDQUN2QixRQUFRLE1BQU0sMEJBQTJCQSxDQUFLLENBQ2hELENBQ0YiLAogICJuYW1lcyI6IFsibXlzcWwyX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiY3JlYXRlTXlTUUwyRXhlY3V0b3IiLCAiX190b0NvbW1vbkpTIiwgIkFib3J0RXJyb3IiLCAiZ2V0QWJvcnRSZXN1bHQiLCAiZ2V0Q2FuY2VsUXVlcnkiLCAidGhyZWFkSWQiLCAiY3JlYXRlTXlTUUwyRXhlY3V0b3IiLCAicG9vbCIsICJxdWVyeSIsICJvcHRpb25zIiwgImFib3J0U2lnbmFsIiwgInJlc3VsdCIsICJlcnJvciIsICJnZXRBYm9ydFJlc3VsdCIsICJhYm9ydExpc3RlbmVyIiwgImNvbm5lY3Rpb24iLCAiYWJvcnRlZCIsICJhYm9ydGlvblByb21pc2UiLCAicmVzb2x2ZSIsICJjb25uZWN0aW9uUHJvbWlzZSIsICJjb25uZWN0aW9uUmVzdWx0IiwgInF1ZXJ5UHJvbWlzZSIsICJxdWVyeVJlc3VsdCIsICJjYW5jZWxRdWVyeSIsICJ0aHJlYWRJZCIsICJnZXRDYW5jZWxRdWVyeSJdCn0K
@@ -0,0 +1,7 @@
1
+ import { Pool } from 'mysql2/promise';
2
+ import { E as Executor } from '../../index-2horhMcs.cjs';
3
+ import 'kysely';
4
+
5
+ declare function createMySQL2Executor(pool: Pool): Executor;
6
+
7
+ export { createMySQL2Executor };
@@ -0,0 +1,7 @@
1
+ import { Pool } from 'mysql2/promise';
2
+ import { E as Executor } from '../../index-2horhMcs.js';
3
+ import 'kysely';
4
+
5
+ declare function createMySQL2Executor(pool: Pool): Executor;
6
+
7
+ export { createMySQL2Executor };
@@ -0,0 +1,10 @@
1
+ import * as ___react___ from 'react';
2
+ import * as ___react_dom___ from 'react-dom';
3
+
4
+ function require(mod) {
5
+ if (mod === 'react') return ___react___;
6
+ if (mod === 'react-dom') return ___react_dom___;
7
+ throw new Error(`Unknown module ${mod}`);
8
+ }
9
+ import{a as f}from"../../chunk-ZUEQ555M.js";import{b as a}from"../../chunk-AHIV4VYN.js";import{e as y}from"../../chunk-GDQBQ7MK.js";y();function E(t){return{execute:async(n,i)=>{let{abortSignal:r}=i||{};if(!r)try{let[e]=await t.query(n.sql,n.parameters);return[null,e]}catch(e){return[e]}if(r.aborted)return a();let s,o;try{let e,l=new Promise(v=>e=v);r.addEventListener("abort",s=()=>e());let u=t.getConnection(),m=await Promise.race([u,l]);if(!m)return u.catch(()=>{}),a();if(o=m,r.aborted)return o.release(),a();let d=(o||t).query(n.sql,n.parameters),c=await Promise.race([d,l]);if(!c)return Promise.allSettled([b(t,c),d]).finally(()=>o?.release()),a();o.release();let[P]=c;return[null,P]}catch(e){return o?.release(),[e]}finally{s&&r?.removeEventListener("abort",s)}}}}async function b(t,n){let i=f(n);try{await t.query(i.sql,i.parameters)}catch(r){console.error("Failed to cancel query:",r)}}export{E as createMySQL2Executor};
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbDIvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgUG9vbCwgUG9vbENvbm5lY3Rpb24gfSBmcm9tIFwibXlzcWwyL3Byb21pc2VcIjtcblxuaW1wb3J0IHsgdHlwZSBFeGVjdXRvciwgZ2V0QWJvcnRSZXN1bHQgfSBmcm9tIFwiLi4vZXhlY3V0b3JcIjtcbmltcG9ydCB7IGdldENhbmNlbFF1ZXJ5IH0gZnJvbSBcIi4uL215c3FsLWNvcmUvdXRpbGl0eVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTXlTUUwyRXhlY3V0b3IocG9vbDogUG9vbCk6IEV4ZWN1dG9yIHtcbiAgcmV0dXJuIHtcbiAgICBleGVjdXRlOiBhc3luYyAocXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHsgYWJvcnRTaWduYWwgfSA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIGlmICghYWJvcnRTaWduYWwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbcmVzdWx0XSA9IGF3YWl0IHBvb2wucXVlcnkocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICAgIHJldHVybiBbbnVsbCwgcmVzdWx0IGFzIG5ldmVyXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGFib3J0TGlzdGVuZXI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBjb25uZWN0aW9uOiBQb29sQ29ubmVjdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGFib3J0ZWQ6ICgpID0+IHZvaWQ7XG4gICAgICAgIGNvbnN0IGFib3J0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiAoYWJvcnRlZCA9IHJlc29sdmUpKTtcblxuICAgICAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgKGFib3J0TGlzdGVuZXIgPSAoKSA9PiBhYm9ydGVkKCkpKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZSA9IHBvb2wuZ2V0Q29ubmVjdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25SZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW2Nvbm5lY3Rpb25Qcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAoIWNvbm5lY3Rpb25SZXN1bHQpIHtcbiAgICAgICAgICB2b2lkIGNvbm5lY3Rpb25Qcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25SZXN1bHQ7XG5cbiAgICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcblxuICAgICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQcm9taXNlID0gKGNvbm5lY3Rpb24gfHwgcG9vbCkucXVlcnkocXVlcnkuc3FsLCBxdWVyeS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcXVlcnlQcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAoIXF1ZXJ5UmVzdWx0KSB7XG4gICAgICAgICAgLy8gbm90IGltcG9ydGFudCBlbm91Z2ggdG8gYXdhaXQuXG4gICAgICAgICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoW2NhbmNlbFF1ZXJ5KHBvb2wsIHF1ZXJ5UmVzdWx0KSwgcXVlcnlQcm9taXNlXSkuZmluYWxseSgoKSA9PiBjb25uZWN0aW9uPy5yZWxlYXNlKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcblxuICAgICAgICBjb25zdCBbcmVzdWx0XSA9IHF1ZXJ5UmVzdWx0O1xuXG4gICAgICAgIHJldHVybiBbbnVsbCwgcmVzdWx0IGFzIG5ldmVyXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGNvbm5lY3Rpb24/LnJlbGVhc2UoKTtcblxuICAgICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChhYm9ydExpc3RlbmVyKSB7XG4gICAgICAgICAgYWJvcnRTaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBhYm9ydExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbmNlbFF1ZXJ5KHBvb2w6IFBvb2wsIHRocmVhZElkOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0Q2FuY2VsUXVlcnkodGhyZWFkSWQpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcG9vbC5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY2FuY2VsIHF1ZXJ5OlwiLCBlcnJvcik7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O29JQUFBQSxJQUtPLFNBQVNDLEVBQXFCQyxFQUFzQixDQUN6RCxNQUFPLENBQ0wsUUFBUyxNQUFPQyxFQUFPQyxJQUFZLENBQ2pDLEdBQU0sQ0FBRSxZQUFBQyxDQUFZLEVBQUlELEdBQVcsQ0FBQyxFQUVwQyxHQUFJLENBQUNDLEVBQ0gsR0FBSSxDQUNGLEdBQU0sQ0FBQ0MsQ0FBTSxFQUFJLE1BQU1KLEVBQUssTUFBTUMsRUFBTSxJQUFLQSxFQUFNLFVBQVUsRUFFN0QsTUFBTyxDQUFDLEtBQU1HLENBQWUsQ0FDL0IsT0FBU0MsRUFBZ0IsQ0FDdkIsTUFBTyxDQUFDQSxDQUFjLENBQ3hCLENBR0YsR0FBSUYsRUFBWSxRQUNkLE9BQU9HLEVBQWUsRUFHeEIsSUFBSUMsRUFDQUMsRUFFSixHQUFJLENBQ0YsSUFBSUMsRUFDRUMsRUFBa0IsSUFBSSxRQUFlQyxHQUFhRixFQUFVRSxDQUFRLEVBRTFFUixFQUFZLGlCQUFpQixRQUFVSSxFQUFnQixJQUFNRSxFQUFRLENBQUUsRUFFdkUsSUFBTUcsRUFBb0JaLEVBQUssY0FBYyxFQUV2Q2EsRUFBbUIsTUFBTSxRQUFRLEtBQUssQ0FBQ0QsRUFBbUJGLENBQWUsQ0FBQyxFQUVoRixHQUFJLENBQUNHLEVBQ0gsT0FBS0QsRUFBa0IsTUFBTSxJQUFNLENBQUMsQ0FBQyxFQUU5Qk4sRUFBZSxFQUt4QixHQUZBRSxFQUFhSyxFQUVUVixFQUFZLFFBQ2QsT0FBQUssRUFBVyxRQUFRLEVBRVpGLEVBQWUsRUFHeEIsSUFBTVEsR0FBZ0JOLEdBQWNSLEdBQU0sTUFBTUMsRUFBTSxJQUFLQSxFQUFNLFVBQVUsRUFFckVjLEVBQWMsTUFBTSxRQUFRLEtBQUssQ0FBQ0QsRUFBY0osQ0FBZSxDQUFDLEVBRXRFLEdBQUksQ0FBQ0ssRUFFSCxPQUFLLFFBQVEsV0FBVyxDQUFDQyxFQUFZaEIsRUFBTWUsQ0FBVyxFQUFHRCxDQUFZLENBQUMsRUFBRSxRQUFRLElBQU1OLEdBQVksUUFBUSxDQUFDLEVBRXBHRixFQUFlLEVBR3hCRSxFQUFXLFFBQVEsRUFFbkIsR0FBTSxDQUFDSixDQUFNLEVBQUlXLEVBRWpCLE1BQU8sQ0FBQyxLQUFNWCxDQUFlLENBQy9CLE9BQVNDLEVBQWdCLENBQ3ZCLE9BQUFHLEdBQVksUUFBUSxFQUViLENBQUNILENBQWMsQ0FDeEIsUUFBRSxDQUNJRSxHQUNGSixHQUFhLG9CQUFvQixRQUFTSSxDQUFhLENBRTNELENBQ0YsQ0FDRixDQUNGLENBRUEsZUFBZVMsRUFBWWhCLEVBQVlpQixFQUFrQyxDQUN2RSxJQUFNaEIsRUFBUWlCLEVBQWVELENBQVEsRUFFckMsR0FBSSxDQUNGLE1BQU1qQixFQUFLLE1BQU1DLEVBQU0sSUFBS0EsRUFBTSxVQUFVLENBQzlDLE9BQVNJLEVBQWdCLENBQ3ZCLFFBQVEsTUFBTSwwQkFBMkJBLENBQUssQ0FDaEQsQ0FDRiIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJjcmVhdGVNeVNRTDJFeGVjdXRvciIsICJwb29sIiwgInF1ZXJ5IiwgIm9wdGlvbnMiLCAiYWJvcnRTaWduYWwiLCAicmVzdWx0IiwgImVycm9yIiwgImdldEFib3J0UmVzdWx0IiwgImFib3J0TGlzdGVuZXIiLCAiY29ubmVjdGlvbiIsICJhYm9ydGVkIiwgImFib3J0aW9uUHJvbWlzZSIsICJyZXNvbHZlIiwgImNvbm5lY3Rpb25Qcm9taXNlIiwgImNvbm5lY3Rpb25SZXN1bHQiLCAicXVlcnlQcm9taXNlIiwgInF1ZXJ5UmVzdWx0IiwgImNhbmNlbFF1ZXJ5IiwgInRocmVhZElkIiwgImdldENhbmNlbFF1ZXJ5Il0KfQo=