@augmentcode/onison 1.2.0-prerelease.202610010921 → 1.2.0-prerelease.202610011218

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.
@@ -126,7 +126,7 @@ gpgsig`+Mb(l)+`
126
126
  `,"utf8");let c=s[s.length-1].split(" ")[1];await r.writeStashRef(c)}else await e.rm(a)})}async function eT({fs:e,dir:t,gitdir:n}){return new xo({fs:e,dir:t,gitdir:n}).readStashReflogs({parsed:!0})}async function tT({fs:e,dir:t,gitdir:n}){let o=new xo({fs:e,dir:t,gitdir:n}),r=[o.refStashPath,o.refLogsStashPath];await ye(r,async()=>{await Promise.all(r.map(async i=>{if(await e.exists(i))return e.rm(i)}))})}async function nT({fs:e,dir:t,gitdir:n,refIdx:o=0}){await EF({fs:e,dir:t,gitdir:n,refIdx:o}),await pF({fs:e,dir:t,gitdir:n,refIdx:o})}async function RF({fs:e,dir:t,gitdir:n=C(t,".git"),op:o="push",message:r="",refIdx:i=0}){X("fs",e),X("dir",t),X("gitdir",n),X("op",o);let l={push:qK,apply:EF,drop:pF,list:eT,clear:tT,pop:nT,create:$K},s=["apply","drop","pop"];try{let a=new k(e),c=await _({fsp:a,dotgit:n});["refs","logs","logs/refs"].map(h=>C(c,h)).forEach(async h=>{await a.exists(h)||await a.mkdir(h)});let u=l[o];if(u){if(s.includes(o)&&i<0)throw new mt(`stash@${i}`,"number that is in range of [0, num of stash pushed]");return await u({fs:a,dir:t,gitdir:c,message:r,refIdx:i})}throw new Error(`To be implemented: ${o}`)}catch(a){throw a.caller="git.stash",a}}async function ZF({fs:e,dir:t,gitdir:n=C(t,".git"),filepath:o,cache:r={},refresh:i=!0}){try{X("fs",e),X("gitdir",n),X("filepath",o);let l=new k(e),s=await _({fsp:l,dotgit:n}),a=await oT({fs:l,cache:r,gitdir:s}),c=await SF({fs:l,cache:r,gitdir:s,tree:a,path:o}),d=await Ee.acquire({fs:l,gitdir:s,cache:r},async function(V){for(let m of V)if(m.path===o)return m;return null});if(c===null&&d===null&&await Dn.isIgnored({fs:l,gitdir:s,dir:t,filepath:o}))return"ignored";let u=await l.lstat(C(t,o)),h=c!==null,b=d!==null,A=u!==null,f=async()=>{if(b&&!sc(d,u))return d.oid;{let m=await(await fe.get({fs:l,gitdir:s})).get("core.autocrlf"),p=await l.read(C(t,o),{autocrlf:m}),R=await bF({gitdir:s,type:"blob",object:p});return i&&b&&d.oid===R&&u.size!==-1&&Ee.acquire({fs:l,gitdir:s,cache:r},async function(G){G.insert({filepath:o,stats:u,oid:R})}),R}};if(!h&&!A&&!b)return"absent";if(!h&&!A&&b)return"*absent";if(!h&&A&&!b)return"*added";if(!h&&A&&b)return await f()===d.oid?"added":"*added";if(h&&!A&&!b)return"deleted";if(h&&!A&&b)return c===d.oid,"*deleted";if(h&&A&&!b)return await f()===c?"*undeleted":"*undeletemodified";if(h&&A&&b){let V=await f();return V===c?V===d.oid?"unmodified":"*unmodified":V===d.oid?"modified":"*modified"}}catch(l){throw l.caller="git.status",l}}async function SF({fs:e,cache:t,gitdir:n,tree:o,path:r}){typeof r=="string"&&(r=r.split("/"));let i=r.shift();for(let l of o)if(l.path===i){if(r.length===0)return l.oid;let{type:s,object:a}=await de({fs:e,cache:t,gitdir:n,oid:l.oid});if(s==="tree"){let c=Pe.from(a);return SF({fs:e,cache:t,gitdir:n,tree:c,path:r})}if(s==="blob")throw new De(l.oid,s,"blob",r.join("/"))}return null}async function oT({fs:e,cache:t,gitdir:n}){let o;try{o=await y.resolve({fs:e,gitdir:n,ref:"HEAD"})}catch(i){if(i instanceof ae)return[]}let{tree:r}=await Mr({fs:e,cache:t,gitdir:n,oid:o});return r}async function XF({fs:e,dir:t,gitdir:n=C(t,".git"),ref:o="HEAD",filepaths:r=["."],filter:i,cache:l={},ignored:s=!1,refresh:a=!0}){try{X("fs",e),X("gitdir",n),X("ref",o);let c=new k(e),d=await _({fsp:c,dotgit:n});return await bn({fs:c,cache:l,dir:t,gitdir:d,trees:[ze({ref:o}),Hr({refresh:a}),vo()],map:async function(u,[h,b,A]){if(!h&&!A&&b&&!s&&await Dn.isIgnored({fs:c,dir:t,filepath:u})||!r.some(Z=>sN(u,Z)))return null;if(i&&!i(u))return;let[f,V,m]=await Promise.all([h&&h.type(),b&&b.type(),A&&A.type()]),p=[f,V,m].includes("blob");if((f==="tree"||f==="special")&&!p)return;if(f==="commit")return null;if((V==="tree"||V==="special")&&!p)return;if(m==="commit")return null;if((m==="tree"||m==="special")&&!p)return;let R=f==="blob"?await h.oid():void 0,G=m==="blob"?await A.oid():void 0,I;f!=="blob"&&V==="blob"&&m!=="blob"?I="42":V==="blob"&&(I=await b.oid());let W=[void 0,R,I,G],g=W.map(Z=>W.indexOf(Z));return g.shift(),[u,...g]}})}catch(c){throw c.caller="git.statusMatrix",c}}async function WF({fs:e,dir:t,gitdir:n=C(t,".git"),ref:o,object:r,force:i=!1}){try{X("fs",e),X("gitdir",n),X("ref",o);let l=new k(e);if(o===void 0)throw new je("ref");o=o.startsWith("refs/tags/")?o:`refs/tags/${o}`;let s=await _({fsp:l,dotgit:n}),a=await y.resolve({fs:l,gitdir:s,ref:r||"HEAD"});if(!i&&await y.exists({fs:l,gitdir:s,ref:o}))throw new Bt("tag",o);await y.writeRef({fs:l,gitdir:s,ref:o,value:a})}catch(l){throw l.caller="git.tag",l}}async function GF({fs:e,dir:t,gitdir:n=C(t,".git"),cache:o={},filepath:r,oid:i,mode:l,add:s,remove:a,force:c}){try{X("fs",e),X("gitdir",n),X("filepath",r);let d=new k(e),u=await _({fsp:d,dotgit:n});if(a)return await Ee.acquire({fs:d,gitdir:u,cache:o},async function(b){if(!c){let A=await d.lstat(C(t,r));if(A){if(A.isDirectory())throw new zn("directory");return}}b.has({filepath:r})&&b.delete({filepath:r})});let h;if(!i){if(h=await d.lstat(C(t,r)),!h)throw new ae(`file at "${r}" on disk and "remove" not set`);if(h.isDirectory())throw new zn("directory")}return await Ee.acquire({fs:d,gitdir:u,cache:o},async function(b){if(!s&&!b.has({filepath:r}))throw new ae(`file at "${r}" in index and "add" not set`);let A;if(i)A={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:l,uid:0,gid:0,size:0};else{A=h;let f=A.isSymbolicLink()?await d.readlink(C(t,r)):await d.read(C(t,r));i=await $e({fs:d,gitdir:u,type:"blob",format:"content",object:f})}return b.insert({filepath:r,oid:i,stats:A}),i})}catch(d){throw d.caller="git.updateIndex",d}}function IF(){try{return pc.version}catch(e){throw e.caller="git.version",e}}async function NF({fs:e,dir:t,gitdir:n=C(t,".git"),trees:o,map:r,reduce:i,iterate:l,cache:s={}}){try{X("fs",e),X("gitdir",n),X("trees",o);let a=new k(e),c=await _({fsp:a,dotgit:n});return await bn({fs:a,cache:s,dir:t,gitdir:c,trees:o,map:r,reduce:i,iterate:l})}catch(a){throw a.caller="git.walk",a}}async function FF({fs:e,dir:t,gitdir:n=C(t,".git"),blob:o}){try{X("fs",e),X("gitdir",n),X("blob",o);let r=new k(e),i=await _({fsp:r,dotgit:n});return await $e({fs:r,gitdir:i,type:"blob",object:o,format:"content"})}catch(r){throw r.caller="git.writeBlob",r}}async function BF({fs:e,dir:t,gitdir:n=C(t,".git"),commit:o}){try{X("fs",e),X("gitdir",n),X("commit",o);let r=new k(e),i=await _({fsp:r,dotgit:n});return await mF({fs:r,gitdir:i,commit:o})}catch(r){throw r.caller="git.writeCommit",r}}async function YF({fs:e,dir:t,gitdir:n=C(t,".git"),type:o,object:r,format:i="parsed",oid:l,encoding:s=void 0}){try{let a=new k(e),c=await _({fsp:a,dotgit:n});if(i==="parsed"){switch(o){case"commit":r=qe.from(r).toObject();break;case"tree":r=Pe.from(r).toObject();break;case"blob":r=Buffer.from(r,s);break;case"tag":r=lt.from(r).toObject();break;default:throw new De(l||"",o,"blob|commit|tag|tree")}i="content"}return l=await $e({fs:a,gitdir:c,type:o,object:r,oid:l,format:i}),l}catch(a){throw a.caller="git.writeObject",a}}async function CF({fs:e,dir:t,gitdir:n=C(t,".git"),ref:o,value:r,force:i=!1,symbolic:l=!1}){try{X("fs",e),X("gitdir",n),X("ref",o),X("value",r);let s=new k(e);if(!Bl(o,!0))throw new mt(o,dl.clean(o));let a=await _({fsp:s,dotgit:n});if(!i&&await y.exists({fs:s,gitdir:a,ref:o}))throw new Bt("ref",o);l?await y.writeSymbolicRef({fs:s,gitdir:a,ref:o,value:r}):(r=await y.resolve({fs:s,gitdir:a,ref:r}),await y.writeRef({fs:s,gitdir:a,ref:o,value:r}))}catch(s){throw s.caller="git.writeRef",s}}async function rT({fs:e,gitdir:t,tag:n}){let o=lt.from(n).toObject();return await $e({fs:e,gitdir:t,type:"tag",object:o,format:"content"})}async function UF({fs:e,dir:t,gitdir:n=C(t,".git"),tag:o}){try{X("fs",e),X("gitdir",n),X("tag",o);let r=new k(e),i=await _({fsp:r,dotgit:n});return await rT({fs:r,gitdir:i,tag:o})}catch(r){throw r.caller="git.writeTag",r}}async function yF({fs:e,dir:t,gitdir:n=C(t,".git"),tree:o}){try{X("fs",e),X("gitdir",n),X("tree",o);let r=new k(e),i=await _({fsp:r,dotgit:n});return await yl({fs:r,gitdir:i,tree:o})}catch(r){throw r.caller="git.writeTree",r}}var iT={Errors:DI,STAGE:vo,TREE:ze,WORKDIR:Hr,add:PI,abortMerge:MI,addNote:nN,addRemote:rN,annotatedTag:iN,branch:lN,cherryPick:dN,checkout:VA,clone:fN,commit:VN,getConfig:YN,getConfigAll:CN,setConfig:VF,currentBranch:mN,deleteBranch:gN,deleteRef:EN,deleteRemote:pN,deleteTag:RN,expandOid:ZN,expandRef:SN,fastForward:GN,fetch:IN,findMergeBase:NN,findRoot:BN,getRemoteInfo:UN,getRemoteInfo2:wN,hashBlob:xN,indexPack:vN,init:JN,isDescendent:_N,isIgnored:QN,listBranches:KN,listFiles:zN,listNotes:DN,listRefs:LN,listRemotes:HN,listServerRefs:MN,listTags:ON,log:PN,merge:qN,packObjects:eF,pull:tF,push:nF,readBlob:iF,readCommit:EA,readNote:lF,readObject:sF,readTag:aF,readTree:cF,remove:dF,removeNote:uF,renameBranch:hF,resetIndex:AF,updateIndex:GF,resolveRef:fF,status:ZF,statusMatrix:XF,tag:WF,version:IF,walk:NF,writeBlob:FF,writeCommit:BF,writeObject:YF,writeRef:CF,writeTag:UF,writeTree:yF,stash:RF};v.Errors=DI;v.STAGE=vo;v.TREE=ze;v.WORKDIR=Hr;v.abortMerge=MI;v.add=PI;v.addNote=nN;v.addRemote=rN;v.annotatedTag=iN;v.branch=lN;v.checkout=VA;v.cherryPick=dN;v.clone=fN;v.commit=VN;v.currentBranch=mN;v.default=iT;v.deleteBranch=gN;v.deleteRef=EN;v.deleteRemote=pN;v.deleteTag=RN;v.expandOid=ZN;v.expandRef=SN;v.fastForward=GN;v.fetch=IN;v.findMergeBase=NN;v.findRoot=BN;v.getConfig=YN;v.getConfigAll=CN;v.getRemoteInfo=UN;v.getRemoteInfo2=wN;v.hashBlob=xN;v.indexPack=vN;v.init=JN;v.isDescendent=_N;v.isIgnored=QN;v.listBranches=KN;v.listFiles=zN;v.listNotes=DN;v.listRefs=LN;v.listRemotes=HN;v.listServerRefs=MN;v.listTags=ON;v.log=PN;v.merge=qN;v.packObjects=eF;v.pull=tF;v.push=nF;v.readBlob=iF;v.readCommit=EA;v.readNote=lF;v.readObject=sF;v.readTag=aF;v.readTree=cF;v.remove=dF;v.removeNote=uF;v.renameBranch=hF;v.resetIndex=AF;v.resolveRef=fF;v.setConfig=VF;v.stash=RF;v.status=ZF;v.statusMatrix=XF;v.tag=WF;v.updateIndex=GF;v.version=IF;v.walk=NF;v.writeBlob=FF;v.writeCommit=BF;v.writeObject=YF;v.writeRef=CF;v.writeTag=UF;v.writeTree=yF});import{AsyncLocalStorage as vT}from"node:async_hooks";import{parentPort as iB}from"node:worker_threads";import{Buffer as lx}from"node:buffer";import{randomUUID as j2,randomUUID as sx}from"node:crypto";function Pr(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var N;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(N||(N={}));function yA(){let e=0,t=0;for(let o=0;o<28;o+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(n&15)<<28,t=(n&112)>>4,(n&128)==0)return this.assertBounds(),[e,t];for(let o=3;o<=31;o+=7){let r=this.buf[this.pos++];if(t|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function _l(e,t,n){for(let i=0;i<28;i=i+7){let l=e>>>i,s=!(!(l>>>7)&&t==0),a=(s?l|128:l)&255;if(n.push(a),!s)return}let o=e>>>28&15|(t&7)<<4,r=t>>3!=0;if(n.push((r?o|128:o)&255),!!r){for(let i=3;i<31;i=i+7){let l=t>>>i,s=!!(l>>>7),a=(s?l|128:l)&255;if(n.push(a),!s)return}n.push(t>>>31&1)}}var kl=4294967296;function Cc(e){let t=e[0]==="-";t&&(e=e.slice(1));let n=1e6,o=0,r=0;function i(l,s){let a=Number(e.slice(l,s));r*=n,o=o*n+a,o>=kl&&(r=r+(o/kl|0),o=o%kl)}return i(-24,-18),i(-18,-12),i(-12,-6),i(-6),t?xA(o,r):yc(o,r)}function wA(e,t){let n=yc(e,t),o=n.hi&2147483648;o&&(n=xA(n.lo,n.hi));let r=Uc(n.lo,n.hi);return o?"-"+r:r}function Uc(e,t){if({lo:e,hi:t}=bB(e,t),t<=2097151)return String(kl*t+e);let n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535,i=n+o*6777216+r*6710656,l=o+r*8147497,s=r*2,a=1e7;return i>=a&&(l+=Math.floor(i/a),i%=a),l>=a&&(s+=Math.floor(l/a),l%=a),s.toString()+UA(l)+UA(i)}function bB(e,t){return{lo:e>>>0,hi:t>>>0}}function yc(e,t){return{lo:e|0,hi:t|0}}function xA(e,t){return t=~t,e?e=~e+1:t+=1,yc(e,t)}var UA=e=>{let t=String(e);return"0000000".slice(t.length)+t};function wc(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function vA(){let e=this.buf[this.pos++],t=e&127;if((e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)==0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)==0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var re=AB();function AB(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),r=BigInt("0"),i=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(l){let s=typeof l=="bigint"?l:BigInt(l);if(s>o||s<n)throw new Error(`invalid int64: ${l}`);return s},uParse(l){let s=typeof l=="bigint"?l:BigInt(l);if(s>i||s<r)throw new Error(`invalid uint64: ${l}`);return s},enc(l){return e.setBigInt64(0,this.parse(l),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(l){return e.setBigInt64(0,this.uParse(l),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(l,s){return e.setInt32(0,l,!0),e.setInt32(4,s,!0),e.getBigInt64(0,!0)},uDec(l,s){return e.setInt32(0,l,!0),e.setInt32(4,s,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(n){return typeof n!="string"&&(n=n.toString()),JA(n),n},uParse(n){return typeof n!="string"&&(n=n.toString()),kA(n),n},enc(n){return typeof n!="string"&&(n=n.toString()),JA(n),Cc(n)},uEnc(n){return typeof n!="string"&&(n=n.toString()),kA(n),Cc(n)},dec(n,o){return wA(n,o)},uDec(n,o){return Uc(n,o)}}}function JA(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function kA(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function tt(e,t){switch(e){case N.STRING:return"";case N.BOOL:return!1;case N.DOUBLE:case N.FLOAT:return 0;case N.INT64:case N.UINT64:case N.SFIXED64:case N.FIXED64:case N.SINT64:return t?"0":re.zero;case N.BYTES:return new Uint8Array(0);default:return 0}}function _A(e,t){switch(e){case N.BOOL:return t===!1;case N.STRING:return t==="";case N.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return t==0}}var QA=2,gt=Symbol.for("reflect unsafe local");function Ql(e,t){let n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function KA(e,t){let n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=QA)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!_A(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function qn(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function Kl(e,t){if(t.oneof){let n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function Tl(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function TA(e,t){let n=t.localName;if(t.oneof){let o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=QA)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=tt(t.scalar,t.longAsString);break}}function Yt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function qr(e,t){var n,o,r,i;if(Yt(e)&&gt in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let l=t,s=e.field();return l.listKind==s.listKind&&l.scalar===s.scalar&&((n=l.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=l.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function $r(e,t){var n,o,r,i;if(Yt(e)&&gt in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){let l=t,s=e.field();return l.mapKey===s.mapKey&&l.mapKind==s.mapKind&&l.scalar===s.scalar&&((n=l.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=l.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function ei(e,t){return Yt(e)&&gt in e&&"desc"in e&&Yt(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function zA(e){return DA(e.$typeName)}function Vn(e){let t=e.fields[0];return DA(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function DA(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var fB=999,VB=998,zl=2;function nt(e,t){if(Pr(t,e))return t;let n=RB(e);return t!==void 0&&mB(e,n,t),n}function mB(e,t,n){for(let o of e.members){let r=n[o.localName];if(r==null)continue;let i;if(o.kind=="oneof"){let l=Ql(n,o);if(!l)continue;i=l,r=Kl(n,l)}else i=o;switch(i.fieldKind){case"message":r=vc(i,r);break;case"scalar":r=MA(i,r);break;case"list":r=EB(i,r);break;case"map":r=gB(i,r);break}Tl(t,i,r)}return t}function MA(e,t){return e.scalar==N.BYTES?Jc(t):t}function gB(e,t){if(Yt(t)){if(e.scalar==N.BYTES)return LA(t,Jc);if(e.mapKind=="message")return LA(t,n=>vc(e,n))}return t}function EB(e,t){if(Array.isArray(t)){if(e.scalar==N.BYTES)return t.map(Jc);if(e.listKind=="message")return t.map(n=>vc(e,n))}return t}function vc(e,t){if(e.fieldKind=="message"&&!e.oneof&&Vn(e.message))return MA(e.message.fields[0],t);if(Yt(t)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return t;if(!Pr(t,e.message))return nt(e.message,t)}return t}function Jc(e){return Array.isArray(e)?new Uint8Array(e):e}function LA(e,t){let n={};for(let o of Object.entries(e))n[o[0]]=t(o[1]);return n}var pB=Symbol(),HA=new WeakMap;function RB(e){let t;if(ZB(e)){let n=HA.get(e),o,r;if(n)({prototype:o,members:r}=n);else{o={},r=new Set;for(let i of e.members)i.kind!="oneof"&&(i.fieldKind!="scalar"&&i.fieldKind!="enum"||i.presence!=zl&&(r.add(i),o[i.localName]=xc(i)));HA.set(e,{prototype:o,members:r})}t=Object.create(o),t.$typeName=e.typeName;for(let i of e.members)r.has(i)||i.kind=="field"&&(i.fieldKind=="message"||(i.fieldKind=="scalar"||i.fieldKind=="enum")&&i.presence!=zl)||(t[i.localName]=xc(i))}else{t={$typeName:e.typeName};for(let n of e.members)(n.kind=="oneof"||n.presence==zl)&&(t[n.localName]=xc(n))}return t}function ZB(e){switch(e.file.edition){case fB:return!1;case VB:return!0;default:return e.fields.some(t=>t.presence!=zl&&t.fieldKind!="message"&&!t.oneof)}}function xc(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return pB;let t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?tt(e.scalar,e.longAsString):e.enum.values[0].number}var SB=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Xe=class extends Error{constructor(t,n,o="FieldValueInvalidError"){super(n),this.name=o,this.field=()=>t}};function OA(e){return e instanceof Error&&SB.includes(e.name)&&"field"in e&&typeof e.field=="function"}var kc=Symbol.for("@bufbuild/protobuf/text-encoding");function ti(){if(globalThis[kc]==null){let e=new globalThis.TextEncoder,t=new globalThis.TextDecoder;globalThis[kc]={encodeUtf8(n){return e.encode(n)},decodeUtf8(n){return t.decode(n)},checkUtf8(n){try{return encodeURIComponent(n),!0}catch{return!1}}}}return globalThis[kc]}var be;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(be||(be={}));var Qc=34028234663852886e22,Kc=-34028234663852886e22,Tc=4294967295,zc=2147483647,Dc=-2147483648,mn=class{constructor(t=ti().encodeUtf8){this.encodeUtf8=t,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let t=0;for(let r=0;r<this.chunks.length;r++)t+=this.chunks[r].length;let n=new Uint8Array(t),o=0;for(let r=0;r<this.chunks.length;r++)n.set(this.chunks[r],o),o+=this.chunks[r].length;return this.chunks=[],n}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let t=this.finish(),n=this.stack.pop();if(!n)throw new Error("invalid state, fork stack empty");return this.chunks=n.chunks,this.buf=n.buf,this.uint32(t.byteLength),this.raw(t)}tag(t,n){return this.uint32((t<<3|n)>>>0)}raw(t){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(t),this}uint32(t){for(jA(t);t>127;)this.buf.push(t&127|128),t=t>>>7;return this.buf.push(t),this}int32(t){return _c(t),wc(t,this.buf),this}bool(t){return this.buf.push(t?1:0),this}bytes(t){return this.uint32(t.byteLength),this.raw(t)}string(t){let n=this.encodeUtf8(t);return this.uint32(n.byteLength),this.raw(n)}float(t){XB(t);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,t,!0),this.raw(n)}double(t){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,t,!0),this.raw(n)}fixed32(t){jA(t);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,t,!0),this.raw(n)}sfixed32(t){_c(t);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),this.raw(n)}sint32(t){return _c(t),t=(t<<1^t>>31)>>>0,wc(t,this.buf),this}sfixed64(t){let n=new Uint8Array(8),o=new DataView(n.buffer),r=re.enc(t);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}fixed64(t){let n=new Uint8Array(8),o=new DataView(n.buffer),r=re.uEnc(t);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}int64(t){let n=re.enc(t);return _l(n.lo,n.hi,this.buf),this}sint64(t){let n=re.enc(t),o=n.hi>>31,r=n.lo<<1^o,i=(n.hi<<1|n.lo>>>31)^o;return _l(r,i,this.buf),this}uint64(t){let n=re.uEnc(t);return _l(n.lo,n.hi,this.buf),this}},_o=class{constructor(t,n=ti().decodeUtf8){this.decodeUtf8=n,this.varint64=yA,this.uint32=vA,this.buf=t,this.len=t.length,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}tag(){let t=this.uint32(),n=t>>>3,o=t&7;if(n<=0||o<0||o>5)throw new Error("illegal tag: field no "+n+" wire type "+o);return[n,o]}skip(t,n){let o=this.pos;switch(t){case be.Varint:for(;this.buf[this.pos++]&128;);break;case be.Bit64:this.pos+=4;case be.Bit32:this.pos+=4;break;case be.LengthDelimited:let r=this.uint32();this.pos+=r;break;case be.StartGroup:for(;;){let[i,l]=this.tag();if(l===be.EndGroup){if(n!==void 0&&i!==n)throw new Error("invalid end group tag");break}this.skip(l,i)}break;default:throw new Error("cant skip wire type "+t)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)}int64(){return re.dec(...this.varint64())}uint64(){return re.uDec(...this.varint64())}sint64(){let[t,n]=this.varint64(),o=-(t&1);return t=(t>>>1|(n&1)<<31)^o,n=n>>>1^o,re.dec(t,n)}bool(){let[t,n]=this.varint64();return t!==0||n!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return re.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return re.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let t=this.uint32(),n=this.pos;return this.pos+=t,this.assertBounds(),this.buf.subarray(n,n+t)}string(){return this.decodeUtf8(this.bytes())}};function _c(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>zc||e<Dc)throw new Error("invalid int32: "+e)}function jA(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>Tc||e<0)throw new Error("invalid uint32: "+e)}function XB(e){if(typeof e=="string"){let t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>Qc||e<Kc))throw new Error("invalid float32: "+e)}function PA(e,t){let n=e.fieldKind=="list"?qr(t,e):e.fieldKind=="map"?$r(t,e):Hc(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${tf(e)}, got ${Be(t)}`;break;case"map":o=`expected ${nf(e)}, got ${Be(t)}`;break;default:o=Dl(e,t,n)}return new Xe(e,o)}function Lc(e,t,n){let o=Hc(e,n);if(o!==!0)return new Xe(e,`list item #${t+1}: ${Dl(e,n,o)}`)}function qA(e,t,n){let o=$A(t,e.mapKey);if(o!==!0)return new Xe(e,`invalid map key: ${Dl({scalar:e.mapKey},t,o)}`);let r=Hc(e,n);if(r!==!0)return new Xe(e,`map entry ${Be(t)}: ${Dl(e,n,r)}`)}function Hc(e,t){return e.scalar!==void 0?$A(t,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(t):e.enum.values.some(n=>n.number===t):ei(t,e.message)}function $A(e,t){switch(t){case N.DOUBLE:return typeof e=="number";case N.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>Qc||e<Kc?`${e.toFixed()} out of range`:!0;case N.INT32:case N.SFIXED32:case N.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>zc||e<Dc?`${e.toFixed()} out of range`:!0;case N.FIXED32:case N.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>Tc||e<0?`${e.toFixed()} out of range`:!0;case N.BOOL:return typeof e=="boolean";case N.STRING:return typeof e!="string"?!1:ti().checkUtf8(e)||"invalid UTF8";case N.BYTES:return e instanceof Uint8Array;case N.INT64:case N.SFIXED64:case N.SINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return re.parse(e),!0}catch{return`${e} out of range`}return!1;case N.FIXED64:case N.UINT64:if(typeof e=="bigint"||typeof e=="number"||typeof e=="string"&&e.length>0)try{return re.uParse(e),!0}catch{return`${e} out of range`}return!1}}function Dl(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${Be(t)}`,e.scalar!==void 0?`expected ${WB(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${ef(e.message)}`+n}function Be(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:qr(e)?tf(e.field()):$r(e)?nf(e.field()):ei(e)?ef(e.desc):Pr(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function ef(e){return`ReflectMessage (${e.typeName})`}function tf(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${N[e.scalar]})`}}function nf(e){switch(e.mapKind){case"message":return`ReflectMap (${N[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${N[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${N[e.mapKey]}, ${N[e.scalar]})`}}function WB(e){switch(e){case N.STRING:return"string";case N.BOOL:return"boolean";case N.INT64:case N.SINT64:case N.SFIXED64:return"bigint (int64)";case N.UINT64:case N.FIXED64:return"bigint (uint64)";case N.BYTES:return"Uint8Array";case N.DOUBLE:return"number (float64)";case N.FLOAT:return"number (float32)";case N.FIXED32:case N.UINT32:return"number (uint32)";case N.INT32:case N.SFIXED32:case N.SINT32:return"number (int32)"}}function Le(e,t,n=!0){return new Hl(e,t,n)}var Hl=class{get sortedFields(){var t;return(t=this._sortedFields)!==null&&t!==void 0?t:this._sortedFields=this.desc.fields.concat().sort((n,o)=>n.number-o.number)}constructor(t,n,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=t,this.message=this[gt]=n??nt(t),this.fields=t.fields,this.oneofs=t.oneofs,this.members=t.members}findNumber(t){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(n=>[n.number,n]))),this._fieldsByNumber.get(t)}oneofCase(t){return ni(this.message,t),Ql(this.message,t)}isSet(t){return ni(this.message,t),KA(this.message,t)}clear(t){ni(this.message,t),TA(this.message,t)}get(t){ni(this.message,t);let n=Kl(this.message,t);switch(t.fieldKind){case"list":let o=this.lists.get(t);return(!o||o[gt]!==n)&&this.lists.set(t,o=new jc(t,n,this.check)),o;case"map":let r=this.maps.get(t);return(!r||r[gt]!==n)&&this.maps.set(t,r=new Pc(t,n,this.check)),r;case"message":return $c(t,n,this.check);case"scalar":return n===void 0?tt(t.scalar,!1):ed(t,n);case"enum":return n??t.enum.values[0].number}}set(t,n){if(ni(this.message,t),this.check){let r=PA(t,n);if(r)throw r}let o;t.fieldKind=="message"?o=qc(t,n):$r(n)||qr(n)?o=n[gt]:o=td(t,n),Tl(this.message,t,o)}getUnknown(){return this.message.$unknown}setUnknown(t){this.message.$unknown=t}};function ni(e,t){if(t.parent.typeName!==e.$typeName)throw new Xe(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var jc=class{field(){return this._field}get size(){return this._arr.length}constructor(t,n,o){this._field=t,this._arr=this[gt]=n,this.check=o}get(t){let n=this._arr[t];return n===void 0?void 0:Mc(this._field,n,this.check)}set(t,n){if(t<0||t>=this._arr.length)throw new Xe(this._field,`list item #${t+1}: out of range`);if(this.check){let o=Lc(this._field,t,n);if(o)throw o}this._arr[t]=of(this._field,n)}add(t){if(this.check){let n=Lc(this._field,this._arr.length,t);if(n)throw n}this._arr.push(of(this._field,t))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let t of this._arr)yield Mc(this._field,t,this.check)}*entries(){for(let t=0;t<this._arr.length;t++)yield[t,Mc(this._field,this._arr[t],this.check)]}};var Pc=class{constructor(t,n,o=!0){this.obj=this[gt]=n??{},this.check=o,this._field=t}field(){return this._field}set(t,n){if(this.check){let o=qA(this._field,t,n);if(o)throw o}return this.obj[Ll(t)]=GB(this._field,n),this}delete(t){let n=Ll(t),o=Object.prototype.hasOwnProperty.call(this.obj,n);return o&&delete this.obj[n],o}clear(){for(let t of Object.keys(this.obj))delete this.obj[t]}get(t){let n=this.obj[Ll(t)];return n!==void 0&&(n=Oc(this._field,n,this.check)),n}has(t){return Object.prototype.hasOwnProperty.call(this.obj,Ll(t))}*keys(){for(let t of Object.keys(this.obj))yield rf(t,this._field.mapKey)}*entries(){for(let t of Object.entries(this.obj))yield[rf(t[0],this._field.mapKey),Oc(this._field,t[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let t of Object.values(this.obj))yield Oc(this._field,t,this.check)}forEach(t,n){for(let o of this.entries())t.call(n,o[1],o[0],this)}};function qc(e,t){return ei(t)?zA(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?sf(t.message):t.message:t}function $c(e,t,n){return t!==void 0&&(Vn(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:ed(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Yt(t)&&(t=lf(t))),new Hl(e.message,t,n)}function of(e,t){return e.listKind=="message"?qc(e,t):td(e,t)}function Mc(e,t,n){return e.listKind=="message"?$c(e,t,n):ed(e,t)}function GB(e,t){return e.mapKind=="message"?qc(e,t):td(e,t)}function Oc(e,t,n){return e.mapKind=="message"?$c(e,t,n):t}function Ll(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function rf(e,t){switch(t){case N.STRING:return e;case N.INT32:case N.FIXED32:case N.UINT32:case N.SFIXED32:case N.SINT32:{let n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case N.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case N.UINT64:case N.FIXED64:try{return re.uParse(e)}catch{}break;default:try{return re.parse(e)}catch{}break}return e}function ed(e,t){switch(e.scalar){case N.INT64:case N.SFIXED64:case N.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=re.parse(t));break;case N.FIXED64:case N.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=re.uParse(t));break}return t}function td(e,t){switch(e.scalar){case N.INT64:case N.SFIXED64:case N.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=re.parse(t));break;case N.FIXED64:case N.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=re.uParse(t));break}return t}function lf(e){let t={$typeName:"google.protobuf.Struct",fields:{}};if(Yt(e))for(let[n,o]of Object.entries(e))t.fields[n]=cf(o);return t}function sf(e){let t={};for(let[n,o]of Object.entries(e.fields))t[n]=af(o);return t}function af(e){switch(e.kind.case){case"structValue":return sf(e.kind.value);case"listValue":return e.kind.value.values.map(af);case"nullValue":case void 0:return null;default:return e.kind.value}}function cf(e){let t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let o of e)n.values.push(cf(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:lf(e)};break}return t}function Ol(e){let t=NB(),n=e.length*3/4;e[e.length-2]=="="?n-=2:e[e.length-1]=="="&&(n-=1);let o=new Uint8Array(n),r=0,i=0,l,s=0;for(let a=0;a<e.length;a++){if(l=t[e.charCodeAt(a)],l===void 0)switch(e[a]){case"=":i=0;case`
127
127
  `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(i){case 0:s=l,i=1;break;case 1:o[r++]=s<<2|(l&48)>>4,s=l,i=2;break;case 2:o[r++]=(s&15)<<4|(l&60)>>2,s=l,i=3;break;case 3:o[r++]=(s&3)<<6|l,i=0;break}}if(i==1)throw Error("invalid base64 string");return o.subarray(0,r)}var Ml,df,Qo;function IB(e){return Ml||(Ml="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),df=Ml.slice(0,-2).concat("-","_")),e=="url"?df:Ml}function NB(){if(!Qo){Qo=[];let e=IB("std");for(let t=0;t<e.length;t++)Qo[e[t].charCodeAt(0)]=t;Qo[45]=e.indexOf("+"),Qo[95]=e.indexOf("/")}return Qo}function Ko(e){let t=!1,n=[];for(let o=0;o<e.length;o++){let r=e.charAt(o);switch(r){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}var FB=new Set(["constructor","toString","toJSON","valueOf"]);function To(e){return FB.has(e)?e+"$":e}function oi(e){for(let t of e.field)qn(t,"jsonName")||(t.jsonName=Ko(t.name));e.nestedType.forEach(oi)}function uf(e,t){let n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function hf(e,t){switch(e){case N.STRING:return t;case N.BYTES:{let n=BB(t);if(n===!1)throw new Error(`cannot parse ${N[e]} default value: ${t}`);return n}case N.INT64:case N.SFIXED64:case N.SINT64:return re.parse(t);case N.UINT64:case N.FIXED64:return re.uParse(t);case N.DOUBLE:case N.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(t)}case N.BOOL:return t==="true";case N.INT32:case N.UINT32:case N.SINT32:case N.FIXED32:case N.SFIXED32:return parseInt(t,10)}}function BB(e){let t=[],n={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,8);if(Number.isNaN(i))return!1;t.push(i);break}case"x":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;t.push(i);break}case"u":{let o=n.c,r=n.take(4);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;let l=new Uint8Array(4);new DataView(l.buffer).setInt32(0,i,!0),t.push(l[0],l[1],l[2],l[3]);break}case"U":{let o=n.c,r=n.take(8);if(r===!1)return!1;let i=re.uEnc(o+r),l=new Uint8Array(8),s=new DataView(l.buffer);s.setInt32(0,i.lo,!0),s.setInt32(4,i.hi,!0),t.push(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*jl(e){switch(e.kind){case"file":for(let t of e.messages)yield t,yield*jl(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let t of e.nestedMessages)yield t,yield*jl(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function Pl(...e){let t=YB();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let n of e[0].file)Vf(n,t);return t}if("$typeName"in e[0]){let i=function(l){let s=[];for(let a of l.dependency){if(t.getFile(a)!=null||r.has(a))continue;let c=o(a);if(!c)throw new Error(`Unable to resolve ${a}, imported by ${l.name}`);"kind"in c?t.addFile(c,!1,!0):(r.add(c.name),s.push(c))}return s.concat(...s.map(i))},n=e[0],o=e[1],r=new Set;for(let l of[n,...i(n)].reverse())Vf(l,t)}else for(let n of e)for(let o of n.files)t.addFile(o);return t}function YB(){let e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(o,r,i){if(n.set(o.proto.name,o),!r)for(let l of jl(o))this.add(l);if(i)for(let l of o.dependencies)this.addFile(l,r,i)},add(o){if(o.kind=="extension"){let r=t.get(o.extendee.typeName);r||t.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){let r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){let r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){let r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var i;return(i=t.get(o.typeName))===null||i===void 0?void 0:i.get(r)},getService(o){let r=e.get(o);return r?.kind=="service"?r:void 0}}}var CB=998,UB=999,yB=9,ii=10,ri=11,wB=12,bf=14,ld=3,xB=2,Af=1,vB=0,nd=1,ff=2,JB=3,kB=1,_B=2,QB=1;var gf={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1}};function Vf(e,t){var n,o;let r={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:DB(e),name:e.name.replace(/\.proto$/,""),dependencies:LB(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},i=new Map,l={get(s){return i.get(s)},add(s){var a;Et(((a=s.proto.options)===null||a===void 0?void 0:a.mapEntry)===!0),i.set(s.typeName,s)}};for(let s of e.enumType)Ef(s,r,void 0,t);for(let s of e.messageType)pf(s,r,void 0,t,l);for(let s of e.service)KB(s,r,t);od(r,t);for(let s of i.values())rd(s,t,l);for(let s of r.messages)rd(s,t,l),od(s,t);t.addFile(r,!0)}function od(e,t){switch(e.kind){case"file":for(let n of e.proto.extension){let o=id(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(let n of e.proto.extension){let o=id(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(let n of e.nestedMessages)od(n,t);break}}function rd(e,t,n){let o=e.proto.oneofDecl.map(i=>zB(i,e)),r=new Set;for(let i of e.proto.field){let l=OB(i,o),s=id(i,e,t,l,n);e.fields.push(s),e.field[s.localName]=s,l===void 0?e.members.push(s):(l.fields.push(s),r.has(l)||(r.add(l),e.members.push(l)))}for(let i of o.filter(l=>r.has(l)))e.oneofs.push(i);for(let i of e.nestedMessages)rd(i,t,n)}function Ef(e,t,n,o){var r,i,l,s,a;let c=HB(e.name,e.value),d={kind:"enum",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,open:!0,name:e.name,typeName:ql(e,n,t),value:{},values:[],sharedPrefix:c,toString(){return`enum ${this.typeName}`}};d.open=$B(d),o.add(d);for(let u of e.value){let h=u.name;d.values.push(d.value[u.number]={kind:"enum_value",proto:u,deprecated:(s=(l=u.options)===null||l===void 0?void 0:l.deprecated)!==null&&s!==void 0?s:!1,parent:d,name:h,localName:To(c==null?h:h.substring(c.length)),number:u.number,toString(){return`enum value ${d.typeName}.${h}`}})}((a=n?.nestedEnums)!==null&&a!==void 0?a:t.enums).push(d)}function pf(e,t,n,o,r){var i,l,s,a;let c={kind:"message",proto:e,deprecated:(l=(i=e.options)===null||i===void 0?void 0:i.deprecated)!==null&&l!==void 0?l:!1,file:t,parent:n,name:e.name,typeName:ql(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?r.add(c):(((a=n?.nestedMessages)!==null&&a!==void 0?a:t.messages).push(c),o.add(c));for(let d of e.enumType)Ef(d,t,c,o);for(let d of e.nestedType)pf(d,t,c,o,r)}function KB(e,t,n){var o,r;let i={kind:"service",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:t,name:e.name,typeName:ql(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(i),n.add(i);for(let l of e.method){let s=TB(l,i,n);i.methods.push(s),i.method[s.localName]=s}}function TB(e,t,n){var o,r,i,l;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";let a=n.getMessage(Pt(e.inputType)),c=n.getMessage(Pt(e.outputType));Et(a,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),Et(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let d=e.name;return{kind:"rpc",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,parent:t,name:d,localName:To(d.length?To(d[0].toLowerCase()+d.substring(1)):d),methodKind:s,input:a,output:c,idempotency:(l=(i=e.options)===null||i===void 0?void 0:i.idempotencyLevel)!==null&&l!==void 0?l:vB,toString(){return`rpc ${t.typeName}.${d}`}}}function zB(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:To(Ko(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function id(e,t,n,o,r){var i,l,s;let a=r===void 0,c={kind:"field",proto:e,deprecated:(l=(i=e.options)===null||i===void 0?void 0:i.deprecated)!==null&&l!==void 0?l:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:jB(e,o,a,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(a){let b=t.kind=="file"?t:t.file,A=t.kind=="file"?void 0:t,f=ql(e,A,b);c.kind="extension",c.file=b,c.parent=A,c.oneof=void 0,c.typeName=f,c.jsonName=`[${f}]`,c.toString=()=>`extension ${f}`;let V=n.getMessage(Pt(e.extendee));Et(V,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=V}else{let b=t;Et(b.kind=="message"),c.parent=b,c.oneof=o,c.localName=o?Ko(e.name):To(Ko(e.name)),c.jsonName=e.jsonName,c.toString=()=>`field ${b.typeName}.${e.name}`}let d=e.label,u=e.type,h=(s=e.options)===null||s===void 0?void 0:s.jstype;if(d===ld){let b=u==ri?r?.get(Pt(e.typeName)):void 0;if(b){c.fieldKind="map";let{key:A,value:f}=qB(b);return c.mapKey=A.scalar,c.mapKind=f.fieldKind,c.message=f.message,c.delimitedEncoding=!1,c.enum=f.enum,c.scalar=f.scalar,c}switch(c.fieldKind="list",u){case ri:case ii:c.listKind="message",c.message=n.getMessage(Pt(e.typeName)),Et(c.message),c.delimitedEncoding=mf(e,t);break;case bf:c.listKind="enum",c.enum=n.getEnum(Pt(e.typeName)),Et(c.enum);break;default:c.listKind="scalar",c.scalar=u,c.longAsString=h==Af;break}return c.packed=PB(e,t),c}switch(u){case ri:case ii:c.fieldKind="message",c.message=n.getMessage(Pt(e.typeName)),Et(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=mf(e,t),c.getDefaultValue=()=>{};break;case bf:{let b=n.getEnum(Pt(e.typeName));Et(b!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Pt(e.typeName)),c.getDefaultValue=()=>qn(e,"defaultValue")?uf(b,e.defaultValue):void 0;break}default:{c.fieldKind="scalar",c.scalar=u,c.longAsString=h==Af,c.getDefaultValue=()=>qn(e,"defaultValue")?hf(u,e.defaultValue):void 0;break}}return c}function DB(e){switch(e.syntax){case"":case"proto2":return CB;case"proto3":return UB;case"editions":if(e.edition in gf)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function LB(e,t){return e.dependency.map(n=>{let o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function HB(e,t){let n=MB(e)+"_";for(let o of t){if(!o.name.toLowerCase().startsWith(n))return;let r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function MB(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function ql(e,t,n){let o;return t?o=`${t.typeName}.${e.name}`:n.proto.package.length>0?o=`${n.proto.package}.${e.name}`:o=`${e.name}`,o}function Pt(e){return e.startsWith(".")?e.substring(1):e}function OB(e,t){if(!qn(e,"oneofIndex")||e.proto3Optional)return;let n=t[e.oneofIndex];return Et(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function jB(e,t,n,o){if(e.label==xB)return JB;if(e.label==ld)return ff;if(t||e.proto3Optional||n)return nd;let r=zo("fieldPresence",{proto:e,parent:o});return r==ff&&(e.type==ri||e.type==ii)?nd:r}function PB(e,t){if(e.label!=ld)return!1;switch(e.type){case yB:case wB:case ii:case ri:return!1}let n=e.options;return n&&qn(n,"packed")?n.packed:kB==zo("repeatedFieldEncoding",{proto:e,parent:t})}function qB(e){let t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return Et(t&&t.fieldKind=="scalar"&&t.scalar!=N.BYTES&&t.scalar!=N.FLOAT&&t.scalar!=N.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function $B(e){var t;return QB==zo("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function mf(e,t){return e.type==ii?!0:_B==zo("messageEncoding",{proto:e,parent:t})}function zo(e,t){var n,o;let r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){let i=r[e];if(i!=0)return i}if("kind"in t){if(t.kind=="message")return zo(e,(o=t.parent)!==null&&o!==void 0?o:t.file);let i=gf[t.edition];if(!i)throw new Error(`feature default for edition ${t.edition} not found`);return i[e]}return zo(e,t.parent)}function Et(e,t){if(!e)throw new Error(t)}function Rf(e){let t=e9(e);return t.messageType.forEach(oi),Pl(t,()=>{}).getFile(t.name)}function e9(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Zf),enumType:e.enumType.map(Sf)}))}function Zf(e){var t,n,o,r,i,l,s,a;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(t9))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Zf))!==null&&r!==void 0?r:[],enumType:(l=(i=e.enumType)===null||i===void 0?void 0:i.map(Sf))!==null&&l!==void 0?l:[],extensionRange:(a=(s=e.extensionRange)===null||s===void 0?void 0:s.map(d=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},d)))!==null&&a!==void 0?a:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function t9(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?n9(e.options):void 0}))}function n9(e){var t,n,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(o=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(i=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},i)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Sf(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))})}function oe(e,t,...n){return n.reduce((o,r)=>o.nestedMessages[r],e.messages[t])}var qt=Rf({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false"},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var zf=oe(qt,1);var Xf;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Xf||(Xf={}));var Wf;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(Wf||(Wf={}));var Gf;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(Gf||(Gf={}));var If;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(If||(If={}));var Nf;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Nf||(Nf={}));var Ff;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Ff||(Ff={}));var Bf;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Bf||(Bf={}));var Yf;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(Yf||(Yf={}));var Cf;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(Cf||(Cf={}));var Uf;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(Uf||(Uf={}));var yf;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(yf||(yf={}));var wf;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(wf||(wf={}));var xf;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(xf||(xf={}));var vf;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(vf||(vf={}));var Jf;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(Jf||(Jf={}));var kf;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(kf||(kf={}));var _f;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY"})(_f||(_f={}));var Qf;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(Qf||(Qf={}));var Kf;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(Kf||(Kf={}));var Tf;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(Tf||(Tf={}));var Df={readUnknownFields:!0};function o9(e){return e?Object.assign(Object.assign({},Df),e):Df}function Lf(e,t,n){let o=Le(e,void 0,!1);return Hf(o,new _o(t),o9(n),!1,t.byteLength),o.message}function Hf(e,t,n,o,r){var i;let l=o?t.len:t.pos+r,s,a,c=(i=e.getUnknown())!==null&&i!==void 0?i:[];for(;t.pos<l&&([s,a]=t.tag(),!(o&&a==be.EndGroup));){let d=e.findNumber(s);if(!d){let u=t.skip(a,s);n.readUnknownFields&&c.push({no:s,wireType:a,data:u});continue}r9(e,t,d,a,n)}if(o&&(a!=be.EndGroup||s!==r))throw new Error("invalid end group tag");c.length>0&&e.setUnknown(c)}function r9(e,t,n,o,r){var i;switch(n.fieldKind){case"scalar":e.set(n,Do(t,n.scalar));break;case"enum":let l=Do(t,N.INT32);if(n.enum.open)e.set(n,l);else if(n.enum.values.some(a=>a.number===l))e.set(n,l);else if(r.readUnknownFields){let a=new mn().int32(l).finish(),c=(i=e.getUnknown())!==null&&i!==void 0?i:[];c.push({no:n.number,wireType:o,data:a}),e.setUnknown(c)}break;case"message":e.set(n,sd(t,r,n,e.get(n)));break;case"list":l9(t,o,e.get(n),r);break;case"map":i9(t,e.get(n),r);break}}function i9(e,t,n){let o=t.field(),r,i,l=e.pos+e.uint32();for(;e.pos<l;){let[s]=e.tag();switch(s){case 1:r=Do(e,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":i=Do(e,o.scalar);break;case"enum":i=e.int32();break;case"message":i=sd(e,n,o);break}break}}if(r===void 0&&(r=tt(o.mapKey,!1)),i===void 0)switch(o.mapKind){case"scalar":i=tt(o.scalar,!1);break;case"enum":i=o.enum.values[0].number;break;case"message":i=Le(o.message,void 0,!1);break}t.set(r,i)}function l9(e,t,n,o){var r;let i=n.field();if(i.listKind==="message"){n.add(sd(e,o,i));return}let l=(r=i.scalar)!==null&&r!==void 0?r:N.INT32;if(!(t==be.LengthDelimited&&l!=N.STRING&&l!=N.BYTES)){n.add(Do(e,l));return}let a=e.uint32()+e.pos;for(;e.pos<a;)n.add(Do(e,l))}function sd(e,t,n,o){let r=n.delimitedEncoding,i=o??Le(n.message,void 0,!1);return Hf(i,e,t,r,r?n.number:e.uint32()),i}function Do(e,t){switch(t){case N.STRING:return e.string();case N.BOOL:return e.bool();case N.DOUBLE:return e.double();case N.FLOAT:return e.float();case N.INT32:return e.int32();case N.INT64:return e.int64();case N.UINT64:return e.uint64();case N.FIXED64:return e.fixed64();case N.BYTES:return e.bytes();case N.FIXED32:return e.fixed32();case N.SFIXED32:return e.sfixed32();case N.SFIXED64:return e.sfixed64();case N.SINT64:return e.sint64();case N.UINT32:return e.uint32();case N.SINT32:return e.sint32()}}function Q(e,t){var n;let o=Lf(zf,Ol(e));return o.messageType.forEach(oi),o.dependency=(n=t?.map(i=>i.proto.name))!==null&&n!==void 0?n:[],Pl(o,i=>t?.find(l=>l.proto.name===i)).getFile(o.name)}var se=Q("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");var li=Q("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Mf=oe(li,0);var s9=3,Of={writeUnknownFields:!0};function a9(e){return e?Object.assign(Object.assign({},Of),e):Of}function jf(e,t,n){return $l(new mn,a9(n),Le(e,t)).finish()}function $l(e,t,n){var o;for(let r of n.sortedFields){if(!n.isSet(r)){if(r.presence==s9)throw new Error(`cannot encode ${r} to binary: required field not set`);continue}ad(e,t,n,r)}if(t.writeUnknownFields)for(let{no:r,wireType:i,data:l}of(o=n.getUnknown())!==null&&o!==void 0?o:[])e.tag(r,i).raw(l);return e}function ad(e,t,n,o){var r;switch(o.fieldKind){case"scalar":case"enum":es(e,n.desc.typeName,o.name,(r=o.scalar)!==null&&r!==void 0?r:N.INT32,o.number,n.get(o));break;case"list":c9(e,t,o,n.get(o));break;case"message":Pf(e,t,o,n.get(o));break;case"map":for(let[i,l]of n.get(o))d9(e,t,o,i,l);break}}function es(e,t,n,o,r,i){qf(e.tag(r,u9(o)),t,n,o,i)}function Pf(e,t,n,o){n.delimitedEncoding?$l(e.tag(n.number,be.StartGroup),t,o).tag(n.number,be.EndGroup):$l(e.tag(n.number,be.LengthDelimited).fork(),t,o).join()}function c9(e,t,n,o){var r;if(n.listKind=="message"){for(let l of o)Pf(e,t,n,l);return}let i=(r=n.scalar)!==null&&r!==void 0?r:N.INT32;if(n.packed){if(!o.size)return;e.tag(n.number,be.LengthDelimited).fork();for(let l of o)qf(e,n.parent.typeName,n.name,i,l);e.join();return}for(let l of o)es(e,n.parent.typeName,n.name,i,n.number,l)}function d9(e,t,n,o,r){var i;switch(e.tag(n.number,be.LengthDelimited).fork(),es(e,n.parent.typeName,n.name,n.mapKey,1,o),n.mapKind){case"scalar":case"enum":es(e,n.parent.typeName,n.name,(i=n.scalar)!==null&&i!==void 0?i:N.INT32,2,r);break;case"message":$l(e.tag(2,be.LengthDelimited).fork(),t,r).join();break}e.join()}function qf(e,t,n,o,r){try{switch(o){case N.STRING:e.string(r);break;case N.BOOL:e.bool(r);break;case N.DOUBLE:e.double(r);break;case N.FLOAT:e.float(r);break;case N.INT32:e.int32(r);break;case N.INT64:e.int64(r);break;case N.UINT64:e.uint64(r);break;case N.FIXED64:e.fixed64(r);break;case N.BYTES:e.bytes(r);break;case N.FIXED32:e.fixed32(r);break;case N.SFIXED32:e.sfixed32(r);break;case N.SFIXED64:e.sfixed64(r);break;case N.SINT64:e.sint64(r);break;case N.UINT32:e.uint32(r);break;case N.SINT32:e.sint32(r);break}}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}function u9(e){switch(e){case N.BYTES:case N.STRING:return be.LengthDelimited;case N.DOUBLE:case N.FIXED64:case N.SFIXED64:return be.Bit64;case N.FIXED32:case N.SFIXED32:case N.FLOAT:return be.Bit32;default:return be.Varint}}function $f(e,t,n){let o=!1;return n||(n=nt(Mf),o=!0),n.value=jf(e,t),n.typeUrl=h9(t.$typeName),o?n:void 0}function h9(e){return`type.googleapis.com/${e}`}var cd=Q("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),eV=oe(cd,0),dd=oe(cd,1),tV=oe(cd,2),ts;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(ts||(ts={}));function nV(e,t,n){var o;b9(t,e);let r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[i,l]=ud(t,n),s=new mn;ad(s,{writeUnknownFields:!0},i,l);let a=new _o(s.finish());for(;a.pos<a.len;){let[c,d]=a.tag(),u=a.skip(d,c);r.push({no:c,wireType:d,data:u})}e.$unknown=r}function ud(e,t){let n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),r=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),i=nt(r,t!==void 0?{[n]:t}:void 0);return[Le(r,i),o,()=>{let l=i[n];if(l===void 0){let s=e.message;return Vn(s)?tt(s.fields[0].scalar,s.fields[0].longAsString):nt(s)}return l}]}function b9(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var oV={ignoreUnknownFields:!1};function A9(e){return e?Object.assign(Object.assign({},oV),e):oV}function iV(e,t,n){let o=Le(e);try{Lo(o,t,A9(n))}catch(r){throw OA(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}return o.message}function Lo(e,t,n){var o;if(R9(e,t,n))return;if(t==null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode ${e.desc} from JSON: ${Be(t)}`);let r=new Map,i=new Map;for(let l of e.desc.fields)i.set(l.name,l).set(l.jsonName,l);for(let[l,s]of Object.entries(t)){let a=i.get(l);if(a){if(a.oneof){if(s===null&&a.fieldKind=="scalar")continue;let c=r.get(a.oneof);if(c!==void 0)throw new Xe(a.oneof,`oneof set multiple times by ${c.name} and ${a.name}`);r.set(a.oneof,a)}rV(e,a,s,n)}else{let c;if(l.startsWith("[")&&l.endsWith("]")&&(c=(o=n.registry)===null||o===void 0?void 0:o.getExtension(l.substring(1,l.length-1)))&&c.extendee.typeName===e.desc.typeName){let[d,u,h]=ud(c);rV(d,u,s,n),nV(e.message,c,h())}if(!c&&!n.ignoreUnknownFields)throw new Error(`cannot decode ${e.desc} from JSON: key "${l}" is unknown`)}}}function rV(e,t,n,o){switch(t.fieldKind){case"scalar":E9(e,t,n);break;case"enum":g9(e,t,n,o);break;case"message":m9(e,t,n,o);break;case"list":V9(e.get(t),n,o);break;case"map":f9(e.get(t),n,o);break}}function f9(e,t,n){if(t===null)return;let o=e.field();if(typeof t!="object"||Array.isArray(t))throw new Xe(o,"expected object, got "+Be(t));for(let[r,i]of Object.entries(t)){if(i===null)throw new Xe(o,"map value must not be null");let l;switch(o.mapKind){case"message":let a=Le(o.message);Lo(a,i,n),l=a;break;case"enum":if(l=hd(o.enum,i,n.ignoreUnknownFields,!0),l===ns)return;break;case"scalar":l=rs(o,i,!0);break}let s=p9(o.mapKey,r);e.set(s,l)}}function V9(e,t,n){if(t===null)return;let o=e.field();if(!Array.isArray(t))throw new Xe(o,"expected Array, got "+Be(t));for(let r of t){if(r===null)throw new Xe(o,"list item must not be null");switch(o.listKind){case"message":let i=Le(o.message);Lo(i,r,n),e.add(i);break;case"enum":let l=hd(o.enum,r,n.ignoreUnknownFields,!0);l!==ns&&e.add(l);break;case"scalar":e.add(rs(o,r,!0));break}}}function m9(e,t,n,o){if(n===null&&t.message.typeName!="google.protobuf.Value"){e.clear(t);return}let r=e.isSet(t)?e.get(t):Le(t.message);Lo(r,n,o),e.set(t,r)}function g9(e,t,n,o){let r=hd(t.enum,n,o.ignoreUnknownFields,!1);r===os?e.clear(t):r!==ns&&e.set(t,r)}function E9(e,t,n){let o=rs(t,n,!1);o===os?e.clear(t):e.set(t,o)}var ns=Symbol();function hd(e,t,n,o){if(t===null)return e.typeName=="google.protobuf.NullValue"?0:o?e.values[0].number:os;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let r=e.values.find(i=>i.name===t);if(r!==void 0)return r.number;if(n)return ns;break}throw new Error(`cannot decode ${e} from JSON: ${Be(t)}`)}var os=Symbol();function rs(e,t,n){if(t===null)return n?tt(e.scalar,!1):os;switch(e.scalar){case N.DOUBLE:case N.FLOAT:if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new Xe(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Xe(e,"unexpected infinite number");break}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)break;let o=Number(t);if(!Number.isFinite(o))break;return o}break;case N.INT32:case N.FIXED32:case N.SFIXED32:case N.SINT32:case N.UINT32:return lV(t);case N.BYTES:if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return Ol(t)}catch(o){let r=o instanceof Error?o.message:String(o);throw new Xe(e,r)}}break}return t}function p9(e,t){switch(e){case N.BOOL:switch(t){case"true":return!0;case"false":return!1}return t;case N.INT32:case N.FIXED32:case N.UINT32:case N.SFIXED32:case N.SINT32:return lV(t);default:return t}}function lV(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;let t=Number(e);return Number.isNaN(t)?e:t}return e}function R9(e,t,n){if(!e.desc.typeName.startsWith("google.protobuf."))return!1;switch(e.desc.typeName){case"google.protobuf.Any":return Z9(e.message,t,n),!0;case"google.protobuf.Timestamp":return S9(e.message,t),!0;case"google.protobuf.Duration":return X9(e.message,t),!0;case"google.protobuf.FieldMask":return W9(e.message,t),!0;case"google.protobuf.Struct":return sV(e.message,t),!0;case"google.protobuf.Value":return bd(e.message,t),!0;case"google.protobuf.ListValue":return aV(e.message,t),!0;default:if(Vn(e.desc)){let o=e.desc.fields[0];return t===null?e.clear(o):e.set(o,rs(o,t,!0)),!0}return!1}}function Z9(e,t,n){var o;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${Be(t)}`);if(Object.keys(t).length==0)return;let r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);let i=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!i.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);let l=(o=n.registry)===null||o===void 0?void 0:o.getMessage(i);if(!l)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);let s=Le(l);if(i.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(t,"value")){let a=t.value;Lo(s,a,n)}else{let a=Object.assign({},t);delete a["@type"],Lo(s,a,n)}$f(s.desc,s.message,e)}function S9(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Be(t)}`);let n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);let o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Date.parse("0001-01-01T00:00:00Z")||o>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=re.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function X9(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Be(t)}`);let n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Be(t)}`);let o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Be(t)}`);if(e.seconds=re.parse(o),typeof n[2]!="string")return;let r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function W9(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${Be(t)}`);if(t==="")return;function n(o){if(o.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);let r=o.replace(/[A-Z]/g,i=>"_"+i.toLowerCase());return r[0]==="_"?r.substring(1):r}e.paths=t.split(",").map(n)}function sV(e,t){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${Be(t)}`);for(let[n,o]of Object.entries(t)){let r=nt(dd);bd(r,o),e.fields[n]=r}}function bd(e,t){switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:ts.NULL_VALUE};else if(Array.isArray(t)){let n=nt(tV);aV(n,t),e.kind={case:"listValue",value:n}}else{let n=nt(eV);sV(n,t),e.kind={case:"structValue",value:n}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${Be(t)}`)}return e}function aV(e,t){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${Be(t)}`);for(let n of t){let o=nt(dd);bd(o,n),e.values.push(o)}}import{tmpdir as Tw}from"node:os";import{join as zw}from"node:path";import{homedir as cV}from"node:os";function dV(e){return e==="~"?cV():e.startsWith("~/")||e.startsWith("~\\")?cV()+e.slice(1):e}var ot=jr(xp(),1),Jp=zw(Tw(),"augment-onison-log.txt"),Dw=ot.default.format.combine(ot.default.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),ot.default.format.errors({stack:!0}),ot.default.format.printf(({timestamp:e,level:t,message:n,prefix:o,...r})=>{let i=o?` [${o}]`:"",l=Object.keys(r).length>0?` ${JSON.stringify(r)}`:"";return`${e} ${t.toUpperCase().padEnd(5)}${i} ${n}${l}`})),Lw=ot.default.format.combine(ot.default.format.timestamp(),ot.default.format.errors({stack:!0}),ot.default.format.json()),Jt,vp=Jp;function Hw(e,t){vp=e&&e!=="-"?dV(e):Jp;let n=t||process.env.LOG_LEVEL||"info",o=new ot.default.transports.File({filename:vp,format:process.env.AUGMENT_LOG_FORMAT==="json"?Lw:Dw});Jt?(Jt.clear().add(o),Jt.level=n):Jt=ot.default.createLogger({level:n,transports:[o]})}var D=new Proxy({},{get(e,t,n){return Jt||Hw(),Reflect.get(Jt,t,n)}});function kp(){let e=new ot.default.transports.Console({silent:!0});if(Jt){Jt.clear(),Jt.add(e);return}Jt=ot.default.createLogger({level:process.env.LOG_LEVEL||"info",transports:[e]})}var St=class extends Error{statusCode;statusText;responseBody;serverMessage;errorReason;constructor(t,n,o,r,i){let l=r??(o||void 0),s=l&&l.length>200?`${l.slice(0,200)}\u2026[truncated]`:l;super(s?`API call failed: ${t} ${n}: ${s}`:`API call failed: ${t} ${n}`),this.name="PoseidonRpcError",this.statusCode=t,this.statusText=n,this.responseBody=o,this.serverMessage=r,this.errorReason=i}get status(){return this.statusCode}},Ui=class extends Error{constructor(t){super(t),this.name="UsageError"}},sr=class extends Error{residentId;resourceVersion;constructor(t,n){super(`Unable to find resident ${t} or resource version ${n}`),this.name="ResidentVersionLookupError",this.residentId=t,this.resourceVersion=n}},ar;(function(e){e[e.REASON_UNSPECIFIED=0]="REASON_UNSPECIFIED",e[e.END_TURN=1]="END_TURN",e[e.MAX_TOKENS=2]="MAX_TOKENS",e[e.TOOL_USE_REQUESTED=3]="TOOL_USE_REQUESTED",e[e.SAFETY=4]="SAFETY",e[e.RECITATION=5]="RECITATION",e[e.MALFORMED_FUNCTION_CALL=6]="MALFORMED_FUNCTION_CALL",e[e.STOP_REASON_ERROR=7]="STOP_REASON_ERROR"})(ar||(ar={}));var Du;(function(e){e.chat="CHAT",e.agent="AGENT",e.remoteAgent="REMOTE_AGENT",e.orientation="ORIENTATION",e.cliAgent="CLI_AGENT",e.cliNoninteractive="CLI_NONINTERACTIVE"})(Du||(Du={}));var Lu;(function(e){e[e.UNSET=0]="UNSET",e[e.POSITIVE=1]="POSITIVE",e[e.NEGATIVE=2]="NEGATIVE"})(Lu||(Lu={}));var Hu;(function(e){e[e.TEXT=0]="TEXT",e[e.TOOL_RESULT=1]="TOOL_RESULT",e[e.IMAGE=2]="IMAGE",e[e.IMAGE_ID=3]="IMAGE_ID",e[e.IDE_STATE=4]="IDE_STATE",e[e.EDIT_EVENTS=5]="EDIT_EVENTS",e[e.CHECKPOINT_REF=6]="CHECKPOINT_REF",e[e.FILE=8]="FILE",e[e.FILE_ID=9]="FILE_ID",e[e.HISTORY_SUMMARY=10]="HISTORY_SUMMARY"})(Hu||(Hu={}));var Mu;(function(e){e[e.RAW_RESPONSE=0]="RAW_RESPONSE",e[e.SUGGESTED_QUESTIONS=1]="SUGGESTED_QUESTIONS",e[e.MAIN_TEXT_FINISHED=2]="MAIN_TEXT_FINISHED",e[e.WORKSPACE_FILE_CHUNKS=3]="WORKSPACE_FILE_CHUNKS",e[e.RELEVANT_SOURCES=4]="RELEVANT_SOURCES",e[e.TOOL_USE=5]="TOOL_USE",e[e.AGENT_MEMORY=6]="AGENT_MEMORY",e[e.TOOL_USE_START=7]="TOOL_USE_START",e[e.THINKING=8]="THINKING",e[e.BILLING_METADATA=9]="BILLING_METADATA",e[e.TOKEN_USAGE=10]="TOKEN_USAGE"})(Mu||(Mu={}));var Ou;(function(e){e[e.ALWAYS_ATTACHED=0]="ALWAYS_ATTACHED",e[e.MANUAL=1]="MANUAL",e[e.AGENT_REQUESTED=2]="AGENT_REQUESTED"})(Ou||(Ou={}));var _p=Q("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");var ju=Q("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[_p,qt]);var Gn=Q("Chdnb29nbGUvcnBjL3N0YXR1cy5wcm90bxIKZ29vZ2xlLnJwYyJOCgZTdGF0dXMSDAoEY29kZRgBIAEoBRIPCgdtZXNzYWdlGAIgASgJEiUKB2RldGFpbHMYAyADKAsyFC5nb29nbGUucHJvdG9idWYuQW55QmEKDmNvbS5nb29nbGUucnBjQgtTdGF0dXNQcm90b1ABWjdnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3JwYy9zdGF0dXM7c3RhdHVz+AEBogIDUlBDYgZwcm90bzM",[li]);var Xt=Q("CiBiYXNlL2Jsb2JfbmFtZXMvYmxvYl9uYW1lcy5wcm90bxIPYmFzZS5ibG9iX25hbWVzImcKBUJsb2JzEiMKFmJhc2VsaW5lX2NoZWNrcG9pbnRfaWQYASABKAlIAIgBARINCgVhZGRlZBgCIAMoDBIPCgdkZWxldGVkGAMgAygMQhkKF19iYXNlbGluZV9jaGVja3BvaW50X2lkYgZwcm90bzM");var Kp=Q("Ci9zZXJ2aWNlcy9iaWxsaW5nL2NlbnRyYWwvYmlsbGluZ19lbnRpdGllcy5wcm90bxIHYmlsbGluZypPCglVc2FnZVVuaXQSFgoSVVNBR0VfVU5JVF9VTktOT1dOEAASFgoSVVNBR0VfVU5JVF9DUkVESVRTEAESEgoOVVNBR0VfVU5JVF9VU0QQAkJQWk5naXRodWIuY29tL2F1Z21lbnRjb2RlL2F1Z21lbnQvc2VydmljZXMvYmlsbGluZy9jZW50cmFsL2JpbGxpbmdfZW50aXRpZXNfcHJvdG9iBnByb3RvMw",[se]),Qp;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CREDITS=1]="CREDITS",e[e.USD=2]="USD"})(Qp||(Qp={}));var Op=Q("Ch1zZXJ2aWNlcy9saWIvcHJvdG8vY2hhdC5wcm90bxIEY2hhdCJ+ChVDaGF0UmVxdWVzdEVkaXRFdmVudHMSLgoLZWRpdF9ldmVudHMYASADKAsyGS5jaGF0LkNoYXRSZXF1ZXN0RmlsZUVkaXQSKgoGc291cmNlGAIgASgOMhUuY2hhdC5FZGl0RXZlbnRTb3VyY2VIAIgBAUIJCgdfc291cmNlIoYBCg9DaGF0UmVxdWVzdEZpbGUSEQoJZmlsZV9kYXRhGAEgASgJEhIKCm1lZGlhX3R5cGUYAiABKAkSFgoJZmlsZV9uYW1lGAMgASgJSACIAQESFwoKcGFnZV9jb3VudBgEIAEoBUgBiAEBQgwKCl9maWxlX25hbWVCDQoLX3BhZ2VfY291bnQitQEKE0NoYXRSZXF1ZXN0RmlsZUVkaXQSDAoEcGF0aBgBIAEoCRIdChBiZWZvcmVfYmxvYl9uYW1lGAIgASgJSACIAQESHAoPYWZ0ZXJfYmxvYl9uYW1lGAMgASgJSAGIAQESKgoFZWRpdHMYBCADKAsyGy5jaGF0LkNoYXRSZXF1ZXN0U2luZ2xlRWRpdEITChFfYmVmb3JlX2Jsb2JfbmFtZUISChBfYWZ0ZXJfYmxvYl9uYW1lIrgBChNDaGF0UmVxdWVzdElkZVN0YXRlEjQKEXdvcmtzcGFjZV9mb2xkZXJzGAEgAygLMhkuY2hhdC5Xb3Jrc3BhY2VGb2xkZXJJbmZvEiMKG3dvcmtzcGFjZV9mb2xkZXJzX3VuY2hhbmdlZBgCIAEoCBIxChBjdXJyZW50X3Rlcm1pbmFsGAMgASgLMhIuY2hhdC5UZXJtaW5hbEluZm9IAIgBAUITChFfY3VycmVudF90ZXJtaW5hbCJNChBDaGF0UmVxdWVzdEltYWdlEhIKCmltYWdlX2RhdGEYASABKAkSJQoGZm9ybWF0GAIgASgOMhUuY2hhdC5JbWFnZUZvcm1hdFR5cGUidQoVQ2hhdFJlcXVlc3RTaW5nbGVFZGl0EhkKEWJlZm9yZV9saW5lX3N0YXJ0GAEgASgNEhMKC2JlZm9yZV90ZXh0GAIgASgJEhgKEGFmdGVyX2xpbmVfc3RhcnQYAyABKA0SEgoKYWZ0ZXJfdGV4dBgEIAEoCSIiCg9DaGF0UmVxdWVzdFRleHQSDwoHY29udGVudBgBIAEoCSLxAgoVQ2hhdFJlcXVlc3RUb29sUmVzdWx0EhMKC3Rvb2xfdXNlX2lkGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSEAoIaXNfZXJyb3IYAyABKAgSFwoKcmVxdWVzdF9pZBgEIAEoCUgAiAEBEjIKDWNvbnRlbnRfbm9kZXMYBSADKAsyGy5jaGF0LlRvb2xSZXN1bHRDb250ZW50Tm9kZRIYCgtkdXJhdGlvbl9tcxgGIAEoA0gBiAEBEhoKDXN0YXJ0X3RpbWVfbXMYByABKANIAogBARI7CghtZXRhZGF0YRgIIAMoCzIpLmNoYXQuQ2hhdFJlcXVlc3RUb29sUmVzdWx0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19yZXF1ZXN0X2lkQg4KDF9kdXJhdGlvbl9tc0IQCg5fc3RhcnRfdGltZV9tcyLaAQoWQ2hhdFJlc3VsdE5vZGVNZXRhZGF0YRIWCglvcGVuYWlfaWQYASABKAlIAIgBARIWCglnb29nbGVfdHMYAiABKAxIAYgBARIVCghwcm92aWRlchgDIAEoCUgCiAEBEhIKBXBoYXNlGAQgASgJSAOIAQESHQoQc291cmNlX2V2ZW50X3NlcRgFIAEoA0gEiAEBQgwKCl9vcGVuYWlfaWRCDAoKX2dvb2dsZV90c0ILCglfcHJvdmlkZXJCCAoGX3BoYXNlQhMKEV9zb3VyY2VfZXZlbnRfc2VxItoBChJDaGF0UmVzdWx0VGhpbmtpbmcSFAoHc3VtbWFyeRgBIAEoCUgAiAEBEh4KEWVuY3J5cHRlZF9jb250ZW50GAIgASgJSAGIAQESFAoHY29udGVudBgDIAEoCUgCiAEBEikKHG9wZW5haV9yZXNwb25zZXNfYXBpX2l0ZW1faWQYBCABKAlIA4gBAUIKCghfc3VtbWFyeUIUChJfZW5jcnlwdGVkX2NvbnRlbnRCCgoIX2NvbnRlbnRCHwodX29wZW5haV9yZXNwb25zZXNfYXBpX2l0ZW1faWQi4AUKFENoYXRSZXN1bHRUb2tlblVzYWdlEhkKDGlucHV0X3Rva2VucxgBIAEoBUgAiAEBEhoKDW91dHB1dF90b2tlbnMYAiABKAVIAYgBARIkChdjYWNoZV9yZWFkX2lucHV0X3Rva2VucxgDIAEoBUgCiAEBEigKG2NhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucxgEIAEoBUgDiAEBEiEKFHN5c3RlbV9wcm9tcHRfdG9rZW5zGAUgASgFSASIAQESIAoTY2hhdF9oaXN0b3J5X3Rva2VucxgGIAEoBUgFiAEBEiMKFmN1cnJlbnRfbWVzc2FnZV90b2tlbnMYByABKAVIBogBARIfChJtYXhfY29udGV4dF90b2tlbnMYCCABKAVIB4gBARIkChd0b29sX2RlZmluaXRpb25zX3Rva2VucxgJIAEoBUgIiAEBEh8KEnRvb2xfcmVzdWx0X3Rva2VucxgKIAEoBUgJiAEBEiYKGWFzc2lzdGFudF9yZXNwb25zZV90b2tlbnMYCyABKAVICogBARIeChFtYXhfb3V0cHV0X3Rva2VucxgMIAEoBUgLiAEBQg8KDV9pbnB1dF90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCGgoYX2NhY2hlX3JlYWRfaW5wdXRfdG9rZW5zQh4KHF9jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnNCFwoVX3N5c3RlbV9wcm9tcHRfdG9rZW5zQhYKFF9jaGF0X2hpc3RvcnlfdG9rZW5zQhkKF19jdXJyZW50X21lc3NhZ2VfdG9rZW5zQhUKE19tYXhfY29udGV4dF90b2tlbnNCGgoYX3Rvb2xfZGVmaW5pdGlvbnNfdG9rZW5zQhUKE190b29sX3Jlc3VsdF90b2tlbnNCHAoaX2Fzc2lzdGFudF9yZXNwb25zZV90b2tlbnNCFAoSX21heF9vdXRwdXRfdG9rZW5zImMKEUNoYXRSZXN1bHRUb29sVXNlEhMKC3Rvb2xfdXNlX2lkGAEgASgJEhEKCXRvb2xfbmFtZRgCIAEoCRISCgppbnB1dF9qc29uGAMgASgJEhIKCmlzX3BhcnRpYWwYBCABKAgiRgoMVGVybWluYWxJbmZvEhMKC3Rlcm1pbmFsX2lkGAEgASgNEiEKGWN1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkYAiABKAkiTgoOVG9vbERlZmluaXRpb24SDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIZChFpbnB1dF9zY2hlbWFfanNvbhgDIAEoCSK4AQoVVG9vbFJlc3VsdENvbnRlbnROb2RlEi0KBHR5cGUYASABKA4yHy5jaGF0LlRvb2xSZXN1bHRDb250ZW50Tm9kZVR5cGUSGQoMdGV4dF9jb250ZW50GAIgASgJSACIAQESMgoNaW1hZ2VfY29udGVudBgDIAEoCzIWLmNoYXQuQ2hhdFJlcXVlc3RJbWFnZUgBiAEBQg8KDV90ZXh0X2NvbnRlbnRCEAoOX2ltYWdlX2NvbnRlbnQiQwoTV29ya3NwYWNlRm9sZGVySW5mbxIXCg9yZXBvc2l0b3J5X3Jvb3QYASABKAkSEwoLZm9sZGVyX3Jvb3QYAiABKAkqqQEKE0NoYXRSZXF1ZXN0Tm9kZVR5cGUSCAoEVEVYVBAAEg8KC1RPT0xfUkVTVUxUEAESCQoFSU1BR0UQAhIMCghJTUFHRV9JRBADEg0KCUlERV9TVEFURRAEEg8KC0VESVRfRVZFTlRTEAUSEgoOQ0hFQ0tQT0lOVF9SRUYQBhIICgRGSUxFEAgSCwoHRklMRV9JRBAJEhMKD0hJU1RPUllfU1VNTUFSWRAKKusBChJDaGF0UmVzdWx0Tm9kZVR5cGUSEAoMUkFXX1JFU1BPTlNFEAASFwoTU1VHR0VTVEVEX1FVRVNUSU9OUxABEhYKEk1BSU5fVEVYVF9GSU5JU0hFRBACEhkKFVdPUktTUEFDRV9GSUxFX0NIVU5LUxADEhQKEFJFTEVWQU5UX1NPVVJDRVMQBBIMCghUT09MX1VTRRAFEhIKDlRPT0xfVVNFX1NUQVJUEAcSDAoIVEhJTktJTkcQCBIUChBCSUxMSU5HX01FVEFEQVRBEAkSDwoLVE9LRU5fVVNBR0UQCiIECAYQBiIECAsQCyquAQoOQ2hhdFN0b3BSZWFzb24SFgoSUkVBU09OX1VOU1BFQ0lGSUVEEAASDAoIRU5EX1RVUk4QARIOCgpNQVhfVE9LRU5TEAISFgoSVE9PTF9VU0VfUkVRVUVTVEVEEAMSCgoGU0FGRVRZEAQSDgoKUkVDSVRBVElPThAFEhsKF01BTEZPUk1FRF9GVU5DVElPTl9DQUxMEAYSFQoRU1RPUF9SRUFTT05fRVJST1IQBypICg9FZGl0RXZlbnRTb3VyY2USDwoLVU5TUEVDSUZJRUQQABINCglVU0VSX0VESVQQARIVChFDSEVDS1BPSU5UX1JFVkVSVBACKlUKD0ltYWdlRm9ybWF0VHlwZRIcChhJTUFHRV9GT1JNQVRfVU5TUEVDSUZJRUQQABIHCgNQTkcQARIICgRKUEVHEAISBwoDR0lGEAMSCAoEV0VCUBAEKl4KGVRvb2xSZXN1bHRDb250ZW50Tm9kZVR5cGUSHAoYQ09OVEVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASEAoMQ09OVEVOVF9URVhUEAESEQoNQ09OVEVOVF9JTUFHRRACQjhaNmdpdGh1Yi5jb20vYXVnbWVudGNvZGUvYXVnbWVudC9zZXJ2aWNlcy9saWIvcHJvdG8vY2hhdGIGcHJvdG8z");var Tp;(function(e){e[e.TEXT=0]="TEXT",e[e.TOOL_RESULT=1]="TOOL_RESULT",e[e.IMAGE=2]="IMAGE",e[e.IMAGE_ID=3]="IMAGE_ID",e[e.IDE_STATE=4]="IDE_STATE",e[e.EDIT_EVENTS=5]="EDIT_EVENTS",e[e.CHECKPOINT_REF=6]="CHECKPOINT_REF",e[e.FILE=8]="FILE",e[e.FILE_ID=9]="FILE_ID",e[e.HISTORY_SUMMARY=10]="HISTORY_SUMMARY"})(Tp||(Tp={}));var zp;(function(e){e[e.RAW_RESPONSE=0]="RAW_RESPONSE",e[e.SUGGESTED_QUESTIONS=1]="SUGGESTED_QUESTIONS",e[e.MAIN_TEXT_FINISHED=2]="MAIN_TEXT_FINISHED",e[e.WORKSPACE_FILE_CHUNKS=3]="WORKSPACE_FILE_CHUNKS",e[e.RELEVANT_SOURCES=4]="RELEVANT_SOURCES",e[e.TOOL_USE=5]="TOOL_USE",e[e.TOOL_USE_START=7]="TOOL_USE_START",e[e.THINKING=8]="THINKING",e[e.BILLING_METADATA=9]="BILLING_METADATA",e[e.TOKEN_USAGE=10]="TOKEN_USAGE"})(zp||(zp={}));var Dp;(function(e){e[e.REASON_UNSPECIFIED=0]="REASON_UNSPECIFIED",e[e.END_TURN=1]="END_TURN",e[e.MAX_TOKENS=2]="MAX_TOKENS",e[e.TOOL_USE_REQUESTED=3]="TOOL_USE_REQUESTED",e[e.SAFETY=4]="SAFETY",e[e.RECITATION=5]="RECITATION",e[e.MALFORMED_FUNCTION_CALL=6]="MALFORMED_FUNCTION_CALL",e[e.STOP_REASON_ERROR=7]="STOP_REASON_ERROR"})(Dp||(Dp={}));var Lp;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.USER_EDIT=1]="USER_EDIT",e[e.CHECKPOINT_REVERT=2]="CHECKPOINT_REVERT"})(Lp||(Lp={}));var Hp;(function(e){e[e.IMAGE_FORMAT_UNSPECIFIED=0]="IMAGE_FORMAT_UNSPECIFIED",e[e.PNG=1]="PNG",e[e.JPEG=2]="JPEG",e[e.GIF=3]="GIF",e[e.WEBP=4]="WEBP"})(Hp||(Hp={}));var Mp;(function(e){e[e.CONTENT_TYPE_UNSPECIFIED=0]="CONTENT_TYPE_UNSPECIFIED",e[e.CONTENT_TEXT=1]="CONTENT_TEXT",e[e.CONTENT_IMAGE=2]="CONTENT_IMAGE"})(Mp||(Mp={}));var In=Q("Ch1zZXJ2aWNlcy9jaGF0X2hvc3QvY2hhdC5wcm90bxIEY2hhdCJECg9CcmluZ1lvdXJPd25LZXkSJAoIcHJvdmlkZXIYASABKA4yEi5jaGF0LkJZT0tQcm92aWRlchILCgNrZXkYAiABKAki6AMKEENoYW5nZWRGaWxlU3RhdHMSNwoQYWRkZWRfZmlsZV9zdGF0cxgBIAEoCzIdLmNoYXQuUGVyVHlwZUNoYW5nZWRGaWxlU3RhdHMSOAoRYnJva2VuX2ZpbGVfc3RhdHMYAiABKAsyHS5jaGF0LlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEjgKEWNvcGllZF9maWxlX3N0YXRzGAMgASgLMh0uY2hhdC5QZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cxI5ChJkZWxldGVkX2ZpbGVfc3RhdHMYBCABKAsyHS5jaGF0LlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEjoKE21vZGlmaWVkX2ZpbGVfc3RhdHMYBSABKAsyHS5jaGF0LlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEjkKEnJlbmFtZWRfZmlsZV9zdGF0cxgGIAEoCzIdLmNoYXQuUGVyVHlwZUNoYW5nZWRGaWxlU3RhdHMSOgoTdW5tZXJnZWRfZmlsZV9zdGF0cxgHIAEoCzIdLmNoYXQuUGVyVHlwZUNoYW5nZWRGaWxlU3RhdHMSOQoSdW5rbm93bl9maWxlX3N0YXRzGAggASgLMh0uY2hhdC5QZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cyLxAQoZQ2hhdEZlYXR1cmVEZXRlY3Rpb25GbGFncxIlChhzdXBwb3J0X3JlbGV2YW50X3NvdXJjZXMYAyABKAhIAIgBARIjChZzdXBwb3J0X3Rvb2xfdXNlX3N0YXJ0GAQgASgISAGIAQESJgoZc3VwcG9ydF9wYXJhbGxlbF90b29sX3VzZRgFIAEoCEgCiAEBQhsKGV9zdXBwb3J0X3JlbGV2YW50X3NvdXJjZXNCGQoXX3N1cHBvcnRfdG9vbF91c2Vfc3RhcnRCHAoaX3N1cHBvcnRfcGFyYWxsZWxfdG9vbF91c2VKBAgBEAJKBAgCEAMiywYKE0NoYXRIaXN0b3J5TWV0YWRhdGESJgoJY2hhdF9tb2RlGAEgASgOMg4uY2hhdC5DaGF0TW9kZUgAiAEBEjMKCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFgoJaXNfc2lsZW50GAMgASgISAKIAQESGgoNaXNfc3VjY2Vzc2Z1bBgEIAEoCEgDiAEBEhcKCm1vZGVsX25hbWUYBSABKAlIBIgBARIXCgpyZXF1ZXN0X2lkGAYgASgJSAWIAQESFAoHdHVybl9pZBgHIAEoCUgGiAEBEiMKFnBhcmVudF9jb252ZXJzYXRpb25faWQYCCABKAlIB4gBARIhChRyb290X2NvbnZlcnNhdGlvbl9pZBgJIAEoCUgIiAEBEigKG3BlcnNpc3RlZF90aHJvdWdoX2V2ZW50X3NlcRgKIAEoA0gJiAEBEhcKCmlzX3BhcnRpYWwYCyABKAhICogBARIcCg9zdWJzY3JpcHRpb25faWQYDCABKAlIC4gBARIbCg5zZW5kZXJfdXNlcl9pZBgNIAEoCUgMiAEBEjMKE3Zmc19maWxlX3JlZmVyZW5jZXMYDiADKAsyFi5jaGF0LlZGU0ZpbGVSZWZlcmVuY2USMwoTbWNwX3Rvb2xfcmVmZXJlbmNlcxgPIAMoCzIWLmNoYXQuTUNQVG9vbFJlZmVyZW5jZRIqCgtzaWxlbnRfdHlwZRgQIAEoDjIQLmNoYXQuU2lsZW50VHlwZUgNiAEBQgwKCl9jaGF0X21vZGVCDQoLX2NyZWF0ZWRfYXRCDAoKX2lzX3NpbGVudEIQCg5faXNfc3VjY2Vzc2Z1bEINCgtfbW9kZWxfbmFtZUINCgtfcmVxdWVzdF9pZEIKCghfdHVybl9pZEIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZEIXChVfcm9vdF9jb252ZXJzYXRpb25faWRCHgocX3BlcnNpc3RlZF90aHJvdWdoX2V2ZW50X3NlcUINCgtfaXNfcGFydGlhbEISChBfc3Vic2NyaXB0aW9uX2lkQhEKD19zZW5kZXJfdXNlcl9pZEIOCgxfc2lsZW50X3R5cGUiSwoMQ2hhdFBvc2l0aW9uEhQKDHByZWZpeF9iZWdpbhgBIAEoBRISCgpzdWZmaXhfZW5kGAIgASgFEhEKCWJsb2JfbmFtZRgDIAEoCSJfCg9DaGF0UmVwbGFjZVRleHQSGAoQcmVwbGFjZW1lbnRfdGV4dBgBIAEoCRIZChFzdGFydF9saW5lX251bWJlchgCIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAyABKAUi1hUKC0NoYXRSZXF1ZXN0EhIKCm1vZGVsX25hbWUYASABKAkSDAoEcGF0aBgCIAEoCRIOCgZwcmVmaXgYAyABKAkSFQoNc2VsZWN0ZWRfY29kZRgEIAEoCRIOCgZzdWZmaXgYBSABKAkSDwoHbWVzc2FnZRgGIAEoCRIkCgxjaGF0X2hpc3RvcnkYByADKAsyDi5jaGF0LkV4Y2hhbmdlEiQKCHBvc2l0aW9uGAggASgLMhIuY2hhdC5DaGF0UG9zaXRpb24SDAoEbGFuZxgKIAEoCRITCgtzZXF1ZW5jZV9pZBgLIAEoDRIlCgVibG9icxgMIAMoCzIWLmJhc2UuYmxvYl9uYW1lcy5CbG9icxIkChxlbmFibGVfcHJlZmVyZW5jZV9jb2xsZWN0aW9uGA0gASgIEhkKEXVzZXJfZ3VpZGVkX2Jsb2JzGA4gAygJEhsKE2V4dGVybmFsX3NvdXJjZV9pZHMYECADKAkSKAogY29udGV4dF9jb2RlX2V4Y2hhbmdlX3JlcXVlc3RfaWQYDyABKAkSJQodZGlzYWJsZV9hdXRvX2V4dGVybmFsX3NvdXJjZXMYESABKAgSHQoVcHJvbXB0X2Zvcm1hdHRlcl9uYW1lGBIgASgJEjcKEmNoYW5nZWRfZmlsZV9zdGF0cxgTIAEoCzIWLmNoYXQuQ2hhbmdlZEZpbGVTdGF0c0gAiAEBEhEKBGRpZmYYFCABKAlIAYgBARIgChhyZWxldmFudF9jb21taXRfbWVzc2FnZXMYFSADKAkSHwoXZXhhbXBsZV9jb21taXRfbWVzc2FnZXMYFiADKAkSHAoPdXNlcl9ndWlkZWxpbmVzGBcgASgJSAKIAQESIQoUd29ya3NwYWNlX2d1aWRlbGluZXMYGCABKAlIA4gBARJFChdmZWF0dXJlX2RldGVjdGlvbl9mbGFncxgZIAEoCzIfLmNoYXQuQ2hhdEZlYXR1cmVEZXRlY3Rpb25GbGFnc0gEiAEBEi4KEHRvb2xfZGVmaW5pdGlvbnMYGiADKAsyFC5jaGF0LlRvb2xEZWZpbml0aW9uEiQKBW5vZGVzGBsgAygLMhUuY2hhdC5DaGF0UmVxdWVzdE5vZGUSLAoMcGVyc29uYV90eXBlGB0gASgOMhEuY2hhdC5QZXJzb25hVHlwZUgFiAEBEhUKDWlzX3N1c3BpY2lvdXMYHiABKAgSGQoFcnVsZXMYHyADKAsyCi5jaGF0LlJ1bGUSDgoGc2lsZW50GCAgASgIEhgKC2FnZW50X3Rhc2tzGCEgASgJSAaIAQESJQoLY2xpZW50X3R5cGUYIiABKA4yEC5jaGF0LkNsaWVudFR5cGUSJgoJY2hhdF9tb2RlGCMgASgOMg4uY2hhdC5DaGF0TW9kZUgHiAEBEjsKFHRoaXJkX3BhcnR5X292ZXJyaWRlGCQgASgLMhguY2hhdC5UaGlyZFBhcnR5T3ZlcnJpZGVICIgBARIcCg9jb252ZXJzYXRpb25faWQYJSABKAlICYgBARIqCgtzaWxlbnRfdHlwZRgmIAEoDjIQLmNoYXQuU2lsZW50VHlwZUgKiAEBEiMKFnN5c3RlbV9wcm9tcHRfb3ZlcnJpZGUYJyABKAlIC4gBARJBChpzeXN0ZW1fcHJvbXB0X3JlcGxhY2VtZW50cxgoIAMoCzIdLmNoYXQuU3lzdGVtUHJvbXB0UmVwbGFjZW1lbnQSGwoGc2tpbGxzGCogAygLMgsuY2hhdC5Ta2lsbBIhChRzeXN0ZW1fcHJvbXB0X2FwcGVuZBgrIAEoCUgMiAEBEi8KImNvbnN1bWVfY3JlZGl0c19vbl9zaWxlbnRfcmVxdWVzdHMYLCABKAhIDYgBARIUCgd0dXJuX2lkGC0gASgJSA6IAQESIwoWcGFyZW50X2NvbnZlcnNhdGlvbl9pZBguIAEoCUgPiAEBEiEKFHJvb3RfY29udmVyc2F0aW9uX2lkGC8gASgJSBCIAQESHQoQZGlzYWJsZV90aGlua2luZxgwIAEoCEgRiAEBEjYKEmJyaW5nX3lvdXJfb3duX2tleRgxIAEoCzIVLmNoYXQuQnJpbmdZb3VyT3duS2V5SBKIAQESIQoUcmVxdWVzdGVkX21vZGVsX25hbWUYMiABKAlIE4gBARIcCg9zdWJzY3JpcHRpb25faWQYMyABKAlIFIgBARIyCg9jbGllbnRfbWV0YWRhdGEYNCABKAsyFC5jaGF0LkNsaWVudE1ldGFkYXRhSBWIAQESJgoZaW50ZXJuYWxfYWdlbnRfcGVyc29uYV9pZBg1IAEoCUgWiAEBEhwKD3BlcnNvbmFfcHJvbXB0cxg2IAEoCUgXiAEBEicKGnNraXBfY29udmVyc2F0aW9uX2luZGV4aW5nGDcgASgISBiIAQESGwoOc2VuZGVyX3VzZXJfaWQYOCABKAlIGYgBARIeChFldV9pbmZlcmVuY2Vfb25seRg5IAEoCEgaiAEBEkoKHGN1c3RvbV9idXRsZXJfcm91dGluZ19jb25maWcYOiABKAsyHy5jaGF0LkN1c3RvbUJ1dGxlclJvdXRpbmdDb25maWdIG4gBARIzChN2ZnNfZmlsZV9yZWZlcmVuY2VzGDsgAygLMhYuY2hhdC5WRlNGaWxlUmVmZXJlbmNlEjMKE21jcF90b29sX3JlZmVyZW5jZXMYPCADKAsyFi5jaGF0Lk1DUFRvb2xSZWZlcmVuY2USHQoQcmVhc29uaW5nX2VmZm9ydBg9IAEoCUgciAEBQhUKE19jaGFuZ2VkX2ZpbGVfc3RhdHNCBwoFX2RpZmZCEgoQX3VzZXJfZ3VpZGVsaW5lc0IXChVfd29ya3NwYWNlX2d1aWRlbGluZXNCGgoYX2ZlYXR1cmVfZGV0ZWN0aW9uX2ZsYWdzQg8KDV9wZXJzb25hX3R5cGVCDgoMX2FnZW50X3Rhc2tzQgwKCl9jaGF0X21vZGVCFwoVX3RoaXJkX3BhcnR5X292ZXJyaWRlQhIKEF9jb252ZXJzYXRpb25faWRCDgoMX3NpbGVudF90eXBlQhkKF19zeXN0ZW1fcHJvbXB0X292ZXJyaWRlQhcKFV9zeXN0ZW1fcHJvbXB0X2FwcGVuZEIlCiNfY29uc3VtZV9jcmVkaXRzX29uX3NpbGVudF9yZXF1ZXN0c0IKCghfdHVybl9pZEIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZEIXChVfcm9vdF9jb252ZXJzYXRpb25faWRCEwoRX2Rpc2FibGVfdGhpbmtpbmdCFQoTX2JyaW5nX3lvdXJfb3duX2tleUIXChVfcmVxdWVzdGVkX21vZGVsX25hbWVCEgoQX3N1YnNjcmlwdGlvbl9pZEISChBfY2xpZW50X21ldGFkYXRhQhwKGl9pbnRlcm5hbF9hZ2VudF9wZXJzb25hX2lkQhIKEF9wZXJzb25hX3Byb21wdHNCHQobX3NraXBfY29udmVyc2F0aW9uX2luZGV4aW5nQhEKD19zZW5kZXJfdXNlcl9pZEIUChJfZXVfaW5mZXJlbmNlX29ubHlCHwodX2N1c3RvbV9idXRsZXJfcm91dGluZ19jb25maWdCEwoRX3JlYXNvbmluZ19lZmZvcnRKBAgJEApKBAgcEB1KBAgpECpSCWNhbnZhc19pZCLzAwoPQ2hhdFJlcXVlc3ROb2RlEgoKAmlkGAEgASgFEicKBHR5cGUYAiABKA4yGS5jaGF0LkNoYXRSZXF1ZXN0Tm9kZVR5cGUSLQoJdGV4dF9ub2RlGAMgASgLMhUuY2hhdC5DaGF0UmVxdWVzdFRleHRIAIgBARI6ChB0b29sX3Jlc3VsdF9ub2RlGAQgASgLMhsuY2hhdC5DaGF0UmVxdWVzdFRvb2xSZXN1bHRIAYgBARIvCgppbWFnZV9ub2RlGAUgASgLMhYuY2hhdC5DaGF0UmVxdWVzdEltYWdlSAKIAQESNgoOaWRlX3N0YXRlX25vZGUYByABKAsyGS5jaGF0LkNoYXRSZXF1ZXN0SWRlU3RhdGVIA4gBARI6ChBlZGl0X2V2ZW50c19ub2RlGAggASgLMhsuY2hhdC5DaGF0UmVxdWVzdEVkaXRFdmVudHNIBIgBARItCglmaWxlX25vZGUYCSABKAsyFS5jaGF0LkNoYXRSZXF1ZXN0RmlsZUgFiAEBQgwKCl90ZXh0X25vZGVCEwoRX3Rvb2xfcmVzdWx0X25vZGVCDQoLX2ltYWdlX25vZGVCEQoPX2lkZV9zdGF0ZV9ub2RlQhMKEV9lZGl0X2V2ZW50c19ub2RlQgwKCl9maWxlX25vZGVKBAgGEAcixAQKDENoYXRSZXNwb25zZRIMCgR0ZXh0GAEgASgJEhoKEnVua25vd25fYmxvYl9uYW1lcxgCIAMoCRIcChRjaGVja3BvaW50X25vdF9mb3VuZBgDIAEoCBI3ChV3b3Jrc3BhY2VfZmlsZV9jaHVua3MYBCADKAsyGC5jaGF0LldvcmtzcGFjZUZpbGVDaHVuaxJHCh1pbmNvcnBvcmF0ZWRfZXh0ZXJuYWxfc291cmNlcxgFIAMoCzIgLmNoYXQuSW5jb3Jwb3JhdGVkRXh0ZXJuYWxTb3VyY2USOQoVcmVwbGFjZV90ZXh0X3Jlc3BvbnNlGAYgASgLMhUuY2hhdC5DaGF0UmVwbGFjZVRleHRIAIgBARIjCgVub2RlcxgHIAMoCzIULmNoYXQuQ2hhdFJlc3VsdE5vZGUSNgoLc3RhdHVzX2NvZGUYCCABKA4yHC5jaGF0LkNoYXRSZXNwb25zZVN0YXR1c0NvZGVIAYgBARIuCgtzdG9wX3JlYXNvbhgJIAEoDjIULmNoYXQuQ2hhdFN0b3BSZWFzb25IAogBARIaCg1lcnJvcl9tZXNzYWdlGAogASgJSAOIAQESIQoUZWZmZWN0aXZlX21vZGVsX25hbWUYCyABKAlIBIgBAUIYChZfcmVwbGFjZV90ZXh0X3Jlc3BvbnNlQg4KDF9zdGF0dXNfY29kZUIOCgxfc3RvcF9yZWFzb25CEAoOX2Vycm9yX21lc3NhZ2VCFwoVX2VmZmVjdGl2ZV9tb2RlbF9uYW1lIsYCChlDaGF0UmVzdWx0QmlsbGluZ01ldGFkYXRhEhsKDnRyYW5zYWN0aW9uX2lkGAEgASgJSACIAQESGAoQY3JlZGl0c19jb25zdW1lZBgCIAEoBRIQCghjb3N0X3VzZBgHIAEoCRImCgp1c2FnZV91bml0GAggASgOMhIuYmlsbGluZy5Vc2FnZVVuaXQSIQoUZWZmZWN0aXZlX21vZGVsX25hbWUYCSABKAlIAYgBAUIRCg9fdHJhbnNhY3Rpb25faWRCFwoVX2VmZmVjdGl2ZV9tb2RlbF9uYW1lSgQIAxAESgQIBBAFSgQIBRAGSgQIBhAHUgxpbnB1dF90b2tlbnNSDW91dHB1dF90b2tlbnNSF2NhY2hlX3JlYWRfaW5wdXRfdG9rZW5zUhtjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMi7gMKDkNoYXRSZXN1bHROb2RlEgoKAmlkGAEgASgFEiYKBHR5cGUYAiABKA4yGC5jaGF0LkNoYXRSZXN1bHROb2RlVHlwZRIPCgdjb250ZW50GAMgASgJEi4KCHRvb2xfdXNlGAQgASgLMhcuY2hhdC5DaGF0UmVzdWx0VG9vbFVzZUgAiAEBEi8KCHRoaW5raW5nGAUgASgLMhguY2hhdC5DaGF0UmVzdWx0VGhpbmtpbmdIAYgBARI+ChBiaWxsaW5nX21ldGFkYXRhGAYgASgLMh8uY2hhdC5DaGF0UmVzdWx0QmlsbGluZ01ldGFkYXRhSAKIAQESNAoLdG9rZW5fdXNhZ2UYCCABKAsyGi5jaGF0LkNoYXRSZXN1bHRUb2tlblVzYWdlSAOIAQESMwoIbWV0YWRhdGEYByABKAsyHC5jaGF0LkNoYXRSZXN1bHROb2RlTWV0YWRhdGFIBIgBARIZCgx0aW1lc3RhbXBfbXMYCiABKARIBYgBAUILCglfdG9vbF91c2VCCwoJX3RoaW5raW5nQhMKEV9iaWxsaW5nX21ldGFkYXRhQg4KDF90b2tlbl91c2FnZUILCglfbWV0YWRhdGFCDwoNX3RpbWVzdGFtcF9tc0oECAkQClINY29udGV4dF91c2FnZSK+AQoOQ2xpZW50TWV0YWRhdGESEwoLY2xpZW50X25hbWUYASABKAkSFgoOY2xpZW50X3ZlcnNpb24YAiABKAkSFgoOY2xpZW50X3N1YnR5cGUYAyABKAkSFwoPYWNwX2NsaWVudF9uYW1lGAQgASgJEhoKEmFjcF9jbGllbnRfdmVyc2lvbhgFIAEoCRISCgp1c2VyX2FnZW50GAYgASgJEhAKCHBsYXRmb3JtGAcgASgJEgwKBGFyY2gYCCABKAkiwwIKGUN1c3RvbUJ1dGxlclJvdXRpbmdDb25maWcSFQoNZGVmYXVsdF9tb2RlbBgBIAEoCRJECgt0aWVyX21vZGVscxgCIAMoCzIvLmNoYXQuQ3VzdG9tQnV0bGVyUm91dGluZ0NvbmZpZy5UaWVyTW9kZWxzRW50cnkSWQoWdGllcl9yZWFzb25pbmdfZWZmb3J0cxgDIAMoCzI5LmNoYXQuQ3VzdG9tQnV0bGVyUm91dGluZ0NvbmZpZy5UaWVyUmVhc29uaW5nRWZmb3J0c0VudHJ5GjEKD1RpZXJNb2RlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjsKGVRpZXJSZWFzb25pbmdFZmZvcnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLFAgoIRXhjaGFuZ2USFwoPcmVxdWVzdF9tZXNzYWdlGAEgASgJEhoKDXJlc3BvbnNlX3RleHQYAiABKAlIAIgBARIXCgpyZXF1ZXN0X2lkGAMgASgJSAGIAQESLAoNcmVxdWVzdF9ub2RlcxgEIAMoCzIVLmNoYXQuQ2hhdFJlcXVlc3ROb2RlEiwKDnJlc3BvbnNlX25vZGVzGAUgAygLMhQuY2hhdC5DaGF0UmVzdWx0Tm9kZRIzCgpjcmVhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhkKDGNvbXBvc2l0ZV9pZBgHIAEoCUgDiAEBQhAKDl9yZXNwb25zZV90ZXh0Qg0KC19yZXF1ZXN0X2lkQg0KC19jcmVhdGVkX2F0Qg8KDV9jb21wb3NpdGVfaWQiZQoURXhjaGFuZ2VXaXRoTWV0YWRhdGESIAoIZXhjaGFuZ2UYASABKAsyDi5jaGF0LkV4Y2hhbmdlEisKCG1ldGFkYXRhGAIgASgLMhkuY2hhdC5DaGF0SGlzdG9yeU1ldGFkYXRhImAKGkluY29ycG9yYXRlZEV4dGVybmFsU291cmNlEhMKC3NvdXJjZV9uYW1lGAEgASgJEhEKBGxpbmsYAiABKAlIAIgBARIRCglzb3VyY2VfaWQYAyABKAlCBwoFX2xpbmsiSwoQTUNQVG9vbFJlZmVyZW5jZRIRCglzZXJ2ZXJfaWQYASABKAkSFgoJdG9vbF9uYW1lGAIgASgJSACIAQFCDAoKX3Rvb2xfbmFtZSJvChJQZXJGaWxlQ2hhbmdlU3RhdHMSEQoJZmlsZV9wYXRoGAEgASgJEhcKD2luc2VydGlvbl9jb3VudBgCIAEoBRIWCg5kZWxldGlvbl9jb3VudBgDIAEoBRIVCg1vbGRfZmlsZV9wYXRoGAQgASgJIrEBChdQZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cxIaChJjaGFuZ2VkX2ZpbGVfY291bnQYASABKAUSPAoacGVyX2ZpbGVfY2hhbmdlX3N0YXRzX2hlYWQYAiADKAsyGC5jaGF0LlBlckZpbGVDaGFuZ2VTdGF0cxI8ChpwZXJfZmlsZV9jaGFuZ2Vfc3RhdHNfdGFpbBgDIAMoCzIYLmNoYXQuUGVyRmlsZUNoYW5nZVN0YXRzIm0KBFJ1bGUSHAoEdHlwZRgBIAEoDjIOLmNoYXQuUnVsZVR5cGUSDAoEcGF0aBgCIAEoCRIPCgdjb250ZW50GAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIjwKBVNraWxsEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEAoIbG9jYXRpb24YAyABKAkiOgoXU3lzdGVtUHJvbXB0UmVwbGFjZW1lbnQSDgoGc2VhcmNoGAEgASgJEg8KB3JlcGxhY2UYAiABKAkilAEKElRoaXJkUGFydHlPdmVycmlkZRIgChNwcm92aWRlcl9tb2RlbF9uYW1lGAEgASgJSACIAQESFAoHYXBpX2tleRgCIAEoCUgBiAEBEhUKCGJhc2VfdXJsGAMgASgJSAKIAQFCFgoUX3Byb3ZpZGVyX21vZGVsX25hbWVCCgoIX2FwaV9rZXlCCwoJX2Jhc2VfdXJsImoKEFZGU0ZpbGVSZWZlcmVuY2USDwoHZmlsZV9pZBgBIAEoCRIVCg1maWxlc3lzdGVtX2lkGAIgASgJEgwKBHBhdGgYAyABKAkSEAoIc3BhY2VfaWQYBCABKAkSDgoGaXNfZGlyGAUgASgIIk0KEldvcmtzcGFjZUZpbGVDaHVuaxISCgpjaGFyX3N0YXJ0GAEgASgFEhAKCGNoYXJfZW5kGAIgASgFEhEKCWJsb2JfbmFtZRgDIAEoCSr0AQoMQllPS1Byb3ZpZGVyEhQKEFBST1ZJREVSX1VOS05PV04QABIWChJQUk9WSURFUl9BTlRIUk9QSUMQARITCg9QUk9WSURFUl9PUEVOQUkQAhIUChBQUk9WSURFUl9CRURST0NLEAMSFgoSUFJPVklERVJfRklSRVdPUktTEAQSHwobUFJPVklERVJfVkVSVEVYQUlfQU5USFJPUElDEAUSHAoYUFJPVklERVJfVkVSVEVYQUlfR0VNSU5JEAYSGwoXUFJPVklERVJfQkVEUk9DS19PUEVOQUkQBxIXChNQUk9WSURFUl9PUEVOUk9VVEVSEAgq5QEKCENoYXRNb2RlEggKBENIQVQQABIJCgVBR0VOVBABEg8KC09SSUVOVEFUSU9OEAMSEAoMUkVNT1RFX0FHRU5UEAUSDQoJQ0xJX0FHRU5UEAYSFgoSQ0xJX05PTklOVEVSQUNUSVZFEAcSDwoLQ09ERV9SRVZJRVcQCBIVChFBR0VOVElDX1NMQUNLX0JPVBAJEhYKEkNPTlRFWFRfRU5HSU5FX1NESxAKEhYKEkNPTlRFWFRfRU5HSU5FX01DUBALEhYKElBPU0VJRE9OX0NMSV9BR0VOVBAMIgQIAhACIgQIBBAEKnoKFkNoYXRSZXNwb25zZVN0YXR1c0NvZGUSBgoCT0sQABIZChVFWENFRURfQ09OVEVYVF9MRU5HVEgQARIPCgtXQVNfQkxPQ0tFRBACEhMKD0lOVkFMSURfUkVRVUVTVBADEhcKE1NVTU1BUklaRV9BTkRfUkVUUlkQBCpFCgpDbGllbnRUeXBlEgsKB1VOS05PV04QABIHCgNDTEkQARIKCgZWU0NPREUQAhIMCghJTlRFTExJShADEgcKA1dFQhAEKkgKC1BlcnNvbmFUeXBlEgsKB0RFRkFVTFQQABIOCgpQUk9UT1RZUEVSEAESDgoKQlJBSU5TVE9STRACEgwKCFJFVklFV0VSEAMqQAoIUnVsZVR5cGUSEwoPQUxXQVlTX0FUVEFDSEVEEAASCgoGTUFOVUFMEAESEwoPQUdFTlRfUkVRVUVTVEVEEAIq8wQKClNpbGVudFR5cGUSGwoXU0lMRU5UX1RZUEVfVU5TUEVDSUZJRUQQABIXChNTSUxFTlRfVFlQRV9VTktOT1dOEBMSHgoaUkVXUklURV9QUk9NUFRfSU5TVFJVQ1RJT04QARIaChZISVNUT1JZX1NVTU1BUllfUFJPTVBUEAISHwobQ0xBU1NJRllfQU5EX0RJU1RJTExfUFJPTVBUEAMSJwojQ0xBU1NJRllfQU5EX0RJU1RJTExfU1VDQ0VTU19QUk9NUFQQBBIUChBJTkpFQ1RJT05fUFJPTVBUEAUSGwoXU1VNTUFSWV9FWENIQU5HRV9QUk9NUFQQBhIbChdVUERBVEVfVEFTS19MSVNUX1BST01QVBAHEh0KGUdFTkVSQVRFX1FVRVNUSU9OU19QUk9NUFQQCBIaChZQUk9KRUNUX1NVTU1BUllfUFJPTVBUEAkSFgoSQ09NUFJFU1NJT05fUFJPTVBUEAoSIAocTEFOR1VBR0VfTE9DQUxJWkFUSU9OX1BST01QVBAMEhsKF0RFVEVDVF9MQU5HVUFHRVNfUFJPTVBUEA0SIgoeT1JJRU5UQVRJT05fQ09NUFJFU1NJT05fUFJPTVBUEA4SIAocT1JJRU5UQVRJT05fQlVJTERfVEVTVF9RVUVSWRAPEiQKIEhFTFBGVUxfU09GVFdBUkVfRU5HSU5FRVJfUFJPTVBUEBASGwoXQUdFTlRfT05CT0FSRElOR19QUk9NUFQQERIgChxFTVBUWV9NRVNTQUdFX1dJVEhfVE9PTF9DQUxMEBISFgoSVE9PTF9TRUFSQ0hfUFJPTVBUEBQiBAgLEAtQBGIGcHJvdG8z",[Xt,se,Gn,Kp,Op]);var jp;(function(e){e[e.PROVIDER_UNKNOWN=0]="PROVIDER_UNKNOWN",e[e.PROVIDER_ANTHROPIC=1]="PROVIDER_ANTHROPIC",e[e.PROVIDER_OPENAI=2]="PROVIDER_OPENAI",e[e.PROVIDER_BEDROCK=3]="PROVIDER_BEDROCK",e[e.PROVIDER_FIREWORKS=4]="PROVIDER_FIREWORKS",e[e.PROVIDER_VERTEXAI_ANTHROPIC=5]="PROVIDER_VERTEXAI_ANTHROPIC",e[e.PROVIDER_VERTEXAI_GEMINI=6]="PROVIDER_VERTEXAI_GEMINI",e[e.PROVIDER_BEDROCK_OPENAI=7]="PROVIDER_BEDROCK_OPENAI",e[e.PROVIDER_OPENROUTER=8]="PROVIDER_OPENROUTER"})(jp||(jp={}));var Pp;(function(e){e[e.CHAT=0]="CHAT",e[e.AGENT=1]="AGENT",e[e.ORIENTATION=3]="ORIENTATION",e[e.REMOTE_AGENT=5]="REMOTE_AGENT",e[e.CLI_AGENT=6]="CLI_AGENT",e[e.CLI_NONINTERACTIVE=7]="CLI_NONINTERACTIVE",e[e.CODE_REVIEW=8]="CODE_REVIEW",e[e.AGENTIC_SLACK_BOT=9]="AGENTIC_SLACK_BOT",e[e.CONTEXT_ENGINE_SDK=10]="CONTEXT_ENGINE_SDK",e[e.CONTEXT_ENGINE_MCP=11]="CONTEXT_ENGINE_MCP",e[e.POSEIDON_CLI_AGENT=12]="POSEIDON_CLI_AGENT"})(Pp||(Pp={}));var qp;(function(e){e[e.OK=0]="OK",e[e.EXCEED_CONTEXT_LENGTH=1]="EXCEED_CONTEXT_LENGTH",e[e.WAS_BLOCKED=2]="WAS_BLOCKED",e[e.INVALID_REQUEST=3]="INVALID_REQUEST",e[e.SUMMARIZE_AND_RETRY=4]="SUMMARIZE_AND_RETRY"})(qp||(qp={}));var $p;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CLI=1]="CLI",e[e.VSCODE=2]="VSCODE",e[e.INTELLIJ=3]="INTELLIJ",e[e.WEB=4]="WEB"})($p||($p={}));var eR;(function(e){e[e.DEFAULT=0]="DEFAULT",e[e.PROTOTYPER=1]="PROTOTYPER",e[e.BRAINSTORM=2]="BRAINSTORM",e[e.REVIEWER=3]="REVIEWER"})(eR||(eR={}));var tR;(function(e){e[e.ALWAYS_ATTACHED=0]="ALWAYS_ATTACHED",e[e.MANUAL=1]="MANUAL",e[e.AGENT_REQUESTED=2]="AGENT_REQUESTED"})(tR||(tR={}));var nR;(function(e){e[e.SILENT_TYPE_UNSPECIFIED=0]="SILENT_TYPE_UNSPECIFIED",e[e.SILENT_TYPE_UNKNOWN=19]="SILENT_TYPE_UNKNOWN",e[e.REWRITE_PROMPT_INSTRUCTION=1]="REWRITE_PROMPT_INSTRUCTION",e[e.HISTORY_SUMMARY_PROMPT=2]="HISTORY_SUMMARY_PROMPT",e[e.CLASSIFY_AND_DISTILL_PROMPT=3]="CLASSIFY_AND_DISTILL_PROMPT",e[e.CLASSIFY_AND_DISTILL_SUCCESS_PROMPT=4]="CLASSIFY_AND_DISTILL_SUCCESS_PROMPT",e[e.INJECTION_PROMPT=5]="INJECTION_PROMPT",e[e.SUMMARY_EXCHANGE_PROMPT=6]="SUMMARY_EXCHANGE_PROMPT",e[e.UPDATE_TASK_LIST_PROMPT=7]="UPDATE_TASK_LIST_PROMPT",e[e.GENERATE_QUESTIONS_PROMPT=8]="GENERATE_QUESTIONS_PROMPT",e[e.PROJECT_SUMMARY_PROMPT=9]="PROJECT_SUMMARY_PROMPT",e[e.COMPRESSION_PROMPT=10]="COMPRESSION_PROMPT",e[e.LANGUAGE_LOCALIZATION_PROMPT=12]="LANGUAGE_LOCALIZATION_PROMPT",e[e.DETECT_LANGUAGES_PROMPT=13]="DETECT_LANGUAGES_PROMPT",e[e.ORIENTATION_COMPRESSION_PROMPT=14]="ORIENTATION_COMPRESSION_PROMPT",e[e.ORIENTATION_BUILD_TEST_QUERY=15]="ORIENTATION_BUILD_TEST_QUERY",e[e.HELPFUL_SOFTWARE_ENGINEER_PROMPT=16]="HELPFUL_SOFTWARE_ENGINEER_PROMPT",e[e.AGENT_ONBOARDING_PROMPT=17]="AGENT_ONBOARDING_PROMPT",e[e.EMPTY_MESSAGE_WITH_TOOL_CALL=18]="EMPTY_MESSAGE_WITH_TOOL_CALL",e[e.TOOL_SEARCH_PROMPT=20]="TOOL_SEARCH_PROMPT"})(nR||(nR={}));var sa=Q("CiFiYXNlL2RpZmZfdXRpbHMvZWRpdF9ldmVudHMucHJvdG8SD2Jhc2UuZGlmZl91dGlscyJqCgpTaW5nbGVFZGl0EhQKDGJlZm9yZV9zdGFydBgBIAEoDRIYCgtiZWZvcmVfdGV4dBgCIAEoCUIDgAEBEhMKC2FmdGVyX3N0YXJ0GAMgASgNEhcKCmFmdGVyX3RleHQYBCABKAlCA4ABASKFAQoRR3JhbnVsYXJFZGl0RXZlbnQSEQoEcGF0aBgBIAEoCUIDgAEBEhgKEGJlZm9yZV9ibG9iX25hbWUYAiABKAkSFwoPYWZ0ZXJfYmxvYl9uYW1lGAMgASgJEioKBWVkaXRzGAQgAygLMhsuYmFzZS5kaWZmX3V0aWxzLlNpbmdsZUVkaXRiBnByb3RvMw");var iR=Q("ChxzZXJ2aWNlcy9hZ2VudHMvYWdlbnRzLnByb3RvEgZhZ2VudHMi9gQKG0NvZGViYXNlUmV0cmlldmFsUmF3UmVxdWVzdBIqCgdxdWVyaWVzGAEgAygLMhkuYWdlbnRzLlJhd1JldHJpZXZhbFF1ZXJ5EiUKBWJsb2JzGAIgAygLMhYuYmFzZS5ibG9iX25hbWVzLkJsb2JzEhIKCm1heF9jaHVua3MYAyABKAUSGQoRbWF4X291dHB1dF9sZW5ndGgYBCABKAUSGQoRdXNlcl9ndWlkZWRfYmxvYnMYBSADKAkSGwoTZXh0ZXJuYWxfc291cmNlX2lkcxgGIAMoCRIlCh1kaXNhYmxlX2F1dG9fZXh0ZXJuYWxfc291cmNlcxgHIAEoCBIMCgRwYXRoGAggASgJEg4KBnByZWZpeBgJIAEoCRIOCgZzdWZmaXgYCiABKAkSFQoNc2VsZWN0ZWRfY29kZRgLIAEoCRIeCgZkaWFsb2cYDCADKAsyDi5jaGF0LkV4Y2hhbmdlEiMKG2luY2x1ZGVfZm9ybWF0dGVkX3JldHJpZXZhbBgNIAEoCBIcChRpbmNsdWRlX2xpbmVfbnVtYmVycxgOIAEoCBIcCg9jb252ZXJzYXRpb25faWQYDyABKAlIAIgBARIjChZwYXJlbnRfY29udmVyc2F0aW9uX2lkGBAgASgJSAGIAQESIQoUcm9vdF9jb252ZXJzYXRpb25faWQYESABKAlIAogBARIUCgd0dXJuX2lkGBIgASgJSAOIAQFCEgoQX2NvbnZlcnNhdGlvbl9pZEIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZEIXChVfcm9vdF9jb252ZXJzYXRpb25faWRCCgoIX3R1cm5faWQioAEKHENvZGViYXNlUmV0cmlldmFsUmF3UmVzcG9uc2USKQoGY2h1bmtzGAEgAygLMhkuYWdlbnRzLlJhd1JldHJpZXZlZENodW5rEhsKE2Zvcm1hdHRlZF9yZXRyaWV2YWwYAiABKAkSGgoSdW5rbm93bl9ibG9iX25hbWVzGAMgAygJEhwKFGNoZWNrcG9pbnRfbm90X2ZvdW5kGAQgASgIIqQEChhDb2RlYmFzZVJldHJpZXZhbFJlcXVlc3QSGwoTaW5mb3JtYXRpb25fcmVxdWVzdBgBIAEoCRIeCgZkaWFsb2cYAiADKAsyDi5jaGF0LkV4Y2hhbmdlEiUKBWJsb2JzGAMgAygLMhYuYmFzZS5ibG9iX25hbWVzLkJsb2JzEhkKEW1heF9vdXRwdXRfbGVuZ3RoGAQgASgFEiIKGmRpc2FibGVfY29kZWJhc2VfcmV0cmlldmFsGAUgASgIEh8KF2VuYWJsZV9jb21taXRfcmV0cmlldmFsGAYgASgIEiUKHWVuYWJsZV9jb252ZXJzYXRpb25fcmV0cmlldmFsGAcgASgIEjYKEmJyaW5nX3lvdXJfb3duX2tleRgIIAEoCzIVLmNoYXQuQnJpbmdZb3VyT3duS2V5SACIAQESHAoPY29udmVyc2F0aW9uX2lkGAkgASgJSAGIAQESIwoWcGFyZW50X2NvbnZlcnNhdGlvbl9pZBgKIAEoCUgCiAEBEiEKFHJvb3RfY29udmVyc2F0aW9uX2lkGAsgASgJSAOIAQESFAoHdHVybl9pZBgMIAEoCUgEiAEBQhUKE19icmluZ195b3VyX293bl9rZXlCEgoQX2NvbnZlcnNhdGlvbl9pZEIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZEIXChVfcm9vdF9jb252ZXJzYXRpb25faWRCCgoIX3R1cm5faWQiuwYKGUNvZGViYXNlUmV0cmlldmFsUmVzcG9uc2USGwoTZm9ybWF0dGVkX3JldHJpZXZhbBgBIAEoCRIlCh1jb2RlYmFzZV9yZXRyaWV2YWxfZWxhcHNlZF9tcxgCIAEoBRIpCiFjb252ZXJzYXRpb25fcmV0cmlldmFsX2VsYXBzZWRfbXMYAyABKAUSKQohY29udmVyc2F0aW9uX2luaXRpYWxfcmV0cmlldmFsX21zGAQgASgFEicKH2NvbnZlcnNhdGlvbl9xdWVyeV9yZXdyaXRpbmdfbXMYBSABKAUSKgoiY29udmVyc2F0aW9uX2ZvbGxvd3VwX3JldHJpZXZhbF9tcxgGIAEoBRIbChNibG9iX25hbWVfbG9va3VwX21zGAcgASgFEiEKGWNvZGViYXNlX2NodW5rc19yZXRyaWV2ZWQYCCABKAUSIwobY29udmVyc2F0aW9uX2NodW5rc19pbml0aWFsGAkgASgFEiYKHmNvbnZlcnNhdGlvbl9xdWVyaWVzX2dlbmVyYXRlZBgKIAEoBRIkChxjb252ZXJzYXRpb25fY2h1bmtzX2ZvbGxvd3VwGAsgASgFEiQKHGNvbnZlcnNhdGlvbl9jaHVua3NfY29tYmluZWQYDCABKAUSKgoiY29kZWJhc2VfcmVzdWx0X2xlbl9wcmVfdHJ1bmNhdGlvbhgNIAEoBRIbChNjb2RlYmFzZV9yZXN1bHRfbGVuGA4gASgFEi4KJmNvbnZlcnNhdGlvbl9yZXN1bHRfbGVuX3ByZV90cnVuY2F0aW9uGA8gASgFEh8KF2NvbnZlcnNhdGlvbl9yZXN1bHRfbGVuGBAgASgFEhsKE2NvbWJpbmVkX3Jlc3VsdF9sZW4YESABKAUSFAoMdG90YWxfYnVkZ2V0GBIgASgFEhcKD2NvZGViYXNlX2J1ZGdldBgTIAEoBRIbChNjb252ZXJzYXRpb25fYnVkZ2V0GBQgASgFEhoKEmNvZGViYXNlX3RydW5jYXRlZBgVIAEoCBIeChZjb252ZXJzYXRpb25fdHJ1bmNhdGVkGBYgASgIEhcKD2ZpbmFsX3RydW5jYXRlZBgXIAEoCCJ0Cg9FZGl0RmlsZVJlcXVlc3QSEQoJZmlsZV9wYXRoGAEgASgJEhQKDGVkaXRfc3VtbWFyeRgCIAEoCRIhChlkZXRhaWxlZF9lZGl0X2Rlc2NyaXB0aW9uGAMgASgJEhUKDWZpbGVfY29udGVudHMYBCABKAkiRAoQRWRpdEZpbGVSZXNwb25zZRIeChZtb2RpZmllZF9maWxlX2NvbnRlbnRzGAEgASgJEhAKCGlzX2Vycm9yGAIgASgIImMKEVJhd1JldHJpZXZhbFF1ZXJ5EhMKC2Rlc2NyaXB0aW9uGAEgASgJEgwKBHBhdGgYAiABKAkSFwoPY29udGFpbnNfc3RyaW5nGAMgASgJEhIKCm1heF9jaHVua3MYBCABKAUihgIKEVJhd1JldHJpZXZlZENodW5rEgwKBHRleHQYASABKAkSDAoEcGF0aBgCIAEoCRISCgpjaGFyX3N0YXJ0GAMgASgFEhAKCGNoYXJfZW5kGAQgASgFEhIKCmxpbmVfc3RhcnQYBSABKAUSFwoPbGVuZ3RoX2luX2xpbmVzGAYgASgFEhEKCWJsb2JfbmFtZRgHIAEoCRINCgVzY29yZRgIIAEoAhIOCgZvcmlnaW4YCSABKAkSFgoObWF0Y2hlZF9zdHJpbmcYCiABKAkSGgoSZXh0ZXJuYWxfc291cmNlX2lkGAsgASgJEhwKFGV4dGVybmFsX3NvdXJjZV9uYW1lGAwgASgJIrkCChVSdW5SZW1vdGVUb29sUmVzcG9uc2USEwoLdG9vbF9vdXRwdXQYASABKAkSGwoTdG9vbF9yZXN1bHRfbWVzc2FnZRgCIAEoCRIUCghpc19lcnJvchgDIAEoCEICGAESMAoGc3RhdHVzGAQgASgOMiAuYWdlbnRzLlJlbW90ZVRvb2xSZXNwb25zZVN0YXR1cxIjChZjb21wcmVzc2VkX2Z1bGxfb3V0cHV0GAUgASgJSACIAQESHQoQZnVsbF9vdXRwdXRfc2l6ZRgGIAEoA0gBiAEBEjIKDWNvbnRlbnRfbm9kZXMYByADKAsyGy5jaGF0LlRvb2xSZXN1bHRDb250ZW50Tm9kZUIZChdfY29tcHJlc3NlZF9mdWxsX291dHB1dEITChFfZnVsbF9vdXRwdXRfc2l6ZSqrAgoMUmVtb3RlVG9vbElkEgsKB1VOS05PV04QABIOCgpXRUJfU0VBUkNIEAESDgoKR0lUSFVCX0FQSRAIEhsKF0dJVEhVQl9BUFBfUkVBRE9OTFlfQVBJEBISGwoXR0lUSFVCX0FQUF9QT1NUX0NPTU1FTlQQExIdChlHSVRIVUJfQVBQX1BSX0RFU0NSSVBUSU9OEBQSCgoGTElORUFSEAwSCAoESklSQRANEg4KCkNPTkZMVUVOQ0UQDhIKCgZOT1RJT04QDxIMCghTVVBBQkFTRRAQEgkKBUdMRUFOEBEiBAgCEAIiBAgDEAMiBAgEEAQiBAgFEAUiBAgGEAYiBAgHEAciBAgJEAkiBAgKEAoiBAgLEAsiBAgVEBUqDkNPTlRFWFRfQ0FOVkFTKtYBChhSZW1vdGVUb29sUmVzcG9uc2VTdGF0dXMSIQodVE9PTF9FWEVDVVRJT05fVU5LTk9XTl9TVEFUVVMQABIaChZUT09MX0VYRUNVVElPTl9TVUNDRVNTEAESEgoOVE9PTF9OT1RfRk9VTkQQAhIWChJJTlZBTElEX1RPT0xfSU5QVVQQAxIYChRUT09MX0VYRUNVVElPTl9FUlJPUhAEEhYKElRPT0xfTk9UX0FWQUlMQUJMRRAFEh0KGVRPT0xfQVVUSEVOVElDQVRJT05fRVJST1IQBmIGcHJvdG8z",[Xt,Gn,In]);var oR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.WEB_SEARCH=1]="WEB_SEARCH",e[e.GITHUB_API=8]="GITHUB_API",e[e.GITHUB_APP_READONLY_API=18]="GITHUB_APP_READONLY_API",e[e.GITHUB_APP_POST_COMMENT=19]="GITHUB_APP_POST_COMMENT",e[e.GITHUB_APP_PR_DESCRIPTION=20]="GITHUB_APP_PR_DESCRIPTION",e[e.LINEAR=12]="LINEAR",e[e.JIRA=13]="JIRA",e[e.CONFLUENCE=14]="CONFLUENCE",e[e.NOTION=15]="NOTION",e[e.SUPABASE=16]="SUPABASE",e[e.GLEAN=17]="GLEAN"})(oR||(oR={}));var rR;(function(e){e[e.TOOL_EXECUTION_UNKNOWN_STATUS=0]="TOOL_EXECUTION_UNKNOWN_STATUS",e[e.TOOL_EXECUTION_SUCCESS=1]="TOOL_EXECUTION_SUCCESS",e[e.TOOL_NOT_FOUND=2]="TOOL_NOT_FOUND",e[e.INVALID_TOOL_INPUT=3]="INVALID_TOOL_INPUT",e[e.TOOL_EXECUTION_ERROR=4]="TOOL_EXECUTION_ERROR",e[e.TOOL_NOT_AVAILABLE=5]="TOOL_NOT_AVAILABLE",e[e.TOOL_AUTHENTICATION_ERROR=6]="TOOL_AUTHENTICATION_ERROR"})(rR||(rR={}));var bt=Q("CjBzZXJ2aWNlcy9hdXRoL2NlbnRyYWwvc2VydmVyL2F1dGhfZW50aXRpZXMucHJvdG8SDWF1dGhfZW50aXRpZXMipQEKBlVzZXJJZBI2Cgx1c2VyX2lkX3R5cGUYASABKA4yIC5hdXRoX2VudGl0aWVzLlVzZXJJZC5Vc2VySWRUeXBlEg8KB3VzZXJfaWQYAiABKAkiUgoKVXNlcklkVHlwZRILCgdVTktOT1dOEAASCwoHQVVHTUVOVBABEg0KCUFQSV9UT0tFThACEgkKBVNMQUNLEAMSEAoMSU5URVJOQUxfSUFQEAQqjgEKB0JvdFR5cGUSGAoUQk9UX1RZUEVfVU5TUEVDSUZJRUQQABITCg9DT0RFX1JFVklFV19CT1QQARIYChRDT0RFX1JFVklFV19FVkFMX0JPVBACEg4KCkFUSEVOQV9CT1QQAxINCglTTEFDS19CT1QQBBIOCgpMSU5FQVJfQk9UEAUSCwoHU0FOREJPWBAGKlMKCFVzZXJUeXBlEhkKFVVTRVJfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVVTRVJfVFlQRV9SRUdVTEFSEAESFQoRVVNFUl9UWVBFX1NFUlZJQ0UQAkJRWk9naXRodWIuY29tL2F1Z21lbnRjb2RlL2F1Z21lbnQvc2VydmljZXMvYXV0aC9jZW50cmFsL3NlcnZlci9hdXRoX2VudGl0aWVzX3Byb3RvYgZwcm90bzM",[se]);var lR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.AUGMENT=1]="AUGMENT",e[e.API_TOKEN=2]="API_TOKEN",e[e.SLACK=3]="SLACK",e[e.INTERNAL_IAP=4]="INTERNAL_IAP"})(lR||(lR={}));var sR;(function(e){e[e.BOT_TYPE_UNSPECIFIED=0]="BOT_TYPE_UNSPECIFIED",e[e.CODE_REVIEW_BOT=1]="CODE_REVIEW_BOT",e[e.CODE_REVIEW_EVAL_BOT=2]="CODE_REVIEW_EVAL_BOT",e[e.ATHENA_BOT=3]="ATHENA_BOT",e[e.SLACK_BOT=4]="SLACK_BOT",e[e.LINEAR_BOT=5]="LINEAR_BOT",e[e.SANDBOX=6]="SANDBOX"})(sR||(sR={}));var aR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.REGULAR=1]="REGULAR",e[e.SERVICE=2]="SERVICE"})(aR||(aR={}));var dR=Q("CidzZXJ2aWNlcy9hdXRoL2NlbnRyYWwvc2VydmVyL2F1dGgucHJvdG8SBGF1dGgipAIKGUNhbmNlbFN1YnNjcmlwdGlvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSGgoSY2FuY2VsX2ltbWVkaWF0ZWx5GAMgASgIEjoKCGZlZWRiYWNrGAQgASgLMiguYXV0aC5DYW5jZWxTdWJzY3JpcHRpb25SZXF1ZXN0LkZlZWRiYWNrEg4KBnJlYXNvbhgFIAEoCRp7CghGZWVkYmFjaxI1ChNjYW5jZWxsYXRpb25fcmVhc29uGAEgASgOMhguYXV0aC5DYW5jZWxsYXRpb25SZWFzb24SIAoTYWRkaXRpb25hbF9mZWVkYmFjaxgCIAEoCUgAiAEBQhYKFF9hZGRpdGlvbmFsX2ZlZWRiYWNrKugHChJDYW5jZWxsYXRpb25SZWFzb24SIwofQ0FOQ0VMTEFUSU9OX1JFQVNPTl9VTlNQRUNJRklFRBAAEiUKIUNBTkNFTExBVElPTl9SRUFTT05fVE9PX0VYUEVOU0lWRRABEigKJENBTkNFTExBVElPTl9SRUFTT05fTk9UX1VTSU5HX0VOT1VHSBACEigKJENBTkNFTExBVElPTl9SRUFTT05fTUlTU0lOR19GRUFUVVJFUxADEigKJENBTkNFTExBVElPTl9SRUFTT05fVEVDSE5JQ0FMX0lTU1VFUxAEEi8KK0NBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX0NPTVBFVElUT1IQBRIwCixDQU5DRUxMQVRJT05fUkVBU09OX1NXSVRDSElOR19UT19DTEFVREVfQ09ERRAGEioKJkNBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX0NPREVYEAcSLworQ0FOQ0VMTEFUSU9OX1JFQVNPTl9TV0lUQ0hJTkdfVE9fR0VNSU5JX0NMSRAIEisKJ0NBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX0NVUlNPUhAJEi0KKUNBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX1dJTkRTVVJGEAoSLAooQ0FOQ0VMTEFUSU9OX1JFQVNPTl9TV0lUQ0hJTkdfVE9fQ09QSUxPVBALEioKJkNBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX0NMSU5FEAwSKgomQ0FOQ0VMTEFUSU9OX1JFQVNPTl9TV0lUQ0hJTkdfVE9fREVWSU4QDRIoCiRDQU5DRUxMQVRJT05fUkVBU09OX1NXSVRDSElOR19UT19ST08QDhIsCihDQU5DRUxMQVRJT05fUkVBU09OX1NXSVRDSElOR19UT19MT1ZBQkxFEA8SLAooQ0FOQ0VMTEFUSU9OX1JFQVNPTl9TV0lUQ0hJTkdfVE9fRkFDVE9SWRAQEi8KK0NBTkNFTExBVElPTl9SRUFTT05fU1dJVENISU5HX1RPX09USEVSX1RPT0wQERIoCiRDQU5DRUxMQVRJT05fUkVBU09OX05PX0xPTkdFUl9ORUVERUQQEhIdChlDQU5DRUxMQVRJT05fUkVBU09OX09USEVSEBMSMwovQ0FOQ0VMTEFUSU9OX1JFQVNPTl9SRVFVSVJFX0NPTVBMRVRJT05TX0ZFQVRVUkUQFBIxCi1DQU5DRUxMQVRJT05fUkVBU09OX1JFUVVJUkVfTkVYVF9FRElUX0ZFQVRVUkUQFUJDWkFnaXRodWIuY29tL2F1Z21lbnRjb2RlL2F1Z21lbnQvc2VydmljZXMvYXV0aC9jZW50cmFsL3NlcnZlci9wcm90b2IGcHJvdG8z",[se,bt]);var cR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.TOO_EXPENSIVE=1]="TOO_EXPENSIVE",e[e.NOT_USING_ENOUGH=2]="NOT_USING_ENOUGH",e[e.MISSING_FEATURES=3]="MISSING_FEATURES",e[e.TECHNICAL_ISSUES=4]="TECHNICAL_ISSUES",e[e.SWITCHING_TO_COMPETITOR=5]="SWITCHING_TO_COMPETITOR",e[e.SWITCHING_TO_CLAUDE_CODE=6]="SWITCHING_TO_CLAUDE_CODE",e[e.SWITCHING_TO_CODEX=7]="SWITCHING_TO_CODEX",e[e.SWITCHING_TO_GEMINI_CLI=8]="SWITCHING_TO_GEMINI_CLI",e[e.SWITCHING_TO_CURSOR=9]="SWITCHING_TO_CURSOR",e[e.SWITCHING_TO_WINDSURF=10]="SWITCHING_TO_WINDSURF",e[e.SWITCHING_TO_COPILOT=11]="SWITCHING_TO_COPILOT",e[e.SWITCHING_TO_CLINE=12]="SWITCHING_TO_CLINE",e[e.SWITCHING_TO_DEVIN=13]="SWITCHING_TO_DEVIN",e[e.SWITCHING_TO_ROO=14]="SWITCHING_TO_ROO",e[e.SWITCHING_TO_LOVABLE=15]="SWITCHING_TO_LOVABLE",e[e.SWITCHING_TO_FACTORY=16]="SWITCHING_TO_FACTORY",e[e.SWITCHING_TO_OTHER_TOOL=17]="SWITCHING_TO_OTHER_TOOL",e[e.NO_LONGER_NEEDED=18]="NO_LONGER_NEEDED",e[e.OTHER=19]="OTHER",e[e.REQUIRE_COMPLETIONS_FEATURE=20]="REQUIRE_COMPLETIONS_FEATURE",e[e.REQUIRE_NEXT_EDIT_FEATURE=21]="REQUIRE_NEXT_EDIT_FEATURE"})(cR||(cR={}));var hR=Q("Ci5zZXJ2aWNlcy9iaWxsaW5nL21ldGVyaW5nL21ldGVyaW5nX2V2ZW50LnByb3RvEg5tZXRlcmluZ19ldmVudCKRBAoOUmVxdWVzdENvbnRleHQSFgoOcmVxdWVzdF9zb3VyY2UYASABKAkSEgoKcmVxdWVzdF9pZBgCIAEoCRISCgpzZXNzaW9uX2lkGAMgASgJEhEKCXRlbmFudF9pZBgFIAEoCRImCgd1c2VyX2lkGAYgASgLMhUuYXV0aF9lbnRpdGllcy5Vc2VySWQSGwoTdXNlcl9lbWFpbF9vdmVycmlkZRgHIAEoCRIXCg9jb252ZXJzYXRpb25faWQYCCABKAkSHgoWcGFyZW50X2NvbnZlcnNhdGlvbl9pZBgJIAEoCRIcChRyb290X2NvbnZlcnNhdGlvbl9pZBgKIAEoCRIPCgd0dXJuX2lkGAsgASgJEioKCXVzZXJfdHlwZRgMIAEoDjIXLmF1dGhfZW50aXRpZXMuVXNlclR5cGUSKAoIYm90X3R5cGUYDSABKA4yFi5hdXRoX2VudGl0aWVzLkJvdFR5cGUSDwoHaXNfYnlvaxgOIAEoCBIRCglleHBlcnRfaWQYDyABKAkSGQoRZXVfaW5mZXJlbmNlX29ubHkYECABKAgSEwoLd29ya2Zsb3dfaWQYESABKAkSEwoLcmVzaWRlbnRfaWQYEiABKAkSFgoOZW52aXJvbm1lbnRfaWQYEyABKAkSEAoIYWdlbnRfaWQYFCABKAkSEAoIc3BhY2VfaWQYFSABKAlKBAgEEAUiiAEKFUFnZW50TWV0ZXJpbmdNZXRhZGF0YRIdChVhY3Rpdml0eV9kaXNwbGF5X25hbWUYASABKAkSGgoSbW9kZWxfZGlzcGxheV9uYW1lGAIgASgJEhwKFHJlcXVlc3RlZF9tb2RlbF9uYW1lGAMgASgJEhYKDnJvdXRpbmdfcmVhc29uGAQgASgJIloKHUNvbnRleHRFbmdpbmVNZXRlcmluZ01ldGFkYXRhEh0KFWFjdGl2aXR5X2Rpc3BsYXlfbmFtZRgBIAEoCRIaChJtb2RlbF9kaXNwbGF5X25hbWUYAiABKAkiYwoXQ29tcHV0ZU1ldGVyaW5nTWV0YWRhdGESHQoVYWN0aXZpdHlfZGlzcGxheV9uYW1lGAEgASgJEhoKEm1vZGVsX2Rpc3BsYXlfbmFtZRgCIAEoCRINCgV2bV9pZBgDIAEoCSKgBAoLQ29zdENvbnRleHQSGwoTYWN0aXZpdHlfbXVsdGlwbGllchgBIAEoARIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIZChFjYWNoZV9yZWFkX3Rva2VucxgEIAEoBRIaChJjYWNoZV93cml0ZV90b2tlbnMYBSABKAUSEgoKbW9kZWxfbmFtZRgGIAEoCRIWCg50b3RhbF9jb3N0X3VzZBgHIAEoARIaChJieW9rX3Byb3ZpZGVyX25hbWUYCCABKAkSFgoOc3VyY2hhcmdlX3JhdGUYCSABKAESFQoNc3VyY2hhcmdlX3VzZBgKIAEoCRIVCg1iYXNlX2Nvc3RfdXNkGAsgASgJEhAKCHZtX2NvdW50GAwgASgFEhoKEnRvdGFsX2NwdV9jb3N0X3VzZBgNIAEoARIdChV0b3RhbF9tZW1vcnlfY29zdF91c2QYDiABKAESHgoWdG90YWxfYmlsbGFibGVfc2Vjb25kcxgPIAEoARIRCgljcHVfY29yZXMYECABKAISFwoPbWVtb3J5X3NpemVfbWliGBEgASgFEhcKD3Byb3ZpZGVyX3JlZ2lvbhgSIAEoCRIWCg5lbmRwb2ludF9zY29wZRgTIAEoCRIgChNyZWdpb25hbF9tdWx0aXBsaWVyGBQgASgBSACIAQFCFgoUX3JlZ2lvbmFsX211bHRpcGxpZXIizwUKDU1ldGVyaW5nRXZlbnQSFgoOaWRlbXBvdGVuY3lfaWQYASABKAkSOwoKdXNhZ2VfdHlwZRgCIAEoDjInLm1ldGVyaW5nX2V2ZW50Lk1ldGVyaW5nRXZlbnQuVXNhZ2VUeXBlEjcKD3JlcXVlc3RfY29udGV4dBgDIAEoCzIeLm1ldGVyaW5nX2V2ZW50LlJlcXVlc3RDb250ZXh0EkgKF2FnZW50X21ldGVyaW5nX21ldGFkYXRhGAQgASgLMiUubWV0ZXJpbmdfZXZlbnQuQWdlbnRNZXRlcmluZ01ldGFkYXRhSAASWQogY29udGV4dF9lbmdpbmVfbWV0ZXJpbmdfbWV0YWRhdGEYByABKAsyLS5tZXRlcmluZ19ldmVudC5Db250ZXh0RW5naW5lTWV0ZXJpbmdNZXRhZGF0YUgAEkwKGWNvbXB1dGVfbWV0ZXJpbmdfbWV0YWRhdGEYCyABKAsyJy5tZXRlcmluZ19ldmVudC5Db21wdXRlTWV0ZXJpbmdNZXRhZGF0YUgAEi0KCXRpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQY3JlZGl0c19jb25zdW1lZBgGIAEoARIxCgxjb3N0X2NvbnRleHQYCCABKAsyGy5tZXRlcmluZ19ldmVudC5Db3N0Q29udGV4dBIPCgdkcnlfcnVuGAkgASgIEhMKB2lzX2J5b2sYCiABKAhCAhgBEhkKEWJpbGxlZF9hbW91bnRfdXNkGA4gASgJEiMKG2VzdGltYXRlZF9jdXN0b21lcl9jb3N0X3VzZBgPIAEoCSJPCglVc2FnZVR5cGUSFgoSVVNBR0VfVFlQRV9VTktOT1dOEAASCQoFQUdFTlQQARISCg5DT05URVhUX0VOR0lORRACEgsKB0NPTVBVVEUQA0IKCghtZXRhZGF0YUJGWkRnaXRodWIuY29tL2F1Z21lbnRjb2RlL2F1Z21lbnQvc2VydmljZXMvYmlsbGluZy9tZXRlcmluZ19ldmVudF9wcm90b2IGcHJvdG8z",[se,bt]);var uR;(function(e){e[e.USAGE_TYPE_UNKNOWN=0]="USAGE_TYPE_UNKNOWN",e[e.AGENT=1]="AGENT",e[e.CONTEXT_ENGINE=2]="CONTEXT_ENGINE",e[e.COMPUTE=3]="COMPUTE"})(uR||(uR={}));var bR=Q("CilzZXJ2aWNlcy9jb21wbGV0aW9uX2hvc3QvY29tcGxldGlvbi5wcm90bxIKY29tcGxldGlvbiJECg9HaXREaWZmRmlsZUluZm8SGQoRY29udGVudF9ibG9iX25hbWUYASABKAkSFgoOZmlsZV9ibG9iX25hbWUYAiABKAki6wEKC1JlY2VuY3lJbmZvEjUKEXRhYl9zd2l0Y2hfZXZlbnRzGAEgAygLMhouY29tcGxldGlvbi5UYWJTd2l0Y2hFdmVudBI3ChJnaXRfZGlmZl9maWxlX2luZm8YAiADKAsyGy5jb21wbGV0aW9uLkdpdERpZmZGaWxlSW5mbxIzCg5yZWNlbnRfY2hhbmdlcxgDIAMoCzIbLmNvbXBsZXRpb24uUmVwbGFjZW1lbnRUZXh0EjcKD3ZpZXdlZF9jb250ZW50cxgEIAMoCzIeLmNvbXBsZXRpb24uVmlld2VkQ29udGVudEV2ZW50IoUCCg9SZXBsYWNlbWVudFRleHQSEQoJYmxvYl9uYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSEgoKY2hhcl9zdGFydBgDIAEoDRIQCghjaGFyX2VuZBgEIAEoDRIYChByZXBsYWNlbWVudF90ZXh0GAUgASgJEhcKD3ByZXNlbnRfaW5fYmxvYhgGIAEoCBIfChJleHBlY3RlZF9ibG9iX25hbWUYByABKAlIAIgBARIyCgl0aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCFQoTX2V4cGVjdGVkX2Jsb2JfbmFtZUIMCgpfdGltZXN0YW1wIjYKDlRhYlN3aXRjaEV2ZW50EgwKBHBhdGgYASABKAkSFgoOZmlsZV9ibG9iX25hbWUYAiABKAkizgEKElZpZXdlZENvbnRlbnRFdmVudBIMCgRwYXRoGAEgASgJEhYKDmZpbGVfYmxvYl9uYW1lGAIgASgJEhcKD3Zpc2libGVfY29udGVudBgDIAEoCRISCgpsaW5lX3N0YXJ0GAQgASgNEhAKCGxpbmVfZW5kGAUgASgNEhIKCmNoYXJfc3RhcnQYBiABKA0SEAoIY2hhcl9lbmQYByABKA0SLQoJdGltZXN0YW1wGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcGIGcHJvdG8z",[Xt,sa,se]);var AR=Q("Ch1zZXJ2aWNlcy9lZGl0X2hvc3QvZWRpdC5wcm90bxIEZWRpdCJLCgxFZGl0UG9zaXRpb24SFAoMcHJlZml4X2JlZ2luGAEgASgFEhIKCnN1ZmZpeF9lbmQYAiABKAUSEQoJYmxvYl9uYW1lGAMgASgJIvEBCgtFZGl0UmVxdWVzdBISCgptb2RlbF9uYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSDgoGcHJlZml4GAMgASgJEhUKDXNlbGVjdGVkX3RleHQYBCABKAkSDgoGc3VmZml4GAUgASgJEhMKC2luc3RydWN0aW9uGAYgASgJEiQKCHBvc2l0aW9uGAcgASgLMhIuZWRpdC5FZGl0UG9zaXRpb24SDAoEbGFuZxgJIAEoCRITCgtzZXF1ZW5jZV9pZBgKIAEoDRIlCgVibG9icxgLIAEoCzIWLmJhc2UuYmxvYl9uYW1lcy5CbG9ic0oECAgQCSJWCgxFZGl0UmVzcG9uc2USDAoEdGV4dBgBIAEoCRIaChJ1bmtub3duX2Jsb2JfbmFtZXMYAiADKAkSHAoUY2hlY2twb2ludF9ub3RfZm91bmQYAyABKAgieQoIRXhjaGFuZ2USFwoPcmVxdWVzdF9tZXNzYWdlGAEgASgJEhoKDXJlc3BvbnNlX3RleHQYAiABKAlIAIgBARIXCgpyZXF1ZXN0X2lkGAMgASgJSAGIAQFCEAoOX3Jlc3BvbnNlX3RleHRCDQoLX3JlcXVlc3RfaWQijwEKHEluc3RydWN0aW9uQWdncmVnYXRlUmVzcG9uc2USDAoEdGV4dBgBIAEoCRIaChJ1bmtub3duX2Jsb2JfbmFtZXMYAiADKAkSHAoUY2hlY2twb2ludF9ub3RfZm91bmQYAyABKAgSJwoMcmVwbGFjZV90ZXh0GAQgAygLMhEuZWRpdC5SZXBsYWNlVGV4dCLwBAoSSW5zdHJ1Y3Rpb25SZXF1ZXN0EhIKCm1vZGVsX25hbWUYASABKAkSDAoEcGF0aBgCIAEoCRIOCgZwcmVmaXgYAyABKAkSFQoNc2VsZWN0ZWRfdGV4dBgEIAEoCRIOCgZzdWZmaXgYBSABKAkSEwoLaW5zdHJ1Y3Rpb24YBiABKAkSJAoIcG9zaXRpb24YByABKAsyEi5lZGl0LkVkaXRQb3NpdGlvbhIMCgRsYW5nGAggASgJEhMKC3NlcXVlbmNlX2lkGAkgASgNEiUKBWJsb2JzGAogASgLMhYuYmFzZS5ibG9iX25hbWVzLkJsb2JzEiQKDGNoYXRfaGlzdG9yeRgLIAMoCzIOLmVkaXQuRXhjaGFuZ2USFwoKY29kZV9ibG9jaxgMIAEoCUgAiAEBEh0KEHRhcmdldF9maWxlX3BhdGgYDSABKAlIAYgBARIgChN0YXJnZXRfZmlsZV9jb250ZW50GA4gASgJSAKIAQESLQogY29udGV4dF9jb2RlX2V4Y2hhbmdlX3JlcXVlc3RfaWQYDyABKAlIA4gBARIcCg91c2VyX2d1aWRlbGluZXMYECABKAlIBIgBARIhChR3b3Jrc3BhY2VfZ3VpZGVsaW5lcxgRIAEoCUgFiAEBQg0KC19jb2RlX2Jsb2NrQhMKEV90YXJnZXRfZmlsZV9wYXRoQhYKFF90YXJnZXRfZmlsZV9jb250ZW50QiMKIV9jb250ZXh0X2NvZGVfZXhjaGFuZ2VfcmVxdWVzdF9pZEISChBfdXNlcl9ndWlkZWxpbmVzQhcKFV93b3Jrc3BhY2VfZ3VpZGVsaW5lcyKuAQoLUmVwbGFjZVRleHQSEQoEdGV4dBgBIAEoCUgAiAEBEhcKCnN0YXJ0X2xpbmUYAiABKA1IAYgBARIVCghlbmRfbGluZRgDIAEoDUgCiAEBEhUKCG9sZF90ZXh0GAQgASgJSAOIAQESEwoLc2VxdWVuY2VfaWQYBSABKA1CBwoFX3RleHRCDQoLX3N0YXJ0X2xpbmVCCwoJX2VuZF9saW5lQgsKCV9vbGRfdGV4dGIGcHJvdG8z",[Xt]);var fR=Q("Ci9zZXJ2aWNlcy9pbnRlZ3JhdGlvbnMvZ2l0aHViL2dpdGh1Yl9ldmVudC5wcm90bxIMZ2l0aHViX2V2ZW50InkKDUV2ZW50TWV0YWRhdGESFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgDEhEKCXRlbmFudF9pZBgCIAEoCRITCgt0ZW5hbnRfbmFtZRgEIAEoCRISCgpyZXF1ZXN0X2lkGAMgASgJEhMKC2RlbGl2ZXJ5X2lkGAUgASgJIkQKClJlcG9zaXRvcnkSEQoEbmFtZRgBIAEoCUIDgAEBEhIKBW93bmVyGAIgASgJQgOAAQESDwoHbm9kZV9pZBgDIAEoCSKAAgoJUHVzaEV2ZW50EiwKCnJlcG9zaXRvcnkYASABKAsyGC5naXRodWJfZXZlbnQuUmVwb3NpdG9yeRIQCgNyZWYYAiABKAlCA4ABARIXCgpiZWZvcmVfc2hhGAMgASgJQgOAAQESFgoJYWZ0ZXJfc2hhGAQgASgJQgOAAQESNwoTcHVzaGVkX2F0X3RpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGZm9yY2VkGAYgASgIEjkKFWhlYWRfY29tbWl0X3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiQwoIVXNlckluZm8SEgoFbG9naW4YASABKAlCA4ABARISCgVlbWFpbBgCIAEoCUIDgAEBEg8KB25vZGVfaWQYAyABKAkiwgEKEUluc3RhbGxhdGlvbkV2ZW50EicKBXJlcG9zGAEgAygLMhguZ2l0aHViX2V2ZW50LlJlcG9zaXRvcnkSDgoGYWN0aW9uGAIgASgJEisKBnNlbmRlchgDIAEoCzIWLmdpdGh1Yl9ldmVudC5Vc2VySW5mb0gAiAEBEi4KCXJlcXVlc3RlchgEIAEoCzIWLmdpdGh1Yl9ldmVudC5Vc2VySW5mb0gBiAEBQgkKB19zZW5kZXJCDAoKX3JlcXVlc3RlciKtBQoQUHVsbFJlcXVlc3RFdmVudBIsCgpyZXBvc2l0b3J5GAEgASgLMhguZ2l0aHViX2V2ZW50LlJlcG9zaXRvcnkSDgoGYWN0aW9uGAIgASgJEg4KBm51bWJlchgDIAEoDRISCgV0aXRsZRgEIAEoCUIDgAEBEhEKBGJvZHkYBSABKAlCA4ABARINCgVzdGF0ZRgGIAEoCRImCgZhdXRob3IYByABKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm8SLQoIYXNzaWduZWUYCCABKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm9IAIgBARITCgZsYWJlbHMYCSADKAlCA4ABARIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCghoZWFkX3JlZhgMIAEoCUIDgAEBEhUKCGhlYWRfc2hhGA0gASgJQgOAAQESFQoIYmFzZV9yZWYYDiABKAlCA4ABARIVCghiYXNlX3NoYRgPIAEoCUIDgAEBEjMKE3JlcXVlc3RlZF9yZXZpZXdlcnMYECADKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm8SDQoFZHJhZnQYESABKAgSDgoGbWVyZ2VkGBIgASgIEjIKCW1lcmdlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCglhZGRpdGlvbnMYFCABKANIAogBARIWCglkZWxldGlvbnMYFSABKANIA4gBAUILCglfYXNzaWduZWVCDAoKX21lcmdlZF9hdEIMCgpfYWRkaXRpb25zQgwKCl9kZWxldGlvbnMi4gEKB0NvbW1lbnQSEQoEYm9keRgBIAEoCUIDgAEBEgoKAmlkGAIgASgDEiQKBHVzZXIYAyABKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm8SLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEcGF0aBgGIAEoCUIDgAEBEgwKBGxpbmUYByABKAUSEQoJY29tbWl0X2lkGAggASgJIocCCh1QdWxsUmVxdWVzdFJldmlld0NvbW1lbnRFdmVudBIsCgpyZXBvc2l0b3J5GAEgASgLMhguZ2l0aHViX2V2ZW50LlJlcG9zaXRvcnkSDgoGYWN0aW9uGAIgASgJEg4KBm51bWJlchgDIAEoDRImCgdjb21tZW50GAQgASgLMhUuZ2l0aHViX2V2ZW50LkNvbW1lbnQSHwoScHVsbF9yZXF1ZXN0X3RpdGxlGAUgASgJQgOAAQESGgoScHVsbF9yZXF1ZXN0X3N0YXRlGAYgASgJEjMKE3B1bGxfcmVxdWVzdF9hdXRob3IYByABKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm8i7gEKCkNoZWNrU3VpdGUSCgoCaWQYASABKAMSFQoIaGVhZF9zaGEYAiABKAlCA4ABARIOCgZzdGF0dXMYAyABKAkSEgoKY29uY2x1c2lvbhgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5Cg1wdWxsX3JlcXVlc3RzGAcgAygLMiIuZ2l0aHViX2V2ZW50LlB1bGxSZXF1ZXN0UmVmZXJlbmNlInEKFFB1bGxSZXF1ZXN0UmVmZXJlbmNlEg4KBm51bWJlchgBIAEoDRISCgV0aXRsZRgCIAEoCUIDgAEBEg0KBXN0YXRlGAMgASgJEiYKBmF1dGhvchgEIAEoCzIWLmdpdGh1Yl9ldmVudC5Vc2VySW5mbyJ+Cg9DaGVja1N1aXRlRXZlbnQSLAoKcmVwb3NpdG9yeRgBIAEoCzIYLmdpdGh1Yl9ldmVudC5SZXBvc2l0b3J5Eg4KBmFjdGlvbhgCIAEoCRItCgtjaGVja19zdWl0ZRgDIAEoCzIYLmdpdGh1Yl9ldmVudC5DaGVja1N1aXRlIrMBCgxJc3N1ZUNvbW1lbnQSEQoEYm9keRgBIAEoCUIDgAEBEgoKAmlkGAIgASgDEiQKBHVzZXIYAyABKAsyFi5naXRodWJfZXZlbnQuVXNlckluZm8SLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAihAIKEUlzc3VlQ29tbWVudEV2ZW50EiwKCnJlcG9zaXRvcnkYASABKAsyGC5naXRodWJfZXZlbnQuUmVwb3NpdG9yeRIOCgZhY3Rpb24YAiABKAkSDgoGbnVtYmVyGAMgASgNEisKB2NvbW1lbnQYBCABKAsyGi5naXRodWJfZXZlbnQuSXNzdWVDb21tZW50EhgKC2lzc3VlX3RpdGxlGAUgASgJQgOAAQESEwoLaXNzdWVfc3RhdGUYBiABKAkSFwoPaXNfcHVsbF9yZXF1ZXN0GAcgASgIEiwKDGlzc3VlX2F1dGhvchgIIAEoCzIWLmdpdGh1Yl9ldmVudC5Vc2VySW5mbyLQAQoMQ29tbWl0U3RhdHVzEg0KBXN0YXRlGAEgASgJEhcKCnRhcmdldF91cmwYAiABKAlCA4ABARIYCgtkZXNjcmlwdGlvbhgDIAEoCUIDgAEBEhQKB2NvbnRleHQYBCABKAlCA4ABARIzCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIDgAEBEjMKCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgOAAQEiwwEKC1N0YXR1c0V2ZW50EjEKCnJlcG9zaXRvcnkYASABKAsyGC5naXRodWJfZXZlbnQuUmVwb3NpdG9yeUIDgAEBEgsKA3NoYRgCIAEoCRINCgVzdGF0ZRgDIAEoCRIqCgZzdGF0dXMYBCABKAsyGi5naXRodWJfZXZlbnQuQ29tbWl0U3RhdHVzEjkKDXB1bGxfcmVxdWVzdHMYBSADKAsyIi5naXRodWJfZXZlbnQuUHVsbFJlcXVlc3RSZWZlcmVuY2Ui+wMKC0dpdGh1YkV2ZW50Ei0KCG1ldGFkYXRhGAEgASgLMhsuZ2l0aHViX2V2ZW50LkV2ZW50TWV0YWRhdGESEgoKZXZlbnRfdHlwZRgCIAEoCRInCgRwdXNoGAMgASgLMhcuZ2l0aHViX2V2ZW50LlB1c2hFdmVudEgAEjcKDGluc3RhbGxhdGlvbhgEIAEoCzIfLmdpdGh1Yl9ldmVudC5JbnN0YWxsYXRpb25FdmVudEgAEjYKDHB1bGxfcmVxdWVzdBgFIAEoCzIeLmdpdGh1Yl9ldmVudC5QdWxsUmVxdWVzdEV2ZW50SAASUgobcHVsbF9yZXF1ZXN0X3Jldmlld19jb21tZW50GAYgASgLMisuZ2l0aHViX2V2ZW50LlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudEV2ZW50SAASNAoLY2hlY2tfc3VpdGUYByABKAsyHS5naXRodWJfZXZlbnQuQ2hlY2tTdWl0ZUV2ZW50SAASOAoNaXNzdWVfY29tbWVudBgIIAEoCzIfLmdpdGh1Yl9ldmVudC5Jc3N1ZUNvbW1lbnRFdmVudEgAEisKBnN0YXR1cxgJIAEoCzIZLmdpdGh1Yl9ldmVudC5TdGF0dXNFdmVudEgAEhUKCHJhd19qc29uGAogASgJQgOAAQFCBwoFZXZlbnRiBnByb3RvMw",[se]);var aa=Q("CidzZXJ2aWNlcy9pbnRlZ3JhdGlvbnMvZ2xlYW4vZ2xlYW4ucHJvdG8SBWdsZWFuIq8FCghEb2N1bWVudBITCgtkb2N1bWVudF9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdjb250ZW50GAMgASgJEioKDWRvY3VtZW50X3R5cGUYBCABKA4yEy5nbGVhbi5Eb2N1bWVudFR5cGUSJgoLZGF0YV9zb3VyY2UYBSABKA4yES5nbGVhbi5EYXRhU291cmNlEgsKA3VybBgGIAEoCRIhCghjaGlsZHJlbhgHIAMoCzIPLmdsZWFuLkRvY3VtZW50Eh0KBmF1dGhvchgIIAEoCzINLmdsZWFuLlBlcnNvbhIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp2aXNpYmlsaXR5GAsgASgOMhouZ2xlYW4uRG9jdW1lbnQuVmlzaWJpbGl0eRIpCghzbmlwcGV0cxgMIAMoCzIXLmdsZWFuLkRvY3VtZW50LlNuaXBwZXQSGAoQZGF0YV9zb3VyY2VfbmFtZRgNIAEoCRpUCgdTbmlwcGV0EgwKBHRleHQYASABKAkSEwoLc3RhcnRfcmFuZ2UYAiABKAUSEQoJZW5kX3JhbmdlGAMgASgFEhMKC2RvY3VtZW50X2lkGAQgASgJIp8BCgpWaXNpYmlsaXR5EhoKFlVOU1BFQ0lGSUVEX1ZJU0lCSUxJVFkQABIPCgtQVUJMSUNfTElOSxABEhIKDlBVQkxJQ19WSVNJQkxFEAISEgoORE9NQUlOX1ZJU0lCTEUQAxIPCgtET01BSU5fTElOSxAEEgsKB1BSSVZBVEUQBRIeChpTUEVDSUZJQ19QRU9QTEVfQU5EX0dST1VQUxAGIiIKBlBlcnNvbhIMCgRuYW1lGAEgASgJEgoKAmlkGAIgASgJImEKDVNlYXJjaFJlcXVlc3QSDQoFcXVlcnkYASABKAkSHAoUaW5jbHVkZV9wcml2YXRlX2RvY3MYAiABKAgSDwoHdXNlcl9pZBgDIAEoCRISCgp1c2VyX2VtYWlsGAQgASgJIlwKDlNlYXJjaFJlc3BvbnNlEiIKCWRvY3VtZW50cxgBIAMoCzIPLmdsZWFuLkRvY3VtZW50EhEKCW9hdXRoX3VybBgCIAEoCRITCgtzdGF0dXNfY29kZRgDIAEoBSpYCgpEYXRhU291cmNlEhsKF1VOU1BFQ0lGSUVEX0RBVEFfU09VUkNFEAASCQoFU0xBQ0sQARIKCgZOT1RJT04QAhIKCgZMSU5FQVIQAxIKCgZHSVRIVUIQBCpuCgxEb2N1bWVudFR5cGUSHQoZVU5TUEVDSUZJRURfRE9DVU1FTlRfVFlQRRAAEggKBFBBR0UQARILCgdNRVNTQUdFEAISCwoHQ0hBTk5FTBADEhAKDENPTlZFUlNBVElPThAEEgkKBUlTU1VFEAVCQlpAZ2l0aHViLmNvbS9hdWdtZW50Y29kZS9hdWdtZW50L3NlcnZpY2VzL2ludGVncmF0aW9ucy9nbGVhbi9wcm90b2IGcHJvdG8z",[se]);var VR;(function(e){e[e.UNSPECIFIED_VISIBILITY=0]="UNSPECIFIED_VISIBILITY",e[e.PUBLIC_LINK=1]="PUBLIC_LINK",e[e.PUBLIC_VISIBLE=2]="PUBLIC_VISIBLE",e[e.DOMAIN_VISIBLE=3]="DOMAIN_VISIBLE",e[e.DOMAIN_LINK=4]="DOMAIN_LINK",e[e.PRIVATE=5]="PRIVATE",e[e.SPECIFIC_PEOPLE_AND_GROUPS=6]="SPECIFIC_PEOPLE_AND_GROUPS"})(VR||(VR={}));var mR;(function(e){e[e.UNSPECIFIED_DATA_SOURCE=0]="UNSPECIFIED_DATA_SOURCE",e[e.SLACK=1]="SLACK",e[e.NOTION=2]="NOTION",e[e.LINEAR=3]="LINEAR",e[e.GITHUB=4]="GITHUB"})(mR||(mR={}));var gR;(function(e){e[e.UNSPECIFIED_DOCUMENT_TYPE=0]="UNSPECIFIED_DOCUMENT_TYPE",e[e.PAGE=1]="PAGE",e[e.MESSAGE=2]="MESSAGE",e[e.CHANNEL=3]="CHANNEL",e[e.CONVERSATION=4]="CONVERSATION",e[e.ISSUE=5]="ISSUE"})(gR||(gR={}));var ER=Q("CjFzZXJ2aWNlcy9pbnRlZ3JhdGlvbnMvc2xhY2tfYm90L3NsYWNrX2V2ZW50LnByb3RvEghzbGFja2JvdCKzAQoNRXZlbnRNZXRhZGF0YRIPCgd0ZWFtX2lkGAEgASgJEhUKDWVudGVycHJpc2VfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnJlcXVlc3RfaWQYBCABKAkSEwoLdGVuYW50X25hbWUYBSABKAkSFwoPc2hhcmRfbmFtZXNwYWNlGAYgASgJEhMKC3JpX2V2ZW50X2lkGAcgASgJEhAKCGV2ZW50X2lkGAggASgJIrEBCg9BcHBNZW50aW9uRXZlbnQSEQoEdGV4dBgDIAEoCUIDgAEBEgwKBHVzZXIYBCABKAkSEQoJdGltZXN0YW1wGAUgASgJEhgKEHRocmVhZF90aW1lc3RhbXAYBiABKAkSDwoHY2hhbm5lbBgHIAEoCRIXCg9ldmVudF90aW1lc3RhbXAYCCABKAkSEQoJdXNlcl90ZWFtGAkgASgJEhMKC3NvdXJjZV90ZWFtGAogASgJIvcBCgxNZXNzYWdlRXZlbnQSFQoNY2xpZW50X21zZ19pZBgBIAEoCRIMCgR1c2VyGAIgASgJEgwKBHRleHQYAyABKAkSGAoQdGhyZWFkX3RpbWVzdGFtcBgEIAEoCRIRCgl0aW1lc3RhbXAYBSABKAkSDwoHY2hhbm5lbBgGIAEoCRIUCgxjaGFubmVsX3R5cGUYByABKAkSFwoPZXZlbnRfdGltZXN0YW1wGAggASgJEhEKCXVzZXJfdGVhbRgJIAEoCRITCgtzb3VyY2VfdGVhbRgKIAEoCRIPCgdzdWJ0eXBlGAsgASgJEg4KBmJvdF9pZBgMIAEoCSKhAQoSUmVhY3Rpb25BZGRlZEV2ZW50EgwKBHVzZXIYASABKAkSEQoJaXRlbV91c2VyGAIgASgJEhcKD2V2ZW50X3RpbWVzdGFtcBgDIAEoCRIRCglpdGVtX3R5cGUYBCABKAkSFAoMaXRlbV9jaGFubmVsGAUgASgJEhAKCHJlYWN0aW9uGAYgASgJEhYKDml0ZW1fdGltZXN0YW1wGAcgASgJImMKGE1lbWJlckpvaW5lZENoYW5uZWxFdmVudBIMCgR1c2VyGAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoPZXZlbnRfdGltZXN0YW1wGAMgASgJEg8KB2ludml0ZXIYBCABKAkiPgoTQXBwVW5pbnN0YWxsZWRFdmVudBIXCg9ldmVudF90aW1lc3RhbXAYASABKAMSDgoGYXBwX2lkGAIgASgJIkwKEkFwcEhvbWVPcGVuZWRFdmVudBIMCgR1c2VyGAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoPZXZlbnRfdGltZXN0YW1wGAMgASgJImQKEkNoYW5uZWxDcmVhdGVkSW5mbxIKCgJpZBgBIAEoCRISCgppc19jaGFubmVsGAIgASgIEgwKBG5hbWUYAyABKAkSDwoHY3JlYXRlZBgEIAEoAxIPCgdjcmVhdG9yGAUgASgJIl0KE0NoYW5uZWxDcmVhdGVkRXZlbnQSLQoHY2hhbm5lbBgBIAEoCzIcLnNsYWNrYm90LkNoYW5uZWxDcmVhdGVkSW5mbxIXCg9ldmVudF90aW1lc3RhbXAYAiABKAki7QMKClNsYWNrRXZlbnQSKQoIbWV0YWRhdGEYASABKAsyFy5zbGFja2JvdC5FdmVudE1ldGFkYXRhEhIKCmV2ZW50X3R5cGUYAiABKAkSMAoLYXBwX21lbnRpb24YAyABKAsyGS5zbGFja2JvdC5BcHBNZW50aW9uRXZlbnRIABIpCgdtZXNzYWdlGAQgASgLMhYuc2xhY2tib3QuTWVzc2FnZUV2ZW50SAASNgoOcmVhY3Rpb25fYWRkZWQYBSABKAsyHC5zbGFja2JvdC5SZWFjdGlvbkFkZGVkRXZlbnRIABJDChVtZW1iZXJfam9pbmVkX2NoYW5uZWwYBiABKAsyIi5zbGFja2JvdC5NZW1iZXJKb2luZWRDaGFubmVsRXZlbnRIABI4Cg9hcHBfdW5pbnN0YWxsZWQYByABKAsyHS5zbGFja2JvdC5BcHBVbmluc3RhbGxlZEV2ZW50SAASNwoPYXBwX2hvbWVfb3BlbmVkGAggASgLMhwuc2xhY2tib3QuQXBwSG9tZU9wZW5lZEV2ZW50SAASOAoPY2hhbm5lbF9jcmVhdGVkGAogASgLMh0uc2xhY2tib3QuQ2hhbm5lbENyZWF0ZWRFdmVudEgAEhAKCHJhd19qc29uGAkgASgJQgcKBWV2ZW50YgZwcm90bzM");var pR=Q("CiBzZXJ2aWNlcy9zZXR0aW5ncy9zZXR0aW5ncy5wcm90bxIIc2V0dGluZ3Mi9AUKE01jcE9BdXRoQ3JlZGVudGlhbHMSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhoKDXJlZnJlc2hfdG9rZW4YAiABKAlIAIgBARJAChdhY2Nlc3NfdG9rZW5fZXhwaXJlc19hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgp0b2tlbl90eXBlGAQgASgJSAKIAQESEgoFc2NvcGUYBSABKAlIA4gBARIeChZhdXRob3JpemF0aW9uX2VuZHBvaW50GAYgASgJEhYKDnRva2VuX2VuZHBvaW50GAcgASgJEhMKBmlzc3VlchgIIAEoCUgEiAEBEhEKCWNsaWVudF9pZBgJIAEoCRIaCg1jbGllbnRfc2VjcmV0GAogASgJSAWIAQESHgoRaGFzX3JlZnJlc2hfdG9rZW4YCyABKAhIBogBARIdChBvYXV0aF9zZWNyZXRfa2V5GAwgASgJSAeIAQESKQocb2F1dGhfc2VjcmV0X293bmVyX2NvbmZpZ19pZBgNIAEoCUgIiAEBEicKGnRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kGA4gASgJSAmIAQESLAokb2F1dGhfc2VjcmV0X293bmVyX2NvbmZpZ19pZF9hbGlhc2VzGA8gAygJEhwKD29hdXRoX3NlY3JldF9pZBgQIAEoCUgKiAEBQhAKDl9yZWZyZXNoX3Rva2VuQhoKGF9hY2Nlc3NfdG9rZW5fZXhwaXJlc19hdEINCgtfdG9rZW5fdHlwZUIICgZfc2NvcGVCCQoHX2lzc3VlckIQCg5fY2xpZW50X3NlY3JldEIUChJfaGFzX3JlZnJlc2hfdG9rZW5CEwoRX29hdXRoX3NlY3JldF9rZXlCHwodX29hdXRoX3NlY3JldF9vd25lcl9jb25maWdfaWRCHQobX3Rva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kQhIKEF9vYXV0aF9zZWNyZXRfaWRiBnByb3RvMw",[qt,se,bt,aa]);var GR=Q("CipzZXJ2aWNlcy9yZW1vdGVfYWdlbnRzL3JlbW90ZV9hZ2VudHMucHJvdG8SDXJlbW90ZV9hZ2VudHMiQAoQQWRkU1NIS2V5UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSEwoLcHVibGljX2tleXMYAiADKAkiRgoRQWRkU1NIS2V5UmVzcG9uc2USMQoKc3NoX2NvbmZpZxgBIAEoCzIdLnJlbW90ZV9hZ2VudHMuQWdlbnRTU0hDb25maWcixwMKBUFnZW50EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIqCgZzdGF0dXMYAiABKA4yGi5yZW1vdGVfYWdlbnRzLkFnZW50U3RhdHVzEioKBmNvbmZpZxgDIAEoCzIaLnJlbW90ZV9hZ2VudHMuQWdlbnRDb25maWcSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoKc3NoX2NvbmZpZxgGIAEoCzIdLnJlbW90ZV9hZ2VudHMuQWdlbnRTU0hDb25maWdIAIgBARIYCgtoYXNfdXBkYXRlcxgHIAEoCEgBiAEBEjgKEHdvcmtzcGFjZV9zdGF0dXMYCCABKA4yHi5yZW1vdGVfYWdlbnRzLldvcmtzcGFjZVN0YXR1cxIzCgpleHBpcmVzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQg0KC19zc2hfY29uZmlnQg4KDF9oYXNfdXBkYXRlc0INCgtfZXhwaXJlc19hdCL2BgoLQWdlbnRDb25maWcSNgoPd29ya3NwYWNlX3NldHVwGAEgASgLMh0ucmVtb3RlX2FnZW50cy5Xb3Jrc3BhY2VTZXR1cBItCg5zdGFydGluZ19ub2RlcxgCIAMoCzIVLmNoYXQuQ2hhdFJlcXVlc3ROb2RlEhwKD3VzZXJfZ3VpZGVsaW5lcxgDIAEoCUgAiAEBEiEKFHdvcmtzcGFjZV9ndWlkZWxpbmVzGAQgASgJSAGIAQESEgoFbW9kZWwYBiABKAlIAogBARIiChVpc19zZXR1cF9zY3JpcHRfYWdlbnQYByABKAhIA4gBARIzCgttY3Bfc2VydmVycxgIIAMoCzIeLnJlbW90ZV9hZ2VudHMuTWNwU2VydmVyQ29uZmlnEhIKBXRpdGxlGAkgASgJSASIAQESOQoOcmVxdWVzdF9zb3VyY2UYCiABKA4yHC5yZW1vdGVfYWdlbnRzLlJlcXVlc3RTb3VyY2VIBYgBARIWCg5kaXNhYmxlZF90b29scxgMIAMoCRJSChVtY3Bfb2F1dGhfY3JlZGVudGlhbHMYDSADKAsyMy5yZW1vdGVfYWdlbnRzLkFnZW50Q29uZmlnLk1jcE9hdXRoQ3JlZGVudGlhbHNFbnRyeRItCghib3RfdHlwZRgOIAEoDjIWLmF1dGhfZW50aXRpZXMuQm90VHlwZUgGiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA8gASgJSAeIAQESLwoic2tpcF9mZWF0dXJlX2dhdGluZ19mb3JfZnJlZV90cmlhbBgQIAEoCEgIiAEBGlkKGE1jcE9hdXRoQ3JlZGVudGlhbHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5zZXR0aW5ncy5NY3BPQXV0aENyZWRlbnRpYWxzOgI4AUISChBfdXNlcl9ndWlkZWxpbmVzQhcKFV93b3Jrc3BhY2VfZ3VpZGVsaW5lc0IICgZfbW9kZWxCGAoWX2lzX3NldHVwX3NjcmlwdF9hZ2VudEIICgZfdGl0bGVCEQoPX3JlcXVlc3Rfc291cmNlQgsKCV9ib3RfdHlwZUIRCg9fY29ycmVsYXRpb25faWRCJQojX3NraXBfZmVhdHVyZV9nYXRpbmdfZm9yX2ZyZWVfdHJpYWxKBAgFEAZKBAgLEAwicwoOQWdlbnRTU0hDb25maWcSEwoLcHVibGljX2tleXMYASADKAkSEAoIaG9zdG5hbWUYAiABKAkSOgoSc3NoX2NvbmZpZ19vcHRpb25zGAMgAygLMh4ucmVtb3RlX2FnZW50cy5TU0hDb25maWdPcHRpb24iYgoLQ2hhdFJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJEjoKD3JlcXVlc3RfZGV0YWlscxgCIAEoCzIhLnJlbW90ZV9hZ2VudHMuQ2hhdFJlcXVlc3REZXRhaWxzIo8CChJDaGF0UmVxdWVzdERldGFpbHMSLAoNcmVxdWVzdF9ub2RlcxgBIAMoCzIVLmNoYXQuQ2hhdFJlcXVlc3ROb2RlEhwKD3VzZXJfZ3VpZGVsaW5lcxgCIAEoCUgAiAEBEiEKFHdvcmtzcGFjZV9ndWlkZWxpbmVzGAMgASgJSAGIAQESFQoIbW9kZWxfaWQYBSABKAlIAogBARIzCgttY3Bfc2VydmVycxgGIAMoCzIeLnJlbW90ZV9hZ2VudHMuTWNwU2VydmVyQ29uZmlnQhIKEF91c2VyX2d1aWRlbGluZXNCFwoVX3dvcmtzcGFjZV9ndWlkZWxpbmVzQgsKCV9tb2RlbF9pZEoECAQQBSIOCgxDaGF0UmVzcG9uc2UiaAoSQ3JlYXRlQWdlbnRSZXF1ZXN0EioKBmNvbmZpZxgBIAEoCzIaLnJlbW90ZV9hZ2VudHMuQWdlbnRDb25maWcSFwoKaW1hZ2VfbmFtZRgCIAEoCUgAiAEBQg0KC19pbWFnZV9uYW1lIjoKE0NyZWF0ZUFnZW50UmVzcG9uc2USIwoFYWdlbnQYASABKAsyFC5yZW1vdGVfYWdlbnRzLkFnZW50Ii0KEkRlbGV0ZUFnZW50UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkiFQoTRGVsZXRlQWdlbnRSZXNwb25zZSJ4ChZEaWZmRXhwbGFuYXRpb25TZWN0aW9uEg0KBXRpdGxlGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEjoKCHNlY3Rpb25zGAMgAygLMigucmVtb3RlX2FnZW50cy5EaWZmRXhwbGFuYXRpb25TdWJTZWN0aW9uIqEBChlEaWZmRXhwbGFuYXRpb25TdWJTZWN0aW9uEg0KBXRpdGxlGAEgASgJEkkKDGRlc2NyaXB0aW9ucxgCIAMoCzIzLnJlbW90ZV9hZ2VudHMuRGlmZkV4cGxhbmF0aW9uU3ViU2VjdGlvbkRlc2NyaXB0aW9uEioKCWRpZmZfdHlwZRgDIAEoDjIXLnJlbW90ZV9hZ2VudHMuRGlmZlR5cGUifgokRGlmZkV4cGxhbmF0aW9uU3ViU2VjdGlvbkRlc2NyaXB0aW9uEgwKBHBhdGgYASABKAkSDAoEdGV4dBgCIAEoCRIjCgVyYW5nZRgDIAEoCzIULnJlbW90ZV9hZ2VudHMuUmFuZ2USFQoNc2VsZWN0ZWRfY29kZRgEIAEoCSJlChZHZW5lcmF0ZVN1bW1hcnlSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIZChFzdGFydF9zZXF1ZW5jZV9pZBgCIAEoDRIXCg9lbmRfc2VxdWVuY2VfaWQYAyABKA0iWwoXR2VuZXJhdGVTdW1tYXJ5UmVzcG9uc2USQAoRZGlmZl9kZXNjcmlwdGlvbnMYASADKAsyJS5yZW1vdGVfYWdlbnRzLkRpZmZFeHBsYW5hdGlvblNlY3Rpb24iJQoJR2l0aHViUmVmEgsKA3VybBgBIAEoCRILCgNyZWYYAiABKAkiMAoVSW50ZXJydXB0QWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCSIYChZJbnRlcnJ1cHRBZ2VudFJlc3BvbnNlIoMDCg9NY3BTZXJ2ZXJDb25maWcSFAoHY29tbWFuZBgBIAEoCUgAiAEBEgwKBGFyZ3MYAiADKAkSFwoKdGltZW91dF9tcxgDIAEoBUgBiAEBEjQKA2VudhgEIAMoCzInLnJlbW90ZV9hZ2VudHMuTWNwU2VydmVyQ29uZmlnLkVudkVudHJ5EiQKF3VzZV9zaGVsbF9pbnRlcnBvbGF0aW9uGAUgASgISAKIAQESEQoEbmFtZRgGIAEoCUgDiAEBEhUKCGRpc2FibGVkGAcgASgISASIAQESEQoEdHlwZRgIIAEoCUgFiAEBEhAKA3VybBgJIAEoCUgGiAEBGioKCEVudkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2NvbW1hbmRCDQoLX3RpbWVvdXRfbXNCGgoYX3VzZV9zaGVsbF9pbnRlcnBvbGF0aW9uQgcKBV9uYW1lQgsKCV9kaXNhYmxlZEIHCgVfdHlwZUIGCgRfdXJsIiwKEVBhdXNlQWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCSIUChJQYXVzZUFnZW50UmVzcG9uc2UiIwoFUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIgASgFIi0KElJlc3VtZUFnZW50UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkiFQoTUmVzdW1lQWdlbnRSZXNwb25zZSJsChZSZXN1bWVIaW50QWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRI5CgtoaW50X3JlYXNvbhgCIAEoDjIkLnJlbW90ZV9hZ2VudHMuUmVzdW1lSGludEFnZW50UmVhc29uIjEKF1Jlc3VtZUhpbnRBZ2VudFJlc3BvbnNlEhYKDnJlc3VtZV9zdGFydGVkGAEgASgIIi0KD1NTSENvbmZpZ09wdGlvbhILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUwoSVXBkYXRlQWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIWCgluZXdfdGl0bGUYAiABKAlIAIgBAUIMCgpfbmV3X3RpdGxlIjoKE1VwZGF0ZUFnZW50UmVzcG9uc2USIwoFYWdlbnQYASABKAsyFC5yZW1vdGVfYWdlbnRzLkFnZW50ItACCg5Xb3Jrc3BhY2VTZXR1cBIuCgpnaXRodWJfcmVmGAEgASgLMhgucmVtb3RlX2FnZW50cy5HaXRodWJSZWZIABISCgVwYXRjaBgCIAEoCUgBiAEBEhkKDHNldHVwX3NjcmlwdBgDIAEoCUgCiAEBEhIKBXRva2VuGAQgASgJSAOIAQESFAoHYXBpX3VybBgFIAEoCUgEiAEBEkAKCmdpdF9jb25maWcYBiADKAsyLC5yZW1vdGVfYWdlbnRzLldvcmtzcGFjZVNldHVwLkdpdENvbmZpZ0VudHJ5GjAKDkdpdENvbmZpZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCEAoOc3RhcnRpbmdfZmlsZXNCCAoGX3BhdGNoQg8KDV9zZXR1cF9zY3JpcHRCCAoGX3Rva2VuQgoKCF9hcGlfdXJsKoACCgtBZ2VudFN0YXR1cxIcChhBR0VOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIYChRBR0VOVF9TVEFUVVNfUEVORElORxAFEhkKFUFHRU5UX1NUQVRVU19TVEFSVElORxABEhgKFEFHRU5UX1NUQVRVU19SVU5OSU5HEAISFQoRQUdFTlRfU1RBVFVTX0lETEUQAxIXChNBR0VOVF9TVEFUVVNfRkFJTEVEEAQSGAoUQUdFTlRfU1RBVFVTX1BBVVNJTkcQBhIXChNBR0VOVF9TVEFUVVNfUEFVU0VEEAcSIQodQUdFTlRfU1RBVFVTX1BFTkRJTkdfREVMRVRJT04QCCqJAQoIRGlmZlR5cGUSDwoLVU5TUEVDSUZJRUQQABIHCgNGSVgQARILCgdGRUFUVVJFEAISDAoIUkVGQUNUT1IQAxIRCg1ET0NVTUVOVEFUSU9OEAQSCQoFU1RZTEUQBRIICgRURVNUEAYSCQoFQ0hPUkUQBxIKCgZSRVZFUlQQCBIJCgVPVEhFUhAJKt8BCg1SZXF1ZXN0U291cmNlEh4KGlJFUVVFU1RfU09VUkNFX1VOU1BFQ0lGSUVEEAASFgoSUkVRVUVTVF9TT1VSQ0VfSURFEAESIgoeUkVRVUVTVF9TT1VSQ0VfQVVHTUVOVF9BQ1RJT05TEAISHAoYUkVRVUVTVF9TT1VSQ0VfU0xBQ0tfQk9UEAMSHQoZUkVRVUVTVF9TT1VSQ0VfR0lUSFVCX0JPVBAEEh0KGVJFUVVFU1RfU09VUkNFX0xJTkVBUl9CT1QQBRIWChJSRVFVRVNUX1NPVVJDRV9DTEkQBiqaAQoVUmVzdW1lSGludEFnZW50UmVhc29uEigKJFJFU1VNRV9BR0VOVF9ISU5UX1JFQVNPTl9VTlNQRUNJRklFRBAAEisKJ1JFU1VNRV9BR0VOVF9ISU5UX1JFQVNPTl9UWVBJTkdfTUVTU0FHRRABEioKJlJFU1VNRV9BR0VOVF9ISU5UX1JFQVNPTl9WSUVXSU5HX0FHRU5UEAIqygEKD1dvcmtzcGFjZVN0YXR1cxIgChxXT1JLU1BBQ0VfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHAoYV09SS1NQQUNFX1NUQVRVU19SVU5OSU5HEAESHAoYV09SS1NQQUNFX1NUQVRVU19QQVVTSU5HEAISGwoXV09SS1NQQUNFX1NUQVRVU19QQVVTRUQQAxIdChlXT1JLU1BBQ0VfU1RBVFVTX1JFU1VNSU5HEAQSHQoZV09SS1NQQUNFX1NUQVRVU19ERUxFVElORxAFYgZwcm90bzM",[se,bt,In,pR]);var RR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PENDING=5]="PENDING",e[e.STARTING=1]="STARTING",e[e.RUNNING=2]="RUNNING",e[e.IDLE=3]="IDLE",e[e.FAILED=4]="FAILED",e[e.PAUSING=6]="PAUSING",e[e.PAUSED=7]="PAUSED",e[e.PENDING_DELETION=8]="PENDING_DELETION"})(RR||(RR={}));var ZR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.FIX=1]="FIX",e[e.FEATURE=2]="FEATURE",e[e.REFACTOR=3]="REFACTOR",e[e.DOCUMENTATION=4]="DOCUMENTATION",e[e.STYLE=5]="STYLE",e[e.TEST=6]="TEST",e[e.CHORE=7]="CHORE",e[e.REVERT=8]="REVERT",e[e.OTHER=9]="OTHER"})(ZR||(ZR={}));var SR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.IDE=1]="IDE",e[e.AUGMENT_ACTIONS=2]="AUGMENT_ACTIONS",e[e.SLACK_BOT=3]="SLACK_BOT",e[e.GITHUB_BOT=4]="GITHUB_BOT",e[e.LINEAR_BOT=5]="LINEAR_BOT",e[e.CLI=6]="CLI"})(SR||(SR={}));var XR;(function(e){e[e.RESUME_AGENT_HINT_REASON_UNSPECIFIED=0]="RESUME_AGENT_HINT_REASON_UNSPECIFIED",e[e.RESUME_AGENT_HINT_REASON_TYPING_MESSAGE=1]="RESUME_AGENT_HINT_REASON_TYPING_MESSAGE",e[e.RESUME_AGENT_HINT_REASON_VIEWING_AGENT=2]="RESUME_AGENT_HINT_REASON_VIEWING_AGENT"})(XR||(XR={}));var WR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RUNNING=1]="RUNNING",e[e.PAUSING=2]="PAUSING",e[e.PAUSED=3]="PAUSED",e[e.RESUMING=4]="RESUMING",e[e.DELETING=5]="DELETING"})(WR||(WR={}));var IR=Q("ChpzZXJ2aWNlcy9zaGFyZS9zaGFyZS5wcm90bxIFc2hhcmUicQoMQ2hhdEV4Y2hhbmdlEhIKCnJlcXVlc3RfaWQYASABKAkSFAoHbWVzc2FnZRgCIAEoCUIDgAEBEhUKCHJlc3BvbnNlGAMgASgJQgOAAQESIAoTcmVzcG9uc2Vfbm9kZXNfanNvbhgEIAEoCUIDgAEBIioKGkdldENoYXRDb252ZXJzYXRpb25SZXF1ZXN0EgwKBHV1aWQYASABKAkiswEKG0dldENoYXRDb252ZXJzYXRpb25SZXNwb25zZRIMCgR1dWlkGAEgASgJEigKBGRhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBHVzZXIYAyABKAkSFwoPY29udmVyc2F0aW9uX2lkGAQgASgJEiEKBGNoYXQYBSADKAsyEy5zaGFyZS5DaGF0RXhjaGFuZ2USEgoFdGl0bGUYBiABKAlCA4ABASJ7ChtTYXZlQ2hhdENvbnZlcnNhdGlvblJlcXVlc3QSDAoEdXNlchgBIAEoCRIXCg9jb252ZXJzYXRpb25faWQYAiABKAkSIQoEY2hhdBgDIAMoCzITLnNoYXJlLkNoYXRFeGNoYW5nZRISCgV0aXRsZRgEIAEoCUIDgAEBIiwKHFNhdmVDaGF0Q29udmVyc2F0aW9uUmVzcG9uc2USDAoEdXVpZBgBIAEoCTLGAQoFU2hhcmUSXAoTR2V0Q2hhdENvbnZlcnNhdGlvbhIhLnNoYXJlLkdldENoYXRDb252ZXJzYXRpb25SZXF1ZXN0GiIuc2hhcmUuR2V0Q2hhdENvbnZlcnNhdGlvblJlc3BvbnNlEl8KFFNhdmVDaGF0Q29udmVyc2F0aW9uEiIuc2hhcmUuU2F2ZUNoYXRDb252ZXJzYXRpb25SZXF1ZXN0GiMuc2hhcmUuU2F2ZUNoYXRDb252ZXJzYXRpb25SZXNwb25zZWIGcHJvdG8z",[se]);var nZ=Q("Ci5zZXJ2aWNlcy9yZXF1ZXN0X2luc2lnaHQvcmVxdWVzdF9pbnNpZ2h0LnByb3RvEg9yZXF1ZXN0X2luc2lnaHQiYgoNQWdlbnRGZWVkYmFjaxIvCgZyYXRpbmcYASABKA4yHy5yZXF1ZXN0X2luc2lnaHQuRmVlZGJhY2tSYXRpbmcSDAoEbm90ZRgCIAEoCRISCgp1c2VyX2FnZW50GAMgASgJIk0KFUFnZW50SW50ZXJydXB0aW9uRGF0YRISCgpyZXF1ZXN0X2lkGAEgASgJEiAKGGN1cnJfY29udmVyc2F0aW9uX2xlbmd0aBgCIAEoDSKjAgoRQWdlbnRSZXF1ZXN0RXZlbnQSWAofY2hhdF9oaXN0b3J5X3N1bW1hcml6YXRpb25fZGF0YRgFIAEoCzItLnJlcXVlc3RfaW5zaWdodC5DaGF0SGlzdG9yeVN1bW1hcml6YXRpb25EYXRhSAASSAoXZmlyc3RfdG9rZW5fdGltaW5nX2RhdGEYBiABKAsyJS5yZXF1ZXN0X2luc2lnaHQuRmlyc3RUb2tlblRpbWluZ0RhdGFIABISCgpldmVudF9uYW1lGAEgASgJEhIKCnVzZXJfYWdlbnQYAiABKAkSFwoPY29udmVyc2F0aW9uX2lkGAMgASgJEhsKE2NoYXRfaGlzdG9yeV9sZW5ndGgYBCABKA1CDAoKZXZlbnRfZGF0YSIUChJBZ2VudFJldmVyc2lvbkRhdGEiugoKEUFnZW50U2Vzc2lvbkV2ZW50EkMKFGFnZW50X3JldmVyc2lvbl9kYXRhGAQgASgLMiMucmVxdWVzdF9pbnNpZ2h0LkFnZW50UmV2ZXJzaW9uRGF0YUgAEkkKF2FnZW50X2ludGVycnVwdGlvbl9kYXRhGAUgASgLMiYucmVxdWVzdF9pbnNpZ2h0LkFnZW50SW50ZXJydXB0aW9uRGF0YUgAEkgKF3JlbWVtYmVyX3Rvb2xfY2FsbF9kYXRhGAYgASgLMiUucmVxdWVzdF9pbnNpZ2h0LlJlbWVtYmVyVG9vbENhbGxEYXRhSAASSAoXbWVtb3JpZXNfZmlsZV9vcGVuX2RhdGEYByABKAsyJS5yZXF1ZXN0X2luc2lnaHQuTWVtb3JpZXNGaWxlT3BlbkRhdGFIABJLChhpbml0aWFsX29yaWVudGF0aW9uX2RhdGEYCCABKAsyJy5yZXF1ZXN0X2luc2lnaHQuSW5pdGlhbE9yaWVudGF0aW9uRGF0YUgAEkwKGWNsYXNzaWZ5X2FuZF9kaXN0aWxsX2RhdGEYCSABKAsyJy5yZXF1ZXN0X2luc2lnaHQuQ2xhc3NpZnlBbmREaXN0aWxsRGF0YUgAEkEKE2ZsdXNoX21lbW9yaWVzX2RhdGEYCiABKAsyIi5yZXF1ZXN0X2luc2lnaHQuRmx1c2hNZW1vcmllc0RhdGFIABI/ChJtZW1vcmllc19tb3ZlX2RhdGEYCyABKAsyIS5yZXF1ZXN0X2luc2lnaHQuTWVtb3JpZXNNb3ZlRGF0YUgAEkEKE3J1bGVzX2ltcG9ydGVkX2RhdGEYDCABKAsyIi5yZXF1ZXN0X2luc2lnaHQuUnVsZXNJbXBvcnRlZERhdGFIABJCChR0YXNrX2xpc3RfdXNhZ2VfZGF0YRgNIAEoCzIiLnJlcXVlc3RfaW5zaWdodC5UYXNrTGlzdFVzYWdlRGF0YUgAEkkKF2NvbnRlbnRfdHJ1bmNhdGlvbl9kYXRhGA4gASgLMiYucmVxdWVzdF9pbnNpZ2h0LkNvbnRlbnRUcnVuY2F0aW9uRGF0YUgAElAKG21vZGVsX3NlbGVjdGlvbl9jaGFuZ2VfZGF0YRgPIAEoCzIpLnJlcXVlc3RfaW5zaWdodC5Nb2RlbFNlbGVjdGlvbkNoYW5nZURhdGFIABJMChlzY3JpcHRfY2FwdHVyZV9iYXNpY19kYXRhGBAgASgLMicucmVxdWVzdF9pbnNpZ2h0LlNjcmlwdENhcHR1cmVCYXNpY0RhdGFIABI9ChFtZW1vcnlfdXNhZ2VfZGF0YRgRIAEoCzIgLnJlcXVlc3RfaW5zaWdodC5NZW1vcnlVc2FnZURhdGFIABJRChxza2lsbHNfaW5jbHVkZWRfaW5fY2hhdF9kYXRhGBIgASgLMikucmVxdWVzdF9pbnNpZ2h0LlNraWxsc0luY2x1ZGVkSW5DaGF0RGF0YUgAEkwKGXNraWxsX2NvbnRlbnRfbG9hZGVkX2RhdGEYEyABKAsyJy5yZXF1ZXN0X2luc2lnaHQuU2tpbGxDb250ZW50TG9hZGVkRGF0YUgAEkEKE3JldHJpZXZhbF90b29sX2RhdGEYFCABKAsyIi5yZXF1ZXN0X2luc2lnaHQuUmV0cmlldmFsVG9vbERhdGFIABISCgpldmVudF9uYW1lGAEgASgJEhIKCnVzZXJfYWdlbnQYAiABKAkSFwoPY29udmVyc2F0aW9uX2lkGAMgASgJQgwKCmV2ZW50X2RhdGEivggKEEFnZW50VHJhY2luZ0RhdGESOwoFZmxhZ3MYAyADKAsyLC5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YS5GbGFnc0VudHJ5EjkKBG51bXMYBCADKAsyKy5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YS5OdW1zRW50cnkSSAoMc3RyaW5nX3N0YXRzGAUgAygLMjIucmVxdWVzdF9pbnNpZ2h0LkFnZW50VHJhY2luZ0RhdGEuU3RyaW5nU3RhdHNFbnRyeRJGCgtyZXF1ZXN0X2lkcxgGIAMoCzIxLnJlcXVlc3RfaW5zaWdodC5BZ2VudFRyYWNpbmdEYXRhLlJlcXVlc3RJZHNFbnRyeRozCgtTdHJpbmdTdGF0cxIRCgludW1fbGluZXMYASABKAUSEQoJbnVtX2NoYXJzGAIgASgFGkwKDFRpbWVkQm9vbGVhbhINCgV2YWx1ZRgBIAEoCBItCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGksKC1RpbWVkTnVtYmVyEg0KBXZhbHVlGAEgASgBEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAafwoQVGltZWRTdHJpbmdTdGF0cxI8CgV2YWx1ZRgBIAEoCzItLnJlcXVlc3RfaW5zaWdodC5BZ2VudFRyYWNpbmdEYXRhLlN0cmluZ1N0YXRzEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaSwoLVGltZWRTdHJpbmcSDQoFdmFsdWUYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpcCgpGbGFnc0VudHJ5EgsKA2tleRgBIAEoCRI9CgV2YWx1ZRgCIAEoCzIuLnJlcXVlc3RfaW5zaWdodC5BZ2VudFRyYWNpbmdEYXRhLlRpbWVkQm9vbGVhbjoCOAEaWgoJTnVtc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLnJlcXVlc3RfaW5zaWdodC5BZ2VudFRyYWNpbmdEYXRhLlRpbWVkTnVtYmVyOgI4ARpmChBTdHJpbmdTdGF0c0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlcXVlc3RfaW5zaWdodC5BZ2VudFRyYWNpbmdEYXRhLlRpbWVkU3RyaW5nU3RhdHM6AjgBGmAKD1JlcXVlc3RJZHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YS5UaW1lZFN0cmluZzoCOAEipwEKFUFwaUh0dHBSZXF1ZXN0RGV0YWlscxITCgtoZWFkZXJfanNvbhgBIAEoCRItCg5vcGFxdWVfdXNlcl9pZBgCIAEoCzIVLmF1dGhfZW50aXRpZXMuVXNlcklkEjIKDHJlcXVlc3RfdHlwZRgDIAEoDjIcLnJlcXVlc3RfaW5zaWdodC5SZXF1ZXN0VHlwZRIWCg5yZXF1ZXN0X3BhcmFtcxgEIAEoCSI2Cg9BcGlIdHRwUmVzcG9uc2USDAoEY29kZRgBIAEoDRIVCg1lcnJvcl9tZXNzYWdlGAIgASgJIqYCChBBdXRvVG9wVXBTZXR0aW5nEhcKD29yYl9jdXN0b21lcl9pZBgBIAEoCRJBCgZhY3Rpb24YAiABKA4yMS5yZXF1ZXN0X2luc2lnaHQuQXV0b1RvcFVwU2V0dGluZy5BdXRvVG9wVXBBY3Rpb24SEQoJdGhyZXNob2xkGAMgASgDEg4KBmFtb3VudBgEIAEoAxIZChFiaWxsaW5nX2VudGl0eV9pZBgFIAEoCRIYChB0b3BfdXBfdGhyZXNob2xkGAYgASgJEhUKDXRvcF91cF9hbW91bnQYByABKAkiRwoPQXV0b1RvcFVwQWN0aW9uEhkKFVVOS05PV05fVE9QX1VQX0FDVElPThAAEgsKB0VOQUJMRUQQARIMCghESVNBQkxFRBACImsKFEJ1dGxlclBsYW5uZXJBdHRlbXB0Eg8KB2F0dGVtcHQYASABKAUSFAoMcmF3X3Jlc3BvbnNlGAIgASgJEhoKDWVycm9yX21lc3NhZ2UYAyABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZSLoBgoVQnV0bGVyUm91dGluZ1Jlc3BvbnNlEhYKDnNlbGVjdGVkX21vZGVsGAEgASgJEhUKDXJvdXRpbmdfbW9kZWwYAiABKAkSFgoOcm91dGluZ19yZWFzb24YAyABKAkSGQoMcGxhbm5lcl90aWVyGAQgASgJSACIAQESNwoIYXR0ZW1wdHMYBSADKAsyJS5yZXF1ZXN0X2luc2lnaHQuQnV0bGVyUGxhbm5lckF0dGVtcHQSFAoMcm91dGluZ19wYXRoGAYgASgJEiUKGHBsYW5uZXJfZXN0aW1hdGVkX3JvdW5kcxgHIAEoBUgBiAEBEiMKFnBsYW5uZXJfaGlnaF9yZWFzb25pbmcYCCABKAhIAogBARIeChFwbGFubmVyX2Jhc2VfdGllchgJIAEoCUgDiAEBEigKG3BsYW5uZXJfdXNlcl9yZXF1ZXN0ZWRfdGllchgKIAEoCUgEiAEBEiAKE3BsYW5uZXJfcHJvbXB0X2hhc2gYCyABKAlIBYgBARIXCg9jb252ZXJzYXRpb25faWQYDCABKAkSDwoHdHVybl9pZBgNIAEoCRIZChFidXRsZXJfbW9kZWxfbmFtZRgOIAEoCRIRCglpc19zaWxlbnQYDyABKAgSGwoTaXNfdG9vbF9yZXN1bHRfdHVybhgQIAEoCBJECg1zZXNzaW9uX3N0YXRlGBEgASgLMigucmVxdWVzdF9pbnNpZ2h0LkJ1dGxlclNlc3Npb25DYWNoZVN0YXRlSAaIAQESUQoWcGVuZGluZ19yZXRyeV9kZWNpc2lvbhgSIAEoCzIsLnJlcXVlc3RfaW5zaWdodC5CdXRsZXJTdW1tYXJpemVSZXRyeVBlbmRpbmdIB4gBARIUCgxzcnBfZGVjaXNpb24YEyABKAlCDwoNX3BsYW5uZXJfdGllckIbChlfcGxhbm5lcl9lc3RpbWF0ZWRfcm91bmRzQhkKF19wbGFubmVyX2hpZ2hfcmVhc29uaW5nQhQKEl9wbGFubmVyX2Jhc2VfdGllckIeChxfcGxhbm5lcl91c2VyX3JlcXVlc3RlZF90aWVyQhYKFF9wbGFubmVyX3Byb21wdF9oYXNoQhAKDl9zZXNzaW9uX3N0YXRlQhkKF19wZW5kaW5nX3JldHJ5X2RlY2lzaW9uInAKF0J1dGxlclNlc3Npb25DYWNoZVN0YXRlEhIKCmxhc3RfbW9kZWwYASABKAkSGQoRY29uc2VjdXRpdmVfdHVybnMYAiABKAUSFQoNY2FjaGVkX3Rva2VucxgDIAEoAxIPCgdsYXN0X3RzGAQgASgBIkYKG0J1dGxlclN1bW1hcml6ZVJldHJ5UGVuZGluZxIPCgd0dXJuX2lkGAEgASgJEhYKDnNlbGVjdGVkX21vZGVsGAIgASgJIuIBChJDYW5jZWxTdWJzY3JpcHRpb24SGwoTb3JiX3N1YnNjcmlwdGlvbl9pZBgBIAEoCRI6CghmZWVkYmFjaxgCIAEoCzIoLmF1dGguQ2FuY2VsU3Vic2NyaXB0aW9uUmVxdWVzdC5GZWVkYmFjaxIbChNjYW5jZWxsYXRpb25fcmVhc29uGAMgASgJEh4KFnN0cmlwZV9zdWJzY3JpcHRpb25faWQYBCABKAkSGQoRYmlsbGluZ19lbnRpdHlfaWQYBSABKAkSGwoTYWRkaXRpb25hbF9mZWVkYmFjaxgGIAEoCSIUChJDaGFuZ2VzQXBwbGllZERhdGEiYQoMQ2hhdEZlZWRiYWNrEi8KBnJhdGluZxgBIAEoDjIfLnJlcXVlc3RfaW5zaWdodC5GZWVkYmFja1JhdGluZxIMCgRub3RlGAIgASgJEhIKCnVzZXJfYWdlbnQYAyABKAki6wQKHENoYXRIaXN0b3J5U3VtbWFyaXphdGlvbkRhdGESIAoYdG90YWxfaGlzdG9yeV9jaGFyX2NvdW50GAEgASgNEiQKHHRvdGFsX2hpc3RvcnlfZXhjaGFuZ2VfY291bnQYAiABKA0SFwoPaGVhZF9jaGFyX2NvdW50GAMgASgNEhsKE2hlYWRfZXhjaGFuZ2VfY291bnQYBCABKA0SHAoUaGVhZF9sYXN0X3JlcXVlc3RfaWQYBSABKAkSFwoPdGFpbF9jaGFyX2NvdW50GAYgASgNEhsKE3RhaWxfZXhjaGFuZ2VfY291bnQYByABKA0SHAoUdGFpbF9sYXN0X3JlcXVlc3RfaWQYCCABKAkSGgoSc3VtbWFyeV9jaGFyX2NvdW50GAkgASgNEiEKGXN1bW1hcml6YXRpb25fZHVyYXRpb25fbXMYCiABKA0SIAoYaXNfY2FjaGVfYWJvdXRfdG9fZXhwaXJlGAsgASgIEhIKCmlzX2Fib3J0ZWQYDCABKAgSJgoZdG90YWxfaGlzdG9yeV90b2tlbl9jb3VudBgNIAEoDUgAiAEBEh0KEGhlYWRfdG9rZW5fY291bnQYDiABKA1IAYgBARIdChB0YWlsX3Rva2VuX2NvdW50GA8gASgNSAKIAQESIAoTdG9rZW5zX2Zyb21fYmFja2VuZBgQIAEoCEgDiAEBQhwKGl90b3RhbF9oaXN0b3J5X3Rva2VuX2NvdW50QhMKEV9oZWFkX3Rva2VuX2NvdW50QhMKEV90YWlsX3Rva2VuX2NvdW50QhYKFF90b2tlbnNfZnJvbV9iYWNrZW5kIhkKF0NoYXRJbnB1dENvbXBsZXRpb25FbWl0IjEKHUNoYXRJbnB1dENvbXBsZXRpb25SZXNvbHV0aW9uEhAKCGFjY2VwdGVkGAEgASgIIqAGCg9DaGF0VXNlck1lc3NhZ2USPAoJY2hhdF9tb2RlGAEgASgOMikucmVxdWVzdF9pbnNpZ2h0LkNoYXRVc2VyTWVzc2FnZS5DaGF0TW9kZRIbChNjaGF0X2hpc3RvcnlfbGVuZ3RoGAIgASgNEhgKEGltYWdlX25vZGVfY291bnQYAyABKA0SFwoPY2hhcmFjdGVyX2NvdW50GAQgASgNEhIKCmxpbmVfY291bnQYBSABKA0SLQoOb3BhcXVlX3VzZXJfaWQYBiABKAsyFS5hdXRoX2VudGl0aWVzLlVzZXJJZBIXCgptb2RlbF9uYW1lGAcgASgJSACIAQESHAoPY29udmVyc2F0aW9uX2lkGAggASgJSAGIAQESKAoIYm90X3R5cGUYCSABKA4yFi5hdXRoX2VudGl0aWVzLkJvdFR5cGUSHQoQYWdlbnRfcGVyc29uYV9pZBgKIAEoCUgCiAEBIoMDCghDaGF0TW9kZRISCg5DSEFUX01PREVfQ0hBVBAAEhMKD0NIQVRfTU9ERV9BR0VOVBABEhYKEkNIQVRfTU9ERV9NRU1PUklFUxACEhkKFUNIQVRfTU9ERV9PUklFTlRBVElPThADEiIKHkNIQVRfTU9ERV9NRU1PUklFU19DT01QUkVTU0lPThAEEhoKFkNIQVRfTU9ERV9SRU1PVEVfQUdFTlQQBRIXChNDSEFUX01PREVfQ0xJX0FHRU5UEAYSIAocQ0hBVF9NT0RFX0NMSV9OT05JTlRFUkFDVElWRRAHEhkKFUNIQVRfTU9ERV9DT0RFX1JFVklFVxAIEh8KG0NIQVRfTU9ERV9BR0VOVElDX1NMQUNLX0JPVBAJEiAKHENIQVRfTU9ERV9DT05URVhUX0VOR0lORV9TREsQChIgChxDSEFUX01PREVfQ09OVEVYVF9FTkdJTkVfTUNQEAsSIAocQ0hBVF9NT0RFX1BPU0VJRE9OX0NMSV9BR0VOVBAMQg0KC19tb2RlbF9uYW1lQhIKEF9jb252ZXJzYXRpb25faWRCEwoRX2FnZW50X3BlcnNvbmFfaWQiUQoWQ2xhc3NpZnlBbmREaXN0aWxsRGF0YRI3Cgx0cmFjaW5nX2RhdGEYASABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YSJlChBDbGlBZ2VudEZlZWRiYWNrEi8KBnJhdGluZxgBIAEoDjIfLnJlcXVlc3RfaW5zaWdodC5GZWVkYmFja1JhdGluZxIMCgRub3RlGAIgASgJEhIKCnVzZXJfYWdlbnQYAyABKAki6QEKGENsaWVudENvbXBsZXRpb25UaW1lbGluZRI4ChRpbml0aWFsX3JlcXVlc3RfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoOYXBpX3N0YXJ0X3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGFwaV9lbmRfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJZW1pdF90aW1lGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJcCgxDbGllbnRNZXRyaWMSEgoKZXZlbnRfbmFtZRgBIAEoCRISCgp1c2VyX2FnZW50GAIgASgJEhUKDWNsaWVudF9tZXRyaWMYAyABKAkSDQoFdmFsdWUYBCABKAQiawoRQ2xvc2VTdWJzY3JpcHRpb24SGwoTb3JiX3N1YnNjcmlwdGlvbl9pZBgBIAEoCRIeChZzdHJpcGVfc3Vic2NyaXB0aW9uX2lkGAIgASgJEhkKEWJpbGxpbmdfZW50aXR5X2lkGAMgASgJImEKH0NvbW1pdEF0dHJpYnV0aW9uTW9kZWxCcmVha2Rvd24SEgoKbW9kZWxfbmFtZRgBIAEoCRITCgtsaW5lc19hZGRlZBgCIAEoBRIVCg1saW5lc19kZWxldGVkGAMgASgFIu0CChhDb21taXRBdHRyaWJ1dGlvblN1bW1hcnkSGwoTYXR0cmlidXRpb25fdmVyc2lvbhgBIAEoCRIUCgxjb250ZW50X2hhc2gYAiABKAkSNAoQY29tbWl0X3RpbWVzdGFtcBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRdG90YWxfbGluZXNfYWRkZWQYBCABKAUSGwoTdG90YWxfbGluZXNfZGVsZXRlZBgFIAEoBRJJCg9tb2RlbF9icmVha2Rvd24YBiADKAsyMC5yZXF1ZXN0X2luc2lnaHQuQ29tbWl0QXR0cmlidXRpb25Nb2RlbEJyZWFrZG93bhISCgp3aW5kb3dfc2VjGAcgASgFEhcKD3NvdXJjZV9ldmVudF9pZBgIIAEoCRIgChNpc19mcm9tX21haW5fYnJhbmNoGAkgASgISACIAQFCFgoUX2lzX2Zyb21fbWFpbl9icmFuY2gihAEKEENvbW1pdEZpbGVDaGFuZ2USEwoLY2hhbmdlX3R5cGUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEhoKDW9sZF9maWxlX3BhdGgYAyABKAlIAIgBARIRCgRkaWZmGAQgASgJSAGIAQFCEAoOX29sZF9maWxlX3BhdGhCBwoFX2RpZmYivAIKEkNvbW1pdFNlc3Npb25FdmVudBIMCgRoYXNoGAEgASgJEi0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHc3ViamVjdBgFIAEoCRIMCgRib2R5GAYgASgJEjcKDGZpbGVfY2hhbmdlcxgHIAMoCzIhLnJlcXVlc3RfaW5zaWdodC5Db21taXRGaWxlQ2hhbmdlEhIKCnVzZXJfYWdlbnQYCCABKAkSNwoTY29tbWl0dGVyX3RpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIAoTaXNfZnJvbV9tYWluX2JyYW5jaBgKIAEoCEgAiAEBQhYKFF9pc19mcm9tX21haW5fYnJhbmNoSgQIAhADSgQIAxAEIhAKDkNvbXBsZXRpb25FbWl0IlMKEkNvbXBsZXRpb25GZWVkYmFjaxIvCgZyYXRpbmcYASABKA4yHy5yZXF1ZXN0X2luc2lnaHQuRmVlZGJhY2tSYXRpbmcSDAoEbm90ZRgCIAEoCSLbBQoVQ29tcGxldGlvbkhvc3RSZXF1ZXN0EgwKBHNlZWQYAiABKAQSFAoMZW9zX3Rva2VuX2lkGAQgAygFEg0KBXRvcF9rGAUgASgFEg0KBXRvcF9wGAYgASgCEhMKC3RlbXBlcmF0dXJlGAcgASgCEhIKCm91dHB1dF9sZW4YCCABKAUSGgoSZW5hYmxlX3BhdGhfcHJlZml4GAkgASgIEiAKGGVuYWJsZV9wcmVmZXJlbmNlX3Rva2VucxgKIAEoCBIhChllbmFibGVfZmlsbF9pbl90aGVfbWlkZGxlGAsgASgIEhMKC2VuYWJsZV9ibTI1GA0gASgIEh4KFmVuYWJsZV9kZW5zZV9yZXRyaWV2YWwYDiABKAgSDQoFbW9kZWwYDyABKAkSDgoGcHJlZml4GBAgASgJEgwKBHBhdGgYESABKAkSDgoGc3VmZml4GBIgASgJEhIKCmJsb2JfbmFtZXMYEyADKAkSDAoEbGFuZxgUIAEoCRJACghwb3NpdGlvbhgVIAEoCzIuLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uSG9zdFJlcXVlc3RQb3NpdGlvbhISCgpwcm9iZV9vbmx5GBYgASgIEiUKBWJsb2JzGBcgASgLMhYuYmFzZS5ibG9iX25hbWVzLkJsb2JzEi0KDHJlY2VuY3lfaW5mbxgYIAEoCzIXLmNvbXBsZXRpb24uUmVjZW5jeUluZm8SMwoMdG9rZW5pemF0aW9uGBkgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbhIiChV1c2VyX2ZpbHRlcl90aHJlc2hvbGQYGiABKAJIAIgBARI3CgtlZGl0X2V2ZW50cxgbIAMoCzIiLmJhc2UuZGlmZl91dGlscy5HcmFudWxhckVkaXRFdmVudEIYChZfdXNlcl9maWx0ZXJfdGhyZXNob2xkSgQIARACSgQIDBANInUKHUNvbXBsZXRpb25Ib3N0UmVxdWVzdFBvc2l0aW9uEhQKDHByZWZpeF9iZWdpbhgBIAEoBRIXCg9jdXJzb3JfcG9zaXRpb24YAiABKAUSEgoKc3VmZml4X2VuZBgDIAEoBRIRCglibG9iX25hbWUYBCABKAkihgMKFkNvbXBsZXRpb25Ib3N0UmVzcG9uc2USDAoEdGV4dBgCIAEoCRIaChJ1bmtub3duX2Jsb2JfbmFtZXMYAyADKAkSFgoOc2tpcHBlZF9zdWZmaXgYBiABKAkSHwoXc3VmZml4X3JlcGxhY2VtZW50X3RleHQYByABKAkSHAoUY2hlY2twb2ludF9ub3RfZm91bmQYCCABKAgSMwoMdG9rZW5pemF0aW9uGAkgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbhIeChFpc19lbXB0eV9yZXNwb25zZRgKIAEoCEgAiAEBEiAKE2NvbnRhaW5zX3NraXBfdG9rZW4YCyABKAhIAYgBARIeChF2YWxpZF9yZXBsYWNlbWVudBgMIAEoCEgCiAEBQhQKEl9pc19lbXB0eV9yZXNwb25zZUIWChRfY29udGFpbnNfc2tpcF90b2tlbkIUChJfdmFsaWRfcmVwbGFjZW1lbnRKBAgBEAJKBAgEEAVKBAgFEAYi5QIKFUNvbXBsZXRpb25Qb3N0UHJvY2VzcxIfCg5pc19sb3dfcXVhbGl0eRgBIAEoCEICGAFIAIgBARIUCgxmaWx0ZXJfc2NvcmUYDCABKAISJQoYYXBwbGllZF9maWx0ZXJfdGhyZXNob2xkGA0gASgCSAGIAQESTwoNZmlsdGVyX3JlYXNvbhgOIAEoDjIzLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uUG9zdFByb2Nlc3MuRmlsdGVyUmVhc29uSAKIAQEiWwoMRmlsdGVyUmVhc29uEhkKFVVOS05PV05fRklMVEVSX1JFQVNPThAAEhAKDE5PVF9GSUxURVJFRBABEg8KC0xPV19RVUFMSVRZEAISDQoJREVOWV9MSVNUEANCEQoPX2lzX2xvd19xdWFsaXR5QhsKGV9hcHBsaWVkX2ZpbHRlcl90aHJlc2hvbGRCEAoOX2ZpbHRlcl9yZWFzb24iWgoeQ29tcGxldGlvblJlcXVlc3RJZElzc3VlZEV2ZW50EhIKCnJlcXVlc3RfaWQYASABKAkSFgoJZmlsZV9wYXRoGAIgASgJSACIAQFCDAoKX2ZpbGVfcGF0aCIsChRDb21wbGV0aW9uUmVzb2x1dGlvbhIUCgxhY2NlcHRlZF9pZHgYASABKAUiRAoNQ29udGVudENoYW5nZRIMCgR0ZXh0GAEgASgJEiUKBXJhbmdlGAIgASgLMhYucmVxdWVzdF9pbnNpZ2h0LlJhbmdlIo4BCh1Db250ZW50TWFuYWdlckNoZWNrcG9pbnRCbG9icxIVCg1jaGVja3BvaW50X2lkGAEgASgJEh4KFmJhc2VsaW5lX2NoZWNrcG9pbnRfaWQYAiABKAkSGQoRYWRkZWRfYmxvYnNfY291bnQYAyABKA0SGwoTZGVsZXRlZF9ibG9ic19jb3VudBgEIAEoDSK8AQoZQ29udGVudE1hbmFnZXJVcGxvYWRCbG9icxJTCg51cGxvYWRlZF9ibG9icxgBIAMoCzI7LnJlcXVlc3RfaW5zaWdodC5Db250ZW50TWFuYWdlclVwbG9hZEJsb2JzLlVwbG9hZGVkQmxvYkluZm8aSgoQVXBsb2FkZWRCbG9iSW5mbxIRCglibG9iX25hbWUYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoBBIPCgdleGlzdGVkGAMgASgIIqABChVDb250ZW50VHJ1bmNhdGlvbkRhdGESGwoTb3JpZ2luYWxfY2hhcl9jb3VudBgBIAEoDRIbChNvcmlnaW5hbF9saW5lX2NvdW50GAIgASgNEhwKFHRydW5jYXRlZF9jaGFyX2NvdW50GAMgASgNEhwKFHRydW5jYXRlZF9saW5lX2NvdW50GAQgASgNEhEKCXRvb2xfdHlwZRgFIAEoCSK+AQoOQ29zbW9zRmVlZGJhY2sSLwoGcmF0aW5nGAEgASgOMh8ucmVxdWVzdF9pbnNpZ2h0LkZlZWRiYWNrUmF0aW5nEgwKBG5vdGUYAiABKAkSEgoKdXNlcl9hZ2VudBgDIAEoCRIUCgxyZWFzb25fY29kZXMYBCADKAkSEwoLZXhwZXJ0X25hbWUYBSABKAkSEwoLdGVuYW50X3RpZXIYBiABKAkSGQoRdGVhbV9kaXNwbGF5X25hbWUYByABKAkiDwoNQ3JlYXRlZFBSRGF0YSKPAwoWQ3VzdG9tZXJVSVNlc3Npb25FdmVudBJNCg1zZXNzaW9uX3N0YXJ0GAIgASgLMjQucmVxdWVzdF9pbnNpZ2h0LkN1c3RvbWVyVUlTZXNzaW9uRXZlbnQuU2Vzc2lvblN0YXJ0SAASSQoLc2Vzc2lvbl9lbmQYAyABKAsyMi5yZXF1ZXN0X2luc2lnaHQuQ3VzdG9tZXJVSVNlc3Npb25FdmVudC5TZXNzaW9uRW5kSAASDwoHdXNlcl9pZBgBIAEoCRokCgxTZXNzaW9uU3RhcnQSFAoMcmVkaXJlY3RfdXJsGAEgASgJGpoBCgpTZXNzaW9uRW5kEkkKBnJlYXNvbhgBIAEoDjI5LnJlcXVlc3RfaW5zaWdodC5DdXN0b21lclVJU2Vzc2lvbkV2ZW50LlNlc3Npb25FbmQuUmVhc29uIkEKBlJlYXNvbhIeChpVTktOT1dOX1NFU1NJT05fRU5EX1JFQVNPThAAEgoKBkxPR09VVBABEgsKB1RJTUVPVVQQAkIHCgVldmVudCJZChlEYWlseVJlcXVlc3RMaW1pdEV4Y2VlZGVkEi0KDm9wYXF1ZV91c2VyX2lkGAEgASgLMhUuYXV0aF9lbnRpdGllcy5Vc2VySWQSDQoFbGltaXQYAiABKAUiOQoNRGlmZlBhbmVsRGF0YRIXCg9sb2FkaW5nX3RpbWVfbXMYASABKAUSDwoHYXBwbGllZBgCIAEoCCIKCghFZGl0RW1pdCJUChhFZGl0UmVxdWVzdElkSXNzdWVkRXZlbnQSEgoKcmVxdWVzdF9pZBgBIAEoCRIWCglmaWxlX3BhdGgYAiABKAlIAIgBAUIMCgpfZmlsZV9wYXRoIpMBCg5FZGl0UmVzb2x1dGlvbhITCgtpc19hY2NlcHRlZBgBIAEoCBIbCg5hbm5vdGF0ZWRfdGV4dBgCIAEoCUgAiAEBEiIKFWFubm90YXRlZF9pbnN0cnVjdGlvbhgDIAEoCUgBiAEBQhEKD19hbm5vdGF0ZWRfdGV4dEIYChZfYW5ub3RhdGVkX2luc3RydWN0aW9uIqkBChdFbWJlZGRpbmdzU2VhcmNoUmVxdWVzdBISCgpibG9iX25hbWVzGAEgAygJEhMKC251bV9yZXN1bHRzGAIgASgFEhoKEnRyYW5zZm9ybWF0aW9uX2tleRgDIAEoCRIPCgdzdWJfa2V5GAQgASgJEiUKBWJsb2JzGAUgAygLMhYuYmFzZS5ibG9iX25hbWVzLkJsb2JzEhEKCW51bV9ibG9icxgGIAEoBSKEAQoYRW1iZWRkaW5nc1NlYXJjaFJlc3BvbnNlEhoKEm1pc3NpbmdfYmxvYl9uYW1lcxgBIAMoCRI4CgdyZXN1bHRzGAIgAygLMicucmVxdWVzdF9pbnNpZ2h0LkVtYmVkZGluZ3NTZWFyY2hSZXN1bHQSEgoKYmxvYl9jb3VudBgDIAEoDSJPChZFbWJlZGRpbmdzU2VhcmNoUmVzdWx0EhEKCWJsb2JfbmFtZRgBIAEoCRITCgtjaHVua19pbmRleBgCIAEoDRINCgV2YWx1ZRgDIAEoAiLrAQoORXh0ZW5zaW9uRXJyb3ISIAoTb3JpZ2luYWxfcmVxdWVzdF9pZBgBIAEoCUgAiAEBEg8KB21lc3NhZ2UYAiABKAkSEwoLc3RhY2tfdHJhY2UYAyABKAkSRQoLZGlhZ25vc3RpY3MYBCADKAsyMC5yZXF1ZXN0X2luc2lnaHQuRXh0ZW5zaW9uRXJyb3IuRGlhZ25vc3RpY3NFbnRyeRoyChBEaWFnbm9zdGljc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCFgoUX29yaWdpbmFsX3JlcXVlc3RfaWQisQEKFUV4dGVuc2lvblNlc3Npb25FdmVudBISCgpldmVudF9uYW1lGAEgASgJEhIKCnVzZXJfYWdlbnQYAiABKAkSSAoPYWRkaXRpb25hbF9kYXRhGAMgAygLMi8ucmVxdWVzdF9pbnNpZ2h0LkV4dGVuc2lvblNlc3Npb25FdmVudC5LZXlWYWx1ZRomCghLZXlWYWx1ZRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiiQEKFEZpcnN0VG9rZW5UaW1pbmdEYXRhEiYKHnVzZXJfbWVzc2FnZV9zZW50X3RpbWVzdGFtcF9tcxgBIAEoBBIpCiFmaXJzdF90b2tlbl9yZWNlaXZlZF90aW1lc3RhbXBfbXMYAiABKAQSHgoWdGltZV90b19maXJzdF90b2tlbl9tcxgDIAEoDSJMChFGbHVzaE1lbW9yaWVzRGF0YRI3Cgx0cmFjaW5nX2RhdGEYASABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YSImChBHaXRodWJBUElGYWlsdXJlEhIKCmVycm9yX2NvZGUYASABKAUimgMKHEdpdGh1YlB1bGxSZXF1ZXN0TWVyZ2VkRXZlbnQSFwoKcmVwb19vd25lchgBIAEoCUgAiAEBEhYKCXJlcG9fbmFtZRgCIAEoCUgBiAEBEhYKCXByX251bWJlchgDIAEoDUgCiAEBEjIKCW1lcmdlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARIcCg9tZXJnZWRfYnlfbG9naW4YBSABKAlIBIgBARIWCglhZGRpdGlvbnMYBiABKA1IBYgBARIWCglkZWxldGlvbnMYByABKA1IBogBARIVCghoZWFkX3NoYRgIIAEoCUgHiAEBEhUKCGJhc2VfcmVmGAkgASgJSAiIAQFCDQoLX3JlcG9fb3duZXJCDAoKX3JlcG9fbmFtZUIMCgpfcHJfbnVtYmVyQgwKCl9tZXJnZWRfYXRCEgoQX21lcmdlZF9ieV9sb2dpbkIMCgpfYWRkaXRpb25zQgwKCl9kZWxldGlvbnNCCwoJX2hlYWRfc2hhQgsKCV9iYXNlX3JlZiItChNHaXRodWJVc2VyQXV0aG9yaXplEhYKDmdpdGh1Yl91c2VyX2lkGAEgASgDItYDCgxJbmZlclJlcXVlc3QSDQoFbW9kZWwYASABKAkSDgoGcHJvbXB0GAIgASgJEgwKBHBhdGgYAyABKAkSDgoGc3VmZml4GAQgASgJEhAKCG1lbW9yaWVzGAUgAygJEg0KBXRvcF9rGAYgASgFEg0KBXRvcF9wGAcgASgCEhMKC3RlbXBlcmF0dXJlGAggASgCEhIKCm1heF90b2tlbnMYCSABKAUSEgoKc2Vzc2lvbl9pZBgLIAEoCRIMCgRsYW5nGAwgASgJEhIKCnVzZXJfYWdlbnQYDSABKAkSEwoLc2VxdWVuY2VfaWQYDiABKA0SEgoKcHJvYmVfb25seRgPIAEoCBIlCgVibG9icxgQIAEoCzIWLmJhc2UuYmxvYl9uYW1lcy5CbG9icxItCgxyZWNlbmN5X2luZm8YESABKAsyFy5jb21wbGV0aW9uLlJlY2VuY3lJbmZvEiIKFXVzZXJfZmlsdGVyX3RocmVzaG9sZBgSIAEoAkgAiAEBEjcKC2VkaXRfZXZlbnRzGBMgAygLMiIuYmFzZS5kaWZmX3V0aWxzLkdyYW51bGFyRWRpdEV2ZW50QhgKFl91c2VyX2ZpbHRlcl90aHJlc2hvbGRKBAgKEAsiaQoVSW5mZXJlbmNlSG9zdFJlc3BvbnNlEhUKDWN1bV9sb2dfcHJvYnMYAiABKAISMwoMdG9rZW5pemF0aW9uGAMgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbkoECAEQAiLfAQoWSW5pdGlhbE9yaWVudGF0aW9uRGF0YRJJCgZjYWxsZXIYASABKA4yOS5yZXF1ZXN0X2luc2lnaHQuSW5pdGlhbE9yaWVudGF0aW9uRGF0YS5PcmllbnRhdGlvbkNhbGxlchI3Cgx0cmFjaW5nX2RhdGEYAiABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YSJBChFPcmllbnRhdGlvbkNhbGxlchIPCgtVTlNQRUNJRklFRBAAEg4KCk9OQk9BUkRJTkcQARILCgdDT01NQU5EEAIiEQoPSW5zdHJ1Y3Rpb25FbWl0ImEKFUluc3RydWN0aW9uUmVzb2x1dGlvbhIaChJpc19hY2NlcHRlZF9jaHVua3MYASADKAgSFQoNaXNfYWNjZXB0X2FsbBgCIAEoCBIVCg1pc19yZWplY3RfYWxsGAMgASgIImUKEE1lbW9yaWVzRmVlZGJhY2sSLwoGcmF0aW5nGAEgASgOMh8ucmVxdWVzdF9pbnNpZ2h0LkZlZWRiYWNrUmF0aW5nEgwKBG5vdGUYAiABKAkSEgoKdXNlcl9hZ2VudBgDIAEoCSI3ChRNZW1vcmllc0ZpbGVPcGVuRGF0YRIfChdtZW1vcmllc19wYXRoX3VuZGVmaW5lZBgBIAEoCCKfAQoQTWVtb3JpZXNNb3ZlRGF0YRI4CgZ0YXJnZXQYASABKA4yKC5yZXF1ZXN0X2luc2lnaHQuTWVtb3JpZXNNb3ZlRGF0YS5UYXJnZXQiUQoGVGFyZ2V0Eg8KC1VOU1BFQ0lGSUVEEAASEwoPVVNFUl9HVUlERUxJTkVTEAESFgoSQVVHTUVOVF9HVUlERUxJTkVTEAISCQoFUlVMRVMQAyK5AQoPTWVtb3J5VXNhZ2VEYXRhEg4KBmFjdGlvbhgBIAEoBRIWCgltZW1vcnlfaWQYAiABKAlIAIgBARIUCgx0cmlnZ2VyZWRfYnkYAyABKAUSGQoMbWVtb3J5X3N0YXRlGAQgASgJSAGIAQESGwoObWVtb3J5X3ZlcnNpb24YBSABKAlIAogBAUIMCgpfbWVtb3J5X2lkQg8KDV9tZW1vcnlfc3RhdGVCEQoPX21lbW9yeV92ZXJzaW9uIu4CChBNb2RlU2VsZWN0b3JEYXRhEkQKBmFjdGlvbhgBIAEoDjI0LnJlcXVlc3RfaW5zaWdodC5Nb2RlU2VsZWN0b3JEYXRhLk1vZGVTZWxlY3RvckFjdGlvbhI0CgRtb2RlGAIgASgOMiYucmVxdWVzdF9pbnNpZ2h0Lk1vZGVTZWxlY3RvckRhdGEuTW9kZRI6Cg5zb3VyY2VfY29udHJvbBgDIAEoDjIiLnJlcXVlc3RfaW5zaWdodC5Tb3VyY2VDb250cm9sVHlwZSI/CgRNb2RlEhAKDFVOS05PV05fTU9ERRAAEggKBENIQVQQARIJCgVBR0VOVBACEhAKDFJFTU9URV9BR0VOVBADImEKEk1vZGVTZWxlY3RvckFjdGlvbhIgChxVTktOT1dOX01PREVfU0VMRUNUT1JfQUNUSU9OEAASCAoET1BFThABEgkKBUNMT1NFEAISCgoGU0VMRUNUEAMSCAoESU5JVBAEIoABChhNb2RlbFNlbGVjdGlvbkNoYW5nZURhdGESGQoRcHJldmlvdXNfbW9kZWxfaWQYASABKAkSGwoTcHJldmlvdXNfbW9kZWxfbmFtZRgCIAEoCRIUCgxuZXdfbW9kZWxfaWQYAyABKAkSFgoObmV3X21vZGVsX25hbWUYBCABKAkiyQEKFE5vdGlmaWNhdGlvbkJlbGxEYXRhEk8KCmJlbGxfc3RhdGUYASABKA4yOy5yZXF1ZXN0X2luc2lnaHQuTm90aWZpY2F0aW9uQmVsbERhdGEuTm90aWZpY2F0aW9uQmVsbFN0YXRlImAKFU5vdGlmaWNhdGlvbkJlbGxTdGF0ZRILCgdVTktOT1dOEAASDQoJQUNUSVZBVEVEEAESDwoLREVBQ1RJVkFURUQQAhIMCghOT1RJRklFRBAEEgwKCEFDQ0VQVEVEEAMiQAoWT25ib2FyZGluZ1Nlc3Npb25FdmVudBISCgpldmVudF9uYW1lGAEgASgJEhIKCnVzZXJfYWdlbnQYAiABKAkiiQEKFVBhcmVudGhlc2lzVHJ1bmNhdGlvbhIVCg1vcmlnaW5hbF90ZXh0GAEgASgJEhYKDnRydW5jYXRlZF90ZXh0GAIgASgJEhUKDXdhc190cnVuY2F0ZWQYAyABKAgSHAoUY291bGRfaGF2ZV90cnVuY2F0ZWQYBCABKAgSDAoEcGF0aBgFIAEoCSJMChRQYXJzZWRSb3V0ZXJSZXNwb25zZRIQCghjYXRlZ29yeRgBIAEoCRIRCglmaWxlbmFtZXMYAiADKAkSDwoHZG9jc2V0cxgDIAMoCSLCAgoWUG9zZWlkb25BbmFseXRpY3NFdmVudBJKChVwb3NlaWRvbl9wcl9hbmFseXRpY3MYBCABKAsyKS5yZXF1ZXN0X2luc2lnaHQuUG9zZWlkb25QckFuYWx5dGljc0V2ZW50SAASTwoTb3V0Y29tZV9vYnNlcnZhdGlvbhgFIAEoCzIwLnJlcXVlc3RfaW5zaWdodC5Qb3NlaWRvbk91dGNvbWVPYnNlcnZhdGlvbkV2ZW50SAASLQoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIVCghldmVudF9pZBgCIAEoCUgCiAEBEhcKCnJlcXVlc3RfaWQYAyABKAlIA4gBAUIHCgVldmVudEIHCgVfdGltZUILCglfZXZlbnRfaWRCDQoLX3JlcXVlc3RfaWQirgQKH1Bvc2VpZG9uT3V0Y29tZU9ic2VydmF0aW9uRXZlbnQSEQoEbmFtZRgBIAEoCUgAiAEBEhQKB3N1YmplY3QYAiABKAlIAYgBARIZCgxzdWJqZWN0X3R5cGUYAyABKAlIAogBARITCgZzb3VyY2UYBCABKAlIA4gBARI0CgtvYnNlcnZlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARJICgR0YWdzGAYgAygLMjoucmVxdWVzdF9pbnNpZ2h0LlBvc2VpZG9uT3V0Y29tZU9ic2VydmF0aW9uRXZlbnQuVGFnc0VudHJ5EhoKDW1ldGFkYXRhX2pzb24YCCABKAlIBYgBARJOCgdtZXRyaWNzGAkgAygLMj0ucmVxdWVzdF9pbnNpZ2h0LlBvc2VpZG9uT3V0Y29tZU9ic2VydmF0aW9uRXZlbnQuTWV0cmljc0VudHJ5GisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGi4KDE1ldHJpY3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBQgcKBV9uYW1lQgoKCF9zdWJqZWN0Qg8KDV9zdWJqZWN0X3R5cGVCCQoHX3NvdXJjZUIOCgxfb2JzZXJ2ZWRfYXRCEAoOX21ldGFkYXRhX2pzb25KBAgHEAhSEGF0dHJpYnV0aW9uX3RhZ3Mi4gkKGFBvc2VpZG9uUHJBbmFseXRpY3NFdmVudBIRCgRyZXBvGAEgASgJSACIAQESFgoJcHJfbnVtYmVyGAIgASgDSAGIAQESGgoNZXZlbnRfdHJpZ2dlchgDIAEoCUgCiAEBEjMKCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESGQoMYXV0aG9yX2xvZ2luGAUgASgJSASIAQESMgoJbWVyZ2VkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEiYKGWFwcHJvdmVkX2J5X3Jpc2tfYW5hbHl6ZXIYByABKAhIBogBARIwCiNudW1fY29tbWVudHNfYWRkcmVzc2VkX2J5X3ByX2F1dGhvchgIIAEoA0gHiAEBEh8KEnByX2F1dGhvcl9hc3Npc3RlZBgJIAEoCEgIiAEBEi0KIGRlZXBfcmV2aWV3ZXJfbnVtYmVyX29mX2NvbW1lbnRzGAogASgDSAmIAQESLQogcGFpcl9yZXZpZXdlcl9udW1iZXJfb2ZfY29tbWVudHMYCyABKANICogBARIWCglpc19yZXZlcnQYDCABKAhIC4gBARIXCgppc19idWdfZml4GA0gASgISAyIAQESGAoLbG9jX2NoYW5nZWQYDiABKANIDYgBARIfChJudW1faHVtYW5fY29tbWVudHMYDyABKANIDogBARIgChNudW1fY29zbW9zX2NvbW1lbnRzGBAgASgDSA+IAQESFQoIcGxhdGZvcm0YESABKAlIEIgBARIqCh1kZWVwX2NvZGVfcmV2aWV3ZXJfc2Vzc2lvbl9pZBgSIAEoCUgRiAEBEigKG3ByX3Jpc2tfYW5hbHl6ZXJfc2Vzc2lvbl9pZBgTIAEoCUgSiAEBEiUKGHBhaXJfcmV2aWV3ZXJfc2Vzc2lvbl9pZBgUIAEoCUgTiAEBEiEKFHByX2F1dGhvcl9zZXNzaW9uX2lkGBUgASgJSBSIAQFCBwoFX3JlcG9CDAoKX3ByX251bWJlckIQCg5fZXZlbnRfdHJpZ2dlckINCgtfY3JlYXRlZF9hdEIPCg1fYXV0aG9yX2xvZ2luQgwKCl9tZXJnZWRfYXRCHAoaX2FwcHJvdmVkX2J5X3Jpc2tfYW5hbHl6ZXJCJgokX251bV9jb21tZW50c19hZGRyZXNzZWRfYnlfcHJfYXV0aG9yQhUKE19wcl9hdXRob3JfYXNzaXN0ZWRCIwohX2RlZXBfcmV2aWV3ZXJfbnVtYmVyX29mX2NvbW1lbnRzQiMKIV9wYWlyX3Jldmlld2VyX251bWJlcl9vZl9jb21tZW50c0IMCgpfaXNfcmV2ZXJ0Qg0KC19pc19idWdfZml4Qg4KDF9sb2NfY2hhbmdlZEIVChNfbnVtX2h1bWFuX2NvbW1lbnRzQhYKFF9udW1fY29zbW9zX2NvbW1lbnRzQgsKCV9wbGF0Zm9ybUIgCh5fZGVlcF9jb2RlX3Jldmlld2VyX3Nlc3Npb25faWRCHgocX3ByX3Jpc2tfYW5hbHl6ZXJfc2Vzc2lvbl9pZEIbChlfcGFpcl9yZXZpZXdlcl9zZXNzaW9uX2lkQhcKFV9wcl9hdXRob3Jfc2Vzc2lvbl9pZCKOAQoTUG9zdHByb2Nlc3NSZXNwb25zZRI4Cgx0b2tlbml6YXRpb24YASABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uSACIAQESGgoNZXJyb3JfbWVzc2FnZRgCIAEoCUgBiAEBQg8KDV90b2tlbml6YXRpb25CEAoOX2Vycm9yX21lc3NhZ2UipwEKEFByZWZlcmVuY2VTYW1wbGUSEwoLcmVxdWVzdF9pZHMYASADKAkSPQoGc2NvcmVzGAIgAygLMi0ucmVxdWVzdF9pbnNpZ2h0LlByZWZlcmVuY2VTYW1wbGUuU2NvcmVzRW50cnkSEAoIZmVlZGJhY2sYAyABKAkaLQoLU2NvcmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASK0AgoQUHJvbXB0Q2FjaGVVc2FnZRIUCgxpbnB1dF90b2tlbnMYASABKA0SHwoXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMYAiABKA0SIwobY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zGAMgASgNEhkKEXRleHRfaW5wdXRfdG9rZW5zGAQgASgNEhkKEXRvb2xfaW5wdXRfdG9rZW5zGAUgASgNEhoKEnRleHRfb3V0cHV0X3Rva2VucxgGIAEoDRIaChJ0b29sX291dHB1dF90b2tlbnMYByABKA0SGQoMbW9kZWxfY2FsbGVyGAggASgJSACIAQESGQoMc2VydmljZV90aWVyGAkgASgJSAGIAQFCDwoNX21vZGVsX2NhbGxlckIPCg1fc2VydmljZV90aWVyIj8KD1B1cmNoYXNlQ3JlZGl0cxIbChNvcmJfc3Vic2NyaXB0aW9uX2lkGAEgASgJEg8KB2NyZWRpdHMYAiABKAIiUwomUklBZ2VudGljU2xhY2tib3RSZWFjdGlvblJlY2VpdmVkRXZlbnQSKQoLc2xhY2tfZXZlbnQYASABKAsyFC5zbGFja2JvdC5TbGFja0V2ZW50IjcKDVJJQmF0Y2hVcGxvYWQSEgoKYmxvYl9jb3VudBgBIAEoBRISCgp0b3RhbF9zaXplGAIgASgDIvcDChNSSUNoYXRNZXRlcmluZ0V2ZW50EjUKDm1ldGVyaW5nX2V2ZW50GAEgASgLMh0ubWV0ZXJpbmdfZXZlbnQuTWV0ZXJpbmdFdmVudBIbChNhY3Rpdml0eV9tdWx0aXBsaWVyGAIgASgBEhQKDGlucHV0X3Rva2VucxgDIAEoBRIVCg1vdXRwdXRfdG9rZW5zGAQgASgFEhkKEWNhY2hlX3JlYWRfdG9rZW5zGAUgASgFEhoKEmNhY2hlX3dyaXRlX3Rva2VucxgGIAEoBRIWCg50b3RhbF9jb3N0X3VzZBgLIAEoARISCgptb2RlbF9uYW1lGAwgASgJEhwKD2NvbnZlcnNhdGlvbl9pZBgNIAEoCUgAiAEBEhsKDnJvdXRpbmdfcmVhc29uGA4gASgJSAGIAQESHAoPcHJvdmlkZXJfcmVnaW9uGA8gASgJSAKIAQESGwoOZW5kcG9pbnRfc2NvcGUYECABKAlIA4gBARIgChNyZWdpb25hbF9tdWx0aXBsaWVyGBEgASgBSASIAQFCEgoQX2NvbnZlcnNhdGlvbl9pZEIRCg9fcm91dGluZ19yZWFzb25CEgoQX3Byb3ZpZGVyX3JlZ2lvbkIRCg9fZW5kcG9pbnRfc2NvcGVCFgoUX3JlZ2lvbmFsX211bHRpcGxpZXIi3gEKDVJJQ2hhdFJlcXVlc3QSIgoHcmVxdWVzdBgBIAEoCzIRLmNoYXQuQ2hhdFJlcXVlc3QSOQoQcmV0cmlldmVkX2NodW5rcxgDIAMoCzIfLnJlcXVlc3RfaW5zaWdodC5SZXRyaWV2YWxDaHVuaxIzCgx0b2tlbml6YXRpb24YBCABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uEhsKE2V4dGVybmFsX3NvdXJjZV9pZHMYBSADKAkSFgoOcmVxdWVzdF9zb3VyY2UYBiABKAlKBAgCEAMiwAIKDlJJQ2hhdFJlc3BvbnNlEiQKCHJlc3BvbnNlGAEgASgLMhIuY2hhdC5DaGF0UmVzcG9uc2USMwoMdG9rZW5pemF0aW9uGAMgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbhIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQESDgoGc2lsZW50GAUgASgIEioKC3NpbGVudF90eXBlGAYgASgOMhAuY2hhdC5TaWxlbnRUeXBlSAGIAQESPwoPcmVmdXNhbF9zdW1tYXJ5GAcgASgLMiEucmVxdWVzdF9pbnNpZ2h0LlJJUmVmdXNhbFN1bW1hcnlIAogBAUIQCg5fZXJyb3JfbWVzc2FnZUIOCgxfc2lsZW50X3R5cGVCEgoQX3JlZnVzYWxfc3VtbWFyeUoECAIQAyKpAQoNUklFZGl0UmVxdWVzdBIiCgdyZXF1ZXN0GAEgASgLMhEuZWRpdC5FZGl0UmVxdWVzdBI5ChByZXRyaWV2ZWRfY2h1bmtzGAMgAygLMh8ucmVxdWVzdF9pbnNpZ2h0LlJldHJpZXZhbENodW5rEjMKDHRva2VuaXphdGlvbhgEIAEoCzIdLnJlcXVlc3RfaW5zaWdodC5Ub2tlbml6YXRpb25KBAgCEAMicQoOUklFZGl0UmVzcG9uc2USJAoIcmVzcG9uc2UYASABKAsyEi5lZGl0LkVkaXRSZXNwb25zZRIzCgx0b2tlbml6YXRpb24YAyABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uSgQIAhADImgKDVJJRmluZE1pc3NpbmcSEgoKbW9kZWxfbmFtZRgBIAEoCRISCgpibG9iX2NvdW50GAIgASgFEhUKDW1pc3NpbmdfY291bnQYAyABKAUSGAoQbm9uaW5kZXhlZF9jb3VudBgEIAEoBSJ5ChxSSUdpdGh1YkFwcEluc3RhbGxhdGlvbkV2ZW50EiIKBnN0YXR1cxgBIAEoCzISLmdvb2dsZS5ycGMuU3RhdHVzEjUKCmV2ZW50X3R5cGUYAiABKA4yIS5yZXF1ZXN0X2luc2lnaHQuSW5zdGFsbEV2ZW50VHlwZSJACg1SSUdpdGh1YkV2ZW50Ei8KDGdpdGh1Yl9ldmVudBgBIAEoCzIZLmdpdGh1Yl9ldmVudC5HaXRodWJFdmVudCLRBAoYUklHaXRodWJQcm9jZXNzaW5nUmVzdWx0EiIKBnN0YXR1cxgBIAEoCzISLmdvb2dsZS5ycGMuU3RhdHVzEhsKE2xhc3RfdXBkYXRlZF9jb21taXQYAiABKAkSRgoKZGlmZl9pbmZvcxgDIAMoCzIyLnJlcXVlc3RfaW5zaWdodC5SSUdpdGh1YlByb2Nlc3NpbmdSZXN1bHQuRGlmZkluZm8SHQoVZmlsZW5hbWVzX3RvX2Rvd25sb2FkGAQgAygJEk0KEWlnbm9yZV9kaWZmX2luZm9zGAcgAygLMjIucmVxdWVzdF9pbnNpZ2h0LlJJR2l0aHViUHJvY2Vzc2luZ1Jlc3VsdC5EaWZmSW5mbxIkChxpZ25vcmVfZmlsZW5hbWVzX3RvX2Rvd25sb2FkGAggAygJEjAKEGNoZWNrcG9pbnRfYmxvYnMYBSABKAsyFi5iYXNlLmJsb2JfbmFtZXMuQmxvYnMSFwoPZ2l0X2FwcGx5X2Vycm9yGAYgASgJEhsKE2ZpbGVfZG93bmxvYWRfZXJyb3IYCSABKAkSFgoOZGlmZl9ibG9iX25hbWUYCiABKAkSFQoNaWdub3JlZF9maWxlcxgLIAMoCRqAAQoIRGlmZkluZm8SEAoIZmlsZW5hbWUYASABKAkSFAoMb2xkX2Jsb2JuYW1lGAIgASgJEhQKDG5ld19ibG9ibmFtZRgDIAEoCRIUCgxvbGRfZmlsZW5hbWUYBCABKAkSDwoHcmVtb3ZlZBgFIAEoCBIPCgdyZW5hbWVkGAYgASgIIhgKFlJJR2xlYW5PQXV0aFVSTFJlcXVlc3QiLAoXUklHbGVhbk9BdXRoVVJMUmVzcG9uc2USEQoJb2F1dGhfdXJsGAEgASgJItECCg5SSUdsZWFuUmVxdWVzdBIlCgdyZXF1ZXN0GAEgASgLMhQuZ2xlYW4uU2VhcmNoUmVxdWVzdBIWCg5yZXF1ZXN0X3NvdXJjZRgCIAEoCRJbChZxdWVyeV9wcm9jZXNzb3JfY29uZmlnGAMgASgLMjsucmVxdWVzdF9pbnNpZ2h0LlJJR2xlYW5SZXF1ZXN0LlJJR2xlYW5RdWVyeVByb2Nlc3NvckNvbmZpZxqiAQobUklHbGVhblF1ZXJ5UHJvY2Vzc29yQ29uZmlnEhYKDmdjcF9wcm9qZWN0X2lkGAEgASgJEhIKCmdjcF9yZWdpb24YAiABKAkSEgoKbW9kZWxfbmFtZRgDIAEoCRITCgt0ZW1wZXJhdHVyZRgEIAEoAhIZChFtYXhfb3V0cHV0X3Rva2VucxgFIAEoBRITCgttYXhfcmVzdWx0cxgGIAEoBSK2AQoPUklHbGVhblJlc3BvbnNlEicKCHJlc3BvbnNlGAEgASgLMhUuZ2xlYW4uU2VhcmNoUmVzcG9uc2USUAofZ2VuZXJhdGVfc2VhcmNoX3F1ZXJpZXNfcmVxdWVzdBgCIAEoCzInLnJlcXVlc3RfaW5zaWdodC5UaGlyZFBhcnR5TW9kZWxSZXF1ZXN0EigKIGdlbmVyYXRlX3NlYXJjaF9xdWVyaWVzX3Jlc3BvbnNlGAMgAygJIrEBChRSSUluc3RydWN0aW9uUmVxdWVzdBIpCgdyZXF1ZXN0GAEgASgLMhguZWRpdC5JbnN0cnVjdGlvblJlcXVlc3QSOQoQcmV0cmlldmVkX2NodW5rcxgCIAMoCzIfLnJlcXVlc3RfaW5zaWdodC5SZXRyaWV2YWxDaHVuaxIzCgx0b2tlbml6YXRpb24YAyABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uIrABChVSSUluc3RydWN0aW9uUmVzcG9uc2USNAoIcmVzcG9uc2UYASABKAsyIi5lZGl0Lkluc3RydWN0aW9uQWdncmVnYXRlUmVzcG9uc2USMwoMdG9rZW5pemF0aW9uGAIgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbhIaCg1lcnJvcl9tZXNzYWdlGAMgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UirwEKHlJJSW50ZWdyYXRpb25JbnN0YWxsYXRpb25FdmVudBIiCgZzdGF0dXMYASABKAsyEi5nb29nbGUucnBjLlN0YXR1cxI1CgpldmVudF90eXBlGAIgASgOMiEucmVxdWVzdF9pbnNpZ2h0Lkluc3RhbGxFdmVudFR5cGUSEwoLaW50ZWdyYXRpb24YAyABKAkSDQoFc2NvcGUYBCABKAkSDgoGbWV0aG9kGAUgASgJItABCg5SSU1vZGVsQVBJQ2FsbBISCgptb2RlbF9uYW1lGAEgASgJEhAKCHByb3ZpZGVyGAIgASgJEhMKBnJlZ2lvbhgDIAEoCUgAiAEBEiAKE3JlcXVlc3RfcGFyYW1zX2pzb24YBCABKAlIAYgBARIjChZyZXNwb25zZV9tZXRhZGF0YV9qc29uGAUgASgJSAKIAQFCCQoHX3JlZ2lvbkIWChRfcmVxdWVzdF9wYXJhbXNfanNvbkIZChdfcmVzcG9uc2VfbWV0YWRhdGFfanNvbiJoChBSSVJlZnVzYWxTdW1tYXJ5EhAKCHByb3ZpZGVyGAEgASgJEhIKCm1vZGVsX25hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRIQCghjYXRlZ29yeRgEIAEoCRIOCgZzb3VyY2UYBSABKAkixgIKF1JJUmVtb3RlVG9vbENhbGxSZXF1ZXN0EkYKGmNvZGViYXNlX3JldHJpZXZhbF9yZXF1ZXN0GAEgASgLMiAuYWdlbnRzLkNvZGViYXNlUmV0cmlldmFsUmVxdWVzdEgAEjQKEWVkaXRfZmlsZV9yZXF1ZXN0GAIgASgLMhcuYWdlbnRzLkVkaXRGaWxlUmVxdWVzdEgAEk0KGnJpX3J1bl9yZW1vdGVfdG9vbF9yZXF1ZXN0GAQgASgLMicucmVxdWVzdF9pbnNpZ2h0LlJJUnVuUmVtb3RlVG9vbFJlcXVlc3RIABJNCh5jb2RlYmFzZV9yZXRyaWV2YWxfcmF3X3JlcXVlc3QYBSABKAsyIy5hZ2VudHMuQ29kZWJhc2VSZXRyaWV2YWxSYXdSZXF1ZXN0SABCCQoHcmVxdWVzdEoECAMQBCK8AgoYUklSZW1vdGVUb29sQ2FsbFJlc3BvbnNlEkgKG2NvZGViYXNlX3JldHJpZXZhbF9yZXNwb25zZRgBIAEoCzIhLmFnZW50cy5Db2RlYmFzZVJldHJpZXZhbFJlc3BvbnNlSAASNgoSZWRpdF9maWxlX3Jlc3BvbnNlGAIgASgLMhguYWdlbnRzLkVkaXRGaWxlUmVzcG9uc2VIABJBChhydW5fcmVtb3RlX3Rvb2xfcmVzcG9uc2UYAyABKAsyHS5hZ2VudHMuUnVuUmVtb3RlVG9vbFJlc3BvbnNlSAASTwofY29kZWJhc2VfcmV0cmlldmFsX3Jhd19yZXNwb25zZRgEIAEoCzIkLmFnZW50cy5Db2RlYmFzZVJldHJpZXZhbFJhd1Jlc3BvbnNlSABCCgoIcmVzcG9uc2UibwoWUklSdW5SZW1vdGVUb29sUmVxdWVzdBIVCgl0b29sX25hbWUYASABKAlCAhgBEhcKD3Rvb2xfaW5wdXRfanNvbhgCIAEoCRIlCgd0b29sX2lkGAMgASgOMhQuYWdlbnRzLlJlbW90ZVRvb2xJZCJLChVSSVNoYXJlR2V0Q2hhdFJlcXVlc3QSMgoHcmVxdWVzdBgBIAEoCzIhLnNoYXJlLkdldENoYXRDb252ZXJzYXRpb25SZXF1ZXN0Ik4KFlJJU2hhcmVHZXRDaGF0UmVzcG9uc2USNAoIcmVzcG9uc2UYASABKAsyIi5zaGFyZS5HZXRDaGF0Q29udmVyc2F0aW9uUmVzcG9uc2UiTQoWUklTaGFyZVNhdmVDaGF0UmVxdWVzdBIzCgdyZXF1ZXN0GAEgASgLMiIuc2hhcmUuU2F2ZUNoYXRDb252ZXJzYXRpb25SZXF1ZXN0IlAKF1JJU2hhcmVTYXZlQ2hhdFJlc3BvbnNlEjUKCHJlc3BvbnNlGAEgASgLMiMuc2hhcmUuU2F2ZUNoYXRDb252ZXJzYXRpb25SZXNwb25zZSJ4ChtSSVNsYWNrYm90SW5zdGFsbGF0aW9uRXZlbnQSIgoGc3RhdHVzGAEgASgLMhIuZ29vZ2xlLnJwYy5TdGF0dXMSNQoKZXZlbnRfdHlwZRgCIAEoDjIhLnJlcXVlc3RfaW5zaWdodC5JbnN0YWxsRXZlbnRUeXBlIosCChFSSVNsYWNrYm90UmVxdWVzdBIpCgtzbGFja19ldmVudBgBIAEoCzIULnNsYWNrYm90LlNsYWNrRXZlbnQSRAoMY2hhbm5lbF90eXBlGAIgASgOMi4ucmVxdWVzdF9pbnNpZ2h0LlJJU2xhY2tib3RSZXF1ZXN0LkNoYW5uZWxUeXBlIoQBCgtDaGFubmVsVHlwZRIYChRVTktOT1dOX0NIQU5ORUxfVFlQRRAAEgYKAklNEAESCAoETVBJTRACEhIKDlNIQVJFRF9DSEFOTkVMEAMSEwoPUFJJVkFURV9DSEFOTkVMEAQSEwoPR0VORVJBTF9DSEFOTkVMEAUSCwoHQ0hBTk5FTBAGIv0DChJSSVNsYWNrYm90UmVzcG9uc2USDwoHY2hhbm5lbBgBIAEoCRIYChB0aHJlYWRfdGltZXN0YW1wGAIgASgJEiEKGXJlcXVlc3RfbWVzc2FnZV90aW1lc3RhbXAYAyABKAkSQgoPcmVzcG9uc2VfZXZlbnRzGAQgAygLMikucmVxdWVzdF9pbnNpZ2h0LlJJU2xhY2tib3RSZXNwb25zZS5FdmVudBrQAQoFRXZlbnQSRwoMcG9zdF9tZXNzYWdlGAIgASgLMi8ucmVxdWVzdF9pbnNpZ2h0LlJJU2xhY2tib3RSZXNwb25zZS5Qb3N0TWVzc2FnZUgAEksKDnVwZGF0ZV9tZXNzYWdlGAMgASgLMjEucmVxdWVzdF9pbnNpZ2h0LlJJU2xhY2tib3RSZXNwb25zZS5VcGRhdGVNZXNzYWdlSAASKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBwoFZXZlbnQaPwoLUG9zdE1lc3NhZ2USIgoacmVzcG9uc2VfbWVzc2FnZV90aW1lc3RhbXAYASABKAkSDAoEdGV4dBgCIAEoCRpBCg1VcGRhdGVNZXNzYWdlEiIKGnJlc3BvbnNlX21lc3NhZ2VfdGltZXN0YW1wGAEgASgJEgwKBHRleHQYAiABKAkiIwoFUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIgASgFIqECChRSZW1lbWJlclRvb2xDYWxsRGF0YRJICgZjYWxsZXIYASABKA4yOC5yZXF1ZXN0X2luc2lnaHQuUmVtZW1iZXJUb29sQ2FsbERhdGEuUmVtZW1iZXJUb29sQ2FsbGVyEh0KFWlzX2NvbXBsZXhfbmV3X21lbW9yeRgCIAEoCBI3Cgx0cmFjaW5nX2RhdGEYAyABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQWdlbnRUcmFjaW5nRGF0YSJnChJSZW1lbWJlclRvb2xDYWxsZXISDwoLVU5TUEVDSUZJRUQQABIYChRDTEFTU0lGWV9BTkRfRElTVElMTBABEg8KC09SSUVOVEFUSU9OEAISFQoRTUVNT1JZX0FDQ0VQVEFOQ0UQAyJCChJSZW1vdGVBZ2VudENyZWF0ZWQSFAoMY2hhbmdlZF9yZXBvGAEgASgIEhYKDmNoYW5nZWRfYnJhbmNoGAIgASgIImgKE1JlbW90ZUFnZW50RmVlZGJhY2sSLwoGcmF0aW5nGAEgASgOMh8ucmVxdWVzdF9pbnNpZ2h0LkZlZWRiYWNrUmF0aW5nEgwKBG5vdGUYAiABKAkSEgoKdXNlcl9hZ2VudBgDIAEoCSLaAQoWUmVtb3RlQWdlbnRMYXRlbmN5RGF0YRJUCgxsYXRlbmN5X3R5cGUYASABKA4yPi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRMYXRlbmN5RGF0YS5SZW1vdGVBZ2VudExhdGVuY3lUeXBlEhIKCmxhdGVuY3lfbXMYAiABKA0iVgoWUmVtb3RlQWdlbnRMYXRlbmN5VHlwZRIYChRVTktOT1dOX0xBVEVOQ1lfVFlQRRAAEhAKDENSRUFURV9BR0VOVBABEhAKDFJFU1VNRV9BR0VOVBACItsBCg5SZW1vdGVBZ2VudExvZxI1CgdlbnRyaWVzGAEgAygLMiQucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50TG9nRW50cnkSFwoPcmVtb3RlX2FnZW50X2lkGAIgASgJEhEKCWNvbXBvbmVudBgDIAEoCRIzCg9zdGFydF90aW1lc3RhbXAYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDWVuZF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImgKE1JlbW90ZUFnZW50TG9nRW50cnkSDwoHbWVzc2FnZRgBIAEoCRIRCgl0cmFuc3BvcnQYAiABKAkSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLHAwoeUmVtb3RlQWdlbnROZXdUaHJlYWRCdXR0b25EYXRhEmAKBmFjdGlvbhgBIAEoDjJQLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudE5ld1RocmVhZEJ1dHRvbkRhdGEuUmVtb3RlQWdlbnROZXdUaHJlYWRCdXR0b25BY3Rpb24STwoLdGhyZWFkX3R5cGUYAiABKA4yOi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnROZXdUaHJlYWRCdXR0b25EYXRhLlRocmVhZFR5cGUSOgoOc291cmNlX2NvbnRyb2wYAyABKA4yIi5yZXF1ZXN0X2luc2lnaHQuU291cmNlQ29udHJvbFR5cGUiaAogUmVtb3RlQWdlbnROZXdUaHJlYWRCdXR0b25BY3Rpb24SJAogVU5LTk9XTl9ORVdfVEhSRUFEX0JVVFRPTl9BQ1RJT04QABIJCgVDTElDSxABEggKBE9QRU4QAhIJCgVDTE9TRRADIkwKClRocmVhZFR5cGUSFwoTVU5LTk9XTl9USFJFQURfVFlQRRAAEggKBENIQVQQARIJCgVBR0VOVBACEhAKDFJFTU9URV9BR0VOVBADIqUJChdSZW1vdGVBZ2VudFNlc3Npb25FdmVudBJIChdyZW1vdGVfYWdlbnRfc2V0dXBfZGF0YRgEIAEoCzIlLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudFNldHVwRGF0YUgAEkgKEXNldHVwX3NjcmlwdF9kYXRhGAUgASgLMisucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50U2V0dXBTY3JpcHREYXRhSAASQwoUc3NoX2ludGVyYWN0aW9uX2RhdGEYBiABKAsyIy5yZXF1ZXN0X2luc2lnaHQuU1NISW50ZXJhY3Rpb25EYXRhSAASRwoWbm90aWZpY2F0aW9uX2JlbGxfZGF0YRgHIAEoCzIlLnJlcXVlc3RfaW5zaWdodC5Ob3RpZmljYXRpb25CZWxsRGF0YUgAEjkKD2RpZmZfcGFuZWxfZGF0YRgIIAEoCzIeLnJlcXVlc3RfaW5zaWdodC5EaWZmUGFuZWxEYXRhSAASPQoRc2V0dXBfcGFnZV9vcGVuZWQYCSABKAsyIC5yZXF1ZXN0X2luc2lnaHQuU2V0dXBQYWdlT3BlbmVkSAASPwoSZ2l0aHViX2FwaV9mYWlsdXJlGAogASgLMiEucmVxdWVzdF9pbnNpZ2h0LkdpdGh1YkFQSUZhaWx1cmVIABJDChRyZW1vdGVfYWdlbnRfY3JlYXRlZBgLIAEoCzIjLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudENyZWF0ZWRIABJDChRjaGFuZ2VzX2FwcGxpZWRfZGF0YRgMIAEoCzIjLnJlcXVlc3RfaW5zaWdodC5DaGFuZ2VzQXBwbGllZERhdGFIABI5Cg9jcmVhdGVkX3ByX2RhdGEYDSABKAsyHi5yZXF1ZXN0X2luc2lnaHQuQ3JlYXRlZFBSRGF0YUgAEj8KEm1vZGVfc2VsZWN0b3JfZGF0YRgOIAEoCzIhLnJlcXVlc3RfaW5zaWdodC5Nb2RlU2VsZWN0b3JEYXRhSAASVQoecmVtb3RlX2FnZW50X3NldHVwX3dpbmRvd19kYXRhGA8gASgLMisucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50U2V0dXBXaW5kb3dEYXRhSAASUwodcmVtb3RlX2FnZW50X3RocmVhZF9saXN0X2RhdGEYECABKAsyKi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRUaHJlYWRMaXN0RGF0YUgAEl4KI3JlbW90ZV9hZ2VudF9uZXdfdGhyZWFkX2J1dHRvbl9kYXRhGBEgASgLMi8ucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50TmV3VGhyZWFkQnV0dG9uRGF0YUgAEkwKGXJlbW90ZV9hZ2VudF9sYXRlbmN5X2RhdGEYEiABKAsyJy5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRMYXRlbmN5RGF0YUgAEhIKCmV2ZW50X25hbWUYASABKAkSEgoKdXNlcl9hZ2VudBgCIAEoCRIXCg9yZW1vdGVfYWdlbnRfaWQYAyABKAlCDAoKZXZlbnRfZGF0YSLOAQoUUmVtb3RlQWdlbnRTZXR1cERhdGESIwobdXNlZF9nZW5lcmF0ZWRfc2V0dXBfc2NyaXB0GAEgASgIElAKC3NldHVwX3N0YXRlGAIgASgOMjsucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50U2V0dXBEYXRhLlJlbW90ZUFnZW50U2V0dXBTdGF0ZSI/ChVSZW1vdGVBZ2VudFNldHVwU3RhdGUSCwoHVU5LTk9XThAAEg0KCUNPTVBMRVRFRBABEgoKBkZBSUxFRBACIoMBChpSZW1vdGVBZ2VudFNldHVwU2NyaXB0RGF0YRIRCgludW1fdHJpZXMYASABKAUSGQoRbnVtX21lc3NhZ2VzX3NlbnQYAyABKAUSGgoSZ2VuZXJhdGlvbl90aW1lX21zGAQgASgFEhsKE21hbnVhbF9tb2RpZmljYXRpb24YBSABKAgilgUKGlJlbW90ZUFnZW50U2V0dXBXaW5kb3dEYXRhElgKBmFjdGlvbhgBIAEoDjJILnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudFNldHVwV2luZG93RGF0YS5SZW1vdGVBZ2VudFNldHVwV2luZG93QWN0aW9uEhEKCXJlcG9faGFzaBgCIAEoCRITCgticmFuY2hfaGFzaBgDIAEoCRIhChloYXNfc2V0dXBfc2NyaXB0X3NlbGVjdGVkGAQgASgIEiIKGmdpdGh1Yl9pbnRlZ3JhdGlvbl9lbmFibGVkGAUgASgIEhsKE251bV9yZXBvc19hdmFpbGFibGUYBiABKA0SOgoOc291cmNlX2NvbnRyb2wYByABKA4yIi5yZXF1ZXN0X2luc2lnaHQuU291cmNlQ29udHJvbFR5cGUi1QIKHFJlbW90ZUFnZW50U2V0dXBXaW5kb3dBY3Rpb24SHwobVU5LTk9XTl9TRVRVUF9XSU5ET1dfQUNUSU9OEAASCAoET1BFThABEgkKBUNMT1NFEAISDwoLU0VMRUNUX1JFUE8QAxIRCg1TRUxFQ1RfQlJBTkNIEAQSFwoTU0VMRUNUX1NFVFVQX1NDUklQVBAFEh4KGkFVVE9fR0VORVJBVEVfU0VUVVBfU0NSSVBUEAYSIAocTUFOVUFMTFlfQ1JFQVRFX1NFVFVQX1NDUklQVBAHEhkKFVRZUEVfSU5fUFJPTVBUX1dJTkRPVxAIEhgKFENMSUNLX1JFV1JJVEVfUFJPTVBUEAkSGAoURU5BQkxFX05PVElGSUNBVElPTlMQChIZChVESVNBQkxFX05PVElGSUNBVElPTlMQCxIWChJDTElDS19DUkVBVEVfQUdFTlQQDCLjAgoZUmVtb3RlQWdlbnRUaHJlYWRMaXN0RGF0YRJWCgZhY3Rpb24YASABKA4yRi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRUaHJlYWRMaXN0RGF0YS5SZW1vdGVBZ2VudFRocmVhZExpc3RBY3Rpb24SGgoSbnVtX2FnZW50c19pbl9saXN0GAIgASgNEjoKDnNvdXJjZV9jb250cm9sGAMgASgOMiIucmVxdWVzdF9pbnNpZ2h0LlNvdXJjZUNvbnRyb2xUeXBlIpUBChtSZW1vdGVBZ2VudFRocmVhZExpc3RBY3Rpb24SHQoZVU5LTk9XTl9BR0VOVF9MSVNUX0FDVElPThAAEggKBE9QRU4QARIJCgVDTE9TRRACEhAKDFNFTEVDVF9BR0VOVBADEhAKDERFTEVURV9BR0VOVBAEEg0KCVBJTl9BR0VOVBAFEg8KC1VOUElOX0FHRU5UEAYifgoaUmVtb3RlQWdlbnRXb3Jrc3BhY2VVcHRpbWUSMAoMdXB0aW1lX3N0YXJ0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cHRpbWVfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJQChxSZW1vdGVBZ2VudHNBZGRTU0hLZXlSZXF1ZXN0EjAKB3JlcXVlc3QYASABKAsyHy5yZW1vdGVfYWdlbnRzLkFkZFNTSEtleVJlcXVlc3QiUwodUmVtb3RlQWdlbnRzQWRkU1NIS2V5UmVzcG9uc2USMgoIcmVzcG9uc2UYASABKAsyIC5yZW1vdGVfYWdlbnRzLkFkZFNTSEtleVJlc3BvbnNlIkYKF1JlbW90ZUFnZW50c0NoYXRSZXF1ZXN0EisKB3JlcXVlc3QYASABKAsyGi5yZW1vdGVfYWdlbnRzLkNoYXRSZXF1ZXN0IkkKGFJlbW90ZUFnZW50c0NoYXRSZXNwb25zZRItCghyZXNwb25zZRgBIAEoCzIbLnJlbW90ZV9hZ2VudHMuQ2hhdFJlc3BvbnNlIk8KGVJlbW90ZUFnZW50c0NyZWF0ZVJlcXVlc3QSMgoHcmVxdWVzdBgBIAEoCzIhLnJlbW90ZV9hZ2VudHMuQ3JlYXRlQWdlbnRSZXF1ZXN0IlIKGlJlbW90ZUFnZW50c0NyZWF0ZVJlc3BvbnNlEjQKCHJlc3BvbnNlGAEgASgLMiIucmVtb3RlX2FnZW50cy5DcmVhdGVBZ2VudFJlc3BvbnNlIk8KGVJlbW90ZUFnZW50c0RlbGV0ZVJlcXVlc3QSMgoHcmVxdWVzdBgBIAEoCzIhLnJlbW90ZV9hZ2VudHMuRGVsZXRlQWdlbnRSZXF1ZXN0IlIKGlJlbW90ZUFnZW50c0RlbGV0ZVJlc3BvbnNlEjQKCHJlc3BvbnNlGAEgASgLMiIucmVtb3RlX2FnZW50cy5EZWxldGVBZ2VudFJlc3BvbnNlIlwKIlJlbW90ZUFnZW50c0dlbmVyYXRlU3VtbWFyeVJlcXVlc3QSNgoHcmVxdWVzdBgBIAEoCzIlLnJlbW90ZV9hZ2VudHMuR2VuZXJhdGVTdW1tYXJ5UmVxdWVzdCJfCiNSZW1vdGVBZ2VudHNHZW5lcmF0ZVN1bW1hcnlSZXNwb25zZRI4CghyZXNwb25zZRgBIAEoCzImLnJlbW90ZV9hZ2VudHMuR2VuZXJhdGVTdW1tYXJ5UmVzcG9uc2UiVQocUmVtb3RlQWdlbnRzSW50ZXJydXB0UmVxdWVzdBI1CgdyZXF1ZXN0GAEgASgLMiQucmVtb3RlX2FnZW50cy5JbnRlcnJ1cHRBZ2VudFJlcXVlc3QiWAodUmVtb3RlQWdlbnRzSW50ZXJydXB0UmVzcG9uc2USNwoIcmVzcG9uc2UYASABKAsyJS5yZW1vdGVfYWdlbnRzLkludGVycnVwdEFnZW50UmVzcG9uc2UiTQoYUmVtb3RlQWdlbnRzUGF1c2VSZXF1ZXN0EjEKB3JlcXVlc3QYASABKAsyIC5yZW1vdGVfYWdlbnRzLlBhdXNlQWdlbnRSZXF1ZXN0IlAKGVJlbW90ZUFnZW50c1BhdXNlUmVzcG9uc2USMwoIcmVzcG9uc2UYASABKAsyIS5yZW1vdGVfYWdlbnRzLlBhdXNlQWdlbnRSZXNwb25zZSJcCiJSZW1vdGVBZ2VudHNSZXN1bWVIaW50QWdlbnRSZXF1ZXN0EjYKB3JlcXVlc3QYASABKAsyJS5yZW1vdGVfYWdlbnRzLlJlc3VtZUhpbnRBZ2VudFJlcXVlc3QiXwojUmVtb3RlQWdlbnRzUmVzdW1lSGludEFnZW50UmVzcG9uc2USOAoIcmVzcG9uc2UYASABKAsyJi5yZW1vdGVfYWdlbnRzLlJlc3VtZUhpbnRBZ2VudFJlc3BvbnNlIk8KGVJlbW90ZUFnZW50c1Jlc3VtZVJlcXVlc3QSMgoHcmVxdWVzdBgBIAEoCzIhLnJlbW90ZV9hZ2VudHMuUmVzdW1lQWdlbnRSZXF1ZXN0IlIKGlJlbW90ZUFnZW50c1Jlc3VtZVJlc3BvbnNlEjQKCHJlc3BvbnNlGAEgASgLMiIucmVtb3RlX2FnZW50cy5SZXN1bWVBZ2VudFJlc3BvbnNlIk8KGVJlbW90ZUFnZW50c1VwZGF0ZVJlcXVlc3QSMgoHcmVxdWVzdBgBIAEoCzIhLnJlbW90ZV9hZ2VudHMuVXBkYXRlQWdlbnRSZXF1ZXN0IlIKGlJlbW90ZUFnZW50c1VwZGF0ZVJlc3BvbnNlEjQKCHJlc3BvbnNlGAEgASgLMiIucmVtb3RlX2FnZW50cy5VcGRhdGVBZ2VudFJlc3BvbnNlImcKDlJlcXVlc3RCbG9ja2VkEi0KDm9wYXF1ZV91c2VyX2lkGAEgASgLMhUuYXV0aF9lbnRpdGllcy5Vc2VySWQSEgoKdXNlcl9lbWFpbBgCIAEoCRISCgpjaGVja190eXBlGAMgASgJIoM+CgxSZXF1ZXN0RXZlbnQSNgoNaW5mZXJfcmVxdWVzdBgCIAEoCzIdLnJlcXVlc3RfaW5zaWdodC5JbmZlclJlcXVlc3RIABJJChdjb21wbGV0aW9uX2hvc3RfcmVxdWVzdBgIIAEoCzImLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uSG9zdFJlcXVlc3RIABJJChdpbmZlcmVuY2VfaG9zdF9yZXNwb25zZRgKIAEoCzImLnJlcXVlc3RfaW5zaWdodC5JbmZlcmVuY2VIb3N0UmVzcG9uc2VIABJLChhjb21wbGV0aW9uX2hvc3RfcmVzcG9uc2UYCSABKAsyJy5yZXF1ZXN0X2luc2lnaHQuQ29tcGxldGlvbkhvc3RSZXNwb25zZUgAEj0KEWFwaV9odHRwX3Jlc3BvbnNlGAcgASgLMiAucmVxdWVzdF9pbnNpZ2h0LkFwaUh0dHBSZXNwb25zZUgAEk0KGWVtYmVkZGluZ3Nfc2VhcmNoX3JlcXVlc3QYCyABKAsyKC5yZXF1ZXN0X2luc2lnaHQuRW1iZWRkaW5nc1NlYXJjaFJlcXVlc3RIABJPChplbWJlZGRpbmdzX3NlYXJjaF9yZXNwb25zZRgMIAEoCzIpLnJlcXVlc3RfaW5zaWdodC5FbWJlZGRpbmdzU2VhcmNoUmVzcG9uc2VIABI6Cg9jb21wbGV0aW9uX2VtaXQYDSABKAsyHy5yZXF1ZXN0X2luc2lnaHQuQ29tcGxldGlvbkVtaXRIABJGChVjb21wbGV0aW9uX3Jlc29sdXRpb24YDiABKAsyJS5yZXF1ZXN0X2luc2lnaHQuQ29tcGxldGlvblJlc29sdXRpb25IABI7ChFlZGl0X2hvc3RfcmVxdWVzdBgPIAEoCzIeLnJlcXVlc3RfaW5zaWdodC5SSUVkaXRSZXF1ZXN0SAASPQoSZWRpdF9ob3N0X3Jlc3BvbnNlGBAgASgLMh8ucmVxdWVzdF9pbnNpZ2h0LlJJRWRpdFJlc3BvbnNlSAASQgoTY29tcGxldGlvbl9mZWVkYmFjaxgRIAEoCzIjLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uRmVlZGJhY2tIABIuCgllZGl0X2VtaXQYEiABKAsyGS5yZXF1ZXN0X2luc2lnaHQuRWRpdEVtaXRIABI6Cg9lZGl0X3Jlc29sdXRpb24YEyABKAsyHy5yZXF1ZXN0X2luc2lnaHQuRWRpdFJlc29sdXRpb25IABI8ChByZXF1ZXN0X21ldGFkYXRhGBQgASgLMiAucmVxdWVzdF9pbnNpZ2h0LlJlcXVlc3RNZXRhZGF0YUgAEkAKEnJldHJpZXZhbF9yZXNwb25zZRgVIAEoCzIiLnJlcXVlc3RfaW5zaWdodC5SZXRyaWV2YWxSZXNwb25zZUgAEjsKEWNoYXRfaG9zdF9yZXF1ZXN0GBYgASgLMh4ucmVxdWVzdF9pbnNpZ2h0LlJJQ2hhdFJlcXVlc3RIABI9ChJjaGF0X2hvc3RfcmVzcG9uc2UYFyABKAsyHy5yZXF1ZXN0X2luc2lnaHQuUklDaGF0UmVzcG9uc2VIABI6Cg9leHRlbnNpb25fZXJyb3IYGCABKAsyHy5yZXF1ZXN0X2luc2lnaHQuRXh0ZW5zaW9uRXJyb3JIABJJChdjb21wbGV0aW9uX3Bvc3RfcHJvY2VzcxgZIAEoCzImLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uUG9zdFByb2Nlc3NIABI+ChFwcmVmZXJlbmNlX3NhbXBsZRgbIAEoCzIhLnJlcXVlc3RfaW5zaWdodC5QcmVmZXJlbmNlU2FtcGxlSAASNgoNY2hhdF9mZWVkYmFjaxgcIAEoCzIdLnJlcXVlc3RfaW5zaWdodC5DaGF0RmVlZGJhY2tIABI+ChFyZXJhbmtlcl9yZXNwb25zZRgdIAEoCzIhLnJlcXVlc3RfaW5zaWdodC5SZXJhbmtlclJlc3BvbnNlSAASTwoaY2xpZW50X2NvbXBsZXRpb25fdGltZWxpbmUYICABKAsyKS5yZXF1ZXN0X2luc2lnaHQuQ2xpZW50Q29tcGxldGlvblRpbWVsaW5lSAASSQoYaW5zdHJ1Y3Rpb25faG9zdF9yZXF1ZXN0GCYgASgLMiUucmVxdWVzdF9pbnNpZ2h0LlJJSW5zdHJ1Y3Rpb25SZXF1ZXN0SAASSwoZaW5zdHJ1Y3Rpb25faG9zdF9yZXNwb25zZRgnIAEoCzImLnJlcXVlc3RfaW5zaWdodC5SSUluc3RydWN0aW9uUmVzcG9uc2VIABI+ChBzbGFja2JvdF9yZXF1ZXN0GCggASgLMiIucmVxdWVzdF9pbnNpZ2h0LlJJU2xhY2tib3RSZXF1ZXN0SAASQAoRc2xhY2tib3RfcmVzcG9uc2UYKSABKAsyIy5yZXF1ZXN0X2luc2lnaHQuUklTbGFja2JvdFJlc3BvbnNlSAASNgoMZ2l0aHViX2V2ZW50GCogASgLMh4ucmVxdWVzdF9pbnNpZ2h0LlJJR2l0aHViRXZlbnRIABJNChhnaXRodWJfcHJvY2Vzc2luZ19yZXN1bHQYKyABKAsyKS5yZXF1ZXN0X2luc2lnaHQuUklHaXRodWJQcm9jZXNzaW5nUmVzdWx0SAASSgoXc2hhcmVfc2F2ZV9jaGF0X3JlcXVlc3QYLCABKAsyJy5yZXF1ZXN0X2luc2lnaHQuUklTaGFyZVNhdmVDaGF0UmVxdWVzdEgAEkwKGHNoYXJlX3NhdmVfY2hhdF9yZXNwb25zZRgtIAEoCzIoLnJlcXVlc3RfaW5zaWdodC5SSVNoYXJlU2F2ZUNoYXRSZXNwb25zZUgAEkgKFnNoYXJlX2dldF9jaGF0X3JlcXVlc3QYLiABKAsyJi5yZXF1ZXN0X2luc2lnaHQuUklTaGFyZUdldENoYXRSZXF1ZXN0SAASSgoXc2hhcmVfZ2V0X2NoYXRfcmVzcG9uc2UYLyABKAsyJy5yZXF1ZXN0X2luc2lnaHQuUklTaGFyZUdldENoYXRSZXNwb25zZUgAElAKG3NtYXJ0X3Bhc3RlX2NsaWVudF90aW1lbGluZRgwIAEoCzIpLnJlcXVlc3RfaW5zaWdodC5TbWFydFBhc3RlQ2xpZW50VGltZWxpbmVIABJHChZzbWFydF9wYXN0ZV9yZXNvbHV0aW9uGDEgASgLMiUucmVxdWVzdF9pbnNpZ2h0LlNtYXJ0UGFzdGVSZXNvbHV0aW9uSAASVgodZ2l0aHViX2FwcF9pbnN0YWxsYXRpb25fZXZlbnQYMiABKAsyLS5yZXF1ZXN0X2luc2lnaHQuUklHaXRodWJBcHBJbnN0YWxsYXRpb25FdmVudEgAElMKG3NsYWNrYm90X2luc3RhbGxhdGlvbl9ldmVudBgzIAEoCzIsLnJlcXVlc3RfaW5zaWdodC5SSVNsYWNrYm90SW5zdGFsbGF0aW9uRXZlbnRIABJIChZpbnN0cnVjdGlvbl9yZXNvbHV0aW9uGDQgASgLMiYucmVxdWVzdF9pbnNpZ2h0Lkluc3RydWN0aW9uUmVzb2x1dGlvbkgAEjwKEGluc3RydWN0aW9uX2VtaXQYNSABKAsyIC5yZXF1ZXN0X2luc2lnaHQuSW5zdHJ1Y3Rpb25FbWl0SAASPgoRc2xhY2tib3RfZmVlZGJhY2sYNiABKAsyIS5yZXF1ZXN0X2luc2lnaHQuU2xhY2tib3RGZWVkYmFja0gAEjgKDWdsZWFuX3JlcXVlc3QYOyABKAsyHy5yZXF1ZXN0X2luc2lnaHQuUklHbGVhblJlcXVlc3RIABI6Cg5nbGVhbl9yZXNwb25zZRg8IAEoCzIgLnJlcXVlc3RfaW5zaWdodC5SSUdsZWFuUmVzcG9uc2VIABJKChdnbGVhbl9vYXV0aF91cmxfcmVxdWVzdBg9IAEoCzInLnJlcXVlc3RfaW5zaWdodC5SSUdsZWFuT0F1dGhVUkxSZXF1ZXN0SAASTAoYZ2xlYW5fb2F1dGhfdXJsX3Jlc3BvbnNlGD4gASgLMigucmVxdWVzdF9pbnNpZ2h0LlJJR2xlYW5PQXV0aFVSTFJlc3BvbnNlSAASTAoYcmVtb3RlX3Rvb2xfY2FsbF9yZXF1ZXN0GEEgASgLMigucmVxdWVzdF9pbnNpZ2h0LlJJUmVtb3RlVG9vbENhbGxSZXF1ZXN0SAASTgoZcmVtb3RlX3Rvb2xfY2FsbF9yZXNwb25zZRhCIAEoCzIpLnJlcXVlc3RfaW5zaWdodC5SSVJlbW90ZVRvb2xDYWxsUmVzcG9uc2VIABI7ChBzdWJfYWdlbnRfZGlhbG9nGEMgASgLMh8ucmVxdWVzdF9pbnNpZ2h0LlN1YkFnZW50RGlhbG9nSAASPwoScHJvbXB0X2NhY2hlX3VzYWdlGEQgASgLMiEucmVxdWVzdF9pbnNpZ2h0LlByb21wdENhY2hlVXNhZ2VIABI1Cg10b29sX3VzZV9kYXRhGEUgASgLMhwucmVxdWVzdF9pbnNpZ2h0LlRvb2xVc2VEYXRhSAASOgoPcm91dGVyX3Jlc3BvbnNlGEYgASgLMh8ucmVxdWVzdF9pbnNpZ2h0LlJvdXRlclJlc3BvbnNlSAASRAoUcG9zdHByb2Nlc3NfcmVzcG9uc2UYRyABKAsyJC5yZXF1ZXN0X2luc2lnaHQuUG9zdHByb2Nlc3NSZXNwb25zZUgAEkEKE2FnZW50X3JlcXVlc3RfZXZlbnQYSCABKAsyIi5yZXF1ZXN0X2luc2lnaHQuQWdlbnRSZXF1ZXN0RXZlbnRIABI4Cg5hZ2VudF9mZWVkYmFjaxhJIAEoCzIeLnJlcXVlc3RfaW5zaWdodC5BZ2VudEZlZWRiYWNrSAASOgoPcmVxdWVzdF9ibG9ja2VkGEogASgLMh8ucmVxdWVzdF9pbnNpZ2h0LlJlcXVlc3RCbG9ja2VkSAASQAoScmVxdWVzdF9zdXNwaWNpb3VzGEsgASgLMiIucmVxdWVzdF9pbnNpZ2h0LlJlcXVlc3RTdXNwaWNpb3VzSAASQwoUdG9rZW5fZXhjaGFuZ2VfZXJyb3IYTCABKAsyIy5yZXF1ZXN0X2luc2lnaHQuVG9rZW5FeGNoYW5nZUVycm9ySAASNgoMZmluZF9taXNzaW5nGE0gASgLMh4ucmVxdWVzdF9pbnNpZ2h0LlJJRmluZE1pc3NpbmdIABI2CgxiYXRjaF91cGxvYWQYTiABKAsyHi5yZXF1ZXN0X2luc2lnaHQuUklCYXRjaFVwbG9hZEgAElIKHHJlbW90ZV9hZ2VudHNfY3JlYXRlX3JlcXVlc3QYTyABKAsyKi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzQ3JlYXRlUmVxdWVzdEgAElQKHXJlbW90ZV9hZ2VudHNfY3JlYXRlX3Jlc3BvbnNlGFAgASgLMisucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50c0NyZWF0ZVJlc3BvbnNlSAASTgoacmVtb3RlX2FnZW50c19jaGF0X3JlcXVlc3QYUSABKAsyKC5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzQ2hhdFJlcXVlc3RIABJQChtyZW1vdGVfYWdlbnRzX2NoYXRfcmVzcG9uc2UYUiABKAsyKS5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzQ2hhdFJlc3BvbnNlSAASWAofcmVtb3RlX2FnZW50c19pbnRlcnJ1cHRfcmVxdWVzdBhTIAEoCzItLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNJbnRlcnJ1cHRSZXF1ZXN0SAASWgogcmVtb3RlX2FnZW50c19pbnRlcnJ1cHRfcmVzcG9uc2UYVCABKAsyLi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzSW50ZXJydXB0UmVzcG9uc2VIABJSChxyZW1vdGVfYWdlbnRzX2RlbGV0ZV9yZXF1ZXN0GFUgASgLMioucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50c0RlbGV0ZVJlcXVlc3RIABJUCh1yZW1vdGVfYWdlbnRzX2RlbGV0ZV9yZXNwb25zZRhWIAEoCzIrLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNEZWxldGVSZXNwb25zZUgAEloKIXJlbW90ZV9hZ2VudHNfYWRkX3NzaF9rZXlfcmVxdWVzdBhXIAEoCzItLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNBZGRTU0hLZXlSZXF1ZXN0SAASXAoicmVtb3RlX2FnZW50c19hZGRfc3NoX2tleV9yZXNwb25zZRhYIAEoCzIuLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNBZGRTU0hLZXlSZXNwb25zZUgAElIKHGRhaWx5X3JlcXVlc3RfbGltaXRfZXhjZWVkZWQYWSABKAsyKi5yZXF1ZXN0X2luc2lnaHQuRGFpbHlSZXF1ZXN0TGltaXRFeGNlZWRlZEgAEj0KEWNoYXRfdXNlcl9tZXNzYWdlGFogASgLMiAucmVxdWVzdF9pbnNpZ2h0LkNoYXRVc2VyTWVzc2FnZUgAEkgKFnBhcmVudGhlc2lzX3RydW5jYXRpb24YWyABKAsyJi5yZXF1ZXN0X2luc2lnaHQuUGFyZW50aGVzaXNUcnVuY2F0aW9uSAASRQoVcmVtb3RlX2FnZW50X2ZlZWRiYWNrGFwgASgLMiQucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50RmVlZGJhY2tIABJQChtyZW1vdGVfYWdlbnRzX3BhdXNlX3JlcXVlc3QYXSABKAsyKS5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzUGF1c2VSZXF1ZXN0SAASUgoccmVtb3RlX2FnZW50c19wYXVzZV9yZXNwb25zZRheIAEoCzIqLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNQYXVzZVJlc3BvbnNlSAASUgoccmVtb3RlX2FnZW50c19yZXN1bWVfcmVxdWVzdBhfIAEoCzIqLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNSZXN1bWVSZXF1ZXN0SAASVAodcmVtb3RlX2FnZW50c19yZXN1bWVfcmVzcG9uc2UYYCABKAsyKy5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzUmVzdW1lUmVzcG9uc2VIABI5Cg5tb2RlbF9hcGlfY2FsbBhhIAEoCzIfLnJlcXVlc3RfaW5zaWdodC5SSU1vZGVsQVBJQ2FsbEgAEmYKJ3JlbW90ZV9hZ2VudHNfcmVzdW1lX2hpbnRfYWdlbnRfcmVxdWVzdBhiIAEoCzIzLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNSZXN1bWVIaW50QWdlbnRSZXF1ZXN0SAASaAoocmVtb3RlX2FnZW50c19yZXN1bWVfaGludF9hZ2VudF9yZXNwb25zZRhjIAEoCzI0LnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNSZXN1bWVIaW50QWdlbnRSZXNwb25zZUgAElIKHHJlbW90ZV9hZ2VudHNfdXBkYXRlX3JlcXVlc3QYZCABKAsyKi5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzVXBkYXRlUmVxdWVzdEgAElQKHXJlbW90ZV9hZ2VudHNfdXBkYXRlX3Jlc3BvbnNlGGUgASgLMisucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50c1VwZGF0ZVJlc3BvbnNlSAASZQomcmVtb3RlX2FnZW50c19nZW5lcmF0ZV9zdW1tYXJ5X3JlcXVlc3QYZiABKAsyMy5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRzR2VuZXJhdGVTdW1tYXJ5UmVxdWVzdEgAEmcKJ3JlbW90ZV9hZ2VudHNfZ2VuZXJhdGVfc3VtbWFyeV9yZXNwb25zZRhnIAEoCzI0LnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudHNHZW5lcmF0ZVN1bW1hcnlSZXNwb25zZUgAEj4KEW1lbW9yaWVzX2ZlZWRiYWNrGGggASgLMiEucmVxdWVzdF9pbnNpZ2h0Lk1lbW9yaWVzRmVlZGJhY2tIABI/ChJjbGlfYWdlbnRfZmVlZGJhY2sYaSABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQ2xpQWdlbnRGZWVkYmFja0gAEkoKGGFwaV9odHRwX3JlcXVlc3RfZGV0YWlscxhqIAEoCzImLnJlcXVlc3RfaW5zaWdodC5BcGlIdHRwUmVxdWVzdERldGFpbHNIABJZCiByZXZpZXdfYm90X3B1bGxfcmVxdWVzdF9yZXZpZXdlZBhrIAEoCzItLnJlcXVlc3RfaW5zaWdodC5SZXZpZXdCb3RQdWxsUmVxdWVzdFJldmlld2VkSAASTAoZcmV2aWV3X2JvdF9lbW9qaV9yZWFjdGlvbhhsIAEoCzInLnJlcXVlc3RfaW5zaWdodC5SZXZpZXdCb3RFbW9qaVJlYWN0aW9uSAASQwoTY2hhdF9tZXRlcmluZ19ldmVudBhtIAEoCzIkLnJlcXVlc3RfaW5zaWdodC5SSUNoYXRNZXRlcmluZ0V2ZW50SAASTAoZcmV2aWV3X2JvdF9hdXRvbWF0ZWRfZXZhbBhuIAEoCzInLnJlcXVlc3RfaW5zaWdodC5SZXZpZXdCb3RBdXRvbWF0ZWRFdmFsSAASSgoYcmV2aWV3X2JvdF9wb3N0ZWRfcmV2aWV3GG8gASgLMiYucmVxdWVzdF9pbnNpZ2h0LlJldmlld0JvdFBvc3RlZFJldmlld0gAEkwKGXJldmlld19ib3RfcG9zdGVkX2NvbW1lbnQYcCABKAsyJy5yZXF1ZXN0X2luc2lnaHQuUmV2aWV3Qm90UG9zdGVkQ29tbWVudEgAEk4KGmNoYXRfaW5wdXRfY29tcGxldGlvbl9lbWl0GHEgASgLMigucmVxdWVzdF9pbnNpZ2h0LkNoYXRJbnB1dENvbXBsZXRpb25FbWl0SAASWgogY2hhdF9pbnB1dF9jb21wbGV0aW9uX3Jlc29sdXRpb24YciABKAsyLi5yZXF1ZXN0X2luc2lnaHQuQ2hhdElucHV0Q29tcGxldGlvblJlc29sdXRpb25IABJOChpyZXZpZXdfYm90X3JlcG9zX2Nvbm5lY3RlZBhzIAEoCzIoLnJlcXVlc3RfaW5zaWdodC5SZXZpZXdCb3RSZXBvc0Nvbm5lY3RlZEgAEmsKKGFnZW50aWNfc2xhY2tib3RfcmVhY3Rpb25fcmVjZWl2ZWRfZXZlbnQYdCABKAsyNy5yZXF1ZXN0X2luc2lnaHQuUklBZ2VudGljU2xhY2tib3RSZWFjdGlvblJlY2VpdmVkRXZlbnRIABJOChpyZXZpZXdfYm90X2FnZW50X2NvbXBsZXRlZBh2IAEoCzIoLnJlcXVlc3RfaW5zaWdodC5SZXZpZXdCb3RBZ2VudENvbXBsZXRlZEgAElMKGmdpdGh1Yl9wdWxsX3JlcXVlc3RfbWVyZ2VkGHcgASgLMi0ucmVxdWVzdF9pbnNpZ2h0LkdpdGh1YlB1bGxSZXF1ZXN0TWVyZ2VkRXZlbnRIABJJChdidXRsZXJfcm91dGluZ19yZXNwb25zZRh4IAEoCzImLnJlcXVlc3RfaW5zaWdodC5CdXRsZXJSb3V0aW5nUmVzcG9uc2VIABI6Cg9jb3Ntb3NfZmVlZGJhY2sYeSABKAsyHy5yZXF1ZXN0X2luc2lnaHQuQ29zbW9zRmVlZGJhY2tIABJZCh5pbnRlZ3JhdGlvbl9pbnN0YWxsYXRpb25fZXZlbnQYeiABKAsyLy5yZXF1ZXN0X2luc2lnaHQuUklJbnRlZ3JhdGlvbkluc3RhbGxhdGlvbkV2ZW50SAASKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoIZXZlbnRfaWQYJSABKAlIAYgBAUIHCgVldmVudEILCglfZXZlbnRfaWRKBAgDEARKBAgEEAVKBAgFEAZKBAg3EDhKBAg4EDlKBAg5EDpKBAg6EDtKBAg/EEBKBAhAEEFKBAgaEBtKBAgeEB9KBAgfECBKBAghECJKBAgiECNKBAgjECRKBAgkECVKBAh1EHZSFGxsbV9nZW5lcmF0ZV9yZXF1ZXN0UhVsbG1fZ2VuZXJhdGVfcmVzcG9uc2VSFm5leHRfZWRpdF9ob3N0X3JlcXVlc3RSF25leHRfZWRpdF9ob3N0X3Jlc3BvbnNlUhJuZXh0X2VkaXRfZmVlZGJhY2tSFG5leHRfZWRpdF9yZXNvbHV0aW9uUg5uZXh0X2VkaXRfZW1pdCLEAgoPUmVxdWVzdE1ldGFkYXRhEjIKDHJlcXVlc3RfdHlwZRgBIAEoDjIcLnJlcXVlc3RfaW5zaWdodC5SZXF1ZXN0VHlwZRISCgpzZXNzaW9uX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSEgoKdXNlcl9hZ2VudBgEIAEoCRItCg5vcGFxdWVfdXNlcl9pZBgFIAEoCzIVLmF1dGhfZW50aXRpZXMuVXNlcklkEhcKCnVzZXJfZW1haWwYBiABKAlIAIgBARIRCglzb3VyY2VfaXAYByABKAkSKAoIYm90X3R5cGUYCCABKA4yFi5hdXRoX2VudGl0aWVzLkJvdFR5cGUSHAoPY29udmVyc2F0aW9uX2lkGAkgASgJSAGIAQFCDQoLX3VzZXJfZW1haWxCEgoQX2NvbnZlcnNhdGlvbl9pZCJqChFSZXF1ZXN0U3VzcGljaW91cxItCg5vcGFxdWVfdXNlcl9pZBgBIAEoCzIVLmF1dGhfZW50aXRpZXMuVXNlcklkEhIKCnVzZXJfZW1haWwYAiABKAkSEgoKY2hlY2tfdHlwZRgDIAEoCSK0AQoNUmVyYW5rZXJDaHVuaxIMCgR0ZXh0GAEgASgJEgwKBHBhdGgYAiABKAkSEwoLY2hhcl9vZmZzZXQYAyABKAUSEAoIY2hhcl9lbmQYBCABKAUSEQoJYmxvYl9uYW1lGAUgASgJEhMKC2NodW5rX2luZGV4GAYgASgFEg4KBm9yaWdpbhgHIAEoCRINCgVzY29yZRgIIAEoAhIZChFzaG9ydF9kZXNjcmlwdGlvbhgJIAEoCSKKAQoQUmVyYW5rZXJSZXNwb25zZRI3Cg9yZXJhbmtlZF9jaHVua3MYASADKAsyHi5yZXF1ZXN0X2luc2lnaHQuUmVyYW5rZXJDaHVuaxI3ChByZXJhbmtlcl9wcm9tcHRzGAMgAygLMh0ucmVxdWVzdF9pbnNpZ2h0LlRva2VuaXphdGlvbkoECAIQAyLiAQoOUmV0cmlldmFsQ2h1bmsSDAoEdGV4dBgFIAEoCRIMCgRwYXRoGAYgASgJEhMKC2NoYXJfb2Zmc2V0GAQgASgFEhAKCGNoYXJfZW5kGAcgASgFEhEKCWJsb2JfbmFtZRgCIAEoCRITCgtjaHVua19pbmRleBgDIAEoBRIOCgZvcmlnaW4YCCABKAkSDQoFc2NvcmUYCSABKAISMgoJdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgwKCl90aW1lc3RhbXBKBAgBEAIiwQEKEVJldHJpZXZhbFJlc3BvbnNlEjYKDnJldHJpZXZhbF90eXBlGAEgASgOMh4ucmVxdWVzdF9pbnNpZ2h0LlJldHJpZXZhbFR5cGUSOQoQcmV0cmlldmVkX2NodW5rcxgDIAMoCzIfLnJlcXVlc3RfaW5zaWdodC5SZXRyaWV2YWxDaHVuaxIzCgxxdWVyeV9wcm9tcHQYBCABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uSgQIAhADItsHChFSZXRyaWV2YWxUb29sRGF0YRIWCg5yZXRyaWV2YWxfbW9kZRgBIAEoCRIYChB0b3RhbF9lbGFwc2VkX21zGAIgASgFEhsKE2FwaV9jYWxsX2VsYXBzZWRfbXMYAyABKAUSGQoRcmVyYW5rX2VsYXBzZWRfbXMYBCABKAUSGQoRZW5yaWNoX2VsYXBzZWRfbXMYBSABKAUSJQodY29kZWJhc2VfcmV0cmlldmFsX2VsYXBzZWRfbXMYBiABKAUSKQohY29udmVyc2F0aW9uX3JldHJpZXZhbF9lbGFwc2VkX21zGAcgASgFEikKIWNvbnZlcnNhdGlvbl9pbml0aWFsX3JldHJpZXZhbF9tcxgIIAEoBRInCh9jb252ZXJzYXRpb25fcXVlcnlfcmV3cml0aW5nX21zGAkgASgFEioKImNvbnZlcnNhdGlvbl9mb2xsb3d1cF9yZXRyaWV2YWxfbXMYCiABKAUSGwoTYmxvYl9uYW1lX2xvb2t1cF9tcxgLIAEoBRIhChljb2RlYmFzZV9jaHVua3NfcmV0cmlldmVkGAwgASgFEiMKG2NvbnZlcnNhdGlvbl9jaHVua3NfaW5pdGlhbBgNIAEoBRImCh5jb252ZXJzYXRpb25fcXVlcmllc19nZW5lcmF0ZWQYDiABKAUSJAocY29udmVyc2F0aW9uX2NodW5rc19mb2xsb3d1cBgPIAEoBRIkChxjb252ZXJzYXRpb25fY2h1bmtzX2NvbWJpbmVkGBAgASgFEigKIGNvbnZlcnNhdGlvbl9jaHVua3NfYWZ0ZXJfcmVyYW5rGBEgASgFEioKImNvZGViYXNlX3Jlc3VsdF9sZW5fcHJlX3RydW5jYXRpb24YEiABKAUSGwoTY29kZWJhc2VfcmVzdWx0X2xlbhgTIAEoBRIuCiZjb252ZXJzYXRpb25fcmVzdWx0X2xlbl9wcmVfdHJ1bmNhdGlvbhgUIAEoBRIfChdjb252ZXJzYXRpb25fcmVzdWx0X2xlbhgVIAEoBRIbChNjb21iaW5lZF9yZXN1bHRfbGVuGBYgASgFEhQKDHRvdGFsX2J1ZGdldBgXIAEoBRIXCg9jb2RlYmFzZV9idWRnZXQYGCABKAUSGwoTY29udmVyc2F0aW9uX2J1ZGdldBgZIAEoBRIaChJjb2RlYmFzZV90cnVuY2F0ZWQYGiABKAgSHgoWY29udmVyc2F0aW9uX3RydW5jYXRlZBgbIAEoCBIXCg9maW5hbF90cnVuY2F0ZWQYHCABKAgSFAoMaXNfc3ViX2FnZW50GB0gASgIIqkBChdSZXZpZXdCb3RBZ2VudENvbXBsZXRlZBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSEgoKcmVwb19vd25lchgCIAEoCRIRCglyZXBvX25hbWUYAyABKAkSEQoJcHJfbnVtYmVyGAQgASgNEg8KB291dGNvbWUYBSABKAkSDwoHYXR0ZW1wdBgGIAEoBRIZChFyZXZpZXdfcmVxdWVzdF9pZBgHIAEoCSKxAgoWUmV2aWV3Qm90QXV0b21hdGVkRXZhbBIUCgxyZXBvX25vZGVfaWQYASABKAkSEQoJcHJfbnVtYmVyGAIgASgNEhcKD3JlbW90ZV9hZ2VudF9pZBgDIAEoCRIRCglhZGRyZXNzZWQYBCABKAgSEgoKY29tbWVudF9pZBgFIAEoCRIYChBwcmltYXJ5X2NhdGVnb3J5GAYgASgJEhMKC3N1YmNhdGVnb3J5GAcgASgJEhsKE2F1Z21lbnRfYm90X2NvbW1lbnQYCCABKAgSHQoVY3VzdG9tX2d1aWRlbGluZV9hcmVhGAkgASgJEhsKE2N1c3RvbV9ndWlkZWxpbmVfaWQYCiABKAkSFwoKYWN0aW9uYWJsZRgLIAEoCEgAiAEBQg0KC19hY3Rpb25hYmxlIm8KFlJldmlld0JvdEVtb2ppUmVhY3Rpb24SFAoMcmVwb19ub2RlX2lkGAEgASgJEhEKCXByX251bWJlchgCIAEoDRIdChVjb21tZW50X2Rpc2N1c3Npb25faWQYAyABKA0SDQoFZW1vamkYBCABKAkiewoWUmV2aWV3Qm90UG9zdGVkQ29tbWVudBIRCglyZXZpZXdfaWQYASABKAkSEgoKY29tbWVudF9pZBgCIAEoCRIRCglwcl9udW1iZXIYAyABKA0SEAoIc2V2ZXJpdHkYBCABKAkSFQoNZnBfbGlrZWxpaG9vZBgFIAEoAiJAChVSZXZpZXdCb3RQb3N0ZWRSZXZpZXcSFAoMbnVtX2NvbW1lbnRzGAEgASgNEhEKCXJldmlld19pZBgCIAEoCSKPCQocUmV2aWV3Qm90UHVsbFJlcXVlc3RSZXZpZXdlZBIUCgxyZXBvX25vZGVfaWQYASABKAkSEQoJcHJfbnVtYmVyGAIgASgNEg8KB3RyaWdnZXIYAyABKAkSFwoPcmVtb3RlX2FnZW50X2lkGAQgASgJEhIKCnJlcG9fb3duZXIYBSABKAkSEQoJcmVwb19uYW1lGAYgASgJEhsKE2F1dGhvcl9naXRodWJfbG9naW4YByABKAkSGwoTYXV0aG9yX2dpdGh1Yl9lbWFpbBgIIAEoCRIdChVhdXRob3JfZ2l0aHViX25vZGVfaWQYCSABKAkSKAobY29tbWVudF9hdXRob3JfZ2l0aHViX2xvZ2luGAogASgJSACIAQESKAobY29tbWVudF9hdXRob3JfZ2l0aHViX2VtYWlsGAsgASgJSAGIAQESKgodY29tbWVudF9hdXRob3JfZ2l0aHViX25vZGVfaWQYDCABKAlIAogBARIYCgtsaW5lc19hZGRlZBgNIAEoDUgDiAEBEhoKDWxpbmVzX3JlbW92ZWQYDiABKA1IBIgBARISCgptb2RlbF9uYW1lGA8gASgJEh0KEGVzdGltYXRlZF90b2tlbnMYECABKA1IBYgBARIYChB1c2VkX2xhcmdlX21vZGVsGBEgASgIEh4KEWRpZmZfcGF0Y2hfbGVuZ3RoGBIgASgDSAaIAQESJQoYY3VzdG9tX2d1aWRlbGluZXNfbGVuZ3RoGBMgASgDSAeIAQESIwoWd29ya3NwYWNlX3J1bGVzX2xlbmd0aBgUIAEoA0gIiAEBEiQKF3dvcmtzcGFjZV9ydWxlc19lbmFibGVkGBUgASgISAmIAQESHgoRcnVsZV9maWxlc19sb2FkZWQYFiABKAVICogBARIlChhleGlzdGluZ19jb21tZW50c19sZW5ndGgYFyABKANIC4gBARIbCg5wcl9ib2R5X2xlbmd0aBgYIAEoA0gMiAEBEiAKE2NoYW5nZWRfZmlsZXNfY291bnQYGSABKAVIDYgBARIUCgdvdXRjb21lGBogASgJSA6IAQFCHgocX2NvbW1lbnRfYXV0aG9yX2dpdGh1Yl9sb2dpbkIeChxfY29tbWVudF9hdXRob3JfZ2l0aHViX2VtYWlsQiAKHl9jb21tZW50X2F1dGhvcl9naXRodWJfbm9kZV9pZEIOCgxfbGluZXNfYWRkZWRCEAoOX2xpbmVzX3JlbW92ZWRCEwoRX2VzdGltYXRlZF90b2tlbnNCFAoSX2RpZmZfcGF0Y2hfbGVuZ3RoQhsKGV9jdXN0b21fZ3VpZGVsaW5lc19sZW5ndGhCGQoXX3dvcmtzcGFjZV9ydWxlc19sZW5ndGhCGgoYX3dvcmtzcGFjZV9ydWxlc19lbmFibGVkQhQKEl9ydWxlX2ZpbGVzX2xvYWRlZEIbChlfZXhpc3RpbmdfY29tbWVudHNfbGVuZ3RoQhEKD19wcl9ib2R5X2xlbmd0aEIWChRfY2hhbmdlZF9maWxlc19jb3VudEIKCghfb3V0Y29tZSKaAQoXUmV2aWV3Qm90UmVwb3NDb25uZWN0ZWQSEwoLdG90YWxfY291bnQYASABKA0SJQodYXV0b19yZXZpZXdfb25fcHJfcmVhZHlfY291bnQYAiABKA0SKwojbWFudWFsX3dpdGhfY29tbWVudF9rZXlwaHJhc2VfY291bnQYAyABKA0SFgoOZGlzYWJsZWRfY291bnQYBCABKA0ingIKDlJvdXRlclJlc3BvbnNlEjQKDXByb21wdF90b2tlbnMYASABKAsyHS5yZXF1ZXN0X2luc2lnaHQuVG9rZW5pemF0aW9uEjsKD3Jlc3BvbnNlX3Rva2VucxgCIAEoCzIdLnJlcXVlc3RfaW5zaWdodC5Ub2tlbml6YXRpb25IAIgBARJDCg9wYXJzZWRfcmVzcG9uc2UYAyABKAsyJS5yZXF1ZXN0X2luc2lnaHQuUGFyc2VkUm91dGVyUmVzcG9uc2VIAYgBARIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSAKIAQFCEgoQX3Jlc3BvbnNlX3Rva2Vuc0ISChBfcGFyc2VkX3Jlc3BvbnNlQhAKDl9lcnJvcl9tZXNzYWdlItEBChFSdWxlc0ltcG9ydGVkRGF0YRI1CgR0eXBlGAEgASgOMicucmVxdWVzdF9pbnNpZ2h0LlJ1bGVzSW1wb3J0ZWREYXRhLlR5cGUSEQoJbnVtX2ZpbGVzGAIgASgNEg4KBnNvdXJjZRgDIAEoCSJiCgRUeXBlEg8KC1VOU1BFQ0lGSUVEEAASFAoQTUFOVUFMTFlfQ1JFQVRFRBABEggKBEFVVE8QAhIWChJTRUxFQ1RFRF9ESVJFQ1RPUlkQAxIRCg1TRUxFQ1RFRF9GSUxFEAQirAEKElNTSEludGVyYWN0aW9uRGF0YRJNChBpbnRlcmFjdGlvbl90eXBlGAEgASgOMjMucmVxdWVzdF9pbnNpZ2h0LlNTSEludGVyYWN0aW9uRGF0YS5JbnRlcmFjdGlvblR5cGUiRwoPSW50ZXJhY3Rpb25UeXBlEgsKB1VOS05PV04QABILCgdDTElDS0VEEAESGgoWUkVNT1RFX1NFU1NJT05fU1RBUlRFRBACIk8KFlNjcmlwdENhcHR1cmVCYXNpY0RhdGESEgoKc2hlbGxfbmFtZRgBIAEoCRIQCghwbGF0Zm9ybRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJIv8OCgxTZXNzaW9uRXZlbnQSSwoYb25ib2FyZGluZ19zZXNzaW9uX2V2ZW50GAQgASgLMicucmVxdWVzdF9pbnNpZ2h0Lk9uYm9hcmRpbmdTZXNzaW9uRXZlbnRIABI2Cg1jbGllbnRfbWV0cmljGAUgASgLMh0ucmVxdWVzdF9pbnNpZ2h0LkNsaWVudE1ldHJpY0gAEkkKF2V4dGVuc2lvbl9zZXNzaW9uX2V2ZW50GAogASgLMiYucmVxdWVzdF9pbnNpZ2h0LkV4dGVuc2lvblNlc3Npb25FdmVudEgAEkwKGWN1c3RvbWVyX3VpX3Nlc3Npb25fZXZlbnQYCyABKAsyJy5yZXF1ZXN0X2luc2lnaHQuQ3VzdG9tZXJVSVNlc3Npb25FdmVudEgAEkEKE2FnZW50X3Nlc3Npb25fZXZlbnQYDCABKAsyIi5yZXF1ZXN0X2luc2lnaHQuQWdlbnRTZXNzaW9uRXZlbnRIABJSChxjb250ZW50X21hbmFnZXJfdXBsb2FkX2Jsb2JzGA0gASgLMioucmVxdWVzdF9pbnNpZ2h0LkNvbnRlbnRNYW5hZ2VyVXBsb2FkQmxvYnNIABJaCiBjb250ZW50X21hbmFnZXJfY2hlY2twb2ludF9ibG9icxgOIAEoCzIuLnJlcXVlc3RfaW5zaWdodC5Db250ZW50TWFuYWdlckNoZWNrcG9pbnRCbG9ic0gAEk4KGnJlbW90ZV9hZ2VudF9zZXNzaW9uX2V2ZW50GA8gASgLMigucmVxdWVzdF9pbnNpZ2h0LlJlbW90ZUFnZW50U2Vzc2lvbkV2ZW50SAASPAoQcHVyY2hhc2VfY3JlZGl0cxgQIAEoCzIgLnJlcXVlc3RfaW5zaWdodC5QdXJjaGFzZUNyZWRpdHNIABJCChNjYW5jZWxfc3Vic2NyaXB0aW9uGBEgASgLMiMucmVxdWVzdF9pbnNpZ2h0LkNhbmNlbFN1YnNjcmlwdGlvbkgAEnIKLHVuc2NoZWR1bGVfcGVuZGluZ19zdWJzY3JpcHRpb25fY2FuY2VsbGF0aW9uGBIgASgLMjoucmVxdWVzdF9pbnNpZ2h0LlVuc2NoZWR1bGVQZW5kaW5nU3Vic2NyaXB0aW9uQ2FuY2VsbGF0aW9uSAASOwoQcmVtb3RlX2FnZW50X2xvZxgTIAEoCzIfLnJlcXVlc3RfaW5zaWdodC5SZW1vdGVBZ2VudExvZ0gAEkkKF3Vuc2NoZWR1bGVfcGxhbl9jaGFuZ2VzGBUgASgLMiYucmVxdWVzdF9pbnNpZ2h0LlVuc2NoZWR1bGVQbGFuQ2hhbmdlc0gAEkUKFWdpdGh1Yl91c2VyX2F1dGhvcml6ZRgWIAEoCzIkLnJlcXVlc3RfaW5zaWdodC5HaXRodWJVc2VyQXV0aG9yaXplSAASVAodcmVtb3RlX2FnZW50X3dvcmtzcGFjZV91cHRpbWUYFyABKAsyKy5yZXF1ZXN0X2luc2lnaHQuUmVtb3RlQWdlbnRXb3Jrc3BhY2VVcHRpbWVIABJIChd1c2VyX2dpdGh1Yl9vcmdfbWFwcGluZxgYIAEoCzIlLnJlcXVlc3RfaW5zaWdodC5Vc2VyR2l0aHViT3JnTWFwcGluZ0gAEkAKE2F1dG9fdG9wX3VwX3NldHRpbmcYGSABKAsyIS5yZXF1ZXN0X2luc2lnaHQuQXV0b1RvcFVwU2V0dGluZ0gAEkMKFGNvbW1pdF9zZXNzaW9uX2V2ZW50GBogASgLMiMucmVxdWVzdF9pbnNpZ2h0LkNvbW1pdFNlc3Npb25FdmVudEgAEk8KGmNvbW1pdF9hdHRyaWJ1dGlvbl9zdW1tYXJ5GBsgASgLMikucmVxdWVzdF9pbnNpZ2h0LkNvbW1pdEF0dHJpYnV0aW9uU3VtbWFyeUgAEkAKEmNsb3NlX3N1YnNjcmlwdGlvbhgcIAEoCzIiLnJlcXVlc3RfaW5zaWdodC5DbG9zZVN1YnNjcmlwdGlvbkgAEjMKCXRleHRfZWRpdBgGIAEoCzIeLnJlcXVlc3RfaW5zaWdodC5UZXh0RWRpdEV2ZW50SAASVwocY29tcGxldGlvbl9yZXF1ZXN0X2lkX2lzc3VlZBgHIAEoCzIvLnJlcXVlc3RfaW5zaWdodC5Db21wbGV0aW9uUmVxdWVzdElkSXNzdWVkRXZlbnRIABJLChZlZGl0X3JlcXVlc3RfaWRfaXNzdWVkGAggASgLMikucmVxdWVzdF9pbnNpZ2h0LkVkaXRSZXF1ZXN0SWRJc3N1ZWRFdmVudEgAEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKCGV2ZW50X2lkGAMgASgJSAGIAQFCBwoFZXZlbnRCCwoJX2V2ZW50X2lkSgQIAhADSgQICRAKSgQIFBAVUhduZXh0X2VkaXRfc2Vzc2lvbl9ldmVudFIbbmV4dF9lZGl0X3JlcXVlc3RfaWRfaXNzdWVkUhVmZWF0dXJlX3ZlY3Rvcl9yZXBvcnQiEQoPU2V0dXBQYWdlT3BlbmVkIm8KFlNraWxsQ29udGVudExvYWRlZERhdGESEgoKc2tpbGxfbmFtZRgBIAEoCRIUCgxza2lsbF9zb3VyY2UYAiABKAkSFgoOY29udGVudF9sZW5ndGgYAyABKA0SEwoLc291cmNlX3Rvb2wYBCABKAkiNQoJU2tpbGxJbmZvEhIKCnNraWxsX25hbWUYASABKAkSFAoMc2tpbGxfc291cmNlGAIgASgJIlsKGFNraWxsc0luY2x1ZGVkSW5DaGF0RGF0YRIqCgZza2lsbHMYASADKAsyGi5yZXF1ZXN0X2luc2lnaHQuU2tpbGxJbmZvEhMKC3NraWxsX2NvdW50GAIgASgNIo0BChBTbGFja2JvdEZlZWRiYWNrEiAKGHNsYWNrX3Jlc3BvbnNlX3RpbWVzdGFtcBgBIAEoCRIYChBzbGFja19jaGFubmVsX2lkGAIgASgJEi8KBnJhdGluZxgDIAEoDjIfLnJlcXVlc3RfaW5zaWdodC5GZWVkYmFja1JhdGluZxIMCgRub3RlGAQgASgJIrwBChhTbWFydFBhc3RlQ2xpZW50VGltZWxpbmUSOAoUaW5pdGlhbF9yZXF1ZXN0X3RpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKEnN0cmVhbV9maW5pc2hfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKYXBwbHlfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYAoUU21hcnRQYXN0ZVJlc29sdXRpb24SGgoSaXNfYWNjZXB0ZWRfY2h1bmtzGAEgAygIEhUKDWlzX2FjY2VwdF9hbGwYAiABKAgSFQoNaXNfcmVqZWN0X2FsbBgDIAEoCCIwCg5TdWJBZ2VudERpYWxvZxIeCgZkaWFsb2cYAyADKAsyDi5jaGF0LkV4Y2hhbmdlIqkEChFUYXNrTGlzdFVzYWdlRGF0YRJBCgZhY3Rpb24YASABKA4yMS5yZXF1ZXN0X2luc2lnaHQuVGFza0xpc3RVc2FnZURhdGEuVGFza0xpc3RBY3Rpb24SGQoRdG90YWxfdGFza3NfY291bnQYAiABKA0SRgoMdHJpZ2dlcmVkX2J5GAMgASgOMjAucmVxdWVzdF9pbnNpZ2h0LlRhc2tMaXN0VXNhZ2VEYXRhLkFjdGlvblRyaWdnZXIisgIKDlRhc2tMaXN0QWN0aW9uEg8KC1VOU1BFQ0lGSUVEEAASDAoIQUREX1RBU0sQARIPCgtBRERfU1VCVEFTSxACEhYKElVQREFURV9UQVNLX1NUQVRVUxADEhQKEFVQREFURV9UQVNLX05BTUUQBBIbChdVUERBVEVfVEFTS19ERVNDUklQVElPThAFEhgKFFJFT1JHQU5JWkVfVEFTS19MSVNUEAYSDwoLREVMRVRFX1RBU0sQBxITCg9SVU5fU0lOR0xFX1RBU0sQCBIRCg1SVU5fQUxMX1RBU0tTEAkSEgoOVklFV19UQVNLX0xJU1QQChIUChBFWFBPUlRfVEFTS19MSVNUEAsSFAoQSU1QT1JUX1RBU0tfTElTVBAMEhIKDlNZTkNfVEFTS19MSVNUEA0iOQoNQWN0aW9uVHJpZ2dlchITCg9VTktOT1dOX1RSSUdHRVIQABIICgRVU0VSEAESCQoFQUdFTlQQAiK9AwoNVGV4dEVkaXRFdmVudBI6CgZyZWFzb24YASABKA4yJS5yZXF1ZXN0X2luc2lnaHQuVGV4dEVkaXRFdmVudC5SZWFzb25IAIgBARI3Cg9jb250ZW50X2NoYW5nZXMYAiADKAsyHi5yZXF1ZXN0X2luc2lnaHQuQ29udGVudENoYW5nZRIWCglmaWxlX3BhdGgYAyABKAlIAYgBARIfChJhZnRlcl9jaGFuZ2VzX2hhc2gYBCABKAlIAogBARIwChBoYXNoX2NoYXJfcmFuZ2VzGAUgAygLMhYucmVxdWVzdF9pbnNpZ2h0LlJhbmdlEh8KEnNvdXJjZV9mb2xkZXJfcm9vdBgGIAEoCUgDiAEBEh0KEGFmdGVyX2RvY19sZW5ndGgYByABKA1IBIgBASIwCgZSZWFzb24SEgoOVU5LTk9XTl9SRUFTT04QABIICgRVTkRPEAESCAoEUkVETxACQgkKB19yZWFzb25CDAoKX2ZpbGVfcGF0aEIVChNfYWZ0ZXJfY2hhbmdlc19oYXNoQhUKE19zb3VyY2VfZm9sZGVyX3Jvb3RCEwoRX2FmdGVyX2RvY19sZW5ndGgiUAodVGhpcmRQYXJ0eU1vZGVsTWVzc2FnZUhpc3RvcnkSFAoMdXNlcl9tZXNzYWdlGAEgASgJEhkKEWFzc2lzdGFudF9tZXNzYWdlGAIgASgJIoEBChZUaGlyZFBhcnR5TW9kZWxSZXF1ZXN0Eg4KBnByb21wdBgBIAEoCRIVCg1zeXN0ZW1fcHJvbXB0GAIgASgJEkAKCG1lc3NhZ2VzGAMgAygLMi4ucmVxdWVzdF9pbnNpZ2h0LlRoaXJkUGFydHlNb2RlbE1lc3NhZ2VIaXN0b3J5IsMBChJUb2tlbkV4Y2hhbmdlRXJyb3ISOgoGcmVhc29uGAEgASgOMioucmVxdWVzdF9pbnNpZ2h0LlRva2VuRXhjaGFuZ2VFcnJvci5SZWFzb24SLQoOb3BhcXVlX3VzZXJfaWQYAiABKAsyFS5hdXRoX2VudGl0aWVzLlVzZXJJZBISCgp1c2VyX2VtYWlsGAMgASgJIi4KBlJlYXNvbhILCgdVTktOT1dOEAASFwoTVEVOQU5UX05PVF9JTl9TSEFSRBABIlMKDFRva2VuaXphdGlvbhIRCgl0b2tlbl9pZHMYASADKAUSDwoHb2Zmc2V0cxgCIAMoDRIRCglsb2dfcHJvYnMYAyADKAISDAoEdGV4dBgEIAEoCSLHBgoLVG9vbFVzZURhdGESEQoJdG9vbF9uYW1lGAEgASgJEhMKC3Rvb2xfdXNlX2lkGAIgASgJEiEKFHRvb2xfb3V0cHV0X2lzX2Vycm9yGAMgASgISACIAQESHAoUdG9vbF9ydW5fZHVyYXRpb25fbXMYBCABKA0SEgoKdG9vbF9pbnB1dBgFIAEoCRIYCgtpc19tY3BfdG9vbBgGIAEoCEgBiAEBEhwKD2NvbnZlcnNhdGlvbl9pZBgHIAEoCUgCiAEBEiAKE2NoYXRfaGlzdG9yeV9sZW5ndGgYCCABKA1IA4gBARIcCg90b29sX3JlcXVlc3RfaWQYCSABKAlIBIgBARIcCg90b29sX291dHB1dF9sZW4YCiABKA1IBYgBARIbCg50b29sX2lucHV0X2xlbhgLIAEoDUgGiAEBEh0KEHRvb2xfbGluZXNfYWRkZWQYDCABKA1IB4gBARIfChJ0b29sX2xpbmVzX2RlbGV0ZWQYDSABKA1ICIgBARI4Cg10b29sX3VzZV9kaWZmGA4gASgLMhwucmVxdWVzdF9pbnNpZ2h0LlRvb2xVc2VEaWZmSAmIAQESFwoKbWNwX3NlcnZlchgPIAEoCUgKiAEBEhoKDW1jcF90b29sX25hbWUYECABKAlIC4gBARIdChB0b29sX2Vycm9yX2NsYXNzGBEgASgJSAyIAQESHwoSdG9vbF9lcnJvcl9zbmlwcGV0GBIgASgJSA2IAQFCFwoVX3Rvb2xfb3V0cHV0X2lzX2Vycm9yQg4KDF9pc19tY3BfdG9vbEISChBfY29udmVyc2F0aW9uX2lkQhYKFF9jaGF0X2hpc3RvcnlfbGVuZ3RoQhIKEF90b29sX3JlcXVlc3RfaWRCEgoQX3Rvb2xfb3V0cHV0X2xlbkIRCg9fdG9vbF9pbnB1dF9sZW5CEwoRX3Rvb2xfbGluZXNfYWRkZWRCFQoTX3Rvb2xfbGluZXNfZGVsZXRlZEIQCg5fdG9vbF91c2VfZGlmZkINCgtfbWNwX3NlcnZlckIQCg5fbWNwX3Rvb2xfbmFtZUITChFfdG9vbF9lcnJvcl9jbGFzc0IVChNfdG9vbF9lcnJvcl9zbmlwcGV0IlsKC1Rvb2xVc2VEaWZmEhEKCXJvb3RfcGF0aBgBIAEoCRIMCgRwYXRoGAIgASgJEisKBWVkaXRzGAMgAygLMhwucmVxdWVzdF9pbnNpZ2h0LlRvb2xVc2VFZGl0IkoKC1Rvb2xVc2VFZGl0EhMKC2JlZm9yZV90ZXh0GAEgASgJEhIKCmFmdGVyX3RleHQYAiABKAkSEgoKbGluZV9zdGFydBgDIAEoDSJICilVbnNjaGVkdWxlUGVuZGluZ1N1YnNjcmlwdGlvbkNhbmNlbGxhdGlvbhIbChNvcmJfc3Vic2NyaXB0aW9uX2lkGAEgASgJIjQKFVVuc2NoZWR1bGVQbGFuQ2hhbmdlcxIbChNvcmJfc3Vic2NyaXB0aW9uX2lkGAEgASgJIoUCChRVc2VyR2l0aHViT3JnTWFwcGluZxIKCgJpZBgBIAEoAxINCgVsb2dpbhgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2NvbXBhbnkYBCABKAkSEAoIbG9jYXRpb24YBSABKAkSDQoFZW1haWwYBiABKAkSGAoQdHdpdHRlcl91c2VybmFtZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIXCg9mb2xsb3dlcnNfY291bnQYCSABKAUSEgoKZGlza191c2FnZRgKIAEoBRIRCglwbGFuX25hbWUYCyABKAkSFAoMZmlsbGVkX3NlYXRzGAwgASgFEg0KBXNlYXRzGA0gASgFKjcKDkZlZWRiYWNrUmF0aW5nEgkKBVVOU0VUEAASDAoIUE9TSVRJVkUQARIMCghORUdBVElWRRACKk4KEEluc3RhbGxFdmVudFR5cGUSHgoaVU5LTk9XTl9JTlNUQUxMX0VWRU5UX1RZUEUQABINCglVTklOU1RBTEwQARILCgdJTlNUQUxMEAIqvAUKC1JlcXVlc3RUeXBlEhgKFFVOS05PV05fUkVRVUVTVF9UWVBFEAASDgoKQ09NUExFVElPThABEggKBEVESVQQAhIICgRDSEFUEAMSEwoPRVhURU5TSU9OX0VSUk9SEAQSEQoNU0xBQ0tCT1RfQ0hBVBAGEhMKD1NIQVJFX1NBVkVfQ0hBVBAHEhIKDlNIQVJFX0dFVF9DSEFUEAgSEQoNQVVUT0ZJWF9DSEVDSxAJEhAKDEFVVE9GSVhfUExBThAKEhAKDExMTV9HRU5FUkFURRALEhQKEFJFTU9URV9UT09MX0NBTEwQDBIQCgxSRU1PVEVfQUdFTlQQDRIOCgpBR0VOVF9DSEFUEA4SEAoMTElORUFSX09BVVRIEA8SDAoITUVNT1JJRVMQEBIPCgtPUklFTlRBVElPThAREhgKFE1FTU9SSUVTX0NPTVBSRVNTSU9OEBISFQoRUkVNT1RFX0FHRU5UX0NIQVQQExIUChBSRU1PVEVfQUdFTlRfTE9HEBQSEgoOQ0xJX0FHRU5UX0NIQVQQFRITCg9UT0tFTl9GUk9NX0NPREUQFhIhCh1DTElfQUdFTlRfQ0hBVF9OT05JTlRFUkFDVElWRRAXEhkKFUNIQVRfSU5QVVRfQ09NUExFVElPThAYEg8KC0NPREVfUkVWSUVXEBkSHwobUkVNT1RFX01DUF9TRVJWRVJfVE9PTF9DQUxMEBoSHwobRFlOQU1JQ19DTElFTlRfUkVHSVNUUkFUSU9OEBsSFQoRQUdFTlRJQ19TTEFDS19CT1QQHBIbChdDT05URVhUX0VOR0lORV9TREtfQ0hBVBAdEhsKF0NPTlRFWFRfRU5HSU5FX01DUF9DSEFUEB4SGwoXUE9TRUlET05fQ0xJX0FHRU5UX0NIQVQQHyIECAUQBSoJTkVYVF9FRElUKm0KDVJldHJpZXZhbFR5cGUSGgoWVU5LTk9XTl9SRVRSSUVWQUxfVFlQRRAAEgkKBURFTlNFEAESDQoJU0lHTkFUVVJFEAISCwoHUkVDRU5DWRADEg8KC1VTRVJfR1VJREVEEAQSCAoERElGRhAFKkQKEVNvdXJjZUNvbnRyb2xUeXBlEhoKFlVOS05PV05fU09VUkNFX0NPTlRST0wQABIHCgNHSVQQARIKCgZHSVRIVUIQAmIGcHJvdG8z",[Xt,sa,se,Gn,iR,dR,bt,hR,In,bR,AR,fR,aa,ER,GR,IR]);var NR;(function(e){e[e.UNKNOWN_TOP_UP_ACTION=0]="UNKNOWN_TOP_UP_ACTION",e[e.ENABLED=1]="ENABLED",e[e.DISABLED=2]="DISABLED"})(NR||(NR={}));var FR;(function(e){e[e.CHAT=0]="CHAT",e[e.AGENT=1]="AGENT",e[e.MEMORIES=2]="MEMORIES",e[e.ORIENTATION=3]="ORIENTATION",e[e.MEMORIES_COMPRESSION=4]="MEMORIES_COMPRESSION",e[e.REMOTE_AGENT=5]="REMOTE_AGENT",e[e.CLI_AGENT=6]="CLI_AGENT",e[e.CLI_NONINTERACTIVE=7]="CLI_NONINTERACTIVE",e[e.CODE_REVIEW=8]="CODE_REVIEW",e[e.AGENTIC_SLACK_BOT=9]="AGENTIC_SLACK_BOT",e[e.CONTEXT_ENGINE_SDK=10]="CONTEXT_ENGINE_SDK",e[e.CONTEXT_ENGINE_MCP=11]="CONTEXT_ENGINE_MCP",e[e.POSEIDON_CLI_AGENT=12]="POSEIDON_CLI_AGENT"})(FR||(FR={}));var BR;(function(e){e[e.UNKNOWN_FILTER_REASON=0]="UNKNOWN_FILTER_REASON",e[e.NOT_FILTERED=1]="NOT_FILTERED",e[e.LOW_QUALITY=2]="LOW_QUALITY",e[e.DENY_LIST=3]="DENY_LIST"})(BR||(BR={}));var YR;(function(e){e[e.UNKNOWN_SESSION_END_REASON=0]="UNKNOWN_SESSION_END_REASON",e[e.LOGOUT=1]="LOGOUT",e[e.TIMEOUT=2]="TIMEOUT"})(YR||(YR={}));var CR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ONBOARDING=1]="ONBOARDING",e[e.COMMAND=2]="COMMAND"})(CR||(CR={}));var UR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.USER_GUIDELINES=1]="USER_GUIDELINES",e[e.AUGMENT_GUIDELINES=2]="AUGMENT_GUIDELINES",e[e.RULES=3]="RULES"})(UR||(UR={}));var yR;(function(e){e[e.UNKNOWN_MODE=0]="UNKNOWN_MODE",e[e.CHAT=1]="CHAT",e[e.AGENT=2]="AGENT",e[e.REMOTE_AGENT=3]="REMOTE_AGENT"})(yR||(yR={}));var wR;(function(e){e[e.UNKNOWN_MODE_SELECTOR_ACTION=0]="UNKNOWN_MODE_SELECTOR_ACTION",e[e.OPEN=1]="OPEN",e[e.CLOSE=2]="CLOSE",e[e.SELECT=3]="SELECT",e[e.INIT=4]="INIT"})(wR||(wR={}));var xR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.ACTIVATED=1]="ACTIVATED",e[e.DEACTIVATED=2]="DEACTIVATED",e[e.NOTIFIED=4]="NOTIFIED",e[e.ACCEPTED=3]="ACCEPTED"})(xR||(xR={}));var vR;(function(e){e[e.UNKNOWN_CHANNEL_TYPE=0]="UNKNOWN_CHANNEL_TYPE",e[e.IM=1]="IM",e[e.MPIM=2]="MPIM",e[e.SHARED_CHANNEL=3]="SHARED_CHANNEL",e[e.PRIVATE_CHANNEL=4]="PRIVATE_CHANNEL",e[e.GENERAL_CHANNEL=5]="GENERAL_CHANNEL",e[e.CHANNEL=6]="CHANNEL"})(vR||(vR={}));var JR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.CLASSIFY_AND_DISTILL=1]="CLASSIFY_AND_DISTILL",e[e.ORIENTATION=2]="ORIENTATION",e[e.MEMORY_ACCEPTANCE=3]="MEMORY_ACCEPTANCE"})(JR||(JR={}));var kR;(function(e){e[e.UNKNOWN_LATENCY_TYPE=0]="UNKNOWN_LATENCY_TYPE",e[e.CREATE_AGENT=1]="CREATE_AGENT",e[e.RESUME_AGENT=2]="RESUME_AGENT"})(kR||(kR={}));var _R;(function(e){e[e.UNKNOWN_NEW_THREAD_BUTTON_ACTION=0]="UNKNOWN_NEW_THREAD_BUTTON_ACTION",e[e.CLICK=1]="CLICK",e[e.OPEN=2]="OPEN",e[e.CLOSE=3]="CLOSE"})(_R||(_R={}));var QR;(function(e){e[e.UNKNOWN_THREAD_TYPE=0]="UNKNOWN_THREAD_TYPE",e[e.CHAT=1]="CHAT",e[e.AGENT=2]="AGENT",e[e.REMOTE_AGENT=3]="REMOTE_AGENT"})(QR||(QR={}));var KR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.COMPLETED=1]="COMPLETED",e[e.FAILED=2]="FAILED"})(KR||(KR={}));var TR;(function(e){e[e.UNKNOWN_SETUP_WINDOW_ACTION=0]="UNKNOWN_SETUP_WINDOW_ACTION",e[e.OPEN=1]="OPEN",e[e.CLOSE=2]="CLOSE",e[e.SELECT_REPO=3]="SELECT_REPO",e[e.SELECT_BRANCH=4]="SELECT_BRANCH",e[e.SELECT_SETUP_SCRIPT=5]="SELECT_SETUP_SCRIPT",e[e.AUTO_GENERATE_SETUP_SCRIPT=6]="AUTO_GENERATE_SETUP_SCRIPT",e[e.MANUALLY_CREATE_SETUP_SCRIPT=7]="MANUALLY_CREATE_SETUP_SCRIPT",e[e.TYPE_IN_PROMPT_WINDOW=8]="TYPE_IN_PROMPT_WINDOW",e[e.CLICK_REWRITE_PROMPT=9]="CLICK_REWRITE_PROMPT",e[e.ENABLE_NOTIFICATIONS=10]="ENABLE_NOTIFICATIONS",e[e.DISABLE_NOTIFICATIONS=11]="DISABLE_NOTIFICATIONS",e[e.CLICK_CREATE_AGENT=12]="CLICK_CREATE_AGENT"})(TR||(TR={}));var zR;(function(e){e[e.UNKNOWN_AGENT_LIST_ACTION=0]="UNKNOWN_AGENT_LIST_ACTION",e[e.OPEN=1]="OPEN",e[e.CLOSE=2]="CLOSE",e[e.SELECT_AGENT=3]="SELECT_AGENT",e[e.DELETE_AGENT=4]="DELETE_AGENT",e[e.PIN_AGENT=5]="PIN_AGENT",e[e.UNPIN_AGENT=6]="UNPIN_AGENT"})(zR||(zR={}));var DR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.MANUALLY_CREATED=1]="MANUALLY_CREATED",e[e.AUTO=2]="AUTO",e[e.SELECTED_DIRECTORY=3]="SELECTED_DIRECTORY",e[e.SELECTED_FILE=4]="SELECTED_FILE"})(DR||(DR={}));var LR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CLICKED=1]="CLICKED",e[e.REMOTE_SESSION_STARTED=2]="REMOTE_SESSION_STARTED"})(LR||(LR={}));var HR;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ADD_TASK=1]="ADD_TASK",e[e.ADD_SUBTASK=2]="ADD_SUBTASK",e[e.UPDATE_TASK_STATUS=3]="UPDATE_TASK_STATUS",e[e.UPDATE_TASK_NAME=4]="UPDATE_TASK_NAME",e[e.UPDATE_TASK_DESCRIPTION=5]="UPDATE_TASK_DESCRIPTION",e[e.REORGANIZE_TASK_LIST=6]="REORGANIZE_TASK_LIST",e[e.DELETE_TASK=7]="DELETE_TASK",e[e.RUN_SINGLE_TASK=8]="RUN_SINGLE_TASK",e[e.RUN_ALL_TASKS=9]="RUN_ALL_TASKS",e[e.VIEW_TASK_LIST=10]="VIEW_TASK_LIST",e[e.EXPORT_TASK_LIST=11]="EXPORT_TASK_LIST",e[e.IMPORT_TASK_LIST=12]="IMPORT_TASK_LIST",e[e.SYNC_TASK_LIST=13]="SYNC_TASK_LIST"})(HR||(HR={}));var MR;(function(e){e[e.UNKNOWN_TRIGGER=0]="UNKNOWN_TRIGGER",e[e.USER=1]="USER",e[e.AGENT=2]="AGENT"})(MR||(MR={}));var OR;(function(e){e[e.UNKNOWN_REASON=0]="UNKNOWN_REASON",e[e.UNDO=1]="UNDO",e[e.REDO=2]="REDO"})(OR||(OR={}));var jR;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TENANT_NOT_IN_SHARD=1]="TENANT_NOT_IN_SHARD"})(jR||(jR={}));var PR;(function(e){e[e.UNSET=0]="UNSET",e[e.POSITIVE=1]="POSITIVE",e[e.NEGATIVE=2]="NEGATIVE"})(PR||(PR={}));var qR;(function(e){e[e.UNKNOWN_INSTALL_EVENT_TYPE=0]="UNKNOWN_INSTALL_EVENT_TYPE",e[e.UNINSTALL=1]="UNINSTALL",e[e.INSTALL=2]="INSTALL"})(qR||(qR={}));var $R;(function(e){e[e.UNKNOWN_REQUEST_TYPE=0]="UNKNOWN_REQUEST_TYPE",e[e.COMPLETION=1]="COMPLETION",e[e.EDIT=2]="EDIT",e[e.CHAT=3]="CHAT",e[e.EXTENSION_ERROR=4]="EXTENSION_ERROR",e[e.SLACKBOT_CHAT=6]="SLACKBOT_CHAT",e[e.SHARE_SAVE_CHAT=7]="SHARE_SAVE_CHAT",e[e.SHARE_GET_CHAT=8]="SHARE_GET_CHAT",e[e.AUTOFIX_CHECK=9]="AUTOFIX_CHECK",e[e.AUTOFIX_PLAN=10]="AUTOFIX_PLAN",e[e.LLM_GENERATE=11]="LLM_GENERATE",e[e.REMOTE_TOOL_CALL=12]="REMOTE_TOOL_CALL",e[e.REMOTE_AGENT=13]="REMOTE_AGENT",e[e.AGENT_CHAT=14]="AGENT_CHAT",e[e.LINEAR_OAUTH=15]="LINEAR_OAUTH",e[e.MEMORIES=16]="MEMORIES",e[e.ORIENTATION=17]="ORIENTATION",e[e.MEMORIES_COMPRESSION=18]="MEMORIES_COMPRESSION",e[e.REMOTE_AGENT_CHAT=19]="REMOTE_AGENT_CHAT",e[e.REMOTE_AGENT_LOG=20]="REMOTE_AGENT_LOG",e[e.CLI_AGENT_CHAT=21]="CLI_AGENT_CHAT",e[e.TOKEN_FROM_CODE=22]="TOKEN_FROM_CODE",e[e.CLI_AGENT_CHAT_NONINTERACTIVE=23]="CLI_AGENT_CHAT_NONINTERACTIVE",e[e.CHAT_INPUT_COMPLETION=24]="CHAT_INPUT_COMPLETION",e[e.CODE_REVIEW=25]="CODE_REVIEW",e[e.REMOTE_MCP_SERVER_TOOL_CALL=26]="REMOTE_MCP_SERVER_TOOL_CALL",e[e.DYNAMIC_CLIENT_REGISTRATION=27]="DYNAMIC_CLIENT_REGISTRATION",e[e.AGENTIC_SLACK_BOT=28]="AGENTIC_SLACK_BOT",e[e.CONTEXT_ENGINE_SDK_CHAT=29]="CONTEXT_ENGINE_SDK_CHAT",e[e.CONTEXT_ENGINE_MCP_CHAT=30]="CONTEXT_ENGINE_MCP_CHAT",e[e.POSEIDON_CLI_AGENT_CHAT=31]="POSEIDON_CLI_AGENT_CHAT"})($R||($R={}));var eZ;(function(e){e[e.UNKNOWN_RETRIEVAL_TYPE=0]="UNKNOWN_RETRIEVAL_TYPE",e[e.DENSE=1]="DENSE",e[e.SIGNATURE=2]="SIGNATURE",e[e.RECENCY=3]="RECENCY",e[e.USER_GUIDED=4]="USER_GUIDED",e[e.DIFF=5]="DIFF"})(eZ||(eZ={}));var tZ;(function(e){e[e.UNKNOWN_SOURCE_CONTROL=0]="UNKNOWN_SOURCE_CONTROL",e[e.GIT=1]="GIT",e[e.GITHUB=2]="GITHUB"})(tZ||(tZ={}));var oZ=Q("CjdzZXJ2aWNlcy9saWIvZ3JwYy9jb25uZWN0X2ZvcndhcmQvZm9yd2FyZF9vcHRpb25zLnByb3RvEg9mb3J3YXJkX29wdGlvbnMiRAoXUmVxdWlyZWRGZWF0dXJlRmxhZ0Jvb2wSEQoJZmxhZ19uYW1lGAEgASgJEhYKDmV4cGVjdGVkX3ZhbHVlGAIgASgIIkYKGVJlcXVpcmVkRmVhdHVyZUZsYWdTdHJpbmcSEQoJZmxhZ19uYW1lGAEgASgJEhYKDmV4cGVjdGVkX3ZhbHVlGAIgASgJOlAKE2ZvcndhcmRfbWV0aG9kX25hbWUSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjThgMgASgJUhFmb3J3YXJkTWV0aG9kTmFtZTphChxza2lwX3RlbmFudF91c2VyX2VuZm9yY2VtZW50Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY1IYDIAEoCFIZc2tpcFRlbmFudFVzZXJFbmZvcmNlbWVudDpZChhza2lwX3VzZXJfaWRfZW5mb3JjZW1lbnQSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjVhgMgASgIUhVza2lwVXNlcklkRW5mb3JjZW1lbnQ6SQoPZW50ZXJwcmlzZV9vbmx5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY1oYDIAEoCFIOZW50ZXJwcmlzZU9ubHk6hwEKGnJlcXVpcmVkX2ZlYXR1cmVfZmxhZ19ib29sEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY14YDIAMoCzIoLmZvcndhcmRfb3B0aW9ucy5SZXF1aXJlZEZlYXR1cmVGbGFnQm9vbFIXcmVxdWlyZWRGZWF0dXJlRmxhZ0Jvb2w6jQEKHHJlcXVpcmVkX2ZlYXR1cmVfZmxhZ19zdHJpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjYhgMgAygLMiouZm9yd2FyZF9vcHRpb25zLlJlcXVpcmVkRmVhdHVyZUZsYWdTdHJpbmdSGXJlcXVpcmVkRmVhdHVyZUZsYWdTdHJpbmc6QwoMc2tpcF9jb2RlZ2VuEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY2YYDIAEoCFILc2tpcENvZGVnZW46PwoKYWRtaW5fb25seRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGNqGAyABKAhSCWFkbWluT25seTpRChNyZXF1aXJlZF9wZXJtaXNzaW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY24YDIAMoCVIScmVxdWlyZWRQZXJtaXNzaW9uYgZwcm90bzM",[qt]);var Pu=Q("CihzZXJ2aWNlcy93ZWJfcnBjX3Byb3h5L2ZsZWV0X3Byb3h5LnByb3RvEg13ZWJfcnBjX3Byb3h5IiYKFEZsZWV0U3RyaW5nTGlzdFZhbHVlEg4KBnZhbHVlcxgBIAMoCSLxAQoXRmxlZXRDb25maWd1cmF0aW9uVmFsdWUSCwoDa2V5GAEgASgJEhQKCnRleHRfdmFsdWUYAiABKAlIABJAChFzdHJpbmdfbGlzdF92YWx1ZRgDIAEoCzIjLndlYl9ycGNfcHJveHkuRmxlZXRTdHJpbmdMaXN0VmFsdWVIABIYCg5lbnZpcm9ubWVudF9pZBgEIAEoCUgAEhoKEHNlY3JldF9yZWZlcmVuY2UYBSABKAlIABIZCg9pbnRlZ3JhdGlvbl9rZXkYBiABKAlIABIXCg1ib29sZWFuX3ZhbHVlGAcgASgISABCBwoFdmFsdWUilQIKFUFwcGx5RmxlZXRGbG93UmVxdWVzdBIQCghzcGFjZV9pZBgBIAEoCRIQCghmbG93X2tleRgCIAEoCRITCgt2YXJpYW50X2tleRgDIAEoCRIXCg9jYXRhbG9nX3ZlcnNpb24YBCABKAUSPQoNY29uZmlndXJhdGlvbhgFIAMoCzImLndlYl9ycGNfcHJveHkuRmxlZXRDb25maWd1cmF0aW9uVmFsdWUSFwoPaWRlbXBvdGVuY3lfa2V5GAYgASgJEjIKC3J1bl9hc19tb2RlGAcgASgOMh0ud2ViX3JwY19wcm94eS5GbGVldFJ1bkFzTW9kZRIeChZzZWxlY3RlZF9hY3Rvcl91c2VyX2lkGAggASgJIjsKFEZsZWV0SW5zdGFsbGVkRXhwZXJ0EhAKCHNsb3Rfa2V5GAEgASgJEhEKCWV4cGVydF9pZBgCIAEoCSLwAQoWQXBwbHlGbGVldEZsb3dSZXNwb25zZRIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSLwoGc3RhdHVzGAIgASgOMh8ud2ViX3JwY19wcm94eS5GbGVldEFwcGx5U3RhdHVzEhEKCWV4cGVydF9pZBgDIAEoCRIZChFpZGVtcG90ZW50X3JlcGxheRgEIAEoCBI+ChFpbnN0YWxsZWRfZXhwZXJ0cxgFIAMoCzIjLndlYl9ycGNfcHJveHkuRmxlZXRJbnN0YWxsZWRFeHBlcnQSHgoWZGlzYWJsZWRfdHJpZ2dlcl9jb3VudBgGIAEoBSJBChNBcm1GbGVldEZsb3dSZXF1ZXN0EhcKD2luc3RhbGxhdGlvbl9pZBgBIAEoCRIRCgljb25maXJtZWQYAiABKAgidgoUQXJtRmxlZXRGbG93UmVzcG9uc2USFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgJEg0KBWFybWVkGAIgASgIEhsKE2FybWVkX3RyaWdnZXJfY291bnQYAyABKAUSGQoRaWRlbXBvdGVudF9yZXBsYXkYBCABKAgiSAoaRGVhY3RpdmF0ZUZsZWV0Rmxvd1JlcXVlc3QSFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgJEhEKCWNvbmZpcm1lZBgCIAEoCCJ0ChtEZWFjdGl2YXRlRmxlZXRGbG93UmVzcG9uc2USFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgJEiEKGWRlYWN0aXZhdGVkX3RyaWdnZXJfY291bnQYAiABKAUSGQoRaWRlbXBvdGVudF9yZXBsYXkYAyABKAgiRwoZVW5pbnN0YWxsRmxlZXRGbG93UmVxdWVzdBIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSEQoJY29uZmlybWVkGAIgASgIIvUBChpVbmluc3RhbGxGbGVldEZsb3dSZXNwb25zZRIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSHAoUZGVsZXRlZF9leHBlcnRfY291bnQYAiABKAUSHgoWZGVsZXRlZF93b3JrZmxvd19jb3VudBgDIAEoBRIZChFpZGVtcG90ZW50X3JlcGxheRgEIAEoCBJLChNyZW1haW5pbmdfcmVzb3VyY2VzGAUgAygLMi4ud2ViX3JwY19wcm94eS5GbGVldFVuaW5zdGFsbFJlbWFpbmluZ1Jlc291cmNlEhgKEGNsZWFudXBfY29tcGxldGUYBiABKAgiTQofRmxlZXRVbmluc3RhbGxSZW1haW5pbmdSZXNvdXJjZRIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhMKC3Jlc291cmNlX2lkGAIgASgJIvABChlDb25maWd1cmVGbGVldEZsb3dSZXF1ZXN0EhcKD2luc3RhbGxhdGlvbl9pZBgBIAEoCRI9Cg1jb25maWd1cmF0aW9uGAIgAygLMiYud2ViX3JwY19wcm94eS5GbGVldENvbmZpZ3VyYXRpb25WYWx1ZRIjChtleHBlY3RlZF9jb25maWd1cmF0aW9uX2hhc2gYBSABKAkSPwoJaW5zdGFuY2VzGAMgAygLMiwud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhYmxlSW5zdGFuY2VJbnB1dBIVCg1oYXNfaW5zdGFuY2VzGAQgASgIIooBCh1GbGVldEluc3RhbGxhYmxlSW5zdGFuY2VJbnB1dBITCgtpbnN0YW5jZV9pZBgBIAEoCRIXCg9pbnN0YWxsYWJsZV9rZXkYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSFAoMZXh0cmFfcHJvbXB0GAUgASgJIvYBChpDb25maWd1cmVGbGVldEZsb3dSZXNwb25zZRIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSQwoTY29uZmlndXJhdGlvbl9zdGF0ZRgCIAEoDjImLndlYl9ycGNfcHJveHkuRmxlZXRDb25maWd1cmF0aW9uU3RhdGUSIgoabWlzc2luZ19jb25maWd1cmF0aW9uX2tleXMYAyADKAkSOgoJaW5zdGFuY2VzGAQgAygLMicud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhYmxlSW5zdGFuY2USGgoSY29uZmlndXJhdGlvbl9oYXNoGAUgASgJIkQKFlJlcGFpckZsZWV0Rmxvd1JlcXVlc3QSFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgJEhEKCWNvbmZpcm1lZBgCIAEoCCJ4ChdSZXBhaXJGbGVldEZsb3dSZXNwb25zZRIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSHQoVcmVzdG9yZWRfZXhwZXJ0X2NvdW50GAIgASgFEiUKHXJlc3RvcmVkX3dvcmtmbG93X2FjdG9yX2NvdW50GAMgASgFIlcKHEdldEZsZWV0Rmxvd0xpZmVjeWNsZVJlcXVlc3QSEAoIc3BhY2VfaWQYASABKAkSEAoIZmxvd19rZXkYAiABKAkSEwoLdmFyaWFudF9rZXkYAyABKAkitwEKEkZsZWV0TWFuYWdlZEV4cGVydBIQCghzbG90X2tleRgBIAEoCRIRCglleHBlcnRfaWQYAiABKAkSDwoHbWFuYWdlZBgDIAEoCBIVCg1hY3Rvcl91c2VyX2lkGAQgASgJEhgKEGFjdG9yX292ZXJyaWRkZW4YBSABKAgSDAoEbmFtZRgGIAEoCRITCgtpbnN0YW5jZV9pZBgHIAEoCRIXCg9pbnN0YWxsYWJsZV9rZXkYCCABKAkizAYKEkZsZWV0Rmxvd0xpZmVjeWNsZRIXCg9pbnN0YWxsYXRpb25faWQYASABKAkSEAoIZmxvd19rZXkYAiABKAkSEwoLdmFyaWFudF9rZXkYAyABKAkSLwoGc3RhdHVzGAQgASgOMh8ud2ViX3JwY19wcm94eS5GbGVldEFwcGx5U3RhdHVzEjIKB2V4cGVydHMYBSADKAsyIS53ZWJfcnBjX3Byb3h5LkZsZWV0TWFuYWdlZEV4cGVydBIeChZkaXNhYmxlZF90cmlnZ2VyX2NvdW50GAYgASgFEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKEW1hbmFnZXJfZXhwZXJ0X2lkGAkgASgJEj8KFGFsbG93ZWRfbmV4dF9hY3Rpb25zGAsgAygOMiEud2ViX3JwY19wcm94eS5GbGVldEFsbG93ZWRBY3Rpb24SQwoTY29uZmlndXJhdGlvbl9zdGF0ZRgMIAEoDjImLndlYl9ycGNfcHJveHkuRmxlZXRDb25maWd1cmF0aW9uU3RhdGUSIgoabWlzc2luZ19jb25maWd1cmF0aW9uX2tleXMYDSADKAkSGAoQcmVwb3NpdG9yeV9zY29wZRgOIAMoCRIXCg90cmlnZ2Vyc19hY3RpdmUYDyABKAgSFQoNYWN0b3JfdXNlcl9pZBgQIAEoCRIyCgtydW5fYXNfbW9kZRgRIAEoDjIdLndlYl9ycGNfcHJveHkuRmxlZXRSdW5Bc01vZGUSGAoQYWN0b3Jfb3ZlcnJpZGRlbhgSIAEoCBIXCg9pZGVtcG90ZW5jeV9rZXkYEyABKAkSMwoLYWN0b3Jfc3RhdGUYFCABKA4yHi53ZWJfcnBjX3Byb3h5LkZsZWV0QWN0b3JTdGF0ZRI6CglpbnN0YW5jZXMYFSADKAsyJy53ZWJfcnBjX3Byb3h5LkZsZWV0SW5zdGFsbGFibGVJbnN0YW5jZRIqCiJ1bmV4cGVjdGVkbHlfZW5hYmxlZF90cmlnZ2VyX2NvdW50GBYgASgFIoUBChhGbGVldEluc3RhbGxhYmxlSW5zdGFuY2USEwoLaW5zdGFuY2VfaWQYASABKAkSFwoPaW5zdGFsbGFibGVfa2V5GAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhQKDGV4dHJhX3Byb21wdBgFIAEoCSJZCh1HZXRGbGVldEZsb3dMaWZlY3ljbGVSZXNwb25zZRI4Cg1pbnN0YWxsYXRpb25zGAEgAygLMiEud2ViX3JwY19wcm94eS5GbGVldEZsb3dMaWZlY3ljbGUiMQodTGlzdEZsZWV0SW5zdGFsbGF0aW9uc1JlcXVlc3QSEAoIc3BhY2VfaWQYASABKAkiWgoeTGlzdEZsZWV0SW5zdGFsbGF0aW9uc1Jlc3BvbnNlEjgKDWluc3RhbGxhdGlvbnMYASADKAsyIS53ZWJfcnBjX3Byb3h5LkZsZWV0Rmxvd0xpZmVjeWNsZSI/CiRHZXRGbGVldENvbmZpZ3VyYXRpb25Eb2N1bWVudFJlcXVlc3QSFwoPaW5zdGFsbGF0aW9uX2lkGAEgASgJIscCCiVHZXRGbGVldENvbmZpZ3VyYXRpb25Eb2N1bWVudFJlc3BvbnNlEhcKD2luc3RhbGxhdGlvbl9pZBgBIAEoCRIXCg9jYXRhbG9nX3ZlcnNpb24YAiABKAUSEAoIZmxvd19rZXkYAyABKAkSEwoLdmFyaWFudF9rZXkYBCABKAkSPQoNY29uZmlndXJhdGlvbhgFIAMoCzImLndlYl9ycGNfcHJveHkuRmxlZXRDb25maWd1cmF0aW9uVmFsdWUSOgoJaW5zdGFuY2VzGAYgAygLMicud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhYmxlSW5zdGFuY2USGgoSY29uZmlndXJhdGlvbl9oYXNoGAcgASgJEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIioKFkdldEZsZWV0Q2F0YWxvZ1JlcXVlc3QSEAoIc3BhY2VfaWQYASABKAkizAEKF0dldEZsZWV0Q2F0YWxvZ1Jlc3BvbnNlEj0KDGF2YWlsYWJpbGl0eRgBIAEoDjInLndlYl9ycGNfcHJveHkuRmxlZXRDYXRhbG9nQXZhaWxhYmlsaXR5EhcKD2NhdGFsb2dfdmVyc2lvbhgCIAEoBRInCgVmbG93cxgDIAMoCzIYLndlYl9ycGNfcHJveHkuRmxlZXRGbG93EjAKCmNhdGVnb3JpZXMYBCADKAsyHC53ZWJfcnBjX3Byb3h5LkZsZWV0Q2F0ZWdvcnkiRgoQRmxlZXRSZXF1aXJlbWVudBILCgNrZXkYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEAoIcmVxdWlyZWQYAyABKAgijgEKEUZsZWV0QXZhaWxhYmlsaXR5EjQKBXN0YXRlGAEgASgOMiUud2ViX3JwY19wcm94eS5GbGVldEF2YWlsYWJpbGl0eVN0YXRlEj0KFG1pc3NpbmdfcmVxdWlyZW1lbnRzGAMgAygLMh8ud2ViX3JwY19wcm94eS5GbGVldFJlcXVpcmVtZW50SgQIAhADIlYKDUZsZWV0Q29yZVNsb3QSCwoDa2V5GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhAKCHJlcXVpcmVkGAMgASgIEhEKCWZ1bGZpbGxlZBgEIAEoCCLuAgoMRmxlZXRWYXJpYW50EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEjYKDGF2YWlsYWJpbGl0eRgFIAEoCzIgLndlYl9ycGNfcHJveHkuRmxlZXRBdmFpbGFiaWxpdHkSMAoKY29yZV9zbG90cxgGIAMoCzIcLndlYl9ycGNfcHJveHkuRmxlZXRDb3JlU2xvdBI6Cg9hbGxvd2VkX2FjdGlvbnMYByADKA4yIS53ZWJfcnBjX3Byb3h5LkZsZWV0QWxsb3dlZEFjdGlvbhJDChNpbnN0YWxsYXRpb25fc3RhdHVzGAggASgOMiYud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhdGlvblN0YXR1cxIUCgxleHBlcnRfbmFtZXMYCSADKAkSLQoEa2luZBgKIAEoDjIfLndlYl9ycGNfcHJveHkuRmxlZXRWYXJpYW50S2luZCJCChBGbGVldFNldHVwT3B0aW9uEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJImEKE0ZsZWV0U2V0dXBDb25kaXRpb24SCwoDa2V5GAEgASgJEhgKDmJvb2xlYW5fZXF1YWxzGAIgASgISAASFwoNY2hvaWNlX2VxdWFscxgDIAEoCUgAQgoKCGV4cGVjdGVkIqQCCg9GbGVldFNldHVwSW5wdXQSCwoDa2V5GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEjAKBHR5cGUYAyABKA4yIi53ZWJfcnBjX3Byb3h5LkZsZWV0U2V0dXBJbnB1dFR5cGUSEAoIcmVxdWlyZWQYBCABKAgSFQoNZGVmYXVsdF92YWx1ZRgFIAEoCRIwCgdvcHRpb25zGAYgAygLMh8ud2ViX3JwY19wcm94eS5GbGVldFNldHVwT3B0aW9uEjgKDHZpc2libGVfd2hlbhgIIAEoCzIiLndlYl9ycGNfcHJveHkuRmxlZXRTZXR1cENvbmRpdGlvbhIRCgltdWx0aWxpbmUYCSABKAhKBAgHEAhSD2VtcHR5X21lYW5zX2FsbCJAChxGbGVldFBhcnRpY2lwYXRpb25NZXRyaWNQYXJ0EgsKA2tleRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSKcAQoYRmxlZXRQYXJ0aWNpcGF0aW9uTWV0cmljEj4KCW51bWVyYXRvchgBIAEoCzIrLndlYl9ycGNfcHJveHkuRmxlZXRQYXJ0aWNpcGF0aW9uTWV0cmljUGFydBJACgtkZW5vbWluYXRvchgCIAEoCzIrLndlYl9ycGNfcHJveHkuRmxlZXRQYXJ0aWNpcGF0aW9uTWV0cmljUGFydCLoAQoSRmxlZXRQYXJ0aWNpcGF0aW9uEjMKBG1vZGUYASABKA4yJS53ZWJfcnBjX3Byb3h5LkZsZWV0UGFydGljaXBhdGlvbk1vZGUSOQoHY2FkZW5jZRgCIAEoDjIoLndlYl9ycGNfcHJveHkuRmxlZXRQYXJ0aWNpcGF0aW9uQ2FkZW5jZRIpCgZhY3RvcnMYAyADKA4yGS53ZWJfcnBjX3Byb3h5LkZsZWV0QWN0b3ISNwoGbWV0cmljGAQgASgLMicud2ViX3JwY19wcm94eS5GbGVldFBhcnRpY2lwYXRpb25NZXRyaWMiKgoNRmxlZXRDYXRlZ29yeRILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCSKYBAoJRmxlZXRGbG93EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAYgASgJEjYKDGF2YWlsYWJpbGl0eRgHIAEoCzIgLndlYl9ycGNfcHJveHkuRmxlZXRBdmFpbGFiaWxpdHkSMAoKY29yZV9zbG90cxgJIAMoCzIcLndlYl9ycGNfcHJveHkuRmxlZXRDb3JlU2xvdBItCgh2YXJpYW50cxgKIAMoCzIbLndlYl9ycGNfcHJveHkuRmxlZXRWYXJpYW50EjQKDHNldHVwX2lucHV0cxgLIAMoCzIeLndlYl9ycGNfcHJveHkuRmxlZXRTZXR1cElucHV0EjgKDXBhcnRpY2lwYXRpb24YDCABKAsyIS53ZWJfcnBjX3Byb3h5LkZsZWV0UGFydGljaXBhdGlvbhI6Cg9hbGxvd2VkX2FjdGlvbnMYDSADKA4yIS53ZWJfcnBjX3Byb3h5LkZsZWV0QWxsb3dlZEFjdGlvbhJDChNpbnN0YWxsYXRpb25fc3RhdHVzGA4gASgOMiYud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhdGlvblN0YXR1cxIUCgxjYXRlZ29yeV9rZXkYDyABKAkSNQoMaW5zdGFsbGFibGVzGBAgAygLMh8ud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhYmxlSgQICBAJIqcCChBGbGVldEluc3RhbGxhYmxlEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEj8KC2NhcmRpbmFsaXR5GAQgASgOMioud2ViX3JwY19wcm94eS5GbGVldEluc3RhbGxhYmxlQ2FyZGluYWxpdHkSHQoVc3VwcG9ydHNfZXh0cmFfcHJvbXB0GAUgASgIEhwKFGluc3RhbGxlZF9ieV9kZWZhdWx0GAYgASgIEjQKDHNldHVwX2lucHV0cxgHIAMoCzIeLndlYl9ycGNfcHJveHkuRmxlZXRTZXR1cElucHV0EhQKDHZhcmlhbnRfa2V5cxgIIAMoCRIZChFleHRyYV9pbnB1dF9sYWJlbBgJIAEoCSqpAQoORmxlZXRSdW5Bc01vZGUSIQodRkxFRVRfUlVOX0FTX01PREVfVU5TUEVDSUZJRUQQABIdChlGTEVFVF9SVU5fQVNfTU9ERV9NQU5BR0VEEAESJQohRkxFRVRfUlVOX0FTX01PREVfSU5TVEFMTElOR19VU0VSEAISLgoqRkxFRVRfUlVOX0FTX01PREVfRVhJU1RJTkdfU0VSVklDRV9BQ0NPVU5UEAMqeAoPRmxlZXRBY3RvclN0YXRlEiEKHUZMRUVUX0FDVE9SX1NUQVRFX1VOU1BFQ0lGSUVEEAASHwobRkxFRVRfQUNUT1JfU1RBVEVfQVZBSUxBQkxFEAESIQodRkxFRVRfQUNUT1JfU1RBVEVfVU5BVkFJTEFCTEUQAirJAQoQRmxlZXRBcHBseVN0YXR1cxIiCh5GTEVFVF9BUFBMWV9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtGTEVFVF9BUFBMWV9TVEFUVVNfQVBQTFlJTkcQARIjCh9GTEVFVF9BUFBMWV9TVEFUVVNfUkVBRFlfVE9fQVJNEAISJwojRkxFRVRfQVBQTFlfU1RBVFVTX0ZBSUxFRF9SRVRSWUFCTEUQAxIcChhGTEVFVF9BUFBMWV9TVEFUVVNfQVJNRUQQBSIECAQQBCrCAQoYRmxlZXRDYXRhbG9nQXZhaWxhYmlsaXR5EioKJkZMRUVUX0NBVEFMT0dfQVZBSUxBQklMSVRZX1VOU1BFQ0lGSUVEEAASKAokRkxFRVRfQ0FUQUxPR19BVkFJTEFCSUxJVFlfQVZBSUxBQkxFEAESJAogRkxFRVRfQ0FUQUxPR19BVkFJTEFCSUxJVFlfU1RBTEUQAhIqCiZGTEVFVF9DQVRBTE9HX0FWQUlMQUJJTElUWV9VTkFWQUlMQUJMRRADKskBChZGbGVldEF2YWlsYWJpbGl0eVN0YXRlEigKJEZMRUVUX0FWQUlMQUJJTElUWV9TVEFURV9VTlNQRUNJRklFRBAAEiYKIkZMRUVUX0FWQUlMQUJJTElUWV9TVEFURV9BVkFJTEFCTEUQARIxCi1GTEVFVF9BVkFJTEFCSUxJVFlfU1RBVEVfQkxPQ0tFRF9SRVFVSVJFTUVOVFMQAhIqCiZGTEVFVF9BVkFJTEFCSUxJVFlfU1RBVEVfTk9UX0FWQUlMQUJMRRADKsoCChNGbGVldFNldHVwSW5wdXRUeXBlEiYKIkZMRUVUX1NFVFVQX0lOUFVUX1RZUEVfVU5TUEVDSUZJRUQQABIfChtGTEVFVF9TRVRVUF9JTlBVVF9UWVBFX1RFWFQQARImCiJGTEVFVF9TRVRVUF9JTlBVVF9UWVBFX1NUUklOR19MSVNUEAISJgoiRkxFRVRfU0VUVVBfSU5QVVRfVFlQRV9FTlZJUk9OTUVOVBADEisKJ0ZMRUVUX1NFVFVQX0lOUFVUX1RZUEVfU0VDUkVUX1JFRkVSRU5DRRAEEiYKIkZMRUVUX1NFVFVQX0lOUFVUX1RZUEVfSU5URUdSQVRJT04QBRIiCh5GTEVFVF9TRVRVUF9JTlBVVF9UWVBFX0JPT0xFQU4QBhIhCh1GTEVFVF9TRVRVUF9JTlBVVF9UWVBFX0NIT0lDRRAHKuYBChZGbGVldFBhcnRpY2lwYXRpb25Nb2RlEigKJEZMRUVUX1BBUlRJQ0lQQVRJT05fTU9ERV9VTlNQRUNJRklFRBAAEigKJEZMRUVUX1BBUlRJQ0lQQVRJT05fTU9ERV9JTlRFUkFDVElWRRABEioKJkZMRUVUX1BBUlRJQ0lQQVRJT05fTU9ERV9IVU1BTl9PTl9MT09QEAISJwojRkxFRVRfUEFSVElDSVBBVElPTl9NT0RFX0FVVE9OT01PVVMQAxIjCh9GTEVFVF9QQVJUSUNJUEFUSU9OX01PREVfSFlCUklEEAQq+AEKGUZsZWV0UGFydGljaXBhdGlvbkNhZGVuY2USKwonRkxFRVRfUEFSVElDSVBBVElPTl9DQURFTkNFX1VOU1BFQ0lGSUVEEAASKQolRkxFRVRfUEFSVElDSVBBVElPTl9DQURFTkNFX09OX0RFTUFORBABEiwKKEZMRUVUX1BBUlRJQ0lQQVRJT05fQ0FERU5DRV9FVkVOVF9EUklWRU4QAhIpCiVGTEVFVF9QQVJUSUNJUEFUSU9OX0NBREVOQ0VfU0NIRURVTEVEEAMSKgomRkxFRVRfUEFSVElDSVBBVElPTl9DQURFTkNFX0NPTlRJTlVPVVMQBCrFAQoKRmxlZXRBY3RvchIbChdGTEVFVF9BQ1RPUl9VTlNQRUNJRklFRBAAEhsKF0ZMRUVUX0FDVE9SX0VOR0lORUVSSU5HEAESFwoTRkxFRVRfQUNUT1JfUFJPRFVDVBACEhoKFkZMRUVUX0FDVE9SX09QRVJBVElPTlMQAxIYChRGTEVFVF9BQ1RPUl9CVVNJTkVTUxAEEhcKE0ZMRUVUX0FDVE9SX1NVUFBPUlQQBRIVChFGTEVFVF9BQ1RPUl9TQUxFUxAGKuQBChJGbGVldEFsbG93ZWRBY3Rpb24SJAogRkxFRVRfQUxMT1dFRF9BQ1RJT05fVU5TUEVDSUZJRUQQABIdChlGTEVFVF9BTExPV0VEX0FDVElPTl9WSUVXEAESIAocRkxFRVRfQUxMT1dFRF9BQ1RJT05fSU5TVEFMTBACEhwKGEZMRUVUX0FMTE9XRURfQUNUSU9OX0FSTRAEEiIKHkZMRUVUX0FMTE9XRURfQUNUSU9OX0NPTkZJR1VSRRAFEh8KG0ZMRUVUX0FMTE9XRURfQUNUSU9OX1JFUEFJUhAGIgQIAxADKlIKEEZsZWV0VmFyaWFudEtpbmQSIgoeRkxFRVRfVkFSSUFOVF9LSU5EX1VOU1BFQ0lGSUVEEAASGgoWRkxFRVRfVkFSSUFOVF9LSU5EX1NDTRABKroBChdGbGVldENvbmZpZ3VyYXRpb25TdGF0ZRIpCiVGTEVFVF9DT05GSUdVUkFUSU9OX1NUQVRFX1VOU1BFQ0lGSUVEEAASIwofRkxFRVRfQ09ORklHVVJBVElPTl9TVEFURV9SRUFEWRABEigKJEZMRUVUX0NPTkZJR1VSQVRJT05fU1RBVEVfSU5DT01QTEVURRACEiUKIUZMRUVUX0NPTkZJR1VSQVRJT05fU1RBVEVfVU5LTk9XThADKqACChdGbGVldEluc3RhbGxhdGlvblN0YXR1cxIpCiVGTEVFVF9JTlNUQUxMQVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASJQohRkxFRVRfSU5TVEFMTEFUSU9OX1NUQVRVU19VTktOT1dOEAESKwonRkxFRVRfSU5TVEFMTEFUSU9OX1NUQVRVU19OT1RfSU5TVEFMTEVEEAISMQotRkxFRVRfSU5TVEFMTEFUSU9OX1NUQVRVU19QQVJUSUFMTFlfSU5TVEFMTEVEEAMSJwojRkxFRVRfSU5TVEFMTEFUSU9OX1NUQVRVU19JTlNUQUxMRUQQBBIqCiZGTEVFVF9JTlNUQUxMQVRJT05fU1RBVFVTX05FRURTX1JFUEFJUhAFKt0BChtGbGVldEluc3RhbGxhYmxlQ2FyZGluYWxpdHkSLQopRkxFRVRfSU5TVEFMTEFCTEVfQ0FSRElOQUxJVFlfVU5TUEVDSUZJRUQQABIrCidGTEVFVF9JTlNUQUxMQUJMRV9DQVJESU5BTElUWV9TSU5HTEVUT04QARI0CjBGTEVFVF9JTlNUQUxMQUJMRV9DQVJESU5BTElUWV9PUFRJT05BTF9TSU5HTEVUT04QAhIsCihGTEVFVF9JTlNUQUxMQUJMRV9DQVJESU5BTElUWV9SRVBFQVRBQkxFEAMy2Q4KEUZsZWV0UHJveHlTZXJ2aWNlEqoBCg9HZXRGbGVldENhdGFsb2cSJS53ZWJfcnBjX3Byb3h5LkdldEZsZWV0Q2F0YWxvZ1JlcXVlc3QaJi53ZWJfcnBjX3Byb3h5LkdldEZsZWV0Q2F0YWxvZ1Jlc3BvbnNlIkiatRglcG9zZWlkb24uRmxlZXRTZXJ2aWNlL0dldEZsZWV0Q2F0YWxvZ7q1GBsKF2ZsZWV0X3dvcmtmbG93c19lbmFibGVkEAESpgEKDkFwcGx5RmxlZXRGbG93EiQud2ViX3JwY19wcm94eS5BcHBseUZsZWV0Rmxvd1JlcXVlc3QaJS53ZWJfcnBjX3Byb3h5LkFwcGx5RmxlZXRGbG93UmVzcG9uc2UiR5q1GCRwb3NlaWRvbi5GbGVldFNlcnZpY2UvQXBwbHlGbGVldEZsb3e6tRgbChdmbGVldF93b3JrZmxvd3NfZW5hYmxlZBABEp4BCgxBcm1GbGVldEZsb3cSIi53ZWJfcnBjX3Byb3h5LkFybUZsZWV0Rmxvd1JlcXVlc3QaIy53ZWJfcnBjX3Byb3h5LkFybUZsZWV0Rmxvd1Jlc3BvbnNlIkWatRgicG9zZWlkb24uRmxlZXRTZXJ2aWNlL0FybUZsZWV0Rmxvd7q1GBsKF2ZsZWV0X3dvcmtmbG93c19lbmFibGVkEAESugEKE0RlYWN0aXZhdGVGbGVldEZsb3cSKS53ZWJfcnBjX3Byb3h5LkRlYWN0aXZhdGVGbGVldEZsb3dSZXF1ZXN0Gioud2ViX3JwY19wcm94eS5EZWFjdGl2YXRlRmxlZXRGbG93UmVzcG9uc2UiTJq1GClwb3NlaWRvbi5GbGVldFNlcnZpY2UvRGVhY3RpdmF0ZUZsZWV0Rmxvd7q1GBsKF2ZsZWV0X3dvcmtmbG93c19lbmFibGVkEAEStgEKElVuaW5zdGFsbEZsZWV0RmxvdxIoLndlYl9ycGNfcHJveHkuVW5pbnN0YWxsRmxlZXRGbG93UmVxdWVzdBopLndlYl9ycGNfcHJveHkuVW5pbnN0YWxsRmxlZXRGbG93UmVzcG9uc2UiS5q1GChwb3NlaWRvbi5GbGVldFNlcnZpY2UvVW5pbnN0YWxsRmxlZXRGbG93urUYGwoXZmxlZXRfd29ya2Zsb3dzX2VuYWJsZWQQARK2AQoSQ29uZmlndXJlRmxlZXRGbG93Eigud2ViX3JwY19wcm94eS5Db25maWd1cmVGbGVldEZsb3dSZXF1ZXN0Gikud2ViX3JwY19wcm94eS5Db25maWd1cmVGbGVldEZsb3dSZXNwb25zZSJLmrUYKHBvc2VpZG9uLkZsZWV0U2VydmljZS9Db25maWd1cmVGbGVldEZsb3e6tRgbChdmbGVldF93b3JrZmxvd3NfZW5hYmxlZBABEqoBCg9SZXBhaXJGbGVldEZsb3cSJS53ZWJfcnBjX3Byb3h5LlJlcGFpckZsZWV0Rmxvd1JlcXVlc3QaJi53ZWJfcnBjX3Byb3h5LlJlcGFpckZsZWV0Rmxvd1Jlc3BvbnNlIkiatRglcG9zZWlkb24uRmxlZXRTZXJ2aWNlL1JlcGFpckZsZWV0Rmxvd7q1GBsKF2ZsZWV0X3dvcmtmbG93c19lbmFibGVkEAESwgEKFUdldEZsZWV0Rmxvd0xpZmVjeWNsZRIrLndlYl9ycGNfcHJveHkuR2V0RmxlZXRGbG93TGlmZWN5Y2xlUmVxdWVzdBosLndlYl9ycGNfcHJveHkuR2V0RmxlZXRGbG93TGlmZWN5Y2xlUmVzcG9uc2UiTpq1GCtwb3NlaWRvbi5GbGVldFNlcnZpY2UvR2V0RmxlZXRGbG93TGlmZWN5Y2xlurUYGwoXZmxlZXRfd29ya2Zsb3dzX2VuYWJsZWQQARLGAQoWTGlzdEZsZWV0SW5zdGFsbGF0aW9ucxIsLndlYl9ycGNfcHJveHkuTGlzdEZsZWV0SW5zdGFsbGF0aW9uc1JlcXVlc3QaLS53ZWJfcnBjX3Byb3h5Lkxpc3RGbGVldEluc3RhbGxhdGlvbnNSZXNwb25zZSJPmrUYLHBvc2VpZG9uLkZsZWV0U2VydmljZS9MaXN0RmxlZXRJbnN0YWxsYXRpb25zurUYGwoXZmxlZXRfd29ya2Zsb3dzX2VuYWJsZWQQARLiAQodR2V0RmxlZXRDb25maWd1cmF0aW9uRG9jdW1lbnQSMy53ZWJfcnBjX3Byb3h5LkdldEZsZWV0Q29uZmlndXJhdGlvbkRvY3VtZW50UmVxdWVzdBo0LndlYl9ycGNfcHJveHkuR2V0RmxlZXRDb25maWd1cmF0aW9uRG9jdW1lbnRSZXNwb25zZSJWmrUYM3Bvc2VpZG9uLkZsZWV0U2VydmljZS9HZXRGbGVldENvbmZpZ3VyYXRpb25Eb2N1bWVudLq1GBsKF2ZsZWV0X3dvcmtmbG93c19lbmFibGVkEAFiBnByb3RvMw",[se,oZ]);var rZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.MANAGED=1]="MANAGED",e[e.INSTALLING_USER=2]="INSTALLING_USER",e[e.EXISTING_SERVICE_ACCOUNT=3]="EXISTING_SERVICE_ACCOUNT"})(rZ||(rZ={}));var iZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.AVAILABLE=1]="AVAILABLE",e[e.UNAVAILABLE=2]="UNAVAILABLE"})(iZ||(iZ={}));var lZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.APPLYING=1]="APPLYING",e[e.READY_TO_ARM=2]="READY_TO_ARM",e[e.FAILED_RETRYABLE=3]="FAILED_RETRYABLE",e[e.ARMED=5]="ARMED"})(lZ||(lZ={}));var sZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.AVAILABLE=1]="AVAILABLE",e[e.STALE=2]="STALE",e[e.UNAVAILABLE=3]="UNAVAILABLE"})(sZ||(sZ={}));var aZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.AVAILABLE=1]="AVAILABLE",e[e.BLOCKED_REQUIREMENTS=2]="BLOCKED_REQUIREMENTS",e[e.NOT_AVAILABLE=3]="NOT_AVAILABLE"})(aZ||(aZ={}));var cZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.TEXT=1]="TEXT",e[e.STRING_LIST=2]="STRING_LIST",e[e.ENVIRONMENT=3]="ENVIRONMENT",e[e.SECRET_REFERENCE=4]="SECRET_REFERENCE",e[e.INTEGRATION=5]="INTEGRATION",e[e.BOOLEAN=6]="BOOLEAN",e[e.CHOICE=7]="CHOICE"})(cZ||(cZ={}));var dZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.INTERACTIVE=1]="INTERACTIVE",e[e.HUMAN_ON_LOOP=2]="HUMAN_ON_LOOP",e[e.AUTONOMOUS=3]="AUTONOMOUS",e[e.HYBRID=4]="HYBRID"})(dZ||(dZ={}));var uZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ON_DEMAND=1]="ON_DEMAND",e[e.EVENT_DRIVEN=2]="EVENT_DRIVEN",e[e.SCHEDULED=3]="SCHEDULED",e[e.CONTINUOUS=4]="CONTINUOUS"})(uZ||(uZ={}));var hZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ENGINEERING=1]="ENGINEERING",e[e.PRODUCT=2]="PRODUCT",e[e.OPERATIONS=3]="OPERATIONS",e[e.BUSINESS=4]="BUSINESS",e[e.SUPPORT=5]="SUPPORT",e[e.SALES=6]="SALES"})(hZ||(hZ={}));var bZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.VIEW=1]="VIEW",e[e.INSTALL=2]="INSTALL",e[e.ARM=4]="ARM",e[e.CONFIGURE=5]="CONFIGURE",e[e.REPAIR=6]="REPAIR"})(bZ||(bZ={}));var AZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SCM=1]="SCM"})(AZ||(AZ={}));var fZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.READY=1]="READY",e[e.INCOMPLETE=2]="INCOMPLETE",e[e.UNKNOWN=3]="UNKNOWN"})(fZ||(fZ={}));var VZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.UNKNOWN=1]="UNKNOWN",e[e.NOT_INSTALLED=2]="NOT_INSTALLED",e[e.PARTIALLY_INSTALLED=3]="PARTIALLY_INSTALLED",e[e.INSTALLED=4]="INSTALLED",e[e.NEEDS_REPAIR=5]="NEEDS_REPAIR"})(VZ||(VZ={}));var mZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SINGLETON=1]="SINGLETON",e[e.OPTIONAL_SINGLETON=2]="OPTIONAL_SINGLETON",e[e.REPEATABLE=3]="REPEATABLE"})(mZ||(mZ={}));var K2=Q("CiNzZXJ2aWNlcy9hcGlfcHJveHkvcHVibGljX2FwaS5wcm90bxIKcHVibGljX2FwaSI1CgpBY3Rpb25JdGVtEg0KBXRpdGxlGAEgASgJEhAKA3VybBgCIAEoCUgAiAEBQgYKBF91cmwiKQoaQWN0aW9uc0dldFVzZXJTdGF0ZVJlcXVlc3QSCwoDa2V5GAEgASgJIkQKG0FjdGlvbnNHZXRVc2VyU3RhdGVSZXNwb25zZRINCgV2YWx1ZRgBIAEoCRIWCg52ZXJzaW9uX251bWJlchgCIAEoAyJoChpBY3Rpb25zU2V0VXNlclN0YXRlUmVxdWVzdBILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSGwoOdmVyc2lvbl9udW1iZXIYAyABKANIAIgBAUIRCg9fdmVyc2lvbl9udW1iZXIiNQobQWN0aW9uc1NldFVzZXJTdGF0ZVJlc3BvbnNlEhYKDnZlcnNpb25fbnVtYmVyGAEgASgDImIKEkFjdGl2ZVN1YnNjcmlwdGlvbhIsCghlbmRfZGF0ZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHgoWdXNhZ2VfYmFsYW5jZV9kZXBsZXRlZBgCIAEoCCLhAQoPQWdlbnRDYXBhYmlsaXR5EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSLwoFc2NvcGUYAyABKA4yIC5wdWJsaWNfYXBpLkFnZW50Q2FwYWJpbGl0eVNjb3BlEj8KDG5hdGl2ZV90b29scxgEIAMoCzIpLnB1YmxpY19hcGkuQWdlbnRDYXBhYmlsaXR5VG9vbERlZmluaXRpb24SOQoLbWNwX3NlcnZlcnMYBSADKAsyJC5wdWJsaWNfYXBpLkFnZW50Q2FwYWJpbGl0eU1DUFNlcnZlciJkChhBZ2VudENhcGFiaWxpdHlNQ1BTZXJ2ZXISEwoLc2VydmVyX25hbWUYASABKAkSEgoKc2VydmVyX3VybBgCIAEoCRIfChdyZXF1aXJlZF9jcmVkZW50aWFsX2tleRgDIAEoCSJhChhBZ2VudENhcGFiaWxpdHlSZWZlcmVuY2USFwoPY2FwYWJpbGl0eV9uYW1lGAEgASgJEhUKDWFsbG93ZWRfdG9vbHMYAiADKAkSFQoNYmxvY2tlZF90b29scxgDIAMoCSIyCh1BZ2VudENhcGFiaWxpdHlUb29sRGVmaW5pdGlvbhIRCgl0b29sX25hbWUYASABKAki+gMKC0FnZW50Q29uZmlnEjMKD3dvcmtzcGFjZV9zZXR1cBgBIAEoCzIaLnB1YmxpY19hcGkuV29ya3NwYWNlU2V0dXASMwoOc3RhcnRpbmdfbm9kZXMYAiADKAsyGy5wdWJsaWNfYXBpLkNoYXRSZXF1ZXN0Tm9kZRIcCg91c2VyX2d1aWRlbGluZXMYAyABKAlIAIgBARIhChR3b3Jrc3BhY2VfZ3VpZGVsaW5lcxgEIAEoCUgBiAEBEhIKBW1vZGVsGAYgASgJSAKIAQESIgoVaXNfc2V0dXBfc2NyaXB0X2FnZW50GAcgASgISAOIAQESMAoLbWNwX3NlcnZlcnMYCCADKAsyGy5wdWJsaWNfYXBpLk1jcFNlcnZlckNvbmZpZxISCgV0aXRsZRgJIAEoCUgEiAEBEjYKDnJlcXVlc3Rfc291cmNlGAogASgOMhkucHVibGljX2FwaS5SZXF1ZXN0U291cmNlSAWIAQESFgoOZGlzYWJsZWRfdG9vbHMYCyADKAlCEgoQX3VzZXJfZ3VpZGVsaW5lc0IXChVfd29ya3NwYWNlX2d1aWRlbGluZXNCCAoGX21vZGVsQhgKFl9pc19zZXR1cF9zY3JpcHRfYWdlbnRCCAoGX3RpdGxlQhEKD19yZXF1ZXN0X3NvdXJjZUoECAUQBiKQAgoSQWdlbnRIaXN0b3J5VXBkYXRlEjAKBHR5cGUYASABKA4yIi5wdWJsaWNfYXBpLkFnZW50SGlzdG9yeVVwZGF0ZVR5cGUSNgoIZXhjaGFuZ2UYAiABKAsyHy5wdWJsaWNfYXBpLlJlbW90ZUFnZW50RXhjaGFuZ2VIAIgBARI4Cg9leGNoYW5nZV91cGRhdGUYAyABKAsyGi5wdWJsaWNfYXBpLkV4Y2hhbmdlVXBkYXRlSAGIAQESKwoFYWdlbnQYBCABKAsyFy5wdWJsaWNfYXBpLlJlbW90ZUFnZW50SAKIAQFCCwoJX2V4Y2hhbmdlQhIKEF9leGNoYW5nZV91cGRhdGVCCAoGX2FnZW50IuwCCg9BZ2VudExpc3RVcGRhdGUSLQoEdHlwZRgBIAEoDjIfLnB1YmxpY19hcGkuQWdlbnRMaXN0VXBkYXRlVHlwZRI0ChB1cGRhdGVfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgVhZ2VudBgDIAEoCzIXLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRIAIgBARIdChBkZWxldGVkX2FnZW50X2lkGAQgASgJSAGIAQESKwoKYWxsX2FnZW50cxgFIAMoCzIXLnB1YmxpY19hcGkuUmVtb3RlQWdlbnQSFwoKbWF4X2FnZW50cxgGIAEoBUgCiAEBEh4KEW1heF9hY3RpdmVfYWdlbnRzGAcgASgFSAOIAQFCCAoGX2FnZW50QhMKEV9kZWxldGVkX2FnZW50X2lkQg0KC19tYXhfYWdlbnRzQhQKEl9tYXhfYWN0aXZlX2FnZW50cyKiAQoMQWdlbnRQZXJzb25hEgoKAmlkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEiwKBXNjb3BlGAMgASgOMh0ucHVibGljX2FwaS5BZ2VudFBlcnNvbmFTY29wZRJDChVyZXF1aXJlZF9jYXBhYmlsaXRpZXMYBCADKAsyJC5wdWJsaWNfYXBpLkFnZW50Q2FwYWJpbGl0eVJlZmVyZW5jZSJfChlBZ2VudFdvcmtzcGFjZUNoYXRSZXF1ZXN0EkIKD3JlcXVlc3RfZGV0YWlscxgBIAEoCzIpLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRDaGF0UmVxdWVzdERldGFpbHMiQQomQWdlbnRXb3Jrc3BhY2VHZXRMYXN0U2VxdWVuY2VJZFJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJIk0KJ0FnZW50V29ya3NwYWNlR2V0TGFzdFNlcXVlbmNlSWRSZXNwb25zZRIiChpsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZV9pZBgBIAEoDSIZChdBZ2VudFdvcmtzcGFjZUludGVycnVwdCJeCh9BZ2VudFdvcmtzcGFjZVBvbGxVcGRhdGVSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIiChpsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZV9pZBgCIAEoDSJVCiBBZ2VudFdvcmtzcGFjZVBvbGxVcGRhdGVSZXNwb25zZRIxCgd1cGRhdGVzGAEgAygLMiAucHVibGljX2FwaS5BZ2VudFdvcmtzcGFjZVVwZGF0ZSJ4CiZBZ2VudFdvcmtzcGFjZVJlcG9ydENoYXRIaXN0b3J5UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSNQoMY2hhdF9oaXN0b3J5GAIgAygLMh8ucHVibGljX2FwaS5SZW1vdGVBZ2VudEV4Y2hhbmdlIikKJ0FnZW50V29ya3NwYWNlUmVwb3J0Q2hhdEhpc3RvcnlSZXNwb25zZSJoCilBZ2VudFdvcmtzcGFjZVJlcG9ydExhc3RTZXF1ZW5jZUlkUmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSIgoabGFzdF9wcm9jZXNzZWRfc2VxdWVuY2VfaWQYAiABKA0iLAoqQWdlbnRXb3Jrc3BhY2VSZXBvcnRMYXN0U2VxdWVuY2VJZFJlc3BvbnNlIocBCiRBZ2VudFdvcmtzcGFjZVJlcG9ydFNldHVwTG9nc1JlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJEkYKFndvcmtzcGFjZV9zZXR1cF9zdGF0dXMYAyABKAsyJi5wdWJsaWNfYXBpLlJlbW90ZVdvcmtzcGFjZVNldHVwU3RhdHVzIicKJUFnZW50V29ya3NwYWNlUmVwb3J0U2V0dXBMb2dzUmVzcG9uc2UisQEKIUFnZW50V29ya3NwYWNlUmVwb3J0U3RhdHVzUmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSLQoGc3RhdHVzGAIgASgOMh0ucHVibGljX2FwaS5SZW1vdGVBZ2VudFN0YXR1cxImChloYXNfYWN0aXZlX3NzaF9jb25uZWN0aW9uGAMgASgISACIAQFCHAoaX2hhc19hY3RpdmVfc3NoX2Nvbm5lY3Rpb24iJAoiQWdlbnRXb3Jrc3BhY2VSZXBvcnRTdGF0dXNSZXNwb25zZSJaChtBZ2VudFdvcmtzcGFjZVN0cmVhbVJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJEiIKGmxhc3RfcHJvY2Vzc2VkX3NlcXVlbmNlX2lkGAIgASgNIlcKHEFnZW50V29ya3NwYWNlU3RyZWFtUmVzcG9uc2USNwoHdXBkYXRlcxgBIAMoCzImLnB1YmxpY19hcGkuQWdlbnRXb3Jrc3BhY2VTdHJlYW1VcGRhdGUigwIKGkFnZW50V29ya3NwYWNlU3RyZWFtVXBkYXRlEjIKBHR5cGUYASABKA4yJC5wdWJsaWNfYXBpLkFnZW50V29ya3NwYWNlVXBkYXRlVHlwZRITCgtzZXF1ZW5jZV9pZBgCIAEoDRI7CglpbnRlcnJ1cHQYAyABKAsyIy5wdWJsaWNfYXBpLkFnZW50V29ya3NwYWNlSW50ZXJydXB0SACIAQESQAoMY2hhdF9yZXF1ZXN0GAQgASgLMiUucHVibGljX2FwaS5BZ2VudFdvcmtzcGFjZUNoYXRSZXF1ZXN0SAGIAQFCDAoKX2ludGVycnVwdEIPCg1fY2hhdF9yZXF1ZXN0Iq4BChRBZ2VudFdvcmtzcGFjZVVwZGF0ZRI4CglpbnRlcnJ1cHQYAiABKAsyIy5wdWJsaWNfYXBpLkFnZW50V29ya3NwYWNlSW50ZXJydXB0SAASPQoMY2hhdF9yZXF1ZXN0GAMgASgLMiUucHVibGljX2FwaS5BZ2VudFdvcmtzcGFjZUNoYXRSZXF1ZXN0SAASEwoLc2VxdWVuY2VfaWQYASABKA1CCAoGdXBkYXRlInsKGEFnZ3JlZ2F0ZWRPdXRjb21lTWV0cmljcxIMCgRuYW1lGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRINCgVjb3VudBgDIAEoBBIsCgZ2YWx1ZXMYBCABKAsyHC5wdWJsaWNfYXBpLkFnZ3JlZ2F0ZWRWYWx1ZXMilAEKEEFnZ3JlZ2F0ZWRWYWx1ZXMSCwoDc3VtGAEgASgBEgsKA2F2ZxgCIAEoARILCgNtaW4YAyABKAESCwoDbWF4GAQgASgBEgsKA3AyNRgFIAEoARILCgNwNTAYBiABKAESCwoDcDc1GAcgASgBEgsKA3A5MBgIIAEoARILCgNwOTUYCSABKAESCwoDcDk5GAogASgBIuYBChNBbmFseXRpY3NUYWdTdW1tYXJ5EgsKA2tleRgBIAEoCRIVCg1zZXNzaW9uX2NvdW50GAIgASgEEhkKEW9ic2VydmF0aW9uX2NvdW50GAQgASgEEh4KFmRpc3RpbmN0X3N1YmplY3RfY291bnQYBSABKAQSNAoGdmFsdWVzGAYgAygLMiQucHVibGljX2FwaS5BbmFseXRpY3NUYWdWYWx1ZVN1bW1hcnkSEwoLZGlzcGxheV9rZXkYByABKAkSJQoGc291cmNlGAggASgOMhUucHVibGljX2FwaS5UYWdTb3VyY2UikgEKGEFuYWx5dGljc1RhZ1ZhbHVlU3VtbWFyeRINCgV2YWx1ZRgBIAEoCRIVCg1kaXNwbGF5X3ZhbHVlGAIgASgJEhUKDXNlc3Npb25fY291bnQYAyABKAQSGQoRb2JzZXJ2YXRpb25fY291bnQYBSABKAQSHgoWZGlzdGluY3Rfc3ViamVjdF9jb3VudBgGIAEoBCJbChdBdGxhc3NpYW5Ub29sRXh0cmFJbnB1dBISCgpzZXJ2ZXJfdXJsGAEgASgJEhoKEnBlcnNvbmFsX2FwaV90b2tlbhgCIAEoCRIQCgh1c2VybmFtZRgDIAEoCSIqCgxCYW5uZXJCdXR0b24SDQoFdGl0bGUYASABKAkSCwoDdXJsGAIgASgJItcDChFCYW5uZXJJbmZvcm1hdGlvbhIPCgdtZXNzYWdlGAEgASgJEi0KBmJ1dHRvbhgCIAEoCzIYLnB1YmxpY19hcGkuQmFubmVyQnV0dG9uSACIAQESPQoLYmFubmVyX3R5cGUYAyABKA4yKC5wdWJsaWNfYXBpLkJhbm5lckluZm9ybWF0aW9uLkJhbm5lclR5cGUSRwoNZGlzcGxheV9zdHlsZRgEIAEoDjIwLnB1YmxpY19hcGkuQmFubmVySW5mb3JtYXRpb24uQmFubmVyRGlzcGxheVN0eWxlIoUBCgpCYW5uZXJUeXBlEhcKE0JBTk5FUl9UWVBFX1VOS05PV04QABIMCghVUkxfTElOSxABEhoKFlVTQUdFX0JBTEFOQ0VfREVQTEVURUQQAhIVChFVU0FHRV9CQUxBTkNFX0xPVxADEh0KGVJFUVVJUkVfUEFZTUVOVF9GT1JfVFJJQUwQBCJnChJCYW5uZXJEaXNwbGF5U3R5bGUSIAocQkFOTkVSX0RJU1BMQVlfU1RZTEVfVU5LTk9XThAAEggKBElORk8QARINCglQUk9NT1RJT04QAhILCgdXQVJOSU5HEAMSCQoFQUxFUlQQBEIJCgdfYnV0dG9uIjsKEkJhdGNoVXBsb2FkUmVxdWVzdBIlCgVibG9icxgBIAMoCzIWLnB1YmxpY19hcGkuVXBsb2FkQmxvYiIpChNCYXRjaFVwbG9hZFJlc3BvbnNlEhIKCmJsb2JfbmFtZXMYASADKAkiYQoFQmxvYnMSGgoNY2hlY2twb2ludF9pZBgBIAEoCUgAiAEBEhMKC2FkZGVkX2Jsb2JzGAIgAygJEhUKDWRlbGV0ZWRfYmxvYnMYAyADKAlCEAoOX2NoZWNrcG9pbnRfaWQiigEKEUJvb3RzdHJhcFNldHRpbmdzElMKHXJlcG9zaXRvcnlfYWxsb3dsaXN0X3NldHRpbmdzGAEgASgLMicucHVibGljX2FwaS5SZXBvc2l0b3J5QWxsb3dsaXN0U2V0dGluZ3NIAIgBAUIgCh5fcmVwb3NpdG9yeV9hbGxvd2xpc3Rfc2V0dGluZ3Mi3wEKC0NoYW5nZWRGaWxlEhAKCG9sZF9wYXRoGAEgASgJEhAKCG5ld19wYXRoGAIgASgJEjsKC2NoYW5nZV90eXBlGAMgASgOMiYucHVibGljX2FwaS5DaGFuZ2VkRmlsZS5GaWxlQ2hhbmdlVHlwZRIUCgxvbGRfY29udGVudHMYBCABKAkSFAoMbmV3X2NvbnRlbnRzGAUgASgJIkMKDkZpbGVDaGFuZ2VUeXBlEgkKBUFEREVEEAASCwoHREVMRVRFRBABEgwKCE1PRElGSUVEEAISCwoHUkVOQU1FRBADIpgEChBDaGFuZ2VkRmlsZVN0YXRzEj0KEGFkZGVkX2ZpbGVfc3RhdHMYASABKAsyIy5wdWJsaWNfYXBpLlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEj4KEWJyb2tlbl9maWxlX3N0YXRzGAIgASgLMiMucHVibGljX2FwaS5QZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cxI+ChFjb3BpZWRfZmlsZV9zdGF0cxgDIAEoCzIjLnB1YmxpY19hcGkuUGVyVHlwZUNoYW5nZWRGaWxlU3RhdHMSPwoSZGVsZXRlZF9maWxlX3N0YXRzGAQgASgLMiMucHVibGljX2FwaS5QZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cxJAChNtb2RpZmllZF9maWxlX3N0YXRzGAUgASgLMiMucHVibGljX2FwaS5QZXJUeXBlQ2hhbmdlZEZpbGVTdGF0cxI/ChJyZW5hbWVkX2ZpbGVfc3RhdHMYBiABKAsyIy5wdWJsaWNfYXBpLlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEkAKE3VubWVyZ2VkX2ZpbGVfc3RhdHMYByABKAsyIy5wdWJsaWNfYXBpLlBlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEj8KEnVua25vd25fZmlsZV9zdGF0cxgIIAEoCzIjLnB1YmxpY19hcGkuUGVyVHlwZUNoYW5nZWRGaWxlU3RhdHMi2QIKGUNoYXRGZWF0dXJlRGV0ZWN0aW9uRmxhZ3MSIQoQc3VwcG9ydF9tYXJrZG93bhgBIAEoCEICGAFIAIgBARIjChJzdXBwb3J0X3Jhd19vdXRwdXQYAiABKAhCAhgBSAGIAQESJQoYc3VwcG9ydF9yZWxldmFudF9zb3VyY2VzGAMgASgISAKIAQESIwoWc3VwcG9ydF90b29sX3VzZV9zdGFydBgEIAEoCEgDiAEBEiYKGXN1cHBvcnRfcGFyYWxsZWxfdG9vbF91c2UYBSABKAhIBIgBAUITChFfc3VwcG9ydF9tYXJrZG93bkIVChNfc3VwcG9ydF9yYXdfb3V0cHV0QhsKGV9zdXBwb3J0X3JlbGV2YW50X3NvdXJjZXNCGQoXX3N1cHBvcnRfdG9vbF91c2Vfc3RhcnRCHAoaX3N1cHBvcnRfcGFyYWxsZWxfdG9vbF91c2UikAEKDENoYXRGZWVkYmFjaxISCgpyZXF1ZXN0X2lkGAEgASgJEioKBnJhdGluZxgCIAEoDjIaLnB1YmxpY19hcGkuRmVlZGJhY2tSYXRpbmcSDAoEbm90ZRgDIAEoCRIcCgRtb2RlGAQgASgOMg4uY2hhdC5DaGF0TW9kZRIUCgxyZWFzb25fY29kZXMYBSADKAkiFgoUQ2hhdEZlZWRiYWNrUmVzcG9uc2Ui1QIKGkNoYXRJbnB1dENvbXBsZXRpb25SZXF1ZXN0EhIKBW1vZGVsGAEgASgJSACIAQESDgoGcHJvbXB0GAIgASgJEgwKBHBhdGgYAyABKAkSEwoGc3VmZml4GAQgASgJSAGIAQESIAoFYmxvYnMYBSABKAsyES5wdWJsaWNfYXBpLkJsb2JzEjIKDHJlY2VuY3lfaW5mbxgGIAEoCzIXLnB1YmxpY19hcGkuUmVjZW5jeUluZm9IAogBARIRCgRsYW5nGAcgASgJSAOIAQESGAoLc2VxdWVuY2VfaWQYCCABKA1IBIgBARIuCgtlZGl0X2V2ZW50cxgJIAMoCzIZLnB1YmxpY19hcGkuRmlsZUVkaXRFdmVudEIICgZfbW9kZWxCCQoHX3N1ZmZpeEIPCg1fcmVjZW5jeV9pbmZvQgcKBV9sYW5nQg4KDF9zZXF1ZW5jZV9pZCKpAQodQ2hhdElucHV0Q29tcGxldGlvblJlc29sdXRpb24SEgoKcmVxdWVzdF9pZBgBIAEoCRIVCg1lbWl0X3RpbWVfc2VjGAIgASgDEhYKDmVtaXRfdGltZV9uc2VjGAMgASgFEhgKEHJlc29sdmVfdGltZV9zZWMYBCABKAMSGQoRcmVzb2x2ZV90aW1lX25zZWMYBSABKAUSEAoIYWNjZXB0ZWQYBiABKAgiJwolQ2hhdElucHV0Q29tcGxldGlvblJlc29sdXRpb25SZXNwb25zZSLnAQobQ2hhdElucHV0Q29tcGxldGlvblJlc3BvbnNlEgwKBHRleHQYASABKAkSHAoUdW5rbm93bl9tZW1vcnlfbmFtZXMYAiADKAkSIwobc3VnZ2VzdGVkX3ByZWZpeF9jaGFyX2NvdW50GAMgASgNEiMKG3N1Z2dlc3RlZF9zdWZmaXhfY2hhcl9jb3VudBgEIAEoDRI0ChBjb21wbGV0aW9uX2l0ZW1zGAUgAygLMhoucHVibGljX2FwaS5Db21wbGV0aW9uSXRlbRIcChRjaGVja3BvaW50X25vdF9mb3VuZBgGIAEoCCL5EQoLQ2hhdFJlcXVlc3QSEgoFbW9kZWwYASABKAlIAIgBARIRCgRwYXRoGAIgASgJSAGIAQESEwoGcHJlZml4GAMgASgJSAKIAQESGgoNc2VsZWN0ZWRfY29kZRgEIAEoCUgDiAEBEhMKBnN1ZmZpeBgFIAEoCUgEiAEBEg8KB21lc3NhZ2UYBiABKAkSKgoMY2hhdF9oaXN0b3J5GAcgAygLMhQucHVibGljX2FwaS5FeGNoYW5nZRIWCglibG9iX25hbWUYCCABKAlIBYgBARIZCgxwcmVmaXhfYmVnaW4YCSABKAVIBogBARIcCg9jdXJzb3JfcG9zaXRpb24YCiABKAVIB4gBARIXCgpzdWZmaXhfZW5kGAsgASgFSAiIAQESFgoKYmxvYl9uYW1lcxgMIAMoCUICGAESEQoEbGFuZxgNIAEoCUgJiAEBEhMKC3NlcXVlbmNlX2lkGA4gASgNEiAKBWJsb2JzGA8gASgLMhEucHVibGljX2FwaS5CbG9icxIZChF1c2VyX2d1aWRlZF9ibG9icxgRIAMoCRIbChNleHRlcm5hbF9zb3VyY2VfaWRzGBMgAygJEikKHGVuYWJsZV9wcmVmZXJlbmNlX2NvbGxlY3Rpb24YECABKAhICogBARItCiBjb250ZXh0X2NvZGVfZXhjaGFuZ2VfcmVxdWVzdF9pZBgSIAEoCUgLiAEBEioKHWRpc2FibGVfYXV0b19leHRlcm5hbF9zb3VyY2VzGBQgASgISAyIAQESSwoXZmVhdHVyZV9kZXRlY3Rpb25fZmxhZ3MYFSABKAsyJS5wdWJsaWNfYXBpLkNoYXRGZWF0dXJlRGV0ZWN0aW9uRmxhZ3NIDYgBARIcCg91c2VyX2d1aWRlbGluZXMYFiABKAlIDogBARIhChR3b3Jrc3BhY2VfZ3VpZGVsaW5lcxgXIAEoCUgPiAEBEjQKEHRvb2xfZGVmaW5pdGlvbnMYGCADKAsyGi5wdWJsaWNfYXBpLlRvb2xEZWZpbml0aW9uEioKBW5vZGVzGBkgAygLMhsucHVibGljX2FwaS5DaGF0UmVxdWVzdE5vZGUSHAoEbW9kZRgaIAEoDjIOLmNoYXQuQ2hhdE1vZGUSMgoMcGVyc29uYV90eXBlGBwgASgOMhcucHVibGljX2FwaS5QZXJzb25hVHlwZUgQiAEBEh8KBXJ1bGVzGB0gAygLMhAucHVibGljX2FwaS5SdWxlEhMKBnNpbGVudBgeIAEoCEgRiAEBEjsKFHRoaXJkX3BhcnR5X292ZXJyaWRlGB8gASgLMhguY2hhdC5UaGlyZFBhcnR5T3ZlcnJpZGVIEogBARIcCg9jb252ZXJzYXRpb25faWQYICABKAlIE4gBARIaCg1zeXN0ZW1fcHJvbXB0GCEgASgJSBSIAQESRwoac3lzdGVtX3Byb21wdF9yZXBsYWNlbWVudHMYIiADKAsyIy5wdWJsaWNfYXBpLlN5c3RlbVByb21wdFJlcGxhY2VtZW50EiEKBnNraWxscxgkIAMoCzIRLnB1YmxpY19hcGkuU2tpbGwSHQoQYWdlbnRfcGVyc29uYV9pZBglIAEoCUgViAEBEhQKB3R1cm5faWQYJiABKAlIFogBARIjChZwYXJlbnRfY29udmVyc2F0aW9uX2lkGCcgASgJSBeIAQESIQoUcm9vdF9jb252ZXJzYXRpb25faWQYKCABKAlIGIgBARIhChRzeXN0ZW1fcHJvbXB0X2FwcGVuZBgpIAEoCUgZiAEBEjYKEmJyaW5nX3lvdXJfb3duX2tleRgqIAEoCzIVLmNoYXQuQnJpbmdZb3VyT3duS2V5SBqIAQESHAoPc3Vic2NyaXB0aW9uX2lkGCsgASgJSBuIAQESEwoLcGVyc29uYV9pZHMYLCADKAkSGwoOc2VuZGVyX3VzZXJfaWQYLSABKAlIHIgBARIkChdwb3NlaWRvbl9zZW5kZXJfdXNlcl9pZBguIAEoCUgdiAEBEjMKE3Zmc19maWxlX3JlZmVyZW5jZXMYLyADKAsyFi5jaGF0LlZGU0ZpbGVSZWZlcmVuY2USMwoTbWNwX3Rvb2xfcmVmZXJlbmNlcxgwIAMoCzIWLmNoYXQuTUNQVG9vbFJlZmVyZW5jZRIdChByZWFzb25pbmdfZWZmb3J0GDEgASgJSB6IAQFCCAoGX21vZGVsQgcKBV9wYXRoQgkKB19wcmVmaXhCEAoOX3NlbGVjdGVkX2NvZGVCCQoHX3N1ZmZpeEIMCgpfYmxvYl9uYW1lQg8KDV9wcmVmaXhfYmVnaW5CEgoQX2N1cnNvcl9wb3NpdGlvbkINCgtfc3VmZml4X2VuZEIHCgVfbGFuZ0IfCh1fZW5hYmxlX3ByZWZlcmVuY2VfY29sbGVjdGlvbkIjCiFfY29udGV4dF9jb2RlX2V4Y2hhbmdlX3JlcXVlc3RfaWRCIAoeX2Rpc2FibGVfYXV0b19leHRlcm5hbF9zb3VyY2VzQhoKGF9mZWF0dXJlX2RldGVjdGlvbl9mbGFnc0ISChBfdXNlcl9ndWlkZWxpbmVzQhcKFV93b3Jrc3BhY2VfZ3VpZGVsaW5lc0IPCg1fcGVyc29uYV90eXBlQgkKB19zaWxlbnRCFwoVX3RoaXJkX3BhcnR5X292ZXJyaWRlQhIKEF9jb252ZXJzYXRpb25faWRCEAoOX3N5c3RlbV9wcm9tcHRCEwoRX2FnZW50X3BlcnNvbmFfaWRCCgoIX3R1cm5faWRCGQoXX3BhcmVudF9jb252ZXJzYXRpb25faWRCFwoVX3Jvb3RfY29udmVyc2F0aW9uX2lkQhcKFV9zeXN0ZW1fcHJvbXB0X2FwcGVuZEIVChNfYnJpbmdfeW91cl9vd25fa2V5QhIKEF9zdWJzY3JpcHRpb25faWRCEQoPX3NlbmRlcl91c2VyX2lkQhoKGF9wb3NlaWRvbl9zZW5kZXJfdXNlcl9pZEITChFfcmVhc29uaW5nX2VmZm9ydEoECBsQHEoECCMQJFIJY2FudmFzX2lkIooBChVDaGF0UmVxdWVzdEVkaXRFdmVudHMSNAoLZWRpdF9ldmVudHMYASADKAsyHy5wdWJsaWNfYXBpLkNoYXRSZXF1ZXN0RmlsZUVkaXQSMAoGc291cmNlGAIgASgOMhsucHVibGljX2FwaS5FZGl0RXZlbnRTb3VyY2VIAIgBAUIJCgdfc291cmNlIoYBCg9DaGF0UmVxdWVzdEZpbGUSEQoJZmlsZV9kYXRhGAEgASgJEhIKCm1lZGlhX3R5cGUYAiABKAkSFgoJZmlsZV9uYW1lGAMgASgJSACIAQESFwoKcGFnZV9jb3VudBgEIAEoBUgBiAEBQgwKCl9maWxlX25hbWVCDQoLX3BhZ2VfY291bnQiuwEKE0NoYXRSZXF1ZXN0RmlsZUVkaXQSDAoEcGF0aBgBIAEoCRIdChBiZWZvcmVfYmxvYl9uYW1lGAIgASgJSACIAQESHAoPYWZ0ZXJfYmxvYl9uYW1lGAMgASgJSAGIAQESMAoFZWRpdHMYBCADKAsyIS5wdWJsaWNfYXBpLkNoYXRSZXF1ZXN0U2luZ2xlRWRpdEITChFfYmVmb3JlX2Jsb2JfbmFtZUISChBfYWZ0ZXJfYmxvYl9uYW1lIsQBChNDaGF0UmVxdWVzdElkZVN0YXRlEjoKEXdvcmtzcGFjZV9mb2xkZXJzGAEgAygLMh8ucHVibGljX2FwaS5Xb3Jrc3BhY2VGb2xkZXJJbmZvEiMKG3dvcmtzcGFjZV9mb2xkZXJzX3VuY2hhbmdlZBgCIAEoCBI3ChBjdXJyZW50X3Rlcm1pbmFsGAMgASgLMhgucHVibGljX2FwaS5UZXJtaW5hbEluZm9IAIgBAUITChFfY3VycmVudF90ZXJtaW5hbCJTChBDaGF0UmVxdWVzdEltYWdlEhIKCmltYWdlX2RhdGEYASABKAkSKwoGZm9ybWF0GAIgASgOMhsucHVibGljX2FwaS5JbWFnZUZvcm1hdFR5cGUiowQKD0NoYXRSZXF1ZXN0Tm9kZRIKCgJpZBgBIAEoBRItCgR0eXBlGAIgASgOMh8ucHVibGljX2FwaS5DaGF0UmVxdWVzdE5vZGVUeXBlEjMKCXRleHRfbm9kZRgDIAEoCzIbLnB1YmxpY19hcGkuQ2hhdFJlcXVlc3RUZXh0SACIAQESQAoQdG9vbF9yZXN1bHRfbm9kZRgEIAEoCzIhLnB1YmxpY19hcGkuQ2hhdFJlcXVlc3RUb29sUmVzdWx0SAGIAQESNQoKaW1hZ2Vfbm9kZRgFIAEoCzIcLnB1YmxpY19hcGkuQ2hhdFJlcXVlc3RJbWFnZUgCiAEBEjwKDmlkZV9zdGF0ZV9ub2RlGAcgASgLMh8ucHVibGljX2FwaS5DaGF0UmVxdWVzdElkZVN0YXRlSAOIAQESQAoQZWRpdF9ldmVudHNfbm9kZRgIIAEoCzIhLnB1YmxpY19hcGkuQ2hhdFJlcXVlc3RFZGl0RXZlbnRzSASIAQESMwoJZmlsZV9ub2RlGAogASgLMhsucHVibGljX2FwaS5DaGF0UmVxdWVzdEZpbGVIBYgBAUIMCgpfdGV4dF9ub2RlQhMKEV90b29sX3Jlc3VsdF9ub2RlQg0KC19pbWFnZV9ub2RlQhEKD19pZGVfc3RhdGVfbm9kZUITChFfZWRpdF9ldmVudHNfbm9kZUIMCgpfZmlsZV9ub2RlSgQIBhAHSgQICRAKInUKFUNoYXRSZXF1ZXN0U2luZ2xlRWRpdBIZChFiZWZvcmVfbGluZV9zdGFydBgBIAEoDRITCgtiZWZvcmVfdGV4dBgCIAEoCRIYChBhZnRlcl9saW5lX3N0YXJ0GAMgASgNEhIKCmFmdGVyX3RleHQYBCABKAkiIgoPQ2hhdFJlcXVlc3RUZXh0Eg8KB2NvbnRlbnQYASABKAki/QIKFUNoYXRSZXF1ZXN0VG9vbFJlc3VsdBITCgt0b29sX3VzZV9pZBgBIAEoCRIPCgdjb250ZW50GAIgASgJEhAKCGlzX2Vycm9yGAMgASgIEhcKCnJlcXVlc3RfaWQYBCABKAlIAIgBARI4Cg1jb250ZW50X25vZGVzGAUgAygLMiEucHVibGljX2FwaS5Ub29sUmVzdWx0Q29udGVudE5vZGUSGAoLZHVyYXRpb25fbXMYBiABKANIAYgBARIaCg1zdGFydF90aW1lX21zGAcgASgDSAKIAQESQQoIbWV0YWRhdGEYCCADKAsyLy5wdWJsaWNfYXBpLkNoYXRSZXF1ZXN0VG9vbFJlc3VsdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUINCgtfcmVxdWVzdF9pZEIOCgxfZHVyYXRpb25fbXNCEAoOX3N0YXJ0X3RpbWVfbXMijwMKDENoYXRSZXNwb25zZRIMCgR0ZXh0GAEgASgJEhoKEnVua25vd25fYmxvYl9uYW1lcxgCIAMoCRIcChRjaGVja3BvaW50X25vdF9mb3VuZBgDIAEoCBI9ChV3b3Jrc3BhY2VfZmlsZV9jaHVua3MYBCADKAsyHi5wdWJsaWNfYXBpLldvcmtzcGFjZUZpbGVDaHVuaxJNCh1pbmNvcnBvcmF0ZWRfZXh0ZXJuYWxfc291cmNlcxgFIAMoCzImLnB1YmxpY19hcGkuSW5jb3Jwb3JhdGVkRXh0ZXJuYWxTb3VyY2USKQoFbm9kZXMYBiADKAsyGi5wdWJsaWNfYXBpLkNoYXRSZXN1bHROb2RlEjQKC3N0b3BfcmVhc29uGAcgASgOMhoucHVibGljX2FwaS5DaGF0U3RvcFJlYXNvbkgAiAEBEiAKE3N1bW1hcml6ZV9hbmRfcmV0cnkYCCABKAhIAYgBAUIOCgxfc3RvcF9yZWFzb25CFgoUX3N1bW1hcml6ZV9hbmRfcmV0cnkiyQIKGUNoYXRSZXN1bHRCaWxsaW5nTWV0YWRhdGESGwoOdHJhbnNhY3Rpb25faWQYASABKAlIAIgBARIYChBjcmVkaXRzX2NvbnN1bWVkGAIgASgFEhAKCGNvc3RfdXNkGAcgASgJEikKCnVzYWdlX3VuaXQYCCABKA4yFS5wdWJsaWNfYXBpLlVzYWdlVW5pdBIhChRlZmZlY3RpdmVfbW9kZWxfbmFtZRgJIAEoCUgBiAEBQhEKD190cmFuc2FjdGlvbl9pZEIXChVfZWZmZWN0aXZlX21vZGVsX25hbWVKBAgDEARKBAgEEAVKBAgFEAZKBAgGEAdSDGlucHV0X3Rva2Vuc1INb3V0cHV0X3Rva2Vuc1IXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnNSG2NhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucyKSBAoOQ2hhdFJlc3VsdE5vZGUSCgoCaWQYASABKAUSLAoEdHlwZRgCIAEoDjIeLnB1YmxpY19hcGkuQ2hhdFJlc3VsdE5vZGVUeXBlEg8KB2NvbnRlbnQYAyABKAkSNAoIdG9vbF91c2UYBCABKAsyHS5wdWJsaWNfYXBpLkNoYXRSZXN1bHRUb29sVXNlSACIAQESNQoIdGhpbmtpbmcYBSABKAsyHi5wdWJsaWNfYXBpLkNoYXRSZXN1bHRUaGlua2luZ0gBiAEBEkQKEGJpbGxpbmdfbWV0YWRhdGEYBiABKAsyJS5wdWJsaWNfYXBpLkNoYXRSZXN1bHRCaWxsaW5nTWV0YWRhdGFIAogBARI5CghtZXRhZGF0YRgHIAEoCzIiLnB1YmxpY19hcGkuQ2hhdFJlc3VsdE5vZGVNZXRhZGF0YUgDiAEBEjoKC3Rva2VuX3VzYWdlGAggASgLMiAucHVibGljX2FwaS5DaGF0UmVzdWx0VG9rZW5Vc2FnZUgEiAEBEhkKDHRpbWVzdGFtcF9tcxgKIAEoBEgFiAEBQgsKCV90b29sX3VzZUILCglfdGhpbmtpbmdCEwoRX2JpbGxpbmdfbWV0YWRhdGFCCwoJX21ldGFkYXRhQg4KDF90b2tlbl91c2FnZUIPCg1fdGltZXN0YW1wX21zSgQICRAKUg1jb250ZXh0X3VzYWdlIqYBChZDaGF0UmVzdWx0Tm9kZU1ldGFkYXRhEhYKCW9wZW5haV9pZBgBIAEoCUgAiAEBEhYKCWdvb2dsZV90cxgCIAEoDEgBiAEBEhUKCHByb3ZpZGVyGAMgASgJSAKIAQESEgoFcGhhc2UYBCABKAlIA4gBAUIMCgpfb3BlbmFpX2lkQgwKCl9nb29nbGVfdHNCCwoJX3Byb3ZpZGVyQggKBl9waGFzZSLaAQoSQ2hhdFJlc3VsdFRoaW5raW5nEhQKB3N1bW1hcnkYASABKAlIAIgBARIeChFlbmNyeXB0ZWRfY29udGVudBgCIAEoCUgBiAEBEhQKB2NvbnRlbnQYAyABKAlIAogBARIpChxvcGVuYWlfcmVzcG9uc2VzX2FwaV9pdGVtX2lkGAQgASgJSAOIAQFCCgoIX3N1bW1hcnlCFAoSX2VuY3J5cHRlZF9jb250ZW50QgoKCF9jb250ZW50Qh8KHV9vcGVuYWlfcmVzcG9uc2VzX2FwaV9pdGVtX2lkIuAFChRDaGF0UmVzdWx0VG9rZW5Vc2FnZRIZCgxpbnB1dF90b2tlbnMYASABKAVIAIgBARIaCg1vdXRwdXRfdG9rZW5zGAIgASgFSAGIAQESJAoXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMYAyABKAVIAogBARIoChtjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMYBCABKAVIA4gBARIhChRzeXN0ZW1fcHJvbXB0X3Rva2VucxgFIAEoBUgEiAEBEiAKE2NoYXRfaGlzdG9yeV90b2tlbnMYBiABKAVIBYgBARIjChZjdXJyZW50X21lc3NhZ2VfdG9rZW5zGAcgASgFSAaIAQESHwoSbWF4X2NvbnRleHRfdG9rZW5zGAggASgFSAeIAQESJAoXdG9vbF9kZWZpbml0aW9uc190b2tlbnMYCSABKAVICIgBARIfChJ0b29sX3Jlc3VsdF90b2tlbnMYCiABKAVICYgBARImChlhc3Npc3RhbnRfcmVzcG9uc2VfdG9rZW5zGAsgASgFSAqIAQESHgoRbWF4X291dHB1dF90b2tlbnMYDSABKAVIC4gBAUIPCg1faW5wdXRfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQhoKGF9jYWNoZV9yZWFkX2lucHV0X3Rva2Vuc0IeChxfY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zQhcKFV9zeXN0ZW1fcHJvbXB0X3Rva2Vuc0IWChRfY2hhdF9oaXN0b3J5X3Rva2Vuc0IZChdfY3VycmVudF9tZXNzYWdlX3Rva2Vuc0IVChNfbWF4X2NvbnRleHRfdG9rZW5zQhoKGF90b29sX2RlZmluaXRpb25zX3Rva2Vuc0IVChNfdG9vbF9yZXN1bHRfdG9rZW5zQhwKGl9hc3Npc3RhbnRfcmVzcG9uc2VfdG9rZW5zQhQKEl9tYXhfb3V0cHV0X3Rva2VucyJjChFDaGF0UmVzdWx0VG9vbFVzZRITCgt0b29sX3VzZV9pZBgBIAEoCRIRCgl0b29sX25hbWUYAiABKAkSEgoKaW5wdXRfanNvbhgDIAEoCRISCgppc19wYXJ0aWFsGAQgASgIIlwKFkNoZWNrVG9vbFNhZmV0eVJlcXVlc3QSKQoHdG9vbF9pZBgBIAEoDjIYLnB1YmxpY19hcGkuUmVtb3RlVG9vbElkEhcKD3Rvb2xfaW5wdXRfanNvbhgCIAEoCSIqChdDaGVja1Rvb2xTYWZldHlSZXNwb25zZRIPCgdpc19zYWZlGAEgASgIIjoKFkNoZWNrcG9pbnRCbG9ic1JlcXVlc3QSIAoFYmxvYnMYASABKAsyES5wdWJsaWNfYXBpLkJsb2JzIjQKF0NoZWNrcG9pbnRCbG9ic1Jlc3BvbnNlEhkKEW5ld19jaGVja3BvaW50X2lkGAEgASgJIpACChhDbGllbnRDb21wbGV0aW9uVGltZWxpbmUSEgoKcmVxdWVzdF9pZBgBIAEoCRIgChhpbml0aWFsX3JlcXVlc3RfdGltZV9zZWMYAiABKAMSIQoZaW5pdGlhbF9yZXF1ZXN0X3RpbWVfbnNlYxgDIAEoBRIaChJhcGlfc3RhcnRfdGltZV9zZWMYBCABKAMSGwoTYXBpX3N0YXJ0X3RpbWVfbnNlYxgFIAEoBRIYChBhcGlfZW5kX3RpbWVfc2VjGAYgASgDEhkKEWFwaV9lbmRfdGltZV9uc2VjGAcgASgFEhUKDWVtaXRfdGltZV9zZWMYCCABKAMSFgoOZW1pdF90aW1lX25zZWMYCSABKAUiWgofQ2xpZW50Q29tcGxldGlvblRpbWVsaW5lUmVxdWVzdBI3Cgl0aW1lbGluZXMYASADKAsyJC5wdWJsaWNfYXBpLkNsaWVudENvbXBsZXRpb25UaW1lbGluZSIiCiBDbGllbnRDb21wbGV0aW9uVGltZWxpbmVSZXNwb25zZSI6ChJDbGllbnRNZXRyaWNzRXZlbnQSFQoNY2xpZW50X21ldHJpYxgBIAEoCRINCgV2YWx1ZRgCIAEoBCJHChRDbGllbnRNZXRyaWNzUmVxdWVzdBIvCgdtZXRyaWNzGAEgAygLMh4ucHVibGljX2FwaS5DbGllbnRNZXRyaWNzRXZlbnQiFwoVQ2xpZW50TWV0cmljc1Jlc3BvbnNlIo8BChBDbG91ZEFjY2Vzc0VudHJ5EhYKDnByaW5jaXBhbF90eXBlGAEgASgJEhQKDHByaW5jaXBhbF9pZBgCIAEoCRIMCgRyb2xlGAMgASgJEhIKCmdyYW50ZWRfYnkYBCABKAkSEgoKY3JlYXRlZF9hdBgFIAEoCRIXCg9wcmluY2lwYWxfZW1haWwYBiABKAkihAEKF0Nsb3VkQWNjZXNzR3JhbnRSZXF1ZXN0EhMKC29iamVjdF90eXBlGAEgASgJEhEKCW9iamVjdF9pZBgCIAEoCRIzCglwcmluY2lwYWwYAyABKAsyIC5wdWJsaWNfYXBpLkNsb3VkQWNjZXNzUHJpbmNpcGFsEgwKBHJvbGUYBCABKAkiGgoYQ2xvdWRBY2Nlc3NHcmFudFJlc3BvbnNlIkAKFkNsb3VkQWNjZXNzTGlzdFJlcXVlc3QSEwoLb2JqZWN0X3R5cGUYASABKAkSEQoJb2JqZWN0X2lkGAIgASgJIkgKF0Nsb3VkQWNjZXNzTGlzdFJlc3BvbnNlEi0KB2VudHJpZXMYASADKAsyHC5wdWJsaWNfYXBpLkNsb3VkQWNjZXNzRW50cnkiWQoUQ2xvdWRBY2Nlc3NQcmluY2lwYWwSEQoHdXNlcl9pZBgBIAEoCUgAEg8KBWVtYWlsGAIgASgJSAASEAoGdGVuYW50GAMgASgISABCCwoJcHJpbmNpcGFsIncKGENsb3VkQWNjZXNzUmV2b2tlUmVxdWVzdBITCgtvYmplY3RfdHlwZRgBIAEoCRIRCglvYmplY3RfaWQYAiABKAkSMwoJcHJpbmNpcGFsGAMgASgLMiAucHVibGljX2FwaS5DbG91ZEFjY2Vzc1ByaW5jaXBhbCIbChlDbG91ZEFjY2Vzc1Jldm9rZVJlc3BvbnNlItwECgpDbG91ZEFnZW50EhAKCGFnZW50X2lkGAEgASgJEhIKCmFnZW50X25hbWUYAiABKAkSNgoMY2FwYWJpbGl0aWVzGAMgAygOMiAucHVibGljX2FwaS5DbG91ZEFnZW50Q2FwYWJpbGl0eRIsCgZzdGF0dXMYBCABKA4yHC5wdWJsaWNfYXBpLkNsb3VkQWdlbnRTdGF0dXMSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLd29ya2Zsb3dfaWQYByABKAkSGQoNbWVzc2FnZV9jb3VudBgIIAEoDUICGAESEQoJZXhwZXJ0X2lkGAkgASgJEh0KFWV4ZWN1dGlvbl9lbnZpcm9ubWVudBgKIAEoCRIQCghhcmNoaXZlZBgLIAEoCBIQCghzcGFjZV9pZBgMIAEoCRIWCg5lbnZpcm9ubWVudF9pZBgNIAEoCRIRCglkYWVtb25faWQYDiABKAkSFgoOZGFlbW9uX3Bvb2xfaWQYDyABKAkSEwoLcmVzaWRlbnRfaWQYECABKAkSEQoJdm1fc3RhdHVzGBEgASgJEhgKEHZtX2Vycm9yX21lc3NhZ2UYEiABKAkSPgoQdm1fZXJyb3JfZGV0YWlscxgTIAEoCzIkLnB1YmxpY19hcGkuQ2xvdWRBZ2VudFZtRXJyb3JEZXRhaWxzEhcKD3BhcmVudF9hZ2VudF9pZBgUIAEoCSJwChdDbG91ZEFnZW50U2Vzc2lvbkNvbmZpZxI3Cg9hZ2VudF9sb29wX3R5cGUYASABKA4yHi5wdWJsaWNfYXBpLkNsb3VkQWdlbnRMb29wVHlwZRISCgVtb2RlbBgCIAEoCUgAiAEBQggKBl9tb2RlbCJxChhDbG91ZEFnZW50Vm1FcnJvckRldGFpbHMSDwoHc3VtbWFyeRgBIAEoCRIMCgRoaW50GAIgASgJEhEKCXJhd19lcnJvchgDIAEoCRIRCglidWlsZF9sb2cYBCABKAkSEAoIYnVpbGRfaWQYBSABKAkiMgoeQ2xvdWRBZ2VudHNBcmNoaXZlQWdlbnRSZXF1ZXN0EhAKCGFnZW50X2lkGAEgASgJIjMKH0Nsb3VkQWdlbnRzQXJjaGl2ZUFnZW50UmVzcG9uc2USEAoIYWdlbnRfaWQYASABKAkiNAokQ2xvdWRBZ2VudHNBenVyZURldk9wc1Byb3ZpZGVyUGFyYW1zEgwKBGhvc3QYASABKAkiPAonQ2xvdWRBZ2VudHNCYXRjaEdldE1lc3NhZ2VDb3VudHNSZXF1ZXN0EhEKCWFnZW50X2lkcxgBIAMoCSLJAQooQ2xvdWRBZ2VudHNCYXRjaEdldE1lc3NhZ2VDb3VudHNSZXNwb25zZRJlChJjb3VudHNfYnlfYWdlbnRfaWQYASADKAsySS5wdWJsaWNfYXBpLkNsb3VkQWdlbnRzQmF0Y2hHZXRNZXNzYWdlQ291bnRzUmVzcG9uc2UuQ291bnRzQnlBZ2VudElkRW50cnkaNgoUQ291bnRzQnlBZ2VudElkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgNOgI4ASLLAgoXQ2xvdWRBZ2VudHNDb250ZW50QmxvY2sSMAoEdGV4dBgBIAEoCzIgLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNUZXh0QmxvY2tIABI3Cgh0b29sX3VzZRgCIAEoCzIjLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNUb29sVXNlQmxvY2tIABI9Cgt0b29sX3Jlc3VsdBgDIAEoCzImLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNUb29sUmVzdWx0QmxvY2tIABI4Cgh0aGlua2luZxgEIAEoCzIkLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNUaGlua2luZ0Jsb2NrSAASQwoOZXh0ZXJuYWxfZXZlbnQYBSABKAsyKS5wdWJsaWNfYXBpLkNsb3VkQWdlbnRzRXh0ZXJuYWxFdmVudEJsb2NrSABCBwoFYmxvY2sitgIKHUNsb3VkQWdlbnRzQ3JlYXRlQWdlbnRSZXF1ZXN0EhIKCmFnZW50X25hbWUYASABKAkSNgoMY2FwYWJpbGl0aWVzGAIgAygOMiAucHVibGljX2FwaS5DbG91ZEFnZW50Q2FwYWJpbGl0eRIcCg9pbml0aWFsX21lc3NhZ2UYAyABKAlIAIgBARJACg5zZXNzaW9uX2NvbmZpZxgEIAEoCzIjLnB1YmxpY19hcGkuQ2xvdWRBZ2VudFNlc3Npb25Db25maWdIAYgBARIcCg9pZGVtcG90ZW5jeV9rZXkYBSABKAlIAogBARIQCghzcGFjZV9pZBgGIAEoCUISChBfaW5pdGlhbF9tZXNzYWdlQhEKD19zZXNzaW9uX2NvbmZpZ0ISChBfaWRlbXBvdGVuY3lfa2V5IkcKHkNsb3VkQWdlbnRzQ3JlYXRlQWdlbnRSZXNwb25zZRIlCgVhZ2VudBgBIAEoCzIWLnB1YmxpY19hcGkuQ2xvdWRBZ2VudCIxCh1DbG91ZEFnZW50c0RlbGV0ZUFnZW50UmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCSJDCh5DbG91ZEFnZW50c0RlbGV0ZUFnZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIQCghhZ2VudF9pZBgCIAEoCSKXAQodQ2xvdWRBZ2VudHNFeHRlcm5hbEV2ZW50QmxvY2sSDgoGc291cmNlGAEgASgJEhIKCmV2ZW50X3R5cGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRIPCgdkZXRhaWxzGAQgASgJEhwKD3N1YnNjcmlwdGlvbl9pZBgFIAEoCUgAiAEBQhIKEF9zdWJzY3JpcHRpb25faWQiLgoaQ2xvdWRBZ2VudHNHZXRBZ2VudFJlcXVlc3QSEAoIYWdlbnRfaWQYASABKAkiRAobQ2xvdWRBZ2VudHNHZXRBZ2VudFJlc3BvbnNlEiUKBWFnZW50GAEgASgLMhYucHVibGljX2FwaS5DbG91ZEFnZW50IucCCh1DbG91ZEFnZW50c0dldE1lc3NhZ2VzUmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRIhChBhZnRlcl9tZXNzYWdlX2lkGAIgASgJQgIYAUgAiAEBEhIKBWxpbWl0GAMgASgNSAGIAQESOAoPYWZ0ZXJfdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEjkKEGJlZm9yZV90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESJAoXaW5jbHVkZV9yZXBsYXlfZmlkZWxpdHkYBiABKAhIBIgBAUITChFfYWZ0ZXJfbWVzc2FnZV9pZEIICgZfbGltaXRCEgoQX2FmdGVyX3RpbWVzdGFtcEITChFfYmVmb3JlX3RpbWVzdGFtcEIaChhfaW5jbHVkZV9yZXBsYXlfZmlkZWxpdHkihwQKHkNsb3VkQWdlbnRzR2V0TWVzc2FnZXNSZXNwb25zZRIwCghtZXNzYWdlcxgBIAMoCzIeLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNNZXNzYWdlEhAKCGhhc19uZXh0GAIgASgIEh0KEGZpcnN0X21lc3NhZ2VfaWQYAyABKAlIAIgBARIcCg9sYXN0X21lc3NhZ2VfaWQYBCABKAlIAYgBARIyCgxhZ2VudF9zdGF0dXMYBSABKA4yHC5wdWJsaWNfYXBpLkNsb3VkQWdlbnRTdGF0dXMSPgoQcGVuZGluZ19tZXNzYWdlcxgGIAMoCzIkLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNRdWV1ZWRNZXNzYWdlEhQKDHF1ZXVlX3BhdXNlZBgHIAEoCBIRCgloYXNfbmV3ZXIYCCABKAgSOQoQb2xkZXN0X3RpbWVzdGFtcBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARI5ChBuZXdlc3RfdGltZXN0YW1wGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBQhMKEV9maXJzdF9tZXNzYWdlX2lkQhIKEF9sYXN0X21lc3NhZ2VfaWRCEwoRX29sZGVzdF90aW1lc3RhbXBCEwoRX25ld2VzdF90aW1lc3RhbXAiawojQ2xvdWRBZ2VudHNHZXRNZXNzYWdlc1N0cmVhbVJlcXVlc3QSEAoIYWdlbnRfaWQYASABKAkSHQoQYWZ0ZXJfbWVzc2FnZV9pZBgCIAEoCUgAiAEBQhMKEV9hZnRlcl9tZXNzYWdlX2lkItcBCiRDbG91ZEFnZW50c0dldE1lc3NhZ2VzU3RyZWFtUmVzcG9uc2USEAoIYWdlbnRfaWQYASABKAkSMAoIbWVzc2FnZXMYAiADKAsyHi5wdWJsaWNfYXBpLkNsb3VkQWdlbnRzTWVzc2FnZRIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYAyABKA0SHgoRbGF0ZXN0X21lc3NhZ2VfaWQYBCABKAlIAIgBARIWCg5zdHJlYW1fdGltZW91dBgFIAEoCEIUChJfbGF0ZXN0X21lc3NhZ2VfaWQiPgofQ2xvdWRBZ2VudHNHaXRIdWJQcm92aWRlclBhcmFtcxIMCgRob3N0GAEgASgJEg0KBW93bmVyGAIgASgJIi8KH0Nsb3VkQWdlbnRzR2l0TGFiUHJvdmlkZXJQYXJhbXMSDAoEaG9zdBgBIAEoCSK6AgojQ2xvdWRBZ2VudHNIYW5kb2ZmVG9Qb3NlaWRvblJlcXVlc3QSGAoQdGFza19kZXNjcmlwdGlvbhgBIAEoCRIYChBpbml0aWFsX21lc3NhZ2VzGAIgAygJEhYKCWV4cGVydF9pZBgDIAEoCUgAiAEBEhcKCmFnZW50X25hbWUYBCABKAlIAYgBARIVCg10b3VjaGVkX2ZpbGVzGAUgAygJEh8KEndvcmtpbmdfdHJlZV9wYXRjaBgGIAEoCUgCiAEBEiUKGGV4aXN0aW5nX2NvbnZlcnNhdGlvbl9pZBgHIAEoCUgDiAEBQgwKCl9leHBlcnRfaWRCDQoLX2FnZW50X25hbWVCFQoTX3dvcmtpbmdfdHJlZV9wYXRjaEIbChlfZXhpc3RpbmdfY29udmVyc2F0aW9uX2lkIjgKJENsb3VkQWdlbnRzSGFuZG9mZlRvUG9zZWlkb25SZXNwb25zZRIQCghhZ2VudF9pZBgBIAEoCSKAAwocQ2xvdWRBZ2VudHNMaXN0QWdlbnRzUmVxdWVzdBIUCgxzZWFyY2hfcXVlcnkYASABKAkSGAoQaW5jbHVkZV9hcmNoaXZlZBgCIAEoCBIRCglleHBlcnRfaWQYAyABKAkSMQoNY3JlYXRlZF9hZnRlchgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoOY3JlYXRlZF9iZWZvcmUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDmluY2x1ZGVfc2hhcmVkGAYgASgIEhsKE2luY2x1ZGVfb2xhY19zaGFyZWQYByABKAgSDQoFbGltaXQYCCABKA0SEgoKcGFnZV90b2tlbhgJIAEoCRIQCghzcGFjZV9pZBgKIAEoCRIaChJkZWZhdWx0X3NwYWNlX29ubHkYCyABKAgSHAoPcGFyZW50X2FnZW50X2lkGAwgASgJSACIAQFCEgoQX3BhcmVudF9hZ2VudF9pZCJyCh1DbG91ZEFnZW50c0xpc3RBZ2VudHNSZXNwb25zZRImCgZhZ2VudHMYASADKAsyFi5wdWJsaWNfYXBpLkNsb3VkQWdlbnQSEAoIaGFzX21vcmUYAiABKAgSFwoPbmV4dF9wYWdlX3Rva2VuGAMgASgJItEBCiNDbG91ZEFnZW50c01jcENyZWRlbnRpYWxSZXF1aXJlbWVudBIWCg5yZXF1aXJlbWVudF9pZBgBIAEoCRIVCg1tY3BfY29uZmlnX2lkGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIRCglhdXRoX3R5cGUYBCABKAUSDgoGcmVhc29uGAUgASgJEi4KCmV4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnJlcXVlc3RfaWQYByABKAkiVgobQ2xvdWRBZ2VudHNNY3BUb29sUmVmZXJlbmNlEhEKCXNlcnZlcl9pZBgBIAEoCRIWCgl0b29sX25hbWUYAiABKAlIAIgBAUIMCgpfdG9vbF9uYW1lIowCChJDbG91ZEFnZW50c01lc3NhZ2USCgoCaWQYASABKAkSDAoEcm9sZRgCIAEoCRI0Cgdjb250ZW50GAMgAygLMiMucHVibGljX2FwaS5DbG91ZEFnZW50c0NvbnRlbnRCbG9jaxIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9CghtZXRhZGF0YRgFIAEoCzImLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNNZXNzYWdlTWV0YWRhdGFIAIgBARIZCgxjb21wb3NpdGVfaWQYBiABKAlIAYgBAUILCglfbWV0YWRhdGFCDwoNX2NvbXBvc2l0ZV9pZCLOAQohQ2xvdWRBZ2VudHNNZXNzYWdlQmlsbGluZ01ldGFkYXRhEhYKDnRyYW5zYWN0aW9uX2lkGAEgASgJEhgKEGNyZWRpdHNfY29uc3VtZWQYAiABKAUSEAoIY29zdF91c2QYAyABKAkSKQoKdXNhZ2VfdW5pdBgEIAEoDjIVLnB1YmxpY19hcGkuVXNhZ2VVbml0EiEKFGVmZmVjdGl2ZV9tb2RlbF9uYW1lGAUgASgJSACIAQFCFwoVX2VmZmVjdGl2ZV9tb2RlbF9uYW1lItgFChpDbG91ZEFnZW50c01lc3NhZ2VNZXRhZGF0YRIXCgpyZXF1ZXN0X2lkGAEgASgJSACIAQESGAoLc3RvcF9yZWFzb24YAiABKAlIAYgBARISCgVtb2RlbBgDIAEoCUgCiAEBEjsKC3Rva2VuX3VzYWdlGAQgASgLMiEucHVibGljX2FwaS5DbG91ZEFnZW50c1Rva2VuVXNhZ2VIA4gBARIcCg90dXJuX3JlcXVlc3RfaWQYBSABKAlIBIgBARIXCgppc19wYXJ0aWFsGAYgASgISAWIAQESFQoIaXNfZmluYWwYByABKAhIBogBARIoChtwZXJzaXN0ZWRfdGhyb3VnaF9ldmVudF9zZXEYCCABKANIB4gBARIcCg9zdWJzY3JpcHRpb25faWQYCSABKAlICIgBARIbCg5zZW5kZXJfdXNlcl9pZBgKIAEoCUgJiAEBEkcKEGJpbGxpbmdfbWV0YWRhdGEYCyADKAsyLS5wdWJsaWNfYXBpLkNsb3VkQWdlbnRzTWVzc2FnZUJpbGxpbmdNZXRhZGF0YRJEChN2ZnNfZmlsZV9yZWZlcmVuY2VzGAwgAygLMicucHVibGljX2FwaS5DbG91ZEFnZW50c1Zmc0ZpbGVSZWZlcmVuY2USRAoTbWNwX3Rvb2xfcmVmZXJlbmNlcxgNIAMoCzInLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNNY3BUb29sUmVmZXJlbmNlQg0KC19yZXF1ZXN0X2lkQg4KDF9zdG9wX3JlYXNvbkIICgZfbW9kZWxCDgoMX3Rva2VuX3VzYWdlQhIKEF90dXJuX3JlcXVlc3RfaWRCDQoLX2lzX3BhcnRpYWxCCwoJX2lzX2ZpbmFsQh4KHF9wZXJzaXN0ZWRfdGhyb3VnaF9ldmVudF9zZXFCEgoQX3N1YnNjcmlwdGlvbl9pZEIRCg9fc2VuZGVyX3VzZXJfaWQiUAoZQ2xvdWRBZ2VudHNQcm92aWRlclBhcmFtcxIQCghwcm92aWRlchgBIAEoCRIMCgRob3N0GAIgASgJEhMKC3BhdGhfcHJlZml4GAMgASgJIm4KGENsb3VkQWdlbnRzUXVldWVkTWVzc2FnZRIQCghldmVudF9pZBgBIAEoCRIvCgtyZWNlaXZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHY29udGVudBgDIAEoCSKuAwonQ2xvdWRBZ2VudHNSZWZyZXNoR2l0Q3JlZGVudGlhbHNSZXF1ZXN0Ej0KBmdpdGh1YhgDIAEoCzIrLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNHaXRIdWJQcm92aWRlclBhcmFtc0gAEj0KBmdpdGxhYhgEIAEoCzIrLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNHaXRMYWJQcm92aWRlclBhcmFtc0gAEkgKDGF6dXJlX2Rldm9wcxgFIAEoCzIwLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNBenVyZURldk9wc1Byb3ZpZGVyUGFyYW1zSAASOAoHZ2VuZXJpYxgJIAEoCzIlLnB1YmxpY19hcGkuQ2xvdWRBZ2VudHNQcm92aWRlclBhcmFtc0gAEh4KFmNhcGFiaWxpdHlfaW5zdGFuY2VfaWQYASABKAkSEgoKc2tpcF9jYWNoZRgCIAEoCBIQCghhZ2VudF9pZBgGIAEoCRISCgpyZXF1ZXN0X2lkGAcgASgJEhQKDGRhZW1vbl92bV9pZBgIIAEoCUIRCg9wcm92aWRlcl9wYXJhbXMiKgooQ2xvdWRBZ2VudHNSZWZyZXNoR2l0Q3JlZGVudGlhbHNSZXNwb25zZSJDCh1DbG91ZEFnZW50c1JlbmFtZUFnZW50UmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRIQCghuZXdfbmFtZRgCIAEoCSJHCh5DbG91ZEFnZW50c1JlbmFtZUFnZW50UmVzcG9uc2USJQoFYWdlbnQYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkQWdlbnQiYQoiQ2xvdWRBZ2VudHNSZXF1ZXN0TWNwU2VydmVyUmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRIVCg1tY3BfY29uZmlnX2lkGAIgASgJEhIKCnJlcXVlc3RfaWQYAyABKAkipgEKI0Nsb3VkQWdlbnRzUmVxdWVzdE1jcFNlcnZlclJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCRJUChZjcmVkZW50aWFsX3JlcXVpcmVtZW50GAIgASgLMi8ucHVibGljX2FwaS5DbG91ZEFnZW50c01jcENyZWRlbnRpYWxSZXF1aXJlbWVudEgAiAEBQhkKF19jcmVkZW50aWFsX3JlcXVpcmVtZW50InQKHUNsb3VkQWdlbnRzU2VuZE1lc3NhZ2VSZXF1ZXN0EhAKCGFnZW50X2lkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSHAoPaWRlbXBvdGVuY3lfa2V5GAMgASgJSACIAQFCEgoQX2lkZW1wb3RlbmN5X2tleSJrCh5DbG91ZEFnZW50c1NlbmRNZXNzYWdlUmVzcG9uc2USJQoFYWdlbnQYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkQWdlbnQSDgoGcXVldWVkGAIgASgIEhIKCnJlcXVlc3RfaWQYAyABKAkijgEKFENsb3VkQWdlbnRzVGV4dEJsb2NrEgwKBHRleHQYASABKAkSFgoJZ29vZ2xlX3RzGAIgASgMSACIAQESFgoJb3BlbmFpX2lkGAMgASgJSAGIAQESEgoFcGhhc2UYBCABKAlIAogBAUIMCgpfZ29vZ2xlX3RzQgwKCl9vcGVuYWlfaWRCCAoGX3BoYXNlIs0BChhDbG91ZEFnZW50c1RoaW5raW5nQmxvY2sSDwoHY29udGVudBgBIAEoCRIUCgdzdW1tYXJ5GAIgASgJSACIAQESHgoRZW5jcnlwdGVkX2NvbnRlbnQYAyABKAlIAYgBARIVCghwcm92aWRlchgEIAEoCUgCiAEBEhYKCW9wZW5haV9pZBgFIAEoCUgDiAEBQgoKCF9zdW1tYXJ5QhQKEl9lbmNyeXB0ZWRfY29udGVudEILCglfcHJvdmlkZXJCDAoKX29wZW5haV9pZCL8AgoVQ2xvdWRBZ2VudHNUb2tlblVzYWdlEhQKDGlucHV0X3Rva2VucxgBIAEoDRIVCg1vdXRwdXRfdG9rZW5zGAIgASgNEh8KF2NhY2hlX3JlYWRfaW5wdXRfdG9rZW5zGAMgASgNEiMKG2NhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucxgEIAEoDRIcChRzeXN0ZW1fcHJvbXB0X3Rva2VucxgFIAEoDRIbChNjaGF0X2hpc3RvcnlfdG9rZW5zGAYgASgNEh4KFmN1cnJlbnRfbWVzc2FnZV90b2tlbnMYByABKA0SGgoSbWF4X2NvbnRleHRfdG9rZW5zGAggASgNEh8KF3Rvb2xfZGVmaW5pdGlvbnNfdG9rZW5zGAkgASgNEhoKEnRvb2xfcmVzdWx0X3Rva2VucxgKIAEoDRIhChlhc3Npc3RhbnRfcmVzcG9uc2VfdG9rZW5zGAsgASgNEhkKEW1heF9vdXRwdXRfdG9rZW5zGAwgASgNImYKGkNsb3VkQWdlbnRzVG9vbFJlc3VsdEJsb2NrEhMKC3Rvb2xfdXNlX2lkGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSFQoIaXNfZXJyb3IYAyABKAhIAIgBAUILCglfaXNfZXJyb3IirAEKF0Nsb3VkQWdlbnRzVG9vbFVzZUJsb2NrEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDQoFaW5wdXQYAyABKAkSFgoJZ29vZ2xlX3RzGAQgASgMSACIAQESFgoJb3BlbmFpX2lkGAUgASgJSAGIAQESEgoFcGhhc2UYBiABKAlIAogBAUIMCgpfZ29vZ2xlX3RzQgwKCl9vcGVuYWlfaWRCCAoGX3BoYXNlIjQKIENsb3VkQWdlbnRzVW5hcmNoaXZlQWdlbnRSZXF1ZXN0EhAKCGFnZW50X2lkGAEgASgJIjUKIUNsb3VkQWdlbnRzVW5hcmNoaXZlQWdlbnRSZXNwb25zZRIQCghhZ2VudF9pZBgBIAEoCSJoCihDbG91ZEFnZW50c1VwZGF0ZUFnZW50U2Vzc2lvblRhZ3NSZXF1ZXN0EhAKCGFnZW50X2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgV2YWx1ZRgDIAEoCRIOCgZkZWxldGUYBCABKAgiUgopQ2xvdWRBZ2VudHNVcGRhdGVBZ2VudFNlc3Npb25UYWdzUmVzcG9uc2USJQoFYWdlbnQYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkQWdlbnQidgolQ2xvdWRBZ2VudHNVcGRhdGVTZXNzaW9uQ29uZmlnUmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRI7Cg5zZXNzaW9uX2NvbmZpZxgCIAEoCzIjLnB1YmxpY19hcGkuQ2xvdWRBZ2VudFNlc3Npb25Db25maWciTwomQ2xvdWRBZ2VudHNVcGRhdGVTZXNzaW9uQ29uZmlnUmVzcG9uc2USJQoFYWdlbnQYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkQWdlbnQidQobQ2xvdWRBZ2VudHNWZnNGaWxlUmVmZXJlbmNlEg8KB2ZpbGVfaWQYASABKAkSFQoNZmlsZXN5c3RlbV9pZBgCIAEoCRIMCgRwYXRoGAMgASgJEhAKCHNwYWNlX2lkGAQgASgJEg4KBmlzX2RpchgFIAEoCCL5AgoPQ2xvdWREYWVtb25Qb29sEgoKAmlkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRISCgp2aXNpYmlsaXR5GAQgASgFEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgFIAEoCRIcChRjcmVhdGVkX2J5X3VzZXJfbmFtZRgGIAEoCRISCgpjcmVhdGVkX2F0GAcgASgJEhIKCnVwZGF0ZWRfYXQYCCABKAkSGAoQcmVzb3VyY2VfdmVyc2lvbhgJIAEoAxISCgpkZWxldGVkX2F0GAogASgJEiAKGGRhZW1vbl9jb25uZWN0b3JfdXNlcl9pZBgLIAEoCRIQCghzcGFjZV9pZBgMIAEoCRJXChp3b3Jrc3BhY2VfaXNvbGF0aW9uX3BvbGljeRgNIAEoDjIzLnB1YmxpY19hcGkuQ2xvdWREYWVtb25Qb29sV29ya3NwYWNlSXNvbGF0aW9uUG9saWN5Il8KHUNsb3VkRGFlbW9uUG9vbENvbm5lY3RvcklucHV0EhEKB3VzZXJfaWQYASABKAlIABIeChRzZXJ2aWNlX2FjY291bnRfbmFtZRgCIAEoCUgAQgsKCWNvbm5lY3RvciLLAQoVQ2xvdWREYWVtb25Qb29sRGFlbW9uEg0KBXZtX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLc2xvdHNfdG90YWwYAyABKAUSFAoMc2xvdHNfaW5fdXNlGAQgASgFEhYKDndvcmtzcGFjZV9wYXRoGAUgASgJEhQKDGNvbm5lY3RlZF9hdBgGIAEoCRIWCg5sYXN0X2hlYXJ0YmVhdBgHIAEoCRIPCgdwb29sX2lkGAggASgJEhMKC2NsaV92ZXJzaW9uGAkgASgJIsIBChVDbG91ZERhZW1vblBvb2xTdGF0dXMSFgoOZGFlbW9uc19vbmxpbmUYASABKAUSEwoLc2xvdHNfdG90YWwYAiABKAUSFAoMc2xvdHNfaW5fdXNlGAMgASgFEhgKEGxhc3RfZGFlbW9uX3NlZW4YBCABKAkSKgodd29ya3RyZWVfY2FwYWJsZV9kYWVtb25fY291bnQYBSABKAVIAIgBAUIgCh5fd29ya3RyZWVfY2FwYWJsZV9kYWVtb25fY291bnQipQUKEENsb3VkRW52aXJvbm1lbnQSEAoIaW1hZ2VfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhcKD2N1cnJlbnRfdmVyc2lvbhgEIAEoCRISCgZzdGF0dXMYBSABKAVCAhgBEhIKCnZpc2liaWxpdHkYBiABKAUSFgoObW9kYWxfaW1hZ2VfaWQYByABKAkSEgoKY3JlYXRlZF9hdBgIIAEoCRISCgp1cGRhdGVkX2F0GAkgASgJEhgKEHJlc291cmNlX3ZlcnNpb24YCiABKAMSOgoFcmVwb3MYCyADKAsyKy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRDbG9uZVJlcG9zaXRvcnkSRAoVZW52aXJvbm1lbnRfdmFyaWFibGVzGAwgASgLMiUucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50VmFyaWFibGVzEhIKCmJhc2VfaW1hZ2UYDSABKAkSFwoPcmVmcmVzaF9lbmFibGVkGA4gASgIEhAKCHNwYWNlX2lkGA8gASgJEjQKBHRhZ3MYECADKAsyJi5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnQuVGFnc0VudHJ5EjwKEGxpZmVjeWNsZV9zdGF0dXMYESABKA4yIi5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRTdGF0dXMSGwoTc2FuZGJveF9wcm92aWRlcl9pZBgSIAEoCRI6ChBzYW5kYm94X3Byb3ZpZGVyGBMgASgLMiAucHVibGljX2FwaS5DbG91ZFNhbmRib3hQcm92aWRlchorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJtCh9DbG91ZEVudmlyb25tZW50Q2xvbmVSZXBvc2l0b3J5Eg0KBW93bmVyGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGYnJhbmNoGAMgASgJEgwKBGhvc3QYBCABKAkSDwoHcHJvamVjdBgFIAEoCSKeAwoWQ2xvdWRFbnZpcm9ubWVudENvbmZpZxIUCgxkaXNwbGF5X25hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEgoKdmlzaWJpbGl0eRgDIAEoBRI6CgVyZXBvcxgEIAMoCzIrLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudENsb25lUmVwb3NpdG9yeRJEChVlbnZpcm9ubWVudF92YXJpYWJsZXMYBSABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRWYXJpYWJsZXMSEgoKYmFzZV9pbWFnZRgGIAEoCRIXCg9yZWZyZXNoX2VuYWJsZWQYByABKAgSEAoIc3BhY2VfaWQYCCABKAkSOgoEdGFncxgJIAMoCzIsLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudENvbmZpZy5UYWdzRW50cnkSGwoTc2FuZGJveF9wcm92aWRlcl9pZBgKIAEoCRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK7BAoZQ2xvdWRFbnZpcm9ubWVudE9wZXJhdGlvbhIUCgxvcGVyYXRpb25faWQYASABKAkSQQoOb3BlcmF0aW9uX3R5cGUYAiABKA4yKS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb25UeXBlEhYKDmVudmlyb25tZW50X2lkGAMgASgJEjkKBXN0YXRlGAQgASgOMioucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uU3RhdGUSOQoFcGhhc2UYBSABKA4yKi5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb25QaGFzZRISCgpjcmVhdGVkX2F0GAYgASgJEhIKCnN0YXJ0ZWRfYXQYByABKAkSEgoKdXBkYXRlZF9hdBgIIAEoCRIUCgxjb21wbGV0ZWRfYXQYCSABKAkSHQoQc3RhcnRpbmdfdmVyc2lvbhgKIAEoCUgAiAEBEiEKGXN0YXJ0aW5nX3Jlc291cmNlX3ZlcnNpb24YCyABKAMSOwoGcmVzdWx0GA0gASgLMisucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uUmVzdWx0EjkKBWVycm9yGA4gASgLMioucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uRXJyb3JCEwoRX3N0YXJ0aW5nX3ZlcnNpb25KBAgMEA1SEGNhbmNlbF9yZXF1ZXN0ZWQiggEKHkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb25FcnJvchI8CgRjb2RlGAEgASgOMi4ucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uRXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSEQoJcmV0cnlhYmxlGAMgASgIImQKH0Nsb3VkRW52aXJvbm1lbnRPcGVyYXRpb25SZXN1bHQSFgoObW9kYWxfaW1hZ2VfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIYChByZXNvdXJjZV92ZXJzaW9uGAMgASgDImoKE0Nsb3VkRW52aXJvbm1lbnRSZWYSFwoNYmFzZV9pbWFnZV9pZBgBIAEoCUgAEhgKDmRhZW1vbl9wb29sX2lkGAIgASgJSAASFgoMZGFlbW9uX3ZtX2lkGAMgASgJSABCCAoGdGFyZ2V0IocFChdDbG91ZEVudmlyb25tZW50U3VtbWFyeRI4Cgtwb29sX3N0YXR1cxgUIAEoCzIhLnB1YmxpY19hcGkuQ2xvdWREYWVtb25Qb29sU3RhdHVzSAASOgoIdW5wb29sZWQYFSABKAsyJi5wdWJsaWNfYXBpLkNsb3VkVW5wb29sZWREYWVtb25TdW1tYXJ5SAASCgoCaWQYASABKAkSLgoEa2luZBgCIAEoDjIgLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudEtpbmQSFAoMZGlzcGxheV9uYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKCnZpc2liaWxpdHkYBSABKAUSEgoKY3JlYXRlZF9hdBgGIAEoCRISCgp1cGRhdGVkX2F0GAcgASgJEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgIIAEoCRIcChRjcmVhdGVkX2J5X3VzZXJfbmFtZRgJIAEoCRIQCghzcGFjZV9pZBgKIAEoCRIXCg9jdXJyZW50X3ZlcnNpb24YCyABKAkSMgoGc3RhdHVzGAwgASgOMiIucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50U3RhdHVzElcKGndvcmtzcGFjZV9pc29sYXRpb25fcG9saWN5GA0gASgOMjMucHVibGljX2FwaS5DbG91ZERhZW1vblBvb2xXb3Jrc3BhY2VJc29sYXRpb25Qb2xpY3kSGwoTc2FuZGJveF9wcm92aWRlcl9pZBgOIAEoCRI6ChBzYW5kYm94X3Byb3ZpZGVyGA8gASgLMiAucHVibGljX2FwaS5DbG91ZFNhbmRib3hQcm92aWRlckIICgZleHRyYXMiNwoYQ2xvdWRFbnZpcm9ubWVudFZhcmlhYmxlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkiVAoZQ2xvdWRFbnZpcm9ubWVudFZhcmlhYmxlcxI3Cgl2YXJpYWJsZXMYASADKAsyJC5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRWYXJpYWJsZSKzAgoXQ2xvdWRFbnZpcm9ubWVudFZlcnNpb24SEAoIaW1hZ2VfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIVCg1nY3BfaW1hZ2VfdXJsGAMgASgJEhcKD3Vwc3RyZWFtX2RpZ2VzdBgEIAEoCRISCgpjcmVhdGVkX2F0GAUgASgJEhIKBnN0YXR1cxgGIAEoBUICGAESFQoNZXJyb3JfbWVzc2FnZRgHIAEoCRIWCg5tb2RhbF9pbWFnZV9pZBgIIAEoCRIVCg11cGRhdGVfc2NyaXB0GAkgASgJEhkKEWhhc191cGRhdGVfc2NyaXB0GAogASgIEjwKEGxpZmVjeWNsZV9zdGF0dXMYCyABKA4yIi5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRTdGF0dXMiqwEKHENsb3VkRW52aXJvbm1lbnRWZXJzaW9uRW50cnkSGAoQcmVzb3VyY2VfdmVyc2lvbhgBIAEoAxIyCgZjb25maWcYAiABKAsyIi5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRDb25maWcSEwoLbW9kaWZpZWRfYnkYAyABKAkSEwoLbW9kaWZpZWRfYXQYBCABKAkSEwoLY2hhbmdlX3R5cGUYBSABKAkiPwonQ2xvdWRFbnZpcm9ubWVudHNDYW5jZWxPcGVyYXRpb25SZXF1ZXN0EhQKDG9wZXJhdGlvbl9pZBgBIAEoCSJkCihDbG91ZEVudmlyb25tZW50c0NhbmNlbE9wZXJhdGlvblJlc3BvbnNlEjgKCW9wZXJhdGlvbhgBIAEoCzIlLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudE9wZXJhdGlvbiKFAQonQ2xvdWRFbnZpcm9ubWVudHNDcmVhdGVCYXNlSW1hZ2VSZXF1ZXN0EjIKBmNvbmZpZxgBIAEoCzIiLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudENvbmZpZxIXCgpiYXNlX2ltYWdlGAIgASgJSACIAQFCDQoLX2Jhc2VfaW1hZ2UiXQooQ2xvdWRFbnZpcm9ubWVudHNDcmVhdGVCYXNlSW1hZ2VSZXNwb25zZRIxCgtlbnZpcm9ubWVudBgBIAEoCzIcLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudCKmAgooQ2xvdWRFbnZpcm9ubWVudHNDcmVhdGVEYWVtb25Qb29sUmVxdWVzdBIUCgxkaXNwbGF5X25hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSFwoKdmlzaWJpbGl0eRgDIAEoBUgAiAEBEjwKCWNvbm5lY3RvchgEIAEoCzIpLnB1YmxpY19hcGkuQ2xvdWREYWVtb25Qb29sQ29ubmVjdG9ySW5wdXQSEAoIc3BhY2VfaWQYBSABKAkSVwoad29ya3NwYWNlX2lzb2xhdGlvbl9wb2xpY3kYBiABKA4yMy5wdWJsaWNfYXBpLkNsb3VkRGFlbW9uUG9vbFdvcmtzcGFjZUlzb2xhdGlvblBvbGljeUINCgtfdmlzaWJpbGl0eSJWCilDbG91ZEVudmlyb25tZW50c0NyZWF0ZURhZW1vblBvb2xSZXNwb25zZRIpCgRwb29sGAEgASgLMhsucHVibGljX2FwaS5DbG91ZERhZW1vblBvb2wi2gEKLUNsb3VkRW52aXJvbm1lbnRzQ3JlYXRlU2FuZGJveFByb3ZpZGVyUmVxdWVzdBIMCgRzbHVnGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIUCgdlbmFibGVkGAUgASgISACIAQESEQoJc3BhY2VfaWRzGAYgAygJEhcKCmFsbF9zcGFjZXMYByABKAhIAYgBAUIKCghfZW5hYmxlZEINCgtfYWxsX3NwYWNlc0oECAQQBVINcHJvdmlkZXJfdHlwZSJkCi5DbG91ZEVudmlyb25tZW50c0NyZWF0ZVNhbmRib3hQcm92aWRlclJlc3BvbnNlEjIKCHByb3ZpZGVyGAEgASgLMiAucHVibGljX2FwaS5DbG91ZFNhbmRib3hQcm92aWRlciI7CidDbG91ZEVudmlyb25tZW50c0RlbGV0ZUJhc2VJbWFnZVJlcXVlc3QSEAoIaW1hZ2VfaWQYASABKAkiKgooQ2xvdWRFbnZpcm9ubWVudHNEZWxldGVCYXNlSW1hZ2VSZXNwb25zZSI2CihDbG91ZEVudmlyb25tZW50c0RlbGV0ZURhZW1vblBvb2xSZXF1ZXN0EgoKAmlkGAEgASgJIisKKUNsb3VkRW52aXJvbm1lbnRzRGVsZXRlRGFlbW9uUG9vbFJlc3BvbnNlIl4KLUNsb3VkRW52aXJvbm1lbnRzRGVsZXRlU2FuZGJveFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCRIhChlleHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uGAIgASgDIjAKLkNsb3VkRW52aXJvbm1lbnRzRGVsZXRlU2FuZGJveFByb3ZpZGVyUmVzcG9uc2UihwEKKkNsb3VkRW52aXJvbm1lbnRzRHVwbGljYXRlQmFzZUltYWdlUmVxdWVzdBIXCg9zb3VyY2VfaW1hZ2VfaWQYASABKAkSGAoQbmV3X2Rpc3BsYXlfbmFtZRgCIAEoCRIXCgp2aXNpYmlsaXR5GAMgASgFSACIAQFCDQoLX3Zpc2liaWxpdHkiYAorQ2xvdWRFbnZpcm9ubWVudHNEdXBsaWNhdGVCYXNlSW1hZ2VSZXNwb25zZRIxCgtlbnZpcm9ubWVudBgBIAEoCzIcLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudCJECipDbG91ZEVudmlyb25tZW50c0dldEFjdGl2ZU9wZXJhdGlvblJlcXVlc3QSFgoOZW52aXJvbm1lbnRfaWQYASABKAkiZworQ2xvdWRFbnZpcm9ubWVudHNHZXRBY3RpdmVPcGVyYXRpb25SZXNwb25zZRI4CglvcGVyYXRpb24YASABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb24irgEKJkNsb3VkRW52aXJvbm1lbnRzR2V0RW52aXJvbm1lbnRSZXF1ZXN0EhQKCGltYWdlX2lkGAEgASgJQgIYARIcChBpbmNsdWRlX3ZlcnNpb25zGAIgASgIQgIYARIsCgNyZWYYAyABKAsyHy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRSZWYSIgoacmVzb2x2ZV91c2VyX2Rpc3BsYXlfbmFtZXMYBCABKAgihwMKJ0Nsb3VkRW52aXJvbm1lbnRzR2V0RW52aXJvbm1lbnRSZXNwb25zZRIyCgpiYXNlX2ltYWdlGAQgASgLMhwucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50SAASMgoLZGFlbW9uX3Bvb2wYBSABKAsyGy5wdWJsaWNfYXBpLkNsb3VkRGFlbW9uUG9vbEgAEkEKD3VucG9vbGVkX2RhZW1vbhgGIAEoCzImLnB1YmxpY19hcGkuQ2xvdWRVbnBvb2xlZERhZW1vblN1bW1hcnlIABI1CgtlbnZpcm9ubWVudBgBIAEoCzIcLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudEICGAESOQoIdmVyc2lvbnMYAiADKAsyIy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRWZXJzaW9uQgIYARI0CgdzdW1tYXJ5GAMgASgLMiMucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50U3VtbWFyeUIJCgdkZXRhaWxzIjwKJENsb3VkRW52aXJvbm1lbnRzR2V0T3BlcmF0aW9uUmVxdWVzdBIUCgxvcGVyYXRpb25faWQYASABKAkiYQolQ2xvdWRFbnZpcm9ubWVudHNHZXRPcGVyYXRpb25SZXNwb25zZRI4CglvcGVyYXRpb24YASABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb24idwoqQ2xvdWRFbnZpcm9ubWVudHNHZXRTYW5kYm94UHJvdmlkZXJSZXF1ZXN0EgwKBHNsdWcYASABKAkSFwoPaW5jbHVkZV9kZWxldGVkGAIgASgIEhUKCHNwYWNlX2lkGAMgASgJSACIAQFCCwoJX3NwYWNlX2lkImEKK0Nsb3VkRW52aXJvbm1lbnRzR2V0U2FuZGJveFByb3ZpZGVyUmVzcG9uc2USMgoIcHJvdmlkZXIYASABKAsyIC5wdWJsaWNfYXBpLkNsb3VkU2FuZGJveFByb3ZpZGVyIlAKIkNsb3VkRW52aXJvbm1lbnRzR2V0VmVyc2lvblJlcXVlc3QSEAoIaW1hZ2VfaWQYASABKAkSGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoAyJgCiNDbG91ZEVudmlyb25tZW50c0dldFZlcnNpb25SZXNwb25zZRI5Cgd2ZXJzaW9uGAEgASgLMigucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50VmVyc2lvbkVudHJ5Il8KK0Nsb3VkRW52aXJvbm1lbnRzTGlzdEJhc2VJbWFnZUJ1aWxkc1JlcXVlc3QSEAoIaW1hZ2VfaWQYASABKAkSHgoWaW5jbHVkZV91cGRhdGVfc2NyaXB0cxgCIAEoCCJjCixDbG91ZEVudmlyb25tZW50c0xpc3RCYXNlSW1hZ2VCdWlsZHNSZXNwb25zZRIzCgZidWlsZHMYASADKAsyIy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRWZXJzaW9uIkAKLUNsb3VkRW52aXJvbm1lbnRzTGlzdERhZW1vblBvb2xEYWVtb25zUmVxdWVzdBIPCgdwb29sX2lkGAEgASgJImQKLkNsb3VkRW52aXJvbm1lbnRzTGlzdERhZW1vblBvb2xEYWVtb25zUmVzcG9uc2USMgoHZGFlbW9ucxgBIAMoCzIhLnB1YmxpY19hcGkuQ2xvdWREYWVtb25Qb29sRGFlbW9uIogDCihDbG91ZEVudmlyb25tZW50c0xpc3RFbnZpcm9ubWVudHNSZXF1ZXN0EhcKD2luY2x1ZGVfZGVsZXRlZBgBIAEoCBIiChpyZXNvbHZlX3VzZXJfZGlzcGxheV9uYW1lcxgCIAEoCBIvCgVraW5kcxgDIAMoDjIgLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudEtpbmQSEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkSOQoIb3JkZXJfYnkYBiABKA4yJy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRMaXN0T3JkZXJCeRIUCgxzZWFyY2hfcXVlcnkYByABKAkSEgoKb3duZWRfb25seRgIIAEoCBI0CgVzY29wZRgJIAEoDjIlLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudExpc3RTY29wZRIQCghzcGFjZV9pZBgKIAEoCRIaChJkZWZhdWx0X3NwYWNlX29ubHkYCyABKAgi1QEKKUNsb3VkRW52aXJvbm1lbnRzTGlzdEVudmlyb25tZW50c1Jlc3BvbnNlEjYKDGVudmlyb25tZW50cxgBIAMoCzIcLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudEICGAESQgoVZW52aXJvbm1lbnRfc3VtbWFyaWVzGAIgAygLMiMucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50U3VtbWFyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAkSEwoLdG90YWxfY291bnQYBCABKAUiawosQ2xvdWRFbnZpcm9ubWVudHNMaXN0U2FuZGJveFByb3ZpZGVyc1JlcXVlc3QSFwoPaW5jbHVkZV9kZWxldGVkGAEgASgIEhUKCHNwYWNlX2lkGAIgASgJSACIAQFCCwoJX3NwYWNlX2lkImQKLUNsb3VkRW52aXJvbm1lbnRzTGlzdFNhbmRib3hQcm92aWRlcnNSZXNwb25zZRIzCglwcm92aWRlcnMYASADKAsyIC5wdWJsaWNfYXBpLkNsb3VkU2FuZGJveFByb3ZpZGVyIkcKJENsb3VkRW52aXJvbm1lbnRzTGlzdFZlcnNpb25zUmVxdWVzdBIQCghpbWFnZV9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBSJjCiVDbG91ZEVudmlyb25tZW50c0xpc3RWZXJzaW9uc1Jlc3BvbnNlEjoKCHZlcnNpb25zGAEgAygLMigucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50VmVyc2lvbkVudHJ5IvEBCihDbG91ZEVudmlyb25tZW50c1JlYnVpbGRCYXNlSW1hZ2VSZXF1ZXN0EhAKCGltYWdlX2lkGAEgASgJEh0KEHByb3Zpc2lvbl9zY3JpcHQYAiABKAlIAIgBARIeChF2bV9zdGFydHVwX3NjcmlwdBgDIAEoCUgBiAEBEhsKDmJhc2VfaW1hZ2VfcmVmGAQgASgJSAKIAQFCEwoRX3Byb3Zpc2lvbl9zY3JpcHRCFAoSX3ZtX3N0YXJ0dXBfc2NyaXB0QhEKD19iYXNlX2ltYWdlX3JlZkoECAUQBlITdXNlX2RlZmF1bHRfc2NyaXB0cyJtCilDbG91ZEVudmlyb25tZW50c1JlYnVpbGRCYXNlSW1hZ2VSZXNwb25zZRIWCg5tb2RhbF9pbWFnZV9pZBgBIAEoCRISCgp1cGRhdGVkX2F0GAMgASgJSgQIAhADUg5hdWdtZW50X2NvbW1pdCJwCihDbG91ZEVudmlyb25tZW50c1JlZnJlc2hCYXNlSW1hZ2VSZXF1ZXN0EhAKCGltYWdlX2lkGAEgASgJEh8KDmVudmlyb25tZW50X2lkGAIgASgJQgIYAUgAiAEBQhEKD19lbnZpcm9ubWVudF9pZCIrCilDbG91ZEVudmlyb25tZW50c1JlZnJlc2hCYXNlSW1hZ2VSZXNwb25zZSI8CihDbG91ZEVudmlyb25tZW50c1Jlc3RvcmVCYXNlSW1hZ2VSZXF1ZXN0EhAKCGltYWdlX2lkGAEgASgJIl4KKUNsb3VkRW52aXJvbm1lbnRzUmVzdG9yZUJhc2VJbWFnZVJlc3BvbnNlEjEKC2Vudmlyb25tZW50GAEgASgLMhwucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50IjcKKUNsb3VkRW52aXJvbm1lbnRzUmVzdG9yZURhZW1vblBvb2xSZXF1ZXN0EgoKAmlkGAEgASgJIlcKKkNsb3VkRW52aXJvbm1lbnRzUmVzdG9yZURhZW1vblBvb2xSZXNwb25zZRIpCgRwb29sGAEgASgLMhsucHVibGljX2FwaS5DbG91ZERhZW1vblBvb2wiXwouQ2xvdWRFbnZpcm9ubWVudHNSZXN0b3JlU2FuZGJveFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCRIhChlleHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uGAIgASgDImUKL0Nsb3VkRW52aXJvbm1lbnRzUmVzdG9yZVNhbmRib3hQcm92aWRlclJlc3BvbnNlEjIKCHByb3ZpZGVyGAEgASgLMiAucHVibGljX2FwaS5DbG91ZFNhbmRib3hQcm92aWRlciKjAQosQ2xvdWRFbnZpcm9ubWVudHNTdGFydEJhc2VJbWFnZUNyZWF0ZVJlcXVlc3QSMgoGY29uZmlnGAEgASgLMiIucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50Q29uZmlnEhcKCmJhc2VfaW1hZ2UYAiABKAlIAIgBARIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAlCDQoLX2Jhc2VfaW1hZ2UinAEKLUNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VDcmVhdGVSZXNwb25zZRIxCgtlbnZpcm9ubWVudBgBIAEoCzIcLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudBI4CglvcGVyYXRpb24YAiABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb24i+gEKLUNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VSZWJ1aWxkUmVxdWVzdBIWCg5lbnZpcm9ubWVudF9pZBgBIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAiABKAkSHQoQcHJvdmlzaW9uX3NjcmlwdBgDIAEoCUgAiAEBEh4KEXZtX3N0YXJ0dXBfc2NyaXB0GAQgASgJSAGIAQESGwoOYmFzZV9pbWFnZV9yZWYYBSABKAlIAogBAUITChFfcHJvdmlzaW9uX3NjcmlwdEIUChJfdm1fc3RhcnR1cF9zY3JpcHRCEQoPX2Jhc2VfaW1hZ2VfcmVmImoKLkNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VSZWJ1aWxkUmVzcG9uc2USOAoJb3BlcmF0aW9uGAEgASgLMiUucHVibGljX2FwaS5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uImAKLUNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VSZWZyZXNoUmVxdWVzdBIWCg5lbnZpcm9ubWVudF9pZBgBIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAiABKAkiagouQ2xvdWRFbnZpcm9ubWVudHNTdGFydEJhc2VJbWFnZVJlZnJlc2hSZXNwb25zZRI4CglvcGVyYXRpb24YASABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb24izwEKOUNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VSZXBvc2l0b3J5UmVjb25jaWxlUmVxdWVzdBJDCgZ1cGRhdGUYASABKAsyMy5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRzVXBkYXRlQmFzZUltYWdlUmVxdWVzdBIXCg9pZGVtcG90ZW5jeV9rZXkYAiABKAkSJAoYZXhwZWN0ZWRfY3VycmVudF92ZXJzaW9uGAMgASgJQgIYARIOCgZyZXBhaXIYBCABKAgidgo6Q2xvdWRFbnZpcm9ubWVudHNTdGFydEJhc2VJbWFnZVJlcG9zaXRvcnlSZWNvbmNpbGVSZXNwb25zZRI4CglvcGVyYXRpb24YASABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRPcGVyYXRpb24iuwEKNENsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VTbmFwc2hvdFVwZGF0ZVJlcXVlc3QSFgoOZW52aXJvbm1lbnRfaWQYASABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJEg4KBnNjcmlwdBgDIAEoCRIlChhleHBlY3RlZF9jdXJyZW50X3ZlcnNpb24YBCABKAlIAIgBAUIbChlfZXhwZWN0ZWRfY3VycmVudF92ZXJzaW9uInEKNUNsb3VkRW52aXJvbm1lbnRzU3RhcnRCYXNlSW1hZ2VTbmFwc2hvdFVwZGF0ZVJlc3BvbnNlEjgKCW9wZXJhdGlvbhgBIAEoCzIlLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudE9wZXJhdGlvbiLYBQonQ2xvdWRFbnZpcm9ubWVudHNVcGRhdGVCYXNlSW1hZ2VSZXF1ZXN0EhAKCGltYWdlX2lkGAEgASgJEhkKDGRpc3BsYXlfbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFwoKdmlzaWJpbGl0eRgEIAEoBUgCiAEBEiYKGWV4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb24YBSABKANIA4gBARI6CgVyZXBvcxgGIAMoCzIrLnB1YmxpY19hcGkuQ2xvdWRFbnZpcm9ubWVudENsb25lUmVwb3NpdG9yeRJEChVlbnZpcm9ubWVudF92YXJpYWJsZXMYByABKAsyJS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRWYXJpYWJsZXMSEQoJaGFzX3JlcG9zGAggASgIEhcKCmJhc2VfaW1hZ2UYCSABKAlIBIgBARIcCg9yZWZyZXNoX2VuYWJsZWQYCiABKAhIBYgBARIVCghzcGFjZV9pZBgLIAEoCUgGiAEBEksKBHRhZ3MYDCADKAsyPS5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnRzVXBkYXRlQmFzZUltYWdlUmVxdWVzdC5UYWdzRW50cnkSEAoIaGFzX3RhZ3MYDSABKAgSIAoTc2FuZGJveF9wcm92aWRlcl9pZBgOIAEoCUgHiAEBGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2Rlc2NyaXB0aW9uQg0KC192aXNpYmlsaXR5QhwKGl9leHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uQg0KC19iYXNlX2ltYWdlQhIKEF9yZWZyZXNoX2VuYWJsZWRCCwoJX3NwYWNlX2lkQhYKFF9zYW5kYm94X3Byb3ZpZGVyX2lkIl0KKENsb3VkRW52aXJvbm1lbnRzVXBkYXRlQmFzZUltYWdlUmVzcG9uc2USMQoLZW52aXJvbm1lbnQYASABKAsyHC5wdWJsaWNfYXBpLkNsb3VkRW52aXJvbm1lbnQi2QMKKENsb3VkRW52aXJvbm1lbnRzVXBkYXRlRGFlbW9uUG9vbFJlcXVlc3QSCgoCaWQYASABKAkSGQoMZGlzcGxheV9uYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIXCgp2aXNpYmlsaXR5GAQgASgFSAKIAQESXAoad29ya3NwYWNlX2lzb2xhdGlvbl9wb2xpY3kYBSABKA4yMy5wdWJsaWNfYXBpLkNsb3VkRGFlbW9uUG9vbFdvcmtzcGFjZUlzb2xhdGlvblBvbGljeUgDiAEBEjwKCWNvbm5lY3RvchgGIAEoCzIpLnB1YmxpY19hcGkuQ2xvdWREYWVtb25Qb29sQ29ubmVjdG9ySW5wdXQSFQoIc3BhY2VfaWQYByABKAlIBIgBARImChlleHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uGAggASgDSAWIAQFCDwoNX2Rpc3BsYXlfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX3Zpc2liaWxpdHlCHQobX3dvcmtzcGFjZV9pc29sYXRpb25fcG9saWN5QgsKCV9zcGFjZV9pZEIcChpfZXhwZWN0ZWRfcmVzb3VyY2VfdmVyc2lvbiJWCilDbG91ZEVudmlyb25tZW50c1VwZGF0ZURhZW1vblBvb2xSZXNwb25zZRIpCgRwb29sGAEgASgLMhsucHVibGljX2FwaS5DbG91ZERhZW1vblBvb2wikQIKLUNsb3VkRW52aXJvbm1lbnRzVXBkYXRlU2FuZGJveFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEhQKB2VuYWJsZWQYBCABKAhIAogBARIhChlleHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uGAUgASgDEhEKCXNwYWNlX2lkcxgGIAMoCRIXCgphbGxfc3BhY2VzGAcgASgISAOIAQFCDwoNX2Rpc3BsYXlfbmFtZUIOCgxfZGVzY3JpcHRpb25CCgoIX2VuYWJsZWRCDQoLX2FsbF9zcGFjZXMiZAouQ2xvdWRFbnZpcm9ubWVudHNVcGRhdGVTYW5kYm94UHJvdmlkZXJSZXNwb25zZRIyCghwcm92aWRlchgBIAEoCzIgLnB1YmxpY19hcGkuQ2xvdWRTYW5kYm94UHJvdmlkZXIipwEKJkNsb3VkRW52aXJvbm1lbnRzVXBkYXRlU25hcHNob3RSZXF1ZXN0EhAKCGltYWdlX2lkGAEgASgJEg4KBnNjcmlwdBgCIAEoCRIlChhleHBlY3RlZF9jdXJyZW50X3ZlcnNpb24YAyABKAlIAIgBARIXCg9pZGVtcG90ZW5jeV9rZXkYBCABKAlCGwoZX2V4cGVjdGVkX2N1cnJlbnRfdmVyc2lvbiJSCidDbG91ZEVudmlyb25tZW50c1VwZGF0ZVNuYXBzaG90UmVzcG9uc2USFgoObW9kYWxfaW1hZ2VfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCSLbAQoKQ2xvdWRFdmVudBIQCghldmVudF9pZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKZXZlbnRfdHlwZRgDIAEoCRIUCgxwYXlsb2FkX2pzb24YBCABKAkSLwoLcmVjZWl2ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXRlbmFudF9pZBgGIAEoCRIPCgd1c2VyX2lkGAcgASgJEhIKCndlYmhvb2tfaWQYCCABKAkSGAoQcGF5bG9hZF9yZWRhY3RlZBgJIAEoCCKbAQocQ2xvdWRFdmVudHNMaXN0RXZlbnRzUmVxdWVzdBINCgVsaW1pdBgBIAEoDRISCgpwYWdlX3Rva2VuGAIgASgJEg4KBnNvdXJjZRgDIAEoCRIWCg5maWx0ZXJfcGF5bG9hZBgEIAEoCRISCgpldmVudF90eXBlGAUgASgJEg0KBXNpbmNlGAYgASgJEg0KBXVudGlsGAcgASgJInUKHUNsb3VkRXZlbnRzTGlzdEV2ZW50c1Jlc3BvbnNlEiYKBmV2ZW50cxgBIAMoCzIWLnB1YmxpY19hcGkuQ2xvdWRFdmVudBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUi8gMKC0Nsb3VkRXhwZXJ0EhEKCWV4cGVydF9pZBgBIAEoCRIrCgVzY29wZRgCIAEoDjIcLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRTY29wZRItCgZjb25maWcYAyABKAsyHS5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0Q29uZmlnEg8KB3VzZXJfaWQYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVzb3VyY2VfdmVyc2lvbhgHIAEoAxIuCgpkZWxldGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5lZmZlY3RpdmVfcm9sZRgJIAEoCRI6Cg1zcGFjZV9zdW1tYXJ5GAsgASgLMiMucHVibGljX2FwaS5DbG91ZEV4cGVydFNwYWNlU3VtbWFyeRIMCgRzbHVnGAwgASgJEkIKEWRlcGVuZGVuY3lfaGVhbHRoGA0gASgLMicucHVibGljX2FwaS5DbG91ZEV4cGVydERlcGVuZGVuY3lIZWFsdGhKBAgKEAtSDXRhZ19zdW1tYXJpZXMiVwoaQ2xvdWRFeHBlcnRDbG9uZVJlcG9zaXRvcnkSDQoFb3duZXIYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZicmFuY2gYAyABKAkSDAoEaG9zdBgEIAEoCSKcBwoRQ2xvdWRFeHBlcnRDb25maWcSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIYChBpbml0aWFsX21lc3NhZ2VzGAMgAygJEkYKFGJ1aWx0aW5fY2FwYWJpbGl0aWVzGAQgAygOMigucHVibGljX2FwaS5DbG91ZEV4cGVydEJ1aWx0aW5DYXBhYmlsaXR5EjsKC3Rvb2xfY29uZmlnGAYgASgLMiEucHVibGljX2FwaS5DbG91ZEV4cGVydFRvb2xDb25maWdIAIgBARJBCg5zZXNzaW9uX2NvbmZpZxgHIAEoCzIkLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRTZXNzaW9uQ29uZmlnSAGIAQESNwoJdm1fY29uZmlnGAggASgLMh8ucHVibGljX2FwaS5DbG91ZEV4cGVydFZNQ29uZmlnSAKIAQESGQoRd29ya2VyX2V4cGVydF9pZHMYCSADKAkSGQoRdXNlcl9pbnN0cnVjdGlvbnMYCiABKAkSHQoQcGxhY2Vob2xkZXJfdGV4dBgQIAEoCUgDiAEBEiIKGnVzZV9hbGxfZXhwZXJ0c19hc193b3JrZXJzGAsgASgIEhYKDm1jcF9jb25maWdfaWRzGAwgAygJEhoKEmhhc19tY3BfY29uZmlnX2lkcxgNIAEoCBITCgZoaWRkZW4YDiABKAhIBIgBARJBCg5yb3V0aW5nX3RhcmdldBgPIAEoCzIkLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRSb3V0aW5nVGFyZ2V0SAWIAQESNQoEdGFncxgRIAMoCzInLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRDb25maWcuVGFnc0VudHJ5EhAKCGhhc190YWdzGBIgASgIEhgKEGNhcGFiaWxpdHlfbmFtZXMYEyADKAkSKQocdXNlX2FsbF9idWlsdGluX2NhcGFiaWxpdGllcxgUIAEoCEgGiAEBGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg4KDF90b29sX2NvbmZpZ0IRCg9fc2Vzc2lvbl9jb25maWdCDAoKX3ZtX2NvbmZpZ0ITChFfcGxhY2Vob2xkZXJfdGV4dEIJCgdfaGlkZGVuQhEKD19yb3V0aW5nX3RhcmdldEIfCh1fdXNlX2FsbF9idWlsdGluX2NhcGFiaWxpdGllc0oECAUQBiJwChtDbG91ZEV4cGVydERlcGVuZGVuY3lIZWFsdGgSNgoGaXNzdWVzGAEgAygLMiYucHVibGljX2FwaS5DbG91ZEV4cGVydERlcGVuZGVuY3lJc3N1ZRIZChFibG9ja3NfbmV3X2xhdW5jaBgCIAEoCCKzAgoaQ2xvdWRFeHBlcnREZXBlbmRlbmN5SXNzdWUSQwoMcmVsYXRpb25zaGlwGAEgASgOMi0ucHVibGljX2FwaS5DbG91ZEV4cGVydERlcGVuZGVuY3lSZWxhdGlvbnNoaXASNwoGc3RhdHVzGAIgASgOMicucHVibGljX2FwaS5DbG91ZEV4cGVydERlcGVuZGVuY3lTdGF0dXMSGAoQdGFyZ2V0X2V4cGVydF9pZBgDIAEoCRIaChJ0YXJnZXRfZXhwZXJ0X3NsdWcYBCABKAkSGgoSdGFyZ2V0X2V4cGVydF9uYW1lGAUgASgJEkUKDnJlcGFpcl9hY3Rpb25zGAYgAygOMi0ucHVibGljX2FwaS5DbG91ZEV4cGVydERlcGVuZGVuY3lSZXBhaXJBY3Rpb24iPQoeQ2xvdWRFeHBlcnRFbnZpcm9ubWVudFZhcmlhYmxlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkiYAofQ2xvdWRFeHBlcnRFbnZpcm9ubWVudFZhcmlhYmxlcxI9Cgl2YXJpYWJsZXMYASADKAsyKi5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0RW52aXJvbm1lbnRWYXJpYWJsZSJEChtDbG91ZEV4cGVydE1hY2hpbmVSZXNvdXJjZXMSEQoJY3B1X2NvcmVzGAEgASgCEhIKCm1lbW9yeV9taWIYAiABKAUiTwoYQ2xvdWRFeHBlcnRSb3V0aW5nVGFyZ2V0EhYKDGRhZW1vbl92bV9pZBgBIAEoCUgAEhEKB3Bvb2xfaWQYAiABKAlIAEIICgZ0YXJnZXQiigMKGENsb3VkRXhwZXJ0U2Vzc2lvbkNvbmZpZxISCgVtb2RlbBgBIAEoCUgAiAEBEiUKHWluY2x1ZGVfZGVmYXVsdF9zeXN0ZW1fcHJvbXB0GAIgASgIEhUKDXN5c3RlbV9wcm9tcHQYAyABKAkSPAoKdmlzaWJpbGl0eRgEIAEoDjIoLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRTZXNzaW9uVmlzaWJpbGl0eRJNCg11c2VyX21ldGFkYXRhGAUgAygLMjYucHVibGljX2FwaS5DbG91ZEV4cGVydFNlc3Npb25Db25maWcuVXNlck1ldGFkYXRhRW50cnkSHAoUYXV0b19jbGVhbnVwX29uX2lkbGUYBiABKAgSHQoQcmVhc29uaW5nX2VmZm9ydBgHIAEoCUgBiAEBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCAoGX21vZGVsQhMKEV9yZWFzb25pbmdfZWZmb3J0IkEKF0Nsb3VkRXhwZXJ0U3BhY2VTdW1tYXJ5EhAKCHNwYWNlX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSKfAQoVQ2xvdWRFeHBlcnRUb29sQ29uZmlnEhYKCXRvb2xfbmFtZRgBIAEoCUgAiAEBEh0KEHRvb2xfZGVzY3JpcHRpb24YAiABKAlIAYgBARIXCg90aW1lb3V0X3NlY29uZHMYAyABKA0SEwoLYWxsb3dfYXN5bmMYBCABKAhCDAoKX3Rvb2xfbmFtZUITChFfdG9vbF9kZXNjcmlwdGlvbiLJBAoTQ2xvdWRFeHBlcnRWTUNvbmZpZxISCgpiYXNlX2ltYWdlGAEgASgJEhMKC3NuYXBzaG90X2lkGAIgASgJEhEKCWNwdV9jb3JlcxgDIAEoBRISCgptZW1vcnlfbWliGAQgASgFEhcKD3RpbWVvdXRfc2Vjb25kcxgFIAEoBRIcChRpZGxlX3RpbWVvdXRfc2Vjb25kcxgGIAEoBRIfChdpbnN0YWxsX2dpdF9jcmVkZW50aWFscxgHIAEoCBIcChRpbnN0YWxsX3VzZXJfc2VjcmV0cxgIIAEoCBI6CgxpbWFnZV9zb3VyY2UYCSABKA4yJC5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0Vk1JbWFnZVNvdXJjZRIVCg1iYXNlX2ltYWdlX2lkGAogASgJEjsKC2Nsb25lX3JlcG9zGAsgAygLMiYucHVibGljX2FwaS5DbG91ZEV4cGVydENsb25lUmVwb3NpdG9yeRI/CglyZXNvdXJjZXMYDCABKAsyJy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0TWFjaGluZVJlc291cmNlc0gAiAEBEiIKGmJhc2VfaW1hZ2VfY3VycmVudF92ZXJzaW9uGA0gASgJEk8KFWVudmlyb25tZW50X3ZhcmlhYmxlcxgOIAEoCzIrLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRFbnZpcm9ubWVudFZhcmlhYmxlc0gBiAEBQgwKCl9yZXNvdXJjZXNCGAoWX2Vudmlyb25tZW50X3ZhcmlhYmxlcyLOAQoXQ2xvdWRFeHBlcnRWZXJzaW9uRW50cnkSGAoQcmVzb3VyY2VfdmVyc2lvbhgBIAEoAxItCgZjb25maWcYAiABKAsyHS5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0Q29uZmlnEisKBXNjb3BlGAMgASgOMhwucHVibGljX2FwaS5DbG91ZEV4cGVydFNjb3BlEhMKC21vZGlmaWVkX2J5GAQgASgJEhMKC21vZGlmaWVkX2F0GAUgASgJEhMKC2NoYW5nZV90eXBlGAYgASgJIo4BChRDbG91ZEV4cGVydFdpdGhVc2FnZRInCgZleHBlcnQYASABKAsyFy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0EjAKDGxhc3RfdXNlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTd2Vla2x5X2FjdGl2ZV91c2VycxgDIAEoBSKzAwooQ2xvdWRFeHBlcnRzQ3JlYXRlQWdlbnRGcm9tRXhwZXJ0UmVxdWVzdBIRCglleHBlcnRfaWQYASABKAkSFwoKYWdlbnRfbmFtZRgCIAEoCUgAiAEBEiIKFXNlbmRfaW5pdGlhbF9tZXNzYWdlcxgDIAEoCEgBiAEBEiUKGGV4aXN0aW5nX2NvbnZlcnNhdGlvbl9pZBgEIAEoCUgCiAEBEhwKD2luaXRpYWxfbWVzc2FnZRgFIAEoCUgDiAEBEhwKD2lkZW1wb3RlbmN5X2tleRgGIAEoCUgEiAEBEhAKCHNwYWNlX2lkGAcgASgJEkEKDnJvdXRpbmdfdGFyZ2V0GAggASgLMiQucHVibGljX2FwaS5DbG91ZEV4cGVydFJvdXRpbmdUYXJnZXRIBYgBAUINCgtfYWdlbnRfbmFtZUIYChZfc2VuZF9pbml0aWFsX21lc3NhZ2VzQhsKGV9leGlzdGluZ19jb252ZXJzYXRpb25faWRCEgoQX2luaXRpYWxfbWVzc2FnZUISChBfaWRlbXBvdGVuY3lfa2V5QhEKD19yb3V0aW5nX3RhcmdldCJSCilDbG91ZEV4cGVydHNDcmVhdGVBZ2VudEZyb21FeHBlcnRSZXNwb25zZRIlCgVhZ2VudBgBIAEoCzIWLnB1YmxpY19hcGkuQ2xvdWRBZ2VudCL4AQofQ2xvdWRFeHBlcnRzQ3JlYXRlRXhwZXJ0UmVxdWVzdBIrCgVzY29wZRgBIAEoDjIcLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRTY29wZRItCgZjb25maWcYAiABKAsyHS5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0Q29uZmlnEhAKCHNwYWNlX2lkGAQgASgJEkIKEWNhcGFiaWxpdHlfc291cmNlGAUgASgOMicucHVibGljX2FwaS5DbG91ZEV4cGVydENhcGFiaWxpdHlTb3VyY2USFAoMZGVzaXJlZF9zbHVnGAYgASgJSgQIAxAEUgd0YWdfaWRzIksKIENsb3VkRXhwZXJ0c0NyZWF0ZUV4cGVydFJlc3BvbnNlEicKBmV4cGVydBgBIAEoCzIXLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnQiNQofQ2xvdWRFeHBlcnRzRGVsZXRlRXhwZXJ0UmVxdWVzdBISCgpleHBlcnRfaWRzGAEgAygJIlkKIENsb3VkRXhwZXJ0c0RlbGV0ZUV4cGVydFJlc3BvbnNlEhoKEmRlbGV0ZWRfZXhwZXJ0X2lkcxgBIAMoCRIZChFmYWlsZWRfZXhwZXJ0X2lkcxgCIAMoCSIxChxDbG91ZEV4cGVydHNHZXRFeHBlcnRSZXF1ZXN0EhEKCWV4cGVydF9pZBgBIAEoCSJICh1DbG91ZEV4cGVydHNHZXRFeHBlcnRSZXNwb25zZRInCgZleHBlcnQYASABKAsyFy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0IkwKHUNsb3VkRXhwZXJ0c0dldFZlcnNpb25SZXF1ZXN0EhEKCWV4cGVydF9pZBgBIAEoCRIYChByZXNvdXJjZV92ZXJzaW9uGAIgASgDIlYKHkNsb3VkRXhwZXJ0c0dldFZlcnNpb25SZXNwb25zZRI0Cgd2ZXJzaW9uGAEgASgLMiMucHVibGljX2FwaS5DbG91ZEV4cGVydFZlcnNpb25FbnRyeSJnCh5DbG91ZEV4cGVydHNMaXN0RXhwZXJ0c1JlcXVlc3QSFwoPaW5jbHVkZV9kZWxldGVkGAEgASgIEhAKCHNwYWNlX2lkGAIgASgJEhoKEmRlZmF1bHRfc3BhY2Vfb25seRgDIAEoCCJLCh9DbG91ZEV4cGVydHNMaXN0RXhwZXJ0c1Jlc3BvbnNlEigKB2V4cGVydHMYASADKAsyFy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0InAKJ0Nsb3VkRXhwZXJ0c0xpc3RFeHBlcnRzV2l0aFVzYWdlUmVxdWVzdBIXCg9tYXhfcGVyX3NlY3Rpb24YASABKAUSEAoIc3BhY2VfaWQYAiABKAkSGgoSZGVmYXVsdF9zcGFjZV9vbmx5GAMgASgIIscBCihDbG91ZEV4cGVydHNMaXN0RXhwZXJ0c1dpdGhVc2FnZVJlc3BvbnNlEjcKDXJlY2VudGx5X3VzZWQYASADKAsyIC5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0V2l0aFVzYWdlEjEKB3BvcHVsYXIYAiADKAsyIC5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0V2l0aFVzYWdlEi8KBW90aGVyGAMgAygLMiAucHVibGljX2FwaS5DbG91ZEV4cGVydFdpdGhVc2FnZSJDCh9DbG91ZEV4cGVydHNMaXN0VmVyc2lvbnNSZXF1ZXN0EhEKCWV4cGVydF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBSJZCiBDbG91ZEV4cGVydHNMaXN0VmVyc2lvbnNSZXNwb25zZRI1Cgh2ZXJzaW9ucxgBIAMoCzIjLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRWZXJzaW9uRW50cnkiNQogQ2xvdWRFeHBlcnRzUmVzdG9yZUV4cGVydFJlcXVlc3QSEQoJZXhwZXJ0X2lkGAEgASgJIkwKIUNsb3VkRXhwZXJ0c1Jlc3RvcmVFeHBlcnRSZXNwb25zZRInCgZleHBlcnQYASABKAsyFy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0IuwCCh9DbG91ZEV4cGVydHNVcGRhdGVFeHBlcnRSZXF1ZXN0EhEKCWV4cGVydF9pZBgBIAEoCRIyCgZjb25maWcYAiABKAsyHS5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0Q29uZmlnSACIAQESJgoZZXhwZWN0ZWRfcmVzb3VyY2VfdmVyc2lvbhgDIAEoA0gBiAEBEjAKBXNjb3BlGAQgASgOMhwucHVibGljX2FwaS5DbG91ZEV4cGVydFNjb3BlSAKIAQESFQoIc3BhY2VfaWQYBiABKAlIA4gBARJCChFjYXBhYmlsaXR5X3NvdXJjZRgHIAEoDjInLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRDYXBhYmlsaXR5U291cmNlQgkKB19jb25maWdCHAoaX2V4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb25CCAoGX3Njb3BlQgsKCV9zcGFjZV9pZEoECAUQBlIHdGFnX2lkcyJLCiBDbG91ZEV4cGVydHNVcGRhdGVFeHBlcnRSZXNwb25zZRInCgZleHBlcnQYASABKAsyFy5wdWJsaWNfYXBpLkNsb3VkRXhwZXJ0In0KCkNsb3VkR3JvdXASEAoIZ3JvdXBfaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRISCgpjcmVhdGVkX2J5GAQgASgJEhIKCmNyZWF0ZWRfYXQYBSABKAkSEgoKdXBkYXRlZF9hdBgGIAEoCSLmAQoQQ2xvdWRHcm91cE1lbWJlchIPCgd1c2VyX2lkGAEgASgJEhAKCGFkZGVkX2F0GAIgASgJEhAKCGFkZGVkX2J5GAMgASgJEg0KBWVtYWlsGAQgASgJEhIKCmdpdmVuX25hbWUYBSABKAkSEwoLZmFtaWx5X25hbWUYBiABKAkSFQoNYWRkZWRfYnlfbmFtZRgHIAEoCRI4Cg5wcmluY2lwYWxfa2luZBgIIAEoDjIgLnB1YmxpY19hcGkuQ2xvdWRHcm91cE1lbWJlcktpbmQSFAoMc2VydmljZV9uYW1lGAkgASgJIlMKGENsb3VkR3JvdXBNZW1iZXJTZWxlY3RvchIQCgZtZW1iZXIYASABKAlIABIZCg9zZXJ2aWNlX2FjY291bnQYAiABKAlIAEIKCghzZWxlY3RvciJ6ChxDbG91ZEdyb3Vwc0FkZE1lbWJlcnNSZXF1ZXN0EhAKCGdyb3VwX2lkGAEgASgJEg8KB21lbWJlcnMYAiADKAkSNwoJc2VsZWN0b3JzGAMgAygLMiQucHVibGljX2FwaS5DbG91ZEdyb3VwTWVtYmVyU2VsZWN0b3IiWAodQ2xvdWRHcm91cHNBZGRNZW1iZXJzUmVzcG9uc2USFgoOYWRkZWRfdXNlcl9pZHMYASADKAkSHwoXYWxyZWFkeV9tZW1iZXJfdXNlcl9pZHMYAiADKAkiPQoYQ2xvdWRHcm91cHNDcmVhdGVSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiQgoZQ2xvdWRHcm91cHNDcmVhdGVSZXNwb25zZRIlCgVncm91cBgBIAEoCzIWLnB1YmxpY19hcGkuQ2xvdWRHcm91cCIsChhDbG91ZEdyb3Vwc0RlbGV0ZVJlcXVlc3QSEAoIZ3JvdXBfaWQYASABKAkiGwoZQ2xvdWRHcm91cHNEZWxldGVSZXNwb25zZSJYCh1DbG91ZEdyb3Vwc0xpc3RNZW1iZXJzUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRIRCglwYWdlX3NpemUYAiABKA0SEgoKcGFnZV90b2tlbhgDIAEoCSKTAQoeQ2xvdWRHcm91cHNMaXN0TWVtYmVyc1Jlc3BvbnNlEi0KB21lbWJlcnMYASADKAsyHC5wdWJsaWNfYXBpLkNsb3VkR3JvdXBNZW1iZXISFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEikKIXNlcnZpY2VfYWNjb3VudF9zZWxlY3RvcnNfZW5hYmxlZBgDIAEoCCI/ChZDbG91ZEdyb3Vwc0xpc3RSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoDRISCgpwYWdlX3Rva2VuGAIgASgJIloKF0Nsb3VkR3JvdXBzTGlzdFJlc3BvbnNlEiYKBmdyb3VwcxgBIAMoCzIWLnB1YmxpY19hcGkuQ2xvdWRHcm91cBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkifQofQ2xvdWRHcm91cHNSZW1vdmVNZW1iZXJzUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRIPCgdtZW1iZXJzGAIgAygJEjcKCXNlbGVjdG9ycxgDIAMoCzIkLnB1YmxpY19hcGkuQ2xvdWRHcm91cE1lbWJlclNlbGVjdG9yIlkKIENsb3VkR3JvdXBzUmVtb3ZlTWVtYmVyc1Jlc3BvbnNlEhgKEHJlbW92ZWRfdXNlcl9pZHMYASADKAkSGwoTbm90X21lbWJlcl91c2VyX2lkcxgCIAMoCSJyChhDbG91ZEdyb3Vwc1VwZGF0ZVJlcXVlc3QSEAoIZ3JvdXBfaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIkIKGUNsb3VkR3JvdXBzVXBkYXRlUmVzcG9uc2USJQoFZ3JvdXAYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkR3JvdXAiSgovQ2xvdWRJbnRlZ3JhdGlvbnNDYW5jZWxFdmVudFN1YnNjcmlwdGlvblJlcXVlc3QSFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIjIKMENsb3VkSW50ZWdyYXRpb25zQ2FuY2VsRXZlbnRTdWJzY3JpcHRpb25SZXNwb25zZSIxCi9DbG91ZEludGVncmF0aW9uc0NoZWNrQXRsYXNzaWFuQXBwU3RhdHVzUmVxdWVzdCJ1CjBDbG91ZEludGVncmF0aW9uc0NoZWNrQXRsYXNzaWFuQXBwU3RhdHVzUmVzcG9uc2USFAoMaXNfaW5zdGFsbGVkGAEgASgIEhEKCXNpdGVfbmFtZRgCIAEoCRIYChBlbmFibGVkX3Byb2R1Y3RzGAMgAygJIi4KLENsb3VkSW50ZWdyYXRpb25zQ2hlY2tHaXRIdWJBcHBTdGF0dXNSZXF1ZXN0IkUKLUNsb3VkSW50ZWdyYXRpb25zQ2hlY2tHaXRIdWJBcHBTdGF0dXNSZXNwb25zZRIUCgxpc19pbnN0YWxsZWQYASABKAgiKwopQ2xvdWRJbnRlZ3JhdGlvbnNDaGVja0xpbmVhclN0YXR1c1JlcXVlc3QiQgoqQ2xvdWRJbnRlZ3JhdGlvbnNDaGVja0xpbmVhclN0YXR1c1Jlc3BvbnNlEhQKDGlzX2Nvbm5lY3RlZBgBIAEoCCIqCihDbG91ZEludGVncmF0aW9uc0NoZWNrU2xhY2tTdGF0dXNSZXF1ZXN0IkEKKUNsb3VkSW50ZWdyYXRpb25zQ2hlY2tTbGFja1N0YXR1c1Jlc3BvbnNlEhQKDGlzX2Nvbm5lY3RlZBgBIAEoCCKUAQovQ2xvdWRJbnRlZ3JhdGlvbnNDcmVhdGVFdmVudFN1YnNjcmlwdGlvblJlcXVlc3QSEAoIYWdlbnRfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCmV2ZW50X3R5cGUYAyABKAkSFgoOZmlsdGVyX3BheWxvYWQYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkiSwowQ2xvdWRJbnRlZ3JhdGlvbnNDcmVhdGVFdmVudFN1YnNjcmlwdGlvblJlc3BvbnNlEhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSLIAQoiQ2xvdWRJbnRlZ3JhdGlvbnNFdmVudFN1YnNjcmlwdGlvbhIXCg9zdWJzY3JpcHRpb25faWQYASABKAkSEAoIYWdlbnRfaWQYAiABKAkSDgoGc291cmNlGAMgASgJEhIKCmV2ZW50X3R5cGUYBCABKAkSFgoOZmlsdGVyX3BheWxvYWQYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSEgoKY3JlYXRlZF9hdBgHIAEoCRISCgpleHBpcmVzX2F0GAggASgJIjMKMUNsb3VkSW50ZWdyYXRpb25zR2V0QXRsYXNzaWFuQXBwSW5zdGFsbFVybFJlcXVlc3QiSQoyQ2xvdWRJbnRlZ3JhdGlvbnNHZXRBdGxhc3NpYW5BcHBJbnN0YWxsVXJsUmVzcG9uc2USEwoLaW5zdGFsbF91cmwYASABKAkiMAouQ2xvdWRJbnRlZ3JhdGlvbnNHZXRHaXRIdWJBcHBJbnN0YWxsVXJsUmVxdWVzdCJGCi9DbG91ZEludGVncmF0aW9uc0dldEdpdEh1YkFwcEluc3RhbGxVcmxSZXNwb25zZRITCgtpbnN0YWxsX3VybBgBIAEoCSIrCilDbG91ZEludGVncmF0aW9uc0dldExpbmVhck9BdXRoVXJsUmVxdWVzdCI/CipDbG91ZEludGVncmF0aW9uc0dldExpbmVhck9BdXRoVXJsUmVzcG9uc2USEQoJb2F1dGhfdXJsGAEgASgJIioKKENsb3VkSW50ZWdyYXRpb25zR2V0U2xhY2tPQXV0aFVybFJlcXVlc3QiPgopQ2xvdWRJbnRlZ3JhdGlvbnNHZXRTbGFja09BdXRoVXJsUmVzcG9uc2USEQoJb2F1dGhfdXJsGAEgASgJIk4KIkNsb3VkSW50ZWdyYXRpb25zSW50ZWdyYXRpb25BY3Rpb24SDAoEa2luZBgBIAEoCRINCgVsYWJlbBgCIAEoCRILCgN1cmwYAyABKAkimAIKJkNsb3VkSW50ZWdyYXRpb25zSW50ZWdyYXRpb25EZWZpbml0aW9uEgoKAmlkGAEgASgJEg0KBWxhYmVsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhEKCWNvbm5lY3RlZBgEIAEoCBITCgtzdGF0dXNfa2luZBgFIAEoCRIUCgxzdGF0dXNfbGFiZWwYBiABKAkSPwoHZGV0YWlscxgHIAMoCzIuLnB1YmxpY19hcGkuQ2xvdWRJbnRlZ3JhdGlvbnNJbnRlZ3JhdGlvbkRldGFpbBI/CgdhY3Rpb25zGAggAygLMi4ucHVibGljX2FwaS5DbG91ZEludGVncmF0aW9uc0ludGVncmF0aW9uQWN0aW9uIk8KIkNsb3VkSW50ZWdyYXRpb25zSW50ZWdyYXRpb25EZXRhaWwSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJEg0KBXZhbHVlGAMgASgJIkwKJENsb3VkSW50ZWdyYXRpb25zSW52b2tlQWN0aW9uUmVxdWVzdBIWCg5pbnRlZ3JhdGlvbl9pZBgBIAEoCRIMCgRraW5kGAIgASgJIpYBCiVDbG91ZEludGVncmF0aW9uc0ludm9rZUFjdGlvblJlc3BvbnNlEhMKC3VybF90b19vcGVuGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSRwoLaW50ZWdyYXRpb24YAyABKAsyMi5wdWJsaWNfYXBpLkNsb3VkSW50ZWdyYXRpb25zSW50ZWdyYXRpb25EZWZpbml0aW9uIkIKLkNsb3VkSW50ZWdyYXRpb25zTGlzdEV2ZW50U3Vic2NyaXB0aW9uc1JlcXVlc3QSEAoIYWdlbnRfaWQYASABKAkieAovQ2xvdWRJbnRlZ3JhdGlvbnNMaXN0RXZlbnRTdWJzY3JpcHRpb25zUmVzcG9uc2USRQoNc3Vic2NyaXB0aW9ucxgBIAMoCzIuLnB1YmxpY19hcGkuQ2xvdWRJbnRlZ3JhdGlvbnNFdmVudFN1YnNjcmlwdGlvbiIeChxDbG91ZEludGVncmF0aW9uc0xpc3RSZXF1ZXN0ImkKHUNsb3VkSW50ZWdyYXRpb25zTGlzdFJlc3BvbnNlEkgKDGludGVncmF0aW9ucxgBIAMoCzIyLnB1YmxpY19hcGkuQ2xvdWRJbnRlZ3JhdGlvbnNJbnRlZ3JhdGlvbkRlZmluaXRpb24iSgopQ2xvdWRJbnRlZ3JhdGlvbnNMaXN0U2xhY2tDaGFubmVsc1JlcXVlc3QSDgoGY3Vyc29yGAEgASgJEg0KBWxpbWl0GAIgASgNIo0BCipDbG91ZEludGVncmF0aW9uc0xpc3RTbGFja0NoYW5uZWxzUmVzcG9uc2USOwoIY2hhbm5lbHMYASADKAsyKS5wdWJsaWNfYXBpLkNsb3VkSW50ZWdyYXRpb25zU2xhY2tDaGFubmVsEhMKC25leHRfY3Vyc29yGAIgASgJEg0KBWVycm9yGAMgASgJIisKKUNsb3VkSW50ZWdyYXRpb25zUmV2b2tlR2l0aHViT0F1dGhSZXF1ZXN0IiwKKkNsb3VkSW50ZWdyYXRpb25zUmV2b2tlR2l0aHViT0F1dGhSZXNwb25zZSIrCilDbG91ZEludGVncmF0aW9uc1Jldm9rZUxpbmVhck9BdXRoUmVxdWVzdCIsCipDbG91ZEludGVncmF0aW9uc1Jldm9rZUxpbmVhck9BdXRoUmVzcG9uc2UiYAodQ2xvdWRJbnRlZ3JhdGlvbnNTbGFja0NoYW5uZWwSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgppc19wcml2YXRlGAMgASgIEhEKCWlzX21lbWJlchgEIAEoCCLyAQoMQ2xvdWRQcm9qZWN0EhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpjcmVhdGVkX2J5GAYgASgJEjcKBmFnZW50cxgHIAMoCzInLnB1YmxpY19hcGkuQ2xvdWRQcm9qZWN0QWdlbnRNZW1iZXJzaGlwIl0KG0Nsb3VkUHJvamVjdEFnZW50TWVtYmVyc2hpcBIQCghhZ2VudF9pZBgBIAEoCRIsCghhZGRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiRAocQ2xvdWRQcm9qZWN0c0FkZEFnZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJIkoKHUNsb3VkUHJvamVjdHNBZGRBZ2VudFJlc3BvbnNlEikKB3Byb2plY3QYASABKAsyGC5wdWJsaWNfYXBpLkNsb3VkUHJvamVjdCJGCiFDbG91ZFByb2plY3RzQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSJPCiJDbG91ZFByb2plY3RzQ3JlYXRlUHJvamVjdFJlc3BvbnNlEikKB3Byb2plY3QYASABKAsyGC5wdWJsaWNfYXBpLkNsb3VkUHJvamVjdCI3CiFDbG91ZFByb2plY3RzRGVsZXRlUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSIkCiJDbG91ZFByb2plY3RzRGVsZXRlUHJvamVjdFJlc3BvbnNlIjQKHkNsb3VkUHJvamVjdHNHZXRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkwKH0Nsb3VkUHJvamVjdHNHZXRQcm9qZWN0UmVzcG9uc2USKQoHcHJvamVjdBgBIAEoCzIYLnB1YmxpY19hcGkuQ2xvdWRQcm9qZWN0IiIKIENsb3VkUHJvamVjdHNMaXN0UHJvamVjdHNSZXF1ZXN0Ik8KIUNsb3VkUHJvamVjdHNMaXN0UHJvamVjdHNSZXNwb25zZRIqCghwcm9qZWN0cxgBIAMoCzIYLnB1YmxpY19hcGkuQ2xvdWRQcm9qZWN0IkcKH0Nsb3VkUHJvamVjdHNSZW1vdmVBZ2VudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIQCghhZ2VudF9pZBgCIAEoCSJNCiBDbG91ZFByb2plY3RzUmVtb3ZlQWdlbnRSZXNwb25zZRIpCgdwcm9qZWN0GAEgASgLMhgucHVibGljX2FwaS5DbG91ZFByb2plY3QinwQKDUNsb3VkUmVzaWRlbnQSEwoLcmVzaWRlbnRfaWQYASABKAkSLQoFc2NvcGUYAiABKA4yHi5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnRTY29wZRIvCgZjb25maWcYAyABKAsyHy5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnRDb25maWcSDwoHdXNlcl9pZBgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChByZXNvdXJjZV92ZXJzaW9uGAcgASgDEhgKEGN1cnJlbnRfYWdlbnRfaWQYCCABKAkSLgoKc3RhcnRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOZWZmZWN0aXZlX3JvbGUYCiABKAkSLgoKZGVsZXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQAoPcHJlc2VuY2Vfc3RhdHVzGAwgASgLMicucHVibGljX2FwaS5DbG91ZFJlc2lkZW50UHJlc2VuY2VTdGF0dXMSOgoNc3BhY2Vfc3VtbWFyeRgNIAEoCzIjLnB1YmxpY19hcGkuQ2xvdWRFeHBlcnRTcGFjZVN1bW1hcnkixAMKE0Nsb3VkUmVzaWRlbnRDb25maWcSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIRCglleHBlcnRfaWQYAyABKAkSHAoPaW5pdGlhbF9tZXNzYWdlGAQgASgJSACIAQESOgoJb3ZlcnJpZGVzGAUgASgLMiIucHVibGljX2FwaS5DbG91ZFJlc2lkZW50T3ZlcnJpZGVzSAGIAQESGwoOcnVuX2FzX3VzZXJfaWQYBiABKAlIAogBARI4CghwcmVzZW5jZRgHIAEoCzIhLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudFByZXNlbmNlSAOIAQESDAoEaWNvbhgIIAEoCRI3CgR0YWdzGAkgAygLMikucHVibGljX2FwaS5DbG91ZFJlc2lkZW50Q29uZmlnLlRhZ3NFbnRyeRIQCghoYXNfdGFncxgKIAEoCBorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfaW5pdGlhbF9tZXNzYWdlQgwKCl9vdmVycmlkZXNCEQoPX3J1bl9hc191c2VyX2lkQgsKCV9wcmVzZW5jZSKCAQoYQ2xvdWRSZXNpZGVudEVudlZNQ29uZmlnEhUKDWJhc2VfaW1hZ2VfaWQYASABKAkSQQoJcmVzb3VyY2VzGAIgASgLMikucHVibGljX2FwaS5DbG91ZFJlc2lkZW50TWFjaGluZVJlc291cmNlc0gAiAEBQgwKCl9yZXNvdXJjZXMiRgodQ2xvdWRSZXNpZGVudE1hY2hpbmVSZXNvdXJjZXMSEQoJY3B1X2NvcmVzGAEgASgCEhIKCm1lbW9yeV9taWIYAiABKAUisgEKFkNsb3VkUmVzaWRlbnRPdmVycmlkZXMSOQoJdm1fY29uZmlnGAIgASgLMiQucHVibGljX2FwaS5DbG91ZFJlc2lkZW50RW52Vk1Db25maWdIABIWCgxkYWVtb25fdm1faWQYAyABKAlIABIYCg5kYWVtb25fcG9vbF9pZBgEIAEoCUgAEhIKBW1vZGVsGAEgASgJSAGIAQFCDQoLZW52aXJvbm1lbnRCCAoGX21vZGVsIlMKFUNsb3VkUmVzaWRlbnRQcmVzZW5jZRItCgVzbGFjaxgBIAEoCzIeLnB1YmxpY19hcGkuQ2xvdWRTbGFja1ByZXNlbmNlSgQIAhADUgV0ZWFtcyJfChtDbG91ZFJlc2lkZW50UHJlc2VuY2VTdGF0dXMSMwoFc2xhY2sYASABKAsyJC5wdWJsaWNfYXBpLkNsb3VkU2xhY2tQcmVzZW5jZVN0YXR1c0oECAIQA1IFdGVhbXMinQEKG0Nsb3VkUmVzaWRlbnRTZXNzaW9uU3VtbWFyeRIQCghhZ2VudF9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSLgoKc3RhcnRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItQBChlDbG91ZFJlc2lkZW50VmVyc2lvbkVudHJ5EhgKEHJlc291cmNlX3ZlcnNpb24YASABKAMSLwoGY29uZmlnGAIgASgLMh8ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50Q29uZmlnEi0KBXNjb3BlGAMgASgOMh4ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50U2NvcGUSEwoLbW9kaWZpZWRfYnkYBCABKAkSEwoLbW9kaWZpZWRfYXQYBSABKAkSEwoLY2hhbmdlX3R5cGUYBiABKAkihQEKI0Nsb3VkUmVzaWRlbnRzQ3JlYXRlUmVzaWRlbnRSZXF1ZXN0Ei0KBXNjb3BlGAEgASgOMh4ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50U2NvcGUSLwoGY29uZmlnGAIgASgLMh8ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50Q29uZmlnIlMKJENsb3VkUmVzaWRlbnRzQ3JlYXRlUmVzaWRlbnRSZXNwb25zZRIrCghyZXNpZGVudBgBIAEoCzIZLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudCJQCiNDbG91ZFJlc2lkZW50c0RlbGV0ZVJlc2lkZW50UmVxdWVzdBIUCgxyZXNpZGVudF9pZHMYASADKAkSEwoLaGFyZF9kZWxldGUYAiABKAgiYQokQ2xvdWRSZXNpZGVudHNEZWxldGVSZXNpZGVudFJlc3BvbnNlEhwKFGRlbGV0ZWRfcmVzaWRlbnRfaWRzGAEgAygJEhsKE2ZhaWxlZF9yZXNpZGVudF9pZHMYAiADKAkiNwogQ2xvdWRSZXNpZGVudHNHZXRSZXNpZGVudFJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkiUAohQ2xvdWRSZXNpZGVudHNHZXRSZXNpZGVudFJlc3BvbnNlEisKCHJlc2lkZW50GAEgASgLMhkucHVibGljX2FwaS5DbG91ZFJlc2lkZW50IlAKH0Nsb3VkUmVzaWRlbnRzR2V0VmVyc2lvblJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkSGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoAyJaCiBDbG91ZFJlc2lkZW50c0dldFZlcnNpb25SZXNwb25zZRI2Cgd2ZXJzaW9uGAEgASgLMiUucHVibGljX2FwaS5DbG91ZFJlc2lkZW50VmVyc2lvbkVudHJ5IqkBCiJDbG91ZFJlc2lkZW50c0xpc3RSZXNpZGVudHNSZXF1ZXN0EjIKBXNjb3BlGAEgASgOMh4ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50U2NvcGVIAIgBARIXCg9pbmNsdWRlX2RlbGV0ZWQYAiABKAgSEAoIc3BhY2VfaWQYAyABKAkSGgoSZGVmYXVsdF9zcGFjZV9vbmx5GAQgASgIQggKBl9zY29wZSJTCiNDbG91ZFJlc2lkZW50c0xpc3RSZXNpZGVudHNSZXNwb25zZRIsCglyZXNpZGVudHMYASADKAsyGS5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnQiOAohQ2xvdWRSZXNpZGVudHNMaXN0U2Vzc2lvbnNSZXF1ZXN0EhMKC3Jlc2lkZW50X2lkGAEgASgJIl8KIkNsb3VkUmVzaWRlbnRzTGlzdFNlc3Npb25zUmVzcG9uc2USOQoIc2Vzc2lvbnMYASADKAsyJy5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnRTZXNzaW9uU3VtbWFyeSJHCiFDbG91ZFJlc2lkZW50c0xpc3RWZXJzaW9uc1JlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkSDQoFbGltaXQYAiABKAUiXQoiQ2xvdWRSZXNpZGVudHNMaXN0VmVyc2lvbnNSZXNwb25zZRI3Cgh2ZXJzaW9ucxgBIAMoCzIlLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudFZlcnNpb25FbnRyeSI7CiRDbG91ZFJlc2lkZW50c1Jlc3RvcmVSZXNpZGVudFJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkiVAolQ2xvdWRSZXNpZGVudHNSZXN0b3JlUmVzaWRlbnRSZXNwb25zZRIrCghyZXNpZGVudBgBIAEoCzIZLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudCLNAQosQ2xvdWRSZXNpZGVudHNTZXRSZXNpZGVudFRlbmFudEFjY2Vzc1JlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkSLQoFc2NvcGUYAiABKA4yHi5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnRTY29wZRITCgt0ZW5hbnRfcm9sZRgDIAEoCRImChlleHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uGAQgASgDSACIAQFCHAoaX2V4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb24iXAotQ2xvdWRSZXNpZGVudHNTZXRSZXNpZGVudFRlbmFudEFjY2Vzc1Jlc3BvbnNlEisKCHJlc2lkZW50GAEgASgLMhkucHVibGljX2FwaS5DbG91ZFJlc2lkZW50ImsKIkNsb3VkUmVzaWRlbnRzU3RhcnRSZXNpZGVudFJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkSHAoPaW5pdGlhbF9tZXNzYWdlGAIgASgJSACIAQFCEgoQX2luaXRpYWxfbWVzc2FnZSJ5CiNDbG91ZFJlc2lkZW50c1N0YXJ0UmVzaWRlbnRSZXNwb25zZRIrCghyZXNpZGVudBgBIAEoCzIZLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudBIlCgVhZ2VudBgCIAEoCzIWLnB1YmxpY19hcGkuQ2xvdWRBZ2VudCI4CiFDbG91ZFJlc2lkZW50c1N0b3BSZXNpZGVudFJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkiUQoiQ2xvdWRSZXNpZGVudHNTdG9wUmVzaWRlbnRSZXNwb25zZRIrCghyZXNpZGVudBgBIAEoCzIZLnB1YmxpY19hcGkuQ2xvdWRSZXNpZGVudCL/AQojQ2xvdWRSZXNpZGVudHNVcGRhdGVSZXNpZGVudFJlcXVlc3QSEwoLcmVzaWRlbnRfaWQYASABKAkSNAoGY29uZmlnGAIgASgLMh8ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50Q29uZmlnSACIAQESJgoZZXhwZWN0ZWRfcmVzb3VyY2VfdmVyc2lvbhgDIAEoA0gBiAEBEjIKBXNjb3BlGAQgASgOMh4ucHVibGljX2FwaS5DbG91ZFJlc2lkZW50U2NvcGVIAogBAUIJCgdfY29uZmlnQhwKGl9leHBlY3RlZF9yZXNvdXJjZV92ZXJzaW9uQggKBl9zY29wZSJTCiRDbG91ZFJlc2lkZW50c1VwZGF0ZVJlc2lkZW50UmVzcG9uc2USKwoIcmVzaWRlbnQYASABKAsyGS5wdWJsaWNfYXBpLkNsb3VkUmVzaWRlbnQi2AIKFENsb3VkU2FuZGJveFByb3ZpZGVyEgwKBHNsdWcYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2VuYWJsZWQYBSABKAgSGgoSY3JlYXRlZF9ieV91c2VyX2lkGAYgASgJEhIKCmNyZWF0ZWRfYXQYByABKAkSEgoKdXBkYXRlZF9hdBgIIAEoCRIYChByZXNvdXJjZV92ZXJzaW9uGAkgASgDEhIKCmRlbGV0ZWRfYXQYCiABKAkSCgoCaWQYCyABKAkSOwoNcHJvdmlkZXJfdHlwZRgMIAEoDjIkLnB1YmxpY19hcGkuQ2xvdWRTYW5kYm94UHJvdmlkZXJUeXBlEhEKCXNwYWNlX2lkcxgNIAMoCRISCgphbGxfc3BhY2VzGA4gASgISgQIBBAFUg5zeXN0ZW1fbWFuYWdlZCKeAQoSQ2xvdWRTbGFja1ByZXNlbmNlEhMKC21lbnRpb25hYmxlGAEgASgIEhgKEHVzZXJncm91cF9oYW5kbGUYAiABKAkSFwoPaG9tZV9jaGFubmVsX2lkGAMgASgJEiQKF2RpcmVjdF9tZXNzYWdlc19lbmFibGVkGAQgASgISACIAQFCGgoYX2RpcmVjdF9tZXNzYWdlc19lbmFibGVkInEKGENsb3VkU2xhY2tQcmVzZW5jZVN0YXR1cxISCgpzdWJ0ZWFtX2lkGAEgASgJEjIKDmxhc3Rfc3luY2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVlcnJvchgDIAEoCSLcAQoKQ2xvdWRTcGFjZRIQCghzcGFjZV9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSFwoPbm9ybWFsaXplZF9uYW1lGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmNyZWF0ZWRfYnkYBiABKAkSGQoRcGlubmVkX2V4cGVydF9pZHMYByADKAkiNQodQ2xvdWRTcGFjZXNDcmVhdGVTcGFjZVJlcXVlc3QSFAoMZGlzcGxheV9uYW1lGAEgASgJIkcKHkNsb3VkU3BhY2VzQ3JlYXRlU3BhY2VSZXNwb25zZRIlCgVzcGFjZRgBIAEoCzIWLnB1YmxpY19hcGkuQ2xvdWRTcGFjZSIxCh1DbG91ZFNwYWNlc0RlbGV0ZVNwYWNlUmVxdWVzdBIQCghzcGFjZV9pZBgBIAEoCSIgCh5DbG91ZFNwYWNlc0RlbGV0ZVNwYWNlUmVzcG9uc2UiLgoaQ2xvdWRTcGFjZXNHZXRTcGFjZVJlcXVlc3QSEAoIc3BhY2VfaWQYASABKAkiRAobQ2xvdWRTcGFjZXNHZXRTcGFjZVJlc3BvbnNlEiUKBXNwYWNlGAEgASgLMhYucHVibGljX2FwaS5DbG91ZFNwYWNlIh4KHENsb3VkU3BhY2VzTGlzdFNwYWNlc1JlcXVlc3QiRwodQ2xvdWRTcGFjZXNMaXN0U3BhY2VzUmVzcG9uc2USJgoGc3BhY2VzGAEgAygLMhYucHVibGljX2FwaS5DbG91ZFNwYWNlIkcKHUNsb3VkU3BhY2VzVXBkYXRlU3BhY2VSZXF1ZXN0EhAKCHNwYWNlX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSJHCh5DbG91ZFNwYWNlc1VwZGF0ZVNwYWNlUmVzcG9uc2USJQoFc3BhY2UYASABKAsyFi5wdWJsaWNfYXBpLkNsb3VkU3BhY2UiWAolQ2xvdWRUcmlnZ2Vyc0NyZWF0ZUV2ZW50U291cmNlUmVxdWVzdBIZChFldmVudF9zb3VyY2VfanNvbhgBIAEoCRIUCgxkZXNpcmVkX3NsdWcYAiABKAkiQwomQ2xvdWRUcmlnZ2Vyc0NyZWF0ZUV2ZW50U291cmNlUmVzcG9uc2USGQoRZXZlbnRfc291cmNlX2pzb24YASABKAkiUQoiQ2xvdWRUcmlnZ2Vyc0NyZWF0ZVdvcmtmbG93UmVxdWVzdBIVCg13b3JrZmxvd19qc29uGAEgASgJEhQKDGRlc2lyZWRfc2x1ZxgCIAEoCSI8CiNDbG91ZFRyaWdnZXJzQ3JlYXRlV29ya2Zsb3dSZXNwb25zZRIVCg13b3JrZmxvd19qc29uGAEgASgJIkIKJkNsb3VkVHJpZ2dlcnNEZWxldGVFdmVudFNvdXJjZXNSZXF1ZXN0EhgKEGV2ZW50X3NvdXJjZV9pZHMYASADKAkifQonQ2xvdWRUcmlnZ2Vyc0RlbGV0ZUV2ZW50U291cmNlc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSIAoYZGVsZXRlZF9ldmVudF9zb3VyY2VfaWRzGAIgAygJEh8KF2ZhaWxlZF9ldmVudF9zb3VyY2VfaWRzGAMgAygJImwKMkNsb3VkVHJpZ2dlcnNEZWxldGVXb3JrZmxvd0V4cGVjdGVkUmVzb3VyY2VWZXJzaW9uEhMKC3dvcmtmbG93X2lkGAEgASgJEiEKGWV4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb24YAiABKAMingEKIkNsb3VkVHJpZ2dlcnNEZWxldGVXb3JrZmxvd1JlcXVlc3QSFAoMd29ya2Zsb3dfaWRzGAEgAygJEmIKGmV4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb25zGAIgAygLMj4ucHVibGljX2FwaS5DbG91ZFRyaWdnZXJzRGVsZXRlV29ya2Zsb3dFeHBlY3RlZFJlc291cmNlVmVyc2lvbiKRAQojQ2xvdWRUcmlnZ2Vyc0RlbGV0ZVdvcmtmbG93UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIcChRkZWxldGVkX3dvcmtmbG93X2lkcxgCIAMoCRIbChNmYWlsZWRfd29ya2Zsb3dfaWRzGAMgAygJEh4KFm5vdF9mb3VuZF93b3JrZmxvd19pZHMYBCADKAkiPQoiQ2xvdWRUcmlnZ2Vyc0dldEV2ZW50U291cmNlUmVxdWVzdBIXCg9ldmVudF9zb3VyY2VfaWQYASABKAkiQAojQ2xvdWRUcmlnZ2Vyc0dldEV2ZW50U291cmNlUmVzcG9uc2USGQoRZXZlbnRfc291cmNlX2pzb24YASABKAkiNgofQ2xvdWRUcmlnZ2Vyc0dldFdvcmtmbG93UmVxdWVzdBITCgt3b3JrZmxvd19pZBgBIAEoCSI5CiBDbG91ZFRyaWdnZXJzR2V0V29ya2Zsb3dSZXNwb25zZRIVCg13b3JrZmxvd19qc29uGAEgASgJIiYKJENsb3VkVHJpZ2dlcnNMaXN0RXZlbnRTb3VyY2VzUmVxdWVzdCJDCiVDbG91ZFRyaWdnZXJzTGlzdEV2ZW50U291cmNlc1Jlc3BvbnNlEhoKEmV2ZW50X3NvdXJjZXNfanNvbhgBIAEoCSJPCiFDbG91ZFRyaWdnZXJzTGlzdFdvcmtmbG93c1JlcXVlc3QSFwoPZXZlbnRfc291cmNlX2lkGAEgASgJEhEKCWV4cGVydF9pZBgCIAEoCSI8CiJDbG91ZFRyaWdnZXJzTGlzdFdvcmtmbG93c1Jlc3BvbnNlEhYKDndvcmtmbG93c19qc29uGAEgASgJImUKJUNsb3VkVHJpZ2dlcnNVcGRhdGVFdmVudFNvdXJjZVJlcXVlc3QSGQoRZXZlbnRfc291cmNlX2pzb24YASABKAkSIQoZZXhwZWN0ZWRfcmVzb3VyY2VfdmVyc2lvbhgCIAEoAyJDCiZDbG91ZFRyaWdnZXJzVXBkYXRlRXZlbnRTb3VyY2VSZXNwb25zZRIZChFldmVudF9zb3VyY2VfanNvbhgBIAEoCSLDAwoiQ2xvdWRUcmlnZ2Vyc1VwZGF0ZVdvcmtmbG93UmVxdWVzdBITCgt3b3JrZmxvd19pZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFAoHZW5hYmxlZBgDIAEoCEgBiAEBEiYKGWV4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb24YBCABKANIAogBARIqCh1vdmVycmlkZV9hdXRvX2NsZWFudXBfb25faWRsZRgFIAEoCEgDiAEBEioKHXBlcl9taW51dGVfY3JlYXRlX2FnZW50X2xpbWl0GAYgASgFSASIAQESIQoUaW5pdGlhbF9pbnN0cnVjdGlvbnMYByABKAlIBYgBARIaCg1hY3Rvcl91c2VyX2lkGAggASgJSAaIAQFCBwoFX25hbWVCCgoIX2VuYWJsZWRCHAoaX2V4cGVjdGVkX3Jlc291cmNlX3ZlcnNpb25CIAoeX292ZXJyaWRlX2F1dG9fY2xlYW51cF9vbl9pZGxlQiAKHl9wZXJfbWludXRlX2NyZWF0ZV9hZ2VudF9saW1pdEIXChVfaW5pdGlhbF9pbnN0cnVjdGlvbnNCEAoOX2FjdG9yX3VzZXJfaWQiPAojQ2xvdWRUcmlnZ2Vyc1VwZGF0ZVdvcmtmbG93UmVzcG9uc2USFQoNd29ya2Zsb3dfanNvbhgBIAEoCSKIAgoLQ2xvdWRUdW5uZWwSEQoJdHVubmVsX2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJEg0KBXZtX2lkGAMgASgJEhIKCmxvY2FsX2hvc3QYBCABKAkSEgoKbG9jYWxfcG9ydBgFIAEoBRINCgVsYWJlbBgGIAEoCRIpCgRtb2RlGAcgASgOMhsucHVibGljX2FwaS5DbG91ZFR1bm5lbE1vZGUSLQoGc3RhdHVzGAggASgOMh0ucHVibGljX2FwaS5DbG91ZFR1bm5lbFN0YXR1cxIMCgRob3N0GAkgASgJEhIKCmNyZWF0ZWRfYXQYCiABKAkSEgoKZXhwaXJlc19hdBgLIAEoCSI9ChhDbG91ZFR1bm5lbHNDbG9zZVJlcXVlc3QSEQoJdHVubmVsX2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJEChlDbG91ZFR1bm5lbHNDbG9zZVJlc3BvbnNlEicKBnR1bm5lbBgBIAEoCzIXLnB1YmxpY19hcGkuQ2xvdWRUdW5uZWwiKwoXQ2xvdWRUdW5uZWxzTGlzdFJlcXVlc3QSEAoIYWdlbnRfaWQYASABKAkiRAoYQ2xvdWRUdW5uZWxzTGlzdFJlc3BvbnNlEigKB3R1bm5lbHMYASADKAsyFy5wdWJsaWNfYXBpLkNsb3VkVHVubmVsIoYBChdDbG91ZFR1bm5lbHNPcGVuUmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRISCgpsb2NhbF9wb3J0GAIgASgFEhIKCmxvY2FsX2hvc3QYAyABKAkSDQoFbGFiZWwYBCABKAkSFQoIYWN0aXZhdGUYBSABKAhIAIgBAUILCglfYWN0aXZhdGUiQwoYQ2xvdWRUdW5uZWxzT3BlblJlc3BvbnNlEicKBnR1bm5lbBgBIAEoCzIXLnB1YmxpY19hcGkuQ2xvdWRUdW5uZWwisAEKGkNsb3VkVW5wb29sZWREYWVtb25TdW1tYXJ5Eg0KBXZtX2lkGAEgASgJEhYKDndvcmtzcGFjZV9wYXRoGAIgASgJEhIKCm1heF9hZ2VudHMYAyABKAUSGwoTY3VycmVudF9hZ2VudF9jb3VudBgEIAEoBRIUCgxjb25uZWN0ZWRfYXQYBSABKAkSFgoObGFzdF9oZWFydGJlYXQYBiABKAkSDAoEbmFtZRgHIAEoCSJZChpDbG91ZFdlYmhvb2tzQ3JlYXRlUmVxdWVzdBITCgtkZXNjcmlwdGlvbhgBIAEoCRIMCgR0eXBlGAIgASgJEhgKEGNhcHR1cmVkX2hlYWRlcnMYAyADKAkicQobQ2xvdWRXZWJob29rc0NyZWF0ZVJlc3BvbnNlEhQKDHdlYmhvb2tfanNvbhgBIAEoCRILCgN1cmwYAiABKAkSDgoGc2VjcmV0GAMgASgJEh8KF3NldHVwX2luc3RydWN0aW9uc19qc29uGAQgASgJIjEKGkNsb3VkV2ViaG9va3NEZWxldGVSZXF1ZXN0EhMKC3dlYmhvb2tfaWRzGAEgAygJImcKG0Nsb3VkV2ViaG9va3NEZWxldGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhsKE2RlbGV0ZWRfd2ViaG9va19pZHMYAiADKAkSGgoSZmFpbGVkX3dlYmhvb2tfaWRzGAMgAygJIi0KF0Nsb3VkV2ViaG9va3NHZXRSZXF1ZXN0EhIKCndlYmhvb2tfaWQYASABKAkiMAoYQ2xvdWRXZWJob29rc0dldFJlc3BvbnNlEhQKDHdlYmhvb2tfanNvbhgBIAEoCSJMCihDbG91ZFdlYmhvb2tzR2V0U2V0dXBJbnN0cnVjdGlvbnNSZXF1ZXN0EhIKCndlYmhvb2tfaWQYASABKAkSDAoEdHlwZRgCIAEoCSJMCilDbG91ZFdlYmhvb2tzR2V0U2V0dXBJbnN0cnVjdGlvbnNSZXNwb25zZRIfChdzZXR1cF9pbnN0cnVjdGlvbnNfanNvbhgBIAEoCSIaChhDbG91ZFdlYmhvb2tzTGlzdFJlcXVlc3QiMgoZQ2xvdWRXZWJob29rc0xpc3RSZXNwb25zZRIVCg13ZWJob29rc19qc29uGAEgASgJIkMKHUNsb3VkV2ViaG9va3NTZXRTZWNyZXRSZXF1ZXN0EhIKCndlYmhvb2tfaWQYASABKAkSDgoGc2VjcmV0GAIgASgJIjYKHkNsb3VkV2ViaG9va3NTZXRTZWNyZXRSZXNwb25zZRIUCgx3ZWJob29rX2pzb24YASABKAkilQEKGkNsb3VkV2ViaG9va3NVcGRhdGVSZXF1ZXN0EhIKCndlYmhvb2tfaWQYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIYChBjYXB0dXJlZF9oZWFkZXJzGAMgAygJEh8KF3VwZGF0ZV9jYXB0dXJlZF9oZWFkZXJzGAQgASgIQg4KDF9kZXNjcmlwdGlvbiIzChtDbG91ZFdlYmhvb2tzVXBkYXRlUmVzcG9uc2USFAoMd2ViaG9va19qc29uGAEgASgJIvsEChtDb2RlYmFzZVJldHJpZXZhbFJhd1JlcXVlc3QSLgoHcXVlcmllcxgBIAMoCzIdLnB1YmxpY19hcGkuUmF3UmV0cmlldmFsUXVlcnkSIAoFYmxvYnMYAiABKAsyES5wdWJsaWNfYXBpLkJsb2JzEhIKCm1heF9jaHVua3MYAyABKAUSGQoRbWF4X291dHB1dF9sZW5ndGgYBCABKAUSGQoRdXNlcl9ndWlkZWRfYmxvYnMYBSADKAkSGwoTZXh0ZXJuYWxfc291cmNlX2lkcxgGIAMoCRIlCh1kaXNhYmxlX2F1dG9fZXh0ZXJuYWxfc291cmNlcxgHIAEoCBIMCgRwYXRoGAggASgJEg4KBnByZWZpeBgJIAEoCRIOCgZzdWZmaXgYCiABKAkSFQoNc2VsZWN0ZWRfY29kZRgLIAEoCRIkCgZkaWFsb2cYDCADKAsyFC5wdWJsaWNfYXBpLkV4Y2hhbmdlEiMKG2luY2x1ZGVfZm9ybWF0dGVkX3JldHJpZXZhbBgNIAEoCBIcChRpbmNsdWRlX2xpbmVfbnVtYmVycxgOIAEoCBIcCg9jb252ZXJzYXRpb25faWQYDyABKAlIAIgBARIjChZwYXJlbnRfY29udmVyc2F0aW9uX2lkGBAgASgJSAGIAQESIQoUcm9vdF9jb252ZXJzYXRpb25faWQYESABKAlIAogBARIUCgd0dXJuX2lkGBIgASgJSAOIAQFCEgoQX2NvbnZlcnNhdGlvbl9pZEIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZEIXChVfcm9vdF9jb252ZXJzYXRpb25faWRCCgoIX3R1cm5faWQipAEKHENvZGViYXNlUmV0cmlldmFsUmF3UmVzcG9uc2USLQoGY2h1bmtzGAEgAygLMh0ucHVibGljX2FwaS5SYXdSZXRyaWV2ZWRDaHVuaxIbChNmb3JtYXR0ZWRfcmV0cmlldmFsGAIgASgJEhoKEnVua25vd25fYmxvYl9uYW1lcxgDIAMoCRIcChRjaGVja3BvaW50X25vdF9mb3VuZBgEIAEoCCKlBAoYQ29kZWJhc2VSZXRyaWV2YWxSZXF1ZXN0EhsKE2luZm9ybWF0aW9uX3JlcXVlc3QYASABKAkSJAoGZGlhbG9nGAIgAygLMhQucHVibGljX2FwaS5FeGNoYW5nZRIgCgVibG9icxgDIAEoCzIRLnB1YmxpY19hcGkuQmxvYnMSGQoRbWF4X291dHB1dF9sZW5ndGgYBCABKAUSIgoaZGlzYWJsZV9jb2RlYmFzZV9yZXRyaWV2YWwYBSABKAgSHwoXZW5hYmxlX2NvbW1pdF9yZXRyaWV2YWwYBiABKAgSJQodZW5hYmxlX2NvbnZlcnNhdGlvbl9yZXRyaWV2YWwYByABKAgSNgoSYnJpbmdfeW91cl9vd25fa2V5GAggASgLMhUuY2hhdC5CcmluZ1lvdXJPd25LZXlIAIgBARIcCg9jb252ZXJzYXRpb25faWQYCSABKAlIAYgBARIjChZwYXJlbnRfY29udmVyc2F0aW9uX2lkGAogASgJSAKIAQESIQoUcm9vdF9jb252ZXJzYXRpb25faWQYCyABKAlIA4gBARIUCgd0dXJuX2lkGAwgASgJSASIAQFCFQoTX2JyaW5nX3lvdXJfb3duX2tleUISChBfY29udmVyc2F0aW9uX2lkQhkKF19wYXJlbnRfY29udmVyc2F0aW9uX2lkQhcKFV9yb290X2NvbnZlcnNhdGlvbl9pZEIKCghfdHVybl9pZCK7BgoZQ29kZWJhc2VSZXRyaWV2YWxSZXNwb25zZRIbChNmb3JtYXR0ZWRfcmV0cmlldmFsGAEgASgJEiUKHWNvZGViYXNlX3JldHJpZXZhbF9lbGFwc2VkX21zGAIgASgFEikKIWNvbnZlcnNhdGlvbl9yZXRyaWV2YWxfZWxhcHNlZF9tcxgDIAEoBRIpCiFjb252ZXJzYXRpb25faW5pdGlhbF9yZXRyaWV2YWxfbXMYBCABKAUSJwofY29udmVyc2F0aW9uX3F1ZXJ5X3Jld3JpdGluZ19tcxgFIAEoBRIqCiJjb252ZXJzYXRpb25fZm9sbG93dXBfcmV0cmlldmFsX21zGAYgASgFEhsKE2Jsb2JfbmFtZV9sb29rdXBfbXMYByABKAUSIQoZY29kZWJhc2VfY2h1bmtzX3JldHJpZXZlZBgIIAEoBRIjChtjb252ZXJzYXRpb25fY2h1bmtzX2luaXRpYWwYCSABKAUSJgoeY29udmVyc2F0aW9uX3F1ZXJpZXNfZ2VuZXJhdGVkGAogASgFEiQKHGNvbnZlcnNhdGlvbl9jaHVua3NfZm9sbG93dXAYCyABKAUSJAocY29udmVyc2F0aW9uX2NodW5rc19jb21iaW5lZBgMIAEoBRIqCiJjb2RlYmFzZV9yZXN1bHRfbGVuX3ByZV90cnVuY2F0aW9uGA0gASgFEhsKE2NvZGViYXNlX3Jlc3VsdF9sZW4YDiABKAUSLgomY29udmVyc2F0aW9uX3Jlc3VsdF9sZW5fcHJlX3RydW5jYXRpb24YDyABKAUSHwoXY29udmVyc2F0aW9uX3Jlc3VsdF9sZW4YECABKAUSGwoTY29tYmluZWRfcmVzdWx0X2xlbhgRIAEoBRIUCgx0b3RhbF9idWRnZXQYEiABKAUSFwoPY29kZWJhc2VfYnVkZ2V0GBMgASgFEhsKE2NvbnZlcnNhdGlvbl9idWRnZXQYFCABKAUSGgoSY29kZWJhc2VfdHJ1bmNhdGVkGBUgASgIEh4KFmNvbnZlcnNhdGlvbl90cnVuY2F0ZWQYFiABKAgSFwoPZmluYWxfdHJ1bmNhdGVkGBcgASgIImIKEkNvbXBsZXRpb25GZWVkYmFjaxISCgpyZXF1ZXN0X2lkGAEgASgJEioKBnJhdGluZxgCIAEoDjIaLnB1YmxpY19hcGkuRmVlZGJhY2tSYXRpbmcSDAoEbm90ZRgDIAEoCSIcChpDb21wbGV0aW9uRmVlZGJhY2tSZXNwb25zZSKDAQoOQ29tcGxldGlvbkl0ZW0SDAoEdGV4dBgBIAEoCRIWCg5za2lwcGVkX3N1ZmZpeBgCIAEoCRIfChdzdWZmaXhfcmVwbGFjZW1lbnRfdGV4dBgDIAEoCRIZCgxmaWx0ZXJfc2NvcmUYBCABKAJIAIgBAUIPCg1fZmlsdGVyX3Njb3JlIsoGChFDb21wbGV0aW9uUmVxdWVzdBISCgVtb2RlbBgBIAEoCUgAiAEBEg4KBnByb21wdBgCIAEoCRIMCgRwYXRoGAMgASgJEhMKBnN1ZmZpeBgEIAEoCUgBiAEBEhQKCG1lbW9yaWVzGAUgAygJQgIYARISCgV0b3BfaxgGIAEoBUgCiAEBEhIKBXRvcF9wGAcgASgCSAOIAQESGAoLdGVtcGVyYXR1cmUYCCABKAJIBIgBARIXCgptYXhfdG9rZW5zGAkgASgFSAWIAQESEQoEbGFuZxgKIAEoCUgGiAEBEhYKCWJsb2JfbmFtZRgLIAEoCUgHiAEBEhkKDHByZWZpeF9iZWdpbhgMIAEoBUgIiAEBEhwKD2N1cnNvcl9wb3NpdGlvbhgNIAEoBUgJiAEBEhcKCnN1ZmZpeF9lbmQYDiABKAVICogBARIyCgxyZWNlbmN5X2luZm8YDyABKAsyFy5wdWJsaWNfYXBpLlJlY2VuY3lJbmZvSAuIAQESIAoFYmxvYnMYECABKAsyES5wdWJsaWNfYXBpLkJsb2JzEhgKC3NlcXVlbmNlX2lkGBEgASgNSAyIAQESGwoKcHJvYmVfb25seRgSIAEoCEICGAFIDYgBARIdChBmaWx0ZXJfdGhyZXNob2xkGBMgASgCSA6IAQESLgoLZWRpdF9ldmVudHMYFCADKAsyGS5wdWJsaWNfYXBpLkZpbGVFZGl0RXZlbnQSOAoPY29tcGxldGlvbl90eXBlGBUgASgOMhoucHVibGljX2FwaS5Db21wbGV0aW9uVHlwZUgPiAEBQggKBl9tb2RlbEIJCgdfc3VmZml4QggKBl90b3Bfa0IICgZfdG9wX3BCDgoMX3RlbXBlcmF0dXJlQg0KC19tYXhfdG9rZW5zQgcKBV9sYW5nQgwKCl9ibG9iX25hbWVCDwoNX3ByZWZpeF9iZWdpbkISChBfY3Vyc29yX3Bvc2l0aW9uQg0KC19zdWZmaXhfZW5kQg8KDV9yZWNlbmN5X2luZm9CDgoMX3NlcXVlbmNlX2lkQg0KC19wcm9iZV9vbmx5QhMKEV9maWx0ZXJfdGhyZXNob2xkQhIKEF9jb21wbGV0aW9uX3R5cGUipAEKFENvbXBsZXRpb25SZXNvbHV0aW9uEhIKCnJlcXVlc3RfaWQYASABKAkSFQoNZW1pdF90aW1lX3NlYxgCIAEoAxIWCg5lbWl0X3RpbWVfbnNlYxgDIAEoBRIYChByZXNvbHZlX3RpbWVfc2VjGAQgASgDEhkKEXJlc29sdmVfdGltZV9uc2VjGAUgASgFEhQKDGFjY2VwdGVkX2lkeBgGIAEoBSLiAgoSQ29tcGxldGlvblJlc3BvbnNlEgwKBHRleHQYASABKAkSHAoUdW5rbm93bl9tZW1vcnlfbmFtZXMYAiADKAkSIwobc3VnZ2VzdGVkX3ByZWZpeF9jaGFyX2NvdW50GAMgASgNEiMKG3N1Z2dlc3RlZF9zdWZmaXhfY2hhcl9jb3VudBgEIAEoDRImChV1bmtub3duX2NoZWNrcG9pbnRfaWQYBSABKAlCAhgBSACIAQESJgoVY29tcGxldGlvbl90aW1lb3V0X21zGAYgASgNQgIYAUgBiAEBEjQKEGNvbXBsZXRpb25faXRlbXMYByADKAsyGi5wdWJsaWNfYXBpLkNvbXBsZXRpb25JdGVtEhwKFGNoZWNrcG9pbnRfbm90X2ZvdW5kGAggASgIQhgKFl91bmtub3duX2NoZWNrcG9pbnRfaWRCGAoWX2NvbXBsZXRpb25fdGltZW91dF9tcyKjAwoQQ29udmVyc2F0aW9uSW5mbxIXCg9jb252ZXJzYXRpb25faWQYASABKAkSFAoMd29ya3NwYWNlX2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEhEKCWlzX3Bpbm5lZBgEIAEoCBIqCgR0eXBlGAUgASgOMhwucHVibGljX2FwaS5Db252ZXJzYXRpb25UeXBlEjMKCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESMwoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIoChtmb3JrZWRfZnJvbV9jb252ZXJzYXRpb25faWQYCCABKAlIAogBARIkChdmb3JrZWRfZnJvbV9leGNoYW5nZV9pZBgJIAEoCUgDiAEBQg0KC19jcmVhdGVkX2F0Qg0KC191cGRhdGVkX2F0Qh4KHF9mb3JrZWRfZnJvbV9jb252ZXJzYXRpb25faWRCGgoYX2ZvcmtlZF9mcm9tX2V4Y2hhbmdlX2lkIsQBChZDb3N0QW5hbHl0aWNzRGF0YVBvaW50EjYKCmRhdGVfcmFuZ2UYASABKAsyIi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NEYXRlUmFuZ2USMQoHbWV0cmljcxgCIAEoCzIgLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc01ldHJpY3MSPwoPZ3JvdXBfYnlfdmFsdWVzGAMgASgLMiYucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzR3JvdXBCeVZhbHVlcyJ2ChZDb3N0QW5hbHl0aWNzRGF0ZVJhbmdlEi4KCnN0YXJ0X2RhdGUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF9kYXRlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI6ChdDb3N0QW5hbHl0aWNzRXhwZXJ0SW5mbxIRCglleHBlcnRfaWQYASABKAkSDAoEbmFtZRgCIAEoCSJ7ChRDb3N0QW5hbHl0aWNzRmlsdGVycxIQCgh1c2VyX2lkcxgBIAMoCRIdChVwcm9kdWN0X2Rpc3BsYXlfbmFtZXMYAiADKAkSHgoWcmVzb3VyY2VfZGlzcGxheV9uYW1lcxgDIAMoCRISCgpleHBlcnRfaWRzGAQgAygJIvwCChpDb3N0QW5hbHl0aWNzR3JvdXBCeVZhbHVlcxIaChJtb2RlbF9kaXNwbGF5X25hbWUYASABKAkSHQoVYWN0aXZpdHlfZGlzcGxheV9uYW1lGAIgASgJEjQKCXVzZXJfaW5mbxgDIAEoCzIhLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc1VzZXJJbmZvEjgKC2J5b2tfc3RhdHVzGAQgASgOMiMucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzQnlva1N0YXR1cxIdChVyZXNvdXJjZV9kaXNwbGF5X25hbWUYBSABKAkSHAoUcHJvZHVjdF9kaXNwbGF5X25hbWUYBiABKAkSPAoNcmVzb3VyY2VfdHlwZRgHIAEoDjIlLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc1Jlc291cmNlVHlwZRI4CgtleHBlcnRfaW5mbxgIIAEoCzIjLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc0V4cGVydEluZm8imQIKFENvc3RBbmFseXRpY3NNZXRyaWNzEhkKEWJpbGxlZF9hbW91bnRfdXNkGAEgASgJEiMKG2VzdGltYXRlZF9jdXN0b21lcl9jb3N0X3VzZBgCIAEoCRIVCg1iYXNlX2Nvc3RfdXNkGAMgASgJEhUKDXN1cmNoYXJnZV91c2QYBCABKAkSFAoMaW5wdXRfdG9rZW5zGAUgASgEEhUKDW91dHB1dF90b2tlbnMYBiABKAQSGQoRY2FjaGVfcmVhZF90b2tlbnMYByABKAQSGgoSY2FjaGVfd3JpdGVfdG9rZW5zGAggASgEEhgKEGNyZWRpdHNfY29uc3VtZWQYCSABKAkSFQoNc2Vzc2lvbl9jb3VudBgKIAEoBCJyChZDb3N0QW5hbHl0aWNzVGFnRmlsdGVyEgsKA2tleRgBIAEoCRIOCgZ2YWx1ZXMYAiADKAkSOwoLZmlsdGVyX3R5cGUYAyABKA4yJi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NUYWdGaWx0ZXJUeXBlInUKFUNvc3RBbmFseXRpY3NVc2VySW5mbxIPCgd1c2VyX2lkGAEgASgJEjQKCXVzZXJfdHlwZRgCIAEoDjIhLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc1VzZXJUeXBlEhUKDWVtYWlsX29yX25hbWUYAyABKAkiyAEKGENvc3RBbmFseXRpY3NWMkRhdGFQb2ludBI2CgpkYXRlX3JhbmdlGAEgASgLMiIucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzRGF0ZVJhbmdlEjEKB21ldHJpY3MYAiABKAsyIC5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NNZXRyaWNzEkEKD2dyb3VwX2J5X3ZhbHVlcxgDIAEoCzIoLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc1YyR3JvdXBCeVZhbHVlcyJRChZDb3N0QW5hbHl0aWNzVjJGaWx0ZXJzEjcKC3RhZ19maWx0ZXJzGAEgAygLMiIucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzVGFnRmlsdGVyIqICChxDb3N0QW5hbHl0aWNzVjJHcm91cEJ5VmFsdWVzEkAKBHRhZ3MYASADKAsyMi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NWMkdyb3VwQnlWYWx1ZXMuVGFnc0VudHJ5EloKEnRhZ19kaXNwbGF5X3ZhbHVlcxgCIAMoCzI+LnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc1YyR3JvdXBCeVZhbHVlcy5UYWdEaXNwbGF5VmFsdWVzRW50cnkaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVVGFnRGlzcGxheVZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEikwEKF0NvdW50Q2hhdEhpc3RvcnlSZXF1ZXN0EhgKEGNvbnZlcnNhdGlvbl9pZHMYASADKAkSGwoOZXhjbHVkZV9zaWxlbnQYAiABKAhIAIgBARIbCg5leGNsdWRlX2ZhaWxlZBgDIAEoCEgBiAEBQhEKD19leGNsdWRlX3NpbGVudEIRCg9fZXhjbHVkZV9mYWlsZWQiUAoYQ291bnRDaGF0SGlzdG9yeVJlc3BvbnNlEjQKB3Jlc3VsdHMYASADKAsyIy5wdWJsaWNfYXBpLkNvdW50Q29udmVyc2F0aW9uUmVzdWx0Il4KF0NvdW50Q29udmVyc2F0aW9uUmVzdWx0Eg8KBWNvdW50GAIgASgFSAASDwoFZXJyb3IYAyABKAlIABIXCg9jb252ZXJzYXRpb25faWQYASABKAlCCAoGcmVzdWx0Ir0CChlDcmVhdGVDb252ZXJzYXRpb25SZXF1ZXN0EhQKDHdvcmtzcGFjZV9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIRCglpc19waW5uZWQYAyABKAgSKgoEdHlwZRgEIAEoDjIcLnB1YmxpY19hcGkuQ29udmVyc2F0aW9uVHlwZRIcCg9jb252ZXJzYXRpb25faWQYBSABKAlIAIgBARIoChtmb3JrZWRfZnJvbV9jb252ZXJzYXRpb25faWQYBiABKAlIAYgBARIkChdmb3JrZWRfZnJvbV9leGNoYW5nZV9pZBgHIAEoCUgCiAEBQhIKEF9jb252ZXJzYXRpb25faWRCHgocX2ZvcmtlZF9mcm9tX2NvbnZlcnNhdGlvbl9pZEIaChhfZm9ya2VkX2Zyb21fZXhjaGFuZ2VfaWQiNQoaQ3JlYXRlQ29udmVyc2F0aW9uUmVzcG9uc2USFwoPY29udmVyc2F0aW9uX2lkGAEgASgJIogBChhDcmVhdGVQdWxsUmVxdWVzdFJlcXVlc3QSJAoEcmVwbxgBIAEoCzIWLnB1YmxpY19hcGkuR2l0aHViUmVwbxINCgV0aXRsZRgCIAEoCRIMCgRib2R5GAMgASgJEgwKBGhlYWQYBCABKAkSDAoEYmFzZRgFIAEoCRINCgVkcmFmdBgGIAEoCCJQChlDcmVhdGVQdWxsUmVxdWVzdFJlc3BvbnNlEjMKDHB1bGxfcmVxdWVzdBgBIAEoCzIdLnB1YmxpY19hcGkuR2l0aHViUHVsbFJlcXVlc3QiqgMKGENyZWF0ZVJlbW90ZUFnZW50UmVxdWVzdBI+Cg93b3Jrc3BhY2Vfc2V0dXAYASABKAsyJS5wdWJsaWNfYXBpLlJlbW90ZUFnZW50V29ya3NwYWNlU2V0dXASSgoXaW5pdGlhbF9yZXF1ZXN0X2RldGFpbHMYAiABKAsyKS5wdWJsaWNfYXBpLlJlbW90ZUFnZW50Q2hhdFJlcXVlc3REZXRhaWxzEhIKBW1vZGVsGAMgASgJSACIAQESGQoMc2V0dXBfc2NyaXB0GAQgASgJSAGIAQESEgoFdG9rZW4YBSABKAlIAogBARIiChVpc19zZXR1cF9zY3JpcHRfYWdlbnQYBiABKAhIA4gBARISCgV0aXRsZRgHIAEoCUgEiAEBEhcKCmltYWdlX25hbWUYCCABKAlIBYgBARIWCg5kaXNhYmxlZF90b29scxgJIAMoCUIICgZfbW9kZWxCDwoNX3NldHVwX3NjcmlwdEIICgZfdG9rZW5CGAoWX2lzX3NldHVwX3NjcmlwdF9hZ2VudEIICgZfdGl0bGVCDQoLX2ltYWdlX25hbWUiYwoZQ3JlYXRlUmVtb3RlQWdlbnRSZXNwb25zZRIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSLQoGc3RhdHVzGAIgASgOMh0ucHVibGljX2FwaS5SZW1vdGVBZ2VudFN0YXR1cyJPChRDcmVhdGVUcmlnZ2VyUmVxdWVzdBI3Cg1jb25maWd1cmF0aW9uGAEgASgLMiAucHVibGljX2FwaS5UcmlnZ2VyQ29uZmlndXJhdGlvbiI9ChVDcmVhdGVUcmlnZ2VyUmVzcG9uc2USJAoHdHJpZ2dlchgBIAEoCzITLnB1YmxpY19hcGkuVHJpZ2dlciIsChZDcmVhdGVXb3Jrc3BhY2VSZXF1ZXN0EgwKBG5hbWUYASABKAlKBAgCEAMiLwoXQ3JlYXRlV29ya3NwYWNlUmVzcG9uc2USFAoMd29ya3NwYWNlX2lkGAEgASgJIjIKEUNyZWRpdERldGFpbHNJbmZvEg0KBWxhYmVsGAEgASgJEg4KBmFtb3VudBgCIAEoASKOAQoRQ3JlZGl0RGlzcGxheUluZm8SHwoXdXNhZ2VfdW5pdF9kaXNwbGF5X25hbWUYASABKAkSGQoRcGxhbl9kaXNwbGF5X25hbWUYAiABKAkSMgoGYmFubmVyGAMgASgLMh0ucHVibGljX2FwaS5CYW5uZXJJbmZvcm1hdGlvbkgAiAEBQgkKB19iYW5uZXIiMwoYRGVsZXRlUmVtb3RlQWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCSIbChlEZWxldGVSZW1vdGVBZ2VudFJlc3BvbnNlIkMKGURlbGV0ZVRlbmFudFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgJIi0KGkRlbGV0ZVRlbmFudFNlY3JldFJlc3BvbnNlEg8KB2RlbGV0ZWQYASABKAgiKgoURGVsZXRlVHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgBIAEoCSIXChVEZWxldGVUcmlnZ2VyUmVzcG9uc2UifAoXRGVsZXRlVXNlclNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgJEiYKBXNjb3BlGAMgASgOMhcucHVibGljX2FwaS5TZWNyZXRTY29wZRIRCglzZWNyZXRfaWQYBCABKAkiKwoYRGVsZXRlVXNlclNlY3JldFJlc3BvbnNlEg8KB2RlbGV0ZWQYASABKAgidQoWRGlmZkV4cGxhbmF0aW9uU2VjdGlvbhINCgV0aXRsZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI3CghzZWN0aW9ucxgDIAMoCzIlLnB1YmxpY19hcGkuRGlmZkV4cGxhbmF0aW9uU3ViU2VjdGlvbiKbAQoZRGlmZkV4cGxhbmF0aW9uU3ViU2VjdGlvbhINCgV0aXRsZRgBIAEoCRJGCgxkZXNjcmlwdGlvbnMYAiADKAsyMC5wdWJsaWNfYXBpLkRpZmZFeHBsYW5hdGlvblN1YlNlY3Rpb25EZXNjcmlwdGlvbhInCglkaWZmX3R5cGUYAyABKA4yFC5wdWJsaWNfYXBpLkRpZmZUeXBlInsKJERpZmZFeHBsYW5hdGlvblN1YlNlY3Rpb25EZXNjcmlwdGlvbhIMCgRwYXRoGAEgASgJEgwKBHRleHQYAiABKAkSIAoFcmFuZ2UYAyABKAsyES5wdWJsaWNfYXBpLlJhbmdlEhUKDXNlbGVjdGVkX2NvZGUYBCABKAkiUAoURGlzbWlzc0VudGl0eVJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgBIAEoCRIRCgllbnRpdHlfaWQYAiABKAkSEQoJZGlzbWlzc2VkGAMgASgIIhcKFURpc21pc3NFbnRpdHlSZXNwb25zZSJ0ChhEcm9wcGVkU2hhcmVkU2VydmVyT3B0SW4SEQoJc2VydmVyX2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCRIZChFvcHRfaW5fZ2VuZXJhdGlvbhgDIAEoAxIaChJjdXJyZW50X2dlbmVyYXRpb24YBCABKAMidAoPRWRpdEZpbGVSZXF1ZXN0EhEKCWZpbGVfcGF0aBgBIAEoCRIUCgxlZGl0X3N1bW1hcnkYAiABKAkSIQoZZGV0YWlsZWRfZWRpdF9kZXNjcmlwdGlvbhgDIAEoCRIVCg1maWxlX2NvbnRlbnRzGAQgASgJIkQKEEVkaXRGaWxlUmVzcG9uc2USHgoWbW9kaWZpZWRfZmlsZV9jb250ZW50cxgBIAEoCRIQCghpc19lcnJvchgCIAEoCCKNAwoLRWRpdFJlcXVlc3QSEgoFbW9kZWwYASABKAlIAIgBARIOCgZwcmVmaXgYAiABKAkSFQoNc2VsZWN0ZWRfdGV4dBgDIAEoCRIOCgZzdWZmaXgYBCABKAkSFgoKYmxvYl9uYW1lcxgFIAMoCUICGAESEQoEcGF0aBgGIAEoCUgBiAEBEhMKC2luc3RydWN0aW9uGAcgASgJEhEKBGxhbmcYCCABKAlIAogBARIWCglibG9iX25hbWUYCSABKAlIA4gBARIZCgxwcmVmaXhfYmVnaW4YCiABKAVIBIgBARIXCgpzdWZmaXhfZW5kGAsgASgFSAWIAQESGAoLc2VxdWVuY2VfaWQYDCABKA1IBogBARIgCgVibG9icxgNIAEoCzIRLnB1YmxpY19hcGkuQmxvYnNCCAoGX21vZGVsQgcKBV9wYXRoQgcKBV9sYW5nQgwKCl9ibG9iX25hbWVCDwoNX3ByZWZpeF9iZWdpbkINCgtfc3VmZml4X2VuZEIOCgxfc2VxdWVuY2VfaWQipAIKDkVkaXRSZXNvbHV0aW9uEhcKC2NsaWVudF9uYW1lGAEgASgJQgIYARISCgpyZXF1ZXN0X2lkGAIgASgJEhUKDWVtaXRfdGltZV9zZWMYAyABKAMSFgoOZW1pdF90aW1lX25zZWMYBCABKAUSGAoQcmVzb2x2ZV90aW1lX3NlYxgFIAEoAxIZChFyZXNvbHZlX3RpbWVfbnNlYxgGIAEoBRITCgtpc19hY2NlcHRlZBgHIAEoCBIbCg5hbm5vdGF0ZWRfdGV4dBgIIAEoCUgAiAEBEiIKFWFubm90YXRlZF9pbnN0cnVjdGlvbhgJIAEoCUgBiAEBQhEKD19hbm5vdGF0ZWRfdGV4dEIYChZfYW5ub3RhdGVkX2luc3RydWN0aW9uIlYKDEVkaXRSZXNwb25zZRIMCgR0ZXh0GAEgASgJEhoKEnVua25vd25fYmxvYl9uYW1lcxgCIAMoCRIcChRjaGVja3BvaW50X25vdF9mb3VuZBgDIAEoCCIYChZFbnRlcnByaXNlU3Vic2NyaXB0aW9uIo0CCghFeGNoYW5nZRIXCg9yZXF1ZXN0X21lc3NhZ2UYASABKAkSGgoNcmVzcG9uc2VfdGV4dBgCIAEoCUgAiAEBEhcKCnJlcXVlc3RfaWQYAyABKAlIAYgBARIyCg1yZXF1ZXN0X25vZGVzGAQgAygLMhsucHVibGljX2FwaS5DaGF0UmVxdWVzdE5vZGUSMgoOcmVzcG9uc2Vfbm9kZXMYBSADKAsyGi5wdWJsaWNfYXBpLkNoYXRSZXN1bHROb2RlEhkKDGNvbXBvc2l0ZV9pZBgGIAEoCUgCiAEBQhAKDl9yZXNwb25zZV90ZXh0Qg0KC19yZXF1ZXN0X2lkQg8KDV9jb21wb3NpdGVfaWQi0QEKDkV4Y2hhbmdlVXBkYXRlEhcKCnJlcXVlc3RfaWQYASABKAlIAIgBARITCgtzZXF1ZW5jZV9pZBgCIAEoDRIVCg1hcHBlbmRlZF90ZXh0GAMgASgJEjIKDmFwcGVuZGVkX25vZGVzGAQgAygLMhoucHVibGljX2FwaS5DaGF0UmVzdWx0Tm9kZRI3ChZhcHBlbmRlZF9jaGFuZ2VkX2ZpbGVzGAUgAygLMhcucHVibGljX2FwaS5DaGFuZ2VkRmlsZUINCgtfcmVxdWVzdF9pZCKJAgoZRXhlY3V0ZU1hbnVhbEFnZW50UmVxdWVzdBIRCgllbnRpdHlfaWQYASABKAkSPQoSZ2l0aHViX2VudGl0eV90eXBlGAIgASgOMhwucHVibGljX2FwaS5HaXRIdWJFbnRpdHlUeXBlSACIAQESPQoSbGluZWFyX2VudGl0eV90eXBlGAMgASgOMhwucHVibGljX2FwaS5MaW5lYXJFbnRpdHlUeXBlSAGIAQESLQoMYWdlbnRfY29uZmlnGAQgASgLMhcucHVibGljX2FwaS5BZ2VudENvbmZpZ0IVChNfZ2l0aHViX2VudGl0eV90eXBlQhUKE19saW5lYXJfZW50aXR5X3R5cGUihgEKGkV4ZWN1dGVNYW51YWxBZ2VudFJlc3BvbnNlEhQKDGV4ZWN1dGlvbl9pZBgBIAEoCRIcCg9yZW1vdGVfYWdlbnRfaWQYAiABKAlIAIgBARIUCgdtZXNzYWdlGAMgASgJSAGIAQFCEgoQX3JlbW90ZV9hZ2VudF9pZEIKCghfbWVzc2FnZSJyCh1FeGVjdXRlVHJpZ2dlck1hbnVhbGx5UmVxdWVzdBISCgp0cmlnZ2VyX2lkGAEgASgJEhEKCWVudGl0eV9pZBgCIAEoCRIZCgxleHRyYV9wcm9tcHQYAyABKAlIAIgBAUIPCg1fZXh0cmFfcHJvbXB0IooBCh5FeGVjdXRlVHJpZ2dlck1hbnVhbGx5UmVzcG9uc2USFAoMZXhlY3V0aW9uX2lkGAEgASgJEhwKD3JlbW90ZV9hZ2VudF9pZBgCIAEoCUgAiAEBEhQKB21lc3NhZ2UYAyABKAlIAYgBAUISChBfcmVtb3RlX2FnZW50X2lkQgoKCF9tZXNzYWdlIm4KDkV4dGVybmFsU291cmNlEgoKAmlkGAEgASgJEgwKBG5hbWUYBCABKAkSDQoFdGl0bGUYAiABKAkSMwoLc291cmNlX3R5cGUYAyABKA4yHi5wdWJsaWNfYXBpLkV4dGVybmFsU291cmNlVHlwZSL7BQoORmVhdHVyZUNvbnRyb2wSPQoNZmVhdHVyZV90eXBlcxgBIAMoDjImLnB1YmxpY19hcGkuRmVhdHVyZUNvbnRyb2wuRmVhdHVyZVR5cGUSNgoFc3RhdGUYAiABKA4yJy5wdWJsaWNfYXBpLkZlYXR1cmVDb250cm9sLkZlYXR1cmVTdGF0ZRJJCg9kaXNhYmxlZF9yZWFzb24YAyABKA4yMC5wdWJsaWNfYXBpLkZlYXR1cmVDb250cm9sLkZlYXR1cmVEaXNhYmxlZFJlYXNvbhIsCghlbmRfZGF0ZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOwoMZGlzcGxheV9pbmZvGAUgASgLMiUucHVibGljX2FwaS5GZWF0dXJlQ29udHJvbERpc3BsYXlJbmZvIuoBCgtGZWF0dXJlVHlwZRILCgdVTktOT1dOEAASEAoMQUxMX0ZFQVRVUkVTEAESCAoEQ0hBVBACEgkKBUFHRU5UEAMSEAoMUkVNT1RFX0FHRU5UEAQSDQoJQ0xJX0FHRU5UEAUSDwoLT1JJRU5UQVRJT04QBxIPCgtDT0RFX1JFVklFVxAJEiIKHkNIQVRfU1RSRUFNX0NSRURJVF9DT05TVU1QVElPThAVEhIKDkNPTlRFWFRfRU5HSU5FEBYSDAoIUE9TRUlET04QGRISCg5JTkRFWElOR19JTkZSQRAcIgQIBhAGIgQICBAIIjwKDEZlYXR1cmVTdGF0ZRIRCg1TVEFURV9VTktOT1dOEAASCwoHRU5BQkxFRBABEgwKCERJU0FCTEVEEAIikAEKFUZlYXR1cmVEaXNhYmxlZFJlYXNvbhISCg5SRUFTT05fVU5LTk9XThAAEhkKFUlOQUNUSVZFX1NVQlNDUklQVElPThABEhoKFlVTQUdFX0JBTEFOQ0VfREVQTEVURUQQAhIYChROT1RfSU5DTFVERURfSU5fUExBThADEhIKDlFVT1RBX0VYQ0VFREVEEAQiUAoZRmVhdHVyZUNvbnRyb2xEaXNwbGF5SW5mbxItCgZiYW5uZXIYAiABKAsyHS5wdWJsaWNfYXBpLkJhbm5lckluZm9ybWF0aW9uSgQIARACIkkKEUZlYXR1cmVHYXRpbmdJbmZvEjQKEGZlYXR1cmVfY29udHJvbHMYASADKAsyGi5wdWJsaWNfYXBpLkZlYXR1cmVDb250cm9sIl4KCEZpbGVFZGl0EhQKDGJlZm9yZV9zdGFydBgBIAEoDRITCgtiZWZvcmVfdGV4dBgCIAEoCRITCgthZnRlcl9zdGFydBgDIAEoDRISCgphZnRlcl90ZXh0GAQgASgJInUKDUZpbGVFZGl0RXZlbnQSDAoEcGF0aBgBIAEoCRIYChBiZWZvcmVfYmxvYl9uYW1lGAIgASgJEhcKD2FmdGVyX2Jsb2JfbmFtZRgDIAEoCRIjCgVlZGl0cxgEIAMoCzIULnB1YmxpY19hcGkuRmlsZUVkaXQiTAoSRmluZE1pc3NpbmdSZXF1ZXN0EhIKBW1vZGVsGAEgASgJSACIAQESGAoQbWVtX29iamVjdF9uYW1lcxgCIAMoCUIICgZfbW9kZWwiUgoTRmluZE1pc3NpbmdSZXNwb25zZRIcChR1bmtub3duX21lbW9yeV9uYW1lcxgCIAMoCRIdChVub25pbmRleGVkX2Jsb2JfbmFtZXMYAyADKAki0wEKHEdlbmVyYXRlQ29tbWl0TWVzc2FnZVJlcXVlc3QSPQoSY2hhbmdlZF9maWxlX3N0YXRzGAEgASgLMhwucHVibGljX2FwaS5DaGFuZ2VkRmlsZVN0YXRzSACIAQESEQoEZGlmZhgCIAEoCUgBiAEBEiAKGHJlbGV2YW50X2NvbW1pdF9tZXNzYWdlcxgDIAMoCRIfChdleGFtcGxlX2NvbW1pdF9tZXNzYWdlcxgEIAMoCUIVChNfY2hhbmdlZF9maWxlX3N0YXRzQgcKBV9kaWZmIi0KHUdlbmVyYXRlQ29tbWl0TWVzc2FnZVJlc3BvbnNlEgwKBHRleHQYASABKAkiJAoWR2V0QWdlbnRQZXJzb25hUmVxdWVzdBIKCgJpZBgBIAEoCSJKChdHZXRBZ2VudFBlcnNvbmFSZXNwb25zZRIvCg1hZ2VudF9wZXJzb25hGAEgASgLMhgucHVibGljX2FwaS5BZ2VudFBlcnNvbmEiGgoYR2V0QmlsbGluZ1N1bW1hcnlSZXF1ZXN0IvkBChlHZXRCaWxsaW5nU3VtbWFyeVJlc3BvbnNlEhEKCXBsYW5fbmFtZRgBIAEoCRIYChBhbW91bnRfcmVtYWluaW5nGAIgASgJEiEKGWFtb3VudF9pbmNsdWRlZF9wZXJfY3ljbGUYAyABKAkSKQoKdXNhZ2VfdW5pdBgEIAEoDjIVLnB1YmxpY19hcGkuVXNhZ2VVbml0EiIKGmJpbGxpbmdfY3ljbGVfZW5kX2RhdGVfaXNvGAUgASgJEjIKBmJhbm5lchgGIAEoCzIdLnB1YmxpY19hcGkuQmFubmVySW5mb3JtYXRpb25IAIgBAUIJCgdfYmFubmVyIkcKFkdldENvbnZlcnNhdGlvblJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEhcKD2NvbnZlcnNhdGlvbl9pZBgCIAEoCSJNChdHZXRDb252ZXJzYXRpb25SZXNwb25zZRIyCgxjb252ZXJzYXRpb24YASABKAsyHC5wdWJsaWNfYXBpLkNvbnZlcnNhdGlvbkluZm8iowIKF0dldENvc3RBbmFseXRpY3NSZXF1ZXN0EjYKCmRhdGVfcmFuZ2UYASABKAsyIi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NEYXRlUmFuZ2USNwoNZ3JvdXBfYnlfa2V5cxgCIAMoDjIgLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc0dyb3VwQnkSPQoLZ3JhbnVsYXJpdHkYAyABKA4yKC5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NUaW1lR3JhbnVsYXJpdHkSEQoJcGFnZV9zaXplGAQgASgNEhIKCnBhZ2VfdG9rZW4YBSABKAkSMQoHZmlsdGVycxgGIAEoCzIgLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc0ZpbHRlcnMibAoYR2V0Q29zdEFuYWx5dGljc1Jlc3BvbnNlEjcKC2RhdGFfcG9pbnRzGAEgAygLMiIucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzRGF0YVBvaW50EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSKJAgoZR2V0Q29zdEFuYWx5dGljc1YyUmVxdWVzdBI2CgpkYXRlX3JhbmdlGAEgASgLMiIucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzRGF0ZVJhbmdlEj0KC2dyYW51bGFyaXR5GAIgASgOMigucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzVGltZUdyYW51bGFyaXR5EhkKEXRhZ19ncm91cF9ieV9rZXlzGAMgAygJEjMKB2ZpbHRlcnMYBCABKAsyIi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NWMkZpbHRlcnMSEQoJcGFnZV9zaXplGAUgASgNEhIKCnBhZ2VfdG9rZW4YBiABKAkicAoaR2V0Q29zdEFuYWx5dGljc1YyUmVzcG9uc2USOQoLZGF0YV9wb2ludHMYASADKAsyJC5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NWMkRhdGFQb2ludBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkiFgoUR2V0Q3JlZGl0SW5mb1JlcXVlc3QiyQMKFUdldENyZWRpdEluZm9SZXNwb25zZRIdChV1c2FnZV91bml0c19yZW1haW5pbmcYASABKAESMwondXNhZ2VfdW5pdHNfdG90YWxfY3VycmVudF9iaWxsaW5nX2N5Y2xlGAIgASgBQgIYARIoChx1c2FnZV91bml0c190b3RhbF9hZGRpdGlvbmFsGAMgASgBQgIYARIdChVpc19jcmVkaXRfYmFsYW5jZV9sb3cYBCABKAgSMwoMZGlzcGxheV9pbmZvGAUgASgLMh0ucHVibGljX2FwaS5DcmVkaXREaXNwbGF5SW5mbxIwCgxyZWZyZXNoZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KJmluY2x1ZGVkX3VzYWdlX3VuaXRzX3Blcl9iaWxsaW5nX2N5Y2xlGAcgASgBEioKImN1cnJlbnRfYmlsbGluZ19jeWNsZV9lbmRfZGF0ZV9pc28YCCABKAkSNQoOY3JlZGl0X2RldGFpbHMYCSADKAsyHS5wdWJsaWNfYXBpLkNyZWRpdERldGFpbHNJbmZvEhkKEXVzYWdlX3VuaXRzX3RvdGFsGAogASgBIvMCChdHZXRFbnRpdHlEZXRhaWxzUmVxdWVzdBIRCgllbnRpdHlfaWQYASABKAkSLQoMZXZlbnRfc291cmNlGAIgASgOMhcucHVibGljX2FwaS5FdmVudFNvdXJjZRI9ChJnaXRodWJfZW50aXR5X3R5cGUYAyABKA4yHC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eVR5cGVIAIgBARI9ChJsaW5lYXJfZW50aXR5X3R5cGUYBCABKA4yHC5wdWJsaWNfYXBpLkxpbmVhckVudGl0eVR5cGVIAYgBARIXCgpyZXBvc2l0b3J5GAUgASgJSAKIAQESJQoYaW5jbHVkZV9yZWxhdGVkX2VudGl0aWVzGAYgASgISAOIAQFCFQoTX2dpdGh1Yl9lbnRpdHlfdHlwZUIVChNfbGluZWFyX2VudGl0eV90eXBlQg0KC19yZXBvc2l0b3J5QhsKGV9pbmNsdWRlX3JlbGF0ZWRfZW50aXRpZXMi5wEKGEdldEVudGl0eURldGFpbHNSZXNwb25zZRI0Cg1naXRodWJfZW50aXR5GAEgASgLMhgucHVibGljX2FwaS5HaXRIdWJFbnRpdHlIAIgBARI0Cg1saW5lYXJfZW50aXR5GAIgASgLMhgucHVibGljX2FwaS5MaW5lYXJFbnRpdHlIAYgBARINCgVmb3VuZBgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSAKIAQFCEAoOX2dpdGh1Yl9lbnRpdHlCEAoOX2xpbmVhcl9lbnRpdHlCEAoOX2Vycm9yX21lc3NhZ2UiPAoUR2V0R2l0aHViUmVwb1JlcXVlc3QSJAoEcmVwbxgBIAEoCzIWLnB1YmxpY19hcGkuR2l0aHViUmVwbyI9ChVHZXRHaXRodWJSZXBvUmVzcG9uc2USJAoEcmVwbxgBIAEoCzIWLnB1YmxpY19hcGkuR2l0aHViUmVwbyI0CiFHZXRJbXBsaWNpdEV4dGVybmFsU291cmNlc1JlcXVlc3QSDwoHbWVzc2FnZRgBIAEoCSJRCiJHZXRJbXBsaWNpdEV4dGVybmFsU291cmNlc1Jlc3BvbnNlEisKB3NvdXJjZXMYASADKAsyGi5wdWJsaWNfYXBpLkV4dGVybmFsU291cmNlIjsKJEdldExhdGVzdEluZGV4ZWRDb21taXRCbG9ic2V0UmVxdWVzdBITCgtjb21taXRfc2hhcxgBIAMoCSKSAQolR2V0TGF0ZXN0SW5kZXhlZENvbW1pdEJsb2JzZXRSZXNwb25zZRISCgpjb21taXRfc2hhGAEgASgJEjUKCmZpbGVfaW5mb3MYAiADKAsyIS5wdWJsaWNfYXBpLkluZGV4ZWRDb21taXRGaWxlSW5mbxIeChZiYXNlbGluZV9jaGVja3BvaW50X2lkGAMgASgJIuQCChpHZXRNYXRjaGluZ0VudGl0aWVzUmVxdWVzdBIXCgp0cmlnZ2VyX2lkGAEgASgJSACIAQESNgoKY29uZGl0aW9ucxgCIAEoCzIdLnB1YmxpY19hcGkuVHJpZ2dlckNvbmRpdGlvbnNIAYgBARItCgxldmVudF9zb3VyY2UYAyABKA4yFy5wdWJsaWNfYXBpLkV2ZW50U291cmNlEhIKBWxpbWl0GAQgASgNSAKIAQESEwoGb2Zmc2V0GAUgASgNSAOIAQESEgoFc2luY2UYBiABKAlIBIgBARISCgV1bnRpbBgHIAEoCUgFiAEBEhsKDnNob3dfZGlzbWlzc2VkGAggASgISAaIAQFCDQoLX3RyaWdnZXJfaWRCDQoLX2NvbmRpdGlvbnNCCAoGX2xpbWl0QgkKB19vZmZzZXRCCAoGX3NpbmNlQggKBl91bnRpbEIRCg9fc2hvd19kaXNtaXNzZWQi1wIKG0dldE1hdGNoaW5nRW50aXRpZXNSZXNwb25zZRIxCg9naXRodWJfZW50aXRpZXMYASADKAsyGC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eRIxCg9saW5lYXJfZW50aXRpZXMYAiADKAsyGC5wdWJsaWNfYXBpLkxpbmVhckVudGl0eRITCgt0b3RhbF9jb3VudBgDIAEoDRIQCghoYXNfbW9yZRgEIAEoCBIeChFxdWVyeV9leHBsYW5hdGlvbhgFIAEoCUgAiAEBEiMKFnRvdGFsX2VudGl0aWVzX2NoZWNrZWQYBiABKA1IAYgBARI1ChFzY2hlZHVsZV9lbnRpdGllcxgHIAMoCzIaLnB1YmxpY19hcGkuU2NoZWR1bGVFbnRpdHlCFAoSX3F1ZXJ5X2V4cGxhbmF0aW9uQhkKF190b3RhbF9lbnRpdGllc19jaGVja2VkIjQKHEdldE1jcENhdGFsb2dNZXRhZGF0YVJlcXVlc3QSFAoMcHJvZHVjdF90eXBlGAEgASgFIlUKHUdldE1jcENhdGFsb2dNZXRhZGF0YVJlc3BvbnNlEjQKB2VudHJpZXMYASADKAsyIy5wdWJsaWNfYXBpLk1jcENhdGFsb2dNZXRhZGF0YUVudHJ5IlcKF0dldE1jcENvbmZpZ0J5SWRSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRIpCgVzY29wZRgCIAEoDjIaLnB1YmxpY19hcGkuTWNwQ29uZmlnU2NvcGUiQQoYR2V0TWNwQ29uZmlnQnlJZFJlc3BvbnNlEiUKBmNvbmZpZxgBIAEoCzIVLnB1YmxpY19hcGkuTWNwQ29uZmlnIlUKE0dldE1jcFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIcCg9hY3RpdmVfc3BhY2VfaWQYAiABKAlIAIgBAUISChBfYWN0aXZlX3NwYWNlX2lkIj0KFEdldE1jcFNlY3JldFJlc3BvbnNlEiUKBnNlY3JldBgBIAEoCzIVLnB1YmxpY19hcGkuTWNwU2VjcmV0Ik4KGkdldE1jcFRlbmFudENvbmZpZ3NSZXF1ZXN0EjAKDHByb2R1Y3RfdHlwZRgBIAEoDjIaLnB1YmxpY19hcGkuTWNwUHJvZHVjdFR5cGUiSQobR2V0TWNwVGVuYW50Q29uZmlnc1Jlc3BvbnNlEioKC21jcF9jb25maWdzGAEgAygLMhUucHVibGljX2FwaS5NY3BDb25maWciHQobR2V0TWNwVGVuYW50U2V0dGluZ3NSZXF1ZXN0IlsKHEdldE1jcFRlbmFudFNldHRpbmdzUmVzcG9uc2USKgoLbWNwX2NvbmZpZ3MYASADKAsyFS5wdWJsaWNfYXBpLk1jcENvbmZpZxIPCgd2ZXJzaW9uGAIgASgJIkwKGEdldE1jcFVzZXJDb25maWdzUmVxdWVzdBIwCgxwcm9kdWN0X3R5cGUYASABKA4yGi5wdWJsaWNfYXBpLk1jcFByb2R1Y3RUeXBlIokDChlHZXRNY3BVc2VyQ29uZmlnc1Jlc3BvbnNlEioKC21jcF9jb25maWdzGAEgAygLMhUucHVibGljX2FwaS5NY3BDb25maWcSIQoZZW5hYmxlZF9zaGFyZWRfc2VydmVyX2lkcxgCIAMoCRJnChpzZXJ2ZXJfcHJvZHVjdF9wcmVmZXJlbmNlcxgDIAMoCzJDLnB1YmxpY19hcGkuR2V0TWNwVXNlckNvbmZpZ3NSZXNwb25zZS5TZXJ2ZXJQcm9kdWN0UHJlZmVyZW5jZXNFbnRyeRJLCh1kcm9wcGVkX3NoYXJlZF9zZXJ2ZXJfb3B0X2lucxgEIAMoCzIkLnB1YmxpY19hcGkuRHJvcHBlZFNoYXJlZFNlcnZlck9wdEluGmcKHVNlcnZlclByb2R1Y3RQcmVmZXJlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRI1CgV2YWx1ZRgCIAEoCzImLnB1YmxpY19hcGkuTWNwU2VydmVyUHJvZHVjdFByZWZlcmVuY2U6AjgBIhsKGUdldE1jcFVzZXJTZXR0aW5nc1JlcXVlc3QiWQoaR2V0TWNwVXNlclNldHRpbmdzUmVzcG9uc2USKgoLbWNwX2NvbmZpZ3MYASADKAsyFS5wdWJsaWNfYXBpLk1jcENvbmZpZxIPCgd2ZXJzaW9uGAIgASgJIhIKEEdldE1vZGVsc1JlcXVlc3Qiw9oBChFHZXRNb2RlbHNSZXNwb25zZRIaCg1kZWZhdWx0X21vZGVsGAEgASgJSACIAQESIQoGbW9kZWxzGAIgAygLMhEucHVibGljX2FwaS5Nb2RlbBInCglsYW5ndWFnZXMYAyADKAsyFC5wdWJsaWNfYXBpLkxhbmd1YWdlEkYKDWZlYXR1cmVfZmxhZ3MYBCABKAsyKi5wdWJsaWNfYXBpLkdldE1vZGVsc1Jlc3BvbnNlLkZlYXR1cmVGbGFnc0gBiAEBEjkKCXVzZXJfdGllchgFIAEoDjImLnB1YmxpY19hcGkuR2V0TW9kZWxzUmVzcG9uc2UuVXNlclRpZXISNQoEdXNlchgGIAEoCzIiLnB1YmxpY19hcGkuR2V0TW9kZWxzUmVzcG9uc2UuVXNlckgCiAEBEj4KEmJvb3RzdHJhcF9zZXR0aW5ncxgHIAEoCzIdLnB1YmxpY19hcGkuQm9vdHN0cmFwU2V0dGluZ3NIA4gBARrm1AEKDEZlYXR1cmVGbGFncxIiChFlbmFibGVfY29kZV9lZGl0cxgBIAEoCEICGAFIAIgBARIYCgtlbmFibGVfY2hhdBgFIAEoCEgBiAEBEigKG2VuYWJsZV93b3Jrc3BhY2VfbWFuYWdlcl91aRgGIAEoCEgCiAEBEiEKFGVuYWJsZV9pbnRlbGxpal9jaGF0GAcgASgISAOIAQESLwoiZW5hYmxlX3dvcmtzcGFjZV9tYW5hZ2VyX3VpX2xhdW5jaBgIIAEoCEgEiAEBEiMKFmFkZGl0aW9uYWxfY2hhdF9tb2RlbHMYCSABKAlIBYgBARImChlpbnRlbGxpal9jaGF0X21pbl92ZXJzaW9uGAogASgJSAaIAQESKAobdnNjb2RlX2ZseXdoZWVsX21pbl92ZXJzaW9uGAwgASgJSAeIAQESOAordnNjb2RlX2V4dGVybmFsX3NvdXJjZXNfaW5fY2hhdF9taW5fdmVyc2lvbhgNIAEoCUgIiAEBEiAKE2VuYWJsZV9pbnN0cnVjdGlvbnMYDiABKAhICYgBARIfChJlbmFibGVfc21hcnRfcGFzdGUYDyABKAhICogBARIrCh5lbmFibGVfc21hcnRfcGFzdGVfbWluX3ZlcnNpb24YESABKAlIC4gBARImChllbmFibGVfdmlld190ZXh0X2RvY3VtZW50GBIgASgISAyIAQESIAoTY2hlY2twb2ludF9ibG9ic192MhgTIAEoCEgNiAEBEiMKFmVuYWJsZV9kYXRhX2NvbGxlY3Rpb24YFCABKAhIDogBARIhChRzbWFsbF9zeW5jX3RocmVzaG9sZBgVIAEoA0gPiAEBEh8KEmJpZ19zeW5jX3RocmVzaG9sZBgWIAEoA0gQiAEBEiMKFmJ5cGFzc19sYW5ndWFnZV9maWx0ZXIYFyABKAhIEYgBARIdChBlbmFibGVfaGluZHNpZ2h0GBggASgISBKIAQESIgoVbWF4X3VwbG9hZF9zaXplX2J5dGVzGBkgASgDSBOIAQESMgolaW50ZWxsaWpfZm9yY2VfY29tcGxldGlvbl9taW5fdmVyc2lvbhgaIAEoCUgUiAEBEjAKH2VuYWJsZV9leHRlcm5hbF9zb3VyY2VzX2luX2NoYXQYGyABKAhCAhgBSBWIAQESJQoYbWF4X3RyYWNrYWJsZV9maWxlX2NvdW50GBwgASgDSBaIAQESOAorbWF4X3RyYWNrYWJsZV9maWxlX2NvdW50X3dpdGhvdXRfcGVybWlzc2lvbhgdIAEoA0gXiAEBEjcKKm1pbl91cGxvYWRlZF9wZXJjZW50YWdlX3dpdGhvdXRfcGVybWlzc2lvbhgeIAEoA0gYiAEBEjQKJ3ZzY29kZV9jaGF0X2hpbnRfZGVjb3JhdGlvbl9taW5fdmVyc2lvbhgfIAEoCUgZiAEBEi8KImVuYWJsZV9jb21wbGV0aW9uX2ZpbGVfZWRpdF9ldmVudHMYISABKAhIGogBARInChp2c2NvZGVfc291cmNlc19taW5fdmVyc2lvbhgiIAEoCUgbiAEBEiYKGXZzY29kZV9lbmFibGVfY3B1X3Byb2ZpbGUYIyABKAhIHIgBARIpChx2ZXJpZnlfZm9sZGVyX2lzX3NvdXJjZV9yZXBvGCQgASgISB2IAQESLAofcmVmdXNlX3RvX3N5bmNfaG9tZV9kaXJlY3RvcmllcxglIAEoCEgeiAEBEjYKKWVuYWJsZV9maWxlX2xpbWl0c19mb3Jfc3luY2luZ19wZXJtaXNzaW9uGCYgASgISB+IAQESJQoYdnNjb2RlX3NoYXJlX21pbl92ZXJzaW9uGCcgASgJSCCIAQESJwoaaW50ZWxsaWpfc2hhcmVfbWluX3ZlcnNpb24YKCABKAlIIYgBARIiChVlbmFibGVfc3VtbWFyeV90aXRsZXMYKSABKAhIIogBARIpChxlbmFibGVfY2hhdF9tZXJtYWlkX2RpYWdyYW1zGCogASgISCOIAQESKAobc21hcnRfcGFzdGVfcHJlY29tcHV0ZV9tb2RlGCsgASgJSCSIAQESMAojdnNjb2RlX25ld190aHJlYWRzX21lbnVfbWluX3ZlcnNpb24YLCABKAlIJYgBARIyCiVpbnRlbGxpal9uZXdfdGhyZWFkc19tZW51X21pbl92ZXJzaW9uGC0gASgJSCaIAQESMAojdnNjb2RlX2VkaXRhYmxlX2hpc3RvcnlfbWluX3ZlcnNpb24YLiABKAlIJ4gBARIiChVpbnRlbGxpal9zaG93X3N1bW1hcnkYLyABKAhIKIgBARIeChFlbmFibGVfZ3VpZGVsaW5lcxgwIAEoCEgpiAEBEjwKL3ZzY29kZV9lbmFibGVfY2hhdF9tZXJtYWlkX2RpYWdyYW1zX21pbl92ZXJzaW9uGDEgASgJSCqIAQESJgoZdnNjb2RlX2RlcHJlY2F0ZWRfdmVyc2lvbhgyIAEoCUgriAEBEigKG2ludGVsbGlqX2RlcHJlY2F0ZWRfdmVyc2lvbhgzIAEoCUgsiAEBEj4KMXZzY29kZV91c2VfY2hlY2twb2ludF9tYW5hZ2VyX2NvbnRleHRfbWluX3ZlcnNpb24YNCABKAlILYgBARI3Cip2c2NvZGVfdmFsaWRhdGVfY2hlY2twb2ludF9tYW5hZ2VyX2NvbnRleHQYNSABKAhILogBARItCiBpbnRlbGxpal9zbWFydF9wYXN0ZV9taW5fdmVyc2lvbhg3IAEoCUgviAEBEj4KMXZzY29kZV9kZXNpZ25fc3lzdGVtX3JpY2hfdGV4dF9lZGl0b3JfbWluX3ZlcnNpb24YOiABKAlIMIgBARIwCiNhbGxvd19jbGllbnRfZmVhdHVyZV9mbGFnX292ZXJyaWRlcxg7IAEoCEgxiAEBEi8KInZzY29kZV9jaGF0X3dpdGhfdG9vbHNfbWluX3ZlcnNpb24YPCABKAlIMogBARIxCiRpbnRlbGxpal9jaGF0X3dpdGhfdG9vbHNfbWluX3ZlcnNpb24YPSABKAlIM4gBARIvCiJ2c2NvZGVfY2hhdF9tdWx0aW1vZGFsX21pbl92ZXJzaW9uGD4gASgJSDSIAQESMQokaW50ZWxsaWpfY2hhdF9tdWx0aW1vZGFsX21pbl92ZXJzaW9uGD8gASgJSDWIAQESPgoxaW50ZWxsaWpfZW5hYmxlX2NoYXRfbWVybWFpZF9kaWFncmFtc19taW5fdmVyc2lvbhhAIAEoCUg2iAEBEioKHXZzY29kZV9hZ2VudF9tb2RlX21pbl92ZXJzaW9uGEEgASgJSDeIAQESLAofaW50ZWxsaWpfYWdlbnRfbW9kZV9taW5fdmVyc2lvbhhCIAEoCUg4iAEBEiYKGWludGVsbGlqX2Jsb2NrZWRfdmVyc2lvbnMYQyABKAlIOYgBARJACjNpbnRlbGxpal9kZXNpZ25fc3lzdGVtX3JpY2hfdGV4dF9lZGl0b3JfbWluX3ZlcnNpb24YRCABKAlIOogBARIyCiVpbnRlbGxpal9zeW5jaW5nX3Byb2dyZXNzX21pbl92ZXJzaW9uGEUgASgJSDuIAQESJAoXZWxvX21vZGVsX2NvbmZpZ3VyYXRpb24YRyABKAlIPIgBARIjChZ2c2NvZGVfYWdlbnRfZWRpdF90b29sGEkgASgJSD2IAQESOQosaW50ZWxsaWpfYXNrX2Zvcl9zeW5jX3Blcm1pc3Npb25fbWluX3ZlcnNpb24YSiABKAlIPogBARIxCiR2c2NvZGVfYmFja2dyb3VuZF9hZ2VudHNfbWluX3ZlcnNpb24YSyABKAlIP4gBARIzCiZpbnRlbGxpal9iYWNrZ3JvdW5kX2FnZW50c19taW5fdmVyc2lvbhhMIAEoCUhAiAEBEikKHHVzZXJfZ3VpZGVsaW5lc19sZW5ndGhfbGltaXQYTSABKANIQYgBARIuCiF3b3Jrc3BhY2VfZ3VpZGVsaW5lc19sZW5ndGhfbGltaXQYTiABKANIQogBARI0Cid2c2NvZGVfcmljaF9jaGVja3BvaW50X2luZm9fbWluX3ZlcnNpb24YTyABKAlIQ4gBARIsCh9pbnRlbGxpal9lbmFibGVfdXNlcl9ndWlkZWxpbmVzGFIgASgISESIAQESMQokaW50ZWxsaWpfZW5hYmxlX3dvcmtzcGFjZV9ndWlkZWxpbmVzGFMgASgISEWIAQESMQokdnNjb2RlX2FnZW50X21vZGVfbWluX3N0YWJsZV92ZXJzaW9uGFQgASgJSEaIAQESOgotaW50ZWxsaWpfdmlydHVhbGl6ZWRfbWVzc2FnZV9saXN0X21pbl92ZXJzaW9uGFYgASgJSEeIAQESPQowdnNjb2RlX2NoYXRfc3RhYmxlX3ByZWZpeF90cnVuY2F0aW9uX21pbl92ZXJzaW9uGFcgASgJSEiIAQESKgodYWdlbnRfZWRpdF90b29sX21pbl92aWV3X3NpemUYWCABKANISYgBARIxCiRpbnRlbGxpal91c2VyX2d1aWRlbGluZXNfaW5fc2V0dGluZ3MYWSABKAhISogBARIoChthZ2VudF9lZGl0X3Rvb2xfc2NoZW1hX3R5cGUYWiABKAlIS4gBARIsCh92c2NvZGVfZGlyZWN0X2FwcGx5X21pbl92ZXJzaW9uGFsgASgJSEyIAQESLQogdnNjb2RlX3BlcnNvbmFsaXRpZXNfbWluX3ZlcnNpb24YXCABKAlITYgBARI3CiphZ2VudF9zYXZlX2ZpbGVfdG9vbF9pbnN0cnVjdGlvbnNfcmVtaW5kZXIYXiABKAhITogBARI6Ci1yZW1vdGVfYWdlbnRfY2hhdF9oaXN0b3J5X3BvbGxpbmdfaW50ZXJ2YWxfbXMYXyABKANIT4gBARIyCiVyZW1vdGVfYWdlbnRfbGlzdF9wb2xsaW5nX2ludGVydmFsX21zGGAgASgDSFCIAQESPwoyaW50ZWxsaWpfcHJlZmVyZW5jZV9jb2xsZWN0aW9uX2FsbG93ZWRfbWluX3ZlcnNpb24YYiABKAlIUYgBARIvCiJpbnRlbGxpal9lbmFibGVfaG9tZXNwdW5fZ2l0aWdub3JlGGMgASgISFKIAQESNwoqdnNjb2RlX2dlbmVyYXRlX2NvbW1pdF9tZXNzYWdlX21pbl92ZXJzaW9uGGQgASgJSFOIAQESGQoMZW5hYmxlX3J1bGVzGGUgASgISFSIAQESMgolYWdlbnRfZWRpdF90b29sX2VuYWJsZV9mdXp6eV9tYXRjaGluZxhnIAEoCEhViAEBEjgKK2FnZW50X2VkaXRfdG9vbF9mdXp6eV9tYXRjaF9zdWNjZXNzX21lc3NhZ2UYaCABKAlIVogBARIxCiRhZ2VudF9lZGl0X3Rvb2xfZnV6enlfbWF0Y2hfbWF4X2RpZmYYaSABKANIV4gBARI3CiphZ2VudF9lZGl0X3Rvb2xfZnV6enlfbWF0Y2hfbWF4X2RpZmZfcmF0aW8YaiABKAFIWIgBARJLCj5hZ2VudF9lZGl0X3Rvb2xfZnV6enlfbWF0Y2hfbWluX2FsbF9tYXRjaF9zdHJlYWtfYmV0d2Vlbl9kaWZmcxhrIAEoA0hZiAEBEiMKFmVuYWJsZV9wcm9tcHRfZW5oYW5jZXIYbCABKAhIWogBARItCiBpbnRlbGxpal9wcm9tcHRfZW5oYW5jZXJfZW5hYmxlZBhvIAEoCEhbiAEBEjIKJWFnZW50X2VkaXRfdG9vbF9pbnN0cnVjdGlvbnNfcmVtaW5kZXIYcCABKAhIXIgBARIjChZpbnRlbGxpal9lbmFibGVfc2VudHJ5GHEgASgISF2IAQESMQokaW50ZWxsaWpfd2Vidmlld19lcnJvcl9zYW1wbGluZ19yYXRlGHIgASgBSF6IAQESMAojaW50ZWxsaWpfcGx1Z2luX2Vycm9yX3NhbXBsaW5nX3JhdGUYcyABKAFIX4gBARIxCiRpbnRlbGxpal93ZWJ2aWV3X3RyYWNlX3NhbXBsaW5nX3JhdGUYdCABKAFIYIgBARIwCiNpbnRlbGxpal9wbHVnaW5fdHJhY2Vfc2FtcGxpbmdfcmF0ZRh1IAEoAUhhiAEBEikKHG9wZW5fZmlsZV9tYW5hZ2VyX3YyX2VuYWJsZWQYdiABKAhIYogBARI7Ci5pbnRlbGxpal9lbmFibGVfd2Vidmlld19wZXJmb3JtYW5jZV9tb25pdG9yaW5nGHcgASgISGOIAQESKQocdnNjb2RlX3Rhc2tfbGlzdF9taW5fdmVyc2lvbhh4IAEoCUhkiAEBEjAKI2FnZW50X2VkaXRfdG9vbF9zaG93X3Jlc3VsdF9zbmlwcGV0GHkgASgISGWIAQESMgolaW50ZWxsaWpfZWR0X2ZyZWV6ZV9kZXRlY3Rpb25fZW5hYmxlZBh6IAEoCEhmiAEBEiAKE2NsaWVudF9hbm5vdW5jZW1lbnQYeyABKAlIZ4gBARIwCiN2c2NvZGVfcmVtb3RlX2FnZW50X3NzaF9taW5fdmVyc2lvbhh8IAEoCUhoiAEBEiYKGWFnZW50X2VkaXRfdG9vbF9tYXhfbGluZXMYfSABKANIaYgBARIkChdncmVwX3NlYXJjaF90b29sX2VuYWJsZRh+IAEoCEhqiAEBEisKHmdyZXBfc2VhcmNoX3Rvb2xfdGltZWxpbWl0X3NlYxh/IAEoA0hriAEBEjEKI2dyZXBfc2VhcmNoX3Rvb2xfb3V0cHV0X2NoYXJzX2xpbWl0GIABIAEoA0hsiAEBEjAKImdyZXBfc2VhcmNoX3Rvb2xfbnVtX2NvbnRleHRfbGluZXMYgQEgASgDSG2IAQESJAoWZW5hYmxlX2FnZW50X2F1dG9fbW9kZRiCASABKAhIbogBARI0CiZhZ2VudF9yZXBvcnRfc3RyZWFtZWRfY2hhdF9ldmVyeV9jaHVuaxiDASABKANIb4gBARI2CihhZ2VudF9tYXhfdG90YWxfY2hhbmdlZF9maWxlc19zaXplX2J5dGVzGIQBIAEoA0hwiAEBEjMKJWFnZW50X21heF9jaGFuZ2VkX2ZpbGVzX3NraXBwZWRfcGF0aHMYhQEgASgDSHGIAQESMgokYWdlbnRfaWRsZV9zdGF0dXNfdXBkYXRlX2ludGVydmFsX21zGIYBIAEoA0hyiAEBEiIKFGFnZW50X21heF9pdGVyYXRpb25zGIcBIAEoA0hziAEBEjQKJmFnZW50X3NzaF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsX21zGIgBIAEoA0h0iAEBEjgKKmFnZW50X3NzaF9jb25uZWN0aW9uX2NoZWNrX2xvZ19pbnRlcnZhbF9tcxiJASABKANIdYgBARIlChdiZWFjaGhlYWRfZW5hYmxlX3NlbnRyeRiKASABKAhIdogBARIrCh1iZWFjaGhlYWRfZXJyb3Jfc2FtcGxpbmdfcmF0ZRiLASABKAFId4gBARIrCh1iZWFjaGhlYWRfdHJhY2Vfc2FtcGxpbmdfcmF0ZRiMASABKAFIeIgBARI3Cil2c2NvZGVfc3VwcG9ydF90b29sX3VzZV9zdGFydF9taW5fdmVyc2lvbhiNASABKAlIeYgBARIpChtoaXN0b3J5X3N1bW1hcnlfbWluX3ZlcnNpb24YjwEgASgJSHqIAQESKwoZaGlzdG9yeV9zdW1tYXJ5X21heF9jaGFycxiQASABKANCAhgBSHuIAQESLQobaGlzdG9yeV9zdW1tYXJ5X2xvd2VyX2NoYXJzGJEBIAEoA0ICGAFIfIgBARIlChdlbmFibGVfbmV3X3RocmVhZHNfbGlzdBiSASABKAhIfYgBARIkChZoaXN0b3J5X3N1bW1hcnlfcHJvbXB0GJMBIAEoCUh+iAEBEjAKImVuYWJsZV91bnRydW5jYXRlZF9jb250ZW50X3N0b3JhZ2UYlAEgASgISH+IAQESMAohbWF4X2xpbmVzX3Rlcm1pbmFsX3Byb2Nlc3Nfb3V0cHV0GJUBIAEoA0iAAYgBARIlChZlbmFibGVfY29tbWl0X2luZGV4aW5nGJcBIAEoCEiBAYgBARIjChRtYXhfY29tbWl0c190b19pbmRleBiYASABKANIggGIAQESLQoeaW50ZWxsaWpfdGFza19saXN0X21pbl92ZXJzaW9uGJkBIAEoCUiDAYgBARImChdlbmFibGVfZXhjaGFuZ2Vfc3RvcmFnZRiaASABKAhIhAGIAQESKQoacmV0cnlfY2hhdF9zdHJlYW1fdGltZW91dHMYmwEgASgISIUBiAEBEiwKHWVuYWJsZV90b29sX3VzZV9zdGF0ZV9zdG9yYWdlGJwBIAEoCEiGAYgBARItCh5yZW1vdGVfYWdlbnRfY3VycmVudF93b3Jrc3BhY2UYnQEgASgISIcBiAEBEiUKFmhpc3Rvcnlfc3VtbWFyeV9wYXJhbXMYnwEgASgJSIgBiAEBEiAKEWVuYWJsZV9hZ2VudF90YWJzGKABIAEoCEiJAYgBARIgChFlbmFibGVfc3dhcm1fbW9kZRihASABKAhIigGIAQESLgofYmVhY2hoZWFkX2VuYWJsZV9zdWJfYWdlbnRfdG9vbBiiASABKAhIiwGIAQESIwoUZW5hYmxlX2dyb3VwZWRfdG9vbHMYowEgASgISIwBiAEBEjsKLHJlbW90ZV9hZ2VudHNfcmVzdW1lX2hpbnRfYXZhaWxhYmxlX3R0bF9kYXlzGKQBIAEoA0iNAYgBARIkChVlbmFibGVfcGFyYWxsZWxfdG9vbHMYpQEgASgISI4BiAEBEiAKEWNsaWVudF9kZXByZWNhdGVkGKYBIAEoCEiPAYgBARItCh5lbmFibGVfdmlld2VkX2NvbnRlbnRfdHJhY2tpbmcYpwEgASgISJABiAEBEjMKJHZpZXdlZF9jb250ZW50X2Nsb3NlX3JhbmdlX3RocmVzaG9sZBioASABKANIkQGIAQESNQomdmlld2VkX2NvbnRlbnRfZGlzY3JldGVfanVtcF90aHJlc2hvbGQYqQEgASgDSJIBiAEBEi4KH3ZpZXdlZF9jb250ZW50X21pbl9ldmVudF9hZ2VfbXMYqgEgASgDSJMBiAEBEi4KH3ZpZXdlZF9jb250ZW50X21heF9ldmVudF9hZ2VfbXMYqwEgASgDSJQBiAEBEicKGGVuYWJsZV9uYXRpdmVfcmVtb3RlX21jcBisASABKAhIlQGIAQESLwogbm90aWZpY2F0aW9uX3BvbGxpbmdfaW50ZXJ2YWxfbXMYrQEgASgDSJYBiAEBEicKGGVuYWJsZV9hZ2VudF9naXRfdHJhY2tlchiuASABKAhIlwGIAQESLgofdHJ1bmNhdGlvbl9mb290ZXJfYWRkaXRpb25fdGV4dBivASABKAlImAGIAQESHAoNZW5hYmxlX3NlbnRyeRiwASABKAhImQGIAQESKgobd2Vidmlld19lcnJvcl9zYW1wbGluZ19yYXRlGLEBIAEoAUiaAYgBARIqCht3ZWJ2aWV3X3RyYWNlX3NhbXBsaW5nX3JhdGUYsgEgASgBSJsBiAEBEiUKFmFnZW50X3ZpZXdfdG9vbF9wYXJhbXMYswEgASgJSJwBiAEBEicKGHZzY29kZV90ZXJtaW5hbF9zdHJhdGVneRi0ASABKAlInQGIAQESHwoQYWdlbnRfY2hhdF9tb2RlbBi1ASABKAlIngGIAQESMQoiY2xvdWRfYWdlbnRfZGVmYXVsdF9tb2RlbF9vdmVycmlkZRi1AiABKAlInwGIAQESIgoTbW9kZWxfaW5mb19yZWdpc3RyeRi2ASABKAlIoAGIAQESQQoybWF4X2xpbmVzX3Rlcm1pbmFsX3Byb2Nlc3Nfb3V0cHV0X2FmdGVyX3RydW5jYXRpb24YtwEgASgDSKEBiAEBEjQKJWVuYWJsZV9ub3RpZmljYXRpb25zX3NlcnZpY2VfaW50ZWxsaWoYuAEgASgISKIBiAEBEiIKE2VuYWJsZV9sdWNpZGVfaWNvbnMYuQEgASgISKMBiAEBEi8KIGVuYWJsZV9lbmhhbmNlZF9kZWh5ZHJhdGlvbl9tb2RlGLwBIAEoCEikAYgBARI3Cih2c2NvZGVfc2hvd190aGlua2luZ19zdW1tYXJ5X21pbl92ZXJzaW9uGL0BIAEoCUilAYgBARI5CippbnRlbGxpal9zaG93X3RoaW5raW5nX3N1bW1hcnlfbWluX3ZlcnNpb24YvgEgASgJSKYBiAEBEjIKI2ludGVsbGlqX2VuYWJsZV9maWxlX2ludGFrZV9zZXJ2aWNlGMABIAEoCEinAYgBARI6CitpbnRlbGxpal9lbmFibGVfc2VnbWVudF9hbmFseXRpY3NfcmVwb3J0aW5nGMEBIAEoCEioAYgBARIgChFjbGlfZW5hYmxlX3NlbnRyeRjCASABKAhIqQGIAQESJgoXY2xpX2Vycm9yX3NhbXBsaW5nX3JhdGUYwwEgASgBSKoBiAEBEiYKF2NsaV90cmFjZV9zYW1wbGluZ19yYXRlGMQBIAEoAUirAYgBARIxCiJjbGlfY2hhdF9zdHJlYW1fcmV0cnlfaGFyZF9zdG9wX21zGMUBIAEoA0isAYgBARIjChRjbGlfZW5hYmxlX2FuYWx5dGljcxjHASABKAhIrQGIAQESJgoXY2xpX2FuYWx5dGljc193cml0ZV9rZXkYyAEgASgJSK4BiAEBEioKG3BhcnRuZXJfbWNwX2xhdW5jaF8yMDI1MDkxNhjJASABKAhIrwGIAQESIQoSY2xpX3BhcmFsbGVsX3Rvb2xzGMoBIAEoCEiwAYgBARIpChplbmFibGVfYnVsa19kZWxldGVfdGhyZWFkcxjLASABKAhIsQGIAQESMwokZW5hYmxlX2ludGVyc2VjdGlvbl9vYnNlcnZlcl9tYW5hZ2VyGMwBIAEoCEiyAYgBARIzCiRlbmFibGVfdGVuYW50X2xldmVsX3Rvb2xfcGVybWlzc2lvbnMYzQEgASgISLMBiAEBEjIKI3dlYnZpZXdfcmVwbGF5c19zZXNzaW9uX3NhbXBsZV9yYXRlGM4BIAEoAUi0AYgBARIzCiR3ZWJ2aWV3X3JlcGxheXNfb25fZXJyb3Jfc2FtcGxlX3JhdGUYzwEgASgBSLUBiAEBEjAKIXZzY29kZV9wbHVnaW5fZXJyb3Jfc2FtcGxpbmdfcmF0ZRjQASABKAFItgGIAQESMAohdnNjb2RlX3BsdWdpbl90cmFjZV9zYW1wbGluZ19yYXRlGNEBIAEoAUi3AYgBARIpChplbmFibGVfY3JlZGl0c19pbl9zZXR0aW5ncxjSASABKAhIuAGIAQESLwogZW5hYmxlX2NyZWRpdF9iYW5uZXJfaW5fc2V0dGluZ3MY0wEgASgISLkBiAEBEjIKI2VuYWJsZV9jaGF0X2lucHV0X2lubGluZV9jb21wbGV0aW9uGNQBIAEoCEi6AYgBARIqChtjbGlfZW5hYmxlX2FjY291bnRfY29tbWFuZHMY1QEgASgISLsBiAEBEiMKFGVuYWJsZV9vbmJvYXJkaW5nX3YyGNYBIAEoCEi8AYgBARInChhjbGlfZW5hYmxlX21lc3NhZ2VfcXVldWUY1wEgASgISL0BiAEBEisKHGVuYWJsZV9ncnBjX3RvX2lkZV9tZXNzYWdpbmcY2AEgASgISL4BiAEBEjgKKWNsaV9lbmFibGVfYXN5bmNfd29ya3NwYWNlX2luaXRpYWxpemF0aW9uGNkBIAEoCEi/AYgBARIpChptYXhfbGluZV9sZW5ndGhfY2hhcmFjdGVycxjaASABKAVIwAGIAQESNgonZW5hYmxlX2NyZWRpdHNfY29uc3VtZWRfaW5fdHVybl9zdW1tYXJ5GNsBIAEoCEjBAYgBARIzCiRnaXRodWJfaW50ZWdyYXRpb25fbm90aWZpY2F0aW9uX2pzb24Y3AEgASgJSMIBiAEBEjAKIWVuYWJsZV9kZWVwX2xpbmtfY2hhdF93aXRoX3Byb21wdBjeASABKAhIwwGIAQESKwocZW5hYmxlX2NvbW1pdF9zZXNzaW9uX2V2ZW50cxjfASABKAhIxAGIAQESLwogdXNlX2ludGFrZV9zZXJ2aWNlX2Zvcl9maWxlX3dhbGsY4AEgASgISMUBiAEBEiYKF2VuYWJsZV9hcHBseV9wYXRjaF90b29sGOEBIAEoCEjGAYgBARIxCiJjdXN0b21lcl91aV9zZWNyZXRfbWFuYWdlcl9lbmFibGVkGOIBIAEoCEjHAYgBARIqChtjaGF0X2lucHV0X2NvbXBsZXRpb25fbW9kZWwY4wEgASgJSMgBiAEBEj4KL3ZzY29kZV9wcm9tcHRfZW5oYW5jZXJfbmV3X2VuZHBvaW50X3JvbGxvdXRfcGN0GOQBIAEoBUjJAYgBARJACjFpbnRlbGxpal9wcm9tcHRfZW5oYW5jZXJfbmV3X2VuZHBvaW50X3JvbGxvdXRfcGN0GOUBIAEoBUjKAYgBARI7CixjbGlfcHJvbXB0X2VuaGFuY2VyX25ld19lbmRwb2ludF9yb2xsb3V0X3BjdBjmASABKAVIywGIAQESMwokY2xpX2VuYWJsZV93b3JrZXJfdGhyZWFkX3BhdGhfZmlsdGVyGOgBIAEoCEjMAYgBARI6CithcGlfcHJveHlfY2xpX25vbl9pbnRlcmFjdGl2ZV9tb2RlX2Rpc2FibGVkGOsBIAEoCEjNAYgBARIoChllbmFibGVfc2V0dGluZ3NfaG9tZV9wYWdlGOwBIAEoCEjOAYgBARIjChRjbGlfZW5hYmxlX2Jhc2hfbW9kZRjtASABKAhIzwGIAQESLwogZW5hYmxlX2NvZGVfcmV2aWV3X3NsYXNoX2NvbW1hbmQY7gEgASgISNABiAEBEhsKDGVuYWJsZV9ob29rcxjvASABKAhI0QGIAQESKAoZZW5hYmxlX2hpZXJhcmNoaWNhbF9ydWxlcxjwASABKAhI0gGIAQESLgofY2FudmFzX2V4dGVuc2lvbl9mZWF0dXJlX2VuYWJsZRjxASABKAhI0wGIAQESJAoVZW5hYmxlX2RlYnVnX2ZlYXR1cmVzGPIBIAEoCEjUAYgBARIoChllbmFibGVfcGx1Z2luX21hcmtldHBsYWNlGPMBIAEoCEjVAYgBARJECjViZWFjaGhlYWRfZmlsZXN5c3RlbV9jaGFuZ2VfdHJhY2tlcl9tYXhfZ2l0X3Byb2Nlc3Nlcxj1ASABKAVI1gGIAQESKwocY2xpX2VuYWJsZV93b3Jrc3BhY2VfY29tbWFuZBj2ASABKAhI1wGIAQESJQoWcHVibGljX2JldGFfb3B0X2luX2FsbBj3ASABKAhI2AGIAQESOgorcHVibGljX2JldGFfY2FudmFzX2V4dGVuc2lvbl9mZWF0dXJlX2VuYWJsZRj4ASABKAhI2QGIAQESJgoXZW5hYmxlX3B1YmxpY19iZXRhX3BhZ2UY+QEgASgISNoBiAEBEjEKImVuYWJsZV93b3Jrc3BhY2VfY29udmVyc2F0aW9uX3N5bmMY+gEgASgISNsBiAEBEhwKDWVuYWJsZV9za2lsbHMY/AEgASgISNwBiAEBEisKHHJlcG9zaXRvcnlfYWxsb3dsaXN0X2VuYWJsZWQY/QEgASgISN0BiAEBEisKHGNsaV9uZXdfZmVhdHVyZV9hbm5vdW5jZW1lbnQY/wEgASgJSN4BiAEBEiUKFmVuYWJsZV9jdXN0b21fY29tbWFuZHMYgAIgASgISN8BiAEBEiYKF2NsaV9lbmFibGVfY2xvdWRfYWdlbnRzGIECIAEoCEjgAYgBARI+Ci9lbmFibGVfd29ya3NwYWNlX2NvbnZlcnNhdGlvbl9jaGF0X2hpc3Rvcnlfc3luYxiCAiABKAhI4QGIAQESMQoicHVibGljX2JldGFfZW5hYmxlX2N1c3RvbV9jb21tYW5kcxiEAiABKAhI4gGIAQESIwoUZW5hYmxlX21lc3NhZ2VfcXVldWUYhQIgASgISOMBiAEBEicKGGVuYWJsZV9zaGFyZWRfZ3VpZGVsaW5lcxiGAiABKAhI5AGIAQESQgozdnNjb2RlX3VwZGF0ZV92ZXJzaW9uX25vdGlmaWNhdGlvbl9wb2xsaW5nX2ludGVydmFsGIcCIAEoA0jlAYgBARJECjVpbnRlbGxpal91cGRhdGVfdmVyc2lvbl9ub3RpZmljYXRpb25fcG9sbGluZ19pbnRlcnZhbBiIAiABKANI5gGIAQESIQoSY2xpX2VuYWJsZV9wZXJzb25hGIkCIAEoCEjnAYgBARI3CihjbGlfZW5hYmxlX2xhdW5jaF9wcm9jZXNzX2V2ZW50X2xpc3RlbmVyGIoCIAEoCEjoAYgBARI4Cil2c2NvZGVfZW5hYmxlX3VwZGF0ZV92ZXJzaW9uX25vdGlmaWNhdGlvbhiLAiABKAhI6QGIAQESIwoUY2xpX2VuYWJsZV9wbGFuX21vZGUYjAIgASgISOoBiAEBEi8KIGNvbGRfc3RhcnRfZ2l0X3NoYV9pbmRleF9lbmFibGVkGI0CIAEoCEjrAYgBARI6CitpbnRlbGxpal9lbmFibGVfdXBkYXRlX3ZlcnNpb25fbm90aWZpY2F0aW9uGI4CIAEoCEjsAYgBARIqChtlbmFibGVfcmVhZF9wcm9jZXNzX3RyYWNrZXIYkAIgASgISO0BiAEBEiwKHXJlYWRfcHJvY2Vzc19tYXhfd2FpdF9zZWNvbmRzGJECIAEoA0juAYgBARIzCiRyZWFkX3Byb2Nlc3Nfc3R1Y2tfcG9sbGluZ190aHJlc2hvbGQYkgIgASgDSO8BiAEBEiEKEmVuYWJsZV9jb21wbGV0aW9ucxiTAiABKAhI8AGIAQESHwoQZW5hYmxlX3N1YmFnZW50cxiUAiABKAhI8QGIAQESJwoYY2xpX2FsbG93X3Rvb2xfb3ZlcnJpZGVzGJUCIAEoCEjyAYgBARInChhjbGlfZW5hYmxlX2NvbnRleHRfdXNhZ2UYlgIgASgISPMBiAEBEiwKHWVuYWJsZV9jb252ZXJzYXRpb25fcmV0cmlldmFsGJcCIAEoCEj0AYgBARIlChZjbGlfZW5hYmxlX2RpZmZfdmlld2VyGJgCIAEoCEj1AYgBARItCh5pbnRlbGxpal9zaWRlY2FyX2VuYWJsZV9zZW50cnkYmQIgASgISPYBiAEBEjMKJGludGVsbGlqX3NpZGVjYXJfZXJyb3Jfc2FtcGxpbmdfcmF0ZRiaAiABKAFI9wGIAQESMwokaW50ZWxsaWpfc2lkZWNhcl90cmFjZV9zYW1wbGluZ19yYXRlGJsCIAEoAUj4AYgBARIoChljbGlfZW5hYmxlX2FzeW5jX2luZGV4aW5nGJwCIAEoCEj5AYgBARIoChlwdWJsaWNfYmV0YV9lbmFibGVfc2tpbGxzGJ0CIAEoCEj6AYgBARIvCiBwdWJsaWNfYmV0YV9lbmFibGVfbWVzc2FnZV9xdWV1ZRieAiABKAhI+wGIAQESKwoccHVibGljX2JldGFfZW5hYmxlX3N1YmFnZW50cxifAiABKAhI/AGIAQESJgoXY2xpX2VuYWJsZV9zaG93X2NyZWRpdHMYoAIgASgISP0BiAEBEicKGGlkZV9lbmFibGVfYXNrX3VzZXJfdG9vbBihAiABKAhI/gGIAQESKwocZW5hYmxlX2NoYXRfaGlzdG9yeV9yZWNvdmVyeRiiAiABKAhI/wGIAQESMQoiaW50ZWxsaWpfc3RhdGVfcG9sbGluZ19pbnRlcnZhbF9tcxijAiABKANIgAKIAQESLwogdnNjb2RlX3N0YXRlX3BvbGxpbmdfaW50ZXJ2YWxfbXMYpAIgASgDSIECiAEBEikKGmNsaV9kZWZhdWx0X3Bvc2VpZG9uX2FnZW50GKUCIAEoCEiCAogBARIpChpjbGlfZW5hYmxlX3Nlc3Npb25fYW5hbHl6ZRimAiABKAhIgwKIAQESHwoQZW5hYmxlX2ZpZ21hX21jcBinAiABKAhIhAKIAQESJgoXZW5hYmxlX2h5YnJpZF9yZXRyaWV2YWwYqAIgASgISIUCiAEBEisKHGNvbnZlcnNhdGlvbl9yZXJhbmtpbmdfbW9kZWwYqQIgASgJSIYCiAEBEjcKKGJlYWNoaGVhZF9lbmFibGVfcGFyYWxsZWxfdG9vbF9leGVjdXRpb24YqgIgASgISIcCiAEBEioKG2VuYWJsZV9jb250ZXh0X3dpbmRvd191c2FnZRirAiABKAhIiAKIAQESLAodZW5hYmxlX3BsdWdpbl9tYXJrZXRwbGFjZV9pZGUYrAIgASgISIkCiAEBEhoKC2VuYWJsZV9ieW9rGK0CIAEoCEiKAogBARIqChdwb3NlaWRvbl9kYWVtb25fZW5hYmxlZBiuAiABKAhCAhgBSIsCiAEBEikKGmVuYWJsZV9jb250ZXh0X3VzYWdlX21vZGFsGK8CIAEoCEiMAogBARIpChp0b29sX3NlYXJjaF9zdW1tYXJ5X3Byb21wdBiyAiABKAlIjQKIAQESKwocdG9vbF9zZWFyY2hfZmluZF90b29sX3Byb21wdBizAiABKAlIjgKIAQESJwoYY2xpX2VuYWJsZV9zZXNzaW9uX3N0YXRzGLQCIAEoCEiPAogBARImChdlbmFibGVfbWlkX3N0cmVhbV9yZXRyeRi2AiABKAhIkAKIAQESHQoOY2xpX2VuYWJsZV9idHcYtwIgASgISJECiAEBEicKGGNsaV9lbmFibGVfY29udGV4dF9zdGF0cxi4AiABKAhIkgKIAQESKgobZW5hYmxlX2lkZV9oYW5kb2ZmX3RvX2Nsb3VkGLkCIAEoCEiTAogBARIzCiRjbGlfZW5hYmxlX2Nsb3VkX2FnZW50X2Fza191c2VyX3Rvb2wYugIgASgISJQCiAEBEiIKE3VzZV9hY3BfY29tcGxldGlvbnMYuwIgASgISJUCiAEBEiwKHWVuYWJsZV9jb2RlYmFzZV9yZXRyaWV2YWxfcmF3GLwCIAEoCEiWAogBARIeCg93ZWJ2aWV3X3VzZV9hY3AYvQIgASgISJcCiAEBEioKG2NsaV9lbmFibGVfaGFuZG9mZl90b19jbG91ZBi+AiABKAhImAKIAQESLQoec3ViYWdlbnRzX3Zpc2liaWxpdHlfb3ZlcnJpZGVzGL8CIAEoCUiZAogBARIzCiRjbGlfZW5hYmxlX2NvbGxhcHNlX2xvbmdfcGFzdGVkX3RleHQYwAIgASgISJoCiAEBEiQKFW1heF90b29sX291dHB1dF9ieXRlcxjBAiABKAVImwKIAQESJwoYY2xpX2NvbXBhY3RfdG9vbF9zdXJmYWNlGMICIAEoCEicAogBARImChdjb3Ntb3NfZW5hYmxlX3Jlc2lkZW50cxjDAiABKAhInQKIAQESJwoYY29zbW9zX3Jlc2lkZW50X3ByZXNlbmNlGMsCIAEoCEieAogBARI2CidjbGlfcmVjb3JkX3N1bW1hcml6YXRpb25zX2FuZF9zdWJhZ2VudHMYxAIgASgISJ8CiAEBEioKG2Nvc21vc19tb3JlX2N1c3RvbV93ZWJob29rcxjFAiABKAhIoAKIAQESMQoiY2xpX3VzZV9zdHJlYW1pbmdfdmZzX2ZpbGVfY29udGVudBjGAiABKAhIoQKIAQESIgoTY2xpX3R1bm5lbF9jb21tYW5kcxjHAiABKAhIogKIAQESLQoeY2xpX3Bvc2VpZG9uX2FuYWx5dGljc19lbmFibGVkGMgCIAEoCEijAogBARIuCh9jbGlfZGFlbW9uX3Bvb2xfYWNjZXNzX2NvbW1hbmRzGMkCIAEoCEikAogBARIwCiFjb3Ntb3NfbXVsdGlfcmVwb19jb250ZXh0X2VuYWJsZWQYygIgASgISKUCiAEBEi4KH2Nvc21vc19uZXN0ZWRfYWdlbnRzX21kX2VuYWJsZWQY0wIgASgISKYCiAEBEigKGXZmc19kdXJhYmxlX2ZpbGVfaWRlbnRpdHkYzAIgASgISKcCiAEBEiQKFWlkZV9leHRlbnNpb25fcmV0aXJlZBjNAiABKAhIqAKIAQESMQoiY2xpX2VuYWJsZV92ZnNfY29tbWVudHNfcHJvamVjdGlvbhjOAiABKAhIqQKIAQESNQomY2xpX3NsZWVwX3Jlc3VtZV93YXRjaGRvZ190aHJlc2hvbGRfbXMYzwIgASgDSKoCiAEBEiMKFHZmc19leHRlbmRlZF9zaGFyaW5nGNACIAEoCEirAogBARItCh5jbGlfZGFlbW9uX2F1dG9fdXBkYXRlX2VuYWJsZWQY0QIgASgISKwCiAEBEiEKEmlkZV9taWdyYXRpb25fbW9kZRjSAiABKAhIrQKIAQESLQoeaWRlX21pZ3JhdGlvbl9hbmFseXNpc19lbmFibGVkGNQCIAEoCEiuAogBARIrChxpZGVfbWlncmF0aW9uX2FuYWx5c2lzX21vZGVsGNUCIAEoCUivAogBARIvCiBjbGlfZW52aXJvbm1lbnRfc25hcHNob3RfdXBkYXRlcxjWAiABKAhIsAKIAQESNgonY29zbW9zX2NsaV9iYWNrZ3JvdW5kX3N1YmFnZW50c19lbmFibGVkGNcCIAEoCEixAogBARInChhjbGlfc2VjcmV0X29sYWNfY29tbWFuZHMY2AIgASgISLICiAEBEiMKFGNsaV9kZXNrdG9wX2NvbW1hbmRzGNkCIAEoCEizAogBARIuCh9jbGlfZW5hYmxlX3NwYWNlX3Bpbm5lZF9leHBlcnRzGNoCIAEoCEi0AogBARI2CiNwb3NlaWRvbl9wcmVmZXRjaF92ZnNfYmVmb3JlX2F1Z2dpZRjbAiABKAhCAhgBSLUCiAEBEiAKEWNvbXBhY3Rpb25fY29uZmlnGNwCIAEoCUi2AogBARJACjFwb3NlaWRvbl9pbWFnZXNfYXN5bmNfZW52aXJvbm1lbnRfcmVidWlsZF9lbmFibGVkGN0CIAEoCEi3AogBARInChhjbGlfdmZzX2JhbGFuY2VkX3N0cmVhbXMY3gIgASgISLgCiAEBEkAKMXBvc2VpZG9uX2ltYWdlc19hc3luY19lbnZpcm9ubWVudF9yZWZyZXNoX2VuYWJsZWQY3wIgASgISLkCiAEBEk0KPnBvc2VpZG9uX2ltYWdlc19hc3luY19lbnZpcm9ubWVudF9yZXBvc2l0b3J5X3JlY29uY2lsZV9lbmFibGVkGOACIAEoCEi6AogBARIgChFjbGlfc3luY19mcmVlX3ZmcxjhAiABKAhIuwKIAQESPwowcG9zZWlkb25faW1hZ2VzX2FzeW5jX2Vudmlyb25tZW50X3VwZGF0ZV9lbmFibGVkGOICIAEoCEi8AogBARIoChljb3Ntb3NfYXVnZ2llX2Vhcmx5X3N0YXJ0GOMCIAEoCEi9AogBARI6Citjb3Ntb3NfZW52aXJvbm1lbnRfcnVudGltZV9zZWxlY3Rvcl9lbmFibGVkGOQCIAEoCEi+AogBARImChdjb3Ntb3NfbWNwX2FnZW50X2F0dGFjaBjlAiABKAhIvwKIAQESJgoXY2xpX3N0YXJ0dXBfYmFubmVyX3RleHQY5gIgASgJSMACiAEBEikKGnBvc2VpZG9uX3Zmc19tYXhfZmlsZV9zaXplGOcCIAEoA0jBAogBARI3CihlbmFibGVfY29kZWJhc2VfcmV0cmlldmFsX3Rvb2xfYXVnZ2llX3YyGOgCIAEoCEjCAogBAUIUChJfZW5hYmxlX2NvZGVfZWRpdHNCDgoMX2VuYWJsZV9jaGF0Qh4KHF9lbmFibGVfd29ya3NwYWNlX21hbmFnZXJfdWlCFwoVX2VuYWJsZV9pbnRlbGxpal9jaGF0QiUKI19lbmFibGVfd29ya3NwYWNlX21hbmFnZXJfdWlfbGF1bmNoQhkKF19hZGRpdGlvbmFsX2NoYXRfbW9kZWxzQhwKGl9pbnRlbGxpal9jaGF0X21pbl92ZXJzaW9uQh4KHF92c2NvZGVfZmx5d2hlZWxfbWluX3ZlcnNpb25CLgosX3ZzY29kZV9leHRlcm5hbF9zb3VyY2VzX2luX2NoYXRfbWluX3ZlcnNpb25CFgoUX2VuYWJsZV9pbnN0cnVjdGlvbnNCFQoTX2VuYWJsZV9zbWFydF9wYXN0ZUIhCh9fZW5hYmxlX3NtYXJ0X3Bhc3RlX21pbl92ZXJzaW9uQhwKGl9lbmFibGVfdmlld190ZXh0X2RvY3VtZW50QhYKFF9jaGVja3BvaW50X2Jsb2JzX3YyQhkKF19lbmFibGVfZGF0YV9jb2xsZWN0aW9uQhcKFV9zbWFsbF9zeW5jX3RocmVzaG9sZEIVChNfYmlnX3N5bmNfdGhyZXNob2xkQhkKF19ieXBhc3NfbGFuZ3VhZ2VfZmlsdGVyQhMKEV9lbmFibGVfaGluZHNpZ2h0QhgKFl9tYXhfdXBsb2FkX3NpemVfYnl0ZXNCKAomX2ludGVsbGlqX2ZvcmNlX2NvbXBsZXRpb25fbWluX3ZlcnNpb25CIgogX2VuYWJsZV9leHRlcm5hbF9zb3VyY2VzX2luX2NoYXRCGwoZX21heF90cmFja2FibGVfZmlsZV9jb3VudEIuCixfbWF4X3RyYWNrYWJsZV9maWxlX2NvdW50X3dpdGhvdXRfcGVybWlzc2lvbkItCitfbWluX3VwbG9hZGVkX3BlcmNlbnRhZ2Vfd2l0aG91dF9wZXJtaXNzaW9uQioKKF92c2NvZGVfY2hhdF9oaW50X2RlY29yYXRpb25fbWluX3ZlcnNpb25CJQojX2VuYWJsZV9jb21wbGV0aW9uX2ZpbGVfZWRpdF9ldmVudHNCHQobX3ZzY29kZV9zb3VyY2VzX21pbl92ZXJzaW9uQhwKGl92c2NvZGVfZW5hYmxlX2NwdV9wcm9maWxlQh8KHV92ZXJpZnlfZm9sZGVyX2lzX3NvdXJjZV9yZXBvQiIKIF9yZWZ1c2VfdG9fc3luY19ob21lX2RpcmVjdG9yaWVzQiwKKl9lbmFibGVfZmlsZV9saW1pdHNfZm9yX3N5bmNpbmdfcGVybWlzc2lvbkIbChlfdnNjb2RlX3NoYXJlX21pbl92ZXJzaW9uQh0KG19pbnRlbGxpal9zaGFyZV9taW5fdmVyc2lvbkIYChZfZW5hYmxlX3N1bW1hcnlfdGl0bGVzQh8KHV9lbmFibGVfY2hhdF9tZXJtYWlkX2RpYWdyYW1zQh4KHF9zbWFydF9wYXN0ZV9wcmVjb21wdXRlX21vZGVCJgokX3ZzY29kZV9uZXdfdGhyZWFkc19tZW51X21pbl92ZXJzaW9uQigKJl9pbnRlbGxpal9uZXdfdGhyZWFkc19tZW51X21pbl92ZXJzaW9uQiYKJF92c2NvZGVfZWRpdGFibGVfaGlzdG9yeV9taW5fdmVyc2lvbkIYChZfaW50ZWxsaWpfc2hvd19zdW1tYXJ5QhQKEl9lbmFibGVfZ3VpZGVsaW5lc0IyCjBfdnNjb2RlX2VuYWJsZV9jaGF0X21lcm1haWRfZGlhZ3JhbXNfbWluX3ZlcnNpb25CHAoaX3ZzY29kZV9kZXByZWNhdGVkX3ZlcnNpb25CHgocX2ludGVsbGlqX2RlcHJlY2F0ZWRfdmVyc2lvbkI0CjJfdnNjb2RlX3VzZV9jaGVja3BvaW50X21hbmFnZXJfY29udGV4dF9taW5fdmVyc2lvbkItCitfdnNjb2RlX3ZhbGlkYXRlX2NoZWNrcG9pbnRfbWFuYWdlcl9jb250ZXh0QiMKIV9pbnRlbGxpal9zbWFydF9wYXN0ZV9taW5fdmVyc2lvbkI0CjJfdnNjb2RlX2Rlc2lnbl9zeXN0ZW1fcmljaF90ZXh0X2VkaXRvcl9taW5fdmVyc2lvbkImCiRfYWxsb3dfY2xpZW50X2ZlYXR1cmVfZmxhZ19vdmVycmlkZXNCJQojX3ZzY29kZV9jaGF0X3dpdGhfdG9vbHNfbWluX3ZlcnNpb25CJwolX2ludGVsbGlqX2NoYXRfd2l0aF90b29sc19taW5fdmVyc2lvbkIlCiNfdnNjb2RlX2NoYXRfbXVsdGltb2RhbF9taW5fdmVyc2lvbkInCiVfaW50ZWxsaWpfY2hhdF9tdWx0aW1vZGFsX21pbl92ZXJzaW9uQjQKMl9pbnRlbGxpal9lbmFibGVfY2hhdF9tZXJtYWlkX2RpYWdyYW1zX21pbl92ZXJzaW9uQiAKHl92c2NvZGVfYWdlbnRfbW9kZV9taW5fdmVyc2lvbkIiCiBfaW50ZWxsaWpfYWdlbnRfbW9kZV9taW5fdmVyc2lvbkIcChpfaW50ZWxsaWpfYmxvY2tlZF92ZXJzaW9uc0I2CjRfaW50ZWxsaWpfZGVzaWduX3N5c3RlbV9yaWNoX3RleHRfZWRpdG9yX21pbl92ZXJzaW9uQigKJl9pbnRlbGxpal9zeW5jaW5nX3Byb2dyZXNzX21pbl92ZXJzaW9uQhoKGF9lbG9fbW9kZWxfY29uZmlndXJhdGlvbkIZChdfdnNjb2RlX2FnZW50X2VkaXRfdG9vbEIvCi1faW50ZWxsaWpfYXNrX2Zvcl9zeW5jX3Blcm1pc3Npb25fbWluX3ZlcnNpb25CJwolX3ZzY29kZV9iYWNrZ3JvdW5kX2FnZW50c19taW5fdmVyc2lvbkIpCidfaW50ZWxsaWpfYmFja2dyb3VuZF9hZ2VudHNfbWluX3ZlcnNpb25CHwodX3VzZXJfZ3VpZGVsaW5lc19sZW5ndGhfbGltaXRCJAoiX3dvcmtzcGFjZV9ndWlkZWxpbmVzX2xlbmd0aF9saW1pdEIqCihfdnNjb2RlX3JpY2hfY2hlY2twb2ludF9pbmZvX21pbl92ZXJzaW9uQiIKIF9pbnRlbGxpal9lbmFibGVfdXNlcl9ndWlkZWxpbmVzQicKJV9pbnRlbGxpal9lbmFibGVfd29ya3NwYWNlX2d1aWRlbGluZXNCJwolX3ZzY29kZV9hZ2VudF9tb2RlX21pbl9zdGFibGVfdmVyc2lvbkIwCi5faW50ZWxsaWpfdmlydHVhbGl6ZWRfbWVzc2FnZV9saXN0X21pbl92ZXJzaW9uQjMKMV92c2NvZGVfY2hhdF9zdGFibGVfcHJlZml4X3RydW5jYXRpb25fbWluX3ZlcnNpb25CIAoeX2FnZW50X2VkaXRfdG9vbF9taW5fdmlld19zaXplQicKJV9pbnRlbGxpal91c2VyX2d1aWRlbGluZXNfaW5fc2V0dGluZ3NCHgocX2FnZW50X2VkaXRfdG9vbF9zY2hlbWFfdHlwZUIiCiBfdnNjb2RlX2RpcmVjdF9hcHBseV9taW5fdmVyc2lvbkIjCiFfdnNjb2RlX3BlcnNvbmFsaXRpZXNfbWluX3ZlcnNpb25CLQorX2FnZW50X3NhdmVfZmlsZV90b29sX2luc3RydWN0aW9uc19yZW1pbmRlckIwCi5fcmVtb3RlX2FnZW50X2NoYXRfaGlzdG9yeV9wb2xsaW5nX2ludGVydmFsX21zQigKJl9yZW1vdGVfYWdlbnRfbGlzdF9wb2xsaW5nX2ludGVydmFsX21zQjUKM19pbnRlbGxpal9wcmVmZXJlbmNlX2NvbGxlY3Rpb25fYWxsb3dlZF9taW5fdmVyc2lvbkIlCiNfaW50ZWxsaWpfZW5hYmxlX2hvbWVzcHVuX2dpdGlnbm9yZUItCitfdnNjb2RlX2dlbmVyYXRlX2NvbW1pdF9tZXNzYWdlX21pbl92ZXJzaW9uQg8KDV9lbmFibGVfcnVsZXNCKAomX2FnZW50X2VkaXRfdG9vbF9lbmFibGVfZnV6enlfbWF0Y2hpbmdCLgosX2FnZW50X2VkaXRfdG9vbF9mdXp6eV9tYXRjaF9zdWNjZXNzX21lc3NhZ2VCJwolX2FnZW50X2VkaXRfdG9vbF9mdXp6eV9tYXRjaF9tYXhfZGlmZkItCitfYWdlbnRfZWRpdF90b29sX2Z1enp5X21hdGNoX21heF9kaWZmX3JhdGlvQkEKP19hZ2VudF9lZGl0X3Rvb2xfZnV6enlfbWF0Y2hfbWluX2FsbF9tYXRjaF9zdHJlYWtfYmV0d2Vlbl9kaWZmc0IZChdfZW5hYmxlX3Byb21wdF9lbmhhbmNlckIjCiFfaW50ZWxsaWpfcHJvbXB0X2VuaGFuY2VyX2VuYWJsZWRCKAomX2FnZW50X2VkaXRfdG9vbF9pbnN0cnVjdGlvbnNfcmVtaW5kZXJCGQoXX2ludGVsbGlqX2VuYWJsZV9zZW50cnlCJwolX2ludGVsbGlqX3dlYnZpZXdfZXJyb3Jfc2FtcGxpbmdfcmF0ZUImCiRfaW50ZWxsaWpfcGx1Z2luX2Vycm9yX3NhbXBsaW5nX3JhdGVCJwolX2ludGVsbGlqX3dlYnZpZXdfdHJhY2Vfc2FtcGxpbmdfcmF0ZUImCiRfaW50ZWxsaWpfcGx1Z2luX3RyYWNlX3NhbXBsaW5nX3JhdGVCHwodX29wZW5fZmlsZV9tYW5hZ2VyX3YyX2VuYWJsZWRCMQovX2ludGVsbGlqX2VuYWJsZV93ZWJ2aWV3X3BlcmZvcm1hbmNlX21vbml0b3JpbmdCHwodX3ZzY29kZV90YXNrX2xpc3RfbWluX3ZlcnNpb25CJgokX2FnZW50X2VkaXRfdG9vbF9zaG93X3Jlc3VsdF9zbmlwcGV0QigKJl9pbnRlbGxpal9lZHRfZnJlZXplX2RldGVjdGlvbl9lbmFibGVkQhYKFF9jbGllbnRfYW5ub3VuY2VtZW50QiYKJF92c2NvZGVfcmVtb3RlX2FnZW50X3NzaF9taW5fdmVyc2lvbkIcChpfYWdlbnRfZWRpdF90b29sX21heF9saW5lc0IaChhfZ3JlcF9zZWFyY2hfdG9vbF9lbmFibGVCIQofX2dyZXBfc2VhcmNoX3Rvb2xfdGltZWxpbWl0X3NlY0ImCiRfZ3JlcF9zZWFyY2hfdG9vbF9vdXRwdXRfY2hhcnNfbGltaXRCJQojX2dyZXBfc2VhcmNoX3Rvb2xfbnVtX2NvbnRleHRfbGluZXNCGQoXX2VuYWJsZV9hZ2VudF9hdXRvX21vZGVCKQonX2FnZW50X3JlcG9ydF9zdHJlYW1lZF9jaGF0X2V2ZXJ5X2NodW5rQisKKV9hZ2VudF9tYXhfdG90YWxfY2hhbmdlZF9maWxlc19zaXplX2J5dGVzQigKJl9hZ2VudF9tYXhfY2hhbmdlZF9maWxlc19za2lwcGVkX3BhdGhzQicKJV9hZ2VudF9pZGxlX3N0YXR1c191cGRhdGVfaW50ZXJ2YWxfbXNCFwoVX2FnZW50X21heF9pdGVyYXRpb25zQikKJ19hZ2VudF9zc2hfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbF9tc0ItCitfYWdlbnRfc3NoX2Nvbm5lY3Rpb25fY2hlY2tfbG9nX2ludGVydmFsX21zQhoKGF9iZWFjaGhlYWRfZW5hYmxlX3NlbnRyeUIgCh5fYmVhY2hoZWFkX2Vycm9yX3NhbXBsaW5nX3JhdGVCIAoeX2JlYWNoaGVhZF90cmFjZV9zYW1wbGluZ19yYXRlQiwKKl92c2NvZGVfc3VwcG9ydF90b29sX3VzZV9zdGFydF9taW5fdmVyc2lvbkIeChxfaGlzdG9yeV9zdW1tYXJ5X21pbl92ZXJzaW9uQhwKGl9oaXN0b3J5X3N1bW1hcnlfbWF4X2NoYXJzQh4KHF9oaXN0b3J5X3N1bW1hcnlfbG93ZXJfY2hhcnNCGgoYX2VuYWJsZV9uZXdfdGhyZWFkc19saXN0QhkKF19oaXN0b3J5X3N1bW1hcnlfcHJvbXB0QiUKI19lbmFibGVfdW50cnVuY2F0ZWRfY29udGVudF9zdG9yYWdlQiQKIl9tYXhfbGluZXNfdGVybWluYWxfcHJvY2Vzc19vdXRwdXRCGQoXX2VuYWJsZV9jb21taXRfaW5kZXhpbmdCFwoVX21heF9jb21taXRzX3RvX2luZGV4QiEKH19pbnRlbGxpal90YXNrX2xpc3RfbWluX3ZlcnNpb25CGgoYX2VuYWJsZV9leGNoYW5nZV9zdG9yYWdlQh0KG19yZXRyeV9jaGF0X3N0cmVhbV90aW1lb3V0c0IgCh5fZW5hYmxlX3Rvb2xfdXNlX3N0YXRlX3N0b3JhZ2VCIQofX3JlbW90ZV9hZ2VudF9jdXJyZW50X3dvcmtzcGFjZUIZChdfaGlzdG9yeV9zdW1tYXJ5X3BhcmFtc0IUChJfZW5hYmxlX2FnZW50X3RhYnNCFAoSX2VuYWJsZV9zd2FybV9tb2RlQiIKIF9iZWFjaGhlYWRfZW5hYmxlX3N1Yl9hZ2VudF90b29sQhcKFV9lbmFibGVfZ3JvdXBlZF90b29sc0IvCi1fcmVtb3RlX2FnZW50c19yZXN1bWVfaGludF9hdmFpbGFibGVfdHRsX2RheXNCGAoWX2VuYWJsZV9wYXJhbGxlbF90b29sc0IUChJfY2xpZW50X2RlcHJlY2F0ZWRCIQofX2VuYWJsZV92aWV3ZWRfY29udGVudF90cmFja2luZ0InCiVfdmlld2VkX2NvbnRlbnRfY2xvc2VfcmFuZ2VfdGhyZXNob2xkQikKJ192aWV3ZWRfY29udGVudF9kaXNjcmV0ZV9qdW1wX3RocmVzaG9sZEIiCiBfdmlld2VkX2NvbnRlbnRfbWluX2V2ZW50X2FnZV9tc0IiCiBfdmlld2VkX2NvbnRlbnRfbWF4X2V2ZW50X2FnZV9tc0IbChlfZW5hYmxlX25hdGl2ZV9yZW1vdGVfbWNwQiMKIV9ub3RpZmljYXRpb25fcG9sbGluZ19pbnRlcnZhbF9tc0IbChlfZW5hYmxlX2FnZW50X2dpdF90cmFja2VyQiIKIF90cnVuY2F0aW9uX2Zvb3Rlcl9hZGRpdGlvbl90ZXh0QhAKDl9lbmFibGVfc2VudHJ5Qh4KHF93ZWJ2aWV3X2Vycm9yX3NhbXBsaW5nX3JhdGVCHgocX3dlYnZpZXdfdHJhY2Vfc2FtcGxpbmdfcmF0ZUIZChdfYWdlbnRfdmlld190b29sX3BhcmFtc0IbChlfdnNjb2RlX3Rlcm1pbmFsX3N0cmF0ZWd5QhMKEV9hZ2VudF9jaGF0X21vZGVsQiUKI19jbG91ZF9hZ2VudF9kZWZhdWx0X21vZGVsX292ZXJyaWRlQhYKFF9tb2RlbF9pbmZvX3JlZ2lzdHJ5QjUKM19tYXhfbGluZXNfdGVybWluYWxfcHJvY2Vzc19vdXRwdXRfYWZ0ZXJfdHJ1bmNhdGlvbkIoCiZfZW5hYmxlX25vdGlmaWNhdGlvbnNfc2VydmljZV9pbnRlbGxpakIWChRfZW5hYmxlX2x1Y2lkZV9pY29uc0IjCiFfZW5hYmxlX2VuaGFuY2VkX2RlaHlkcmF0aW9uX21vZGVCKwopX3ZzY29kZV9zaG93X3RoaW5raW5nX3N1bW1hcnlfbWluX3ZlcnNpb25CLQorX2ludGVsbGlqX3Nob3dfdGhpbmtpbmdfc3VtbWFyeV9taW5fdmVyc2lvbkImCiRfaW50ZWxsaWpfZW5hYmxlX2ZpbGVfaW50YWtlX3NlcnZpY2VCLgosX2ludGVsbGlqX2VuYWJsZV9zZWdtZW50X2FuYWx5dGljc19yZXBvcnRpbmdCFAoSX2NsaV9lbmFibGVfc2VudHJ5QhoKGF9jbGlfZXJyb3Jfc2FtcGxpbmdfcmF0ZUIaChhfY2xpX3RyYWNlX3NhbXBsaW5nX3JhdGVCJQojX2NsaV9jaGF0X3N0cmVhbV9yZXRyeV9oYXJkX3N0b3BfbXNCFwoVX2NsaV9lbmFibGVfYW5hbHl0aWNzQhoKGF9jbGlfYW5hbHl0aWNzX3dyaXRlX2tleUIeChxfcGFydG5lcl9tY3BfbGF1bmNoXzIwMjUwOTE2QhUKE19jbGlfcGFyYWxsZWxfdG9vbHNCHQobX2VuYWJsZV9idWxrX2RlbGV0ZV90aHJlYWRzQicKJV9lbmFibGVfaW50ZXJzZWN0aW9uX29ic2VydmVyX21hbmFnZXJCJwolX2VuYWJsZV90ZW5hbnRfbGV2ZWxfdG9vbF9wZXJtaXNzaW9uc0ImCiRfd2Vidmlld19yZXBsYXlzX3Nlc3Npb25fc2FtcGxlX3JhdGVCJwolX3dlYnZpZXdfcmVwbGF5c19vbl9lcnJvcl9zYW1wbGVfcmF0ZUIkCiJfdnNjb2RlX3BsdWdpbl9lcnJvcl9zYW1wbGluZ19yYXRlQiQKIl92c2NvZGVfcGx1Z2luX3RyYWNlX3NhbXBsaW5nX3JhdGVCHQobX2VuYWJsZV9jcmVkaXRzX2luX3NldHRpbmdzQiMKIV9lbmFibGVfY3JlZGl0X2Jhbm5lcl9pbl9zZXR0aW5nc0ImCiRfZW5hYmxlX2NoYXRfaW5wdXRfaW5saW5lX2NvbXBsZXRpb25CHgocX2NsaV9lbmFibGVfYWNjb3VudF9jb21tYW5kc0IXChVfZW5hYmxlX29uYm9hcmRpbmdfdjJCGwoZX2NsaV9lbmFibGVfbWVzc2FnZV9xdWV1ZUIfCh1fZW5hYmxlX2dycGNfdG9faWRlX21lc3NhZ2luZ0IsCipfY2xpX2VuYWJsZV9hc3luY193b3Jrc3BhY2VfaW5pdGlhbGl6YXRpb25CHQobX21heF9saW5lX2xlbmd0aF9jaGFyYWN0ZXJzQioKKF9lbmFibGVfY3JlZGl0c19jb25zdW1lZF9pbl90dXJuX3N1bW1hcnlCJwolX2dpdGh1Yl9pbnRlZ3JhdGlvbl9ub3RpZmljYXRpb25fanNvbkIkCiJfZW5hYmxlX2RlZXBfbGlua19jaGF0X3dpdGhfcHJvbXB0Qh8KHV9lbmFibGVfY29tbWl0X3Nlc3Npb25fZXZlbnRzQiMKIV91c2VfaW50YWtlX3NlcnZpY2VfZm9yX2ZpbGVfd2Fsa0IaChhfZW5hYmxlX2FwcGx5X3BhdGNoX3Rvb2xCJQojX2N1c3RvbWVyX3VpX3NlY3JldF9tYW5hZ2VyX2VuYWJsZWRCHgocX2NoYXRfaW5wdXRfY29tcGxldGlvbl9tb2RlbEIyCjBfdnNjb2RlX3Byb21wdF9lbmhhbmNlcl9uZXdfZW5kcG9pbnRfcm9sbG91dF9wY3RCNAoyX2ludGVsbGlqX3Byb21wdF9lbmhhbmNlcl9uZXdfZW5kcG9pbnRfcm9sbG91dF9wY3RCLwotX2NsaV9wcm9tcHRfZW5oYW5jZXJfbmV3X2VuZHBvaW50X3JvbGxvdXRfcGN0QicKJV9jbGlfZW5hYmxlX3dvcmtlcl90aHJlYWRfcGF0aF9maWx0ZXJCLgosX2FwaV9wcm94eV9jbGlfbm9uX2ludGVyYWN0aXZlX21vZGVfZGlzYWJsZWRCHAoaX2VuYWJsZV9zZXR0aW5nc19ob21lX3BhZ2VCFwoVX2NsaV9lbmFibGVfYmFzaF9tb2RlQiMKIV9lbmFibGVfY29kZV9yZXZpZXdfc2xhc2hfY29tbWFuZEIPCg1fZW5hYmxlX2hvb2tzQhwKGl9lbmFibGVfaGllcmFyY2hpY2FsX3J1bGVzQiIKIF9jYW52YXNfZXh0ZW5zaW9uX2ZlYXR1cmVfZW5hYmxlQhgKFl9lbmFibGVfZGVidWdfZmVhdHVyZXNCHAoaX2VuYWJsZV9wbHVnaW5fbWFya2V0cGxhY2VCOAo2X2JlYWNoaGVhZF9maWxlc3lzdGVtX2NoYW5nZV90cmFja2VyX21heF9naXRfcHJvY2Vzc2VzQh8KHV9jbGlfZW5hYmxlX3dvcmtzcGFjZV9jb21tYW5kQhkKF19wdWJsaWNfYmV0YV9vcHRfaW5fYWxsQi4KLF9wdWJsaWNfYmV0YV9jYW52YXNfZXh0ZW5zaW9uX2ZlYXR1cmVfZW5hYmxlQhoKGF9lbmFibGVfcHVibGljX2JldGFfcGFnZUIlCiNfZW5hYmxlX3dvcmtzcGFjZV9jb252ZXJzYXRpb25fc3luY0IQCg5fZW5hYmxlX3NraWxsc0IfCh1fcmVwb3NpdG9yeV9hbGxvd2xpc3RfZW5hYmxlZEIfCh1fY2xpX25ld19mZWF0dXJlX2Fubm91bmNlbWVudEIZChdfZW5hYmxlX2N1c3RvbV9jb21tYW5kc0IaChhfY2xpX2VuYWJsZV9jbG91ZF9hZ2VudHNCMgowX2VuYWJsZV93b3Jrc3BhY2VfY29udmVyc2F0aW9uX2NoYXRfaGlzdG9yeV9zeW5jQiUKI19wdWJsaWNfYmV0YV9lbmFibGVfY3VzdG9tX2NvbW1hbmRzQhcKFV9lbmFibGVfbWVzc2FnZV9xdWV1ZUIbChlfZW5hYmxlX3NoYXJlZF9ndWlkZWxpbmVzQjYKNF92c2NvZGVfdXBkYXRlX3ZlcnNpb25fbm90aWZpY2F0aW9uX3BvbGxpbmdfaW50ZXJ2YWxCOAo2X2ludGVsbGlqX3VwZGF0ZV92ZXJzaW9uX25vdGlmaWNhdGlvbl9wb2xsaW5nX2ludGVydmFsQhUKE19jbGlfZW5hYmxlX3BlcnNvbmFCKwopX2NsaV9lbmFibGVfbGF1bmNoX3Byb2Nlc3NfZXZlbnRfbGlzdGVuZXJCLAoqX3ZzY29kZV9lbmFibGVfdXBkYXRlX3ZlcnNpb25fbm90aWZpY2F0aW9uQhcKFV9jbGlfZW5hYmxlX3BsYW5fbW9kZUIjCiFfY29sZF9zdGFydF9naXRfc2hhX2luZGV4X2VuYWJsZWRCLgosX2ludGVsbGlqX2VuYWJsZV91cGRhdGVfdmVyc2lvbl9ub3RpZmljYXRpb25CHgocX2VuYWJsZV9yZWFkX3Byb2Nlc3NfdHJhY2tlckIgCh5fcmVhZF9wcm9jZXNzX21heF93YWl0X3NlY29uZHNCJwolX3JlYWRfcHJvY2Vzc19zdHVja19wb2xsaW5nX3RocmVzaG9sZEIVChNfZW5hYmxlX2NvbXBsZXRpb25zQhMKEV9lbmFibGVfc3ViYWdlbnRzQhsKGV9jbGlfYWxsb3dfdG9vbF9vdmVycmlkZXNCGwoZX2NsaV9lbmFibGVfY29udGV4dF91c2FnZUIgCh5fZW5hYmxlX2NvbnZlcnNhdGlvbl9yZXRyaWV2YWxCGQoXX2NsaV9lbmFibGVfZGlmZl92aWV3ZXJCIQofX2ludGVsbGlqX3NpZGVjYXJfZW5hYmxlX3NlbnRyeUInCiVfaW50ZWxsaWpfc2lkZWNhcl9lcnJvcl9zYW1wbGluZ19yYXRlQicKJV9pbnRlbGxpal9zaWRlY2FyX3RyYWNlX3NhbXBsaW5nX3JhdGVCHAoaX2NsaV9lbmFibGVfYXN5bmNfaW5kZXhpbmdCHAoaX3B1YmxpY19iZXRhX2VuYWJsZV9za2lsbHNCIwohX3B1YmxpY19iZXRhX2VuYWJsZV9tZXNzYWdlX3F1ZXVlQh8KHV9wdWJsaWNfYmV0YV9lbmFibGVfc3ViYWdlbnRzQhoKGF9jbGlfZW5hYmxlX3Nob3dfY3JlZGl0c0IbChlfaWRlX2VuYWJsZV9hc2tfdXNlcl90b29sQh8KHV9lbmFibGVfY2hhdF9oaXN0b3J5X3JlY292ZXJ5QiUKI19pbnRlbGxpal9zdGF0ZV9wb2xsaW5nX2ludGVydmFsX21zQiMKIV92c2NvZGVfc3RhdGVfcG9sbGluZ19pbnRlcnZhbF9tc0IdChtfY2xpX2RlZmF1bHRfcG9zZWlkb25fYWdlbnRCHQobX2NsaV9lbmFibGVfc2Vzc2lvbl9hbmFseXplQhMKEV9lbmFibGVfZmlnbWFfbWNwQhoKGF9lbmFibGVfaHlicmlkX3JldHJpZXZhbEIfCh1fY29udmVyc2F0aW9uX3JlcmFua2luZ19tb2RlbEIrCilfYmVhY2hoZWFkX2VuYWJsZV9wYXJhbGxlbF90b29sX2V4ZWN1dGlvbkIeChxfZW5hYmxlX2NvbnRleHRfd2luZG93X3VzYWdlQiAKHl9lbmFibGVfcGx1Z2luX21hcmtldHBsYWNlX2lkZUIOCgxfZW5hYmxlX2J5b2tCGgoYX3Bvc2VpZG9uX2RhZW1vbl9lbmFibGVkQh0KG19lbmFibGVfY29udGV4dF91c2FnZV9tb2RhbEIdChtfdG9vbF9zZWFyY2hfc3VtbWFyeV9wcm9tcHRCHwodX3Rvb2xfc2VhcmNoX2ZpbmRfdG9vbF9wcm9tcHRCGwoZX2NsaV9lbmFibGVfc2Vzc2lvbl9zdGF0c0IaChhfZW5hYmxlX21pZF9zdHJlYW1fcmV0cnlCEQoPX2NsaV9lbmFibGVfYnR3QhsKGV9jbGlfZW5hYmxlX2NvbnRleHRfc3RhdHNCHgocX2VuYWJsZV9pZGVfaGFuZG9mZl90b19jbG91ZEInCiVfY2xpX2VuYWJsZV9jbG91ZF9hZ2VudF9hc2tfdXNlcl90b29sQhYKFF91c2VfYWNwX2NvbXBsZXRpb25zQiAKHl9lbmFibGVfY29kZWJhc2VfcmV0cmlldmFsX3Jhd0ISChBfd2Vidmlld191c2VfYWNwQh4KHF9jbGlfZW5hYmxlX2hhbmRvZmZfdG9fY2xvdWRCIQofX3N1YmFnZW50c192aXNpYmlsaXR5X292ZXJyaWRlc0InCiVfY2xpX2VuYWJsZV9jb2xsYXBzZV9sb25nX3Bhc3RlZF90ZXh0QhgKFl9tYXhfdG9vbF9vdXRwdXRfYnl0ZXNCGwoZX2NsaV9jb21wYWN0X3Rvb2xfc3VyZmFjZUIaChhfY29zbW9zX2VuYWJsZV9yZXNpZGVudHNCGwoZX2Nvc21vc19yZXNpZGVudF9wcmVzZW5jZUIqCihfY2xpX3JlY29yZF9zdW1tYXJpemF0aW9uc19hbmRfc3ViYWdlbnRzQh4KHF9jb3Ntb3NfbW9yZV9jdXN0b21fd2ViaG9va3NCJQojX2NsaV91c2Vfc3RyZWFtaW5nX3Zmc19maWxlX2NvbnRlbnRCFgoUX2NsaV90dW5uZWxfY29tbWFuZHNCIQofX2NsaV9wb3NlaWRvbl9hbmFseXRpY3NfZW5hYmxlZEIiCiBfY2xpX2RhZW1vbl9wb29sX2FjY2Vzc19jb21tYW5kc0IkCiJfY29zbW9zX211bHRpX3JlcG9fY29udGV4dF9lbmFibGVkQiIKIF9jb3Ntb3NfbmVzdGVkX2FnZW50c19tZF9lbmFibGVkQhwKGl92ZnNfZHVyYWJsZV9maWxlX2lkZW50aXR5QhgKFl9pZGVfZXh0ZW5zaW9uX3JldGlyZWRCJQojX2NsaV9lbmFibGVfdmZzX2NvbW1lbnRzX3Byb2plY3Rpb25CKQonX2NsaV9zbGVlcF9yZXN1bWVfd2F0Y2hkb2dfdGhyZXNob2xkX21zQhcKFV92ZnNfZXh0ZW5kZWRfc2hhcmluZ0IhCh9fY2xpX2RhZW1vbl9hdXRvX3VwZGF0ZV9lbmFibGVkQhUKE19pZGVfbWlncmF0aW9uX21vZGVCIQofX2lkZV9taWdyYXRpb25fYW5hbHlzaXNfZW5hYmxlZEIfCh1faWRlX21pZ3JhdGlvbl9hbmFseXNpc19tb2RlbEIjCiFfY2xpX2Vudmlyb25tZW50X3NuYXBzaG90X3VwZGF0ZXNCKgooX2Nvc21vc19jbGlfYmFja2dyb3VuZF9zdWJhZ2VudHNfZW5hYmxlZEIbChlfY2xpX3NlY3JldF9vbGFjX2NvbW1hbmRzQhcKFV9jbGlfZGVza3RvcF9jb21tYW5kc0IiCiBfY2xpX2VuYWJsZV9zcGFjZV9waW5uZWRfZXhwZXJ0c0ImCiRfcG9zZWlkb25fcHJlZmV0Y2hfdmZzX2JlZm9yZV9hdWdnaWVCFAoSX2NvbXBhY3Rpb25fY29uZmlnQjQKMl9wb3NlaWRvbl9pbWFnZXNfYXN5bmNfZW52aXJvbm1lbnRfcmVidWlsZF9lbmFibGVkQhsKGV9jbGlfdmZzX2JhbGFuY2VkX3N0cmVhbXNCNAoyX3Bvc2VpZG9uX2ltYWdlc19hc3luY19lbnZpcm9ubWVudF9yZWZyZXNoX2VuYWJsZWRCQQo/X3Bvc2VpZG9uX2ltYWdlc19hc3luY19lbnZpcm9ubWVudF9yZXBvc2l0b3J5X3JlY29uY2lsZV9lbmFibGVkQhQKEl9jbGlfc3luY19mcmVlX3Zmc0IzCjFfcG9zZWlkb25faW1hZ2VzX2FzeW5jX2Vudmlyb25tZW50X3VwZGF0ZV9lbmFibGVkQhwKGl9jb3Ntb3NfYXVnZ2llX2Vhcmx5X3N0YXJ0Qi4KLF9jb3Ntb3NfZW52aXJvbm1lbnRfcnVudGltZV9zZWxlY3Rvcl9lbmFibGVkQhoKGF9jb3Ntb3NfbWNwX2FnZW50X2F0dGFjaEIaChhfY2xpX3N0YXJ0dXBfYmFubmVyX3RleHRCHQobX3Bvc2VpZG9uX3Zmc19tYXhfZmlsZV9zaXplQisKKV9lbmFibGVfY29kZWJhc2VfcmV0cmlldmFsX3Rvb2xfYXVnZ2llX3YySgQIAhADSgQIAxAESgQIBBAFSgYIjwIQkAJKBAgLEAxKBAgQEBFKBAggECFKBAg2EDdKBAg4EDlKBAg5EDpKBAhGEEdKBAhIEElKBAhQEFFKBAhREFJKBAhVEFZKBAhdEF5KBAhhEGJKBAhmEGdKBAhtEG5KBAhuEG9KBgiOARCPAUoGCJYBEJcBSgYIngEQnwFKBgi6ARC7AUoGCLsBELwBSgYIvwEQwAFKBgjGARDHAUoGCN0BEN4BSgYI5wEQ6AFKBgjpARDqAUoGCOoBEOsBSgYI9AEQ9QFKBgj7ARD8AUoGCIMCEIQCSgYIsAIQsQJKBgixAhCyAlIcdnNjb2RlX25leHRfZWRpdF9taW5fdmVyc2lvblIVbmV4dF9lZGl0X2RlYm91bmNlX21zUihpbnRlbGxpal9jb21wbGV0aW9uc19oaXN0b3J5X21pbl92ZXJzaW9uUiB2c2NvZGVfbmV4dF9lZGl0X3V4MV9tYXhfdmVyc2lvblIgdnNjb2RlX25leHRfZWRpdF91eDJfbWF4X3ZlcnNpb25SKXZzY29kZV9uZXh0X2VkaXRfYm90dG9tX3BhbmVsX21pbl92ZXJzaW9uUit2c2NvZGVfdmlydHVhbGl6ZWRfbWVzc2FnZV9saXN0X21pbl92ZXJzaW9uUhVlbmFibGVfbW9kZWxfcmVnaXN0cnlSDm1vZGVsX3JlZ2lzdHJ5UhRmcmF1ZF9zaWduX2VuZHBvaW50c1I4Z2l0aHViX2ludGVncmF0aW9uX25vdGlmaWNhdGlvbl9vbl9maXJzdF9tZXNzYWdlX2VuYWJsZWRSJ2lzX29uYm9hcmRpbmdfZmVhdHVyZV9oaWdobGlnaHRfZW5hYmxlZFIudnNjb2RlX2dlbmVyYXRlX2NvbnZlcnNhdGlvbl90aXRsZV9yb2xsb3V0X3BjdFIwaW50ZWxsaWpfZ2VuZXJhdGVfY29udmVyc2F0aW9uX3RpdGxlX3JvbGxvdXRfcGN0Uhx2c2NvZGVfYXV0b19pbmRleF9wZXJtaXNzaW9uUhVlbmFibGVfY29udGV4dF9jYW52YXNSF2VuYWJsZV9tY3BfcmVnaXN0cnlfY2xpUhllbmFibGVfbWNwX3JlZ2lzdHJ5X2Nsb3VkGsQBCgRVc2VyEgoKAmlkGAEgASgJEhIKBWVtYWlsGAIgASgJSACIAQESFgoJdGVuYW50X2lkGAMgASgJSAGIAQESGAoLdGVuYW50X25hbWUYBCABKAlIAogBARIzCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBQggKBl9lbWFpbEIMCgpfdGVuYW50X2lkQg4KDF90ZW5hbnRfbmFtZUINCgtfY3JlYXRlZF9hdCJXCghVc2VyVGllchILCgdVTktOT1dOEAASEgoOQ09NTVVOSVRZX1RJRVIQARIVChFQUk9GRVNTSU9OQUxfVElFUhACEhMKD0VOVEVSUFJJU0VfVElFUhADQhAKDl9kZWZhdWx0X21vZGVsQhAKDl9mZWF0dXJlX2ZsYWdzQgcKBV91c2VyQhUKE19ib290c3RyYXBfc2V0dGluZ3Mi1AIKGkdldE91dGNvbWVBbmFseXRpY3NSZXF1ZXN0EjYKCmRhdGVfcmFuZ2UYASABKAsyIi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NEYXRlUmFuZ2USGQoRdGFnX2dyb3VwX2J5X2tleXMYAiADKAkSNAoHZmlsdGVycxgDIAEoCzIjLnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0ZpbHRlcnMSHAoUaW5jbHVkZV9jb3N0X21ldHJpY3MYBCABKAgSPQoLZ3JhbnVsYXJpdHkYBSABKA4yKC5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NUaW1lR3JhbnVsYXJpdHkSHQoVZGlzYWJsZV9ncm91cF9ieV9uYW1lGAYgASgIEjEKDm91dGNvbWVfb3JpZ2luGAcgASgOMhkucHVibGljX2FwaS5PdXRjb21lT3JpZ2luIlkKG0dldE91dGNvbWVBbmFseXRpY3NSZXNwb25zZRI6CgtkYXRhX3BvaW50cxgBIAMoCzIlLnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0RhdGFQb2ludCIiCiBHZXRQb3NlaWRvblRlbmFudFNldHRpbmdzUmVxdWVzdCJCCiFHZXRQb3NlaWRvblRlbmFudFNldHRpbmdzUmVzcG9uc2USHQoVZGVmYXVsdF9iYXNlX2ltYWdlX2lkGAEgASgJIiAKHkdldFBvc2VpZG9uVXNlclNldHRpbmdzUmVxdWVzdCJ+Ch9HZXRQb3NlaWRvblVzZXJTZXR0aW5nc1Jlc3BvbnNlEh4KFmRlZmF1bHRfZW52aXJvbm1lbnRfaWQYASABKAkSNQoMcGlubmVkX29yZGVyGAMgAygLMh8ucHVibGljX2FwaS5Qb3NlaWRvblBpbm5lZEVudHJ5SgQIAhADIoUBCiBHZXRSZW1vdGVBZ2VudENoYXRIaXN0b3J5UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSIgoabGFzdF9wcm9jZXNzZWRfc2VxdWVuY2VfaWQYAiABKA0SFgoJcGVla19vbmx5GAMgASgISACIAQFCDAoKX3BlZWtfb25seSLRAQohR2V0UmVtb3RlQWdlbnRDaGF0SGlzdG9yeVJlc3BvbnNlEjUKDGNoYXRfaGlzdG9yeRgCIAMoCzIfLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRFeGNoYW5nZRIcCg9zZXNzaW9uX3N1bW1hcnkYAyABKAlIAIgBARIyCgxyZW1vdGVfYWdlbnQYBCABKAsyFy5wdWJsaWNfYXBpLlJlbW90ZUFnZW50SAGIAQFCEgoQX3Nlc3Npb25fc3VtbWFyeUIPCg1fcmVtb3RlX2FnZW50IocBCiJHZXRSZW1vdGVBZ2VudEhpc3RvcnlTdHJlYW1SZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIiChpsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZV9pZBgCIAEoDRIWCglwZWVrX29ubHkYAyABKAhIAIgBAUIMCgpfcGVla19vbmx5IlYKI0dldFJlbW90ZUFnZW50SGlzdG9yeVN0cmVhbVJlc3BvbnNlEi8KB3VwZGF0ZXMYASADKAsyHi5wdWJsaWNfYXBpLkFnZW50SGlzdG9yeVVwZGF0ZSLhAQoaR2V0U2Vzc2lvbkFuYWx5dGljc1JlcXVlc3QSNgoKZGF0ZV9yYW5nZRgBIAEoCzIiLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc0RhdGVSYW5nZRI0CgdmaWx0ZXJzGAIgASgLMiMucHVibGljX2FwaS5PdXRjb21lQW5hbHl0aWNzRmlsdGVycxIcChRpbmNsdWRlX2Nvc3RfbWV0cmljcxgDIAEoCBIRCglwYWdlX3NpemUYBCABKA0SEgoKcGFnZV90b2tlbhgFIAEoCRIQCghhZ2VudF9pZBgGIAEoCSKoAQobR2V0U2Vzc2lvbkFuYWx5dGljc1Jlc3BvbnNlEjMKCHNlc3Npb25zGAEgAygLMiEucHVibGljX2FwaS5PdXRjb21lU2Vzc2lvblN1bW1hcnkSOwoMb2JzZXJ2YXRpb25zGAIgAygLMiUucHVibGljX2FwaS5PdXRjb21lU2Vzc2lvbk9ic2VydmF0aW9uEhcKD25leHRfcGFnZV90b2tlbhgDIAEoCSIqChZHZXRTZXNzaW9uVXNhZ2VSZXF1ZXN0EhAKCGFnZW50X2lkGAEgASgJIo8BChdHZXRTZXNzaW9uVXNhZ2VSZXNwb25zZRI3ChV1c2FnZV9jdXJyZW50X3Nlc3Npb24YASABKAsyGC5wdWJsaWNfYXBpLlNlc3Npb25Vc2FnZRI7Chl1c2FnZV93aXRoX2NoaWxkX3Nlc3Npb25zGAIgASgLMhgucHVibGljX2FwaS5TZXNzaW9uVXNhZ2UiHgocR2V0U3Vic2NyaXB0aW9uQmFubmVyUmVxdWVzdCJOCh1HZXRTdWJzY3JpcHRpb25CYW5uZXJSZXNwb25zZRItCgZiYW5uZXIYASABKAsyHS5wdWJsaWNfYXBpLkJhbm5lckluZm9ybWF0aW9uIhwKGkdldFN1YnNjcmlwdGlvbkluZm9SZXF1ZXN0IrECChtHZXRTdWJzY3JpcHRpb25JbmZvUmVzcG9uc2USPAoKZW50ZXJwcmlzZRgBIAEoCzIiLnB1YmxpY19hcGkuRW50ZXJwcmlzZVN1YnNjcmlwdGlvbkICGAFIABJBChNhY3RpdmVfc3Vic2NyaXB0aW9uGAIgASgLMh4ucHVibGljX2FwaS5BY3RpdmVTdWJzY3JpcHRpb25CAhgBSAASRQoVaW5hY3RpdmVfc3Vic2NyaXB0aW9uGAMgASgLMiAucHVibGljX2FwaS5JbmFjdGl2ZVN1YnNjcmlwdGlvbkICGAFIABI6ChNmZWF0dXJlX2dhdGluZ19pbmZvGAQgASgLMh0ucHVibGljX2FwaS5GZWF0dXJlR2F0aW5nSW5mb0IOCgxzdWJzY3JpcHRpb24iWgoWR2V0VGVuYW50U2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEh8KDmluY2x1ZGVfdmFsdWVzGAIgASgIQgIYAUgAiAEBQhEKD19pbmNsdWRlX3ZhbHVlcyJDChdHZXRUZW5hbnRTZWNyZXRSZXNwb25zZRIoCgZzZWNyZXQYASABKAsyGC5wdWJsaWNfYXBpLlRlbmFudFNlY3JldCIoChdHZXRUZW5hbnRTZWNyZXRzUmVxdWVzdBINCgVuYW1lcxgBIAMoCSJFChhHZXRUZW5hbnRTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLnB1YmxpY19hcGkuVGVuYW50U2VjcmV0IiEKH0dldFRlbmFudFRvb2xQZXJtaXNzaW9uc1JlcXVlc3QiagogR2V0VGVuYW50VG9vbFBlcm1pc3Npb25zUmVzcG9uc2USRgoZdG9vbF9wZXJtaXNzaW9uc19zZXR0aW5ncxgBIAEoCzIjLnB1YmxpY19hcGkuVG9vbFBlcm1pc3Npb25zU2V0dGluZ3MibwobR2V0VHJpZ2dlckV4ZWN1dGlvbnNSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYASABKAkSEgoFbGltaXQYAiABKA1IAIgBARITCgZvZmZzZXQYAyABKA1IAYgBAUIICgZfbGltaXRCCQoHX29mZnNldCJlChxHZXRUcmlnZ2VyRXhlY3V0aW9uc1Jlc3BvbnNlEjAKCmV4ZWN1dGlvbnMYASADKAsyHC5wdWJsaWNfYXBpLlRyaWdnZXJFeGVjdXRpb24SEwoLdG90YWxfY291bnQYAiABKA0ikwEKFEdldFVzZXJTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkSJgoFc2NvcGUYAiABKA4yFy5wdWJsaWNfYXBpLlNlY3JldFNjb3BlEh8KDmluY2x1ZGVfdmFsdWVzGAMgASgIQgIYAUgAiAEBEhEKCXNlY3JldF9pZBgEIAEoCUIRCg9faW5jbHVkZV92YWx1ZXMiPwoVR2V0VXNlclNlY3JldFJlc3BvbnNlEiYKBnNlY3JldBgBIAEoCzIWLnB1YmxpY19hcGkuVXNlclNlY3JldCJOChVHZXRVc2VyU2VjcmV0c1JlcXVlc3QSDQoFbmFtZXMYASADKAkSJgoFc2NvcGUYAiABKA4yFy5wdWJsaWNfYXBpLlNlY3JldFNjb3BlIkEKFkdldFVzZXJTZWNyZXRzUmVzcG9uc2USJwoHc2VjcmV0cxgBIAMoCzIWLnB1YmxpY19hcGkuVXNlclNlY3JldCJECg9HaXREaWZmRmlsZUluZm8SGQoRY29udGVudF9ibG9iX25hbWUYASABKAkSFgoOZmlsZV9ibG9iX25hbWUYAiABKAkilwEKDkdpdEh1YkNoZWNrUnVuEgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhIKCmNvbmNsdXNpb24YBCABKAkSEgoKc3RhcnRlZF9hdBgFIAEoCRIUCgxjb21wbGV0ZWRfYXQYBiABKAkSCwoDdXJsGAcgASgJEhAKCGh0bWxfdXJsGAggASgJInYKEEdpdEh1YkNoZWNrU3VpdGUSEAoIYXBwX25hbWUYASABKAkSEgoKY29uY2x1c2lvbhgCIAEoCRISCgpjcmVhdGVkX2F0GAMgASgJEhAKCGh0bWxfdXJsGAQgASgJEhYKDmNoZWNrX3J1bnNfdXJsGAUgASgJIt8CCgxHaXRIdWJFbnRpdHkSCgoCaWQYASABKAkSKgoEdHlwZRgCIAEoDjIcLnB1YmxpY19hcGkuR2l0SHViRW50aXR5VHlwZRI2CgpyZXBvc2l0b3J5GAMgASgLMiIucHVibGljX2FwaS5HaXRIdWJFbnRpdHlSZXBvc2l0b3J5EhEKCXRpbWVzdGFtcBgEIAEoCRI+CgxwdWxsX3JlcXVlc3QYBSABKAsyIy5wdWJsaWNfYXBpLkdpdEh1YlB1bGxSZXF1ZXN0RW50aXR5SACIAQESPgoMd29ya2Zsb3dfcnVuGAYgASgLMiMucHVibGljX2FwaS5HaXRIdWJXb3JrZmxvd1J1bkVudGl0eUgBiAEBEhkKDGlzX2Rpc21pc3NlZBgHIAEoCEgCiAEBQg8KDV9wdWxsX3JlcXVlc3RCDwoNX3dvcmtmbG93X3J1bkIPCg1faXNfZGlzbWlzc2VkIoMBChZHaXRIdWJFbnRpdHlSZXBvc2l0b3J5Eg0KBW93bmVyGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJZnVsbF9uYW1lGAMgASgJEhAKCGh0bWxfdXJsGAQgASgJEhYKDmRlZmF1bHRfYnJhbmNoGAUgASgJEg8KB3ByaXZhdGUYBiABKAgiUwoQR2l0SHViRW50aXR5VXNlchINCgVsb2dpbhgBIAEoCRISCgphdmF0YXJfdXJsGAIgASgJEhAKCGh0bWxfdXJsGAMgASgJEgoKAmlkGAQgASgDIrIBChJHaXRIdWJJc3N1ZUNvbW1lbnQSCgoCaWQYASABKAMSLAoGYXV0aG9yGAIgASgLMhwucHVibGljX2FwaS5HaXRIdWJFbnRpdHlVc2VyEgwKBGJvZHkYAyABKAkSEgoKY3JlYXRlZF9hdBgEIAEoCRISCgp1cGRhdGVkX2F0GAUgASgJEhAKCGh0bWxfdXJsGAYgASgJEhoKEmF1dGhvcl9hc3NvY2lhdGlvbhgHIAEoCSLACAoXR2l0SHViUHVsbFJlcXVlc3RFbnRpdHkSDgoGbnVtYmVyGAEgASgFEg0KBXRpdGxlGAIgASgJEgwKBGJvZHkYAyABKAkSDQoFc3RhdGUYBCABKAkSEAoIaHRtbF91cmwYBSABKAkSEgoKY3JlYXRlZF9hdBgGIAEoCRISCgp1cGRhdGVkX2F0GAcgASgJEhYKCW1lcmdlZF9hdBgIIAEoCUgAiAEBEhYKCWNsb3NlZF9hdBgJIAEoCUgBiAEBEioKBHVzZXIYCiABKAsyHC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eVVzZXISLwoJYXNzaWduZWVzGAsgAygLMhwucHVibGljX2FwaS5HaXRIdWJFbnRpdHlVc2VyEjkKE3JlcXVlc3RlZF9yZXZpZXdlcnMYDCADKAsyHC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eVVzZXISEAoIaGVhZF9yZWYYDSABKAkSEAoIYmFzZV9yZWYYDiABKAkSEAoIaGVhZF9zaGEYDyABKAkSEAoIYmFzZV9zaGEYECABKAkSDgoGbWVyZ2VkGBEgASgIEg0KBWRyYWZ0GBIgASgIEg4KBmxhYmVscxgTIAMoCRIQCghjb21tZW50cxgUIAEoBRIPCgdjb21taXRzGBUgASgFEhEKCWFkZGl0aW9ucxgWIAEoBRIRCglkZWxldGlvbnMYFyABKAUSFQoNY2hhbmdlZF9maWxlcxgYIAEoBRIWCgltZXJnZWFibGUYGSABKAhIAogBARIXCg9tZXJnZWFibGVfc3RhdGUYGiABKAkSMgoMY2hlY2tfc3VpdGVzGBsgAygLMhwucHVibGljX2FwaS5HaXRIdWJDaGVja1N1aXRlEioKCHN0YXR1c2VzGBwgAygLMhgucHVibGljX2FwaS5HaXRIdWJTdGF0dXMSOAoPcmV2aWV3X2NvbW1lbnRzGB0gAygLMh8ucHVibGljX2FwaS5HaXRIdWJSZXZpZXdDb21tZW50EjYKDmlzc3VlX2NvbW1lbnRzGB4gAygLMh4ucHVibGljX2FwaS5HaXRIdWJJc3N1ZUNvbW1lbnQSLgoKY2hlY2tfcnVucxgfIAMoCzIaLnB1YmxpY19hcGkuR2l0SHViQ2hlY2tSdW4SPgoPcmVxdWlyZWRfY2hlY2tzGCAgASgLMiAucHVibGljX2FwaS5HaXRIdWJSZXF1aXJlZENoZWNrc0gDiAEBEjQKDXdvcmtmbG93X3J1bnMYISADKAsyHS5wdWJsaWNfYXBpLkdpdEh1YldvcmtmbG93UnVuEikKB3Jldmlld3MYIiADKAsyGC5wdWJsaWNfYXBpLkdpdEh1YlJldmlld0IMCgpfbWVyZ2VkX2F0QgwKCl9jbG9zZWRfYXRCDAoKX21lcmdlYWJsZUISChBfcmVxdWlyZWRfY2hlY2tzIrEDCiJHaXRIdWJQdWxsUmVxdWVzdFRyaWdnZXJDb25kaXRpb25zEhcKCnJlcG9zaXRvcnkYASABKAlIAIgBARITCgZhdXRob3IYAiABKAlIAYgBARIVCghhc3NpZ25lZRgDIAEoCUgCiAEBEhUKCHJldmlld2VyGAQgASgJSAOIAQESDgoGbGFiZWxzGAUgAygJEhoKDmFjdGl2aXR5X3R5cGVzGAYgAygJQgIYARISCgVkcmFmdBgHIAEoCEgEiAEBEhsKDnRpdGxlX2NvbnRhaW5zGAggASgJSAWIAQESGAoLYmFzZV9icmFuY2gYCSABKAlIBogBARIYCgtoZWFkX2JyYW5jaBgKIAEoCUgHiAEBEhIKBWV2ZW50GAsgASgJSAiIAQESDwoHYWN0aW9ucxgMIAMoCUINCgtfcmVwb3NpdG9yeUIJCgdfYXV0aG9yQgsKCV9hc3NpZ25lZUILCglfcmV2aWV3ZXJCCAoGX2RyYWZ0QhEKD190aXRsZV9jb250YWluc0IOCgxfYmFzZV9icmFuY2hCDgoMX2hlYWRfYnJhbmNoQggKBl9ldmVudCK2AQoPR2l0SHViUmVhY3Rpb25zEhAKCHBsdXNfb25lGAEgASgFEhEKCW1pbnVzX29uZRgCIAEoBRIQCghjb25mdXNlZBgDIAEoBRIMCgRleWVzGAQgASgFEg0KBWhlYXJ0GAUgASgFEg4KBmhvb3JheRgGIAEoBRINCgVsYXVnaBgHIAEoBRIOCgZyb2NrZXQYCCABKAUSEwoLdG90YWxfY291bnQYCSABKAUSCwoDdXJsGAogASgJIngKFEdpdEh1YlJlcXVpcmVkQ2hlY2tzEhkKEXJlcXVpcmVkX2NvbnRleHRzGAEgAygJEhkKEWVuZm9yY2VtZW50X2xldmVsGAIgASgJEhMKC3N0cmljdF9tb2RlGAMgASgIEhUKDXRhcmdldF9icmFuY2gYBCABKAkioAEKDEdpdEh1YlJldmlldxIKCgJpZBgBIAEoAxIsCgZhdXRob3IYAiABKAsyHC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eVVzZXISDAoEYm9keRgDIAEoCRINCgVzdGF0ZRgEIAEoCRIUCgxzdWJtaXR0ZWRfYXQYBSABKAkSEQoJY29tbWl0X2lkGAYgASgJEhAKCGh0bWxfdXJsGAcgASgJIpkFChNHaXRIdWJSZXZpZXdDb21tZW50EiwKBmF1dGhvchgBIAEoCzIcLnB1YmxpY19hcGkuR2l0SHViRW50aXR5VXNlchIMCgRib2R5GAIgASgJEhIKCmNyZWF0ZWRfYXQYAyABKAkSEAoIaHRtbF91cmwYBCABKAkSGAoLbGluZV9udW1iZXIYBSABKAVIAIgBARIRCgRwYXRoGAYgASgJSAGIAQESFgoJZGlmZl9odW5rGAcgASgJSAKIAQESFQoIcG9zaXRpb24YCCABKAVIA4gBARIWCgljb21taXRfaWQYCSABKAlIBIgBARIXCgpzdGFydF9saW5lGAogASgFSAWIAQESEQoEc2lkZRgLIAEoCUgGiAEBEgoKAmlkGAwgASgDEhIKCnVwZGF0ZWRfYXQYDSABKAkSLgoJcmVhY3Rpb25zGA4gASgLMhsucHVibGljX2FwaS5HaXRIdWJSZWFjdGlvbnMSHgoWcHVsbF9yZXF1ZXN0X3Jldmlld19pZBgPIAEoAxIbCg5pbl9yZXBseV90b19pZBgQIAEoA0gHiAEBEgsKA3VybBgRIAEoCRIaChJvcmlnaW5hbF9jb21taXRfaWQYEiABKAkSGgoNb3JpZ2luYWxfbGluZRgTIAEoBUgIiAEBEhkKEW9yaWdpbmFsX3Bvc2l0aW9uGBQgASgFEhQKDHN1YmplY3RfdHlwZRgVIAEoCUIOCgxfbGluZV9udW1iZXJCBwoFX3BhdGhCDAoKX2RpZmZfaHVua0ILCglfcG9zaXRpb25CDAoKX2NvbW1pdF9pZEINCgtfc3RhcnRfbGluZUIHCgVfc2lkZUIRCg9faW5fcmVwbHlfdG9faWRCEAoOX29yaWdpbmFsX2xpbmUikwEKDEdpdEh1YlN0YXR1cxIPCgdjb250ZXh0GAEgASgJEg0KBXN0YXRlGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhcKCnRhcmdldF91cmwYBCABKAlIAIgBARISCgpjcmVhdGVkX2F0GAUgASgJEhIKCnVwZGF0ZWRfYXQYBiABKAlCDQoLX3RhcmdldF91cmwiKQoUR2l0SHViVG9vbEV4dHJhSW5wdXQSEQoJYXBpX3Rva2VuGAEgASgJIoQCChdHaXRIdWJUcmlnZ2VyQ29uZGl0aW9ucxIxCgtlbnRpdHlfdHlwZRgBIAEoDjIcLnB1YmxpY19hcGkuR2l0SHViRW50aXR5VHlwZRJJCgxwdWxsX3JlcXVlc3QYAiABKAsyLi5wdWJsaWNfYXBpLkdpdEh1YlB1bGxSZXF1ZXN0VHJpZ2dlckNvbmRpdGlvbnNIAIgBARJJCgx3b3JrZmxvd19ydW4YAyABKAsyLi5wdWJsaWNfYXBpLkdpdEh1YldvcmtmbG93UnVuVHJpZ2dlckNvbmRpdGlvbnNIAYgBAUIPCg1fcHVsbF9yZXF1ZXN0Qg8KDV93b3JrZmxvd19ydW4ivgEKEUdpdEh1YldvcmtmbG93UnVuEgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSEgoKY29uY2x1c2lvbhgFIAEoCRISCgpjcmVhdGVkX2F0GAYgASgJEhIKCnVwZGF0ZWRfYXQYByABKAkSCwoDdXJsGAggASgJEhAKCGh0bWxfdXJsGAkgASgJEhYKDmNoZWNrX3N1aXRlX2lkGAogASgDIuoDChdHaXRIdWJXb3JrZmxvd1J1bkVudGl0eRIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEhUKDWRpc3BsYXlfdGl0bGUYAyABKAkSEgoKcnVuX251bWJlchgEIAEoBRINCgVldmVudBgFIAEoCRIOCgZzdGF0dXMYBiABKAkSFwoKY29uY2x1c2lvbhgHIAEoCUgAiAEBEhMKC3dvcmtmbG93X2lkGAggASgJEhUKDXdvcmtmbG93X25hbWUYCSABKAkSEAoIaHRtbF91cmwYCiABKAkSEgoKY3JlYXRlZF9hdBgLIAEoCRISCgp1cGRhdGVkX2F0GAwgASgJEhsKDnJ1bl9zdGFydGVkX2F0GA0gASgJSAGIAQESKwoFYWN0b3IYDiABKAsyHC5wdWJsaWNfYXBpLkdpdEh1YkVudGl0eVVzZXISNgoQdHJpZ2dlcmluZ19hY3RvchgPIAEoCzIcLnB1YmxpY19hcGkuR2l0SHViRW50aXR5VXNlchITCgtoZWFkX2JyYW5jaBgQIAEoCRIQCghoZWFkX3NoYRgRIAEoCRIMCgRwYXRoGBIgASgJEhMKC3J1bl9hdHRlbXB0GBMgASgFQg0KC19jb25jbHVzaW9uQhEKD19ydW5fc3RhcnRlZF9hdCLnAgoiR2l0SHViV29ya2Zsb3dSdW5UcmlnZ2VyQ29uZGl0aW9ucxIXCgpyZXBvc2l0b3J5GAEgASgJSACIAQESEgoFYWN0b3IYAiABKAlIAYgBARIdChB0cmlnZ2VyaW5nX2FjdG9yGAMgASgJSAKIAQESEQoJd29ya2Zsb3dzGAQgAygJEhIKBWV2ZW50GAUgASgJSAOIAQESEwoGc3RhdHVzGAYgASgJSASIAQESFwoKY29uY2x1c2lvbhgHIAEoCUgFiAEBEhMKBmJyYW5jaBgIIAEoCUgGiAEBEhsKDnRpdGxlX2NvbnRhaW5zGAkgASgJSAeIAQFCDQoLX3JlcG9zaXRvcnlCCAoGX2FjdG9yQhMKEV90cmlnZ2VyaW5nX2FjdG9yQggKBl9ldmVudEIJCgdfc3RhdHVzQg0KC19jb25jbHVzaW9uQgkKB19icmFuY2hCEQoPX3RpdGxlX2NvbnRhaW5zIl8KDEdpdGh1YkJyYW5jaBIMCgRuYW1lGAEgASgJEi4KBmNvbW1pdBgCIAEoCzIeLnB1YmxpY19hcGkuR2l0aHViQnJhbmNoQ29tbWl0EhEKCXByb3RlY3RlZBgDIAEoCCIuChJHaXRodWJCcmFuY2hDb21taXQSCwoDc2hhGAEgASgJEgsKA3VybBgCIAEoCSJYCg9HaXRodWJDb21taXRSZWYSFgoOcmVwb3NpdG9yeV91cmwYASABKAkSDwoHZ2l0X3JlZhgCIAEoCRISCgVwYXRjaBgDIAEoCUgAiAEBQggKBl9wYXRjaCKcAwoRR2l0aHViUHVsbFJlcXVlc3QSDgoGbnVtYmVyGAEgASgFEg0KBXRpdGxlGAIgASgJEgwKBGJvZHkYAyABKAkSDQoFc3RhdGUYBCABKAkSEAoIaHRtbF91cmwYBSABKAkSEgoKY3JlYXRlZF9hdBgGIAEoCRISCgp1cGRhdGVkX2F0GAcgASgJEhEKCW1lcmdlZF9hdBgIIAEoCRIRCgljbG9zZWRfYXQYCSABKAkSJAoEdXNlchgKIAEoCzIWLnB1YmxpY19hcGkuR2l0aHViVXNlchIQCghoZWFkX3JlZhgLIAEoCRIQCghiYXNlX3JlZhgMIAEoCRIQCghoZWFkX3NoYRgNIAEoCRIQCghiYXNlX3NoYRgOIAEoCRIOCgZtZXJnZWQYDyABKAgSDQoFZHJhZnQYECABKAgSEAoIY29tbWVudHMYESABKAUSDwoHY29tbWl0cxgSIAEoBRIRCglhZGRpdGlvbnMYEyABKAUSEQoJZGVsZXRpb25zGBQgASgFEhUKDWNoYW5nZWRfZmlsZXMYFSABKAUijwEKGkdpdGh1YlB1bGxSZXF1ZXN0RmlsZUVudHJ5EhAKCGZpbGVuYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIRCglhZGRpdGlvbnMYAyABKAUSEQoJZGVsZXRpb25zGAQgASgFEgsKA3NoYRgFIAEoCRISCgVwYXRjaBgGIAEoCUgAiAEBQggKBl9wYXRjaCIlCglHaXRodWJSZWYSCwoDdXJsGAEgASgJEgsKA3JlZhgCIAEoCSLNAQoKR2l0aHViUmVwbxINCgVvd25lchgBIAEoCRIMCgRuYW1lGAIgASgJEhUKCGh0bWxfdXJsGAMgASgJSACIAQESFwoKY3JlYXRlZF9hdBgEIAEoCUgBiAEBEhcKCnVwZGF0ZWRfYXQYBSABKAlIAogBARIbCg5kZWZhdWx0X2JyYW5jaBgGIAEoCUgDiAEBQgsKCV9odG1sX3VybEINCgtfY3JlYXRlZF9hdEINCgtfdXBkYXRlZF9hdEIRCg9fZGVmYXVsdF9icmFuY2giQQoKR2l0aHViVXNlchINCgVsb2dpbhgBIAEoCRISCgphdmF0YXJfdXJsGAIgASgJEhAKCGh0bWxfdXJsGAMgASgJIhYKFEluYWN0aXZlU3Vic2NyaXB0aW9uIk0KGkluY29ycG9yYXRlZEV4dGVybmFsU291cmNlEhMKC3NvdXJjZV9uYW1lGAEgASgJEhEKBGxpbmsYAiABKAlIAIgBAUIHCgVfbGluayI9ChVJbmRleGVkQ29tbWl0RmlsZUluZm8SEQoJZmlsZV9wYXRoGAEgASgJEhEKCWJsb2JfbmFtZRgCIAEoCSI8ChFJbmRleGVkQ29tbWl0SW5mbxISCgpjb21taXRfc2hhGAEgASgJEhMKC2NvbW1pdF90aW1lGAIgASgJImIKGEluc2VydENoYXRIaXN0b3J5UmVxdWVzdBIXCg9jb252ZXJzYXRpb25faWQYASABKAkSLQoJZXhjaGFuZ2VzGAIgAygLMhouY2hhdC5FeGNoYW5nZVdpdGhNZXRhZGF0YSLBAQoZSW5zZXJ0Q2hhdEhpc3RvcnlSZXNwb25zZRI8CgdlbnRyaWVzGAEgAygLMisucHVibGljX2FwaS5JbnNlcnRDaGF0SGlzdG9yeVJlc3BvbnNlLkVudHJ5GmYKBUVudHJ5Eg0KBWluZGV4GAEgASgDEiIKBnN0YXR1cxgCIAEoCzISLmdvb2dsZS5ycGMuU3RhdHVzEhkKDGNvbXBvc2l0ZV9pZBgDIAEoCUgAiAEBQg8KDV9jb21wb3NpdGVfaWQigAYKEkluc3RydWN0aW9uUmVxdWVzdBISCgVtb2RlbBgBIAEoCUgAiAEBEg4KBnByZWZpeBgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJEg4KBnN1ZmZpeBgEIAEoCRIRCgRwYXRoGAUgASgJSAGIAQESEwoLaW5zdHJ1Y3Rpb24YBiABKAkSEQoEbGFuZxgHIAEoCUgCiAEBEhYKCWJsb2JfbmFtZRgIIAEoCUgDiAEBEhkKDHByZWZpeF9iZWdpbhgJIAEoBUgEiAEBEhcKCnN1ZmZpeF9lbmQYCiABKAVIBYgBARIYCgtzZXF1ZW5jZV9pZBgLIAEoDUgGiAEBEiAKBWJsb2JzGAwgASgLMhEucHVibGljX2FwaS5CbG9icxIqCgxjaGF0X2hpc3RvcnkYDSADKAsyFC5wdWJsaWNfYXBpLkV4Y2hhbmdlEhcKCmNvZGVfYmxvY2sYDiABKAlIB4gBARIdChB0YXJnZXRfZmlsZV9wYXRoGA8gASgJSAiIAQESIAoTdGFyZ2V0X2ZpbGVfY29udGVudBgQIAEoCUgJiAEBEi0KIGNvbnRleHRfY29kZV9leGNoYW5nZV9yZXF1ZXN0X2lkGBEgASgJSAqIAQESHAoPdXNlcl9ndWlkZWxpbmVzGBIgASgJSAuIAQESIQoUd29ya3NwYWNlX2d1aWRlbGluZXMYEyABKAlIDIgBAUIICgZfbW9kZWxCBwoFX3BhdGhCBwoFX2xhbmdCDAoKX2Jsb2JfbmFtZUIPCg1fcHJlZml4X2JlZ2luQg0KC19zdWZmaXhfZW5kQg4KDF9zZXF1ZW5jZV9pZEINCgtfY29kZV9ibG9ja0ITChFfdGFyZ2V0X2ZpbGVfcGF0aEIWChRfdGFyZ2V0X2ZpbGVfY29udGVudEIjCiFfY29udGV4dF9jb2RlX2V4Y2hhbmdlX3JlcXVlc3RfaWRCEgoQX3VzZXJfZ3VpZGVsaW5lc0IXChVfd29ya3NwYWNlX2d1aWRlbGluZXMiiwMKE0luc3RydWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCRIaChJ1bmtub3duX2Jsb2JfbmFtZXMYAiADKAkSHAoUY2hlY2twb2ludF9ub3RfZm91bmQYAyABKAgSHQoQcmVwbGFjZW1lbnRfdGV4dBgEIAEoCUgAiAEBEiMKFnJlcGxhY2VtZW50X3N0YXJ0X2xpbmUYBSABKA1IAYgBARIhChRyZXBsYWNlbWVudF9lbmRfbGluZRgGIAEoDUgCiAEBEiEKFHJlcGxhY2VtZW50X29sZF90ZXh0GAcgASgJSAOIAQESJAoXcmVwbGFjZW1lbnRfc2VxdWVuY2VfaWQYCCABKA1IBIgBAUITChFfcmVwbGFjZW1lbnRfdGV4dEIZChdfcmVwbGFjZW1lbnRfc3RhcnRfbGluZUIXChVfcmVwbGFjZW1lbnRfZW5kX2xpbmVCFwoVX3JlcGxhY2VtZW50X29sZF90ZXh0QhoKGF9yZXBsYWNlbWVudF9zZXF1ZW5jZV9pZCI2ChtJbnRlcnJ1cHRSZW1vdGVBZ2VudFJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJIk0KHEludGVycnVwdFJlbW90ZUFnZW50UmVzcG9uc2USLQoGc3RhdHVzGAEgASgOMh0ucHVibGljX2FwaS5SZW1vdGVBZ2VudFN0YXR1cyIfCh1Jc1VzZXJHaXRodWJDb25maWd1cmVkUmVxdWVzdCKHAQoeSXNVc2VyR2l0aHViQ29uZmlndXJlZFJlc3BvbnNlEhUKDWlzX2NvbmZpZ3VyZWQYASABKAgSEQoJb2F1dGhfdXJsGAIgASgJEiMKG2NvbmZpZ3VyZWRfYnV0X25lZWRzX3VwZGF0ZRgDIAEoCBIWCg51cGRhdGVkX3Njb3BlcxgEIAEoCSIqCgxLZXlWYWx1ZVBhaXISCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIkEKCExhbmd1YWdlEgwKBG5hbWUYASABKAkSEwoLdnNjb2RlX25hbWUYAiABKAkSEgoKZXh0ZW5zaW9ucxgDIAMoCSLCAQoMTGluZWFyRW50aXR5EgoKAmlkGAEgASgJEioKBHR5cGUYAiABKA4yHC5wdWJsaWNfYXBpLkxpbmVhckVudGl0eVR5cGUSEQoJdGltZXN0YW1wGAMgASgJEjEKBWlzc3VlGAQgASgLMh0ucHVibGljX2FwaS5MaW5lYXJJc3N1ZUVudGl0eUgAiAEBEhkKDGlzX2Rpc21pc3NlZBgFIAEoCEgBiAEBQggKBl9pc3N1ZUIPCg1faXNfZGlzbWlzc2VkInUKEUxpbmVhckVudGl0eUxhYmVsEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARISCgVjb2xvchgEIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIICgZfY29sb3IiggEKE0xpbmVhckVudGl0eVByb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXN0YXRlGAQgASgJEhAKA3VybBgFIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIGCgRfdXJsImMKEExpbmVhckVudGl0eVRlYW0SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24ieQoQTGluZWFyRW50aXR5VXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRINCgVlbWFpbBgEIAEoCRIXCgphdmF0YXJfdXJsGAUgASgJSACIAQFCDQoLX2F2YXRhcl91cmwiiwEKGUxpbmVhckVudGl0eVdvcmtmbG93U3RhdGUSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoFY29sb3IYBSABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2NvbG9yIu8FChFMaW5lYXJJc3N1ZUVudGl0eRIKCgJpZBgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJEg0KBXRpdGxlGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEAoIcHJpb3JpdHkYBSABKAUSCwoDdXJsGAYgASgJEhIKCmNyZWF0ZWRfYXQYByABKAkSEgoKdXBkYXRlZF9hdBgIIAEoCRIXCgpzdGFydGVkX2F0GAkgASgJSAGIAQESGQoMY29tcGxldGVkX2F0GAogASgJSAKIAQESGAoLY2FuY2VsZWRfYXQYCyABKAlIA4gBARIVCghkdWVfZGF0ZRgMIAEoCUgEiAEBEhUKCGVzdGltYXRlGA0gASgBSAWIAQESLQoHY3JlYXRvchgOIAEoCzIcLnB1YmxpY19hcGkuTGluZWFyRW50aXR5VXNlchIzCghhc3NpZ25lZRgPIAEoCzIcLnB1YmxpY19hcGkuTGluZWFyRW50aXR5VXNlckgGiAEBEioKBHRlYW0YECABKAsyHC5wdWJsaWNfYXBpLkxpbmVhckVudGl0eVRlYW0SNAoFc3RhdGUYESABKAsyJS5wdWJsaWNfYXBpLkxpbmVhckVudGl0eVdvcmtmbG93U3RhdGUSNQoHcHJvamVjdBgSIAEoCzIfLnB1YmxpY19hcGkuTGluZWFyRW50aXR5UHJvamVjdEgHiAEBEi0KBmxhYmVscxgTIAMoCzIdLnB1YmxpY19hcGkuTGluZWFyRW50aXR5TGFiZWwSFQoNY29tbWVudF9jb3VudBgUIAEoBRIYChBzdWJzY3JpYmVyX2NvdW50GBUgASgFQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0Qg4KDF9jYW5jZWxlZF9hdEILCglfZHVlX2RhdGVCCwoJX2VzdGltYXRlQgsKCV9hc3NpZ25lZUIKCghfcHJvamVjdCKLAwocTGluZWFySXNzdWVUcmlnZ2VyQ29uZGl0aW9ucxIRCgR0ZWFtGAEgASgJSACIAQESFAoHY3JlYXRvchgCIAEoCUgBiAEBEhUKCGFzc2lnbmVlGAMgASgJSAKIAQESDgoGc3RhdGVzGAQgAygJEhMKC3N0YXRlX3R5cGVzGAUgAygJEhIKCnByaW9yaXRpZXMYBiADKAUSDgoGbGFiZWxzGAcgAygJEhQKB3Byb2plY3QYCCABKAlIA4gBARIWCg5hY3Rpdml0eV90eXBlcxgJIAMoCRIbCg50aXRsZV9jb250YWlucxgKIAEoCUgEiAEBEhkKDG1pbl9lc3RpbWF0ZRgLIAEoAUgFiAEBEhkKDG1heF9lc3RpbWF0ZRgMIAEoAUgGiAEBQgcKBV90ZWFtQgoKCF9jcmVhdG9yQgsKCV9hc3NpZ25lZUIKCghfcHJvamVjdEIRCg9fdGl0bGVfY29udGFpbnNCDwoNX21pbl9lc3RpbWF0ZUIPCg1fbWF4X2VzdGltYXRlIikKFExpbmVhclRvb2xFeHRyYUlucHV0EhEKCWFwaV90b2tlbhgBIAEoCSKUAQoXTGluZWFyVHJpZ2dlckNvbmRpdGlvbnMSMQoLZW50aXR5X3R5cGUYASABKA4yHC5wdWJsaWNfYXBpLkxpbmVhckVudGl0eVR5cGUSPAoFaXNzdWUYAiABKAsyKC5wdWJsaWNfYXBpLkxpbmVhcklzc3VlVHJpZ2dlckNvbmRpdGlvbnNIAIgBAUIICgZfaXNzdWUiHgocTGlzdEFnZW50Q2FwYWJpbGl0aWVzUmVxdWVzdCJYCh1MaXN0QWdlbnRDYXBhYmlsaXRpZXNSZXNwb25zZRI3ChJhZ2VudF9jYXBhYmlsaXRpZXMYASADKAsyGy5wdWJsaWNfYXBpLkFnZW50Q2FwYWJpbGl0eSIaChhMaXN0QWdlbnRQZXJzb25hc1JlcXVlc3QiTQoZTGlzdEFnZW50UGVyc29uYXNSZXNwb25zZRIwCg5hZ2VudF9wZXJzb25hcxgBIAMoCzIYLnB1YmxpY19hcGkuQWdlbnRQZXJzb25hIu0CChZMaXN0Q2hhdEhpc3RvcnlSZXF1ZXN0EhcKD2NvbnZlcnNhdGlvbl9pZBgBIAEoCRI4Cg9zdGFydF90aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESNgoNZW5kX3RpbWVzdGFtcBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIbCg5leGNsdWRlX3NpbGVudBgEIAEoCEgCiAEBEhIKBWxpbWl0GAUgASgFSAOIAQESLgohZXhjbHVkZV9yZXRyaWVkX3N0b3BwZWRfZXhjaGFuZ2VzGAYgASgISASIAQFCEgoQX3N0YXJ0X3RpbWVzdGFtcEIQCg5fZW5kX3RpbWVzdGFtcEIRCg9fZXhjbHVkZV9zaWxlbnRCCAoGX2xpbWl0QiQKIl9leGNsdWRlX3JldHJpZWRfc3RvcHBlZF9leGNoYW5nZXMiPwoXTGlzdENoYXRIaXN0b3J5UmVzcG9uc2USJAoMY2hhdF9oaXN0b3J5GAEgAygLMg4uY2hhdC5FeGNoYW5nZSIwChhMaXN0Q29udmVyc2F0aW9uc1JlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJIlAKGUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2USMwoNY29udmVyc2F0aW9ucxgBIAMoCzIcLnB1YmxpY19hcGkuQ29udmVyc2F0aW9uSW5mbyIgCh5MaXN0RXh0ZXJuYWxTb3VyY2VUeXBlc1JlcXVlc3QiVwofTGlzdEV4dGVybmFsU291cmNlVHlwZXNSZXNwb25zZRI0Cgxzb3VyY2VfdHlwZXMYASADKA4yHi5wdWJsaWNfYXBpLkV4dGVybmFsU291cmNlVHlwZSJhCh1MaXN0R2l0aHViUmVwb0JyYW5jaGVzUmVxdWVzdBIkCgRyZXBvGAEgASgLMhYucHVibGljX2FwaS5HaXRodWJSZXBvEhEKBHBhZ2UYAiABKAVIAIgBAUIHCgVfcGFnZSJ2Ch5MaXN0R2l0aHViUmVwb0JyYW5jaGVzUmVzcG9uc2USKgoIYnJhbmNoZXMYASADKAsyGC5wdWJsaWNfYXBpLkdpdGh1YkJyYW5jaBIVCg1oYXNfbmV4dF9wYWdlGAIgASgIEhEKCW5leHRfcGFnZRgDIAEoBSJICipMaXN0R2l0aHViUmVwb3NGb3JBdXRoZW50aWNhdGVkVXNlclJlcXVlc3QSEQoEcGFnZRgBIAEoBUgAiAEBQgcKBV9wYWdlIn4KK0xpc3RHaXRodWJSZXBvc0ZvckF1dGhlbnRpY2F0ZWRVc2VyUmVzcG9uc2USJQoFcmVwb3MYASADKAsyFi5wdWJsaWNfYXBpLkdpdGh1YlJlcG8SFQoNaGFzX25leHRfcGFnZRgCIAEoCBIRCgluZXh0X3BhZ2UYAyABKAUiSgodTGlzdEdpdGh1YlNldHVwU2NyaXB0c1JlcXVlc3QSKQoKZ2l0aHViX3JlZhgBIAEoCzIVLnB1YmxpY19hcGkuR2l0aHViUmVmIjYKHkxpc3RHaXRodWJTZXR1cFNjcmlwdHNSZXNwb25zZRIUCgxzY3JpcHRfcGF0aHMYASADKAkirgIKG0xpc3RQdWxsUmVxdWVzdEZpbGVzUmVxdWVzdBISCgpyZXBvc2l0b3J5GAEgASgJEhEKCXByX251bWJlchgCIAEoBRIRCgRwYWdlGAMgASgFSACIAQESFQoIcGVyX3BhZ2UYBCABKAVIAYgBARIaCg1pbmNsdWRlX3BhdGNoGAUgASgISAKIAQESHAoPbWF4X3BhdGNoX2J5dGVzGAYgASgFSAOIAQESKAobaW5jbHVkZV90b3RhbF9jaGFuZ2VkX2ZpbGVzGAcgASgISASIAQFCBwoFX3BhZ2VCCwoJX3Blcl9wYWdlQhAKDl9pbmNsdWRlX3BhdGNoQhIKEF9tYXhfcGF0Y2hfYnl0ZXNCHgocX2luY2x1ZGVfdG90YWxfY2hhbmdlZF9maWxlcyLHAQocTGlzdFB1bGxSZXF1ZXN0RmlsZXNSZXNwb25zZRI1CgVmaWxlcxgBIAMoCzImLnB1YmxpY19hcGkuR2l0aHViUHVsbFJlcXVlc3RGaWxlRW50cnkSEAoIaGFzX21vcmUYAiABKAgSFgoJbmV4dF9wYWdlGAMgASgFSACIAQESIAoTdG90YWxfY2hhbmdlZF9maWxlcxgEIAEoBUgBiAEBQgwKCl9uZXh0X3BhZ2VCFgoUX3RvdGFsX2NoYW5nZWRfZmlsZXMiGQoXTGlzdFJlbW90ZUFnZW50c1JlcXVlc3QihwEKGExpc3RSZW1vdGVBZ2VudHNSZXNwb25zZRIuCg1yZW1vdGVfYWdlbnRzGAEgAygLMhcucHVibGljX2FwaS5SZW1vdGVBZ2VudBIZChFtYXhfcmVtb3RlX2FnZW50cxgCIAEoBRIgChhtYXhfYWN0aXZlX3JlbW90ZV9hZ2VudHMYAyABKAUieQodTGlzdFJlbW90ZUFnZW50c1N0cmVhbVJlcXVlc3QSPgoVbGFzdF91cGRhdGVfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQhgKFl9sYXN0X3VwZGF0ZV90aW1lc3RhbXAiTgoeTGlzdFJlbW90ZUFnZW50c1N0cmVhbVJlc3BvbnNlEiwKB3VwZGF0ZXMYASADKAsyGy5wdWJsaWNfYXBpLkFnZW50TGlzdFVwZGF0ZSJiChZMaXN0UmVtb3RlVG9vbHNSZXF1ZXN0EjcKDHRvb2xfaWRfbGlzdBgBIAEoCzIcLnB1YmxpY19hcGkuUmVtb3RlVG9vbElkTGlzdEgAiAEBQg8KDV90b29sX2lkX2xpc3QiVAoXTGlzdFJlbW90ZVRvb2xzUmVzcG9uc2USOQoFdG9vbHMYASADKAsyKi5wdWJsaWNfYXBpLkxpc3RSZW1vdGVUb29sc1Jlc3BvbnNlTWVzc2FnZSKIAgoeTGlzdFJlbW90ZVRvb2xzUmVzcG9uc2VNZXNzYWdlEjMKD3Rvb2xfZGVmaW5pdGlvbhgBIAEoCzIaLnB1YmxpY19hcGkuVG9vbERlZmluaXRpb24SMAoOcmVtb3RlX3Rvb2xfaWQYAiABKA4yGC5wdWJsaWNfYXBpLlJlbW90ZVRvb2xJZBI/ChNhdmFpbGFiaWxpdHlfc3RhdHVzGAMgASgOMiIucHVibGljX2FwaS5Ub29sQXZhaWxhYmlsaXR5U3RhdHVzEisKC3Rvb2xfc2FmZXR5GAQgASgOMhYucHVibGljX2FwaS5Ub29sU2FmZXR5EhEKCW9hdXRoX3VybBgFIAEoCSKlAgoPTGlzdFRhZ3NSZXF1ZXN0Ei4KCHRhZ190eXBlGAEgASgOMhwucHVibGljX2FwaS5BbmFseXRpY3NUYWdUeXBlEjYKCmRhdGVfcmFuZ2UYAiABKAsyIi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NEYXRlUmFuZ2USOAoMY29zdF9maWx0ZXJzGAMgASgLMiIucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzVjJGaWx0ZXJzEjwKD291dGNvbWVfZmlsdGVycxgEIAEoCzIjLnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0ZpbHRlcnMSFgoOaW5jbHVkZV92YWx1ZXMYBSABKAgSGgoSbWF4X3ZhbHVlc19wZXJfdGFnGAYgASgNIkEKEExpc3RUYWdzUmVzcG9uc2USLQoEdGFncxgBIAMoCzIfLnB1YmxpY19hcGkuQW5hbHl0aWNzVGFnU3VtbWFyeSKfAQoYTGlzdFRlbmFudFNlY3JldHNSZXF1ZXN0EhQKDG5hbWVfcGF0dGVybhgBIAEoCRIqCgt0YWdfZmlsdGVycxgCIAMoCzIVLnB1YmxpY19hcGkuVGFnRmlsdGVyEhoKDmluY2x1ZGVfdmFsdWVzGAMgASgIQgIYARIRCglwYWdlX3NpemUYBCABKAUSEgoKcGFnZV90b2tlbhgFIAEoCSJ0ChlMaXN0VGVuYW50U2VjcmV0c1Jlc3BvbnNlEikKB3NlY3JldHMYASADKAsyGC5wdWJsaWNfYXBpLlRlbmFudFNlY3JldBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiFQoTTGlzdFRyaWdnZXJzUmVxdWVzdCI9ChRMaXN0VHJpZ2dlcnNSZXNwb25zZRIlCgh0cmlnZ2VycxgBIAMoCzITLnB1YmxpY19hcGkuVHJpZ2dlciLpAQoWTGlzdFVzZXJTZWNyZXRzUmVxdWVzdBIUCgxuYW1lX3BhdHRlcm4YASABKAkSKgoLdGFnX2ZpbHRlcnMYAiADKAsyFS5wdWJsaWNfYXBpLlRhZ0ZpbHRlchIaCg5pbmNsdWRlX3ZhbHVlcxgDIAEoCEICGAESEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkSJgoFc2NvcGUYBiABKA4yFy5wdWJsaWNfYXBpLlNlY3JldFNjb3BlEhUKCHNwYWNlX2lkGAcgASgJSACIAQFCCwoJX3NwYWNlX2lkIsgBChdMaXN0VXNlclNlY3JldHNSZXNwb25zZRInCgdzZWNyZXRzGAEgAygLMhYucHVibGljX2FwaS5Vc2VyU2VjcmV0EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoBRIoCiBzZWNyZXRfc2NvcGVkX3Jlc29sdXRpb25fZW5hYmxlZBgEIAEoCBIsCiRzZWNyZXRfbXVsdGlfc3BhY2VfdGFyZ2V0aW5nX2VuYWJsZWQYBSABKAgiFwoVTGlzdFdvcmtzcGFjZXNSZXF1ZXN0IkcKFkxpc3RXb3Jrc3BhY2VzUmVzcG9uc2USLQoKd29ya3NwYWNlcxgBIAMoCzIZLnB1YmxpY19hcGkuV29ya3NwYWNlSW5mbyJuCh1NYXJrTm90aWZpY2F0aW9uQXNSZWFkUmVxdWVzdBIXCg9ub3RpZmljYXRpb25faWQYASABKAkSHgoRYWN0aW9uX2l0ZW1fdGl0bGUYAiABKAlIAIgBAUIUChJfYWN0aW9uX2l0ZW1fdGl0bGUiIAoeTWFya05vdGlmaWNhdGlvbkFzUmVhZFJlc3BvbnNlIowBChdNY3BDYXRhbG9nTWV0YWRhdGFFbnRyeRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhEKCWF1dGhfdHlwZRgEIAEoCRIvCgVzdGF0ZRgFIAEoDjIgLnB1YmxpY19hcGkuTWNwQ2F0YWxvZ0VudHJ5U3RhdGUi5gEKCU1jcENvbmZpZxIKCgJpZBgBIAEoCRIwCgZjb25maWcYAiABKAsyIC5wdWJsaWNfYXBpLlJlbW90ZUFnZW50TWNwQ29uZmlnEjQKEGVuYWJsZWRfcHJvZHVjdHMYAyADKA4yGi5wdWJsaWNfYXBpLk1jcFByb2R1Y3RUeXBlEh0KFWhhc19vYXV0aF9jcmVkZW50aWFscxgEIAEoCBIVCghzcGFjZV9pZBgFIAEoCUgAiAEBEhUKCGFkZGVkX2J5GAYgASgJSAGIAQFCCwoJX3NwYWNlX2lkQgsKCV9hZGRlZF9ieSKvAQoJTWNwU2VjcmV0Eg0KBXZhbHVlGAEgASgJEi0KBHRhZ3MYAiADKAsyHy5wdWJsaWNfYXBpLk1jcFNlY3JldC5UYWdzRW50cnkSDwoHdmVyc2lvbhgDIAEoCRImCgVzY29wZRgEIAEoDjIXLnB1YmxpY19hcGkuU2VjcmV0U2NvcGUaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigAMKD01jcFNlcnZlckNvbmZpZxIUCgdjb21tYW5kGAEgASgJSACIAQESDAoEYXJncxgCIAMoCRIXCgp0aW1lb3V0X21zGAMgASgFSAGIAQESMQoDZW52GAQgAygLMiQucHVibGljX2FwaS5NY3BTZXJ2ZXJDb25maWcuRW52RW50cnkSJAoXdXNlX3NoZWxsX2ludGVycG9sYXRpb24YBSABKAhIAogBARIRCgRuYW1lGAYgASgJSAOIAQESFQoIZGlzYWJsZWQYByABKAhIBIgBARIRCgR0eXBlGAggASgJSAWIAQESEAoDdXJsGAkgASgJSAaIAQEaKgoIRW52RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIKCghfY29tbWFuZEINCgtfdGltZW91dF9tc0IaChhfdXNlX3NoZWxsX2ludGVycG9sYXRpb25CBwoFX25hbWVCCwoJX2Rpc2FibGVkQgcKBV90eXBlQgYKBF91cmwiUgoaTWNwU2VydmVyUHJvZHVjdFByZWZlcmVuY2USNAoQZW5hYmxlZF9wcm9kdWN0cxgBIAMoDjIaLnB1YmxpY19hcGkuTWNwUHJvZHVjdFR5cGUiYwoPTWVtb3JpemVSZXF1ZXN0EhEKBW1vZGVsGAEgASgJQgIYARIJCgF0GAIgASgJEgwKBHBhdGgYAyABKAkSFgoJYmxvYl9uYW1lGAQgASgJSACIAQFCDAoKX2Jsb2JfbmFtZSIrChBNZW1vcml6ZVJlc3BvbnNlEhcKD21lbV9vYmplY3RfbmFtZRgBIAEoCSKiAQodTWlncmF0ZVVzZXJTZWNyZXRTY29wZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRItCgxzb3VyY2Vfc2NvcGUYAiABKA4yFy5wdWJsaWNfYXBpLlNlY3JldFNjb3BlEi0KDHRhcmdldF9zY29wZRgDIAEoDjIXLnB1YmxpY19hcGkuU2VjcmV0U2NvcGUSFQoNZGVsZXRlX3NvdXJjZRgEIAEoCCJgCh5NaWdyYXRlVXNlclNlY3JldFNjb3BlUmVzcG9uc2USJgoGc2VjcmV0GAEgASgLMhYucHVibGljX2FwaS5Vc2VyU2VjcmV0EhYKDnNvdXJjZV9kZWxldGVkGAIgASgIItQBCgVNb2RlbBIjChtzdWdnZXN0ZWRfcHJlZml4X2NoYXJfY291bnQYASABKA0SIwobc3VnZ2VzdGVkX3N1ZmZpeF9jaGFyX2NvdW50GAIgASgNEh8KF21heF9tZW1vcml6ZV9zaXplX2J5dGVzGAMgASgNEgwKBG5hbWUYBSABKAkSGgoNaW50ZXJuYWxfbmFtZRgGIAEoCUgAiAEBEhIKCmlzX2RlZmF1bHQYByABKAhCEAoOX2ludGVybmFsX25hbWVKBAgEEAVKBAgKEAtKBAgLEAwizwEKDE5vdGlmaWNhdGlvbhIsCgVsZXZlbBgBIAEoDjIdLnB1YmxpY19hcGkuTm90aWZpY2F0aW9uTGV2ZWwSDwoHbWVzc2FnZRgCIAEoCRIsCgxhY3Rpb25faXRlbXMYAyADKAsyFi5wdWJsaWNfYXBpLkFjdGlvbkl0ZW0SFwoPbm90aWZpY2F0aW9uX2lkGAYgASgJEjkKDGRpc3BsYXlfdHlwZRgHIAEoDjIjLnB1YmxpY19hcGkuTm90aWZpY2F0aW9uRGlzcGxheVR5cGUiKQoUTm90aW9uVG9vbEV4dHJhSW5wdXQSEQoJYXBpX3Rva2VuGAEgASgJIl0KFk9uYm9hcmRpbmdTZXNzaW9uRXZlbnQSFgoOZXZlbnRfdGltZV9zZWMYASABKAMSFwoPZXZlbnRfdGltZV9uc2VjGAIgASgFEhIKCmV2ZW50X25hbWUYAyABKAkiUQobT25ib2FyZGluZ1Nlc3Npb25FdmVudEJhdGNoEjIKBmV2ZW50cxgBIAMoCzIiLnB1YmxpY19hcGkuT25ib2FyZGluZ1Nlc3Npb25FdmVudCIgCh5PbmJvYXJkaW5nU2Vzc2lvbkV2ZW50UmVzcG9uc2Ui/wEKGU91dGNvbWVBbmFseXRpY3NEYXRhUG9pbnQSNgoKZGF0ZV9yYW5nZRgBIAEoCzIiLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc0RhdGVSYW5nZRIzCg9vdXRjb21lX21ldHJpY3MYAiABKAsyGi5wdWJsaWNfYXBpLk91dGNvbWVNZXRyaWNzEkIKD2dyb3VwX2J5X3ZhbHVlcxgDIAEoCzIpLnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0dyb3VwQnlWYWx1ZXMSMQoHbWV0cmljcxgEIAEoCzIgLnB1YmxpY19hcGkuQ29zdEFuYWx5dGljc01ldHJpY3MiZAoXT3V0Y29tZUFuYWx5dGljc0ZpbHRlcnMSDQoFbmFtZXMYASADKAkSOgoLdGFnX2ZpbHRlcnMYAiADKAsyJS5wdWJsaWNfYXBpLk91dGNvbWVBbmFseXRpY3NUYWdGaWx0ZXIiyQIKHU91dGNvbWVBbmFseXRpY3NHcm91cEJ5VmFsdWVzEgwKBG5hbWUYASABKAkSQQoEdGFncxgCIAMoCzIzLnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0dyb3VwQnlWYWx1ZXMuVGFnc0VudHJ5ElsKEnRhZ19kaXNwbGF5X3ZhbHVlcxgDIAMoCzI/LnB1YmxpY19hcGkuT3V0Y29tZUFuYWx5dGljc0dyb3VwQnlWYWx1ZXMuVGFnRGlzcGxheVZhbHVlc0VudHJ5EhQKDGRpc3BsYXlfbmFtZRgEIAEoCRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVUYWdEaXNwbGF5VmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJ1ChlPdXRjb21lQW5hbHl0aWNzVGFnRmlsdGVyEgsKA2tleRgBIAEoCRIOCgZ2YWx1ZXMYAiADKAkSOwoLZmlsdGVyX3R5cGUYAyABKA4yJi5wdWJsaWNfYXBpLkNvc3RBbmFseXRpY3NUYWdGaWx0ZXJUeXBlIoIBCg5PdXRjb21lTWV0cmljcxIZChFvYnNlcnZhdGlvbl9jb3VudBgBIAEoBBIeChZkaXN0aW5jdF9zdWJqZWN0X2NvdW50GAIgASgEEjUKB21ldHJpY3MYAyADKAsyJC5wdWJsaWNfYXBpLkFnZ3JlZ2F0ZWRPdXRjb21lTWV0cmljcyKVBAoZT3V0Y29tZVNlc3Npb25PYnNlcnZhdGlvbhIQCghldmVudF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3N1YmplY3QYAyABKAkSFAoMc3ViamVjdF90eXBlGAQgASgJEg4KBnNvdXJjZRgFIAEoCRIvCgtvYnNlcnZlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJdGFnc19qc29uGAcgASgJElAKDmVmZmVjdGl2ZV90YWdzGAkgAygLMjgucHVibGljX2FwaS5PdXRjb21lU2Vzc2lvbk9ic2VydmF0aW9uLkVmZmVjdGl2ZVRhZ3NFbnRyeRJqChxlZmZlY3RpdmVfdGFnX2Rpc3BsYXlfdmFsdWVzGAogAygLMkQucHVibGljX2FwaS5PdXRjb21lU2Vzc2lvbk9ic2VydmF0aW9uLkVmZmVjdGl2ZVRhZ0Rpc3BsYXlWYWx1ZXNFbnRyeRIVCg1tZXRhZGF0YV9qc29uGAsgASgJGjQKEkVmZmVjdGl2ZVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkAKHkVmZmVjdGl2ZVRhZ0Rpc3BsYXlWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQICBAJUgp2YWx1ZV9qc29uIskEChVPdXRjb21lU2Vzc2lvblN1bW1hcnkSNQoRZmlyc3Rfb2JzZXJ2ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEGxhc3Rfb2JzZXJ2ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKEW9ic2VydmF0aW9uX2NvdW50GAMgASgEEh4KFmRpc3RpbmN0X3N1YmplY3RfY291bnQYBCABKAQSFQoNb3V0Y29tZV9uYW1lcxgFIAMoCRJMCg5lZmZlY3RpdmVfdGFncxgGIAMoCzI0LnB1YmxpY19hcGkuT3V0Y29tZVNlc3Npb25TdW1tYXJ5LkVmZmVjdGl2ZVRhZ3NFbnRyeRIxCgdtZXRyaWNzGAcgASgLMiAucHVibGljX2FwaS5Db3N0QW5hbHl0aWNzTWV0cmljcxJmChxlZmZlY3RpdmVfdGFnX2Rpc3BsYXlfdmFsdWVzGAggAygLMkAucHVibGljX2FwaS5PdXRjb21lU2Vzc2lvblN1bW1hcnkuRWZmZWN0aXZlVGFnRGlzcGxheVZhbHVlc0VudHJ5EhAKCGFnZW50X2lkGAkgASgJGjQKEkVmZmVjdGl2ZVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkAKHkVmZmVjdGl2ZVRhZ0Rpc3BsYXlWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIm8KElBlckZpbGVDaGFuZ2VTdGF0cxIRCglmaWxlX3BhdGgYASABKAkSFwoPaW5zZXJ0aW9uX2NvdW50GAIgASgFEhYKDmRlbGV0aW9uX2NvdW50GAMgASgFEhUKDW9sZF9maWxlX3BhdGgYBCABKAkivQEKF1BlclR5cGVDaGFuZ2VkRmlsZVN0YXRzEhoKEmNoYW5nZWRfZmlsZV9jb3VudBgBIAEoBRJCChpwZXJfZmlsZV9jaGFuZ2Vfc3RhdHNfaGVhZBgCIAMoCzIeLnB1YmxpY19hcGkuUGVyRmlsZUNoYW5nZVN0YXRzEkIKGnBlcl9maWxlX2NoYW5nZV9zdGF0c190YWlsGAMgAygLMh4ucHVibGljX2FwaS5QZXJGaWxlQ2hhbmdlU3RhdHMiLwoZUGluUG9zZWlkb25TZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIhwKGlBpblBvc2VpZG9uU2Vzc2lvblJlc3BvbnNlIj0KE1Bvc2VpZG9uUGlubmVkRW50cnkSEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIqIBChBQcmVmZXJlbmNlU2FtcGxlEhMKC3JlcXVlc3RfaWRzGAEgAygJEjgKBnNjb3JlcxgCIAMoCzIoLnB1YmxpY19hcGkuUHJlZmVyZW5jZVNhbXBsZS5TY29yZXNFbnRyeRIQCghmZWVkYmFjaxgDIAEoCRotCgtTY29yZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIhoKGFByZWZlcmVuY2VTYW1wbGVSZXNwb25zZSJdChVQcm9jZXNzV2ViaG9va1JlcXVlc3QSEgoKd2ViaG9va19pZBgBIAEoCRIPCgdoZWFkZXJzGAIgASgJEgwKBGJvZHkYAyABKAkSEQoJc291cmNlX2lwGAQgASgJIikKFlByb2Nlc3NXZWJob29rUmVzcG9uc2USDwoHbWVzc2FnZRgBIAEoCSIjCgVSYW5nZRINCgVzdGFydBgBIAEoBRILCgNlbmQYAiABKAUiYwoRUmF3UmV0cmlldmFsUXVlcnkSEwoLZGVzY3JpcHRpb24YASABKAkSDAoEcGF0aBgCIAEoCRIXCg9jb250YWluc19zdHJpbmcYAyABKAkSEgoKbWF4X2NodW5rcxgEIAEoBSKGAgoRUmF3UmV0cmlldmVkQ2h1bmsSDAoEdGV4dBgBIAEoCRIMCgRwYXRoGAIgASgJEhIKCmNoYXJfc3RhcnQYAyABKAUSEAoIY2hhcl9lbmQYBCABKAUSEgoKbGluZV9zdGFydBgFIAEoBRIXCg9sZW5ndGhfaW5fbGluZXMYBiABKAUSEQoJYmxvYl9uYW1lGAcgASgJEg0KBXNjb3JlGAggASgCEg4KBm9yaWdpbhgJIAEoCRIWCg5tYXRjaGVkX3N0cmluZxgKIAEoCRIaChJleHRlcm5hbF9zb3VyY2VfaWQYCyABKAkSHAoUZXh0ZXJuYWxfc291cmNlX25hbWUYDCABKAkiXgocUmVhZEdpdGh1YlNldHVwU2NyaXB0UmVxdWVzdBIpCgpnaXRodWJfcmVmGAEgASgLMhUucHVibGljX2FwaS5HaXRodWJSZWYSEwoLc2NyaXB0X3BhdGgYAiABKAkiMAodUmVhZEdpdGh1YlNldHVwU2NyaXB0UmVzcG9uc2USDwoHY29udGVudBgBIAEoCSIaChhSZWFkTm90aWZpY2F0aW9uc1JlcXVlc3QiTAoZUmVhZE5vdGlmaWNhdGlvbnNSZXNwb25zZRIvCg1ub3RpZmljYXRpb25zGAEgAygLMhgucHVibGljX2FwaS5Ob3RpZmljYXRpb24i6wEKC1JlY2VuY3lJbmZvEjUKEXRhYl9zd2l0Y2hfZXZlbnRzGAEgAygLMhoucHVibGljX2FwaS5UYWJTd2l0Y2hFdmVudBI3ChJnaXRfZGlmZl9maWxlX2luZm8YAiADKAsyGy5wdWJsaWNfYXBpLkdpdERpZmZGaWxlSW5mbxIzCg5yZWNlbnRfY2hhbmdlcxgDIAMoCzIbLnB1YmxpY19hcGkuUmVwbGFjZW1lbnRUZXh0EjcKD3ZpZXdlZF9jb250ZW50cxgEIAMoCzIeLnB1YmxpY19hcGkuVmlld2VkQ29udGVudEV2ZW50InEKJFJlY29yZFBvc2VpZG9uQW5hbHl0aWNzRXZlbnRzUmVxdWVzdBIQCghhZ2VudF9pZBgBIAEoCRI3CgZldmVudHMYAiADKAsyJy5yZXF1ZXN0X2luc2lnaHQuUG9zZWlkb25BbmFseXRpY3NFdmVudCInCiVSZWNvcmRQb3NlaWRvbkFuYWx5dGljc0V2ZW50c1Jlc3BvbnNlIksKGlJlY29yZFJlcXVlc3RFdmVudHNSZXF1ZXN0Ei0KBmV2ZW50cxgBIAMoCzIdLnJlcXVlc3RfaW5zaWdodC5SZXF1ZXN0RXZlbnQiHQobUmVjb3JkUmVxdWVzdEV2ZW50c1Jlc3BvbnNlIksKGlJlY29yZFNlc3Npb25FdmVudHNSZXF1ZXN0Ei0KBmV2ZW50cxgBIAMoCzIdLnJlcXVlc3RfaW5zaWdodC5TZXNzaW9uRXZlbnQiHQobUmVjb3JkU2Vzc2lvbkV2ZW50c1Jlc3BvbnNlInYKI1JlZ2lzdGVySW5kZXhlZENvbW1pdEJsb2JzZXRSZXF1ZXN0Ei0KBmNvbW1pdBgBIAEoCzIdLnB1YmxpY19hcGkuSW5kZXhlZENvbW1pdEluZm8SIAoFYmxvYnMYAiABKAsyES5wdWJsaWNfYXBpLkJsb2JzIjcKJFJlZ2lzdGVySW5kZXhlZENvbW1pdEJsb2JzZXRSZXNwb25zZRIPCgdjcmVhdGVkGAEgASgIIugECgtSZW1vdGVBZ2VudBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSPgoPd29ya3NwYWNlX3NldHVwGAIgASgLMiUucHVibGljX2FwaS5SZW1vdGVBZ2VudFdvcmtzcGFjZVNldHVwEi0KBnN0YXR1cxgDIAEoDjIdLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRTdGF0dXMSLgoKc3RhcnRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPc2Vzc2lvbl9zdW1tYXJ5GAYgASgJEhYKDnR1cm5fc3VtbWFyaWVzGAcgAygJEjkKCnNzaF9jb25maWcYCCABKAsyIC5wdWJsaWNfYXBpLlJlbW90ZUFnZW50U1NIQ29uZmlnSACIAQESIgoVaXNfc2V0dXBfc2NyaXB0X2FnZW50GAkgASgISAGIAQESGAoLaGFzX3VwZGF0ZXMYCiABKAhIAogBARJAChB3b3Jrc3BhY2Vfc3RhdHVzGAsgASgOMiYucHVibGljX2FwaS5SZW1vdGVBZ2VudFdvcmtzcGFjZVN0YXR1cxIuCgpleHBpcmVzX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgV0aXRsZRgNIAEoCUgDiAEBQg0KC19zc2hfY29uZmlnQhgKFl9pc19zZXR1cF9zY3JpcHRfYWdlbnRCDgoMX2hhc191cGRhdGVzQggKBl90aXRsZSJLChtSZW1vdGVBZ2VudEFkZFNTSEtleVJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJEhMKC3B1YmxpY19rZXlzGAIgAygJIlQKHFJlbW90ZUFnZW50QWRkU1NIS2V5UmVzcG9uc2USNAoKc3NoX2NvbmZpZxgBIAEoCzIgLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRTU0hDb25maWcidQoWUmVtb3RlQWdlbnRDaGF0UmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSQgoPcmVxdWVzdF9kZXRhaWxzGAIgASgLMikucHVibGljX2FwaS5SZW1vdGVBZ2VudENoYXRSZXF1ZXN0RGV0YWlscyKdAgodUmVtb3RlQWdlbnRDaGF0UmVxdWVzdERldGFpbHMSMgoNcmVxdWVzdF9ub2RlcxgBIAMoCzIbLnB1YmxpY19hcGkuQ2hhdFJlcXVlc3ROb2RlEhwKD3VzZXJfZ3VpZGVsaW5lcxgCIAEoCUgAiAEBEiEKFHdvcmtzcGFjZV9ndWlkZWxpbmVzGAMgASgJSAGIAQESFQoIbW9kZWxfaWQYBSABKAlIAogBARIwCgttY3Bfc2VydmVycxgGIAMoCzIbLnB1YmxpY19hcGkuTWNwU2VydmVyQ29uZmlnQhIKEF91c2VyX2d1aWRlbGluZXNCFwoVX3dvcmtzcGFjZV9ndWlkZWxpbmVzQgsKCV9tb2RlbF9pZEoECAQQBSIZChdSZW1vdGVBZ2VudENoYXRSZXNwb25zZSLIAgoTUmVtb3RlQWdlbnRFeGNoYW5nZRImCghleGNoYW5nZRgBIAEoCzIULnB1YmxpY19hcGkuRXhjaGFuZ2USLgoNY2hhbmdlZF9maWxlcxgCIAMoCzIXLnB1YmxpY19hcGkuQ2hhbmdlZEZpbGUSEwoLc2VxdWVuY2VfaWQYAyABKA0SGQoMdHVybl9zdW1tYXJ5GAQgASgJSACIAQESLwoLZmluaXNoZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh0KFWNoYW5nZWRfZmlsZXNfc2tpcHBlZBgGIAMoCRIoChtjaGFuZ2VkX2ZpbGVzX3NraXBwZWRfY291bnQYByABKA1IAYgBAUIPCg1fdHVybl9zdW1tYXJ5Qh4KHF9jaGFuZ2VkX2ZpbGVzX3NraXBwZWRfY291bnQicAohUmVtb3RlQWdlbnRHZW5lcmF0ZVN1bW1hcnlSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIZChFzdGFydF9zZXF1ZW5jZV9pZBgCIAEoDRIXCg9lbmRfc2VxdWVuY2VfaWQYAyABKA0iYwoiUmVtb3RlQWdlbnRHZW5lcmF0ZVN1bW1hcnlSZXNwb25zZRI9ChFkaWZmX2Rlc2NyaXB0aW9ucxgBIAMoCzIiLnB1YmxpY19hcGkuRGlmZkV4cGxhbmF0aW9uU2VjdGlvbiKXBAoUUmVtb3RlQWdlbnRNY3BDb25maWcSFAoHY29tbWFuZBgBIAEoCUgAiAEBEgwKBGFyZ3MYAiADKAkSFwoKdGltZW91dF9tcxgDIAEoBUgBiAEBEjYKA2VudhgEIAMoCzIpLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRNY3BDb25maWcuRW52RW50cnkSJAoXdXNlX3NoZWxsX2ludGVycG9sYXRpb24YBSABKAhIAogBARIRCgRuYW1lGAYgASgJSAOIAQESFQoIZGlzYWJsZWQYByABKAhIBIgBARIRCgR0eXBlGAggASgJSAWIAQESEAoDdXJsGAkgASgJSAaIAQESLwoJYXV0aF90eXBlGAogASgOMhcucHVibGljX2FwaS5NY3BBdXRoVHlwZUgHiAEBEhUKCGljb25fdXJsGAsgASgJSAiIAQESGAoLZGVzY3JpcHRpb24YDCABKAlICYgBARoqCghFbnZFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9jb21tYW5kQg0KC190aW1lb3V0X21zQhoKGF91c2Vfc2hlbGxfaW50ZXJwb2xhdGlvbkIHCgVfbmFtZUILCglfZGlzYWJsZWRCBwoFX3R5cGVCBgoEX3VybEIMCgpfYXV0aF90eXBlQgsKCV9pY29uX3VybEIOCgxfZGVzY3JpcHRpb24iMgoXUmVtb3RlQWdlbnRQYXVzZVJlcXVlc3QSFwoPcmVtb3RlX2FnZW50X2lkGAEgASgJIhoKGFJlbW90ZUFnZW50UGF1c2VSZXNwb25zZSJ1ChxSZW1vdGVBZ2VudFJlc3VtZUhpbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRI8CgtoaW50X3JlYXNvbhgCIAEoDjInLnB1YmxpY19hcGkuUmVtb3RlQWdlbnRSZXN1bWVIaW50UmVhc29uIjcKHVJlbW90ZUFnZW50UmVzdW1lSGludFJlc3BvbnNlEhYKDnJlc3VtZV9zdGFydGVkGAEgASgIIjMKGFJlbW90ZUFnZW50UmVzdW1lUmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkiGwoZUmVtb3RlQWdlbnRSZXN1bWVSZXNwb25zZSJ2ChRSZW1vdGVBZ2VudFNTSENvbmZpZxITCgtwdWJsaWNfa2V5cxgBIAMoCRIQCghob3N0bmFtZRgCIAEoCRI3ChJzc2hfY29uZmlnX29wdGlvbnMYAyADKAsyGy5wdWJsaWNfYXBpLlNTSENvbmZpZ09wdGlvbiK8AQofUmVtb3RlQWdlbnRXb3Jrc3BhY2VMb2dzUmVxdWVzdBIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSIAoTbGFzdF9wcm9jZXNzZWRfc3RlcBgCIAEoDUgAiAEBEicKGmxhc3RfcHJvY2Vzc2VkX3NlcXVlbmNlX2lkGAMgASgNSAGIAQFCFgoUX2xhc3RfcHJvY2Vzc2VkX3N0ZXBCHQobX2xhc3RfcHJvY2Vzc2VkX3NlcXVlbmNlX2lkIoMBCiBSZW1vdGVBZ2VudFdvcmtzcGFjZUxvZ3NSZXNwb25zZRIXCg9yZW1vdGVfYWdlbnRfaWQYASABKAkSRgoWd29ya3NwYWNlX3NldHVwX3N0YXR1cxgDIAEoCzImLnB1YmxpY19hcGkuUmVtb3RlV29ya3NwYWNlU2V0dXBTdGF0dXMi4wEKGVJlbW90ZUFnZW50V29ya3NwYWNlU2V0dXASOAoRZ2l0aHViX2NvbW1pdF9yZWYYASABKAsyGy5wdWJsaWNfYXBpLkdpdGh1YkNvbW1pdFJlZkgAEkgKCmdpdF9jb25maWcYAiADKAsyNC5wdWJsaWNfYXBpLlJlbW90ZUFnZW50V29ya3NwYWNlU2V0dXAuR2l0Q29uZmlnRW50cnkaMAoOR2l0Q29uZmlnRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIQCg5zdGFydGluZ19maWxlcyI+ChBSZW1vdGVUb29sSWRMaXN0EioKCHRvb2xfaWRzGAEgAygOMhgucHVibGljX2FwaS5SZW1vdGVUb29sSWQiUQoaUmVtb3RlV29ya3NwYWNlU2V0dXBTdGF0dXMSMwoFc3RlcHMYASADKAsyJC5wdWJsaWNfYXBpLlJlbW90ZVdvcmtzcGFjZVNldHVwU3RlcCKoAQoYUmVtb3RlV29ya3NwYWNlU2V0dXBTdGVwEhgKEHN0ZXBfZGVzY3JpcHRpb24YASABKAkSDAoEbG9ncxgCIAEoCRI6CgZzdGF0dXMYAyABKA4yKi5wdWJsaWNfYXBpLlJlbW90ZVdvcmtzcGFjZVNldHVwU3RlcFN0YXR1cxITCgtzZXF1ZW5jZV9pZBgEIAEoDRITCgtzdGVwX251bWJlchgFIAEoDSJLChxSZW1vdmVNY3BUZW5hbnRDb25maWdSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgJIkEKHVJlbW92ZU1jcFRlbmFudENvbmZpZ1Jlc3BvbnNlEg8KB3JlbW92ZWQYASABKAgSDwoHdmVyc2lvbhgCIAEoCSJJChpSZW1vdmVNY3BVc2VyQ29uZmlnUmVxdWVzdBIRCgljb25maWdfaWQYASABKAkSGAoQZXhwZWN0ZWRfdmVyc2lvbhgCIAEoCSI/ChtSZW1vdmVNY3BVc2VyQ29uZmlnUmVzcG9uc2USDwoHcmVtb3ZlZBgBIAEoCBIPCgd2ZXJzaW9uGAIgASgJIj4KF1JlbmFtZVVzZXJTZWNyZXRSZXF1ZXN0EhEKCXNlY3JldF9pZBgBIAEoCRIQCghuZXdfbmFtZRgCIAEoCSJCChhSZW5hbWVVc2VyU2VjcmV0UmVzcG9uc2USJgoGc2VjcmV0GAEgASgLMhYucHVibGljX2FwaS5Vc2VyU2VjcmV0IoUCCg9SZXBsYWNlbWVudFRleHQSEQoJYmxvYl9uYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSEgoKY2hhcl9zdGFydBgDIAEoDRIQCghjaGFyX2VuZBgEIAEoDRIYChByZXBsYWNlbWVudF90ZXh0GAUgASgJEhcKD3ByZXNlbnRfaW5fYmxvYhgGIAEoCBIfChJleHBlY3RlZF9ibG9iX25hbWUYByABKAlIAIgBARIyCgl0aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCFQoTX2V4cGVjdGVkX2Jsb2JfbmFtZUIMCgpfdGltZXN0YW1wIq0BChJSZXBvcnRFcnJvclJlcXVlc3QSIAoTb3JpZ2luYWxfcmVxdWVzdF9pZBgBIAEoCUgAiAEBEhkKEXNhbml0aXplZF9tZXNzYWdlGAIgASgJEhMKC3N0YWNrX3RyYWNlGAMgASgJEi0KC2RpYWdub3N0aWNzGAQgAygLMhgucHVibGljX2FwaS5LZXlWYWx1ZVBhaXJCFgoUX29yaWdpbmFsX3JlcXVlc3RfaWQiFQoTUmVwb3J0RXJyb3JSZXNwb25zZSKlAQoaUmVwb3J0RmVhdHVyZVZlY3RvclJlcXVlc3QSUQoOZmVhdHVyZV92ZWN0b3IYASADKAsyOS5wdWJsaWNfYXBpLlJlcG9ydEZlYXR1cmVWZWN0b3JSZXF1ZXN0LkZlYXR1cmVWZWN0b3JFbnRyeRo0ChJGZWF0dXJlVmVjdG9yRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgJOgI4ASIdChtSZXBvcnRGZWF0dXJlVmVjdG9yUmVzcG9uc2UiTAobUmVwb3NpdG9yeUFsbG93bGlzdFNldHRpbmdzEhcKD3JlcG9zaXRvcnlfdXJscxgBIAMoCRIUCgxpc19kZW55X2xpc3QYAiABKAgieQoSUmVzb2x2ZUNvbXBsZXRpb25zEhwKC2NsaWVudF9uYW1lGAEgASgJQgIYAUgAiAEBEjUKC3Jlc29sdXRpb25zGAIgAygLMiAucHVibGljX2FwaS5Db21wbGV0aW9uUmVzb2x1dGlvbkIOCgxfY2xpZW50X25hbWUiFQoTUmVzb2x2ZUVkaXRSZXNwb25zZSIgCh5SZXZva2VDdXJyZW50VXNlclRva2Vuc1JlcXVlc3QiOQofUmV2b2tlQ3VycmVudFVzZXJUb2tlbnNSZXNwb25zZRIWCg50b2tlbnNfZGVsZXRlZBgBIAEoBSJEChdSZXZva2VUb29sQWNjZXNzUmVxdWVzdBIpCgd0b29sX2lkGAEgASgOMhgucHVibGljX2FwaS5SZW1vdGVUb29sSWQiTgoYUmV2b2tlVG9vbEFjY2Vzc1Jlc3BvbnNlEjIKBnN0YXR1cxgBIAEoDjIiLnB1YmxpY19hcGkuUmV2b2tlVG9vbEFjY2Vzc1N0YXR1cyJzCgRSdWxlEiIKBHR5cGUYASABKA4yFC5wdWJsaWNfYXBpLlJ1bGVUeXBlEgwKBHBhdGgYAiABKAkSDwoHY29udGVudBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBQg4KDF9kZXNjcmlwdGlvbiK2AwoUUnVuUmVtb3RlVG9vbFJlcXVlc3QSSQoaYXRsYXNzaWFuX3Rvb2xfZXh0cmFfaW5wdXQYBCABKAsyIy5wdWJsaWNfYXBpLkF0bGFzc2lhblRvb2xFeHRyYUlucHV0SAASQwoXbm90aW9uX3Rvb2xfZXh0cmFfaW5wdXQYBSABKAsyIC5wdWJsaWNfYXBpLk5vdGlvblRvb2xFeHRyYUlucHV0SAASQwoXbGluZWFyX3Rvb2xfZXh0cmFfaW5wdXQYBiABKAsyIC5wdWJsaWNfYXBpLkxpbmVhclRvb2xFeHRyYUlucHV0SAASQwoXZ2l0aHViX3Rvb2xfZXh0cmFfaW5wdXQYByABKAsyIC5wdWJsaWNfYXBpLkdpdEh1YlRvb2xFeHRyYUlucHV0SAASFQoJdG9vbF9uYW1lGAEgASgJQgIYARIXCg90b29sX2lucHV0X2pzb24YAiABKAkSLgoHdG9vbF9pZBgDIAEoDjIYLnB1YmxpY19hcGkuUmVtb3RlVG9vbElkSAGIAQFCEgoQZXh0cmFfdG9vbF9pbnB1dEIKCghfdG9vbF9pZEoECAgQCSLDAgoVUnVuUmVtb3RlVG9vbFJlc3BvbnNlEhMKC3Rvb2xfb3V0cHV0GAEgASgJEhsKE3Rvb2xfcmVzdWx0X21lc3NhZ2UYAiABKAkSFAoIaXNfZXJyb3IYAyABKAhCAhgBEjQKBnN0YXR1cxgEIAEoDjIkLnB1YmxpY19hcGkuUmVtb3RlVG9vbFJlc3BvbnNlU3RhdHVzEiMKFmNvbXByZXNzZWRfZnVsbF9vdXRwdXQYBSABKAlIAIgBARIdChBmdWxsX291dHB1dF9zaXplGAYgASgDSAGIAQESOAoNY29udGVudF9ub2RlcxgHIAMoCzIhLnB1YmxpY19hcGkuVG9vbFJlc3VsdENvbnRlbnROb2RlQhkKF19jb21wcmVzc2VkX2Z1bGxfb3V0cHV0QhMKEV9mdWxsX291dHB1dF9zaXplIi0KD1NTSENvbmZpZ09wdGlvbhILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiXQoPU2F2ZUNoYXRSZXF1ZXN0EhcKD2NvbnZlcnNhdGlvbl9pZBgBIAEoCRIiCgRjaGF0GAIgAygLMhQucHVibGljX2FwaS5FeGNoYW5nZRINCgV0aXRsZRgDIAEoCSItChBTYXZlQ2hhdFJlc3BvbnNlEgwKBHV1aWQYASABKAkSCwoDdXJsGAIgASgJIqgBCg5TY2hlZHVsZUVudGl0eRIKCgJpZBgBIAEoCRIsCgR0eXBlGAIgASgOMh4ucHVibGljX2FwaS5TY2hlZHVsZUVudGl0eVR5cGUSEQoJdGltZXN0YW1wGAMgASgJEjsKCWV4ZWN1dGlvbhgEIAEoCzIjLnB1YmxpY19hcGkuU2NoZWR1bGVFeGVjdXRpb25FbnRpdHlIAIgBAUIMCgpfZXhlY3V0aW9uIt4BChdTY2hlZHVsZUV4ZWN1dGlvbkVudGl0eRISCgp0cmlnZ2VyX2lkGAEgASgJEhcKD2Nyb25fZXhwcmVzc2lvbhgCIAEoCRIWCg5leGVjdXRpb25fdGltZRgDIAEoCRIVCgh0aW1lem9uZRgEIAEoCUgAiAEBEhcKCnN0YXJ0X2RhdGUYBSABKAlIAYgBARIVCghlbmRfZGF0ZRgGIAEoCUgCiAEBEg4KBnN0YXR1cxgHIAEoCUILCglfdGltZXpvbmVCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlIoYCChlTY2hlZHVsZVRyaWdnZXJDb25kaXRpb25zEhcKD2Nyb25fZXhwcmVzc2lvbhgBIAEoCRIVCgh0aW1lem9uZRgCIAEoCUgAiAEBEjMKCnN0YXJ0X2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLZGVzY3JpcHRpb24YBSABKAlIA4gBAUILCglfdGltZXpvbmVCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQg4KDF9kZXNjcmlwdGlvbiIeCgxTY3JpcHRQb2xpY3kSDgoGc2NyaXB0GAEgASgJImMKHFNlYXJjaEV4dGVybmFsU291cmNlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSNAoMc291cmNlX3R5cGVzGAIgAygOMh4ucHVibGljX2FwaS5FeHRlcm5hbFNvdXJjZVR5cGUiTAodU2VhcmNoRXh0ZXJuYWxTb3VyY2VzUmVzcG9uc2USKwoHc291cmNlcxgBIAMoCzIaLnB1YmxpY19hcGkuRXh0ZXJuYWxTb3VyY2UiRAoMU2Vzc2lvblVzYWdlEjQKC3RvdGFsX3VzYWdlGAEgASgLMh8ucHVibGljX2FwaS5TZXNzaW9uVXNhZ2VNZXRyaWNzIrgBChNTZXNzaW9uVXNhZ2VNZXRyaWNzEiMKG2VzdGltYXRlZF9jdXN0b21lcl9jb3N0X3VzZBgBIAEoCRIYChBjcmVkaXRzX2NvbnN1bWVkGAIgASgJEhQKDGlucHV0X3Rva2VucxgDIAEoBBIVCg1vdXRwdXRfdG9rZW5zGAQgASgEEhkKEWNhY2hlX3JlYWRfdG9rZW5zGAUgASgEEhoKEmNhY2hlX3dyaXRlX3Rva2VucxgGIAEoBCIgChBTaW1wbGVQZXJtaXNzaW9uEgwKBHR5cGUYASABKAkiPAoFU2tpbGwSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIQCghsb2NhdGlvbhgDIAEoCSLgAgoUU21hcnRQYXN0ZVJlc29sdXRpb24SEgoKcmVxdWVzdF9pZBgBIAEoCRIaChJpc19hY2NlcHRlZF9jaHVua3MYAiADKAgSFQoNaXNfYWNjZXB0X2FsbBgDIAEoCBIVCg1pc19yZWplY3RfYWxsGAQgASgIEiAKGGluaXRpYWxfcmVxdWVzdF90aW1lX3NlYxgFIAEoAxIhChlpbml0aWFsX3JlcXVlc3RfdGltZV9uc2VjGAYgASgFEh4KFnN0cmVhbV9maW5pc2hfdGltZV9zZWMYByABKAMSHwoXc3RyZWFtX2ZpbmlzaF90aW1lX25zZWMYCCABKAUSFgoOYXBwbHlfdGltZV9zZWMYCSABKAMSFwoPYXBwbHlfdGltZV9uc2VjGAogASgFEhgKEHJlc29sdmVfdGltZV9zZWMYCyABKAMSGQoRcmVzb2x2ZV90aW1lX25zZWMYDCABKAUiHgocU21hcnRQYXN0ZVJlc29sdXRpb25SZXNwb25zZSI6ChdTeXN0ZW1Qcm9tcHRSZXBsYWNlbWVudBIOCgZzZWFyY2gYASABKAkSDwoHcmVwbGFjZRgCIAEoCSI2Cg5UYWJTd2l0Y2hFdmVudBIMCgRwYXRoGAEgASgJEhYKDmZpbGVfYmxvYl9uYW1lGAIgASgJIksKCVRhZ0ZpbHRlchILCgNrZXkYASABKAkSDgoGdmFsdWVzGAIgAygJEhEKCW1hdGNoX2FueRgDIAEoCBIOCgZpbnZlcnQYBCABKAgi5QIKDFRlbmFudFNlY3JldBIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEjAKBHRhZ3MYAyADKAsyIi5wdWJsaWNfYXBpLlRlbmFudFNlY3JldC5UYWdzRW50cnkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLZGVzY3JpcHRpb24YBiABKAkSDwoHdmVyc2lvbhgHIAEoCRIYChB2YWx1ZV9zaXplX2J5dGVzGAggASgFEhIKCmNyZWF0ZWRfYnkYCSABKAkSEQoJc2VjcmV0X2lkGAogASgJEhIKCm9sYWNfcmVhZHkYCyABKAgaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiRgoMVGVybWluYWxJbmZvEhMKC3Rlcm1pbmFsX2lkGAEgASgNEiEKGWN1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkYAiABKAkiRgoZVGVzdFRvb2xDb25uZWN0aW9uUmVxdWVzdBIpCgd0b29sX2lkGAEgASgOMhgucHVibGljX2FwaS5SZW1vdGVUb29sSWQiUgoaVGVzdFRvb2xDb25uZWN0aW9uUmVzcG9uc2USNAoGc3RhdHVzGAEgASgOMiQucHVibGljX2FwaS5UZXN0VG9vbENvbm5lY3Rpb25TdGF0dXMiTgoOVG9vbERlZmluaXRpb24SDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIZChFpbnB1dF9zY2hlbWFfanNvbhgDIAEoCSKHAgoSVG9vbFBlcm1pc3Npb25SdWxlEjkKEXNpbXBsZV9wZXJtaXNzaW9uGAIgASgLMhwucHVibGljX2FwaS5TaW1wbGVQZXJtaXNzaW9uSAASMwoOd2ViaG9va19wb2xpY3kYAyABKAsyGS5wdWJsaWNfYXBpLldlYmhvb2tQb2xpY3lIABIxCg1zY3JpcHRfcG9saWN5GAQgASgLMhgucHVibGljX2FwaS5TY3JpcHRQb2xpY3lIABIRCgl0b29sX25hbWUYASABKAkSEgoKZXZlbnRfdHlwZRgFIAEoCRIZChFzaGVsbF9pbnB1dF9yZWdleBgGIAEoCUIMCgpwZXJtaXNzaW9uIkgKF1Rvb2xQZXJtaXNzaW9uc1NldHRpbmdzEi0KBXJ1bGVzGAEgAygLMh4ucHVibGljX2FwaS5Ub29sUGVybWlzc2lvblJ1bGUixAEKFVRvb2xSZXN1bHRDb250ZW50Tm9kZRIzCgR0eXBlGAEgASgOMiUucHVibGljX2FwaS5Ub29sUmVzdWx0Q29udGVudE5vZGVUeXBlEhkKDHRleHRfY29udGVudBgCIAEoCUgAiAEBEjgKDWltYWdlX2NvbnRlbnQYAyABKAsyHC5wdWJsaWNfYXBpLkNoYXRSZXF1ZXN0SW1hZ2VIAYgBAUIPCg1fdGV4dF9jb250ZW50QhAKDl9pbWFnZV9jb250ZW50It8CCgdUcmlnZ2VyEhIKCnRyaWdnZXJfaWQYASABKAkSNwoNY29uZmlndXJhdGlvbhgCIAEoCzIgLnB1YmxpY19hcGkuVHJpZ2dlckNvbmZpZ3VyYXRpb24SLgoKY3JlYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPZXhlY3V0aW9uX2NvdW50GAUgASgNEjoKEWxhc3RfZXhlY3V0aW9uX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEiIKFWxhc3RfZXhlY3V0aW9uX3N0YXR1cxgHIAEoCUgBiAEBQhQKEl9sYXN0X2V4ZWN1dGlvbl9hdEIYChZfbGFzdF9leGVjdXRpb25fc3RhdHVzIpgCChFUcmlnZ2VyQ29uZGl0aW9ucxIuCgR0eXBlGAEgASgOMiAucHVibGljX2FwaS5UcmlnZ2VyQ29uZGl0aW9uVHlwZRI4CgZnaXRodWIYAiABKAsyIy5wdWJsaWNfYXBpLkdpdEh1YlRyaWdnZXJDb25kaXRpb25zSACIAQESOAoGbGluZWFyGAMgASgLMiMucHVibGljX2FwaS5MaW5lYXJUcmlnZ2VyQ29uZGl0aW9uc0gBiAEBEjwKCHNjaGVkdWxlGAQgASgLMiUucHVibGljX2FwaS5TY2hlZHVsZVRyaWdnZXJDb25kaXRpb25zSAKIAQFCCQoHX2dpdGh1YkIJCgdfbGluZWFyQgsKCV9zY2hlZHVsZSKHAwoUVHJpZ2dlckNvbmZpZ3VyYXRpb24SDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEi0KDGV2ZW50X3NvdXJjZRgDIAEoDjIXLnB1YmxpY19hcGkuRXZlbnRTb3VyY2USMQoKY29uZGl0aW9ucxgEIAEoCzIdLnB1YmxpY19hcGkuVHJpZ2dlckNvbmRpdGlvbnMSLQoMYWdlbnRfY29uZmlnGAUgASgLMhcucHVibGljX2FwaS5BZ2VudENvbmZpZxIUCgdlbmFibGVkGAYgASgISAGIAQESGAoLdGVtcGxhdGVfaWQYByABKAlIAogBARIaCg10ZW1wbGF0ZV9uYW1lGAggASgJSAOIAQESGgoNdGVtcGxhdGVfanNvbhgJIAEoCUgEiAEBQg4KDF9kZXNjcmlwdGlvbkIKCghfZW5hYmxlZEIOCgxfdGVtcGxhdGVfaWRCEAoOX3RlbXBsYXRlX25hbWVCEAoOX3RlbXBsYXRlX2pzb24i1AIKEFRyaWdnZXJFeGVjdXRpb24SFAoMZXhlY3V0aW9uX2lkGAEgASgJEhIKCnRyaWdnZXJfaWQYAiABKAkSEAoIZXZlbnRfaWQYAyABKAkSHAoPcmVtb3RlX2FnZW50X2lkGAQgASgJSACIAQESLgoKc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMY29tcGxldGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhoKDWVycm9yX21lc3NhZ2UYByABKAlIAogBARIaCg1ldmVudF9wYXlsb2FkGAggASgJSAOIAQFCEgoQX3JlbW90ZV9hZ2VudF9pZEIPCg1fY29tcGxldGVkX2F0QhAKDl9lcnJvcl9tZXNzYWdlQhAKDl9ldmVudF9wYXlsb2FkIjEKG1VucGluUG9zZWlkb25TZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIh4KHFVucGluUG9zZWlkb25TZXNzaW9uUmVzcG9uc2UijgEKGVVwZGF0ZUNvbnZlcnNhdGlvblJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEhcKD2NvbnZlcnNhdGlvbl9pZBgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBEhYKCWlzX3Bpbm5lZBgEIAEoCEgBiAEBQggKBl90aXRsZUIMCgpfaXNfcGlubmVkIlAKGlVwZGF0ZUNvbnZlcnNhdGlvblJlc3BvbnNlEjIKDGNvbnZlcnNhdGlvbhgBIAEoCzIcLnB1YmxpY19hcGkuQ29udmVyc2F0aW9uSW5mbyJECiNVcGRhdGVQb3NlaWRvblRlbmFudFNldHRpbmdzUmVxdWVzdBIdChVkZWZhdWx0X2Jhc2VfaW1hZ2VfaWQYASABKAkiJgokVXBkYXRlUG9zZWlkb25UZW5hbnRTZXR0aW5nc1Jlc3BvbnNlIkMKIVVwZGF0ZVBvc2VpZG9uVXNlclNldHRpbmdzUmVxdWVzdBIeChZkZWZhdWx0X2Vudmlyb25tZW50X2lkGAEgASgJIiQKIlVwZGF0ZVBvc2VpZG9uVXNlclNldHRpbmdzUmVzcG9uc2UiWQoYVXBkYXRlUmVtb3RlQWdlbnRSZXF1ZXN0EhcKD3JlbW90ZV9hZ2VudF9pZBgBIAEoCRIWCgluZXdfdGl0bGUYAiABKAlIAIgBAUIMCgpfbmV3X3RpdGxlIkMKGVVwZGF0ZVJlbW90ZUFnZW50UmVzcG9uc2USJgoFYWdlbnQYASABKAsyFy5wdWJsaWNfYXBpLlJlbW90ZUFnZW50ImMKFFVwZGF0ZVRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYASABKAkSNwoNY29uZmlndXJhdGlvbhgCIAEoCzIgLnB1YmxpY19hcGkuVHJpZ2dlckNvbmZpZ3VyYXRpb24iPQoVVXBkYXRlVHJpZ2dlclJlc3BvbnNlEiQKB3RyaWdnZXIYASABKAsyEy5wdWJsaWNfYXBpLlRyaWdnZXIiPAoWVXBkYXRlV29ya3NwYWNlUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSDAoEbmFtZRgCIAEoCSJHChdVcGRhdGVXb3Jrc3BhY2VSZXNwb25zZRIsCgl3b3Jrc3BhY2UYASABKAsyGS5wdWJsaWNfYXBpLldvcmtzcGFjZUluZm8iUQoKVXBsb2FkQmxvYhIPCgdjb250ZW50GAEgASgJEgwKBHBhdGgYAiABKAkSFgoJYmxvYl9uYW1lGAMgASgJSACIAQFCDAoKX2Jsb2JfbmFtZSJfChxVcHNlcnRNY3BUZW5hbnRDb25maWdSZXF1ZXN0EiUKBmNvbmZpZxgBIAEoCzIVLnB1YmxpY19hcGkuTWNwQ29uZmlnEhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAkiQQodVXBzZXJ0TWNwVGVuYW50Q29uZmlnUmVzcG9uc2USDwoHY3JlYXRlZBgBIAEoCBIPCgd2ZXJzaW9uGAIgASgJIl0KGlVwc2VydE1jcFVzZXJDb25maWdSZXF1ZXN0EiUKBmNvbmZpZxgBIAEoCzIVLnB1YmxpY19hcGkuTWNwQ29uZmlnEhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAkiPwobVXBzZXJ0TWNwVXNlckNvbmZpZ1Jlc3BvbnNlEg8KB2NyZWF0ZWQYASABKAgSDwoHdmVyc2lvbhgCIAEoCSLxAQoZVXBzZXJ0VGVuYW50U2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEj0KBHRhZ3MYAyADKAsyLy5wdWJsaWNfYXBpLlVwc2VydFRlbmFudFNlY3JldFJlcXVlc3QuVGFnc0VudHJ5EhMKC2Rlc2NyaXB0aW9uGAQgASgJEhgKEGV4cGVjdGVkX3ZlcnNpb24YBSABKAkSHAoUbWF4X3ZhbHVlX3NpemVfYnl0ZXMYBiABKAUaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiRgoaVXBzZXJ0VGVuYW50U2VjcmV0UmVzcG9uc2USKAoGc2VjcmV0GAEgASgLMhgucHVibGljX2FwaS5UZW5hbnRTZWNyZXQiogQKF1Vwc2VydFVzZXJTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkSOwoEdGFncxgDIAMoCzItLnB1YmxpY19hcGkuVXBzZXJ0VXNlclNlY3JldFJlcXVlc3QuVGFnc0VudHJ5EhMKC2Rlc2NyaXB0aW9uGAQgASgJEhgKEGV4cGVjdGVkX3ZlcnNpb24YBSABKAkSHAoUbWF4X3ZhbHVlX3NpemVfYnl0ZXMYBiABKAUSJgoFc2NvcGUYByABKA4yFy5wdWJsaWNfYXBpLlNlY3JldFNjb3BlEhUKCHNwYWNlX2lkGAggASgJSACIAQESOwoNYXBwbGljYWJpbGl0eRgJIAEoDjIfLnB1YmxpY19hcGkuU2VjcmV0QXBwbGljYWJpbGl0eUgBiAEBEhEKCXNwYWNlX2lkcxgKIAMoCRISCgphbGxfc3BhY2VzGAsgASgIEhUKDXVwZGF0ZV9zcGFjZXMYDCABKAgSEQoJc2VjcmV0X2lkGA0gASgJEhMKC3VwZGF0ZV90YWdzGA4gASgIEhoKEnVwZGF0ZV9kZXNjcmlwdGlvbhgPIAEoCBIWCg5wcmVzZXJ2ZV92YWx1ZRgQIAEoCBorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfc3BhY2VfaWRCEAoOX2FwcGxpY2FiaWxpdHkiQgoYVXBzZXJ0VXNlclNlY3JldFJlc3BvbnNlEiYKBnNlY3JldBgBIAEoCzIWLnB1YmxpY19hcGkuVXNlclNlY3JldCL4AwoKVXNlclNlY3JldBIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEi4KBHRhZ3MYAyADKAsyIC5wdWJsaWNfYXBpLlVzZXJTZWNyZXQuVGFnc0VudHJ5Ei4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2Rlc2NyaXB0aW9uGAYgASgJEg8KB3ZlcnNpb24YByABKAkSGAoQdmFsdWVfc2l6ZV9ieXRlcxgIIAEoBRImCgVzY29wZRgJIAEoDjIXLnB1YmxpY19hcGkuU2VjcmV0U2NvcGUSFQoIc3BhY2VfaWQYCiABKAlIAIgBARIRCglzZWNyZXRfaWQYCyABKAkSEgoKb2xhY19yZWFkeRgMIAEoCBI2Cg1hcHBsaWNhYmlsaXR5GA0gASgOMh8ucHVibGljX2FwaS5TZWNyZXRBcHBsaWNhYmlsaXR5EhEKCXNwYWNlX2lkcxgOIAMoCRISCgphbGxfc3BhY2VzGA8gASgIGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgsKCV9zcGFjZV9pZCLOAQoSVmlld2VkQ29udGVudEV2ZW50EgwKBHBhdGgYASABKAkSFgoOZmlsZV9ibG9iX25hbWUYAiABKAkSFwoPdmlzaWJsZV9jb250ZW50GAMgASgJEhIKCmxpbmVfc3RhcnQYBCABKA0SEAoIbGluZV9lbmQYBSABKA0SEgoKY2hhcl9zdGFydBgGIAEoDRIQCghjaGFyX2VuZBgHIAEoDRItCgl0aW1lc3RhbXAYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIiQKDVdlYmhvb2tQb2xpY3kSEwoLd2ViaG9va191cmwYASABKAkiTQoSV29ya3NwYWNlRmlsZUNodW5rEhIKCmNoYXJfc3RhcnQYASABKAUSEAoIY2hhcl9lbmQYAiABKAUSEQoJYmxvYl9uYW1lGAMgASgJIkMKE1dvcmtzcGFjZUZvbGRlckluZm8SFwoPcmVwb3NpdG9yeV9yb290GAEgASgJEhMKC2ZvbGRlcl9yb290GAIgASgJIsEBCg1Xb3Jrc3BhY2VJbmZvEhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEjMKCmNyZWF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESMwoKdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUINCgtfY3JlYXRlZF9hdEINCgtfdXBkYXRlZF9hdEoECAUQBiKKAgoOV29ya3NwYWNlU2V0dXASKwoKZ2l0aHViX3JlZhgBIAEoCzIVLnB1YmxpY19hcGkuR2l0aHViUmVmSAASEgoFcGF0Y2gYAiABKAlIAYgBARIZCgxzZXR1cF9zY3JpcHQYAyABKAlIAogBARI9CgpnaXRfY29uZmlnGAQgAygLMikucHVibGljX2FwaS5Xb3Jrc3BhY2VTZXR1cC5HaXRDb25maWdFbnRyeRowCg5HaXRDb25maWdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQhAKDnN0YXJ0aW5nX2ZpbGVzQggKBl9wYXRjaEIPCg1fc2V0dXBfc2NyaXB0KlwKFEFnZW50Q2FwYWJpbGl0eVNjb3BlEiEKHUFHRU5UX0NBUEFCSUxJVFlfU0NPUEVfR0xPQkFMEAASIQodQUdFTlRfQ0FQQUJJTElUWV9TQ09QRV9URU5BTlQQASqiAQoWQWdlbnRIaXN0b3J5VXBkYXRlVHlwZRIpCiVBR0VOVF9ISVNUT1JZX1VQREFURV9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWQUdFTlRfSElTVE9SWV9FWENIQU5HRRABEiEKHUFHRU5UX0hJU1RPUllfRVhDSEFOR0VfVVBEQVRFEAISHgoaQUdFTlRfSElTVE9SWV9BR0VOVF9TVEFUVVMQAyqwAQoTQWdlbnRMaXN0VXBkYXRlVHlwZRImCiJBR0VOVF9MSVNUX1VQREFURV9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWQUdFTlRfTElTVF9BR0VOVF9BRERFRBABEhwKGEFHRU5UX0xJU1RfQUdFTlRfVVBEQVRFRBACEhwKGEFHRU5UX0xJU1RfQUdFTlRfREVMRVRFRBADEhkKFUFHRU5UX0xJU1RfQUxMX0FHRU5UUxAEKnEKEUFnZW50UGVyc29uYVNjb3BlEh4KGkFHRU5UX1BFUlNPTkFfU0NPUEVfR0xPQkFMEAASHgoaQUdFTlRfUEVSU09OQV9TQ09QRV9URU5BTlQQARIcChhBR0VOVF9QRVJTT05BX1NDT1BFX1VTRVIQAiqWAQoYQWdlbnRXb3Jrc3BhY2VVcGRhdGVUeXBlEisKJ0FHRU5UX1dPUktTUEFDRV9VUERBVEVfVFlQRV9VTlNQRUNJRklFRBAAEiQKIEFHRU5UX1dPUktTUEFDRV9VUERBVEVfSU5URVJSVVBUEAESJwojQUdFTlRfV09SS1NQQUNFX1VQREFURV9DSEFUX1JFUVVFU1QQAipvChBBbmFseXRpY3NUYWdUeXBlEh4KGkFOQUxZVElDU19UQUdfVFlQRV9VTktOT1dOEAASGwoXQU5BTFlUSUNTX1RBR19UWVBFX0NPU1QQARIeChpBTkFMWVRJQ1NfVEFHX1RZUEVfT1VUQ09NRRACKr0BChNDaGF0UmVxdWVzdE5vZGVUeXBlEggKBFRFWFQQABIPCgtUT09MX1JFU1VMVBABEgkKBUlNQUdFEAISDAoISU1BR0VfSUQQAxINCglJREVfU1RBVEUQBBIPCgtFRElUX0VWRU5UUxAFEhIKDkNIRUNLUE9JTlRfUkVGEAYSEgoOQ0hBVF9OT0RFX0ZJTEUQCBIVChFDSEFUX05PREVfRklMRV9JRBAJEhMKD0hJU1RPUllfU1VNTUFSWRAKKusBChJDaGF0UmVzdWx0Tm9kZVR5cGUSEAoMUkFXX1JFU1BPTlNFEAASFwoTU1VHR0VTVEVEX1FVRVNUSU9OUxABEhYKEk1BSU5fVEVYVF9GSU5JU0hFRBACEhkKFVdPUktTUEFDRV9GSUxFX0NIVU5LUxADEhQKEFJFTEVWQU5UX1NPVVJDRVMQBBIMCghUT09MX1VTRRAFEhIKDlRPT0xfVVNFX1NUQVJUEAcSDAoIVEhJTktJTkcQCBIUChBCSUxMSU5HX01FVEFEQVRBEAkSDwoLVE9LRU5fVVNBR0UQCiIECAYQBiIECAsQCyquAQoOQ2hhdFN0b3BSZWFzb24SFgoSUkVBU09OX1VOU1BFQ0lGSUVEEAASDAoIRU5EX1RVUk4QARIOCgpNQVhfVE9LRU5TEAISFgoSVE9PTF9VU0VfUkVRVUVTVEVEEAMSCgoGU0FGRVRZEAQSDgoKUkVDSVRBVElPThAFEhsKF01BTEZPUk1FRF9GVU5DVElPTl9DQUxMEAYSFQoRU1RPUF9SRUFTT05fRVJST1IQByrKAQoUQ2xvdWRBZ2VudENhcGFiaWxpdHkSIgoeQ0xPVURfQUdFTlRfQ0FQQUJJTElUWV9VTktOT1dOEAASJQohQ0xPVURfQUdFTlRfQ0FQQUJJTElUWV9XRUJfQUNDRVNTEAESHgoaQ0xPVURfQUdFTlRfQ0FQQUJJTElUWV9NQ1AQAhIkCiBDTE9VRF9BR0VOVF9DQVBBQklMSVRZX0NMSV9UT09MUxAEEiEKHUNMT1VEX0FHRU5UX0NBUEFCSUxJVFlfR0lUSFVCEAUqfgoSQ2xvdWRBZ2VudExvb3BUeXBlEiUKIUNMT1VEX0FHRU5UX0xPT1BfVFlQRV9VTlNQRUNJRklFRBAAEh8KG0NMT1VEX0FHRU5UX0xPT1BfVFlQRV9TQUxTQRABEiAKHENMT1VEX0FHRU5UX0xPT1BfVFlQRV9BVUdHSUUQAiqCAgoQQ2xvdWRBZ2VudFN0YXR1cxIeChpDTE9VRF9BR0VOVF9TVEFUVVNfVU5LTk9XThAAEhsKF0NMT1VEX0FHRU5UX1NUQVRVU19JRExFEAESIQodQ0xPVURfQUdFTlRfU1RBVFVTX1BST0NFU1NJTkcQAhIhCh1DTE9VRF9BR0VOVF9TVEFUVVNfVEVSTUlOQVRFRBADEiAKHENMT1VEX0FHRU5UX1NUQVRVU19DT01QTEVURUQQBBIfChtDTE9VRF9BR0VOVF9TVEFUVVNfU1RBUlRJTkcQBRIoCiRDTE9VRF9BR0VOVF9TVEFUVVNfV0FJVElOR19GT1JfSU5QVVQQBirnAQonQ2xvdWREYWVtb25Qb29sV29ya3NwYWNlSXNvbGF0aW9uUG9saWN5EjwKOENMT1VEX0RBRU1PTl9QT09MX1dPUktTUEFDRV9JU09MQVRJT05fUE9MSUNZX1VOU1BFQ0lGSUVEEAASPwo7Q0xPVURfREFFTU9OX1BPT0xfV09SS1NQQUNFX0lTT0xBVElPTl9QT0xJQ1lfRk9SQ0VfSVNPTEFURUQQARI9CjlDTE9VRF9EQUVNT05fUE9PTF9XT1JLU1BBQ0VfSVNPTEFUSU9OX1BPTElDWV9GT1JDRV9TSEFSRUQQAiq5AQoUQ2xvdWRFbnZpcm9ubWVudEtpbmQSJgoiQ0xPVURfRU5WSVJPTk1FTlRfS0lORF9VTlNQRUNJRklFRBAAEiUKIUNMT1VEX0VOVklST05NRU5UX0tJTkRfQkFTRV9JTUFHRRABEiYKIkNMT1VEX0VOVklST05NRU5UX0tJTkRfREFFTU9OX1BPT0wQAhIqCiZDTE9VRF9FTlZJUk9OTUVOVF9LSU5EX1VOUE9PTEVEX0RBRU1PThADKpYFChtDbG91ZEVudmlyb25tZW50TGlzdE9yZGVyQnkSLworQ0xPVURfRU5WSVJPTk1FTlRfTElTVF9PUkRFUl9CWV9VTlNQRUNJRklFRBAAEiwKKENMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfTkFNRV9BU0MQARItCilDTE9VRF9FTlZJUk9OTUVOVF9MSVNUX09SREVSX0JZX05BTUVfREVTQxACEjIKLkNMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfQ1JFQVRFRF9CWV9BU0MQAxIzCi9DTE9VRF9FTlZJUk9OTUVOVF9MSVNUX09SREVSX0JZX0NSRUFURURfQllfREVTQxAEEiwKKENMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfU0laRV9BU0MQBRItCilDTE9VRF9FTlZJUk9OTUVOVF9MSVNUX09SREVSX0JZX1NJWkVfREVTQxAGEi0KKUNMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfUkVQT1NfQVNDEAcSLgoqQ0xPVURfRU5WSVJPTk1FTlRfTElTVF9PUkRFUl9CWV9SRVBPU19ERVNDEAgSLworQ0xPVURfRU5WSVJPTk1FTlRfTElTVF9PUkRFUl9CWV9VUERBVEVEX0FTQxAJEjAKLENMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfVVBEQVRFRF9ERVNDEAoSLworQ0xPVURfRU5WSVJPTk1FTlRfTElTVF9PUkRFUl9CWV9DUkVBVEVEX0FTQxALEjAKLENMT1VEX0VOVklST05NRU5UX0xJU1RfT1JERVJfQllfQ1JFQVRFRF9ERVNDEAwqnQEKGUNsb3VkRW52aXJvbm1lbnRMaXN0U2NvcGUSLAooQ0xPVURfRU5WSVJPTk1FTlRfTElTVF9TQ09QRV9VTlNQRUNJRklFRBAAEikKJUNMT1VEX0VOVklST05NRU5UX0xJU1RfU0NPUEVfUEVSU09OQUwQARInCiNDTE9VRF9FTlZJUk9OTUVOVF9MSVNUX1NDT1BFX1NIQVJFRBACKvsDCiJDbG91ZEVudmlyb25tZW50T3BlcmF0aW9uRXJyb3JDb2RlEjYKMkNMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASNwozQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX0VSUk9SX0NPREVfQlVJTERfRkFJTEVEEAESQAo8Q0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX0VSUk9SX0NPREVfRVhFQ1VUSU9OX0lOVEVSUlVQVEVEEAISMwovQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX0VSUk9SX0NPREVfSU5URVJOQUwQAxI7CjdDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fRVJST1JfQ09ERV9WRVJTSU9OX0NPTkZMSUNUEAQSOQo1Q0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX0VSUk9SX0NPREVfUkVGUkVTSF9GQUlMRUQQBRI7CjdDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fRVJST1JfQ09ERV9SRUNPTkNJTEVfRkFJTEVEEAYSOAo0Q0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX0VSUk9SX0NPREVfVVBEQVRFX0ZBSUxFRBAHKvcCCh5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uUGhhc2USMQotQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1BIQVNFX1VOU1BFQ0lGSUVEEAASLAooQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1BIQVNFX1FVRVVFRBABEi8KK0NMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9QSEFTRV9QUkVQQVJJTkcQAhIuCipDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fUEhBU0VfQlVJTERJTkcQAxIvCitDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fUEhBU0VfUFJPTU9USU5HEAQSLgoqQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1BIQVNFX1VQREFUSU5HEAYiBAgFEAUqLENMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9QSEFTRV9SRUZSRVNISU5HKvgCCh5DbG91ZEVudmlyb25tZW50T3BlcmF0aW9uU3RhdGUSMQotQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1NUQVRFX1VOU1BFQ0lGSUVEEAASLQopQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1NUQVRFX1BFTkRJTkcQARItCilDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fU1RBVEVfUlVOTklORxACEjYKMkNMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9TVEFURV9DQU5DRUxfUkVRVUVTVEVEEAMSLworQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1NUQVRFX1NVQ0NFRURFRBAEEiwKKENMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9TVEFURV9GQUlMRUQQBRIuCipDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fU1RBVEVfQ0FOQ0VMRUQQBirXAgodQ2xvdWRFbnZpcm9ubWVudE9wZXJhdGlvblR5cGUSMAosQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABI3CjNDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fVFlQRV9CQVNFX0lNQUdFX1JFQlVJTEQQARI1CjFDTE9VRF9FTlZJUk9OTUVOVF9PUEVSQVRJT05fVFlQRV9CQVNFX0lNQUdFX0JVSUxEEAISLAooQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1RZUEVfUkVGUkVTSBADEjkKNUNMT1VEX0VOVklST05NRU5UX09QRVJBVElPTl9UWVBFX1JFUE9TSVRPUllfUkVDT05DSUxFEAQSKwonQ0xPVURfRU5WSVJPTk1FTlRfT1BFUkFUSU9OX1RZUEVfVVBEQVRFEAUqgwIKFkNsb3VkRW52aXJvbm1lbnRTdGF0dXMSKAokQ0xPVURfRU5WSVJPTk1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQ0xPVURfRU5WSVJPTk1FTlRfU1RBVFVTX0FDVElWRRABEiUKIUNMT1VEX0VOVklST05NRU5UX1NUQVRVU19CVUlMRElORxACEiMKH0NMT1VEX0VOVklST05NRU5UX1NUQVRVU19GQUlMRUQQAxInCiNDTE9VRF9FTlZJUk9OTUVOVF9TVEFUVVNfREVQUkVDQVRFRBAEEiUKIUNMT1VEX0VOVklST05NRU5UX1NUQVRVU19ERUxFVElORxAFKugJChxDbG91ZEV4cGVydEJ1aWx0aW5DYXBhYmlsaXR5EisKJ0NMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfVU5LTk9XThAAEi4KKkNMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfV0VCX0FDQ0VTUxABEi0KKUNMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfQ0xJX1RPT0xTEAQSKgomQ0xPVURfRVhQRVJUX0JVSUxUSU5fQ0FQQUJJTElUWV9HSVRIVUIQBxIqCiZDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0xJTkVBUhAIEigKJENMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfRUNITxAJEikKJUNMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfU0xBQ0sQCxIuCipDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0dJVEhVQl9BUFAQDBIuCipDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0xJTkVBUl9BUFAQDRIyCi5DTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0NVU1RPTV9XRUJIT09LEBMSKgomQ0xPVURfRVhQRVJUX0JVSUxUSU5fQ0FQQUJJTElUWV9HSVRMQUIQFBIuCipDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0dJVExBQl9BUFAQFRIoCiRDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0pJUkEQFxIuCipDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0NPTkZMVUVOQ0UQGBIsCihDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0pJUkFfQVBQEBkSMgouQ0xPVURfRVhQRVJUX0JVSUxUSU5fQ0FQQUJJTElUWV9DT05GTFVFTkNFX0FQUBAaEikKJUNMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfVEVBTVMQGxIwCixDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0FaVVJFX0RFVk9QUxAcEjQKMENMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfQVpVUkVfREVWT1BTX0FQUBAdIgQIAhACIgQIAxADIgQIBRAFIgQIBhAGIgQIChAKIgQIDhAOIgQIDxAPIgQIEBAQIgQIERARIgQIEhASIgQIFhAWKi5DTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0dDUF9NT05JVE9SSU5HKitDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0dDUF9MT0dHSU5HKidDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0tVQkVDVEwqKUNMT1VEX0VYUEVSVF9CVUlMVElOX0NBUEFCSUxJVFlfUEFHRVJEVVRZKihDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0VOR19JTkZPKjNDTE9VRF9FWFBFUlRfQlVJTFRJTl9DQVBBQklMSVRZX0NMT1VEX0FHRU5UX0NPTlRST0wqsAEKG0Nsb3VkRXhwZXJ0Q2FwYWJpbGl0eVNvdXJjZRIuCipDTE9VRF9FWFBFUlRfQ0FQQUJJTElUWV9TT1VSQ0VfVU5TUEVDSUZJRUQQABI3CjNDTE9VRF9FWFBFUlRfQ0FQQUJJTElUWV9TT1VSQ0VfQlVJTFRJTl9DQVBBQklMSVRJRVMQARIoCiRDTE9VRF9FWFBFUlRfQ0FQQUJJTElUWV9TT1VSQ0VfTkFNRVMQAiqTAQohQ2xvdWRFeHBlcnREZXBlbmRlbmN5UmVsYXRpb25zaGlwEjQKMENMT1VEX0VYUEVSVF9ERVBFTkRFTkNZX1JFTEFUSU9OU0hJUF9VTlNQRUNJRklFRBAAEjgKNENMT1VEX0VYUEVSVF9ERVBFTkRFTkNZX1JFTEFUSU9OU0hJUF9SRVFVSVJFRF9XT1JLRVIQASrRAQohQ2xvdWRFeHBlcnREZXBlbmRlbmN5UmVwYWlyQWN0aW9uEjUKMUNMT1VEX0VYUEVSVF9ERVBFTkRFTkNZX1JFUEFJUl9BQ1RJT05fVU5TUEVDSUZJRUQQABI4CjRDTE9VRF9FWFBFUlRfREVQRU5ERU5DWV9SRVBBSVJfQUNUSU9OX1JFU1RPUkVfVEFSR0VUEAESOwo3Q0xPVURfRVhQRVJUX0RFUEVOREVOQ1lfUkVQQUlSX0FDVElPTl9FRElUX0RFUEVOREVOQ0lFUxACKtYBChtDbG91ZEV4cGVydERlcGVuZGVuY3lTdGF0dXMSLgoqQ0xPVURfRVhQRVJUX0RFUEVOREVOQ1lfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKgomQ0xPVURfRVhQRVJUX0RFUEVOREVOQ1lfU1RBVFVTX01JU1NJTkcQARIqCiZDTE9VRF9FWFBFUlRfREVQRU5ERU5DWV9TVEFUVVNfREVMRVRFRBACEi8KK0NMT1VEX0VYUEVSVF9ERVBFTkRFTkNZX1NUQVRVU19JTkFDQ0VTU0lCTEUQAypuChBDbG91ZEV4cGVydFNjb3BlEh4KGkNMT1VEX0VYUEVSVF9TQ09QRV9VTktOT1dOEAASHQoZQ0xPVURfRVhQRVJUX1NDT1BFX1RFTkFOVBABEhsKF0NMT1VEX0VYUEVSVF9TQ09QRV9VU0VSEAIqqAEKHENsb3VkRXhwZXJ0U2Vzc2lvblZpc2liaWxpdHkSLworQ0xPVURfRVhQRVJUX1NFU1NJT05fVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEioKJkNMT1VEX0VYUEVSVF9TRVNTSU9OX1ZJU0lCSUxJVFlfU0hBUkVEEAESKwonQ0xPVURfRVhQRVJUX1NFU1NJT05fVklTSUJJTElUWV9QUklWQVRFEAIqqQEKGENsb3VkRXhwZXJ0Vk1JbWFnZVNvdXJjZRIsCihDTE9VRF9FWFBFUlRfVk1fSU1BR0VfU09VUkNFX1VOU1BFQ0lGSUVEEAASJwojQ0xPVURfRVhQRVJUX1ZNX0lNQUdFX1NPVVJDRV9QVUJMSUMQARI2CjJDTE9VRF9FWFBFUlRfVk1fSU1BR0VfU09VUkNFX0dDUF9BUlRJRkFDVF9SRUdJU1RSWRACKo8BChRDbG91ZEdyb3VwTWVtYmVyS2luZBInCiNDTE9VRF9HUk9VUF9NRU1CRVJfS0lORF9VTlNQRUNJRklFRBAAEiEKHUNMT1VEX0dST1VQX01FTUJFUl9LSU5EX0hVTUFOEAESKwonQ0xPVURfR1JPVVBfTUVNQkVSX0tJTkRfU0VSVklDRV9BQ0NPVU5UEAIqdgoSQ2xvdWRSZXNpZGVudFNjb3BlEiAKHENMT1VEX1JFU0lERU5UX1NDT1BFX1VOS05PV04QABIfChtDTE9VRF9SRVNJREVOVF9TQ09QRV9URU5BTlQQARIdChlDTE9VRF9SRVNJREVOVF9TQ09QRV9VU0VSEAIqpQEKGENsb3VkU2FuZGJveFByb3ZpZGVyVHlwZRIrCidDTE9VRF9TQU5EQk9YX1BST1ZJREVSX1RZUEVfVU5TUEVDSUZJRUQQABIuCipDTE9VRF9TQU5EQk9YX1BST1ZJREVSX1RZUEVfU1lTVEVNX01BTkFHRUQQARIsCihDTE9VRF9TQU5EQk9YX1BST1ZJREVSX1RZUEVfVVNFUl9NQU5BR0VEEAIqdgoPQ2xvdWRUdW5uZWxNb2RlEiEKHUNMT1VEX1RVTk5FTF9NT0RFX1VOU1BFQ0lGSUVEEAASIQodQ0xPVURfVFVOTkVMX01PREVfV0VCX1BSRVZJRVcQARIdChlDTE9VRF9UVU5ORUxfTU9ERV9ESVNQTEFZEAIqoAIKEUNsb3VkVHVubmVsU3RhdHVzEiMKH0NMT1VEX1RVTk5FTF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtDTE9VRF9UVU5ORUxfU1RBVFVTX1BFTkRJTkcQARIeChpDTE9VRF9UVU5ORUxfU1RBVFVTX0FDVElWRRACEiQKIENMT1VEX1RVTk5FTF9TVEFUVVNfRElTQ09OTkVDVEVEEAMSHwobQ0xPVURfVFVOTkVMX1NUQVRVU19SRVZPS0VEEAQSHwobQ0xPVURfVFVOTkVMX1NUQVRVU19FWFBJUkVEEAUSHgoaQ0xPVURfVFVOTkVMX1NUQVRVU19DTE9TRUQQBhIdChlDTE9VRF9UVU5ORUxfU1RBVFVTX0VSUk9SEAcqawoOQ29tcGxldGlvblR5cGUSHwobQ09NUExFVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASGAoUQ09NUExFVElPTl9UWVBFX0NPREUQARIeChpDT01QTEVUSU9OX1RZUEVfQ0hBVF9JTlBVVBACKm4KEENvbnZlcnNhdGlvblR5cGUSIQodQ09OVkVSU0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIaChZDT05WRVJTQVRJT05fVFlQRV9DSEFUEAESGwoXQ09OVkVSU0FUSU9OX1RZUEVfQUdFTlQQAiqPAQoXQ29zdEFuYWx5dGljc0J5b2tTdGF0dXMSJgoiQ09TVF9BTkFMWVRJQ1NfQllPS19TVEFUVVNfVU5LTk9XThAAEicKI0NPU1RfQU5BTFlUSUNTX0JZT0tfU1RBVFVTX05PTl9CWU9LEAESIwofQ09TVF9BTkFMWVRJQ1NfQllPS19TVEFUVVNfQllPSxACKoECChRDb3N0QW5hbHl0aWNzR3JvdXBCeRIjCh9DT1NUX0FOQUxZVElDU19HUk9VUF9CWV9VTktOT1dOEAASIAocQ09TVF9BTkFMWVRJQ1NfR1JPVVBfQllfVVNFUhACEicKI0NPU1RfQU5BTFlUSUNTX0dST1VQX0JZX0JZT0tfU1RBVFVTEAQSJAogQ09TVF9BTkFMWVRJQ1NfR1JPVVBfQllfUkVTT1VSQ0UQBRIjCh9DT1NUX0FOQUxZVElDU19HUk9VUF9CWV9QUk9EVUNUEAYSIgoeQ09TVF9BTkFMWVRJQ1NfR1JPVVBfQllfRVhQRVJUEAciBAgBEAEiBAgDEAMqlwEKGUNvc3RBbmFseXRpY3NSZXNvdXJjZVR5cGUSKAokQ09TVF9BTkFMWVRJQ1NfUkVTT1VSQ0VfVFlQRV9VTktOT1dOEAASJgoiQ09TVF9BTkFMWVRJQ1NfUkVTT1VSQ0VfVFlQRV9NT0RFTBABEigKJENPU1RfQU5BTFlUSUNTX1JFU09VUkNFX1RZUEVfQ09NUFVURRACKqcBChpDb3N0QW5hbHl0aWNzVGFnRmlsdGVyVHlwZRIpCiVDT1NUX0FOQUxZVElDU19UQUdfRklMVEVSX1RZUEVfVkFMVUVTEAASLAooQ09TVF9BTkFMWVRJQ1NfVEFHX0ZJTFRFUl9UWVBFX0FOWV9WQUxVRRABEjAKLENPU1RfQU5BTFlUSUNTX1RBR19GSUxURVJfVFlQRV9NSVNTSU5HX1ZBTFVFEAIqyQEKHENvc3RBbmFseXRpY3NUaW1lR3JhbnVsYXJpdHkSKwonQ09TVF9BTkFMWVRJQ1NfVElNRV9HUkFOVUxBUklUWV9VTktOT1dOEAASKQolQ09TVF9BTkFMWVRJQ1NfVElNRV9HUkFOVUxBUklUWV9UT1RBTBABEicKI0NPU1RfQU5BTFlUSUNTX1RJTUVfR1JBTlVMQVJJVFlfREFZEAISKAokQ09TVF9BTkFMWVRJQ1NfVElNRV9HUkFOVUxBUklUWV9XRUVLEAMqsAEKFUNvc3RBbmFseXRpY3NVc2VyVHlwZRIkCiBDT1NUX0FOQUxZVElDU19VU0VSX1RZUEVfVU5LTk9XThAAEiEKHUNPU1RfQU5BTFlUSUNTX1VTRVJfVFlQRV9VU0VSEAESLAooQ09TVF9BTkFMWVRJQ1NfVVNFUl9UWVBFX1NFUlZJQ0VfQUNDT1VOVBACEiAKHENPU1RfQU5BTFlUSUNTX1VTRVJfVFlQRV9CT1QQAyrtAQoIRGlmZlR5cGUSGQoVRElGRl9UWVBFX1VOU1BFQ0lGSUVEEAASEQoNRElGRl9UWVBFX0ZJWBABEhUKEURJRkZfVFlQRV9GRUFUVVJFEAISFgoSRElGRl9UWVBFX1JFRkFDVE9SEAMSGwoXRElGRl9UWVBFX0RPQ1VNRU5UQVRJT04QBBITCg9ESUZGX1RZUEVfU1RZTEUQBRISCg5ESUZGX1RZUEVfVEVTVBAGEhMKD0RJRkZfVFlQRV9DSE9SRRAHEhQKEERJRkZfVFlQRV9SRVZFUlQQCBITCg9ESUZGX1RZUEVfT1RIRVIQCSpsCg9FZGl0RXZlbnRTb3VyY2USGwoXRURJVF9TT1VSQ0VfVU5TUEVDSUZJRUQQABIZChVFRElUX1NPVVJDRV9VU0VSX0VESVQQARIhCh1FRElUX1NPVVJDRV9DSEVDS1BPSU5UX1JFVkVSVBACKpgBCgtFdmVudFNvdXJjZRIcChhFVkVOVF9TT1VSQ0VfVU5TUEVDSUZJRUQQABIXChNFVkVOVF9TT1VSQ0VfR0lUSFVCEAESFwoTRVZFTlRfU09VUkNFX0xJTkVBUhACEhkKFUVWRU5UX1NPVVJDRV9TQ0hFRFVMRRADEh4KGkVWRU5UX1NPVVJDRV9TQ0hFRFVMRV9URU1QEAQqPwoSRXh0ZXJuYWxTb3VyY2VUeXBlEhIKDlVOS05PV05fU09VUkNFEAASFQoRRE9DVU1FTlRBVElPTl9TRVQQASo3Cg5GZWVkYmFja1JhdGluZxIJCgVVTlNFVBAAEgwKCFBPU0lUSVZFEAESDAoITkVHQVRJVkUQAiqAAQoQR2l0SHViRW50aXR5VHlwZRIiCh5HSVRIVUJfRU5USVRZX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9HSVRIVUJfRU5USVRZX1RZUEVfUFVMTF9SRVFVRVNUEAESIwofR0lUSFVCX0VOVElUWV9UWVBFX1dPUktGTE9XX1JVThACKlUKD0ltYWdlRm9ybWF0VHlwZRIcChhJTUFHRV9GT1JNQVRfVU5TUEVDSUZJRUQQABIHCgNQTkcQARIICgRKUEVHEAISBwoDR0lGEAMSCAoEV0VCUBAEKlQKEExpbmVhckVudGl0eVR5cGUSIgoeTElORUFSX0VOVElUWV9UWVBFX1VOU1BFQ0lGSUVEEAASHAoYTElORUFSX0VOVElUWV9UWVBFX0lTU1VFEAEqeAoLTWNwQXV0aFR5cGUSHQoZTUNQX0FVVEhfVFlQRV9VTlNQRUNJRklFRBAAEhYKEk1DUF9BVVRIX1RZUEVfTk9ORRABEhcKE01DUF9BVVRIX1RZUEVfT0FVVEgQAhIZChVNQ1BfQVVUSF9UWVBFX0FQSV9LRVkQAyqTAQoUTWNwQ2F0YWxvZ0VudHJ5U3RhdGUSJwojTUNQX0NBVEFMT0dfRU5UUllfU1RBVEVfVU5TUEVDSUZJRUQQABIlCiFNQ1BfQ0FUQUxPR19FTlRSWV9TVEFURV9BVkFJTEFCTEUQARIrCidNQ1BfQ0FUQUxPR19FTlRSWV9TVEFURV9PUFRfSU5fUkVRVUlSRUQQAipqCg5NY3BDb25maWdTY29wZRIgChxNQ1BfQ09ORklHX1NDT1BFX1VOU1BFQ0lGSUVEEAASGQoVTUNQX0NPTkZJR19TQ09QRV9VU0VSEAESGwoXTUNQX0NPTkZJR19TQ09QRV9URU5BTlQQAipuCg5NY3BQcm9kdWN0VHlwZRIgChxNQ1BfUFJPRFVDVF9UWVBFX1VOU1BFQ0lGSUVEEAASGAoUTUNQX1BST0RVQ1RfVFlQRV9DTEkQARIgChxNQ1BfUFJPRFVDVF9UWVBFX0NMT1VEX0FHRU5UEAIqaAoXTm90aWZpY2F0aW9uRGlzcGxheVR5cGUSHAoYRElTUExBWV9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSRElTUExBWV9UWVBFX1RPQVNUEAESFwoTRElTUExBWV9UWVBFX0JBTk5FUhACKpIBChFOb3RpZmljYXRpb25MZXZlbBIiCh5OT1RJRklDQVRJT05fTEVWRUxfVU5TUEVDSUZJRUQQABIbChdOT1RJRklDQVRJT05fTEVWRUxfSU5GTxABEh4KGk5PVElGSUNBVElPTl9MRVZFTF9XQVJOSU5HEAISHAoYTk9USUZJQ0FUSU9OX0xFVkVMX0VSUk9SEAMqZQoNT3V0Y29tZU9yaWdpbhIaChZPVVRDT01FX09SSUdJTl9VTktOT1dOEAASGQoVT1VUQ09NRV9PUklHSU5fQ09TTU9TEAESHQoZT1VUQ09NRV9PUklHSU5fTk9OX0NPU01PUxACKkgKC1BlcnNvbmFUeXBlEgsKB0RFRkFVTFQQABIOCgpQUk9UT1RZUEVSEAESDgoKQlJBSU5TVE9STRACEgwKCFJFVklFV0VSEAMqoAEKG1JlbW90ZUFnZW50UmVzdW1lSGludFJlYXNvbhIoCiRSRVNVTUVfQUdFTlRfSElOVF9SRUFTT05fVU5TUEVDSUZJRUQQABIrCidSRVNVTUVfQUdFTlRfSElOVF9SRUFTT05fVFlQSU5HX01FU1NBR0UQARIqCiZSRVNVTUVfQUdFTlRfSElOVF9SRUFTT05fVklFV0lOR19BR0VOVBACKqsBChFSZW1vdGVBZ2VudFN0YXR1cxIVChFBR0VOVF9VTlNQRUNJRklFRBAAEhEKDUFHRU5UX1BFTkRJTkcQBRISCg5BR0VOVF9TVEFSVElORxABEhEKDUFHRU5UX1JVTk5JTkcQAhIOCgpBR0VOVF9JRExFEAMSEAoMQUdFTlRfRkFJTEVEEAQSEQoNQUdFTlRfUEFVU0lORxAGEhAKDEFHRU5UX1BBVVNFRBAHKqMCChpSZW1vdGVBZ2VudFdvcmtzcGFjZVN0YXR1cxItCilSRU1PVEVfQUdFTlRfV09SS1NQQUNFX1NUQVRVU19VTlNQRUNJRklFRBAAEikKJVJFTU9URV9BR0VOVF9XT1JLU1BBQ0VfU1RBVFVTX1JVTk5JTkcQARIpCiVSRU1PVEVfQUdFTlRfV09SS1NQQUNFX1NUQVRVU19QQVVTSU5HEAISKAokUkVNT1RFX0FHRU5UX1dPUktTUEFDRV9TVEFUVVNfUEFVU0VEEAMSKgomUkVNT1RFX0FHRU5UX1dPUktTUEFDRV9TVEFUVVNfUkVTVU1JTkcQBBIqCiZSRU1PVEVfQUdFTlRfV09SS1NQQUNFX1NUQVRVU19ERUxFVElORxAFKqsCCgxSZW1vdGVUb29sSWQSCwoHVU5LTk9XThAAEg4KCldFQl9TRUFSQ0gQARIOCgpHSVRIVUJfQVBJEAgSGwoXR0lUSFVCX0FQUF9SRUFET05MWV9BUEkQEhIbChdHSVRIVUJfQVBQX1BPU1RfQ09NTUVOVBATEh0KGUdJVEhVQl9BUFBfUFJfREVTQ1JJUFRJT04QFBIKCgZMSU5FQVIQDBIICgRKSVJBEA0SDgoKQ09ORkxVRU5DRRAOEgoKBk5PVElPThAPEgwKCFNVUEFCQVNFEBASCQoFR0xFQU4QESIECAIQAiIECAMQAyIECAQQBCIECAUQBSIECAYQBiIECAcQByIECAkQCSIECAoQCiIECAsQCyIECBUQFSoOQ09OVEVYVF9DQU5WQVMq1gEKGFJlbW90ZVRvb2xSZXNwb25zZVN0YXR1cxIhCh1UT09MX0VYRUNVVElPTl9VTktOT1dOX1NUQVRVUxAAEhoKFlRPT0xfRVhFQ1VUSU9OX1NVQ0NFU1MQARISCg5UT09MX05PVF9GT1VORBACEhYKEklOVkFMSURfVE9PTF9JTlBVVBADEhgKFFRPT0xfRVhFQ1VUSU9OX0VSUk9SEAQSFgoSVE9PTF9OT1RfQVZBSUxBQkxFEAUSHQoZVE9PTF9BVVRIRU5USUNBVElPTl9FUlJPUhAGKpACCh5SZW1vdGVXb3Jrc3BhY2VTZXR1cFN0ZXBTdGF0dXMSLgoqUkVNT1RFX1dPUktTUEFDRV9TRVRVUF9TVEVQX1NUQVRVU19VTktOT1dOEAASLgoqUkVNT1RFX1dPUktTUEFDRV9TRVRVUF9TVEVQX1NUQVRVU19SVU5OSU5HEAESLgoqUkVNT1RFX1dPUktTUEFDRV9TRVRVUF9TVEVQX1NUQVRVU19TVUNDRVNTEAISLgoqUkVNT1RFX1dPUktTUEFDRV9TRVRVUF9TVEVQX1NUQVRVU19GQUlMVVJFEAMSLgoqUkVNT1RFX1dPUktTUEFDRV9TRVRVUF9TVEVQX1NUQVRVU19TS0lQUEVEEAQq3wEKDVJlcXVlc3RTb3VyY2USHgoaUkVRVUVTVF9TT1VSQ0VfVU5TUEVDSUZJRUQQABIWChJSRVFVRVNUX1NPVVJDRV9JREUQARIiCh5SRVFVRVNUX1NPVVJDRV9BVUdNRU5UX0FDVElPTlMQAhIcChhSRVFVRVNUX1NPVVJDRV9TTEFDS19CT1QQAxIdChlSRVFVRVNUX1NPVVJDRV9HSVRIVUJfQk9UEAQSHQoZUkVRVUVTVF9TT1VSQ0VfTElORUFSX0JPVBAFEhYKElJFUVVFU1RfU09VUkNFX0NMSRAGKowCChZSZXZva2VUb29sQWNjZXNzU3RhdHVzEiUKIVJFVk9LRV9UT09MX0FDQ0VTU19TVEFUVVNfVU5LTk9XThAAEisKJ1JFVk9LRV9UT09MX0FDQ0VTU19TVEFUVVNfVU5JTVBMRU1FTlRFRBABEicKI1JFVk9LRV9UT09MX0FDQ0VTU19TVEFUVVNfTk9UX0ZPVU5EEAISJQohUkVWT0tFX1RPT0xfQUNDRVNTX1NUQVRVU19TVUNDRVNTEAMSKAokUkVWT0tFX1RPT0xfQUNDRVNTX1NUQVRVU19OT1RfQUNUSVZFEAQSJAogUkVWT0tFX1RPT0xfQUNDRVNTX1NUQVRVU19GQUlMRUQQBSpACghSdWxlVHlwZRITCg9BTFdBWVNfQVRUQUNIRUQQABIKCgZNQU5VQUwQARITCg9BR0VOVF9SRVFVRVNURUQQAipeChJTY2hlZHVsZUVudGl0eVR5cGUSJAogU0NIRURVTEVfRU5USVRZX1RZUEVfVU5TUEVDSUZJRUQQABIiCh5TQ0hFRFVMRV9FTlRJVFlfVFlQRV9FWEVDVVRJT04QASqlAQoTU2VjcmV0QXBwbGljYWJpbGl0eRIkCiBTRUNSRVRfQVBQTElDQUJJTElUWV9VTlNQRUNJRklFRBAAEiEKHVNFQ1JFVF9BUFBMSUNBQklMSVRZX1BFUlNPTkFMEAESHgoaU0VDUkVUX0FQUExJQ0FCSUxJVFlfU1BBQ0UQAhIlCiFTRUNSRVRfQVBQTElDQUJJTElUWV9PUkdBTklaQVRJT04QAypeCgtTZWNyZXRTY29wZRIcChhTRUNSRVRfU0NPUEVfVU5TUEVDSUZJRUQQABIYChRTRUNSRVRfU0NPUEVfUFJJVkFURRABEhcKE1NFQ1JFVF9TQ09QRV9TSEFSRUQQAipRCglUYWdTb3VyY2USFgoSVEFHX1NPVVJDRV9VTktOT1dOEAASFQoRVEFHX1NPVVJDRV9TWVNURU0QARIVChFUQUdfU09VUkNFX0NVU1RPTRACKtMCChhUZXN0VG9vbENvbm5lY3Rpb25TdGF0dXMSJwojVEVTVF9UT09MX0NPTk5FQ1RJT05fU1RBVFVTX1VOS05PV04QABItCilURVNUX1RPT0xfQ09OTkVDVElPTl9TVEFUVVNfVU5JTVBMRU1FTlRFRBABEikKJVRFU1RfVE9PTF9DT05ORUNUSU9OX1NUQVRVU19OT1RfRk9VTkQQAhIiCh5URVNUX1RPT0xfQ09OTkVDVElPTl9TVEFUVVNfT0sQAxIlCiFURVNUX1RPT0xfQ09OTkVDVElPTl9TVEFUVVNfRVJST1IQBBIzCi9URVNUX1RPT0xfQ09OTkVDVElPTl9TVEFUVVNfU0VSVklDRV9VTkFWQUlMQUJMRRAFEjQKMFRFU1RfVE9PTF9DT05ORUNUSU9OX1NUQVRVU19BVVRIRU5USUNBVElPTl9FUlJPUhAGKlUKFlRvb2xBdmFpbGFiaWxpdHlTdGF0dXMSEgoOVU5LTk9XTl9TVEFUVVMQABINCglBVkFJTEFCTEUQARIYChRVU0VSX0NPTkZJR19SRVFVSVJFRBACKl4KGVRvb2xSZXN1bHRDb250ZW50Tm9kZVR5cGUSHAoYQ09OVEVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASEAoMQ09OVEVOVF9URVhUEAESEQoNQ09OVEVOVF9JTUFHRRACKjwKClRvb2xTYWZldHkSDwoLVE9PTF9VTlNBRkUQABINCglUT09MX1NBRkUQARIOCgpUT09MX0NIRUNLEAIqmgEKFFRyaWdnZXJDb25kaXRpb25UeXBlEiYKIlRSSUdHRVJfQ09ORElUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIcChhUUklHR0VSX0NPTkRJVElPTl9HSVRIVUIQARIcChhUUklHR0VSX0NPTkRJVElPTl9MSU5FQVIQAhIeChpUUklHR0VSX0NPTkRJVElPTl9TQ0hFRFVMRRADKk8KCVVzYWdlVW5pdBIWChJVU0FHRV9VTklUX1VOS05PV04QABIWChJVU0FHRV9VTklUX0NSRURJVFMQARISCg5VU0FHRV9VTklUX1VTRBACQj5aPGdpdGh1Yi5jb20vYXVnbWVudGNvZGUvYXVnbWVudC9zZXJ2aWNlcy9hcGlfcHJveHkvcHVibGljX2FwaWIGcHJvdG8z",[ju,li,qt,se,Gn,In,nZ,Pu]);var gZ;(function(e){e[e.BANNER_TYPE_UNKNOWN=0]="BANNER_TYPE_UNKNOWN",e[e.URL_LINK=1]="URL_LINK",e[e.USAGE_BALANCE_DEPLETED=2]="USAGE_BALANCE_DEPLETED",e[e.USAGE_BALANCE_LOW=3]="USAGE_BALANCE_LOW",e[e.REQUIRE_PAYMENT_FOR_TRIAL=4]="REQUIRE_PAYMENT_FOR_TRIAL"})(gZ||(gZ={}));var EZ;(function(e){e[e.BANNER_DISPLAY_STYLE_UNKNOWN=0]="BANNER_DISPLAY_STYLE_UNKNOWN",e[e.INFO=1]="INFO",e[e.PROMOTION=2]="PROMOTION",e[e.WARNING=3]="WARNING",e[e.ALERT=4]="ALERT"})(EZ||(EZ={}));var pZ;(function(e){e[e.ADDED=0]="ADDED",e[e.DELETED=1]="DELETED",e[e.MODIFIED=2]="MODIFIED",e[e.RENAMED=3]="RENAMED"})(pZ||(pZ={}));var RZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.ALL_FEATURES=1]="ALL_FEATURES",e[e.CHAT=2]="CHAT",e[e.AGENT=3]="AGENT",e[e.REMOTE_AGENT=4]="REMOTE_AGENT",e[e.CLI_AGENT=5]="CLI_AGENT",e[e.ORIENTATION=7]="ORIENTATION",e[e.CODE_REVIEW=9]="CODE_REVIEW",e[e.CHAT_STREAM_CREDIT_CONSUMPTION=21]="CHAT_STREAM_CREDIT_CONSUMPTION",e[e.CONTEXT_ENGINE=22]="CONTEXT_ENGINE",e[e.POSEIDON=25]="POSEIDON",e[e.INDEXING_INFRA=28]="INDEXING_INFRA"})(RZ||(RZ={}));var ZZ;(function(e){e[e.STATE_UNKNOWN=0]="STATE_UNKNOWN",e[e.ENABLED=1]="ENABLED",e[e.DISABLED=2]="DISABLED"})(ZZ||(ZZ={}));var SZ;(function(e){e[e.REASON_UNKNOWN=0]="REASON_UNKNOWN",e[e.INACTIVE_SUBSCRIPTION=1]="INACTIVE_SUBSCRIPTION",e[e.USAGE_BALANCE_DEPLETED=2]="USAGE_BALANCE_DEPLETED",e[e.NOT_INCLUDED_IN_PLAN=3]="NOT_INCLUDED_IN_PLAN",e[e.QUOTA_EXCEEDED=4]="QUOTA_EXCEEDED"})(SZ||(SZ={}));var T2=oe(K2,526,0);var XZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.COMMUNITY_TIER=1]="COMMUNITY_TIER",e[e.PROFESSIONAL_TIER=2]="PROFESSIONAL_TIER",e[e.ENTERPRISE_TIER=3]="ENTERPRISE_TIER"})(XZ||(XZ={}));var WZ;(function(e){e[e.GLOBAL=0]="GLOBAL",e[e.TENANT=1]="TENANT"})(WZ||(WZ={}));var GZ;(function(e){e[e.AGENT_HISTORY_UPDATE_TYPE_UNSPECIFIED=0]="AGENT_HISTORY_UPDATE_TYPE_UNSPECIFIED",e[e.AGENT_HISTORY_EXCHANGE=1]="AGENT_HISTORY_EXCHANGE",e[e.AGENT_HISTORY_EXCHANGE_UPDATE=2]="AGENT_HISTORY_EXCHANGE_UPDATE",e[e.AGENT_HISTORY_AGENT_STATUS=3]="AGENT_HISTORY_AGENT_STATUS"})(GZ||(GZ={}));var IZ;(function(e){e[e.AGENT_LIST_UPDATE_TYPE_UNSPECIFIED=0]="AGENT_LIST_UPDATE_TYPE_UNSPECIFIED",e[e.AGENT_LIST_AGENT_ADDED=1]="AGENT_LIST_AGENT_ADDED",e[e.AGENT_LIST_AGENT_UPDATED=2]="AGENT_LIST_AGENT_UPDATED",e[e.AGENT_LIST_AGENT_DELETED=3]="AGENT_LIST_AGENT_DELETED",e[e.AGENT_LIST_ALL_AGENTS=4]="AGENT_LIST_ALL_AGENTS"})(IZ||(IZ={}));var NZ;(function(e){e[e.GLOBAL=0]="GLOBAL",e[e.TENANT=1]="TENANT",e[e.USER=2]="USER"})(NZ||(NZ={}));var FZ;(function(e){e[e.AGENT_WORKSPACE_UPDATE_TYPE_UNSPECIFIED=0]="AGENT_WORKSPACE_UPDATE_TYPE_UNSPECIFIED",e[e.AGENT_WORKSPACE_UPDATE_INTERRUPT=1]="AGENT_WORKSPACE_UPDATE_INTERRUPT",e[e.AGENT_WORKSPACE_UPDATE_CHAT_REQUEST=2]="AGENT_WORKSPACE_UPDATE_CHAT_REQUEST"})(FZ||(FZ={}));var BZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.COST=1]="COST",e[e.OUTCOME=2]="OUTCOME"})(BZ||(BZ={}));var YZ;(function(e){e[e.TEXT=0]="TEXT",e[e.TOOL_RESULT=1]="TOOL_RESULT",e[e.IMAGE=2]="IMAGE",e[e.IMAGE_ID=3]="IMAGE_ID",e[e.IDE_STATE=4]="IDE_STATE",e[e.EDIT_EVENTS=5]="EDIT_EVENTS",e[e.CHECKPOINT_REF=6]="CHECKPOINT_REF",e[e.CHAT_NODE_FILE=8]="CHAT_NODE_FILE",e[e.CHAT_NODE_FILE_ID=9]="CHAT_NODE_FILE_ID",e[e.HISTORY_SUMMARY=10]="HISTORY_SUMMARY"})(YZ||(YZ={}));var CZ;(function(e){e[e.RAW_RESPONSE=0]="RAW_RESPONSE",e[e.SUGGESTED_QUESTIONS=1]="SUGGESTED_QUESTIONS",e[e.MAIN_TEXT_FINISHED=2]="MAIN_TEXT_FINISHED",e[e.WORKSPACE_FILE_CHUNKS=3]="WORKSPACE_FILE_CHUNKS",e[e.RELEVANT_SOURCES=4]="RELEVANT_SOURCES",e[e.TOOL_USE=5]="TOOL_USE",e[e.TOOL_USE_START=7]="TOOL_USE_START",e[e.THINKING=8]="THINKING",e[e.BILLING_METADATA=9]="BILLING_METADATA",e[e.TOKEN_USAGE=10]="TOKEN_USAGE"})(CZ||(CZ={}));var UZ;(function(e){e[e.REASON_UNSPECIFIED=0]="REASON_UNSPECIFIED",e[e.END_TURN=1]="END_TURN",e[e.MAX_TOKENS=2]="MAX_TOKENS",e[e.TOOL_USE_REQUESTED=3]="TOOL_USE_REQUESTED",e[e.SAFETY=4]="SAFETY",e[e.RECITATION=5]="RECITATION",e[e.MALFORMED_FUNCTION_CALL=6]="MALFORMED_FUNCTION_CALL",e[e.STOP_REASON_ERROR=7]="STOP_REASON_ERROR"})(UZ||(UZ={}));var yZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.WEB_ACCESS=1]="WEB_ACCESS",e[e.MCP=2]="MCP",e[e.CLI_TOOLS=4]="CLI_TOOLS",e[e.GITHUB=5]="GITHUB"})(yZ||(yZ={}));var wZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SALSA=1]="SALSA",e[e.AUGGIE=2]="AUGGIE"})(wZ||(wZ={}));var xZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.IDLE=1]="IDLE",e[e.PROCESSING=2]="PROCESSING",e[e.TERMINATED=3]="TERMINATED",e[e.COMPLETED=4]="COMPLETED",e[e.STARTING=5]="STARTING",e[e.WAITING_FOR_INPUT=6]="WAITING_FOR_INPUT"})(xZ||(xZ={}));var vZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.FORCE_ISOLATED=1]="FORCE_ISOLATED",e[e.FORCE_SHARED=2]="FORCE_SHARED"})(vZ||(vZ={}));var JZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.BASE_IMAGE=1]="BASE_IMAGE",e[e.DAEMON_POOL=2]="DAEMON_POOL",e[e.UNPOOLED_DAEMON=3]="UNPOOLED_DAEMON"})(JZ||(JZ={}));var kZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.NAME_ASC=1]="NAME_ASC",e[e.NAME_DESC=2]="NAME_DESC",e[e.CREATED_BY_ASC=3]="CREATED_BY_ASC",e[e.CREATED_BY_DESC=4]="CREATED_BY_DESC",e[e.SIZE_ASC=5]="SIZE_ASC",e[e.SIZE_DESC=6]="SIZE_DESC",e[e.REPOS_ASC=7]="REPOS_ASC",e[e.REPOS_DESC=8]="REPOS_DESC",e[e.UPDATED_ASC=9]="UPDATED_ASC",e[e.UPDATED_DESC=10]="UPDATED_DESC",e[e.CREATED_ASC=11]="CREATED_ASC",e[e.CREATED_DESC=12]="CREATED_DESC"})(kZ||(kZ={}));var _Z;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PERSONAL=1]="PERSONAL",e[e.SHARED=2]="SHARED"})(_Z||(_Z={}));var QZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.BUILD_FAILED=1]="BUILD_FAILED",e[e.EXECUTION_INTERRUPTED=2]="EXECUTION_INTERRUPTED",e[e.INTERNAL=3]="INTERNAL",e[e.VERSION_CONFLICT=4]="VERSION_CONFLICT",e[e.REFRESH_FAILED=5]="REFRESH_FAILED",e[e.RECONCILE_FAILED=6]="RECONCILE_FAILED",e[e.UPDATE_FAILED=7]="UPDATE_FAILED"})(QZ||(QZ={}));var KZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.QUEUED=1]="QUEUED",e[e.PREPARING=2]="PREPARING",e[e.BUILDING=3]="BUILDING",e[e.PROMOTING=4]="PROMOTING",e[e.UPDATING=6]="UPDATING"})(KZ||(KZ={}));var TZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PENDING=1]="PENDING",e[e.RUNNING=2]="RUNNING",e[e.CANCEL_REQUESTED=3]="CANCEL_REQUESTED",e[e.SUCCEEDED=4]="SUCCEEDED",e[e.FAILED=5]="FAILED",e[e.CANCELED=6]="CANCELED"})(TZ||(TZ={}));var nn;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.BASE_IMAGE_REBUILD=1]="BASE_IMAGE_REBUILD",e[e.BASE_IMAGE_BUILD=2]="BASE_IMAGE_BUILD",e[e.REFRESH=3]="REFRESH",e[e.REPOSITORY_RECONCILE=4]="REPOSITORY_RECONCILE",e[e.UPDATE=5]="UPDATE"})(nn||(nn={}));var zZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ACTIVE=1]="ACTIVE",e[e.BUILDING=2]="BUILDING",e[e.FAILED=3]="FAILED",e[e.DEPRECATED=4]="DEPRECATED",e[e.DELETING=5]="DELETING"})(zZ||(zZ={}));var bo;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.WEB_ACCESS=1]="WEB_ACCESS",e[e.CLI_TOOLS=4]="CLI_TOOLS",e[e.GITHUB=7]="GITHUB",e[e.LINEAR=8]="LINEAR",e[e.ECHO=9]="ECHO",e[e.SLACK=11]="SLACK",e[e.GITHUB_APP=12]="GITHUB_APP",e[e.LINEAR_APP=13]="LINEAR_APP",e[e.CUSTOM_WEBHOOK=19]="CUSTOM_WEBHOOK",e[e.GITLAB=20]="GITLAB",e[e.GITLAB_APP=21]="GITLAB_APP",e[e.JIRA=23]="JIRA",e[e.CONFLUENCE=24]="CONFLUENCE",e[e.JIRA_APP=25]="JIRA_APP",e[e.CONFLUENCE_APP=26]="CONFLUENCE_APP",e[e.TEAMS=27]="TEAMS",e[e.AZURE_DEVOPS=28]="AZURE_DEVOPS",e[e.AZURE_DEVOPS_APP=29]="AZURE_DEVOPS_APP"})(bo||(bo={}));var qu;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.BUILTIN_CAPABILITIES=1]="BUILTIN_CAPABILITIES",e[e.NAMES=2]="NAMES"})(qu||(qu={}));var DZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.REQUIRED_WORKER=1]="REQUIRED_WORKER"})(DZ||(DZ={}));var LZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RESTORE_TARGET=1]="RESTORE_TARGET",e[e.EDIT_DEPENDENCIES=2]="EDIT_DEPENDENCIES"})(LZ||(LZ={}));var HZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.MISSING=1]="MISSING",e[e.DELETED=2]="DELETED",e[e.INACCESSIBLE=3]="INACCESSIBLE"})(HZ||(HZ={}));var $u;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TENANT=1]="TENANT",e[e.USER=2]="USER"})($u||($u={}));var MZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SHARED=1]="SHARED",e[e.PRIVATE=2]="PRIVATE"})(MZ||(MZ={}));var OZ;(function(e){e[e.CLOUD_EXPERT_VM_IMAGE_SOURCE_UNSPECIFIED=0]="CLOUD_EXPERT_VM_IMAGE_SOURCE_UNSPECIFIED",e[e.CLOUD_EXPERT_VM_IMAGE_SOURCE_PUBLIC=1]="CLOUD_EXPERT_VM_IMAGE_SOURCE_PUBLIC",e[e.CLOUD_EXPERT_VM_IMAGE_SOURCE_GCP_ARTIFACT_REGISTRY=2]="CLOUD_EXPERT_VM_IMAGE_SOURCE_GCP_ARTIFACT_REGISTRY"})(OZ||(OZ={}));var jZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.HUMAN=1]="HUMAN",e[e.SERVICE_ACCOUNT=2]="SERVICE_ACCOUNT"})(jZ||(jZ={}));var PZ;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TENANT=1]="TENANT",e[e.USER=2]="USER"})(PZ||(PZ={}));var qZ;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SYSTEM_MANAGED=1]="SYSTEM_MANAGED",e[e.USER_MANAGED=2]="USER_MANAGED"})(qZ||(qZ={}));var $Z;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.WEB_PREVIEW=1]="WEB_PREVIEW",e[e.DISPLAY=2]="DISPLAY"})($Z||($Z={}));var e2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PENDING=1]="PENDING",e[e.ACTIVE=2]="ACTIVE",e[e.DISCONNECTED=3]="DISCONNECTED",e[e.REVOKED=4]="REVOKED",e[e.EXPIRED=5]="EXPIRED",e[e.CLOSED=6]="CLOSED",e[e.ERROR=7]="ERROR"})(e2||(e2={}));var t2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.CODE=1]="CODE",e[e.CHAT_INPUT=2]="CHAT_INPUT"})(t2||(t2={}));var n2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.CHAT=1]="CHAT",e[e.AGENT=2]="AGENT"})(n2||(n2={}));var o2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.NON_BYOK=1]="NON_BYOK",e[e.BYOK=2]="BYOK"})(o2||(o2={}));var r2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.USER=2]="USER",e[e.BYOK_STATUS=4]="BYOK_STATUS",e[e.RESOURCE=5]="RESOURCE",e[e.PRODUCT=6]="PRODUCT",e[e.EXPERT=7]="EXPERT"})(r2||(r2={}));var i2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.MODEL=1]="MODEL",e[e.COMPUTE=2]="COMPUTE"})(i2||(i2={}));var l2;(function(e){e[e.VALUES=0]="VALUES",e[e.ANY_VALUE=1]="ANY_VALUE",e[e.MISSING_VALUE=2]="MISSING_VALUE"})(l2||(l2={}));var s2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TOTAL=1]="TOTAL",e[e.DAY=2]="DAY",e[e.WEEK=3]="WEEK"})(s2||(s2={}));var a2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.USER=1]="USER",e[e.SERVICE_ACCOUNT=2]="SERVICE_ACCOUNT",e[e.BOT=3]="BOT"})(a2||(a2={}));var c2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.FIX=1]="FIX",e[e.FEATURE=2]="FEATURE",e[e.REFACTOR=3]="REFACTOR",e[e.DOCUMENTATION=4]="DOCUMENTATION",e[e.STYLE=5]="STYLE",e[e.TEST=6]="TEST",e[e.CHORE=7]="CHORE",e[e.REVERT=8]="REVERT",e[e.OTHER=9]="OTHER"})(c2||(c2={}));var d2;(function(e){e[e.EDIT_SOURCE_UNSPECIFIED=0]="EDIT_SOURCE_UNSPECIFIED",e[e.EDIT_SOURCE_USER_EDIT=1]="EDIT_SOURCE_USER_EDIT",e[e.EDIT_SOURCE_CHECKPOINT_REVERT=2]="EDIT_SOURCE_CHECKPOINT_REVERT"})(d2||(d2={}));var u2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.GITHUB=1]="GITHUB",e[e.LINEAR=2]="LINEAR",e[e.SCHEDULE=3]="SCHEDULE",e[e.SCHEDULE_TEMP=4]="SCHEDULE_TEMP"})(u2||(u2={}));var h2;(function(e){e[e.UNKNOWN_SOURCE=0]="UNKNOWN_SOURCE",e[e.DOCUMENTATION_SET=1]="DOCUMENTATION_SET"})(h2||(h2={}));var b2;(function(e){e[e.UNSET=0]="UNSET",e[e.POSITIVE=1]="POSITIVE",e[e.NEGATIVE=2]="NEGATIVE"})(b2||(b2={}));var A2;(function(e){e[e.GITHUB_ENTITY_TYPE_UNSPECIFIED=0]="GITHUB_ENTITY_TYPE_UNSPECIFIED",e[e.GITHUB_ENTITY_TYPE_PULL_REQUEST=1]="GITHUB_ENTITY_TYPE_PULL_REQUEST",e[e.GITHUB_ENTITY_TYPE_WORKFLOW_RUN=2]="GITHUB_ENTITY_TYPE_WORKFLOW_RUN"})(A2||(A2={}));var f2;(function(e){e[e.IMAGE_FORMAT_UNSPECIFIED=0]="IMAGE_FORMAT_UNSPECIFIED",e[e.PNG=1]="PNG",e[e.JPEG=2]="JPEG",e[e.GIF=3]="GIF",e[e.WEBP=4]="WEBP"})(f2||(f2={}));var V2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ISSUE=1]="ISSUE"})(V2||(V2={}));var m2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.NONE=1]="NONE",e[e.OAUTH=2]="OAUTH",e[e.API_KEY=3]="API_KEY"})(m2||(m2={}));var g2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.AVAILABLE=1]="AVAILABLE",e[e.OPT_IN_REQUIRED=2]="OPT_IN_REQUIRED"})(g2||(g2={}));var E2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.USER=1]="USER",e[e.TENANT=2]="TENANT"})(E2||(E2={}));var p2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.CLI=1]="CLI",e[e.CLOUD_AGENT=2]="CLOUD_AGENT"})(p2||(p2={}));var R2;(function(e){e[e.DISPLAY_TYPE_UNSPECIFIED=0]="DISPLAY_TYPE_UNSPECIFIED",e[e.DISPLAY_TYPE_TOAST=1]="DISPLAY_TYPE_TOAST",e[e.DISPLAY_TYPE_BANNER=2]="DISPLAY_TYPE_BANNER"})(R2||(R2={}));var Z2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.INFO=1]="INFO",e[e.WARNING=2]="WARNING",e[e.ERROR=3]="ERROR"})(Z2||(Z2={}));var S2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.COSMOS=1]="COSMOS",e[e.NON_COSMOS=2]="NON_COSMOS"})(S2||(S2={}));var X2;(function(e){e[e.DEFAULT=0]="DEFAULT",e[e.PROTOTYPER=1]="PROTOTYPER",e[e.BRAINSTORM=2]="BRAINSTORM",e[e.REVIEWER=3]="REVIEWER"})(X2||(X2={}));var W2;(function(e){e[e.RESUME_AGENT_HINT_REASON_UNSPECIFIED=0]="RESUME_AGENT_HINT_REASON_UNSPECIFIED",e[e.RESUME_AGENT_HINT_REASON_TYPING_MESSAGE=1]="RESUME_AGENT_HINT_REASON_TYPING_MESSAGE",e[e.RESUME_AGENT_HINT_REASON_VIEWING_AGENT=2]="RESUME_AGENT_HINT_REASON_VIEWING_AGENT"})(W2||(W2={}));var G2;(function(e){e[e.AGENT_UNSPECIFIED=0]="AGENT_UNSPECIFIED",e[e.AGENT_PENDING=5]="AGENT_PENDING",e[e.AGENT_STARTING=1]="AGENT_STARTING",e[e.AGENT_RUNNING=2]="AGENT_RUNNING",e[e.AGENT_IDLE=3]="AGENT_IDLE",e[e.AGENT_FAILED=4]="AGENT_FAILED",e[e.AGENT_PAUSING=6]="AGENT_PAUSING",e[e.AGENT_PAUSED=7]="AGENT_PAUSED"})(G2||(G2={}));var I2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.RUNNING=1]="RUNNING",e[e.PAUSING=2]="PAUSING",e[e.PAUSED=3]="PAUSED",e[e.RESUMING=4]="RESUMING",e[e.DELETING=5]="DELETING"})(I2||(I2={}));var N2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.WEB_SEARCH=1]="WEB_SEARCH",e[e.GITHUB_API=8]="GITHUB_API",e[e.GITHUB_APP_READONLY_API=18]="GITHUB_APP_READONLY_API",e[e.GITHUB_APP_POST_COMMENT=19]="GITHUB_APP_POST_COMMENT",e[e.GITHUB_APP_PR_DESCRIPTION=20]="GITHUB_APP_PR_DESCRIPTION",e[e.LINEAR=12]="LINEAR",e[e.JIRA=13]="JIRA",e[e.CONFLUENCE=14]="CONFLUENCE",e[e.NOTION=15]="NOTION",e[e.SUPABASE=16]="SUPABASE",e[e.GLEAN=17]="GLEAN"})(N2||(N2={}));var F2;(function(e){e[e.TOOL_EXECUTION_UNKNOWN_STATUS=0]="TOOL_EXECUTION_UNKNOWN_STATUS",e[e.TOOL_EXECUTION_SUCCESS=1]="TOOL_EXECUTION_SUCCESS",e[e.TOOL_NOT_FOUND=2]="TOOL_NOT_FOUND",e[e.INVALID_TOOL_INPUT=3]="INVALID_TOOL_INPUT",e[e.TOOL_EXECUTION_ERROR=4]="TOOL_EXECUTION_ERROR",e[e.TOOL_NOT_AVAILABLE=5]="TOOL_NOT_AVAILABLE",e[e.TOOL_AUTHENTICATION_ERROR=6]="TOOL_AUTHENTICATION_ERROR"})(F2||(F2={}));var B2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.RUNNING=1]="RUNNING",e[e.SUCCESS=2]="SUCCESS",e[e.FAILURE=3]="FAILURE",e[e.SKIPPED=4]="SKIPPED"})(B2||(B2={}));var Y2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.IDE=1]="IDE",e[e.AUGMENT_ACTIONS=2]="AUGMENT_ACTIONS",e[e.SLACK_BOT=3]="SLACK_BOT",e[e.GITHUB_BOT=4]="GITHUB_BOT",e[e.LINEAR_BOT=5]="LINEAR_BOT",e[e.CLI=6]="CLI"})(Y2||(Y2={}));var C2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.UNIMPLEMENTED=1]="UNIMPLEMENTED",e[e.NOT_FOUND=2]="NOT_FOUND",e[e.SUCCESS=3]="SUCCESS",e[e.NOT_ACTIVE=4]="NOT_ACTIVE",e[e.FAILED=5]="FAILED"})(C2||(C2={}));var U2;(function(e){e[e.ALWAYS_ATTACHED=0]="ALWAYS_ATTACHED",e[e.MANUAL=1]="MANUAL",e[e.AGENT_REQUESTED=2]="AGENT_REQUESTED"})(U2||(U2={}));var y2;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.EXECUTION=1]="EXECUTION"})(y2||(y2={}));var on;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PERSONAL=1]="PERSONAL",e[e.SPACE=2]="SPACE",e[e.ORGANIZATION=3]="ORGANIZATION"})(on||(on={}));var cr;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.PRIVATE=1]="PRIVATE",e[e.SHARED=2]="SHARED"})(cr||(cr={}));var w2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.SYSTEM=1]="SYSTEM",e[e.CUSTOM=2]="CUSTOM"})(w2||(w2={}));var x2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.UNIMPLEMENTED=1]="UNIMPLEMENTED",e[e.NOT_FOUND=2]="NOT_FOUND",e[e.OK=3]="OK",e[e.ERROR=4]="ERROR",e[e.SERVICE_UNAVAILABLE=5]="SERVICE_UNAVAILABLE",e[e.AUTHENTICATION_ERROR=6]="AUTHENTICATION_ERROR"})(x2||(x2={}));var v2;(function(e){e[e.UNKNOWN_STATUS=0]="UNKNOWN_STATUS",e[e.AVAILABLE=1]="AVAILABLE",e[e.USER_CONFIG_REQUIRED=2]="USER_CONFIG_REQUIRED"})(v2||(v2={}));var J2;(function(e){e[e.CONTENT_TYPE_UNSPECIFIED=0]="CONTENT_TYPE_UNSPECIFIED",e[e.CONTENT_TEXT=1]="CONTENT_TEXT",e[e.CONTENT_IMAGE=2]="CONTENT_IMAGE"})(J2||(J2={}));var k2;(function(e){e[e.TOOL_UNSAFE=0]="TOOL_UNSAFE",e[e.TOOL_SAFE=1]="TOOL_SAFE",e[e.TOOL_CHECK=2]="TOOL_CHECK"})(k2||(k2={}));var _2;(function(e){e[e.TRIGGER_CONDITION_TYPE_UNSPECIFIED=0]="TRIGGER_CONDITION_TYPE_UNSPECIFIED",e[e.TRIGGER_CONDITION_GITHUB=1]="TRIGGER_CONDITION_GITHUB",e[e.TRIGGER_CONDITION_LINEAR=2]="TRIGGER_CONDITION_LINEAR",e[e.TRIGGER_CONDITION_SCHEDULE=3]="TRIGGER_CONDITION_SCHEDULE"})(_2||(_2={}));var Q2;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CREDITS=1]="CREDITS",e[e.USD=2]="USD"})(Q2||(Q2={}));var jw={0:"unknown",1:"tenant",2:"user",CLOUD_EXPERT_SCOPE_UNKNOWN:"unknown",CLOUD_EXPERT_SCOPE_TENANT:"tenant",CLOUD_EXPERT_SCOPE_USER:"user",EXPERT_SCOPE_UNSPECIFIED:"unknown",EXPERT_SCOPE_TENANT:"tenant",EXPERT_SCOPE_USER:"user"},Pw={CLOUD_EXPERT_SCOPE_UNKNOWN:0,CLOUD_EXPERT_SCOPE_TENANT:1,CLOUD_EXPERT_SCOPE_USER:2,EXPERT_SCOPE_UNSPECIFIED:0,EXPERT_SCOPE_TENANT:1,EXPERT_SCOPE_USER:2},qw={CLOUD_EXPERT_SESSION_VISIBILITY_UNSPECIFIED:0,CLOUD_EXPERT_SESSION_VISIBILITY_SHARED:1,CLOUD_EXPERT_SESSION_VISIBILITY_PRIVATE:2},th={unspecified:0,builtin_capabilities:1,names:2};function eh(e){if(Array.isArray(e))return e.map(t=>eh(t));if(e!==null&&typeof e=="object"){let t={};for(let[n,o]of Object.entries(e))o!==void 0&&(t[n]=eh(o));return t}return e}function D2(e){let t=e.modified_at??e.modifiedAt;return{resourceVersion:e.resource_version??e.resourceVersion??0,config:e.config,scope:jw[e.scope??0]??"unknown",modifiedBy:e.modified_by??e.modifiedBy??"",modifiedAt:t?new Date(t):void 0,changeType:e.change_type??e.changeType??""}}function $w(e){return typeof e=="number"?e:typeof e=="string"?Pw[e]??0:0}function ex(e){if(typeof e=="number")return e;if(typeof e=="string"){let t=e.replace(/^(?:CLOUD_EXPERT_BUILTIN_CAPABILITY_|AGENT_CAPABILITY_)/,""),n=bo[t];return typeof n=="number"?n:void 0}}function tx(e){if(typeof e=="number")return e;if(typeof e=="string")return qw[e]}function nx(e){if(e.routing_target?.pool_id===void 0)return e.routing_target?.daemon_vm_id??e.daemon_vm_id}function L2(e,t,n){let o=e.capabilityNames??[],r=(e.builtinCapabilities??[]).map(c=>bo[c]??"UNKNOWN"),i=r.every(c=>c&&c!=="UNKNOWN"),l=i&&r.every(c=>o.includes(c)),s=i&&o.every(c=>r.includes(c));if(l&&s)return o;let a=new Error(`inconsistent capabilities from api call ${t}`);if(n(a),l)return o;if(s)return r;throw a}function ca(e){let t=e;return{name:t.name,description:t.description,initialMessages:t.initial_messages||[],builtinCapabilities:(t.builtin_capabilities||[]).map(n=>ex(n)??bo.UNKNOWN),...t.capability_names===void 0?{}:{capabilityNames:t.capability_names},...t.use_all_builtin_capabilities===void 0?{}:{useAllBuiltinCapabilities:t.use_all_builtin_capabilities},capabilityInstanceIds:t.capability_instance_ids||[],toolConfig:t.tool_config?{toolName:t.tool_config.tool_name,toolDescription:t.tool_config.tool_description,timeoutSeconds:t.tool_config.timeout_seconds,allowAsync:t.tool_config.allow_async}:void 0,sessionConfig:t.session_config?{model:t.session_config.model,reasoningEffort:t.session_config.reasoning_effort,includeDefaultSystemPrompt:t.session_config.include_default_system_prompt,systemPrompt:t.session_config.system_prompt,visibility:tx(t.session_config.visibility),userMetadata:t.session_config.user_metadata,autoCleanupOnIdle:t.session_config.auto_cleanup_on_idle}:void 0,vmConfig:t.vm_config?{baseImage:t.vm_config.base_image,snapshotId:t.vm_config.snapshot_id,cpuCores:t.vm_config.cpu_cores,memoryMib:t.vm_config.memory_mib,timeoutSeconds:t.vm_config.timeout_seconds,idleTimeoutSeconds:t.vm_config.idle_timeout_seconds,installGitCredentials:t.vm_config.install_git_credentials,installUserSecrets:t.vm_config.install_user_secrets,imageSource:t.vm_config.image_source,baseImageId:t.vm_config.base_image_id,cloneRepos:(t.vm_config.clone_repos||[]).map(n=>({owner:n.owner,name:n.name,branch:n.branch})),resources:t.vm_config.resources?{cpuCores:t.vm_config.resources.cpu_cores,memoryMib:t.vm_config.resources.memory_mib}:void 0,baseImageCurrentVersion:t.vm_config.base_image_current_version,environmentVariables:t.vm_config.environment_variables?{variables:(t.vm_config.environment_variables.variables||[]).map(n=>({name:n.name,value:n.value}))}:void 0}:void 0,daemonVmId:nx(t),poolId:t.routing_target?.pool_id,workerExpertIds:t.worker_expert_ids||[],useAllExpertsAsWorkers:t.use_all_experts_as_workers??!1,userInstructions:t.user_instructions,placeholderText:t.placeholder_text,mcpConfigIds:t.mcp_config_ids||[],hidden:t.hidden??!1,...t.tags&&Object.keys(t.tags).length>0?{tags:t.tags}:{}}}function H2(e){return{expertId:e.expert_id,slug:e.slug,scope:$w(e.scope),config:e.config?ca(e.config):void 0,userId:e.user_id,createdAt:e.created_at?new Date(e.created_at):void 0,updatedAt:e.updated_at?new Date(e.updated_at):void 0,resourceVersion:e.resource_version,deletedAt:e.deleted_at?new Date(e.deleted_at):void 0,effectiveRole:e.effective_role||void 0,...e.space_summary?{spaceSummary:{spaceId:e.space_summary.space_id??"",displayName:e.space_summary.display_name??""}}:{}}}function z2(e){let t=e?.trim();return t&&t.length>0?t:void 0}function ox(e,t){if(e!==void 0)return{pool_id:e};if(t!==void 0)return{daemon_vm_id:t}}function nh(e){let t=e.mcpConfigIds!==void 0,n=e.mcpConfigIds??[],o=e.tags!==void 0,r=z2(e.poolId),i=z2(e.daemonVmId),l={name:e.name,description:e.description,initial_messages:e.initialMessages||[],builtin_capabilities:e.builtinCapabilities||[],capability_names:e.capabilityNames,use_all_builtin_capabilities:e.useAllBuiltinCapabilities,capability_instance_ids:e.capabilityInstanceIds||[],tool_config:e.toolConfig?{tool_name:e.toolConfig.toolName,tool_description:e.toolConfig.toolDescription,timeout_seconds:e.toolConfig.timeoutSeconds,allow_async:e.toolConfig.allowAsync}:void 0,session_config:e.sessionConfig?{model:e.sessionConfig.model,reasoning_effort:e.sessionConfig.reasoningEffort,include_default_system_prompt:e.sessionConfig.includeDefaultSystemPrompt,system_prompt:e.sessionConfig.systemPrompt,visibility:e.sessionConfig.visibility,user_metadata:e.sessionConfig.userMetadata,auto_cleanup_on_idle:e.sessionConfig.autoCleanupOnIdle}:void 0,vm_config:e.vmConfig?{base_image:e.vmConfig.baseImage,snapshot_id:e.vmConfig.snapshotId,cpu_cores:e.vmConfig.cpuCores,memory_mib:e.vmConfig.memoryMib,timeout_seconds:e.vmConfig.timeoutSeconds,idle_timeout_seconds:e.vmConfig.idleTimeoutSeconds,install_git_credentials:e.vmConfig.installGitCredentials,install_user_secrets:e.vmConfig.installUserSecrets,image_source:e.vmConfig.imageSource,base_image_id:e.vmConfig.baseImageId,clone_repos:(e.vmConfig.cloneRepos||[]).map(s=>({owner:s.owner,name:s.name,branch:s.branch})),resources:e.vmConfig.resources?{cpu_cores:e.vmConfig.resources.cpuCores,memory_mib:e.vmConfig.resources.memoryMib}:void 0,base_image_current_version:e.vmConfig.baseImageCurrentVersion,environment_variables:e.vmConfig.environmentVariables?{variables:e.vmConfig.environmentVariables.variables.map(s=>({name:s.name,value:s.value}))}:void 0}:void 0,routing_target:ox(r,i),worker_expert_ids:e.useAllExpertsAsWorkers?[]:e.workerExpertIds||[],use_all_experts_as_workers:e.useAllExpertsAsWorkers??!1,user_instructions:e.userInstructions,placeholder_text:e.placeholderText,mcp_config_ids:n,has_mcp_config_ids:t,hidden:e.hidden??!1,tags:e.tags,has_tags:o?!0:void 0};return eh(l)}var oh={apiCallTimeoutMs:3e4,imageBuildTimeoutMs:6e5,environmentSnapshotUpdateTimeoutMs:6e5,maxRetries:3,retryBaseDelayMs:500};var rx={EVENT_SOURCE_TYPE_SLACK:1,EVENT_SOURCE_TYPE_GITHUB:2,EVENT_SOURCE_TYPE_LINEAR:3,EVENT_SOURCE_TYPE_WEBHOOK:4,EVENT_SOURCE_TYPE_SCHEDULED:5,EVENT_SOURCE_TYPE_PAGERDUTY:6,EVENT_SOURCE_TYPE_JIRA:7,EVENT_SOURCE_TYPE_CONFLUENCE:8,EVENT_SOURCE_TYPE_GITLAB:9,EVENT_SOURCE_TYPE_TEAMS:10,EVENT_SOURCE_TYPE_AZURE_DEVOPS:11};function ix(e){if(typeof e=="number")return e;if(typeof e=="string")return rx[e]??void 0}function M2(e){if(typeof e=="number")return e;if(typeof e=="string"){let t=Number(e);return Number.isFinite(t)?t:void 0}}function Nn(e){let t=e,n=t.workflow_id??t.workflowId??"",o=t.slug??"",r=t.event_source_id??t.eventSourceId??"",i=t.expert_id??t.expertId??"",l=M2(t.resource_version??t.resourceVersion),s=t.created_at??t.createdAt,a=t.override_auto_cleanup_on_idle??t.overrideAutoCleanupOnIdle,c=t.initial_instructions??t.initialInstructions,d=t.actor_user_id??t.actorUserId,u=t.per_minute_create_agent_limit??t.perMinuteCreateAgentLimit,h=typeof u=="number"?u:void 0;return{workflowId:n,...o?{slug:o}:{},eventSourceId:r,name:e.name??"",description:e.description,enabled:e.enabled??!0,...typeof a=="boolean"?{overrideAutoCleanupOnIdle:a}:{},...typeof c=="string"?{initialInstructions:c}:{},...typeof d=="string"?{actorUserId:d}:{},...h===void 0?{}:{perMinuteCreateAgentLimit:h},expertId:i,resourceVersion:l,createdAt:s?new Date(s):void 0,raw:e}}function Ao(e){let t=e,n=t.event_source_id??t.eventSourceId??"",o=t.slug??"",r=ix(t.event_source_type??t.eventSourceType),i=t.user_id??t.userId,l=t.tenant_id??t.tenantId,s=M2(t.resource_version??t.resourceVersion),a=t.created_at??t.createdAt;return{eventSourceId:n,...o?{slug:o}:{},eventSourceType:r,name:e.name??n,active:e.active??!0,userId:i,tenantId:l,resourceVersion:s,createdAt:a?new Date(a):void 0,raw:e}}function O2(e,t=64){if(!e)return;let n=e.replace(/[^a-zA-Z0-9!#$%&'*+-.^_`|~]/g,"").slice(0,t);return n.length>0?n:void 0}function rh(e){if(!e)return;let t=e.split("/").map(n=>O2(n)).filter(n=>!!n);return t.length>0?t.join("/"):void 0}var ax={debug:()=>{},error:()=>{},info:()=>{},warn:()=>{}},cx={0:"ok",1:"cancelled",2:"unknown",3:"unavailable",4:"unimplemented",5:"invalidArgument",6:"resourceExhausted",7:"unauthenticated",8:"permissionDenied",9:"deadlineExceeded",10:"augmentTooLarge",11:"augmentClientTimeout",12:"augmentUpgradeRequired"},P2=500,ih=3e4,Ar=class extends St{apiStatus;originalError;errorDetails;responseBodyMessage;responseBodyText;httpUrl;httpStatus;httpRetryAfter;retryBehavior;isRetriable;shouldBackoff;requestId;constructor(t,n,o,r={}){super(n?.status??0,n?.statusText??"",r.responseBodyText??"",r.responseBodyMessage,r.errorReason??r.errorDetails),t!==void 0&&(this.message=t),this.name="APIError",this.apiStatus=n?dx(n.status):3,this.originalError=r.originalError,this.errorDetails=r.errorDetails,this.responseBodyMessage=r.responseBodyMessage,this.responseBodyText=r.responseBodyText,this.httpUrl=hx(n?.url),this.httpStatus=n?.status;let i=n?.headers.get("retry-after");this.httpRetryAfter=i?gx(i):void 0,this.retryBehavior=ux(n?.status),this.isRetriable=this.status===1||this.status===3,this.shouldBackoff=n?.status===429,this.requestId=n?.headers.get("x-request-id")??o}get status(){return this.apiStatus}},fa=class extends Error{status=3;isRetriable=!0;shouldBackoff=!1;originalError;constructor(t,n){super(t,{cause:n}),this.name="APITransportError",this.originalError=n}};function dx(e){let t={400:5,401:7,403:8,404:4,408:11,413:10,426:12,429:6,499:1,504:9};return t[e]!==void 0?t[e]:e>=500&&e<600?3:2}function ux(e){if(e===429||e===503)return"retry";if(e===402||e===403)return"sinkhole"}function hx(e){try{return e?new URL(e):void 0}catch{return}}function bx(e){return e.length>P2?`${e.slice(0,P2)}\u2026(truncated, ${e.length} chars total)`:e}function Ax(e){try{return JSON.stringify(e).length}catch{return 0}}function fx(e){let t="0123456789ABCDEFGHJKMNPQRSTVWXYZ",n=0n;if(e.length!==26)throw new Error("agent id is not a 26-character ULID");for(let r of e.toUpperCase()){let i=t.indexOf(r);if(i<0)throw new Error("agent id contains an invalid ULID character");n=n*32n+BigInt(i)}let o=n.toString(16).padStart(32,"0").slice(-32);return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20)}`}function Vx(e,t){return t?.aborted?!1:e instanceof Ar?[1,4,8].includes(e.status)?!1:e.httpStatus!==402:!(e instanceof St&&e.statusCode===402)}async function mx(e,t){let n=await e.text(),o=n.trim()?bx(n.trim()):void 0,r,i,l;try{let s=JSON.parse(n);i=s.error_details,l=s.error_reason??s.errorReason,typeof s.error=="string"?r=s.error:typeof s.message=="string"&&(r=s.message)}catch{}return new Ar(void 0,e,t,{errorDetails:i,errorReason:l,responseBodyMessage:r,responseBodyText:o})}function gx(e){let t=Number(e);if(Number.isFinite(t))return new Date(Date.now()+t*1e3);let n=new Date(e);return Number.isNaN(n.getTime())?void 0:n}function Ex(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function px(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function br(e){return Array.isArray(e)?e.map(br):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([t,n])=>[px(t),br(n)]))}function Rx(e,t){if(typeof e!="string")throw new Error(`Expected ${t} to be a string`);return e}function lh(e,t){if(!Array.isArray(e)||e.some(n=>typeof n!="string"))throw new Error(`Expected ${t} to be an array of strings`);return e}function Zx(e){if(typeof e=="number")return e;if(typeof e=="string")return ar[e]??ar.REASON_UNSPECIFIED}function Sx(e){if(!e||typeof e!="object")return;let t=e;return{...typeof t.code=="number"?{code:t.code}:{},...typeof t.message=="string"?{message:t.message}:{},...typeof t.detail=="string"?{detail:t.detail}:{}}}function Aa(e){return{checkpoint_id:e.checkpointId,added_blobs:e.addedBlobs,deleted_blobs:e.deletedBlobs}}function Xx(e,t){if(!t)return{};if(e===13||e===14)return{extra_tool_input:{atlassian_tool_extra_input:{server_url:t.serverUrl,personal_api_token:t.personalApiToken,username:t.username}}};let n;return e===15?n="notion_tool_extra_input":e===12?n="linear_tool_extra_input":e===8&&(n="github_tool_extra_input"),n?{extra_tool_input:{[n]:{api_token:t.apiToken}}}:{}}function Wx(e){let t={},n={enableParallelTools:"enable_parallel_tool_use",language:"lang",pathName:"path",senderUserId:"poseidon_sender_user_id",thirdPartyOverride:"third_party_override"};for(let[o,r]of Object.entries(e))o==="signal"||o==="sessionId"||r===void 0||(t[n[o]??Ex(o)]=o==="blobs"?Aa(r):r);return t.tool_definitions??=[],t.nodes??=[],t.rules??=[],t.skills??=[],t.mode??="CHAT",t.feature_detection_flags={support_tool_use_start:e.enableSupportToolUseStart,support_parallel_tool_use:e.enableParallelTools},t}function Gx(e){if(typeof e!="string")return"unknown";let t=e.toLowerCase().replace("_tier","");return t==="community"||t==="professional"||t==="enterprise"?t:"unknown"}var Va={UNSPECIFIED:0,SECRET_URL:1,TENANT:2};function Ix(e){if(!e.startsWith("https://"))return!1;try{return new URL(e).hostname!==""}catch{return!1}}var Nx={"secret-url":Va.SECRET_URL,tenant:Va.TENANT};function Fx(e,t){return e===Va.TENANT||e==="HOSTED_ARTIFACT_VISIBILITY_TENANT"?"tenant":e===Va.SECRET_URL||e==="HOSTED_ARTIFACT_VISIBILITY_SECRET_URL"?"secret-url":t}function Bx(e){let t=typeof e.size_bytes=="string"?Number(e.size_bytes):e.size_bytes??0;return{hostedArtifactId:e.hosted_artifact_id??"",visibility:Fx(e.visibility,"secret-url"),mediaType:e.media_type??"",sizeBytes:t,sha256Hex:e.sha256_hex??"",label:e.label??"",ownerUserId:e.owner_user_id??"",canonicalUrl:e.canonical_url??"",createdAt:e.created_at??"",expiresAt:e.expires_at??""}}var sh="environment",Yx={1:"pending",2:"running",3:"cancel_requested",4:"succeeded",5:"failed",6:"canceled"},Cx={1:"queued",2:"preparing",3:"building",4:"promoting",6:"building"},Ux=5,yx={[nn.BASE_IMAGE_REBUILD]:"build",[nn.BASE_IMAGE_BUILD]:"build",[nn.REFRESH]:"refresh",[nn.REPOSITORY_RECONCILE]:"reconcile",[Ux]:"update"};function wx(e){if(e===void 0)return"build";if(e!==nn.UNSPECIFIED)return yx[e]??"unknown"}function q2({sandboxProviderId:e,displayName:t,description:n,visibility:o,baseImage:r,refreshEnabled:i,repos:l,environmentVariables:s,tags:a,spaceId:c}){return{config:{...e===void 0?{}:{sandbox_provider_id:e},display_name:t,description:n,visibility:o,...l?{repos:l.map(d=>({owner:d.owner,name:d.name,branch:d.branch,...d.host?{host:d.host}:{},...d.project?{project:d.project}:{}}))}:{},...s?{environment_variables:{variables:s.variables.map(d=>({name:d.name,value:d.value}))}}:{},...i===void 0?{}:{refresh_enabled:i},tags:a??{},...c===void 0?{}:{space_id:c}},...r?{base_image:r}:{}}}function $2({imageId:e,sandboxProviderId:t,displayName:n,description:o,visibility:r,baseImage:i,refreshEnabled:l,repos:s,environmentVariables:a,expectedResourceVersion:c,tags:d,spaceId:u}){return{image_id:e,...t===void 0?{}:{sandbox_provider_id:t},...n===void 0?{}:{display_name:n},...o===void 0?{}:{description:o},...r===void 0?{}:{visibility:r},...i===void 0?{}:{base_image:i},...l===void 0?{}:{refresh_enabled:l},...s?{repos:s.map(h=>({owner:h.owner,name:h.name,...h.branch?{branch:h.branch}:{},...h.host?{host:h.host}:{},...h.project?{project:h.project}:{}})),has_repos:!0}:{},...a?{environment_variables:{variables:a.variables.map(h=>({name:h.name,value:h.value}))}}:{},...c===void 0?{}:{expected_resource_version:c},...d===void 0?{}:{tags:d,has_tags:!0},...u===void 0?{}:{space_id:u}}}function xx(e){return{eventId:e.event_id??"",source:e.source??"",eventType:e.event_type??"",payloadJson:e.payload_json??"",receivedAt:e.received_at?new Date(e.received_at):void 0,tenantId:e.tenant_id,userId:e.user_id,webhookId:e.webhook_id||void 0}}var vx=50,ah="expert",Jx=1e3;function ch(e){return{groupId:e.group_id??"",name:e.name??"",description:e.description??"",createdBy:e.created_by??"",createdAt:e.created_at??"",updatedAt:e.updated_at??""}}function kx(e){switch(e){case 1:case"CLOUD_GROUP_MEMBER_KIND_HUMAN":return"human";case 2:case"CLOUD_GROUP_MEMBER_KIND_SERVICE_ACCOUNT":return"service_account";default:return"unspecified"}}function _x(e){return{userId:e.user_id??"",addedAt:e.added_at??"",addedBy:e.added_by??"",email:e.email??"",givenName:e.given_name??"",familyName:e.family_name??"",addedByName:e.added_by_name??"",principalKind:kx(e.principal_kind),serviceName:e.service_name??""}}function eS(e,t){let n=t.members??[],o=t.serviceAccounts??[];return o.length===0?{group_id:e,members:n}:{group_id:e,selectors:[...n.map(r=>({member:r})),...o.map(r=>({service_account:r}))]}}var Qx="This deployment does not support service-account selectors yet. Pass the service account's user id as a member instead.";function Kx(e,t){return t.selectors===void 0||t.members!==void 0||!(e instanceof St)||e.statusCode!==400?!1:[e.serverMessage,e.responseBody,e.message].some(n=>n!==void 0&&/\bmembers is required\b/.test(n))}async function tS(e,t){try{return await e()}catch(n){throw Kx(n,t)?new Error(Qx):n}}function nS(e){return{id:e.id??"",label:e.label??"",description:e.description??"",connected:e.connected??!1,statusKind:e.status_kind??"",statusLabel:e.status_label??"",details:(e.details??[]).map(t=>({key:t.key??"",label:t.label??"",value:t.value??""})),actions:(e.actions??[]).map(t=>({kind:t.kind??"",label:t.label??"",url:t.url??""}))}}var Tx=404,oS={UNSPECIFIED:0,USER:1,TENANT:2},zx={user:oS.USER,tenant:oS.TENANT},dh="daemon_pool";function Dx(e){return e===1||e==="1"||e==="DAEMON_POOL_WORKSPACE_ISOLATION_POLICY_FORCE_ISOLATED"||e==="CLOUD_DAEMON_POOL_WORKSPACE_ISOLATION_POLICY_FORCE_ISOLATED"?"isolated":e===2||e==="2"||e==="DAEMON_POOL_WORKSPACE_ISOLATION_POLICY_FORCE_SHARED"||e==="CLOUD_DAEMON_POOL_WORKSPACE_ISOLATION_POLICY_FORCE_SHARED"?"shared":"unspecified"}var uh="sandbox_backend";function Lx(e){return e.provider_type===1||e.provider_type==="CLOUD_SANDBOX_PROVIDER_TYPE_SYSTEM_MANAGED"?"system-managed":(e.provider_type===2||e.provider_type==="CLOUD_SANDBOX_PROVIDER_TYPE_USER_MANAGED","user-managed")}function fo(e){return{id:e.id??"",slug:e.slug??"",displayName:e.display_name??e.slug??"",description:e.description||void 0,type:Lx(e),enabled:e.enabled===!0,createdByUserId:e.created_by_user_id||void 0,createdAt:e.created_at?new Date(e.created_at):void 0,updatedAt:e.updated_at?new Date(e.updated_at):void 0,resourceVersion:String(e.resource_version??""),deletedAt:e.deleted_at?new Date(e.deleted_at):void 0,spaceIds:e.space_ids??[],allSpaces:e.all_spaces??e.space_ids===void 0}}function rS({connectorUserId:e,connectorServiceAccount:t}){if(e!==void 0&&t!==void 0)throw new Error("Use only one of connectorUserId or connectorServiceAccount.");if(e!==void 0)return{user_id:e};if(t!==void 0)return{service_account_name:t}}function da(e){let t=e.connector,n=Hx(e.resource_version);return{id:e.id??"",displayName:e.display_name??e.id??"",description:e.description,visibility:e.visibility,daemonConnectorUserId:e.daemon_connector_user_id??(typeof t?.user_id=="string"?t.user_id:void 0),daemonConnectorServiceAccountName:e.daemon_connector_service_account_name??(typeof t?.service_account_name=="string"?t.service_account_name:void 0),spaceId:e.space_id,workspaceIsolation:Dx(e.workspace_isolation_policy??e.workspace_isolation),createdByUserId:e.created_by_user_id,createdByUserName:e.created_by_user_name,createdAt:e.created_at?new Date(e.created_at):void 0,updatedAt:e.updated_at?new Date(e.updated_at):void 0,resourceVersion:n}}function Hx(e){if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isInteger(t)&&t>=0?t:void 0}}function Mx(e){if(e)return{daemonsOnline:e.daemons_online,slotsTotal:e.slots_total,slotsInUse:e.slots_in_use,lastDaemonSeen:e.last_daemon_seen?new Date(e.last_daemon_seen):void 0}}function Ox(e){return{vmId:e.vm_id??"",name:e.name,slotsTotal:e.slots_total,slotsInUse:e.slots_in_use,workspacePath:e.workspace_path,connectedAt:e.connected_at?new Date(e.connected_at):void 0,lastHeartbeat:e.last_heartbeat?new Date(e.last_heartbeat):void 0,poolId:e.pool_id,cliVersion:e.cli_version}}function jx(e){return{agentId:e.agent_id??"",addedAt:e.added_at??""}}function yi(e){return{projectId:e.project_id??"",name:e.name??"",description:e.description??"",createdAt:e.created_at??"",updatedAt:e.updated_at??"",createdBy:e.created_by??"",agents:(e.agents??[]).map(jx)}}var hh="resident";function hS(e){return typeof e=="number"?e:e==="CLOUD_RESIDENT_SCOPE_TENANT"?1:e==="CLOUD_RESIDENT_SCOPE_USER"?2:0}function Px(e){let t;return e.vm_config!=null?t={type:"base_image",vmConfig:{baseImageId:e.vm_config.base_image_id,...e.vm_config.resources==null?{}:{resources:{cpuCores:e.vm_config.resources.cpu_cores,memoryMib:e.vm_config.resources.memory_mib}}}}:e.daemon_vm_id!=null?t={type:"daemon",daemonVmId:e.daemon_vm_id}:e.daemon_pool_id!=null&&(t={type:"pool",daemonPoolId:e.daemon_pool_id}),{...e.model===void 0?{}:{model:e.model},...e.reasoning_effort===void 0?{}:{reasoningEffort:e.reasoning_effort},...t===void 0?{}:{environment:t}}}function qx(e){return{...e.slack?{slack:{mentionable:e.slack.mentionable??!1,...e.slack.usergroup_handle===void 0?{}:{usergroupHandle:e.slack.usergroup_handle},...e.slack.home_channel_id===void 0?{}:{homeChannelId:e.slack.home_channel_id},...e.slack.direct_messages_enabled===void 0?{}:{directMessagesEnabled:e.slack.direct_messages_enabled}}}:{}}}function $x(e){return{...e.slack?{slack:{...e.slack.subteam_id===void 0?{}:{subteamId:e.slack.subteam_id},...e.slack.last_synced_at?{lastSyncedAt:new Date(e.slack.last_synced_at)}:{},...e.slack.error===void 0?{}:{error:e.slack.error}}}:{}}}function bS(e){return{name:e.name,description:e.description,expertId:e.expert_id,initialMessage:e.initial_message,overrides:e.overrides?Px(e.overrides):void 0,runAsUserId:e.run_as_user_id,presence:e.presence?qx(e.presence):void 0,icon:e.icon,tags:e.tags??{}}}function Vo(e){return{residentId:e.resident_id,scope:hS(e.scope),config:e.config?bS(e.config):void 0,userId:e.user_id,createdAt:e.created_at?new Date(e.created_at):void 0,updatedAt:e.updated_at?new Date(e.updated_at):void 0,resourceVersion:e.resource_version,currentAgentId:e.current_agent_id,startedAt:e.started_at?new Date(e.started_at):void 0,effectiveRole:e.effective_role||void 0,deletedAt:e.deleted_at?new Date(e.deleted_at):void 0,presenceStatus:e.presence_status?$x(e.presence_status):void 0,...e.space_summary?{spaceSummary:{spaceId:e.space_summary.space_id??"",displayName:e.space_summary.display_name??""}}:{}}}function ev(e){return{agentId:e.agent_id,status:e.status??"",startedAt:e.started_at?new Date(e.started_at):void 0,endedAt:e.ended_at?new Date(e.ended_at):void 0}}function iS(e){return{resourceVersion:e.resource_version??0,config:e.config?bS(e.config):void 0,scope:hS(e.scope),modifiedBy:e.modified_by??"",modifiedAt:e.modified_at?new Date(e.modified_at):void 0,changeType:e.change_type??""}}function tv(e){let t={};e.model!==void 0&&(t.model=e.model),e.reasoningEffort!==void 0&&(t.reasoning_effort=e.reasoningEffort);let n=e.environment;if(n)switch(n.type){case"base_image":t.vm_config={base_image_id:n.vmConfig.baseImageId,...n.vmConfig.resources==null?{}:{resources:{cpu_cores:n.vmConfig.resources.cpuCores,memory_mib:n.vmConfig.resources.memoryMib}}};break;case"daemon":t.daemon_vm_id=n.daemonVmId;break;case"pool":t.daemon_pool_id=n.daemonPoolId;break}return t}function nv(e){let t={};return e.slack&&(t.slack={mentionable:e.slack.mentionable,...e.slack.usergroupHandle===void 0?{}:{usergroup_handle:e.slack.usergroupHandle},...e.slack.homeChannelId===void 0?{}:{home_channel_id:e.slack.homeChannelId},...e.slack.directMessagesEnabled===void 0?{}:{direct_messages_enabled:e.slack.directMessagesEnabled}}),t}function lS(e){return{name:e.name,...e.description===void 0?{}:{description:e.description},expert_id:e.expertId,...e.initialMessage===void 0?{}:{initial_message:e.initialMessage},...e.overrides===void 0?{}:{overrides:tv(e.overrides)},...e.runAsUserId===void 0?{}:{run_as_user_id:e.runAsUserId},...e.presence===void 0?{}:{presence:nv(e.presence)},...e.icon===void 0?{}:{icon:e.icon},...e.tags===void 0?{}:{tags:e.tags,has_tags:!0}}}var ov={personal:1,space:2,organization:3},AS={user:1,tenant:2};function rv(e){let t={name:e.name,scope:AS[e.scope]};if(e.value!==void 0&&(t.value=e.value),e.expectedVersion!==void 0?t.expected_version=e.expectedVersion:e.secretId===void 0&&(t.expected_version="0"),e.secretId===void 0){if(e.applicability===void 0)throw new Error("applicability is required for stable create");if(e.value===void 0)throw new Error("value is required for stable create");t.applicability=ov[e.applicability]}else t.secret_id=e.secretId,e.value===void 0&&(t.preserve_value=!0);return iv(t,e),lv(t,e),t}function iv(e,t){if(t.allSpaces===!0&&(t.spaceIds?.length??0)>0)throw new Error("allSpaces and non-empty spaceIds are mutually exclusive");if(t.allSpaces===!0){e.update_spaces=!0,e.all_spaces=!0,e.space_ids=[];return}(t.applicability==="space"||t.spaceIds!==void 0)&&(e.update_spaces=!0,e.all_spaces=!1,e.space_ids=[...t.spaceIds??[]].sort())}function lv(e,t){t.description!==void 0&&(e.description=t.description,t.secretId!==void 0&&(e.update_description=!0)),t.tags!==void 0&&(e.tags=t.tags,t.secretId!==void 0&&(e.update_tags=!0))}var wi={user:1,tenant:2};function sv(e){switch(e){case 1:case"SECRET_APPLICABILITY_PERSONAL":return"personal";case 2:case"SECRET_APPLICABILITY_SPACE":return"space";case 3:case"SECRET_APPLICABILITY_ORGANIZATION":return"organization";default:return}}function ua(e,t,n){let o=sv(e.applicability),r=o!==void 0||Array.isArray(e.space_ids)||typeof e.all_spaces=="boolean",i;r&&(i=Array.isArray(e.space_ids)?e.space_ids.filter(s=>typeof s=="string"):[]);let l=r?e.all_spaces===!0:void 0;return{name:e.name??t,scope:n,description:e.description??"",tags:e.tags??{},version:e.version??"",createdAt:e.created_at??"",updatedAt:e.updated_at??"",valueSizeBytes:e.value_size_bytes??0,...i===void 0?{}:{spaceIds:i},...l===void 0?{}:{allSpaces:l},...o===void 0?{}:{applicability:o},...e.secret_id===void 0?{}:{secretId:e.secret_id},...e.olac_ready===void 0?{}:{olacReady:e.olac_ready}}}function av(e){if(e===void 0)return;let t=Object.entries(e);return t.length===0?void 0:t.map(([n,o])=>({key:n,values:[o]}))}var bh="secret",Fn=D.child({prefix:"cloud-http"});var fS=1e4,cv=2,dv={UNKNOWN:0,TOOL_PROVIDER:1,AGENT:2,WAITING:3},uv=["vfs_space_id","command_handler_ready","mcp_credential_revision","desktop_ensure","mcp_targeted_credential_update","mcp_target_material_v1","mcp_passive_credential_install_v1","mcp_target_material_stdio_v1","provisioning_generation"],hv={0:"UNKNOWN",1:"IDLE",2:"PROCESSING",3:"TERMINATED",4:"COMPLETED",5:"STARTING",6:"WAITING_FOR_INPUT"},bv={0:"unspecified",1:"CLI",2:"cloud VM",3:"local daemon",AGENT_EXECUTION_ENVIRONMENT_UNSPECIFIED:"unspecified",AGENT_EXECUTION_ENVIRONMENT_CLI:"CLI",AGENT_EXECUTION_ENVIRONMENT_MODAL_VM:"cloud VM",AGENT_EXECUTION_ENVIRONMENT_DAEMON:"local daemon"};function sS(e,t,n){if(typeof e!="string"&&typeof e!="number")return;let o=String(e);return o in t?t[o]??o:o.startsWith(n)?o.slice(n.length):o}function aS(e){return e instanceof Date?e.toISOString():e}function Av(e={}){let t={limit:e.limit??100};return e.parentAgentId&&(t.parent_agent_id=e.parentAgentId),e.includeOlacShared!==void 0&&(t.include_olac_shared=e.includeOlacShared),e.spaceId&&(t.space_id=e.spaceId),e.searchQuery&&(t.search_query=e.searchQuery),e.includeArchived&&(t.include_archived=!0),e.expertId&&(t.expert_id=e.expertId),e.createdAfter&&(t.created_after=aS(e.createdAfter)),e.createdBefore&&(t.created_before=aS(e.createdBefore)),(e.includeShared!==void 0||e.includeTenantShared!==void 0)&&(t.include_shared=e.includeShared??e.includeTenantShared),e.defaultSpaceOnly&&(t.default_space_only=!0),e.pageToken&&(t.page_token=e.pageToken),t}function ur(e){let t=o=>typeof o=="string"?new Date(o):void 0,n=o=>typeof o=="string"&&o?o:void 0;return{agentId:n(e.agent_id)??"",agentName:n(e.agent_name)??"",status:sS(e.status,hv,"CLOUD_AGENT_STATUS_"),...Array.isArray(e.capabilities)?{capabilities:e.capabilities.filter(o=>typeof o=="number")}:{},createdAt:t(e.created_at),updatedAt:t(e.updated_at),...Array.isArray(e.tags)?{tags:e.tags.filter(o=>typeof o=="string")}:{},expertId:n(e.expert_id),spaceId:n(e.space_id),workflowId:n(e.workflow_id),environmentId:n(e.environment_id),daemonId:n(e.daemon_id),daemonPoolId:n(e.daemon_pool_id),parentAgentId:n(e.parent_agent_id),...typeof e.archived=="boolean"?{archived:e.archived}:{},...e.execution_environment===void 0?{}:{executionEnvironment:sS(e.execution_environment,bv,"AGENT_EXECUTION_ENVIRONMENT_")}}}function fv(e,t){let n={agent_id:e.agentId,workspace_path:e.workspacePath,connection_mode:t,available_tools:[],client_capabilities:[...uv]};return e.vmId!==void 0&&(n.vm_id=e.vmId),e.capabilityInstanceId&&(n.capability_instance_id=e.capabilityInstanceId),e.provisioningGeneration!==void 0&&(n.provisioning_generation=e.provisioningGeneration),e.parentVmId!==void 0&&(n.parent_vm_id=e.parentVmId),e.daemonCommandId!==void 0&&(n.daemon_command_id=e.daemonCommandId),e.cliVersion&&(n.cli_version=e.cliVersion),n}function Vv(e,t,n){let o={vmId:n,agentId:e.agentId},r=t.active_generation_epoch;typeof r=="number"&&Number.isSafeInteger(r)&&r>=0&&(o.activeGenerationEpoch=r);let i=t.connection_version;typeof i=="number"&&Number.isSafeInteger(i)&&i>0&&(o.connectionVersion=i),t.session_config&&(o.sessionConfig=mv(t.session_config));let l=gv(t.remote_tools);return l.length>0&&(o.remoteTools=l),t.vfs_filesystems&&Object.keys(t.vfs_filesystems).length>0&&(o.vfsFilesystems=t.vfs_filesystems),t.space_id&&(o.spaceId=t.space_id),t.expert_id&&(o.expertId=t.expert_id),t.workflow_id&&(o.workflowId=t.workflow_id),o}function mv(e){return{systemPrompt:e.system_prompt,includeDefaultSystemPrompt:e.include_default_system_prompt,model:e.model,reasoningEffort:e.reasoning_effort??e.reasoningEffort,userMetadata:e.user_metadata,useAllExpertsAsWorkers:e.use_all_experts_as_workers}}function gv(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!="object")continue;let o=n,r=typeof o.name=="string"?o.name:"";r&&t.push({name:r,description:typeof o.description=="string"?o.description:"",inputSchemaJson:typeof o.input_schema_json=="string"?o.input_schema_json:"",toolSafety:typeof o.tool_safety=="string"?o.tool_safety:""})}return t}function mo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hr(e,...t){for(let n of t){let o=e[n];if(mo(o))return o}}function ve(e,...t){for(let n of t){let o=e[n];if(typeof o=="string")return o}}function Ev(e){if(!mo(e))return{};let t={},n=ve(e,"stop_reason","stopReason"),o=e.is_partial??e.isPartial,r=e.is_final??e.isFinal;return n!==void 0&&(t.stopReason=n),typeof o=="boolean"&&(t.isPartial=o),typeof r=="boolean"&&(t.isFinal=r),t}function pv(e,t){let n=[];if(Array.isArray(e.content))for(let r of e.content){let i=Rv(r);if(i!==null){n.push(i);continue}if(r==null||Zv(r))continue;let l=mo(r)?`object keys=[${Object.keys(r).join(",")}]`:`type=${typeof r}`;Fn.warn(`getMessages: dropping unparseable content block in agent ${t} message ${e.id??"<unknown>"}: ${l}`)}let o=n.filter(r=>r.kind==="text").map(r=>r.text).join("");return{messageId:e.id??"",role:e.role??"",content:o,contentBlocks:n,createdAt:e.created_at?new Date(e.created_at):void 0,...Ev(e.metadata)}}function Rv(e){if(typeof e=="string")return e.trim().length>0?{kind:"text",text:e}:null;if(!mo(e))return null;let t=mo(e.block)?e.block:e,n=hr(t,"text","Text");if(n){let s=ve(n,"text");if(s!==void 0&&s.trim().length>0)return{kind:"text",text:s}}let o=hr(t,"tool_use","toolUse","ToolUse");if(o){let s=ve(o,"id"),a=ve(o,"name");if(!s||!a)return null;let c=ve(o,"input");return{kind:"tool_use",toolUseId:s,toolName:a,inputJson:c&&c.trim().length>0?c:"{}"}}let r=hr(t,"tool_result","toolResult","ToolResult");if(r){let s=ve(r,"tool_use_id","toolUseId");if(!s)return null;let a=r.is_error??r.isError;return{kind:"tool_result",toolUseId:s,content:ve(r,"content")??"",isError:typeof a=="boolean"?a:!1}}let i=hr(t,"thinking","Thinking");if(i){let s=ve(i,"content"),a=ve(i,"summary"),c=ve(i,"encrypted_content","encryptedContent"),d=ve(i,"provider");if(s!==void 0||a!==void 0||c!==void 0)return{kind:"thinking",content:s??"",...a===void 0?{}:{summary:a},...c===void 0?{}:{encryptedContent:c},...d===void 0?{}:{provider:d}}}let l=hr(t,"external_event","externalEvent","ExternalEvent");if(l){let s=ve(l,"source")??"",a=ve(l,"event_type","eventType")??"",c=ve(l,"summary")??"";return s===""&&a===""&&c===""?null:{kind:"external_event",source:s,eventType:a,summary:c,details:ve(l,"details")??"",subscriptionId:ve(l,"subscription_id","subscriptionId")}}return null}function Zv(e){if(typeof e=="string")return e.trim().length===0;if(!mo(e))return!1;let t=mo(e.block)?e.block:e,n=hr(t,"text","Text");if(!n)return!1;let o=ve(n,"text");return o!==void 0&&o.trim().length===0}function Sv(e){return"poolId"in e?{pool_id:e.poolId}:{daemon_vm_id:e.daemonVmId}}var Ah="space";function ha(e){return{spaceId:e.space_id??"",displayName:e.display_name??"",normalizedName:e.normalized_name??"",createdAt:e.created_at??"",updatedAt:e.updated_at??"",createdBy:e.created_by??"",pinnedExpertIds:e.pinned_expert_ids??[]}}function fh(e){return{tunnelId:e.tunnel_id??"",agentId:e.agent_id??"",vmId:e.vm_id??"",localHost:e.local_host??"",localPort:e.local_port??0,label:e.label??"",mode:e.mode??0,status:e.status??0,host:e.host??"",createdAt:e.created_at??"",expiresAt:e.expires_at??""}}var dr={user:cr.PRIVATE,tenant:cr.SHARED},Xv={personal:on.PERSONAL,space:on.SPACE,organization:on.ORGANIZATION};function mh(e){return Array.isArray(e)?e.map(mh):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,t==="value"&&typeof n=="string"?"<redacted>":mh(n)])):e}function Wv(e){if(e===on.PERSONAL||e==="SECRET_APPLICABILITY_PERSONAL")return"personal";if(e===on.SPACE||e==="SECRET_APPLICABILITY_SPACE")return"space";if(e===on.ORGANIZATION||e==="SECRET_APPLICABILITY_ORGANIZATION")return"organization"}function ba(e,t){let n=e.scope===cr.SHARED||e.scope==="SECRET_SCOPE_SHARED"?"tenant":t,o=Wv(e.applicability),r=e.space_ids??(e.space_id===void 0||e.space_id===""?[]:[e.space_id]);return{name:e.name??"",scope:n,description:e.description??"",tags:e.tags??{},version:e.version??"",createdAt:e.created_at??"",updatedAt:e.updated_at??"",valueSizeBytes:e.value_size_bytes??0,spaceIds:r,allSpaces:e.all_spaces===!0,...o?{applicability:o}:{},...e.secret_id?{secretId:e.secret_id}:{},...e.olac_ready===void 0?{}:{olacReady:e.olac_ready}}}function Gv(e){if(!(!e||Object.keys(e).length===0))return Object.entries(e).map(([t,n])=>({key:t,values:[n]}))}var kt="/cloud-agents/vfs",Iv=3e4;function cS(e){return{event_id:e.event_id??e.eventId,comment_id:e.comment_id??e.commentId,path:e.path,kind:e.kind,author_display_name:e.author_display_name??e.authorDisplayName,author_id:e.author_id??e.authorId,body:e.body,anchor:e.anchor?{version_seq:e.anchor.version_seq??e.anchor.versionSeq,quote:e.anchor.quote,line_hint:e.anchor.line_hint??e.anchor.lineHint}:void 0,created_at:e.created_at??e.createdAt,parent_id:e.parent_id??e.parentId}}var ma=[{name:"bearer",proto:"WEBHOOK_TYPE_BEARER",numeric:1,creatable:!0},{name:"gitlab",proto:"WEBHOOK_TYPE_GITLAB",numeric:2,creatable:!0},{name:"jira",proto:"WEBHOOK_TYPE_JIRA",numeric:3,creatable:!0},{name:"github",proto:"WEBHOOK_TYPE_GITHUB",numeric:6,creatable:!0},{name:"stripe",proto:"WEBHOOK_TYPE_STRIPE",numeric:5,creatable:!0},{name:"sentry",proto:"WEBHOOK_TYPE_SENTRY",numeric:9,creatable:!0},{name:"datadog",proto:"WEBHOOK_TYPE_DATADOG",numeric:10,creatable:!0},{name:"buildkite",proto:"WEBHOOK_TYPE_BUILDKITE",numeric:11,creatable:!0},{name:"launchdarkly",proto:"WEBHOOK_TYPE_LAUNCHDARKLY",numeric:12,creatable:!0},{name:"circleci",proto:"WEBHOOK_TYPE_CIRCLECI",numeric:13,creatable:!0},{name:"snyk",proto:"WEBHOOK_TYPE_SNYK",numeric:14,creatable:!0},{name:"sonarqube",proto:"WEBHOOK_TYPE_SONARQUBE",numeric:15,creatable:!0},{name:"semgrep",proto:"WEBHOOK_TYPE_SEMGREP",numeric:16,creatable:!0},{name:"argocd",proto:"WEBHOOK_TYPE_ARGOCD",numeric:17,creatable:!0},{name:"terraform-cloud",proto:"WEBHOOK_TYPE_TERRAFORM_CLOUD",numeric:18,creatable:!0},{name:"opsgenie",proto:"WEBHOOK_TYPE_OPSGENIE",numeric:19,creatable:!0},{name:"pagerduty",proto:"WEBHOOK_TYPE_PAGERDUTY",numeric:8,creatable:!0},{name:"azure-devops",proto:"WEBHOOK_TYPE_AZURE_DEVOPS",numeric:20,creatable:!0},{name:"bitbucket",proto:"WEBHOOK_TYPE_BITBUCKET",numeric:21,creatable:!0},{name:"auth0",proto:"WEBHOOK_TYPE_AUTH0",numeric:22,creatable:!0},{name:"okta",proto:"WEBHOOK_TYPE_OKTA",numeric:23,creatable:!0},{name:"zendesk",proto:"WEBHOOK_TYPE_ZENDESK",numeric:24,creatable:!0},{name:"intercom",proto:"WEBHOOK_TYPE_INTERCOM",numeric:25,creatable:!0},{name:"posthog",proto:"WEBHOOK_TYPE_POSTHOG",numeric:26,creatable:!0},{name:"resend",proto:"WEBHOOK_TYPE_RESEND",numeric:27,creatable:!0},{name:"chargebee",proto:"WEBHOOK_TYPE_CHARGEBEE",numeric:28,creatable:!0},{name:"workos",proto:"WEBHOOK_TYPE_WORKOS",numeric:29,creatable:!0},{name:"hubspot",proto:"WEBHOOK_TYPE_HUBSPOT",numeric:30,creatable:!0},{name:"notion",proto:"WEBHOOK_TYPE_NOTION",numeric:31,creatable:!0},{name:"jsm-operations",proto:"WEBHOOK_TYPE_JSM_OPERATIONS",numeric:32,creatable:!0},{name:"incident-io",proto:"WEBHOOK_TYPE_INCIDENT_IO",numeric:33,creatable:!0},{name:"sendgrid",proto:"WEBHOOK_TYPE_SENDGRID",numeric:34,creatable:!0},{name:"mailgun",proto:"WEBHOOK_TYPE_MAILGUN",numeric:35,creatable:!0},{name:"twilio",proto:"WEBHOOK_TYPE_TWILIO",numeric:36,creatable:!0},{name:"customer-io",proto:"WEBHOOK_TYPE_CUSTOMER_IO",numeric:37,creatable:!0},{name:"vanta",proto:"WEBHOOK_TYPE_VANTA",numeric:38,creatable:!1},{name:"new-relic",proto:"WEBHOOK_TYPE_NEW_RELIC",numeric:39,creatable:!0},{name:"grafana",proto:"WEBHOOK_TYPE_GRAFANA",numeric:40,creatable:!0},{name:"jfrog-xray",proto:"WEBHOOK_TYPE_JFROG_XRAY",numeric:41,creatable:!0},{name:"vercel",proto:"WEBHOOK_TYPE_VERCEL",numeric:42,creatable:!0},{name:"cloudflare",proto:"WEBHOOK_TYPE_CLOUDFLARE",numeric:43,creatable:!0},{name:"pulumi",proto:"WEBHOOK_TYPE_PULUMI",numeric:44,creatable:!0},{name:"harbor",proto:"WEBHOOK_TYPE_HARBOR",numeric:45,creatable:!0},{name:"aws-eventbridge",proto:"WEBHOOK_TYPE_AWS_EVENTBRIDGE",numeric:46,creatable:!0},{name:"clerk",proto:"WEBHOOK_TYPE_CLERK",numeric:47,creatable:!0},{name:"replicate",proto:"WEBHOOK_TYPE_REPLICATE",numeric:48,creatable:!0},{name:"daytona",proto:"WEBHOOK_TYPE_DAYTONA",numeric:49,creatable:!0},{name:"netlify",proto:"WEBHOOK_TYPE_NETLIFY",numeric:50,creatable:!0},{name:"azure-event-grid",proto:"WEBHOOK_TYPE_AZURE_EVENT_GRID",numeric:51,creatable:!0},{name:"rootly",proto:"WEBHOOK_TYPE_ROOTLY",numeric:52,creatable:!0},{name:"firehydrant",proto:"WEBHOOK_TYPE_FIREHYDRANT",numeric:53,creatable:!0},{name:"statuspage",proto:"WEBHOOK_TYPE_STATUSPAGE",numeric:54,creatable:!0},{name:"devrev",proto:"WEBHOOK_TYPE_DEVREV",numeric:55,creatable:!0},{name:"pylon",proto:"WEBHOOK_TYPE_PYLON",numeric:56,creatable:!1},{name:"plain",proto:"WEBHOOK_TYPE_PLAIN",numeric:57,creatable:!0}],Nv=ma.filter(e=>e.creatable).map(e=>e.name),Vh="webhook",dS=Object.fromEntries(ma.map(e=>[e.name,e.proto])),Fv={WEBHOOK_TYPE_UNSPECIFIED:"bearer",...Object.fromEntries(ma.map(e=>[e.proto,e.name]))},Bv=Object.fromEntries(ma.map(e=>[e.numeric,e.name]));function uS(e){if(e)return{steps:(e.steps??[]).map(t=>({title:t.title??"",bodyMarkdown:t.bodyMarkdown??t.body_markdown??""})),fields:(e.fields??[]).map(Cv),webhookUrl:e.webhookUrl??e.webhook_url??"",secretSource:Yv(e.secretSource??e.secret_source)}}function Yv(e){return e===1||e==="SECRET_SOURCE_AUGMENT_GENERATED"?"augment_generated":e===2||e==="SECRET_SOURCE_SERVICE_PROVIDED"?"service_provided":"unknown"}function Cv(e){let t=e.valueKind??e.value_kind;return{label:e.label??"",value:e.value??"",valueKind:Uv(t),literalValue:e.literalValue??e.literal_value??"",secret:e.secret===!0}}function Uv(e){return e===1||e==="SETUP_FIELD_VALUE_KIND_WEBHOOK_URL"?"webhook_url":e===2||e==="SETUP_FIELD_VALUE_KIND_SECRET"?"secret":e===3||e==="SETUP_FIELD_VALUE_KIND_LITERAL"?"literal":"unknown"}function yv(e){let t=e.failedWebhookIds??e.failed_webhook_ids??[];return{success:e.success??t.length===0,deletedWebhookIds:e.deletedWebhookIds??e.deleted_webhook_ids??[],failedWebhookIds:t}}function xi(e){return{webhookId:e.webhookId??e.webhook_id??"",description:e.description,url:e.url,type:wv(e.type),active:e.active??!1,userId:e.userId??e.user_id,tenantId:e.tenantId??e.tenant_id,createdAt:xv(e.createdAt??e.created_at),capturedHeaders:e.capturedHeaders??e.captured_headers??[],raw:e}}function wv(e){return typeof e=="number"?Bv[e]??"bearer":e?Fv[e]??"bearer":"bearer"}function xv(e){if(!e)return;let t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}var go=class e{static userAgent;instanceUserAgent;static setUserAgent(t){e.userAgent=rh(t)}static getUserAgent(){return e.userAgent??"augment-api-sdk"}apiToken;apiUrl;fetchImpl;sessionId=j2();logger;poseidonConfig;onExpertCapabilityMismatch;reportedExpertEndpoints=new Set;expertId;workflowId;constructor(t,n,o,r,i,l){let s="apiToken"in t?t:{apiToken:o??"",apiUrl:n??"",fetchImpl:l,logger:t,userAgent:r,apiCallTimeoutMs:i?.apiCallTimeoutMs};this.apiToken=s.apiToken,this.apiUrl=s.apiUrl.endsWith("/")?s.apiUrl:`${s.apiUrl}/`,this.instanceUserAgent=s.userAgent,this.fetchImpl=s.fetchImpl??globalThis.fetch,this.logger=s.logger??ax,this.onExpertCapabilityMismatch=s.onExpertCapabilityMismatch,this.poseidonConfig={...oh,...s.apiCallTimeoutMs===void 0?{}:{apiCallTimeoutMs:s.apiCallTimeoutMs}}}getApiUrl(){return this.apiUrl}getAuthToken(){return this.apiToken}getUserAgent(){return e.userAgent??this.instanceUserAgent??"augment-api-sdk"}setUserAgent(t){e.setUserAgent(t)}getAuthHeaders(){return{Authorization:`Bearer ${this.apiToken}`,"User-Agent":this.getUserAgent()}}createRequestId(){return j2()}setExpertId(t){this.expertId=t}setWorkflowId(t){this.workflowId=t}async reportRequestFailure({bodyLength:t,endpoint:n,error:o,requestId:r,signal:i,startTime:l}){if(n==="report-error"||!Vx(o,i))return;let s=o instanceof Ar||o instanceof fa?o.status:2;await this.reportError(r,`${n} call failed with APIStatus ${cx[s]??"unknown"}`,o.stack??"",[{key:"body_length",value:String(t)},{key:"start_time",value:String(l)},{key:"end_time",value:String(Date.now())},{key:"message",value:o.message}])}async request(t,n,o=this.createRequestId(),r,i=12e4,l=this.sessionId){let s=Date.now();try{return await this.requestWithoutReporting(t,n,o,r,i,l)}catch(a){let c=a instanceof Error?a:new Error(String(a));throw await this.reportRequestFailure({bodyLength:Ax(n),endpoint:t,error:c,requestId:o,signal:r,startTime:s}),a}}async requestWithoutReporting(t,n,o,r,i,l){let s=new Headers({"x-request-id":o,"x-request-session-id":l,...this.expertId?{"x-expert-id":this.expertId}:{},...this.workflowId?{"x-workflow-id":this.workflowId}:{}}),a=AbortSignal.timeout(i),c=r&&typeof AbortSignal.any=="function"?AbortSignal.any([r,a]):r??a,d;try{d=await this.fetchImpl(new URL(t,this.apiUrl),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`,"User-Agent":this.getUserAgent(),...Object.fromEntries(s),...process.env.AUGMENT_SOURCE_AGENT_ID?{"x-augment-source-agent-id":process.env.AUGMENT_SOURCE_AGENT_ID}:{}},body:JSON.stringify(n),signal:c})}catch(u){let h=u instanceof Error?u:void 0;throw new fa(`Augment request to ${new URL(t,this.apiUrl).toString()} failed: ${h?.message??String(u)}`,h)}if(!d.ok)throw await mx(d,o);return d}async reportError(t,n,o,r){let i=o.replace(/ \(\/[^()]+\)/g,"");try{await this.requestWithoutReporting("report-error",{original_request_id:t,sanitized_message:n,stack_trace:i,diagnostics:r},this.createRequestId(),void 0,500,this.sessionId)}catch{}}poseidonRequestSessionId(){let t=process.env.AUGMENT_SOURCE_AGENT_ID;if(!t)return this.sessionId;try{return fx(t)}catch(n){return this.logger.warn("Failed to derive request session ID: %s",String(n)),this.sessionId}}async callApi(t,n,o){let i=await(await this.request(t.replace(/^\//,""),n,void 0,o?.signal,o?.timeoutMs??this.poseidonConfig.apiCallTimeoutMs,this.poseidonRequestSessionId())).text();if(i)return this.base_parseJson(i,`Augment request to ${t}`)}async getModelConfig(){let t=await this.callApi("get-models",{});return{defaultModel:t.default_model??"",models:(t.models??[]).map(n=>({name:n.name??"",suggestedPrefixCharCount:n.suggested_prefix_char_count??0,suggestedSuffixCharCount:n.suggested_suffix_char_count??0,completionTimeoutMs:n.completion_timeout_ms,internalName:n.internal_name})),featureFlagsV2:iV(T2,br(t.feature_flags??{}),{ignoreUnknownFields:!0}),userTier:Gx(t.user_tier),user:t.user}}async chatFeedback(t){await this.callApi("chat-feedback",{request_id:t.requestId,rating:t.rating,note:t.note,mode:t.mode})}async chat(t,n,o,r,i,l,s,a,c,d,u,h,b,A,f){let m=await(await this.request("chat",{model:s,path:h,prefix:d,selected_code:c,suffix:u,message:n,chat_history:o,lang:b,blobs:Aa(r),user_guided_blobs:i,external_source_ids:l,context_code_exchange_request_id:a,feature_detection_flags:{},...A?{system_prompt:A}:{},system_prompt_replacements:f??[]},t,void 0,3e5)).text();return this.toChatResult(m?JSON.parse(m):{})}async chatStream(t,n){let o=await this.request("chat-stream",Wx(n),t,n.signal,12e5,typeof n.sessionId=="string"?n.sessionId:this.sessionId);if(!o.body)throw new Ar("Chat stream response had no body",o,t);let r=o.body.getReader(),i=s=>{try{return this.toChatResult(JSON.parse(s))}catch{return}};async function*l(){let s=new TextDecoder,a="";try{for(;;){let{done:d,value:u}=await r.read();if(d)break;a+=s.decode(u,{stream:!0});let h=a.indexOf(`
128
128
  `);for(;h>=0;){let b=a.slice(0,h).trim();a=a.slice(h+1);let A=i(b);A&&(yield A),h=a.indexOf(`
129
- `)}}let c=i(a.trim());c&&(yield c)}finally{await r.cancel().catch(()=>{})}}return l()}toChatResult(t){if(typeof t.error=="string")return{text:"",error:{displayErrorMessage:t.error,errorDetails:Sx(t.error_details)}};let n=t.error;return{text:typeof t.text=="string"?t.text:"",unknownBlobNames:t.unknown_blob_names??[],checkpointNotFound:t.checkpoint_not_found??!1,workspaceFileChunks:br(t.workspace_file_chunks)??[],nodes:t.nodes,stop_reason:Zx(t.stop_reason),summarizeAndRetry:t.summarize_and_retry,error:n?{displayErrorMessage:String(n.display_error_message??n.displayErrorMessage??"Unknown stream error"),isRetriable:!!(n.is_retriable??n.isRetriable),shouldBackoff:!!(n.should_backoff??n.shouldBackoff)}:void 0}}async checkpointBlobs(t){let n=await this.callApi("checkpoint-blobs",{blobs:Aa(t)},{timeoutMs:ih});return{newCheckpointId:Rx(n.new_checkpoint_id,"new_checkpoint_id")}}async batchUpload(t){let n=await this.callApi("batch-upload",{blobs:t.map(o=>({blob_name:o.blobName,path:o.pathName,content:o.text}))},{timeoutMs:ih});return{blobNames:lh(n.blob_names,"blob_names")}}async findMissing(t,n){let o=await this.callApi("find-missing",{model:n,mem_object_names:[...t].sort()},{timeoutMs:ih});return{unknownBlobNames:lh(o.unknown_memory_names,"unknown_memory_names"),nonindexedBlobNames:lh(o.nonindexed_blob_names,"nonindexed_blob_names")}}async agentCodebaseRetrieval(t,n,o,r,i,l,s){let a=await this.request("agents/codebase-retrieval",{information_request:n,blobs:Aa(o),dialog:r,max_output_length:i,disable_codebase_retrieval:l?.disableCodebaseRetrieval??!1,enable_commit_retrieval:l?.enableCommitRetrieval??!1,enable_conversation_retrieval:l?.enableConversationRetrieval??!1,...l?.conversationId?{conversation_id:l.conversationId}:{},...l?.parentConversationId?{parent_conversation_id:l.parentConversationId}:{},...l?.rootConversationId?{root_conversation_id:l.rootConversationId}:{},...l?.turnId?{turn_id:l.turnId}:{},...l?.bringYourOwnKey?{bring_your_own_key:l.bringYourOwnKey}:{}},t,s);return br(await a.json())}async revokeCurrentUserTokens(){return await this.callApi("revoke-current-user-tokens",{})}async runRemoteTool(t,n,o,r,i,l,s){let a=await this.request("agents/run-remote-tool",{tool_name:n,tool_input_json:o,tool_id:r,...Xx(r,i),...s===void 0?{}:{bot_type:s}},t,l);return br(await a.json())}async logAgentSessionEvent(t){await this.request("record-session-events",{events:t.map(n=>({time:new Date(n.event_time_sec*1e3+n.event_time_nsec/1e6).toISOString(),event:{agent_session_event:{...n,user_agent:this.getUserAgent()}}}))})}async logAgentRequestEvent(t){let n=Map.groupBy(t,o=>o.request_id);for(let[o,r]of n)await this.request("record-request-events",{events:r.map(({request_id:i,...l})=>({time:new Date(l.event_time_sec*1e3+l.event_time_nsec/1e6).toISOString(),event:{agent_request_event:{...l,user_agent:this.getUserAgent()}}}))},o)}async logToolUseRequestEvent(t){let n=Map.groupBy(t,o=>o.requestId);await Promise.all([...n].map(async([o,r])=>{await this.request("record-request-events",{events:r.map(i=>{let l=JSON.stringify(i.toolInput);return{time:new Date(i.eventTimeSec*1e3+i.eventTimeNsec/1e6).toISOString(),event:{tool_use_data:{tool_name:i.toolName,tool_use_id:i.toolUseId,tool_output_is_error:i.toolOutputIsError,tool_run_duration_ms:i.toolRunDurationMs,tool_input:l,tool_input_len:l.length,is_mcp_tool:i.isMcpTool,conversation_id:i.conversationId,chat_history_length:i.chatHistoryLength,tool_output_len:i.toolOutputLen,tool_lines_added:i.toolLinesAdded,tool_lines_deleted:i.toolLinesDeleted,tool_use_diff:i.toolUseDiff,tool_error_class:i.toolErrorClass,tool_error_snippet:i.toolErrorSnippet}}}})},o)}))}base_getApiUrl(){return this.apiUrl}base_getAuthToken(){return this.apiToken}base_getUserAgent(){return this.getUserAgent()}base_getAuthHeaders(){return{Authorization:`Bearer ${this.apiToken}`,"User-Agent":this.getUserAgent()}}base_parseJson(t,n){try{return JSON.parse(t)}catch(o){throw new Error(`Failed to parse ${n} response as JSON: ${o instanceof Error?o.message:String(o)}. Response length: ${t.length}`)}}async base_listObjectRoleBindings(t,n){return((await this.callApi("/access/list",{object_type:t,object_id:n})).entries??[]).map(r=>this.base_parseObjectRoleBinding(r))}async base_grantObjectRole(t,n,o,r){await this.callApi("/access/grant",{object_type:t,object_id:n,principal:this.base_accessPrincipal(o),role:r})}async base_revokeObjectRole(t,n,o){await this.callApi("/access/revoke",{object_type:t,object_id:n,principal:this.base_accessPrincipal(o)})}base_parseObjectRoleBinding(t){return{principalType:t.principal_type??t.principalType??"unknown",principalId:t.principal_id??t.principalId??"",principalEmail:t.principal_email??t.principalEmail,role:t.role??"",grantedBy:t.granted_by??t.grantedBy,createdAt:this.base_parseTimestamp(t.created_at??t.createdAt)}}base_accessPrincipal(t){return"email"in t?{email:t.email}:"tenant"in t?{tenant:!0}:{user_id:t.userId}}base_parseTimestamp(t){if(typeof t=="string"){let n=new Date(t);return Number.isNaN(n.getTime())?void 0:n}if(t!==null&&typeof t=="object"&&"seconds"in t){let n=t;return new Date(Number(n.seconds)*1e3+Math.floor(Number(n.nanos??0)/1e6))}}async recordPoseidonAnalyticsEvents({events:t}){this.logger.debug("Recording %d Poseidon analytics event(s)",t.length),await this.callApi("/record-poseidon-analytics-events",{events:t})}async getCostAnalytics(t){return this.logger.debug("Fetching cost analytics"),await this.callApi("/get-cost-analytics",t)}async getCostAnalyticsV2(t){return this.logger.debug("Fetching cost analytics (v2)"),await this.callApi("/get-cost-analytics-v2",t)}async listTags(t){return this.logger.debug("Fetching analytics tag catalog"),await this.callApi("/list-tags",t)}async getSessionAnalytics(t){return this.logger.debug("Fetching outcome session analytics"),await this.callApi("/get-session-analytics",t)}async getOutcomeAnalytics(t){return this.logger.debug("Fetching outcome analytics"),await this.callApi("/get-outcome-analytics",t)}async createUpload(t){let n={visibility:Nx[t.visibility],media_type:t.mediaType,size_bytes:t.sizeBytes,sha256_hex:t.sha256Hex};t.label!==void 0&&(n.label=t.label),t.filename!==void 0&&(n.filename=t.filename);let o=await this.callApi("/cloud-agents/artifacts/create-upload",n);return{hostedArtifactId:o.hosted_artifact_id??"",signedPutUrl:o.signed_put_url??"",requiredHeaders:o.required_headers??{},signedUrlExpiresAt:o.signed_url_expires_at??""}}async finalizeHostedArtifact(t){let n={hosted_artifact_id:t.hostedArtifactId};t.filename!==void 0&&(n.filename=t.filename);let o=await this.callApi("/cloud-agents/artifacts/finalize",n);if(o.artifact===void 0)throw new Error(`Finalize response missing artifact payload for ${t.hostedArtifactId}`);return Bx(o.artifact)}async deleteHostedArtifact(t){let n=Ix(t)?{canonical_url:t}:{hosted_artifact_id:t};await this.callApi("/cloud-agents/artifacts/delete",n)}listEnvironmentRoleBindings(t){return this.base_listObjectRoleBindings(sh,t)}grantEnvironmentRole({imageId:t,principal:n,role:o}){return this.base_grantObjectRole(sh,t,n,o)}revokeEnvironmentRole({imageId:t,principal:n}){return this.base_revokeObjectRole(sh,t,n)}async getEnvironment(t){let n=await this.callApi("/cloud-environments/environments/get",{ref:this.environment_toApiEnvironmentRef(t)}),o=n.summary;if(!o?.id)throw new Error(`Environment target not found: ${t.id}`);let r=o;return t.type==="environment"?r=n.details?.base_image??o:t.type==="pool"?r=n.details?.daemon_pool??o:r=n.details?.unpooled_daemon??n.details?.unpooled??o,{id:o.id,type:this.environment_environmentKindToType(o.kind),displayName:o.display_name??o.id,description:o.description,visibility:o.visibility,raw:r}}async listBaseImages(t){let n=await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[1],...t?.resolveUserDisplayNames?{resolve_user_display_names:!0}:{},...t?.orderBy===void 0?{}:{order_by:t.orderBy},...t?.searchQuery?{search_query:t.searchQuery}:{},...t?.ownedOnly?{owned_only:!0}:{},...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(n.environment_summaries??[]).filter(r=>(r.kind??0)===1&&typeof r.id=="string"&&r.id.length>0).map(r=>this.environment_parseBaseImage({id:r.id,image_id:r.id,display_name:r.display_name,description:r.description,visibility:r.visibility,created_at:r.created_at,updated_at:r.updated_at,created_by_user_name:r.created_by_user_name,space_id:r.space_id,sandbox_provider_id:r.sandbox_provider_id,sandbox_provider:r.sandbox_provider}));return o.length>0?o:(n.environments??[]).filter(r=>{let i=r.image_id??r.id;return typeof i=="string"&&i.length>0}).map(r=>this.environment_parseBaseImage(r))}async listCloudEnvironments(t){let n=await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[1,2,3],...t?.resolveUserDisplayNames?{resolve_user_display_names:!0}:{},...t?.orderBy===void 0?{}:{order_by:t.orderBy},...t?.searchQuery?{search_query:t.searchQuery}:{},...t?.ownedOnly?{owned_only:!0}:{},...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(n.environment_summaries??[]).filter(r=>typeof r.id=="string"&&r.id.length>0).map(r=>this.environment_parseCloudEnvironmentSummary(r));return o.length>0?o:(n.environments??[]).filter(r=>{let i=r.image_id??r.id;return typeof i=="string"&&i.length>0}).map(r=>{let i=this.environment_parseBaseImage(r);return{sandboxProviderId:i.sandboxProviderId,sandboxProvider:i.sandboxProvider,kind:"base_image",id:i.imageId,displayName:i.displayName,description:i.description,visibility:i.visibility,currentVersion:i.currentVersion,status:i.status,raw:i.raw??{}}})}async createBaseImage(t){let n=await this.callApi("/cloud-environments/base-images/create",q2(t),{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});if(!n.environment)throw new Error(`Failed to create environment: ${t.displayName}`);return this.environment_parseBaseImage(n.environment)}async getBaseImage(t){let n=await this.callApi("/cloud-environments/environments/get",{ref:{base_image_id:t}}),o=n.details?.base_image??n.environment;if(!o)throw new Error(`Environment not found: ${t}`);return this.environment_parseBaseImage(o)}async updateBaseImage({imageId:t,sandboxProviderId:n,displayName:o,description:r,visibility:i,baseImage:l,refreshEnabled:s,repos:a,environmentVariables:c,expectedResourceVersion:d,tags:u,spaceId:h}){let b=await this.callApi("/cloud-environments/base-images/update",$2({imageId:t,sandboxProviderId:n,displayName:o,description:r,visibility:i,baseImage:l,refreshEnabled:s,repos:a,environmentVariables:c,expectedResourceVersion:d,tags:u,spaceId:h}));return this.environment_parseBaseImage(b?.environment??b)}async deleteBaseImage(t){await this.callApi("/cloud-environments/base-images/delete",{image_id:t})}async getBaseImageVersions(t,n=!1){return((await this.callApi("/cloud-environments/base-images/builds/list",{image_id:t,...n?{include_update_scripts:!0}:{}})).builds??[]).map(r=>({imageId:r.image_id??t,version:r.version??"",gcpImageUrl:r.gcp_image_url,upstreamDigest:r.upstream_digest,createdAt:r.created_at?new Date(r.created_at):void 0,status:r.lifecycle_status??r.status,errorMessage:r.error_message,modalImageId:r.modal_image_id,updateScript:n?r.update_script:void 0,hasUpdateScript:r.has_update_script??!!r.update_script}))}listEnvironmentBuilds(t,n=!1){return this.getBaseImageVersions(t,n)}async restoreEnvironment(t){let n=await this.callApi("/cloud-environments/base-images/restore",{image_id:t});if(!n.environment)throw new Error(`Failed to restore environment: ${t}`);return this.environment_parseBaseImage(n.environment)}async listEnvironmentVersions({environmentId:t,limit:n}){return((await this.callApi("/cloud-environments/base-images/versions/list",{image_id:t,limit:n??50})).versions??[]).map(r=>this.environment_parseEnvironmentVersion(r))}async getEnvironmentVersion({environmentId:t,resourceVersion:n}){let o=await this.callApi("/cloud-environments/base-images/versions/get",{image_id:t,resource_version:n});if(!o.version)throw new Error(`Version ${n} not found for environment ${t}`);return this.environment_parseEnvironmentVersion(o.version)}async runImageUpdate({imageId:t,provisionScript:n,vmStartupScript:o,baseImageRef:r,useDefaultScripts:i}){let l=await this.callApi("/cloud-environments/base-images/rebuild",{image_id:t,...n===void 0?{}:{provision_script:n},...o===void 0?{}:{vm_startup_script:o},...r===void 0?{}:{base_image_ref:r},...i===void 0?{}:{use_default_scripts:i}},{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});return{modalImageId:l.modal_image_id??"",updatedAt:l.updated_at?new Date(l.updated_at):void 0}}async startEnvironmentRebuild({environmentId:t,idempotencyKey:n,provisionScript:o,vmStartupScript:r,baseImageRef:i},l){let s=await this.environment_callAbortableApi("/cloud-environments/base-images/rebuild/start",{environment_id:t,idempotency_key:n,...o===void 0?{}:{provision_script:o},...r===void 0?{}:{vm_startup_script:r},...i===void 0?{}:{base_image_ref:i}},l);return this.environment_parseEnvironmentOperation(s.operation)}async startEnvironmentRefresh({environmentId:t,idempotencyKey:n},o){let r=await this.environment_callAbortableApi("/cloud-environments/base-images/refresh/start",{environment_id:t,idempotency_key:n},o);return this.environment_parseEnvironmentOperation(r.operation)}async startEnvironmentSnapshotUpdate({environmentId:t,idempotencyKey:n,script:o,expectedCurrentVersion:r},i){let l=await this.environment_callAbortableApi("/cloud-environments/base-images/update-snapshot/start",{environment_id:t,idempotency_key:n,script:o,expected_current_version:r},i);return this.environment_parseEnvironmentOperation(l.operation)}async startEnvironmentRepositoryReconcile({environmentId:t,idempotencyKey:n,expectedCurrentVersion:o,...r},i){let l=await this.environment_callAbortableApi("/cloud-environments/base-images/repositories/reconcile/start",{update:$2({imageId:t,...r}),idempotency_key:n,...o===void 0?{}:{expected_current_version:o}},i);return this.environment_parseEnvironmentOperation(l.operation)}async startEnvironmentCreate({config:t,idempotencyKey:n},o){let r=await this.environment_callAbortableApi("/cloud-environments/base-images/create/start",{...q2(t),idempotency_key:n},o);if(!r.environment)throw new Error(`Failed to start environment create: ${t.displayName}`);return{environment:this.environment_parseBaseImage(r.environment),operation:this.environment_parseEnvironmentOperation(r.operation)}}async getEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/get",{operation_id:t},n);return this.environment_parseEnvironmentOperation(o.operation)}async getActiveEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/active/get",{environment_id:t},n);return o.operation?this.environment_parseEnvironmentOperation(o.operation):void 0}async cancelEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/cancel",{operation_id:t},n);return this.environment_parseEnvironmentOperation(o.operation)}async updateEnvironmentSnapshot({environmentId:t,script:n,expectedCurrentVersion:o,idempotencyKey:r}){let i=await this.callApi("/cloud-environments/base-images/update-snapshot",{image_id:t,script:n,expected_current_version:o,idempotency_key:r},{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});return{modalImageId:i.modal_image_id??"",version:i.version??""}}async refreshEnvironment(t){await this.callApi("/cloud-environments/base-images/refresh",{image_id:t})}async duplicateBaseImage({sourceImageId:t,newDisplayName:n,visibility:o}){let r=await this.callApi("/cloud-environments/base-images/duplicate",{source_image_id:t,new_display_name:n,...o===void 0?{}:{visibility:o}}),i=r.environment??r.image;if(!i)throw new Error(`Failed to duplicate environment: ${t}`);return this.environment_parseBaseImage(i)}environment_parseEnvironmentOperation(t){let n=wx(t?.operation_type),o=t?.state===void 0?void 0:Yx[t.state],r=t?.phase===void 0?void 0:Cx[t.phase];if(!t?.operation_id||!t.environment_id||!n||!o||!r)throw new Error("Invalid environment operation response");let i=Number(t.result?.resource_version);if(o==="succeeded"&&(!t.result?.modal_image_id||!t.result.version||!Number.isSafeInteger(i)))throw new Error("Invalid environment operation response");return{operationId:t.operation_id,environmentId:t.environment_id,operationType:n,state:o,phase:r,result:t.result?{modalImageId:t.result.modal_image_id??"",version:t.result.version??"",resourceVersion:i}:void 0,error:t.error?{code:t.error.code??0,message:t.error.message??"",retryable:t.error.retryable??!1}:void 0}}async environment_callAbortableApi(t,n,o){let r=this.callApi(t,n,{signal:o});if(!o)return r;if(o.aborted)throw o.reason;let i,l=new Promise((s,a)=>{i=()=>a(o.reason),o.addEventListener("abort",i,{once:!0})});try{return await Promise.race([r,l])}finally{i&&o.removeEventListener("abort",i)}}environment_parseCloudEnvironmentSummary(t){let n=this.environment_cloudEnvironmentKind(t.kind),o={kind:n,id:t.id??"",displayName:t.display_name??t.id??"",description:t.description,visibility:t.visibility,raw:t},r=t.extras?.pool_status,i=t.extras?.unpooled;return n==="base_image"?(o.sandboxProviderId=t.sandbox_provider_id,o.sandboxProvider=t.sandbox_provider?fo(t.sandbox_provider):void 0,o.currentVersion=t.current_version,o.status=t.status):n==="daemon_pool"&&r?o.poolStatus={daemonsOnline:r.daemons_online,slotsTotal:r.slots_total,slotsInUse:r.slots_in_use}:n==="daemon"&&i&&(o.daemon={vmId:i.vm_id,workspacePath:i.workspace_path,maxAgents:i.max_agents,currentAgentCount:i.current_agent_count}),o}environment_cloudEnvironmentKind(t){switch(t){case 2:return"daemon_pool";case 3:return"daemon";default:return"base_image"}}environment_parseEnvironmentVersion(t){return{resourceVersion:t.resource_version??0,config:t.config?this.environment_parseEnvironmentConfig(t.config):void 0,modifiedBy:t.modified_by??"",modifiedAt:t.modified_at?new Date(t.modified_at):void 0,changeType:t.change_type??""}}environment_parseEnvironmentConfig(t){return{sandboxProviderId:t.sandbox_provider_id,displayName:t.display_name??"",description:t.description,visibility:t.visibility,baseImage:t.base_image,refreshEnabled:t.refresh_enabled,repos:(t.repos??[]).map(n=>({owner:n.owner??"",name:n.name??"",...n.branch?{branch:n.branch}:{},...n.host?{host:n.host}:{},...n.project?{project:n.project}:{}})),environmentVariables:t.environment_variables?{variables:(t.environment_variables.variables??[]).map(n=>({name:n.name??"",value:n.value??""}))}:void 0,spaceId:typeof t.space_id=="string"?t.space_id:void 0,tags:t.tags??{}}}environment_parseBaseImage(t){let n=t.image_id??t.id??"",o=t.space_id;return{sandboxProviderId:t.sandbox_provider_id,sandboxProvider:t.sandbox_provider?fo(t.sandbox_provider):void 0,imageId:n,displayName:t.display_name??n,description:t.description,currentVersion:t.current_version,status:t.lifecycle_status??t.status,visibility:t.visibility,modalImageId:t.modal_image_id,resourceVersion:t.resource_version,createdAt:t.created_at?new Date(t.created_at):void 0,updatedAt:t.updated_at?new Date(t.updated_at):void 0,spaceId:typeof o=="string"?o:void 0,tags:t.tags??{},raw:t}}environment_toApiEnvironmentRef(t){switch(t.type){case"environment":return{base_image_id:t.id};case"pool":return{daemon_pool_id:t.id};case"daemon":return{daemon_vm_id:t.id}}}environment_environmentKindToType(t){switch(t){case 1:return"environment";case 2:return"pool";case 3:return"daemon";default:throw new Error(`Unknown environment kind: ${t??"unset"}`)}}async getDefaultEnvironment(t){return t==="team"?(await this.callApi("/settings/get-poseidon-tenant-settings",{})).default_base_image_id??"":(await this.callApi("/settings/get-poseidon-user-settings",{})).default_environment_id??""}async setDefaultEnvironment(t,n){if(t==="team"){await this.callApi("/settings/update-poseidon-tenant-settings",{default_base_image_id:n});return}await this.callApi("/settings/update-poseidon-user-settings",{default_environment_id:n})}async unsetDefaultEnvironment(t){await this.setDefaultEnvironment(t,"")}async listEvents({limit:t,pageToken:n,source:o,filterPayload:r,eventType:i,since:l,until:s}={}){this.logger.debug("Listing cloud events");let a=await this.callApi("/cloud-events/events/list",{...t===void 0?{}:{limit:t},...n?{page_token:n}:{},...o?{source:o}:{},...r?{filter_payload:r}:{},...i?{event_type:i}:{},...l?{since:l}:{},...s?{until:s}:{}});return{events:(a.events??[]).map(xx),nextPageToken:a.next_page_token,totalCount:a.total_count}}listExpertRoleBindings(t){return this.base_listObjectRoleBindings(ah,t)}grantExpertRole({expertId:t,principal:n,role:o}){return this.base_grantObjectRole(ah,t,n,o)}revokeExpertRole({expertId:t,principal:n}){return this.base_revokeObjectRole(ah,t,n)}readExpertCapabilities(t,n){return L2(t,n,o=>{if(!this.reportedExpertEndpoints.has(n)){this.reportedExpertEndpoints.add(n),this.logger.warn(o.message);try{this.onExpertCapabilityMismatch?this.onExpertCapabilityMismatch(o,n):this.reportError(null,o.message,"",[{key:"api_call",value:n}])}catch{this.logger.warn("Failed to report expert capability mismatch.")}}})}parseExpertResponse(t,n){let o=H2(t);return o.config&&(o.config.capabilityNames=this.readExpertCapabilities(o.config,n)),o}parseExpertVersionResponse(t,n){let o=D2(t);return o.config&&(o.config={...o.config,capability_names:this.readExpertCapabilities(ca(o.config),n)}),o}async createExpert({scope:t,config:n,desiredSlug:o,spaceId:r,capabilitySource:i}){let l=await this.callApi("/cloud-experts/experts/create",{scope:t,config:nh(n),...o===void 0?{}:{desired_slug:o},...r===void 0?{}:{space_id:r},...i===void 0?{}:{capability_source:th[i]}});if(!l.expert)throw new Error("Failed to create expert: no expert in response");return this.parseExpertResponse(l.expert,"/cloud-experts/experts/create")}async getExpert(t){let n=await this.callApi("/cloud-experts/experts/get",{expert_id:t});if(!n.expert)throw new Error(`Expert not found: ${t}`);return this.parseExpertResponse(n.expert,"/cloud-experts/experts/get")}async updateExpert({expertId:t,config:n,scope:o,expectedResourceVersion:r,spaceId:i,capabilitySource:l}){let s=await this.callApi("/cloud-experts/experts/update",{expert_id:t,...n?{config:nh(n)}:{},...o===void 0?{}:{scope:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{space_id:i},...l===void 0?{}:{capability_source:th[l]}});if(!s.expert)throw new Error(`Failed to update expert: ${t}`);return this.parseExpertResponse(s.expert,"/cloud-experts/experts/update")}async deleteExperts({expertIds:t}){let n=await this.callApi("/cloud-experts/experts/delete",{expert_ids:t});return{deletedExpertIds:n.deleted_expert_ids??[],failedExpertIds:n.failed_expert_ids??[]}}async listExperts(t){return((await this.callApi("/cloud-experts/experts/list",{...t?.includeDeleted?{include_deleted:!0}:{},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}})).experts??[]).map(o=>this.parseExpertResponse(o,"/cloud-experts/experts/list"))}async listExpertsWithUsage(t){let n=await this.callApi("/cloud-experts/experts/list-with-usage",{max_per_section:Jx,...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(r,i)=>(r??[]).filter(l=>l.expert).map(l=>({expert:this.parseExpertResponse(l.expert,"/cloud-experts/experts/list-with-usage"),...i.lastUsed&&l.last_used_at?{lastUsedAt:new Date(l.last_used_at)}:{},...i.weeklyActiveUsers&&l.weekly_active_users!==void 0?{weeklyActiveUsers:l.weekly_active_users}:{}}));return{recentlyUsed:o(n.recently_used,{lastUsed:!0}),popular:o(n.popular,{weeklyActiveUsers:!0}),other:o(n.other,{})}}async restoreExpert(t){let n=await this.callApi("/cloud-experts/experts/restore",{expert_id:t});if(!n.expert)throw new Error(`Failed to restore expert: ${t}`);return this.parseExpertResponse(n.expert,"/cloud-experts/experts/restore")}async listExpertVersions({expertId:t,limit:n}){return((await this.callApi("/cloud-experts/experts/versions/list",{expert_id:t,limit:n??vx})).versions??[]).map(r=>this.parseExpertVersionResponse(r,"/cloud-experts/experts/versions/list"))}async getExpertVersion({expertId:t,resourceVersion:n}){let o=await this.callApi("/cloud-experts/experts/versions/get",{expert_id:t,resource_version:n});if(!o.version)throw new Error(`Version ${n} not found for expert ${t}`);return this.parseExpertVersionResponse(o.version,"/cloud-experts/experts/versions/get")}async listWorkflows(t={}){let n=await this.callApi("/cloud-triggers/workflows/list",{...t.eventSourceId?{event_source_id:t.eventSourceId}:{},...t.expertId?{expert_id:t.expertId}:{}});return this.base_parseJson(n.workflows_json||"[]","listWorkflows").map(r=>Nn(r))}async deleteExpertWorkflows(t){let n=await this.callApi("/cloud-triggers/workflows/delete",{workflow_ids:[t]});return{success:n.success??!0,deletedWorkflowIds:n.deleted_workflow_ids??[],failedWorkflowIds:n.failed_workflow_ids??[]}}async createWorkflow(t){let n=await this.callApi("/cloud-triggers/workflows/create",{...t.desiredSlug===void 0?{}:{desired_slug:t.desiredSlug},workflow_json:JSON.stringify({event_source_id:t.eventSourceId,name:t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,expert_id:t.expertId,...t.eventFilter?t.eventFilter:{},...t.overrideAutoCleanupOnIdle===void 0?{}:{override_auto_cleanup_on_idle:t.overrideAutoCleanupOnIdle},...t.initialInstructions===void 0?{}:{initial_instructions:t.initialInstructions},...t.actorUserId===void 0?{}:{actor_user_id:t.actorUserId},...t.perMinuteCreateAgentLimit===void 0?{}:{per_minute_create_agent_limit:t.perMinuteCreateAgentLimit}})}),o=this.base_parseJson(n.workflow_json||"null","createWorkflow");if(!o)throw new Error("Failed to create workflow: no workflow in response");return Nn(o)}async updateWorkflow({workflowId:t,name:n,enabled:o,expectedResourceVersion:r,overrideAutoCleanupOnIdle:i,initialInstructions:l,actorUserId:s,perMinuteCreateAgentLimit:a}){let c=await this.callApi("/cloud-triggers/workflows/update",{workflow_id:t,...n===void 0?{}:{name:n},...o===void 0?{}:{enabled:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{override_auto_cleanup_on_idle:i},...l===void 0?{}:{initial_instructions:l},...s===void 0?{}:{actor_user_id:s},...a===void 0?{}:{per_minute_create_agent_limit:a}}),d=this.base_parseJson(c.workflow_json||"null","updateWorkflow");if(!d)throw new Error(`Failed to update workflow: ${t}`);return Nn(d)}async listEventSources(){let t=await this.callApi("/cloud-triggers/event-sources/list",{});return this.base_parseJson(t.event_sources_json||"[]","listEventSources").map(o=>Ao(o))}async deleteEventSources(t){let n=await this.callApi("/cloud-triggers/event-sources/delete",{event_source_ids:t});return{success:n.success??!0,deletedEventSourceIds:n.deleted_event_source_ids??[],failedEventSourceIds:n.failed_event_source_ids??[]}}async createEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/create",{...t.desiredSlug===void 0?{}:{desired_slug:t.desiredSlug},event_source_json:JSON.stringify({name:t.name,event_source_type:t.eventSourceType,...t.config})}),o=this.base_parseJson(n.event_source_json||"null","createEventSource");if(!o)throw new Error("Failed to create event source: no event_source in response");return Ao(o)}async updateEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/update",{expected_resource_version:t.expectedResourceVersion,event_source_json:JSON.stringify({event_source_id:t.eventSourceId,name:t.name,event_source_type:t.eventSourceType,active:t.active,...t.config})}),o=this.base_parseJson(n.event_source_json||"null","updateEventSource");if(!o)throw new Error(`Failed to update event source: ${t.eventSourceId}`);return Ao(o)}async listGroups(){this.logger.debug("Listing tenant groups");let t=[],n="";do{let o=await this.callApi("/cloud-groups/list",{page_token:n});t.push(...(o.groups??[]).map(ch)),n=o.next_page_token??""}while(n.length>0);return t}async createGroup(t,n){this.logger.info("Creating group %s",t);let o=await this.callApi("/cloud-groups/create",{name:t,description:n});if(!o.group)throw new Error("Failed to create group: no group in response");return ch(o.group)}async updateGroup(t,n){this.logger.info("Updating group %s",t);let o={group_id:t};n.name!==void 0&&(o.name=n.name),n.description!==void 0&&(o.description=n.description);let r=await this.callApi("/cloud-groups/update",o);if(!r.group)throw new Error("Failed to update group: no group in response");return ch(r.group)}async deleteGroup(t){this.logger.info("Deleting group %s",t),await this.callApi("/cloud-groups/delete",{group_id:t})}async listGroupMembers(t){this.logger.debug("Listing members of group %s",t);let n=[],o="";do{let r=await this.callApi("/cloud-groups/members/list",{group_id:t,page_token:o});n.push(...(r.members??[]).map(_x)),o=r.next_page_token??""}while(o.length>0);return n}async addGroupMembers(t,n){this.logger.info("Adding %d member(s) and %d service account(s) to group %s",n.members?.length??0,n.serviceAccounts?.length??0,t);let o=eS(t,n),r=await tS(()=>this.callApi("/cloud-groups/members/add",o),o);return{addedUserIds:r.added_user_ids??[],alreadyMemberUserIds:r.already_member_user_ids??[]}}async removeGroupMembers(t,n){this.logger.info("Removing %d member(s) and %d service account(s) from group %s",n.members?.length??0,n.serviceAccounts?.length??0,t);let o=eS(t,n),r=await tS(()=>this.callApi("/cloud-groups/members/remove",o),o);return{removedUserIds:r.removed_user_ids??[],notMemberUserIds:r.not_member_user_ids??[]}}async listIntegrations(){return this.logger.debug("Listing integrations"),((await this.callApi("/cloud-integrations/list",{})).integrations??[]).map(nS)}async invokeIntegrationAction({integrationId:t,kind:n}){this.logger.info("Invoking integration action %s on %s",n,t);let o=await this.callApi("/cloud-integrations/invoke-action",{integration_id:t,kind:n});return{urlToOpen:o.url_to_open??"",message:o.message??"",integration:o.integration?nS(o.integration):void 0}}async upsertMcpConfig({scope:t,config:n,expectedVersion:o}){let r=t==="tenant"?"/settings/upsert-mcp-tenant-config":"/settings/upsert-mcp-user-config";this.logger.debug("Upserting MCP config (scope=%s, id=%s)",t,n.id);let i={config:n};return o!==void 0&&(i.expected_version=o),await this.callApi(r,i)}async removeMcpConfig({scope:t,configId:n,expectedVersion:o}){let r=t==="tenant"?"/settings/remove-mcp-tenant-config":"/settings/remove-mcp-user-config";this.logger.debug("Removing MCP config (scope=%s, id=%s)",t,n);let i={config_id:n};return o!==void 0&&(i.expected_version=o),await this.callApi(r,i)}async getMcpTenantConfigs(){this.logger.debug("Getting tenant MCP configs");let t=await this.callApi("/settings/get-mcp-tenant-settings",{});return{configs:t.mcp_configs??[],version:t.version??""}}async getMcpUserConfigs(){this.logger.debug("Getting user MCP configs");let t=await this.callApi("/settings/get-mcp-user-settings",{});return{configs:t.mcp_configs??[],version:t.version??""}}async getMcpConfigById({configId:t,scope:n}){this.logger.debug("Getting MCP config by id (scope=%s, id=%s)",n,t);try{return(await this.callApi("/settings/get-mcp-config-by-id",{config_id:t,scope:zx[n]})).config??null}catch(o){if(o instanceof St&&o.statusCode===Tx)return null;throw o}}async listSandboxProviders(t){return((await this.callApi("/sandbox-providers/list",{...t?.includeDeleted?{include_deleted:!0}:{},...t?.spaceId===void 0?{}:{space_id:t.spaceId}})).providers??[]).map(fo)}async getSandboxProvider(t,n){let o=await this.callApi("/sandbox-providers/get",{slug:t,...n?.includeDeleted?{include_deleted:!0}:{},...n?.spaceId===void 0?{}:{space_id:n.spaceId}});if(!o.provider)throw new Error(`Sandbox provider not found: ${t}`);return fo(o.provider)}async createSandboxProvider({slug:t,displayName:n,description:o,enabled:r,spaceIds:i,allSpaces:l}){let s=await this.callApi("/sandbox-providers/create",{slug:t,display_name:n,...o===void 0?{}:{description:o},...r===void 0?{}:{enabled:r},space_ids:i,all_spaces:l});if(!s.provider)throw new Error(`Failed to create sandbox provider: ${t}`);return fo(s.provider)}async updateSandboxProvider({id:t,displayName:n,description:o,enabled:r,expectedResourceVersion:i,spaceIds:l,allSpaces:s}){let a=await this.callApi("/sandbox-providers/update",{id:t,...n===void 0?{}:{display_name:n},...o===void 0?{}:{description:o},...r===void 0?{}:{enabled:r},expected_resource_version:i,...l===void 0?{}:{space_ids:l},...s===void 0?{}:{all_spaces:s}});if(!a.provider)throw new Error(`Failed to update sandbox provider: ${t}`);return fo(a.provider)}async deleteSandboxProvider({id:t,expectedResourceVersion:n}){await this.callApi("/sandbox-providers/delete",{id:t,expected_resource_version:n})}async restoreSandboxProvider({id:t,expectedResourceVersion:n}){let o=await this.callApi("/sandbox-providers/restore",{id:t,expected_resource_version:n});if(!o.provider)throw new Error(`Failed to restore sandbox provider: ${t}`);return fo(o.provider)}listSandboxProviderRoleBindings(t){return this.base_listObjectRoleBindings(uh,t)}grantSandboxProviderRole({providerId:t,principal:n,role:o}){return this.base_grantObjectRole(uh,t,n,o)}revokeSandboxProviderRole({providerId:t,principal:n}){return this.base_revokeObjectRole(uh,t,n)}async listPools(t){return this.logger.debug("Listing daemon pools"),((await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[2],resolve_user_display_names:!0})).environment_summaries??[]).filter(o=>(o.kind??0)===2&&typeof o.id=="string"&&o.id.length>0).map(o=>({...da({id:o.id,display_name:o.display_name,description:o.description,visibility:o.visibility,created_by_user_id:o.created_by_user_id,created_by_user_name:o.created_by_user_name,created_at:o.created_at,updated_at:o.updated_at}),status:Mx(o.extras?.pool_status)}))}async createPool({displayName:t,description:n,visibility:o,connectorUserId:r,connectorServiceAccount:i,workspaceIsolationPolicy:l,spaceId:s}){this.logger.info("Creating daemon pool %s",t);let a=rS({connectorUserId:r,connectorServiceAccount:i}),c=await this.callApi("/cloud-environments/pools/create",{display_name:t,...n===void 0?{}:{description:n},...o===void 0?{}:{visibility:o},...a===void 0?{}:{connector:a},...l===void 0?{}:{workspace_isolation_policy:l},...s===void 0?{}:{space_id:s}});if(!c.pool)throw new Error(`Failed to create daemon pool: ${t}`);return da(c.pool)}async getPool(t,n){let o=await this.callApi("/cloud-environments/environments/get",{ref:{daemon_pool_id:t}},{signal:n}),r=o.summary,i=o.details?.daemon_pool;if(!r?.id&&!i?.id)throw new Error(`Daemon pool not found: ${t}`);return da({...r,...i,id:i?.id??r?.id})}async updatePool({poolId:t,displayName:n,description:o,visibility:r,connectorUserId:i,connectorServiceAccount:l,workspaceIsolationPolicy:s,expectedResourceVersion:a,spaceId:c}){let d=rS({connectorUserId:i,connectorServiceAccount:l}),u=await this.callApi("/cloud-environments/pools/update",{id:t,...n===void 0?{}:{display_name:n},...o===void 0?{}:{description:o},...r===void 0?{}:{visibility:r},...d===void 0?{}:{connector:d},workspace_isolation_policy:s,expected_resource_version:a,...c===void 0?{}:{space_id:c}});return da(u.pool??u)}async deletePool(t){this.logger.info("Deleting daemon pool %s",t),await this.callApi("/cloud-environments/pools/delete",{id:t})}async listPoolDaemons(t){return this.logger.debug("Listing daemons for pool %s",t),((await this.callApi("/cloud-environments/pools/daemons/list",{pool_id:t})).daemons??[]).filter(o=>typeof o.vm_id=="string"&&o.vm_id.length>0).map(Ox)}listPoolRoleBindings(t){return this.logger.debug("Listing daemon_pool role bindings for %s",t),this.base_listObjectRoleBindings(dh,t)}grantPoolRole({poolId:t,principal:n,role:o}){return this.logger.debug("Granting daemon_pool role %s for %s",o,t),this.base_grantObjectRole(dh,t,n,o)}revokePoolRole({poolId:t,principal:n}){return this.logger.debug("Revoking daemon_pool roles for %s",t),this.base_revokeObjectRole(dh,t,n)}async listProjects(){return this.logger.debug("Listing projects"),((await this.callApi("/cloud-projects/projects/list",{})).projects??[]).map(yi)}async getProject(t){this.logger.debug("Getting project %s",t);let n=await this.callApi("/cloud-projects/projects/get",{project_id:t});if(!n.project)throw new Error("Failed to get project: no project in response");return yi(n.project)}async createProject(t){this.logger.info("Creating project %s",t.name);let n=await this.callApi("/cloud-projects/projects/create",{name:t.name,description:t.description});if(!n.project)throw new Error("Failed to create project: no project in response");return yi(n.project)}async deleteProject(t){this.logger.info("Deleting project %s",t),await this.callApi("/cloud-projects/projects/delete",{project_id:t})}async addProjectAgent(t){this.logger.info("Adding agent %s to project %s",t.agentId,t.projectId);let n=await this.callApi("/cloud-projects/projects/add-agent",{project_id:t.projectId,agent_id:t.agentId});if(!n.project)throw new Error("Failed to add agent: no project in response");return yi(n.project)}async removeProjectAgent(t){this.logger.info("Removing agent %s from project %s",t.agentId,t.projectId);let n=await this.callApi("/cloud-projects/projects/remove-agent",{project_id:t.projectId,agent_id:t.agentId});if(!n.project)throw new Error("Failed to remove agent: no project in response");return yi(n.project)}listResidentRoleBindings(t){return this.base_listObjectRoleBindings(hh,t)}grantResidentRole({residentId:t,principal:n,role:o}){return this.base_grantObjectRole(hh,t,n,o)}revokeResidentRole({residentId:t,principal:n}){return this.base_revokeObjectRole(hh,t,n)}async createResident(t){let n=await this.callApi("/cloud-residents/residents/create",{scope:t.scope,config:lS(t.config)});if(!n.resident)throw new Error("Failed to create resident: no resident in response");return Vo(n.resident)}async getResident(t){let n=await this.callApi("/cloud-residents/residents/get",{resident_id:t});if(!n.resident)throw new Error(`Resident not found: ${t}`);return Vo(n.resident)}async updateResident(t){let n=await this.callApi("/cloud-residents/residents/update",{resident_id:t.residentId,...t.config?{config:lS(t.config)}:{},...t.scope===void 0?{}:{scope:t.scope},...t.expectedResourceVersion===void 0?{}:{expected_resource_version:t.expectedResourceVersion}});if(!n.resident)throw new Error(`Failed to update resident: ${t.residentId}`);return Vo(n.resident)}async deleteResidents(t){let n=await this.callApi("/cloud-residents/residents/delete",{resident_ids:t.residentIds,...t.hardDeletion?{hard_delete:!0}:{}});return{deletedResidentIds:n.deleted_resident_ids??[],failedResidentIds:n.failed_resident_ids??[]}}async listResidents(t){return((await this.callApi("/cloud-residents/residents/list",{...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.includeDeleted?{include_deleted:!0}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}})).residents??[]).map(Vo)}async startResident(t){let n=await this.callApi("/cloud-residents/residents/start",{resident_id:t.residentId,...t.initialMessage?{initial_message:t.initialMessage}:{}});if(!n.resident)throw new Error(`Failed to start resident: ${t.residentId}`);return{resident:Vo(n.resident),agent:n.agent}}async stopResident(t){let n=await this.callApi("/cloud-residents/residents/stop",{resident_id:t.residentId});if(!n.resident)throw new Error(`Failed to stop resident: ${t.residentId}`);return Vo(n.resident)}async listResidentSessions(t){return((await this.callApi("/cloud-residents/residents/sessions/list",{resident_id:t.residentId})).sessions??[]).map(ev)}async getResidentVersion(t){let n;try{n=await this.callApi("/cloud-residents/residents/versions/get",{resident_id:t.residentId,resource_version:t.resourceVersion})}catch(o){throw o instanceof St&&o.statusCode===404?new sr(t.residentId,t.resourceVersion):o}if(!n.version)throw new sr(t.residentId,t.resourceVersion);return iS(n.version)}async listResidentVersions(t){return((await this.callApi("/cloud-residents/residents/versions/list",{resident_id:t.residentId,...t.limit===void 0?{}:{limit:t.limit}})).versions??[]).map(iS)}async restoreResident(t){let n=await this.callApi("/cloud-residents/residents/restore",{resident_id:t.residentId});if(!n.resident)throw new Error(`Failed to restore resident: ${t.residentId}`);return Vo(n.resident)}async listSlackChannels(t){let n=await this.callApi("/cloud-integrations/slack/list-channels",{...t.cursor===void 0?{}:{cursor:t.cursor},...t.limit===void 0?{}:{limit:t.limit}});return{channels:(n.channels??[]).map(o=>({id:o.id??"",name:o.name??"",isPrivate:o.is_private??!1,isMember:o.is_member??!1})),nextCursor:n.next_cursor??"",error:n.error??""}}async writeScopedSecret(t){let n=rv(t),o=await this.callApi("/user-secrets/upsert",n);if(o.secret===void 0)throw new Error(`Create response missing secret payload for ${t.name}`);let r=ua(o.secret,t.name,t.scope);return r.applicability===void 0&&t.applicability!==void 0?{...r,applicability:t.applicability}:r}async deleteScopedSecret({name:t,scope:n,secretId:o,expectedVersion:r}){let i={name:t,scope:AS[n],secret_id:o};return r!==void 0&&(i.expected_version=r),(await this.callApi("/user-secrets/delete",i)).deleted??!1}async listSecretMetadata(t){if(t.scope==="all"){let[a,c]=await Promise.all([this.listSecretMetadata({...t,scope:"user"}),this.listSecretMetadata({...t,scope:"tenant"})]);return[...a,...c].sort((d,u)=>d.scope===u.scope?d.name.localeCompare(u.name):d.scope==="user"?-1:1)}let n=t.scope==="tenant",o=n?"/tenant-secrets/list":"/user-secrets/list",r={include_values:!1},i=av(t.tagFilter);i!==void 0&&(r.tag_filters=i),t.pageSize!==void 0&&(r.page_size=t.pageSize),t.pageToken!==void 0&&(r.page_token=t.pageToken),n||(r.scope=wi[t.scope],t.spaceId!==void 0&&(r.space_id=t.spaceId));let l=await this.callApi(o,r),s=n?"tenant":"user";return(l.secrets??[]).map(a=>ua(a,a.name??"",s))}async isSecretMetadataScopedResolutionEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:wi.user})).secret_scoped_resolution_enabled===!0}async isSecretMultiSpaceTargetingEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:wi.user})).secret_multi_space_targeting_enabled===!0}async getOptionalSecretMetadata(t,n){try{return await this.getSecretMetadata(t,n)}catch(o){if(o instanceof St&&o.statusCode===404)return;throw o}}async getSecretMetadata(t,n){try{return await this.secretMetadata_getPinned(t,n)}catch(o){if(n!=="user"||!(o instanceof St)||o.statusCode!==404)throw o;let r=await this.secretMetadata_findExactUserMatches(t);if(r.length===0)throw o;if(r.length>1)throw new Ui(`More than one user secret is named '${t}'; use a unique name to manage it.`);let i=r[0];if(i?.secretId===void 0||i.secretId==="")throw o;return this.secretMetadata_getPinned(t,n,i.secretId)}}async secretMetadata_getPinned(t,n,o){let r=n==="tenant",i=r?"/tenant-secrets/get":"/user-secrets/get",l={name:t,include_values:!1};r||(l.scope=wi[n],o!==void 0&&(l.secret_id=o));let s=await this.callApi(i,l);if(s.secret===void 0)throw new Error(`Get response missing secret payload for ${t}`);return ua(s.secret,t,n)}async secretMetadata_findExactUserMatches(t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return((await this.callApi("/user-secrets/list",{name_pattern:`^${n}$`,include_values:!1,page_size:2,scope:wi.user})).secrets??[]).filter(r=>r.name===t).map(r=>ua(r,t,"user"))}async isSecretOlacEnabled(){return(await this.callApi("/get-models",{})).feature_flags?.cli_secret_olac_commands===!0}async renameSecret({secretId:t,newName:n}){let o=await this.callApi("/user-secrets/rename",{secret_id:t,new_name:n});if(this.logger.debug("Renamed secret %s",t),o.secret===void 0)throw new Error(`Rename response missing secret payload for ${t}`);return{name:o.secret.name??"",version:o.secret.version??"",secretId:o.secret.secret_id??t,olacReady:o.secret.olac_ready??!1}}listSecretRoleBindings(t){return this.base_listObjectRoleBindings(bh,t)}grantSecretRole({secretId:t,principal:n,role:o}){return this.base_grantObjectRole(bh,t,n,o)}revokeSecretRole({secretId:t,principal:n}){return this.base_revokeObjectRole(bh,t,n)}async listAgentsPaginated(t){let n=await this.callApi("/cloud-agents/agents/list",Av(t));return{agents:(n.agents??[]).map(ur),hasMore:n.has_more??!1,...n.next_page_token?{nextPageToken:n.next_page_token}:{}}}async getAgent(t){let n=await this.callApi("/cloud-agents/agents/get",{agent_id:t});if(!n.agent)throw new Error(`Agent not found: ${t}`);return ur(n.agent)}async registerVm(t){let n=t.mode??dv.AGENT;Fn.info(`registerVm: agent=${t.agentId} mode=${n} cwd=${t.workspacePath}`);let o=fv(t,n),r=await this.callApi("/vm-beachhead/connect-cli-vm",o);if(!r.success)throw new Error(`connect-cli-vm rejected by server: ${r.error_message??"unknown error"}`);let i=r.vm_id;if(!i)throw new Error("connect-cli-vm returned no vm_id");return Vv(t,r,i)}async createAgent(t){Fn.info(`createAgent: name=${t.name}`);let n={agent_loop_type:cv};t.model&&(n.model=t.model);let o={agent_name:t.name,capabilities:t.capabilities??[],tags:t.tags??[],session_config:n};t.initialMessage&&(o.initial_message=t.initialMessage);let i=(await this.callApi("/cloud-agents/agents/create",o)).agent;if(!i?.agent_id)throw new Error("createAgent: server returned no agent");return ur({...i,agent_name:i.agent_name??t.name})}async updateSessionConfig(t){Fn.info(`updateSessionConfig: agent=${t.agentId} model=${t.model??"<unset>"}`),await this.callApi("/cloud-agents/agents/update-session-config",{agent_id:t.agentId,session_config:{...t.model===void 0?{}:{model:t.model}}})}async requestSessionMcpServer(t){Fn.info(`requestSessionMcpServer: agent=${t.agentId} config=${t.mcpConfigId} request=${t.requestId}`);let n=await this.callApi("/cloud-agents/agents/request-mcp-server",{agent_id:t.agentId,mcp_config_id:t.mcpConfigId,request_id:t.requestId},{timeoutMs:fS});return{status:typeof n?.status=="string"?n.status:""}}async getMessages(t,n){Fn.info(`getMessages: agent=${t} limit=${n??"<default>"}`);let r=(await this.callApi("/cloud-agents/agents/get-messages",{agent_id:t,...n===void 0?{}:{limit:n},include_replay_fidelity:!0})).messages;return r==null?[]:Array.isArray(r)?r.map(i=>pv(i,t)):(Fn.warn(`getMessages: unexpected response shape for agent ${t}: messages is ${typeof r}, not an array`),[])}async sendMessage(t,n){Fn.info(`sendMessage: agent=${t} length=${n.length}`),await this.callApi("/cloud-agents/agents/send-message",{agent_id:t,message:n})}async listWorkerSessions(t,n){this.logger.debug("Listing worker sessions for parent %s",t);let o=n?.pageLimit??100,r=[],i;do{let l=await this.listAgentsPaginated({limit:o,parentAgentId:t,includeArchived:!0,pageToken:i});for(let s of l.agents)s.parentAgentId===t&&r.push(s);i=l.hasMore?l.nextPageToken:void 0}while(i);return r}async batchGetAgentMessageCounts(t){if(t.length===0)return{};this.logger.debug("Fetching message counts for %d agents",t.length);let o=(await this.callApi("/cloud-agents/agents/batch-get-message-counts",{agent_ids:t})).counts_by_agent_id;if(!o||typeof o!="object")return{};let r={};for(let[i,l]of Object.entries(o))typeof l=="number"&&(r[i]=l);return r}async createAgentFromExpert(t){this.logger.info("Creating agent from expert %s",t.expertId);let n=await this.callApi("/cloud-experts/experts/create-agent",{expert_id:t.expertId,...t.agentName?{agent_name:t.agentName}:{},...t.initialMessage?{initial_message:t.initialMessage}:{},idempotency_key:sx(),send_initial_messages:!1,...t.spaceId?{space_id:t.spaceId}:{},...t.routingTarget?{routing_target:Sv(t.routingTarget)}:{}});if(!n.agent)throw new Error("Failed to create agent from expert: no agent in response");return{agentId:n.agent.agent_id,agentName:n.agent.agent_name}}async getSessionUsage(t){this.logger.debug("Fetching session usage for %s",t.agentId);let n=await this.callApi("/get-session-usage",{agent_id:t.agentId});return{currentSession:{estimatedCustomerCostUsd:n.usage_current_session?.total_usage?.estimated_customer_cost_usd},withChildSessions:{estimatedCustomerCostUsd:n.usage_with_child_sessions?.total_usage?.estimated_customer_cost_usd}}}async renameAgent(t,n){this.logger.info("Renaming agent %s",t);let o=await this.callApi("/cloud-agents/agents/rename",{agent_id:t,new_name:n});if(!o.agent)throw new Error("Failed to rename agent: no agent in response");return ur(o.agent)}async updateAgentSessionTag(t,n,o,r){this.logger.info("Updating session tag '%s' for agent %s",n,t);let i=await this.callApi("/cloud-agents/agents/update-session-tags",{agent_id:t,key:n,value:o,delete:r});if(!i.agent)throw new Error("Failed to update session tags: no agent in response");return ur(i.agent)}async deleteAgent(t){this.logger.info("Deleting agent %s",t);let n=await this.callApi("/cloud-agents/agents/delete",{agent_id:t});if(n.success===!1)throw new Error(n.error_message||`Failed to delete agent: ${t}`)}async archiveAgent(t){this.logger.info("Archiving agent %s",t),await this.callApi("/cloud-agents/agents/archive",{agent_id:t})}async unarchiveAgent(t){this.logger.info("Unarchiving agent %s",t),await this.callApi("/cloud-agents/agents/unarchive",{agent_id:t})}async pinSession(t){this.logger.debug("Pinning session %s",t),await this.callApi("/settings/pin-poseidon-session",{session_id:t})}async unpinSession(t){this.logger.debug("Unpinning session %s",t),await this.callApi("/settings/unpin-poseidon-session",{session_id:t})}async getPinnedSessions(){return this.logger.debug("Listing pinned sessions"),((await this.callApi("/settings/get-poseidon-user-settings",{})).pinned_order??[]).map(n=>({sessionId:n.session_id||void 0,projectId:n.project_id||void 0}))}listSpaceRoleBindings(t){return this.base_listObjectRoleBindings(Ah,t)}grantSpaceRole({spaceId:t,principal:n,role:o}){return this.base_grantObjectRole(Ah,t,n,o)}revokeSpaceRole({spaceId:t,principal:n}){return this.base_revokeObjectRole(Ah,t,n)}async listSpaces(){return this.logger.debug("Listing tenant spaces"),((await this.callApi("/cloud-spaces/spaces/list",{})).spaces??[]).map(ha)}async createSpace(t){this.logger.info("Creating space %s",t);let n=await this.callApi("/cloud-spaces/spaces/create",{display_name:t});if(!n.space)throw new Error("Failed to create space: no space in response");return ha(n.space)}async updateSpace(t,n){this.logger.info("Renaming space %s to %s",t,n);let o=await this.callApi("/cloud-spaces/spaces/update",{space_id:t,display_name:n});if(!o.space)throw new Error("Failed to rename space: no space in response");return ha(o.space)}async deleteSpace(t){return this.logger.info("Deleting space %s",t),(await this.callApi("/cloud-spaces/spaces/delete",{space_id:t})).success??!1}async getSpace(t,n){this.logger.debug("Getting space %s",t||"(default)");let o=await this.callApi("/cloud-spaces/spaces/get",{space_id:t},{signal:n});return o.space?ha(o.space):void 0}async openTunnel(t){this.logger.debug("Opening Poseidon tunnel for agent %s",t.agentId);let n=await this.callApi("/cloud-tunnels/tunnels/open",{agent_id:t.agentId,local_port:t.localPort,...t.localHost?{local_host:t.localHost}:{},...t.label?{label:t.label}:{},activate:t.activate??!0});if(!n.tunnel)throw new Error("Failed to open tunnel: response did not include a tunnel");return fh(n.tunnel)}async closeTunnel(t){this.logger.debug("Closing Poseidon tunnel %s",t.tunnelId);let n=await this.callApi("/cloud-tunnels/tunnels/close",{tunnel_id:t.tunnelId,...t.reason?{reason:t.reason}:{}});return n.tunnel?fh(n.tunnel):void 0}async listTunnels(t){return this.logger.debug("Listing Poseidon tunnels for agent %s",t),((await this.callApi("/cloud-tunnels/tunnels/list",{agent_id:t})).tunnels??[]).map(fh)}async isScopedResolutionEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:1})).secret_scoped_resolution_enabled===!0}async listUserSecrets(t){if(t.scope==="all")return(await Promise.all([this.listUserSecrets({...t,scope:"user"}),this.listUserSecrets({...t,scope:"tenant"})])).flat().sort((s,a)=>s.scope===a.scope?s.name.localeCompare(a.name):s.scope==="user"?-1:1);let n=t.scope==="tenant",o={},r=Gv(t.tagFilter);return r&&(o.tag_filters=r),t.includeValues!==void 0&&(o.include_values=t.includeValues),t.pageSize!==void 0&&(o.page_size=t.pageSize),t.pageToken!==void 0&&(o.page_token=t.pageToken),n||(o.scope=dr.user,t.spaceId!==void 0&&(o.space_id=t.spaceId)),((await this.callApi(n?"/tenant-secrets/list":"/user-secrets/list",o)).secrets??[]).map(l=>ba(l,t.scope))}async getUserSecret(t,n){let o=n==="tenant",r=await this.callApi(o?"/tenant-secrets/get":"/user-secrets/get",o?{name:t}:{name:t,scope:dr[n]});if(!r.secret)throw new Error(`Get response missing secret payload for ${t}`);return{...ba(r.secret,n),value:r.secret.value??""}}async upsertUserSecret(t){let n=t.scope==="tenant",o={name:t.name,value:t.value};if(t.description!==void 0&&(o.description=t.description),t.tags!==void 0&&(o.tags=t.tags),t.expectedVersion!==void 0&&(o.expected_version=t.expectedVersion),t.maxValueSizeBytes!==void 0&&(o.max_value_size_bytes=t.maxValueSizeBytes),!n&&(o.scope=dr[t.scope],t.secretId!==void 0&&(o.secret_id=t.secretId),t.secretId&&t.description!==void 0&&(o.update_description=!0),t.secretId&&t.tags!==void 0&&(o.update_tags=!0),t.applicability&&(o.applicability=Xv[t.applicability]),t.updateSpaces)){if(t.allSpaces&&(t.spaceIds?.length??0)>0)throw new Error("allSpaces and non-empty spaceIds are mutually exclusive");o.update_spaces=!0,o.all_spaces=t.allSpaces===!0,o.space_ids=t.allSpaces?[]:[...t.spaceIds??[]].sort()}let r=await this.callApi(n?"/tenant-secrets/upsert":"/user-secrets/upsert",o);if(this.logger.debug("Upserted secret (response=%o)",mh(r)),!r.secret)throw new Error(`Upsert response missing secret payload for ${t.name}`);return ba(r.secret,t.scope)}async deleteUserSecret(t,n,o,r){let i=n==="tenant",l={name:t};return o!==void 0&&(l.expected_version=o),i||(l.scope=dr[n],r!==void 0&&(l.secret_id=r)),(await this.callApi(i?"/tenant-secrets/delete":"/user-secrets/delete",l)).deleted??!1}async migrateUserSecret(t){let n=await this.callApi("/user-secrets/migrate-scope",{name:t.name,source_scope:dr[t.fromScope],target_scope:dr[t.toScope],delete_source:t.deleteSource});if(!n.secret)throw new Error(`Migrate response missing secret payload for ${t.name}`);return{secret:ba(n.secret,t.toScope),sourceDeleted:n.source_deleted??!1}}async listFileVersions(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path};return t.pageToken&&(n.page_token=t.pageToken),await this.callApi(`${kt}/list-file-versions`,n)}async readFileVersion(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path,timestamp:t.timestamp};return t.seq&&t.seq>0&&(n.seq=t.seq),await this.callApi(`${kt}/read-file-version`,n)}async listVersionedFiles(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,include_deleted:t.includeDeleted};return t.pageToken&&(n.page_token=t.pageToken),await this.callApi(`${kt}/list-versioned-files`,n)}async fetchChanges(t){return await this.callApi(`${kt}/fetch-changes`,{filesystem_id:t.filesystemId,space_id:t.spaceId,after_seq:t.afterSeq})}async fetchContent(t){let n=`${kt}/fetch-content`,o="fileId"in t?{file_id:t.fileId}:{filesystem_id:t.filesystemId,paths:[t.path],space_id:t.spaceId},l=(await(await this.request(n.replace(/^\//,""),o,void 0,void 0,Iv)).json()).files?.[0];if(!l&&"fileId"in t)throw new Error("FetchVFSFileContent returned no content for this file");return l??null}async fetchContentByFileId(t){let n=await this.fetchContent({fileId:t});if(!n)throw new Error("FetchVFSFileContent returned no content for this file");return n}async commitChanges(t){return await this.callApi(`${kt}/commit-changes`,{filesystem_id:t.filesystemId,space_id:t.spaceId,file_changes:t.fileChanges.map(n=>({path:n.path,content:lx.from(n.content).toString("base64"),deleted:n.deleted,base_seq:n.baseSeq})),modified_by:t.modifiedBy,...t.agentId?{agent_id:t.agentId}:{}})}async ensureFileIdentity(t){let n=await this.callApi(`${kt}/ensure-file-identity`,{filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path}),o=n.identity?.file_id;if(!o)throw new Error("EnsureVFSFileIdentity response did not include a file_id");return{fileId:o,currentPath:n.identity?.current_path??t.path,webAppBaseUrl:n.web_app_base_url,appPathPrefix:n.app_path_prefix}}async resolveFileIdentity(t){let n=await this.callApi(`${kt}/resolve-file-identity`,{file_id:t}),o=n.identity;if(!o)throw new Error("ResolveVFSFileIdentity response did not include an identity");return{filesystemId:o.filesystem_id,spaceId:o.space_id,ownerUserId:o.owner_user_id,callerUserId:n.caller_user_id,currentPath:o.current_path,deleted:o.deleted===!0}}async appendComment(t){let n=await this.callApi(`${kt}/append-comment`,{filesystem_id:t.filesystemId,space_id:t.spaceId,event:t.event});return{event:n.event?cS(n.event):void 0}}async listComments(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId};t.path&&(n.path=t.path),t.fileId&&(n.file_id=t.fileId),t.pageToken&&(n.page_token=t.pageToken);let o=await this.callApi(`${kt}/list-comments`,n);return{events:o.events?.map(cS),raw_events:o.events,next_page_token:o.next_page_token??o.nextPageToken}}listWebhookRoleBindings(t){return this.base_listObjectRoleBindings(Vh,t)}grantWebhookRole({webhookId:t,principal:n,role:o}){return this.base_grantObjectRole(Vh,t,n,o)}revokeWebhookRole({webhookId:t,principal:n}){return this.base_revokeObjectRole(Vh,t,n)}async createWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/create",{description:t.description??"",type:dS[t.type],captured_headers:t.capturedHeaders??[]}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error("Failed to create webhook: response did not include webhook");let r=xi(this.base_parseJson(o,"create webhook")),i=n.url??r.url??"",l=n.setupInstructionsJson??n.setup_instructions_json??"",s=l?uS(this.base_parseJson(l,"create webhook setup instructions")):void 0;return{webhook:r,url:i,secret:n.secret??"",setupInstructions:s?{...s,webhookUrl:s.webhookUrl||i}:void 0}}async listWebhooks(){let t=await this.callApi("/cloud-webhooks/webhooks/list",{}),n=t.webhooksJson??t.webhooks_json??"";return n?this.base_parseJson(n,"list webhooks").filter(r=>r.webhookId||r.webhook_id).map(xi):[]}async getWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/get",{webhook_id:t}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error(`Webhook not found: ${t}`);return xi(this.base_parseJson(o,"get webhook"))}async deleteWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/delete",{webhook_ids:[t]});return yv(n)}async updateWebhook(t){let n={webhook_id:t.webhookId};t.description!==void 0&&(n.description=t.description),t.capturedHeaders!==void 0&&(n.captured_headers=t.capturedHeaders,n.update_captured_headers=!0);let o=await this.callApi("/cloud-webhooks/webhooks/update",n),r=o.webhookJson??o.webhook_json??"";if(!r)throw new Error(`Failed to update webhook: ${t.webhookId}`);return{webhook:xi(this.base_parseJson(r,"update webhook"))}}async setWebhookSecret(t){let n=await this.callApi("/cloud-webhooks/webhooks/set-secret",{webhook_id:t.webhookId,secret:t.secret}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error("Failed to set webhook secret: response did not include webhook");return{webhook:xi(this.base_parseJson(o,"set webhook secret"))}}async getWebhookSetupInstructions(t){let n=await this.callApi("/cloud-webhooks/webhooks/setup-instructions",{...t.webhookId?{webhook_id:t.webhookId}:{},...t.type?{type:dS[t.type]}:{}}),o=n.setupInstructionsJson??n.setup_instructions_json??"";return o?uS(this.base_parseJson(o,"webhook setup instructions"))??{steps:[],fields:[],webhookUrl:"",secretSource:"unknown"}:{steps:[],fields:[],webhookUrl:"",secretSource:"unknown"}}async workflow_listWorkflows(t={}){let n=await this.callApi("/cloud-triggers/workflows/list",{...t.eventSourceId?{event_source_id:t.eventSourceId}:{},...t.expertId?{expert_id:t.expertId}:{}});return this.base_parseJson(n.workflows_json||"[]","listWorkflows").map(r=>Nn(r))}async getWorkflow(t){let n=await this.callApi("/cloud-triggers/workflows/get",{workflow_id:t}),o=this.base_parseJson(n.workflow_json||"null","getWorkflow");if(!o)throw new Error(`Workflow not found: ${t}`);return Nn(o)}async deleteWorkflowResource({workflowId:t,expectedResourceVersion:n}){let o=await this.callApi("/cloud-triggers/workflows/delete",{workflow_ids:[t],...n===void 0?{}:{expected_resource_versions:[{workflow_id:t,expected_resource_version:n}]}});return{success:o.success??!0,deletedWorkflowIds:o.deleted_workflow_ids||o.deletedWorkflowIds||[],failedWorkflowIds:o.failed_workflow_ids||o.failedWorkflowIds||[],notFoundWorkflowIds:o.not_found_workflow_ids||o.notFoundWorkflowIds||[]}}async workflow_updateWorkflow({workflowId:t,name:n,enabled:o,expectedResourceVersion:r,overrideAutoCleanupOnIdle:i,initialInstructions:l,actorUserId:s,perMinuteCreateAgentLimit:a}){let c=await this.callApi("/cloud-triggers/workflows/update",{workflow_id:t,...n===void 0?{}:{name:n},...o===void 0?{}:{enabled:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{override_auto_cleanup_on_idle:i},...l===void 0?{}:{initial_instructions:l},...s===void 0?{}:{actor_user_id:s},...a===void 0?{}:{per_minute_create_agent_limit:a}}),d=this.base_parseJson(c.workflow_json||"null","updateWorkflow");if(!d)throw new Error(`Failed to update workflow: ${t}`);return Nn(d)}async workflow_listEventSources(){let t=await this.callApi("/cloud-triggers/event-sources/list",{});return this.base_parseJson(t.event_sources_json||"[]","listEventSources").map(o=>Ao(o))}async getEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/get",{event_source_id:t}),o=this.base_parseJson(n.event_source_json||"null","getEventSource");if(!o)throw new Error(`Event source not found: ${t}`);return Ao(o)}deleteWorkflow(t){return typeof t=="string"?this.deleteExpertWorkflows(t):this.deleteWorkflowResource(t)}};function gh(e){return new go(e)}var VS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.TENANT=1]="TENANT",e[e.USER=2]="USER",e[e.SPACE=3]="SPACE"})(VS||(VS={}));var mS;(function(e){e[e.VFS_COMMENT_EVENT_KIND_UNSPECIFIED=0]="VFS_COMMENT_EVENT_KIND_UNSPECIFIED",e[e.VFS_COMMENT_EVENT_KIND_CREATED=1]="VFS_COMMENT_EVENT_KIND_CREATED",e[e.VFS_COMMENT_EVENT_KIND_EDITED=2]="VFS_COMMENT_EVENT_KIND_EDITED",e[e.VFS_COMMENT_EVENT_KIND_RESOLVED=3]="VFS_COMMENT_EVENT_KIND_RESOLVED",e[e.VFS_COMMENT_EVENT_KIND_DELETED=4]="VFS_COMMENT_EVENT_KIND_DELETED",e[e.VFS_COMMENT_EVENT_KIND_REANCHORED=5]="VFS_COMMENT_EVENT_KIND_REANCHORED",e[e.VFS_COMMENT_EVENT_KIND_REOPENED=6]="VFS_COMMENT_EVENT_KIND_REOPENED",e[e.VFS_COMMENT_EVENT_KIND_REACTION=7]="VFS_COMMENT_EVENT_KIND_REACTION"})(mS||(mS={}));var gS;(function(e){e[e.VFS_COMMENT_MENTION_TYPE_UNSPECIFIED=0]="VFS_COMMENT_MENTION_TYPE_UNSPECIFIED",e[e.VFS_COMMENT_MENTION_TYPE_USER=1]="VFS_COMMENT_MENTION_TYPE_USER",e[e.VFS_COMMENT_MENTION_TYPE_FILE=2]="VFS_COMMENT_MENTION_TYPE_FILE"})(gS||(gS={}));var ES;(function(e){e[e.VFS_COMMENT_REACTION_OP_UNSPECIFIED=0]="VFS_COMMENT_REACTION_OP_UNSPECIFIED",e[e.VFS_COMMENT_REACTION_OP_ADD=1]="VFS_COMMENT_REACTION_OP_ADD",e[e.VFS_COMMENT_REACTION_OP_REMOVE=2]="VFS_COMMENT_REACTION_OP_REMOVE"})(ES||(ES={}));var pS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SALSA=1]="SALSA",e[e.AUGGIE=2]="AUGGIE"})(pS||(pS={}));var RS;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TOOL_PROVIDER=1]="TOOL_PROVIDER",e[e.AGENT=2]="AGENT",e[e.WAITING=3]="WAITING"})(RS||(RS={}));var ZS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SECRET_URL=1]="SECRET_URL",e[e.TENANT=2]="TENANT"})(ZS||(ZS={}));var SS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SHARED=1]="SHARED",e[e.PRIVATE=2]="PRIVATE"})(SS||(SS={}));var _t=D.child({prefix:"AugmentApiAdapter"}),ga=class{api;apiUrl;apiToken;constructor(t,n,o){this.api=t,this.apiUrl=n.endsWith("/")?n:`${n}/`,this.apiToken=o}async batchUpload(t){_t.debug(`batchUpload \u2192 ${t.length} blob(s)`);let n=t.map(r=>({pathName:r.pathName,text:r.text,blobName:r.blobName,metadata:r.metadata})),o=await this.api.batchUpload(n);return _t.debug("batchUpload \u2190 done"),o}async checkpointBlobs(t){_t.debug(`checkpointBlobs \u2192 +${t.addedBlobs.length} -${t.deletedBlobs.length} (checkpoint=${t.checkpointId??"new"})`);let n=await this.api.checkpointBlobs({checkpointId:t.checkpointId,addedBlobs:t.addedBlobs,deletedBlobs:t.deletedBlobs});return _t.debug(`checkpointBlobs \u2190 checkpoint=${n.newCheckpointId??"none"}`),n}async findMissing(t){_t.debug(`findMissing \u2192 ${t.length} blob(s)`);let n=await this.api.findMissing(t,void 0),o=n.nonindexedBlobNames.length,r=n.unknownBlobNames.length,i=t.length-o-r;return _t.debug(`findMissing \u2190 ${i} indexed, ${o} non-indexed, ${r} unknown`),n}async*getLatestIndexedCommitBlobset(t,n){_t.debug(`getLatestIndexedCommitBlobset \u2192 ${t.commit_shas.length} commit(s)`);let o=new URL("indexed-commits/get-latest-blobset",this.apiUrl),r=await fetch(o.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({commit_shas:t.commit_shas}),signal:n});if(!r.ok)throw new Error(`getLatestIndexedCommitBlobset failed: ${r.status} ${r.statusText}`);let i=r.body?.getReader();if(!i)return;let l=new TextDecoder,s="";for(;;){let{value:a,done:c}=await i.read();if(c)break;for(s+=l.decode(a,{stream:!0});s.includes(`
129
+ `)}}let c=i(a.trim());c&&(yield c)}finally{await r.cancel().catch(()=>{})}}return l()}toChatResult(t){if(typeof t.error=="string")return{text:"",error:{displayErrorMessage:t.error,errorDetails:Sx(t.error_details)}};let n=t.error;return{text:typeof t.text=="string"?t.text:"",unknownBlobNames:t.unknown_blob_names??[],checkpointNotFound:t.checkpoint_not_found??!1,workspaceFileChunks:br(t.workspace_file_chunks)??[],nodes:t.nodes,stop_reason:Zx(t.stop_reason),summarizeAndRetry:t.summarize_and_retry,error:n?{displayErrorMessage:String(n.display_error_message??n.displayErrorMessage??"Unknown stream error"),isRetriable:!!(n.is_retriable??n.isRetriable),shouldBackoff:!!(n.should_backoff??n.shouldBackoff)}:void 0}}async checkpointBlobs(t){let n=await this.callApi("checkpoint-blobs",{blobs:Aa(t)},{timeoutMs:ih});return{newCheckpointId:Rx(n.new_checkpoint_id,"new_checkpoint_id")}}async batchUpload(t){let n=await this.callApi("batch-upload",{blobs:t.map(o=>({blob_name:o.blobName,path:o.pathName,content:o.text}))},{timeoutMs:ih});return{blobNames:lh(n.blob_names,"blob_names")}}async findMissing(t,n){let o=await this.callApi("find-missing",{model:n,mem_object_names:[...t].sort()},{timeoutMs:ih});return{unknownBlobNames:lh(o.unknown_memory_names,"unknown_memory_names"),nonindexedBlobNames:lh(o.nonindexed_blob_names,"nonindexed_blob_names")}}async agentCodebaseRetrieval(t,n,o,r,i,l,s){let a=await this.request("agents/codebase-retrieval",{information_request:n,blobs:Aa(o),dialog:r,max_output_length:i,disable_codebase_retrieval:l?.disableCodebaseRetrieval??!1,enable_commit_retrieval:l?.enableCommitRetrieval??!1,enable_conversation_retrieval:l?.enableConversationRetrieval??!1,...l?.conversationId?{conversation_id:l.conversationId}:{},...l?.parentConversationId?{parent_conversation_id:l.parentConversationId}:{},...l?.rootConversationId?{root_conversation_id:l.rootConversationId}:{},...l?.turnId?{turn_id:l.turnId}:{},...l?.bringYourOwnKey?{bring_your_own_key:l.bringYourOwnKey}:{}},t,s);return br(await a.json())}async revokeCurrentUserTokens(){return await this.callApi("revoke-current-user-tokens",{})}async runRemoteTool(t,n,o,r,i,l,s){let a=await this.request("agents/run-remote-tool",{tool_name:n,tool_input_json:o,tool_id:r,...Xx(r,i),...s===void 0?{}:{bot_type:s}},t,l);return br(await a.json())}async logAgentSessionEvent(t){await this.request("record-session-events",{events:t.map(n=>({time:new Date(n.event_time_sec*1e3+n.event_time_nsec/1e6).toISOString(),event:{agent_session_event:{...n,user_agent:this.getUserAgent()}}}))})}async logAgentRequestEvent(t){let n=Map.groupBy(t,o=>o.request_id);for(let[o,r]of n)await this.request("record-request-events",{events:r.map(({request_id:i,...l})=>({time:new Date(l.event_time_sec*1e3+l.event_time_nsec/1e6).toISOString(),event:{agent_request_event:{...l,user_agent:this.getUserAgent()}}}))},o)}async logToolUseRequestEvent(t){let n=Map.groupBy(t,o=>o.requestId);await Promise.all([...n].map(async([o,r])=>{await this.request("record-request-events",{events:r.map(i=>{let l=JSON.stringify(i.toolInput);return{time:new Date(i.eventTimeSec*1e3+i.eventTimeNsec/1e6).toISOString(),event:{tool_use_data:{tool_name:i.toolName,tool_use_id:i.toolUseId,tool_output_is_error:i.toolOutputIsError,tool_run_duration_ms:i.toolRunDurationMs,tool_input:l,tool_input_len:l.length,is_mcp_tool:i.isMcpTool,conversation_id:i.conversationId,chat_history_length:i.chatHistoryLength,tool_output_len:i.toolOutputLen,tool_lines_added:i.toolLinesAdded,tool_lines_deleted:i.toolLinesDeleted,tool_use_diff:i.toolUseDiff,tool_error_class:i.toolErrorClass,tool_error_snippet:i.toolErrorSnippet}}}})},o)}))}base_getApiUrl(){return this.apiUrl}base_getAuthToken(){return this.apiToken}base_getUserAgent(){return this.getUserAgent()}base_getAuthHeaders(){return{Authorization:`Bearer ${this.apiToken}`,"User-Agent":this.getUserAgent()}}base_parseJson(t,n){try{return JSON.parse(t)}catch(o){throw new Error(`Failed to parse ${n} response as JSON: ${o instanceof Error?o.message:String(o)}. Response length: ${t.length}`)}}async base_listObjectRoleBindings(t,n){return((await this.callApi("/access/list",{object_type:t,object_id:n})).entries??[]).map(r=>this.base_parseObjectRoleBinding(r))}async base_grantObjectRole(t,n,o,r){await this.callApi("/access/grant",{object_type:t,object_id:n,principal:this.base_accessPrincipal(o),role:r})}async base_revokeObjectRole(t,n,o){await this.callApi("/access/revoke",{object_type:t,object_id:n,principal:this.base_accessPrincipal(o)})}base_parseObjectRoleBinding(t){return{principalType:t.principal_type??t.principalType??"unknown",principalId:t.principal_id??t.principalId??"",principalEmail:t.principal_email??t.principalEmail,principalDisplayName:t.principal_display_name??t.principalDisplayName,role:t.role??"",grantedBy:t.granted_by??t.grantedBy,createdAt:this.base_parseTimestamp(t.created_at??t.createdAt)}}base_accessPrincipal(t){return"email"in t?{email:t.email}:"tenant"in t?{tenant:!0}:"groupId"in t?{group_id:t.groupId}:"serviceAccountId"in t?{service_account_id:t.serviceAccountId}:"group"in t?{group:t.group}:"serviceAccount"in t?{service_account:t.serviceAccount}:{user_id:t.userId}}base_parseTimestamp(t){if(typeof t=="string"){let n=new Date(t);return Number.isNaN(n.getTime())?void 0:n}if(t!==null&&typeof t=="object"&&"seconds"in t){let n=t;return new Date(Number(n.seconds)*1e3+Math.floor(Number(n.nanos??0)/1e6))}}async recordPoseidonAnalyticsEvents({events:t}){this.logger.debug("Recording %d Poseidon analytics event(s)",t.length),await this.callApi("/record-poseidon-analytics-events",{events:t})}async getCostAnalytics(t){return this.logger.debug("Fetching cost analytics"),await this.callApi("/get-cost-analytics",t)}async getCostAnalyticsV2(t){return this.logger.debug("Fetching cost analytics (v2)"),await this.callApi("/get-cost-analytics-v2",t)}async listTags(t){return this.logger.debug("Fetching analytics tag catalog"),await this.callApi("/list-tags",t)}async getSessionAnalytics(t){return this.logger.debug("Fetching outcome session analytics"),await this.callApi("/get-session-analytics",t)}async getOutcomeAnalytics(t){return this.logger.debug("Fetching outcome analytics"),await this.callApi("/get-outcome-analytics",t)}async createUpload(t){let n={visibility:Nx[t.visibility],media_type:t.mediaType,size_bytes:t.sizeBytes,sha256_hex:t.sha256Hex};t.label!==void 0&&(n.label=t.label),t.filename!==void 0&&(n.filename=t.filename);let o=await this.callApi("/cloud-agents/artifacts/create-upload",n);return{hostedArtifactId:o.hosted_artifact_id??"",signedPutUrl:o.signed_put_url??"",requiredHeaders:o.required_headers??{},signedUrlExpiresAt:o.signed_url_expires_at??""}}async finalizeHostedArtifact(t){let n={hosted_artifact_id:t.hostedArtifactId};t.filename!==void 0&&(n.filename=t.filename);let o=await this.callApi("/cloud-agents/artifacts/finalize",n);if(o.artifact===void 0)throw new Error(`Finalize response missing artifact payload for ${t.hostedArtifactId}`);return Bx(o.artifact)}async deleteHostedArtifact(t){let n=Ix(t)?{canonical_url:t}:{hosted_artifact_id:t};await this.callApi("/cloud-agents/artifacts/delete",n)}listEnvironmentRoleBindings(t){return this.base_listObjectRoleBindings(sh,t)}grantEnvironmentRole({imageId:t,principal:n,role:o}){return this.base_grantObjectRole(sh,t,n,o)}revokeEnvironmentRole({imageId:t,principal:n}){return this.base_revokeObjectRole(sh,t,n)}async getEnvironment(t){let n=await this.callApi("/cloud-environments/environments/get",{ref:this.environment_toApiEnvironmentRef(t)}),o=n.summary;if(!o?.id)throw new Error(`Environment target not found: ${t.id}`);let r=o;return t.type==="environment"?r=n.details?.base_image??o:t.type==="pool"?r=n.details?.daemon_pool??o:r=n.details?.unpooled_daemon??n.details?.unpooled??o,{id:o.id,type:this.environment_environmentKindToType(o.kind),displayName:o.display_name??o.id,description:o.description,visibility:o.visibility,raw:r}}async listBaseImages(t){let n=await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[1],...t?.resolveUserDisplayNames?{resolve_user_display_names:!0}:{},...t?.orderBy===void 0?{}:{order_by:t.orderBy},...t?.searchQuery?{search_query:t.searchQuery}:{},...t?.ownedOnly?{owned_only:!0}:{},...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(n.environment_summaries??[]).filter(r=>(r.kind??0)===1&&typeof r.id=="string"&&r.id.length>0).map(r=>this.environment_parseBaseImage({id:r.id,image_id:r.id,display_name:r.display_name,description:r.description,visibility:r.visibility,created_at:r.created_at,updated_at:r.updated_at,created_by_user_name:r.created_by_user_name,space_id:r.space_id,sandbox_provider_id:r.sandbox_provider_id,sandbox_provider:r.sandbox_provider}));return o.length>0?o:(n.environments??[]).filter(r=>{let i=r.image_id??r.id;return typeof i=="string"&&i.length>0}).map(r=>this.environment_parseBaseImage(r))}async listCloudEnvironments(t){let n=await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[1,2,3],...t?.resolveUserDisplayNames?{resolve_user_display_names:!0}:{},...t?.orderBy===void 0?{}:{order_by:t.orderBy},...t?.searchQuery?{search_query:t.searchQuery}:{},...t?.ownedOnly?{owned_only:!0}:{},...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(n.environment_summaries??[]).filter(r=>typeof r.id=="string"&&r.id.length>0).map(r=>this.environment_parseCloudEnvironmentSummary(r));return o.length>0?o:(n.environments??[]).filter(r=>{let i=r.image_id??r.id;return typeof i=="string"&&i.length>0}).map(r=>{let i=this.environment_parseBaseImage(r);return{sandboxProviderId:i.sandboxProviderId,sandboxProvider:i.sandboxProvider,kind:"base_image",id:i.imageId,displayName:i.displayName,description:i.description,visibility:i.visibility,currentVersion:i.currentVersion,status:i.status,raw:i.raw??{}}})}async createBaseImage(t){let n=await this.callApi("/cloud-environments/base-images/create",q2(t),{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});if(!n.environment)throw new Error(`Failed to create environment: ${t.displayName}`);return this.environment_parseBaseImage(n.environment)}async getBaseImage(t){let n=await this.callApi("/cloud-environments/environments/get",{ref:{base_image_id:t}}),o=n.details?.base_image??n.environment;if(!o)throw new Error(`Environment not found: ${t}`);return this.environment_parseBaseImage(o)}async updateBaseImage({imageId:t,sandboxProviderId:n,displayName:o,description:r,visibility:i,baseImage:l,refreshEnabled:s,repos:a,environmentVariables:c,expectedResourceVersion:d,tags:u,spaceId:h}){let b=await this.callApi("/cloud-environments/base-images/update",$2({imageId:t,sandboxProviderId:n,displayName:o,description:r,visibility:i,baseImage:l,refreshEnabled:s,repos:a,environmentVariables:c,expectedResourceVersion:d,tags:u,spaceId:h}));return this.environment_parseBaseImage(b?.environment??b)}async deleteBaseImage(t){await this.callApi("/cloud-environments/base-images/delete",{image_id:t})}async getBaseImageVersions(t,n=!1){return((await this.callApi("/cloud-environments/base-images/builds/list",{image_id:t,...n?{include_update_scripts:!0}:{}})).builds??[]).map(r=>({imageId:r.image_id??t,version:r.version??"",gcpImageUrl:r.gcp_image_url,upstreamDigest:r.upstream_digest,createdAt:r.created_at?new Date(r.created_at):void 0,status:r.lifecycle_status??r.status,errorMessage:r.error_message,modalImageId:r.modal_image_id,updateScript:n?r.update_script:void 0,hasUpdateScript:r.has_update_script??!!r.update_script}))}listEnvironmentBuilds(t,n=!1){return this.getBaseImageVersions(t,n)}async restoreEnvironment(t){let n=await this.callApi("/cloud-environments/base-images/restore",{image_id:t});if(!n.environment)throw new Error(`Failed to restore environment: ${t}`);return this.environment_parseBaseImage(n.environment)}async listEnvironmentVersions({environmentId:t,limit:n}){return((await this.callApi("/cloud-environments/base-images/versions/list",{image_id:t,limit:n??50})).versions??[]).map(r=>this.environment_parseEnvironmentVersion(r))}async getEnvironmentVersion({environmentId:t,resourceVersion:n}){let o=await this.callApi("/cloud-environments/base-images/versions/get",{image_id:t,resource_version:n});if(!o.version)throw new Error(`Version ${n} not found for environment ${t}`);return this.environment_parseEnvironmentVersion(o.version)}async runImageUpdate({imageId:t,provisionScript:n,vmStartupScript:o,baseImageRef:r,useDefaultScripts:i}){let l=await this.callApi("/cloud-environments/base-images/rebuild",{image_id:t,...n===void 0?{}:{provision_script:n},...o===void 0?{}:{vm_startup_script:o},...r===void 0?{}:{base_image_ref:r},...i===void 0?{}:{use_default_scripts:i}},{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});return{modalImageId:l.modal_image_id??"",updatedAt:l.updated_at?new Date(l.updated_at):void 0}}async startEnvironmentRebuild({environmentId:t,idempotencyKey:n,provisionScript:o,vmStartupScript:r,baseImageRef:i},l){let s=await this.environment_callAbortableApi("/cloud-environments/base-images/rebuild/start",{environment_id:t,idempotency_key:n,...o===void 0?{}:{provision_script:o},...r===void 0?{}:{vm_startup_script:r},...i===void 0?{}:{base_image_ref:i}},l);return this.environment_parseEnvironmentOperation(s.operation)}async startEnvironmentRefresh({environmentId:t,idempotencyKey:n},o){let r=await this.environment_callAbortableApi("/cloud-environments/base-images/refresh/start",{environment_id:t,idempotency_key:n},o);return this.environment_parseEnvironmentOperation(r.operation)}async startEnvironmentSnapshotUpdate({environmentId:t,idempotencyKey:n,script:o,expectedCurrentVersion:r},i){let l=await this.environment_callAbortableApi("/cloud-environments/base-images/update-snapshot/start",{environment_id:t,idempotency_key:n,script:o,expected_current_version:r},i);return this.environment_parseEnvironmentOperation(l.operation)}async startEnvironmentRepositoryReconcile({environmentId:t,idempotencyKey:n,expectedCurrentVersion:o,...r},i){let l=await this.environment_callAbortableApi("/cloud-environments/base-images/repositories/reconcile/start",{update:$2({imageId:t,...r}),idempotency_key:n,...o===void 0?{}:{expected_current_version:o}},i);return this.environment_parseEnvironmentOperation(l.operation)}async startEnvironmentCreate({config:t,idempotencyKey:n},o){let r=await this.environment_callAbortableApi("/cloud-environments/base-images/create/start",{...q2(t),idempotency_key:n},o);if(!r.environment)throw new Error(`Failed to start environment create: ${t.displayName}`);return{environment:this.environment_parseBaseImage(r.environment),operation:this.environment_parseEnvironmentOperation(r.operation)}}async getEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/get",{operation_id:t},n);return this.environment_parseEnvironmentOperation(o.operation)}async getActiveEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/active/get",{environment_id:t},n);return o.operation?this.environment_parseEnvironmentOperation(o.operation):void 0}async cancelEnvironmentOperation(t,n){let o=await this.environment_callAbortableApi("/cloud-environments/operations/cancel",{operation_id:t},n);return this.environment_parseEnvironmentOperation(o.operation)}async updateEnvironmentSnapshot({environmentId:t,script:n,expectedCurrentVersion:o,idempotencyKey:r}){let i=await this.callApi("/cloud-environments/base-images/update-snapshot",{image_id:t,script:n,expected_current_version:o,idempotency_key:r},{timeoutMs:this.poseidonConfig.imageBuildTimeoutMs});return{modalImageId:i.modal_image_id??"",version:i.version??""}}async refreshEnvironment(t){await this.callApi("/cloud-environments/base-images/refresh",{image_id:t})}async duplicateBaseImage({sourceImageId:t,newDisplayName:n,visibility:o}){let r=await this.callApi("/cloud-environments/base-images/duplicate",{source_image_id:t,new_display_name:n,...o===void 0?{}:{visibility:o}}),i=r.environment??r.image;if(!i)throw new Error(`Failed to duplicate environment: ${t}`);return this.environment_parseBaseImage(i)}environment_parseEnvironmentOperation(t){let n=wx(t?.operation_type),o=t?.state===void 0?void 0:Yx[t.state],r=t?.phase===void 0?void 0:Cx[t.phase];if(!t?.operation_id||!t.environment_id||!n||!o||!r)throw new Error("Invalid environment operation response");let i=Number(t.result?.resource_version);if(o==="succeeded"&&(!t.result?.modal_image_id||!t.result.version||!Number.isSafeInteger(i)))throw new Error("Invalid environment operation response");return{operationId:t.operation_id,environmentId:t.environment_id,operationType:n,state:o,phase:r,result:t.result?{modalImageId:t.result.modal_image_id??"",version:t.result.version??"",resourceVersion:i}:void 0,error:t.error?{code:t.error.code??0,message:t.error.message??"",retryable:t.error.retryable??!1}:void 0}}async environment_callAbortableApi(t,n,o){let r=this.callApi(t,n,{signal:o});if(!o)return r;if(o.aborted)throw o.reason;let i,l=new Promise((s,a)=>{i=()=>a(o.reason),o.addEventListener("abort",i,{once:!0})});try{return await Promise.race([r,l])}finally{i&&o.removeEventListener("abort",i)}}environment_parseCloudEnvironmentSummary(t){let n=this.environment_cloudEnvironmentKind(t.kind),o={kind:n,id:t.id??"",displayName:t.display_name??t.id??"",description:t.description,visibility:t.visibility,raw:t},r=t.extras?.pool_status,i=t.extras?.unpooled;return n==="base_image"?(o.sandboxProviderId=t.sandbox_provider_id,o.sandboxProvider=t.sandbox_provider?fo(t.sandbox_provider):void 0,o.currentVersion=t.current_version,o.status=t.status):n==="daemon_pool"&&r?o.poolStatus={daemonsOnline:r.daemons_online,slotsTotal:r.slots_total,slotsInUse:r.slots_in_use}:n==="daemon"&&i&&(o.daemon={vmId:i.vm_id,workspacePath:i.workspace_path,maxAgents:i.max_agents,currentAgentCount:i.current_agent_count}),o}environment_cloudEnvironmentKind(t){switch(t){case 2:return"daemon_pool";case 3:return"daemon";default:return"base_image"}}environment_parseEnvironmentVersion(t){return{resourceVersion:t.resource_version??0,config:t.config?this.environment_parseEnvironmentConfig(t.config):void 0,modifiedBy:t.modified_by??"",modifiedAt:t.modified_at?new Date(t.modified_at):void 0,changeType:t.change_type??""}}environment_parseEnvironmentConfig(t){return{sandboxProviderId:t.sandbox_provider_id,displayName:t.display_name??"",description:t.description,visibility:t.visibility,baseImage:t.base_image,refreshEnabled:t.refresh_enabled,repos:(t.repos??[]).map(n=>({owner:n.owner??"",name:n.name??"",...n.branch?{branch:n.branch}:{},...n.host?{host:n.host}:{},...n.project?{project:n.project}:{}})),environmentVariables:t.environment_variables?{variables:(t.environment_variables.variables??[]).map(n=>({name:n.name??"",value:n.value??""}))}:void 0,spaceId:typeof t.space_id=="string"?t.space_id:void 0,tags:t.tags??{}}}environment_parseBaseImage(t){let n=t.image_id??t.id??"",o=t.space_id;return{sandboxProviderId:t.sandbox_provider_id,sandboxProvider:t.sandbox_provider?fo(t.sandbox_provider):void 0,imageId:n,displayName:t.display_name??n,description:t.description,currentVersion:t.current_version,status:t.lifecycle_status??t.status,visibility:t.visibility,modalImageId:t.modal_image_id,resourceVersion:t.resource_version,createdAt:t.created_at?new Date(t.created_at):void 0,updatedAt:t.updated_at?new Date(t.updated_at):void 0,spaceId:typeof o=="string"?o:void 0,tags:t.tags??{},raw:t}}environment_toApiEnvironmentRef(t){switch(t.type){case"environment":return{base_image_id:t.id};case"pool":return{daemon_pool_id:t.id};case"daemon":return{daemon_vm_id:t.id}}}environment_environmentKindToType(t){switch(t){case 1:return"environment";case 2:return"pool";case 3:return"daemon";default:throw new Error(`Unknown environment kind: ${t??"unset"}`)}}async getDefaultEnvironment(t){return t==="team"?(await this.callApi("/settings/get-poseidon-tenant-settings",{})).default_base_image_id??"":(await this.callApi("/settings/get-poseidon-user-settings",{})).default_environment_id??""}async setDefaultEnvironment(t,n){if(t==="team"){await this.callApi("/settings/update-poseidon-tenant-settings",{default_base_image_id:n});return}await this.callApi("/settings/update-poseidon-user-settings",{default_environment_id:n})}async unsetDefaultEnvironment(t){await this.setDefaultEnvironment(t,"")}async listEvents({limit:t,pageToken:n,source:o,filterPayload:r,eventType:i,since:l,until:s}={}){this.logger.debug("Listing cloud events");let a=await this.callApi("/cloud-events/events/list",{...t===void 0?{}:{limit:t},...n?{page_token:n}:{},...o?{source:o}:{},...r?{filter_payload:r}:{},...i?{event_type:i}:{},...l?{since:l}:{},...s?{until:s}:{}});return{events:(a.events??[]).map(xx),nextPageToken:a.next_page_token,totalCount:a.total_count}}listExpertRoleBindings(t){return this.base_listObjectRoleBindings(ah,t)}grantExpertRole({expertId:t,principal:n,role:o}){return this.base_grantObjectRole(ah,t,n,o)}revokeExpertRole({expertId:t,principal:n}){return this.base_revokeObjectRole(ah,t,n)}readExpertCapabilities(t,n){return L2(t,n,o=>{if(!this.reportedExpertEndpoints.has(n)){this.reportedExpertEndpoints.add(n),this.logger.warn(o.message);try{this.onExpertCapabilityMismatch?this.onExpertCapabilityMismatch(o,n):this.reportError(null,o.message,"",[{key:"api_call",value:n}])}catch{this.logger.warn("Failed to report expert capability mismatch.")}}})}parseExpertResponse(t,n){let o=H2(t);return o.config&&(o.config.capabilityNames=this.readExpertCapabilities(o.config,n)),o}parseExpertVersionResponse(t,n){let o=D2(t);return o.config&&(o.config={...o.config,capability_names:this.readExpertCapabilities(ca(o.config),n)}),o}async createExpert({scope:t,config:n,desiredSlug:o,spaceId:r,capabilitySource:i}){let l=await this.callApi("/cloud-experts/experts/create",{scope:t,config:nh(n),...o===void 0?{}:{desired_slug:o},...r===void 0?{}:{space_id:r},...i===void 0?{}:{capability_source:th[i]}});if(!l.expert)throw new Error("Failed to create expert: no expert in response");return this.parseExpertResponse(l.expert,"/cloud-experts/experts/create")}async getExpert(t){let n=await this.callApi("/cloud-experts/experts/get",{expert_id:t});if(!n.expert)throw new Error(`Expert not found: ${t}`);return this.parseExpertResponse(n.expert,"/cloud-experts/experts/get")}async updateExpert({expertId:t,config:n,scope:o,expectedResourceVersion:r,spaceId:i,capabilitySource:l}){let s=await this.callApi("/cloud-experts/experts/update",{expert_id:t,...n?{config:nh(n)}:{},...o===void 0?{}:{scope:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{space_id:i},...l===void 0?{}:{capability_source:th[l]}});if(!s.expert)throw new Error(`Failed to update expert: ${t}`);return this.parseExpertResponse(s.expert,"/cloud-experts/experts/update")}async deleteExperts({expertIds:t}){let n=await this.callApi("/cloud-experts/experts/delete",{expert_ids:t});return{deletedExpertIds:n.deleted_expert_ids??[],failedExpertIds:n.failed_expert_ids??[]}}async listExperts(t){return((await this.callApi("/cloud-experts/experts/list",{...t?.includeDeleted?{include_deleted:!0}:{},...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}})).experts??[]).map(o=>this.parseExpertResponse(o,"/cloud-experts/experts/list"))}async listExpertsWithUsage(t){let n=await this.callApi("/cloud-experts/experts/list-with-usage",{max_per_section:Jx,...t?.spaceId?{space_id:t.spaceId}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}}),o=(r,i)=>(r??[]).filter(l=>l.expert).map(l=>({expert:this.parseExpertResponse(l.expert,"/cloud-experts/experts/list-with-usage"),...i.lastUsed&&l.last_used_at?{lastUsedAt:new Date(l.last_used_at)}:{},...i.weeklyActiveUsers&&l.weekly_active_users!==void 0?{weeklyActiveUsers:l.weekly_active_users}:{}}));return{recentlyUsed:o(n.recently_used,{lastUsed:!0}),popular:o(n.popular,{weeklyActiveUsers:!0}),other:o(n.other,{})}}async restoreExpert(t){let n=await this.callApi("/cloud-experts/experts/restore",{expert_id:t});if(!n.expert)throw new Error(`Failed to restore expert: ${t}`);return this.parseExpertResponse(n.expert,"/cloud-experts/experts/restore")}async listExpertVersions({expertId:t,limit:n}){return((await this.callApi("/cloud-experts/experts/versions/list",{expert_id:t,limit:n??vx})).versions??[]).map(r=>this.parseExpertVersionResponse(r,"/cloud-experts/experts/versions/list"))}async getExpertVersion({expertId:t,resourceVersion:n}){let o=await this.callApi("/cloud-experts/experts/versions/get",{expert_id:t,resource_version:n});if(!o.version)throw new Error(`Version ${n} not found for expert ${t}`);return this.parseExpertVersionResponse(o.version,"/cloud-experts/experts/versions/get")}async listWorkflows(t={}){let n=await this.callApi("/cloud-triggers/workflows/list",{...t.eventSourceId?{event_source_id:t.eventSourceId}:{},...t.expertId?{expert_id:t.expertId}:{}});return this.base_parseJson(n.workflows_json||"[]","listWorkflows").map(r=>Nn(r))}async deleteExpertWorkflows(t){let n=await this.callApi("/cloud-triggers/workflows/delete",{workflow_ids:[t]});return{success:n.success??!0,deletedWorkflowIds:n.deleted_workflow_ids??[],failedWorkflowIds:n.failed_workflow_ids??[]}}async createWorkflow(t){let n=await this.callApi("/cloud-triggers/workflows/create",{...t.desiredSlug===void 0?{}:{desired_slug:t.desiredSlug},workflow_json:JSON.stringify({event_source_id:t.eventSourceId,name:t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,expert_id:t.expertId,...t.eventFilter?t.eventFilter:{},...t.overrideAutoCleanupOnIdle===void 0?{}:{override_auto_cleanup_on_idle:t.overrideAutoCleanupOnIdle},...t.initialInstructions===void 0?{}:{initial_instructions:t.initialInstructions},...t.actorUserId===void 0?{}:{actor_user_id:t.actorUserId},...t.perMinuteCreateAgentLimit===void 0?{}:{per_minute_create_agent_limit:t.perMinuteCreateAgentLimit}})}),o=this.base_parseJson(n.workflow_json||"null","createWorkflow");if(!o)throw new Error("Failed to create workflow: no workflow in response");return Nn(o)}async updateWorkflow({workflowId:t,name:n,enabled:o,expectedResourceVersion:r,overrideAutoCleanupOnIdle:i,initialInstructions:l,actorUserId:s,perMinuteCreateAgentLimit:a}){let c=await this.callApi("/cloud-triggers/workflows/update",{workflow_id:t,...n===void 0?{}:{name:n},...o===void 0?{}:{enabled:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{override_auto_cleanup_on_idle:i},...l===void 0?{}:{initial_instructions:l},...s===void 0?{}:{actor_user_id:s},...a===void 0?{}:{per_minute_create_agent_limit:a}}),d=this.base_parseJson(c.workflow_json||"null","updateWorkflow");if(!d)throw new Error(`Failed to update workflow: ${t}`);return Nn(d)}async listEventSources(){let t=await this.callApi("/cloud-triggers/event-sources/list",{});return this.base_parseJson(t.event_sources_json||"[]","listEventSources").map(o=>Ao(o))}async deleteEventSources(t){let n=await this.callApi("/cloud-triggers/event-sources/delete",{event_source_ids:t});return{success:n.success??!0,deletedEventSourceIds:n.deleted_event_source_ids??[],failedEventSourceIds:n.failed_event_source_ids??[]}}async createEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/create",{...t.desiredSlug===void 0?{}:{desired_slug:t.desiredSlug},event_source_json:JSON.stringify({name:t.name,event_source_type:t.eventSourceType,...t.config})}),o=this.base_parseJson(n.event_source_json||"null","createEventSource");if(!o)throw new Error("Failed to create event source: no event_source in response");return Ao(o)}async updateEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/update",{expected_resource_version:t.expectedResourceVersion,event_source_json:JSON.stringify({event_source_id:t.eventSourceId,name:t.name,event_source_type:t.eventSourceType,active:t.active,...t.config})}),o=this.base_parseJson(n.event_source_json||"null","updateEventSource");if(!o)throw new Error(`Failed to update event source: ${t.eventSourceId}`);return Ao(o)}async listGroups(){this.logger.debug("Listing tenant groups");let t=[],n="";do{let o=await this.callApi("/cloud-groups/list",{page_token:n});t.push(...(o.groups??[]).map(ch)),n=o.next_page_token??""}while(n.length>0);return t}async createGroup(t,n){this.logger.info("Creating group %s",t);let o=await this.callApi("/cloud-groups/create",{name:t,description:n});if(!o.group)throw new Error("Failed to create group: no group in response");return ch(o.group)}async updateGroup(t,n){this.logger.info("Updating group %s",t);let o={group_id:t};n.name!==void 0&&(o.name=n.name),n.description!==void 0&&(o.description=n.description);let r=await this.callApi("/cloud-groups/update",o);if(!r.group)throw new Error("Failed to update group: no group in response");return ch(r.group)}async deleteGroup(t){this.logger.info("Deleting group %s",t),await this.callApi("/cloud-groups/delete",{group_id:t})}async listGroupMembers(t){this.logger.debug("Listing members of group %s",t);let n=[],o="";do{let r=await this.callApi("/cloud-groups/members/list",{group_id:t,page_token:o});n.push(...(r.members??[]).map(_x)),o=r.next_page_token??""}while(o.length>0);return n}async addGroupMembers(t,n){this.logger.info("Adding %d member(s) and %d service account(s) to group %s",n.members?.length??0,n.serviceAccounts?.length??0,t);let o=eS(t,n),r=await tS(()=>this.callApi("/cloud-groups/members/add",o),o);return{addedUserIds:r.added_user_ids??[],alreadyMemberUserIds:r.already_member_user_ids??[]}}async removeGroupMembers(t,n){this.logger.info("Removing %d member(s) and %d service account(s) from group %s",n.members?.length??0,n.serviceAccounts?.length??0,t);let o=eS(t,n),r=await tS(()=>this.callApi("/cloud-groups/members/remove",o),o);return{removedUserIds:r.removed_user_ids??[],notMemberUserIds:r.not_member_user_ids??[]}}async listIntegrations(){return this.logger.debug("Listing integrations"),((await this.callApi("/cloud-integrations/list",{})).integrations??[]).map(nS)}async invokeIntegrationAction({integrationId:t,kind:n}){this.logger.info("Invoking integration action %s on %s",n,t);let o=await this.callApi("/cloud-integrations/invoke-action",{integration_id:t,kind:n});return{urlToOpen:o.url_to_open??"",message:o.message??"",integration:o.integration?nS(o.integration):void 0}}async upsertMcpConfig({scope:t,config:n,expectedVersion:o}){let r=t==="tenant"?"/settings/upsert-mcp-tenant-config":"/settings/upsert-mcp-user-config";this.logger.debug("Upserting MCP config (scope=%s, id=%s)",t,n.id);let i={config:n};return o!==void 0&&(i.expected_version=o),await this.callApi(r,i)}async removeMcpConfig({scope:t,configId:n,expectedVersion:o}){let r=t==="tenant"?"/settings/remove-mcp-tenant-config":"/settings/remove-mcp-user-config";this.logger.debug("Removing MCP config (scope=%s, id=%s)",t,n);let i={config_id:n};return o!==void 0&&(i.expected_version=o),await this.callApi(r,i)}async getMcpTenantConfigs(){this.logger.debug("Getting tenant MCP configs");let t=await this.callApi("/settings/get-mcp-tenant-settings",{});return{configs:t.mcp_configs??[],version:t.version??""}}async getMcpUserConfigs(){this.logger.debug("Getting user MCP configs");let t=await this.callApi("/settings/get-mcp-user-settings",{});return{configs:t.mcp_configs??[],version:t.version??""}}async getMcpConfigById({configId:t,scope:n}){this.logger.debug("Getting MCP config by id (scope=%s, id=%s)",n,t);try{return(await this.callApi("/settings/get-mcp-config-by-id",{config_id:t,scope:zx[n]})).config??null}catch(o){if(o instanceof St&&o.statusCode===Tx)return null;throw o}}async listSandboxProviders(t){return((await this.callApi("/sandbox-providers/list",{...t?.includeDeleted?{include_deleted:!0}:{},...t?.spaceId===void 0?{}:{space_id:t.spaceId}})).providers??[]).map(fo)}async getSandboxProvider(t,n){let o=await this.callApi("/sandbox-providers/get",{slug:t,...n?.includeDeleted?{include_deleted:!0}:{},...n?.spaceId===void 0?{}:{space_id:n.spaceId}});if(!o.provider)throw new Error(`Sandbox provider not found: ${t}`);return fo(o.provider)}async createSandboxProvider({slug:t,displayName:n,description:o,enabled:r,spaceIds:i,allSpaces:l}){let s=await this.callApi("/sandbox-providers/create",{slug:t,display_name:n,...o===void 0?{}:{description:o},...r===void 0?{}:{enabled:r},space_ids:i,all_spaces:l});if(!s.provider)throw new Error(`Failed to create sandbox provider: ${t}`);return fo(s.provider)}async updateSandboxProvider({id:t,displayName:n,description:o,enabled:r,expectedResourceVersion:i,spaceIds:l,allSpaces:s}){let a=await this.callApi("/sandbox-providers/update",{id:t,...n===void 0?{}:{display_name:n},...o===void 0?{}:{description:o},...r===void 0?{}:{enabled:r},expected_resource_version:i,...l===void 0?{}:{space_ids:l},...s===void 0?{}:{all_spaces:s}});if(!a.provider)throw new Error(`Failed to update sandbox provider: ${t}`);return fo(a.provider)}async deleteSandboxProvider({id:t,expectedResourceVersion:n}){await this.callApi("/sandbox-providers/delete",{id:t,expected_resource_version:n})}async restoreSandboxProvider({id:t,expectedResourceVersion:n}){let o=await this.callApi("/sandbox-providers/restore",{id:t,expected_resource_version:n});if(!o.provider)throw new Error(`Failed to restore sandbox provider: ${t}`);return fo(o.provider)}listSandboxProviderRoleBindings(t){return this.base_listObjectRoleBindings(uh,t)}grantSandboxProviderRole({providerId:t,principal:n,role:o}){return this.base_grantObjectRole(uh,t,n,o)}revokeSandboxProviderRole({providerId:t,principal:n}){return this.base_revokeObjectRole(uh,t,n)}async listPools(t){return this.logger.debug("Listing daemon pools"),((await this.callApi("/cloud-environments/environments/list",{...t?.includeDeleted?{include_deleted:!0}:{},kinds:[2],resolve_user_display_names:!0})).environment_summaries??[]).filter(o=>(o.kind??0)===2&&typeof o.id=="string"&&o.id.length>0).map(o=>({...da({id:o.id,display_name:o.display_name,description:o.description,visibility:o.visibility,created_by_user_id:o.created_by_user_id,created_by_user_name:o.created_by_user_name,created_at:o.created_at,updated_at:o.updated_at}),status:Mx(o.extras?.pool_status)}))}async createPool({displayName:t,description:n,visibility:o,connectorUserId:r,connectorServiceAccount:i,workspaceIsolationPolicy:l,spaceId:s}){this.logger.info("Creating daemon pool %s",t);let a=rS({connectorUserId:r,connectorServiceAccount:i}),c=await this.callApi("/cloud-environments/pools/create",{display_name:t,...n===void 0?{}:{description:n},...o===void 0?{}:{visibility:o},...a===void 0?{}:{connector:a},...l===void 0?{}:{workspace_isolation_policy:l},...s===void 0?{}:{space_id:s}});if(!c.pool)throw new Error(`Failed to create daemon pool: ${t}`);return da(c.pool)}async getPool(t,n){let o=await this.callApi("/cloud-environments/environments/get",{ref:{daemon_pool_id:t}},{signal:n}),r=o.summary,i=o.details?.daemon_pool;if(!r?.id&&!i?.id)throw new Error(`Daemon pool not found: ${t}`);return da({...r,...i,id:i?.id??r?.id})}async updatePool({poolId:t,displayName:n,description:o,visibility:r,connectorUserId:i,connectorServiceAccount:l,workspaceIsolationPolicy:s,expectedResourceVersion:a,spaceId:c}){let d=rS({connectorUserId:i,connectorServiceAccount:l}),u=await this.callApi("/cloud-environments/pools/update",{id:t,...n===void 0?{}:{display_name:n},...o===void 0?{}:{description:o},...r===void 0?{}:{visibility:r},...d===void 0?{}:{connector:d},workspace_isolation_policy:s,expected_resource_version:a,...c===void 0?{}:{space_id:c}});return da(u.pool??u)}async deletePool(t){this.logger.info("Deleting daemon pool %s",t),await this.callApi("/cloud-environments/pools/delete",{id:t})}async listPoolDaemons(t){return this.logger.debug("Listing daemons for pool %s",t),((await this.callApi("/cloud-environments/pools/daemons/list",{pool_id:t})).daemons??[]).filter(o=>typeof o.vm_id=="string"&&o.vm_id.length>0).map(Ox)}listPoolRoleBindings(t){return this.logger.debug("Listing daemon_pool role bindings for %s",t),this.base_listObjectRoleBindings(dh,t)}grantPoolRole({poolId:t,principal:n,role:o}){return this.logger.debug("Granting daemon_pool role %s for %s",o,t),this.base_grantObjectRole(dh,t,n,o)}revokePoolRole({poolId:t,principal:n}){return this.logger.debug("Revoking daemon_pool roles for %s",t),this.base_revokeObjectRole(dh,t,n)}async listProjects(){return this.logger.debug("Listing projects"),((await this.callApi("/cloud-projects/projects/list",{})).projects??[]).map(yi)}async getProject(t){this.logger.debug("Getting project %s",t);let n=await this.callApi("/cloud-projects/projects/get",{project_id:t});if(!n.project)throw new Error("Failed to get project: no project in response");return yi(n.project)}async createProject(t){this.logger.info("Creating project %s",t.name);let n=await this.callApi("/cloud-projects/projects/create",{name:t.name,description:t.description});if(!n.project)throw new Error("Failed to create project: no project in response");return yi(n.project)}async deleteProject(t){this.logger.info("Deleting project %s",t),await this.callApi("/cloud-projects/projects/delete",{project_id:t})}async addProjectAgent(t){this.logger.info("Adding agent %s to project %s",t.agentId,t.projectId);let n=await this.callApi("/cloud-projects/projects/add-agent",{project_id:t.projectId,agent_id:t.agentId});if(!n.project)throw new Error("Failed to add agent: no project in response");return yi(n.project)}async removeProjectAgent(t){this.logger.info("Removing agent %s from project %s",t.agentId,t.projectId);let n=await this.callApi("/cloud-projects/projects/remove-agent",{project_id:t.projectId,agent_id:t.agentId});if(!n.project)throw new Error("Failed to remove agent: no project in response");return yi(n.project)}listResidentRoleBindings(t){return this.base_listObjectRoleBindings(hh,t)}grantResidentRole({residentId:t,principal:n,role:o}){return this.base_grantObjectRole(hh,t,n,o)}revokeResidentRole({residentId:t,principal:n}){return this.base_revokeObjectRole(hh,t,n)}async createResident(t){let n=await this.callApi("/cloud-residents/residents/create",{scope:t.scope,config:lS(t.config)});if(!n.resident)throw new Error("Failed to create resident: no resident in response");return Vo(n.resident)}async getResident(t){let n=await this.callApi("/cloud-residents/residents/get",{resident_id:t});if(!n.resident)throw new Error(`Resident not found: ${t}`);return Vo(n.resident)}async updateResident(t){let n=await this.callApi("/cloud-residents/residents/update",{resident_id:t.residentId,...t.config?{config:lS(t.config)}:{},...t.scope===void 0?{}:{scope:t.scope},...t.expectedResourceVersion===void 0?{}:{expected_resource_version:t.expectedResourceVersion}});if(!n.resident)throw new Error(`Failed to update resident: ${t.residentId}`);return Vo(n.resident)}async deleteResidents(t){let n=await this.callApi("/cloud-residents/residents/delete",{resident_ids:t.residentIds,...t.hardDeletion?{hard_delete:!0}:{}});return{deletedResidentIds:n.deleted_resident_ids??[],failedResidentIds:n.failed_resident_ids??[]}}async listResidents(t){return((await this.callApi("/cloud-residents/residents/list",{...t?.scope===void 0?{}:{scope:t.scope},...t?.spaceId?{space_id:t.spaceId}:{},...t?.includeDeleted?{include_deleted:!0}:{},...t?.defaultSpaceOnly?{default_space_only:!0}:{}})).residents??[]).map(Vo)}async startResident(t){let n=await this.callApi("/cloud-residents/residents/start",{resident_id:t.residentId,...t.initialMessage?{initial_message:t.initialMessage}:{}});if(!n.resident)throw new Error(`Failed to start resident: ${t.residentId}`);return{resident:Vo(n.resident),agent:n.agent}}async stopResident(t){let n=await this.callApi("/cloud-residents/residents/stop",{resident_id:t.residentId});if(!n.resident)throw new Error(`Failed to stop resident: ${t.residentId}`);return Vo(n.resident)}async listResidentSessions(t){return((await this.callApi("/cloud-residents/residents/sessions/list",{resident_id:t.residentId})).sessions??[]).map(ev)}async getResidentVersion(t){let n;try{n=await this.callApi("/cloud-residents/residents/versions/get",{resident_id:t.residentId,resource_version:t.resourceVersion})}catch(o){throw o instanceof St&&o.statusCode===404?new sr(t.residentId,t.resourceVersion):o}if(!n.version)throw new sr(t.residentId,t.resourceVersion);return iS(n.version)}async listResidentVersions(t){return((await this.callApi("/cloud-residents/residents/versions/list",{resident_id:t.residentId,...t.limit===void 0?{}:{limit:t.limit}})).versions??[]).map(iS)}async restoreResident(t){let n=await this.callApi("/cloud-residents/residents/restore",{resident_id:t.residentId});if(!n.resident)throw new Error(`Failed to restore resident: ${t.residentId}`);return Vo(n.resident)}async listSlackChannels(t){let n=await this.callApi("/cloud-integrations/slack/list-channels",{...t.cursor===void 0?{}:{cursor:t.cursor},...t.limit===void 0?{}:{limit:t.limit}});return{channels:(n.channels??[]).map(o=>({id:o.id??"",name:o.name??"",isPrivate:o.is_private??!1,isMember:o.is_member??!1})),nextCursor:n.next_cursor??"",error:n.error??""}}async writeScopedSecret(t){let n=rv(t),o=await this.callApi("/user-secrets/upsert",n);if(o.secret===void 0)throw new Error(`Create response missing secret payload for ${t.name}`);let r=ua(o.secret,t.name,t.scope);return r.applicability===void 0&&t.applicability!==void 0?{...r,applicability:t.applicability}:r}async deleteScopedSecret({name:t,scope:n,secretId:o,expectedVersion:r}){let i={name:t,scope:AS[n],secret_id:o};return r!==void 0&&(i.expected_version=r),(await this.callApi("/user-secrets/delete",i)).deleted??!1}async listSecretMetadata(t){if(t.scope==="all"){let[a,c]=await Promise.all([this.listSecretMetadata({...t,scope:"user"}),this.listSecretMetadata({...t,scope:"tenant"})]);return[...a,...c].sort((d,u)=>d.scope===u.scope?d.name.localeCompare(u.name):d.scope==="user"?-1:1)}let n=t.scope==="tenant",o=n?"/tenant-secrets/list":"/user-secrets/list",r={include_values:!1},i=av(t.tagFilter);i!==void 0&&(r.tag_filters=i),t.pageSize!==void 0&&(r.page_size=t.pageSize),t.pageToken!==void 0&&(r.page_token=t.pageToken),n||(r.scope=wi[t.scope],t.spaceId!==void 0&&(r.space_id=t.spaceId));let l=await this.callApi(o,r),s=n?"tenant":"user";return(l.secrets??[]).map(a=>ua(a,a.name??"",s))}async isSecretMetadataScopedResolutionEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:wi.user})).secret_scoped_resolution_enabled===!0}async isSecretMultiSpaceTargetingEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:wi.user})).secret_multi_space_targeting_enabled===!0}async getOptionalSecretMetadata(t,n){try{return await this.getSecretMetadata(t,n)}catch(o){if(o instanceof St&&o.statusCode===404)return;throw o}}async getSecretMetadata(t,n){try{return await this.secretMetadata_getPinned(t,n)}catch(o){if(n!=="user"||!(o instanceof St)||o.statusCode!==404)throw o;let r=await this.secretMetadata_findExactUserMatches(t);if(r.length===0)throw o;if(r.length>1)throw new Ui(`More than one user secret is named '${t}'; use a unique name to manage it.`);let i=r[0];if(i?.secretId===void 0||i.secretId==="")throw o;return this.secretMetadata_getPinned(t,n,i.secretId)}}async secretMetadata_getPinned(t,n,o){let r=n==="tenant",i=r?"/tenant-secrets/get":"/user-secrets/get",l={name:t,include_values:!1};r||(l.scope=wi[n],o!==void 0&&(l.secret_id=o));let s=await this.callApi(i,l);if(s.secret===void 0)throw new Error(`Get response missing secret payload for ${t}`);return ua(s.secret,t,n)}async secretMetadata_findExactUserMatches(t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return((await this.callApi("/user-secrets/list",{name_pattern:`^${n}$`,include_values:!1,page_size:2,scope:wi.user})).secrets??[]).filter(r=>r.name===t).map(r=>ua(r,t,"user"))}async isSecretOlacEnabled(){return(await this.callApi("/get-models",{})).feature_flags?.cli_secret_olac_commands===!0}async renameSecret({secretId:t,newName:n}){let o=await this.callApi("/user-secrets/rename",{secret_id:t,new_name:n});if(this.logger.debug("Renamed secret %s",t),o.secret===void 0)throw new Error(`Rename response missing secret payload for ${t}`);return{name:o.secret.name??"",version:o.secret.version??"",secretId:o.secret.secret_id??t,olacReady:o.secret.olac_ready??!1}}listSecretRoleBindings(t){return this.base_listObjectRoleBindings(bh,t)}grantSecretRole({secretId:t,principal:n,role:o}){return this.base_grantObjectRole(bh,t,n,o)}revokeSecretRole({secretId:t,principal:n}){return this.base_revokeObjectRole(bh,t,n)}async listAgentsPaginated(t){let n=await this.callApi("/cloud-agents/agents/list",Av(t));return{agents:(n.agents??[]).map(ur),hasMore:n.has_more??!1,...n.next_page_token?{nextPageToken:n.next_page_token}:{}}}async getAgent(t){let n=await this.callApi("/cloud-agents/agents/get",{agent_id:t});if(!n.agent)throw new Error(`Agent not found: ${t}`);return ur(n.agent)}async registerVm(t){let n=t.mode??dv.AGENT;Fn.info(`registerVm: agent=${t.agentId} mode=${n} cwd=${t.workspacePath}`);let o=fv(t,n),r=await this.callApi("/vm-beachhead/connect-cli-vm",o);if(!r.success)throw new Error(`connect-cli-vm rejected by server: ${r.error_message??"unknown error"}`);let i=r.vm_id;if(!i)throw new Error("connect-cli-vm returned no vm_id");return Vv(t,r,i)}async createAgent(t){Fn.info(`createAgent: name=${t.name}`);let n={agent_loop_type:cv};t.model&&(n.model=t.model);let o={agent_name:t.name,capabilities:t.capabilities??[],tags:t.tags??[],session_config:n};t.initialMessage&&(o.initial_message=t.initialMessage);let i=(await this.callApi("/cloud-agents/agents/create",o)).agent;if(!i?.agent_id)throw new Error("createAgent: server returned no agent");return ur({...i,agent_name:i.agent_name??t.name})}async updateSessionConfig(t){Fn.info(`updateSessionConfig: agent=${t.agentId} model=${t.model??"<unset>"}`),await this.callApi("/cloud-agents/agents/update-session-config",{agent_id:t.agentId,session_config:{...t.model===void 0?{}:{model:t.model}}})}async requestSessionMcpServer(t){Fn.info(`requestSessionMcpServer: agent=${t.agentId} config=${t.mcpConfigId} request=${t.requestId}`);let n=await this.callApi("/cloud-agents/agents/request-mcp-server",{agent_id:t.agentId,mcp_config_id:t.mcpConfigId,request_id:t.requestId},{timeoutMs:fS});return{status:typeof n?.status=="string"?n.status:""}}async getMessages(t,n){Fn.info(`getMessages: agent=${t} limit=${n??"<default>"}`);let r=(await this.callApi("/cloud-agents/agents/get-messages",{agent_id:t,...n===void 0?{}:{limit:n},include_replay_fidelity:!0})).messages;return r==null?[]:Array.isArray(r)?r.map(i=>pv(i,t)):(Fn.warn(`getMessages: unexpected response shape for agent ${t}: messages is ${typeof r}, not an array`),[])}async sendMessage(t,n){Fn.info(`sendMessage: agent=${t} length=${n.length}`),await this.callApi("/cloud-agents/agents/send-message",{agent_id:t,message:n})}async listWorkerSessions(t,n){this.logger.debug("Listing worker sessions for parent %s",t);let o=n?.pageLimit??100,r=[],i;do{let l=await this.listAgentsPaginated({limit:o,parentAgentId:t,includeArchived:!0,pageToken:i});for(let s of l.agents)s.parentAgentId===t&&r.push(s);i=l.hasMore?l.nextPageToken:void 0}while(i);return r}async batchGetAgentMessageCounts(t){if(t.length===0)return{};this.logger.debug("Fetching message counts for %d agents",t.length);let o=(await this.callApi("/cloud-agents/agents/batch-get-message-counts",{agent_ids:t})).counts_by_agent_id;if(!o||typeof o!="object")return{};let r={};for(let[i,l]of Object.entries(o))typeof l=="number"&&(r[i]=l);return r}async createAgentFromExpert(t){this.logger.info("Creating agent from expert %s",t.expertId);let n=await this.callApi("/cloud-experts/experts/create-agent",{expert_id:t.expertId,...t.agentName?{agent_name:t.agentName}:{},...t.initialMessage?{initial_message:t.initialMessage}:{},idempotency_key:sx(),send_initial_messages:!1,...t.spaceId?{space_id:t.spaceId}:{},...t.routingTarget?{routing_target:Sv(t.routingTarget)}:{}});if(!n.agent)throw new Error("Failed to create agent from expert: no agent in response");return{agentId:n.agent.agent_id,agentName:n.agent.agent_name}}async getSessionUsage(t){this.logger.debug("Fetching session usage for %s",t.agentId);let n=await this.callApi("/get-session-usage",{agent_id:t.agentId});return{currentSession:{estimatedCustomerCostUsd:n.usage_current_session?.total_usage?.estimated_customer_cost_usd},withChildSessions:{estimatedCustomerCostUsd:n.usage_with_child_sessions?.total_usage?.estimated_customer_cost_usd}}}async renameAgent(t,n){this.logger.info("Renaming agent %s",t);let o=await this.callApi("/cloud-agents/agents/rename",{agent_id:t,new_name:n});if(!o.agent)throw new Error("Failed to rename agent: no agent in response");return ur(o.agent)}async updateAgentSessionTag(t,n,o,r){this.logger.info("Updating session tag '%s' for agent %s",n,t);let i=await this.callApi("/cloud-agents/agents/update-session-tags",{agent_id:t,key:n,value:o,delete:r});if(!i.agent)throw new Error("Failed to update session tags: no agent in response");return ur(i.agent)}async deleteAgent(t){this.logger.info("Deleting agent %s",t);let n=await this.callApi("/cloud-agents/agents/delete",{agent_id:t});if(n.success===!1)throw new Error(n.error_message||`Failed to delete agent: ${t}`)}async archiveAgent(t){this.logger.info("Archiving agent %s",t),await this.callApi("/cloud-agents/agents/archive",{agent_id:t})}async unarchiveAgent(t){this.logger.info("Unarchiving agent %s",t),await this.callApi("/cloud-agents/agents/unarchive",{agent_id:t})}async pinSession(t){this.logger.debug("Pinning session %s",t),await this.callApi("/settings/pin-poseidon-session",{session_id:t})}async unpinSession(t){this.logger.debug("Unpinning session %s",t),await this.callApi("/settings/unpin-poseidon-session",{session_id:t})}async getPinnedSessions(){return this.logger.debug("Listing pinned sessions"),((await this.callApi("/settings/get-poseidon-user-settings",{})).pinned_order??[]).map(n=>({sessionId:n.session_id||void 0,projectId:n.project_id||void 0}))}listSpaceRoleBindings(t){return this.base_listObjectRoleBindings(Ah,t)}grantSpaceRole({spaceId:t,principal:n,role:o}){return this.base_grantObjectRole(Ah,t,n,o)}revokeSpaceRole({spaceId:t,principal:n}){return this.base_revokeObjectRole(Ah,t,n)}async listSpaces(){return this.logger.debug("Listing tenant spaces"),((await this.callApi("/cloud-spaces/spaces/list",{})).spaces??[]).map(ha)}async createSpace(t){this.logger.info("Creating space %s",t);let n=await this.callApi("/cloud-spaces/spaces/create",{display_name:t});if(!n.space)throw new Error("Failed to create space: no space in response");return ha(n.space)}async updateSpace(t,n){this.logger.info("Renaming space %s to %s",t,n);let o=await this.callApi("/cloud-spaces/spaces/update",{space_id:t,display_name:n});if(!o.space)throw new Error("Failed to rename space: no space in response");return ha(o.space)}async deleteSpace(t){return this.logger.info("Deleting space %s",t),(await this.callApi("/cloud-spaces/spaces/delete",{space_id:t})).success??!1}async getSpace(t,n){this.logger.debug("Getting space %s",t||"(default)");let o=await this.callApi("/cloud-spaces/spaces/get",{space_id:t},{signal:n});return o.space?ha(o.space):void 0}async openTunnel(t){this.logger.debug("Opening Poseidon tunnel for agent %s",t.agentId);let n=await this.callApi("/cloud-tunnels/tunnels/open",{agent_id:t.agentId,local_port:t.localPort,...t.localHost?{local_host:t.localHost}:{},...t.label?{label:t.label}:{},activate:t.activate??!0});if(!n.tunnel)throw new Error("Failed to open tunnel: response did not include a tunnel");return fh(n.tunnel)}async closeTunnel(t){this.logger.debug("Closing Poseidon tunnel %s",t.tunnelId);let n=await this.callApi("/cloud-tunnels/tunnels/close",{tunnel_id:t.tunnelId,...t.reason?{reason:t.reason}:{}});return n.tunnel?fh(n.tunnel):void 0}async listTunnels(t){return this.logger.debug("Listing Poseidon tunnels for agent %s",t),((await this.callApi("/cloud-tunnels/tunnels/list",{agent_id:t})).tunnels??[]).map(fh)}async isScopedResolutionEnabled(){return(await this.callApi("/user-secrets/list",{include_values:!1,page_size:1,scope:1})).secret_scoped_resolution_enabled===!0}async listUserSecrets(t){if(t.scope==="all")return(await Promise.all([this.listUserSecrets({...t,scope:"user"}),this.listUserSecrets({...t,scope:"tenant"})])).flat().sort((s,a)=>s.scope===a.scope?s.name.localeCompare(a.name):s.scope==="user"?-1:1);let n=t.scope==="tenant",o={},r=Gv(t.tagFilter);return r&&(o.tag_filters=r),t.includeValues!==void 0&&(o.include_values=t.includeValues),t.pageSize!==void 0&&(o.page_size=t.pageSize),t.pageToken!==void 0&&(o.page_token=t.pageToken),n||(o.scope=dr.user,t.spaceId!==void 0&&(o.space_id=t.spaceId)),((await this.callApi(n?"/tenant-secrets/list":"/user-secrets/list",o)).secrets??[]).map(l=>ba(l,t.scope))}async getUserSecret(t,n){let o=n==="tenant",r=await this.callApi(o?"/tenant-secrets/get":"/user-secrets/get",o?{name:t}:{name:t,scope:dr[n]});if(!r.secret)throw new Error(`Get response missing secret payload for ${t}`);return{...ba(r.secret,n),value:r.secret.value??""}}async upsertUserSecret(t){let n=t.scope==="tenant",o={name:t.name,value:t.value};if(t.description!==void 0&&(o.description=t.description),t.tags!==void 0&&(o.tags=t.tags),t.expectedVersion!==void 0&&(o.expected_version=t.expectedVersion),t.maxValueSizeBytes!==void 0&&(o.max_value_size_bytes=t.maxValueSizeBytes),!n&&(o.scope=dr[t.scope],t.secretId!==void 0&&(o.secret_id=t.secretId),t.secretId&&t.description!==void 0&&(o.update_description=!0),t.secretId&&t.tags!==void 0&&(o.update_tags=!0),t.applicability&&(o.applicability=Xv[t.applicability]),t.updateSpaces)){if(t.allSpaces&&(t.spaceIds?.length??0)>0)throw new Error("allSpaces and non-empty spaceIds are mutually exclusive");o.update_spaces=!0,o.all_spaces=t.allSpaces===!0,o.space_ids=t.allSpaces?[]:[...t.spaceIds??[]].sort()}let r=await this.callApi(n?"/tenant-secrets/upsert":"/user-secrets/upsert",o);if(this.logger.debug("Upserted secret (response=%o)",mh(r)),!r.secret)throw new Error(`Upsert response missing secret payload for ${t.name}`);return ba(r.secret,t.scope)}async deleteUserSecret(t,n,o,r){let i=n==="tenant",l={name:t};return o!==void 0&&(l.expected_version=o),i||(l.scope=dr[n],r!==void 0&&(l.secret_id=r)),(await this.callApi(i?"/tenant-secrets/delete":"/user-secrets/delete",l)).deleted??!1}async migrateUserSecret(t){let n=await this.callApi("/user-secrets/migrate-scope",{name:t.name,source_scope:dr[t.fromScope],target_scope:dr[t.toScope],delete_source:t.deleteSource});if(!n.secret)throw new Error(`Migrate response missing secret payload for ${t.name}`);return{secret:ba(n.secret,t.toScope),sourceDeleted:n.source_deleted??!1}}async listFileVersions(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path};return t.pageToken&&(n.page_token=t.pageToken),await this.callApi(`${kt}/list-file-versions`,n)}async readFileVersion(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path,timestamp:t.timestamp};return t.seq&&t.seq>0&&(n.seq=t.seq),await this.callApi(`${kt}/read-file-version`,n)}async listVersionedFiles(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId,include_deleted:t.includeDeleted};return t.pageToken&&(n.page_token=t.pageToken),await this.callApi(`${kt}/list-versioned-files`,n)}async fetchChanges(t){return await this.callApi(`${kt}/fetch-changes`,{filesystem_id:t.filesystemId,space_id:t.spaceId,after_seq:t.afterSeq})}async fetchContent(t){let n=`${kt}/fetch-content`,o="fileId"in t?{file_id:t.fileId}:{filesystem_id:t.filesystemId,paths:[t.path],space_id:t.spaceId},l=(await(await this.request(n.replace(/^\//,""),o,void 0,void 0,Iv)).json()).files?.[0];if(!l&&"fileId"in t)throw new Error("FetchVFSFileContent returned no content for this file");return l??null}async fetchContentByFileId(t){let n=await this.fetchContent({fileId:t});if(!n)throw new Error("FetchVFSFileContent returned no content for this file");return n}async commitChanges(t){return await this.callApi(`${kt}/commit-changes`,{filesystem_id:t.filesystemId,space_id:t.spaceId,file_changes:t.fileChanges.map(n=>({path:n.path,content:lx.from(n.content).toString("base64"),deleted:n.deleted,base_seq:n.baseSeq})),modified_by:t.modifiedBy,...t.agentId?{agent_id:t.agentId}:{}})}async ensureFileIdentity(t){let n=await this.callApi(`${kt}/ensure-file-identity`,{filesystem_id:t.filesystemId,space_id:t.spaceId,path:t.path}),o=n.identity?.file_id;if(!o)throw new Error("EnsureVFSFileIdentity response did not include a file_id");return{fileId:o,currentPath:n.identity?.current_path??t.path,webAppBaseUrl:n.web_app_base_url,appPathPrefix:n.app_path_prefix}}async resolveFileIdentity(t){let n=await this.callApi(`${kt}/resolve-file-identity`,{file_id:t}),o=n.identity;if(!o)throw new Error("ResolveVFSFileIdentity response did not include an identity");return{filesystemId:o.filesystem_id,spaceId:o.space_id,ownerUserId:o.owner_user_id,callerUserId:n.caller_user_id,currentPath:o.current_path,deleted:o.deleted===!0}}async appendComment(t){let n=await this.callApi(`${kt}/append-comment`,{filesystem_id:t.filesystemId,space_id:t.spaceId,event:t.event});return{event:n.event?cS(n.event):void 0}}async listComments(t){let n={filesystem_id:t.filesystemId,space_id:t.spaceId};t.path&&(n.path=t.path),t.fileId&&(n.file_id=t.fileId),t.pageToken&&(n.page_token=t.pageToken);let o=await this.callApi(`${kt}/list-comments`,n);return{events:o.events?.map(cS),raw_events:o.events,next_page_token:o.next_page_token??o.nextPageToken}}listWebhookRoleBindings(t){return this.base_listObjectRoleBindings(Vh,t)}grantWebhookRole({webhookId:t,principal:n,role:o}){return this.base_grantObjectRole(Vh,t,n,o)}revokeWebhookRole({webhookId:t,principal:n}){return this.base_revokeObjectRole(Vh,t,n)}async createWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/create",{description:t.description??"",type:dS[t.type],captured_headers:t.capturedHeaders??[]}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error("Failed to create webhook: response did not include webhook");let r=xi(this.base_parseJson(o,"create webhook")),i=n.url??r.url??"",l=n.setupInstructionsJson??n.setup_instructions_json??"",s=l?uS(this.base_parseJson(l,"create webhook setup instructions")):void 0;return{webhook:r,url:i,secret:n.secret??"",setupInstructions:s?{...s,webhookUrl:s.webhookUrl||i}:void 0}}async listWebhooks(){let t=await this.callApi("/cloud-webhooks/webhooks/list",{}),n=t.webhooksJson??t.webhooks_json??"";return n?this.base_parseJson(n,"list webhooks").filter(r=>r.webhookId||r.webhook_id).map(xi):[]}async getWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/get",{webhook_id:t}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error(`Webhook not found: ${t}`);return xi(this.base_parseJson(o,"get webhook"))}async deleteWebhook(t){let n=await this.callApi("/cloud-webhooks/webhooks/delete",{webhook_ids:[t]});return yv(n)}async updateWebhook(t){let n={webhook_id:t.webhookId};t.description!==void 0&&(n.description=t.description),t.capturedHeaders!==void 0&&(n.captured_headers=t.capturedHeaders,n.update_captured_headers=!0);let o=await this.callApi("/cloud-webhooks/webhooks/update",n),r=o.webhookJson??o.webhook_json??"";if(!r)throw new Error(`Failed to update webhook: ${t.webhookId}`);return{webhook:xi(this.base_parseJson(r,"update webhook"))}}async setWebhookSecret(t){let n=await this.callApi("/cloud-webhooks/webhooks/set-secret",{webhook_id:t.webhookId,secret:t.secret}),o=n.webhookJson??n.webhook_json??"";if(!o)throw new Error("Failed to set webhook secret: response did not include webhook");return{webhook:xi(this.base_parseJson(o,"set webhook secret"))}}async getWebhookSetupInstructions(t){let n=await this.callApi("/cloud-webhooks/webhooks/setup-instructions",{...t.webhookId?{webhook_id:t.webhookId}:{},...t.type?{type:dS[t.type]}:{}}),o=n.setupInstructionsJson??n.setup_instructions_json??"";return o?uS(this.base_parseJson(o,"webhook setup instructions"))??{steps:[],fields:[],webhookUrl:"",secretSource:"unknown"}:{steps:[],fields:[],webhookUrl:"",secretSource:"unknown"}}async workflow_listWorkflows(t={}){let n=await this.callApi("/cloud-triggers/workflows/list",{...t.eventSourceId?{event_source_id:t.eventSourceId}:{},...t.expertId?{expert_id:t.expertId}:{}});return this.base_parseJson(n.workflows_json||"[]","listWorkflows").map(r=>Nn(r))}async getWorkflow(t){let n=await this.callApi("/cloud-triggers/workflows/get",{workflow_id:t}),o=this.base_parseJson(n.workflow_json||"null","getWorkflow");if(!o)throw new Error(`Workflow not found: ${t}`);return Nn(o)}async deleteWorkflowResource({workflowId:t,expectedResourceVersion:n}){let o=await this.callApi("/cloud-triggers/workflows/delete",{workflow_ids:[t],...n===void 0?{}:{expected_resource_versions:[{workflow_id:t,expected_resource_version:n}]}});return{success:o.success??!0,deletedWorkflowIds:o.deleted_workflow_ids||o.deletedWorkflowIds||[],failedWorkflowIds:o.failed_workflow_ids||o.failedWorkflowIds||[],notFoundWorkflowIds:o.not_found_workflow_ids||o.notFoundWorkflowIds||[]}}async workflow_updateWorkflow({workflowId:t,name:n,enabled:o,expectedResourceVersion:r,overrideAutoCleanupOnIdle:i,initialInstructions:l,actorUserId:s,perMinuteCreateAgentLimit:a}){let c=await this.callApi("/cloud-triggers/workflows/update",{workflow_id:t,...n===void 0?{}:{name:n},...o===void 0?{}:{enabled:o},...r===void 0?{}:{expected_resource_version:r},...i===void 0?{}:{override_auto_cleanup_on_idle:i},...l===void 0?{}:{initial_instructions:l},...s===void 0?{}:{actor_user_id:s},...a===void 0?{}:{per_minute_create_agent_limit:a}}),d=this.base_parseJson(c.workflow_json||"null","updateWorkflow");if(!d)throw new Error(`Failed to update workflow: ${t}`);return Nn(d)}async workflow_listEventSources(){let t=await this.callApi("/cloud-triggers/event-sources/list",{});return this.base_parseJson(t.event_sources_json||"[]","listEventSources").map(o=>Ao(o))}async getEventSource(t){let n=await this.callApi("/cloud-triggers/event-sources/get",{event_source_id:t}),o=this.base_parseJson(n.event_source_json||"null","getEventSource");if(!o)throw new Error(`Event source not found: ${t}`);return Ao(o)}deleteWorkflow(t){return typeof t=="string"?this.deleteExpertWorkflows(t):this.deleteWorkflowResource(t)}};function gh(e){return new go(e)}var VS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.TENANT=1]="TENANT",e[e.USER=2]="USER",e[e.SPACE=3]="SPACE"})(VS||(VS={}));var mS;(function(e){e[e.VFS_COMMENT_EVENT_KIND_UNSPECIFIED=0]="VFS_COMMENT_EVENT_KIND_UNSPECIFIED",e[e.VFS_COMMENT_EVENT_KIND_CREATED=1]="VFS_COMMENT_EVENT_KIND_CREATED",e[e.VFS_COMMENT_EVENT_KIND_EDITED=2]="VFS_COMMENT_EVENT_KIND_EDITED",e[e.VFS_COMMENT_EVENT_KIND_RESOLVED=3]="VFS_COMMENT_EVENT_KIND_RESOLVED",e[e.VFS_COMMENT_EVENT_KIND_DELETED=4]="VFS_COMMENT_EVENT_KIND_DELETED",e[e.VFS_COMMENT_EVENT_KIND_REANCHORED=5]="VFS_COMMENT_EVENT_KIND_REANCHORED",e[e.VFS_COMMENT_EVENT_KIND_REOPENED=6]="VFS_COMMENT_EVENT_KIND_REOPENED",e[e.VFS_COMMENT_EVENT_KIND_REACTION=7]="VFS_COMMENT_EVENT_KIND_REACTION"})(mS||(mS={}));var gS;(function(e){e[e.VFS_COMMENT_MENTION_TYPE_UNSPECIFIED=0]="VFS_COMMENT_MENTION_TYPE_UNSPECIFIED",e[e.VFS_COMMENT_MENTION_TYPE_USER=1]="VFS_COMMENT_MENTION_TYPE_USER",e[e.VFS_COMMENT_MENTION_TYPE_FILE=2]="VFS_COMMENT_MENTION_TYPE_FILE"})(gS||(gS={}));var ES;(function(e){e[e.VFS_COMMENT_REACTION_OP_UNSPECIFIED=0]="VFS_COMMENT_REACTION_OP_UNSPECIFIED",e[e.VFS_COMMENT_REACTION_OP_ADD=1]="VFS_COMMENT_REACTION_OP_ADD",e[e.VFS_COMMENT_REACTION_OP_REMOVE=2]="VFS_COMMENT_REACTION_OP_REMOVE"})(ES||(ES={}));var pS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SALSA=1]="SALSA",e[e.AUGGIE=2]="AUGGIE"})(pS||(pS={}));var RS;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TOOL_PROVIDER=1]="TOOL_PROVIDER",e[e.AGENT=2]="AGENT",e[e.WAITING=3]="WAITING"})(RS||(RS={}));var ZS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SECRET_URL=1]="SECRET_URL",e[e.TENANT=2]="TENANT"})(ZS||(ZS={}));var SS;(function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SHARED=1]="SHARED",e[e.PRIVATE=2]="PRIVATE"})(SS||(SS={}));var _t=D.child({prefix:"AugmentApiAdapter"}),ga=class{api;apiUrl;apiToken;constructor(t,n,o){this.api=t,this.apiUrl=n.endsWith("/")?n:`${n}/`,this.apiToken=o}async batchUpload(t){_t.debug(`batchUpload \u2192 ${t.length} blob(s)`);let n=t.map(r=>({pathName:r.pathName,text:r.text,blobName:r.blobName,metadata:r.metadata})),o=await this.api.batchUpload(n);return _t.debug("batchUpload \u2190 done"),o}async checkpointBlobs(t){_t.debug(`checkpointBlobs \u2192 +${t.addedBlobs.length} -${t.deletedBlobs.length} (checkpoint=${t.checkpointId??"new"})`);let n=await this.api.checkpointBlobs({checkpointId:t.checkpointId,addedBlobs:t.addedBlobs,deletedBlobs:t.deletedBlobs});return _t.debug(`checkpointBlobs \u2190 checkpoint=${n.newCheckpointId??"none"}`),n}async findMissing(t){_t.debug(`findMissing \u2192 ${t.length} blob(s)`);let n=await this.api.findMissing(t,void 0),o=n.nonindexedBlobNames.length,r=n.unknownBlobNames.length,i=t.length-o-r;return _t.debug(`findMissing \u2190 ${i} indexed, ${o} non-indexed, ${r} unknown`),n}async*getLatestIndexedCommitBlobset(t,n){_t.debug(`getLatestIndexedCommitBlobset \u2192 ${t.commit_shas.length} commit(s)`);let o=new URL("indexed-commits/get-latest-blobset",this.apiUrl),r=await fetch(o.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({commit_shas:t.commit_shas}),signal:n});if(!r.ok)throw new Error(`getLatestIndexedCommitBlobset failed: ${r.status} ${r.statusText}`);let i=r.body?.getReader();if(!i)return;let l=new TextDecoder,s="";for(;;){let{value:a,done:c}=await i.read();if(c)break;for(s+=l.decode(a,{stream:!0});s.includes(`
130
130
  `);){let d=s.indexOf(`
131
131
  `),u=s.slice(0,d);if(s=s.slice(d+1),!u.trim())continue;let h=JSON.parse(u);yield{commit_sha:h.commit_sha,file_infos:h.file_infos??[],checkpoint_id:h.baseline_checkpoint_id}}}if(s.trim()){let a=JSON.parse(s);yield{commit_sha:a.commit_sha,file_infos:a.file_infos??[],checkpoint_id:a.baseline_checkpoint_id}}}async registerIndexedCommitBlobset(t){_t.debug(`registerIndexedCommitBlobset \u2192 sha=${t.commit.commit_sha} checkpoint=${t.blobs.checkpointId}`);let n=new URL("indexed-commits/register-blobset",this.apiUrl),o=await fetch(n.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({commit:{commit_sha:t.commit.commit_sha,commit_time:t.commit.commit_time},blobs:{checkpoint_id:t.blobs.checkpointId,added_blobs:t.blobs.addedBlobs,deleted_blobs:t.blobs.deletedBlobs}})});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`registerIndexedCommitBlobset failed: ${o.status} ${o.statusText} ${r}`)}_t.debug("registerIndexedCommitBlobset \u2190 ok")}async agentCodebaseRetrieval(t,n,o,r,i){return _t.debug(`agentCodebaseRetrieval \u2192 "${n.slice(0,80)}..."`),{formattedRetrieval:(await this.api.agentCodebaseRetrieval(t,n,{checkpointId:o.checkpointId,addedBlobs:o.addedBlobs,deletedBlobs:o.deletedBlobs},r,0,void 0,i)).formattedRetrieval}}};import{relative as nB,resolve as oB}from"node:path";import{createHash as Tv}from"node:crypto";var zv=new TextDecoder("utf-8",{fatal:!0}),Bn=class{textEncoder=new TextEncoder;maxBlobSize;constructor(t){this.maxBlobSize=t}hash(t,n){let o=Tv("sha256");return o.update(t),o.update(n),o.digest("hex")}calculate(t,n){let o=typeof n=="string"?this.textEncoder.encode(n):n;if(!(o.length>this.maxBlobSize)){if(typeof n!="string")try{zv.decode(n)}catch{return}return this.hash(t,o)}}};var ie=class{handlers=[];fire(t){for(let n of this.handlers)n(t)}event(t){return this.handlers.push(t),{dispose:()=>{let n=this.handlers.indexOf(t);n>=0&&this.handlers.splice(n,1)}}}dispose(){this.handlers=[]}};var fr=class{retryQueue=[];retryInterval;queue;config;constructor(t,n){this.queue=t,this.config=n,this.retryInterval=setInterval(()=>this.flush(),this.config.retryMs)}dispose(){this.retryInterval&&(clearInterval(this.retryInterval),this.retryInterval=void 0)}retry(t){this.retryQueue.push(t)}retryAll(t){this.retryQueue.push(...t)}flush(){for(let t of this.retryQueue)this.queue.enqueue(t);this.retryQueue=[],this.queue.startProcess()}};var Eh={REMOVE_OLDEST:"REMOVE_OLDEST",REJECT_NEW_ITEMS:"REJECT_NEW_ITEMS"},Ea=class{queue=[];config;constructor(t={}){this.config={sizeLimit:t.sizeLimit??1e6,queueSizeManagement:t.queueSizeManagement??Eh.REMOVE_OLDEST}}enqueue(t){if(this.queue.length>=this.config.sizeLimit){if(this.config.queueSizeManagement===Eh.REJECT_NEW_ITEMS)return!1;this.config.queueSizeManagement===Eh.REMOVE_OLDEST&&this.queue.shift()}return this.queue.push(t),!0}dequeue(){return this.queue.shift()}isEmpty(){return this.queue.length===0}clear(){this.queue.length=0}peek(){return this.queue[0]}getItems(){return Object.freeze([...this.queue])}size(){return this.queue.length}};var vi=class{queue;_inProgress=!1;_disposed=!1;logger=D.child({prefix:"SimpleQueueProcessor"});constructor(t=new Ea){this.queue=t}enqueue(t){return this.queue.enqueue(t)}dequeue(){return this.queue.dequeue()}isEmpty(){return this.queue.isEmpty()}clear(){this.queue.clear()}peek(){return this.queue.peek()}getItems(){return this.queue.getItems()}size(){return this.queue.size()}dispose(){this._disposed=!0}startProcess(){this._inProgress||(this._inProgress=!0,Promise.resolve().then(async()=>{for(;!this.isEmpty()&&!this.isDisposed();){let t=this.peek();if(await this.internalProcess(),t===this.peek())break}}).catch(t=>{this.logger.error("Unhandled error while processing task",{error:t})}).finally(()=>{this._inProgress=!1}))}isDisposed(){return this._disposed}};var Dv={initialMs:500,mult:2,maxMs:1e4,maxTries:3};async function ph(e,t,n=Dv){let o=n.initialMs;for(let r=1;r<=n.maxTries;r++)try{return await e()}catch(i){if(r===n.maxTries)throw i;t.warn(`Attempt ${r}/${n.maxTries} failed, retrying in ${o}ms: ${i}`),await new Promise(l=>setTimeout(l,o)),o=Math.min(o*n.mult,n.maxMs)}throw new Error("retryWithBackoff: unreachable")}function WS(e){return typeof e=="string"?e:new TextDecoder("utf-8",{fatal:!0}).decode(e)}function GS(e){return typeof e=="string"?new TextEncoder().encode(e).length:e.length}var Ji={uploadConfig:{maxUploadSize:1e6,maxBatchCount:128,retryMs:6e4},blobStatusConfig:{maxBatchCount:1e3,oldBlobNameThresholdMs:6e4,giveUpBlobNameThresholdMs:3e5,oldBlobNameRetryMs:6e4,newBlobNameRetryMs:3e3,postUploadDelayMs:1e4}};function Lv(e,t){let n=new Set(t.unknownBlobNames.concat(t.nonindexedBlobNames)),o=[];for(let r of e)n.has(r)||o.push(r);return o}var Rh=class extends vi{indexedEmitter=new ie;unknownEmitter=new ie;gaveUpEmitter=new ie;startTimes=new Map;retryOld;retryNew;log=D.child({prefix:"BlobStatusExecutor"});api;cfg;constructor(t,n){super(),this.api=t,this.cfg=n,this.retryOld=new fr(this,{retryMs:n.oldBlobNameRetryMs}),this.retryNew=new fr(this,{retryMs:n.newBlobNameRetryMs})}dispose(){super.dispose(),this.startTimes.clear(),this.indexedEmitter.dispose(),this.unknownEmitter.dispose(),this.gaveUpEmitter.dispose(),this.retryOld.dispose(),this.retryNew.dispose()}get onFoundIndexed(){return this.indexedEmitter.event.bind(this.indexedEmitter)}get onFoundUnknown(){return this.unknownEmitter.event.bind(this.unknownEmitter)}get onGaveUp(){return this.gaveUpEmitter.event.bind(this.gaveUpEmitter)}retryBlobNames(t){let n=[],o=[],r=[];for(let i of t){let l=this.startTimes.get(i);if(l===void 0){this.startTimes.set(i,Date.now()),n.push(i);continue}let s=Date.now()-l;s>this.cfg.giveUpBlobNameThresholdMs?(this.startTimes.delete(i),r.push(i)):s>this.cfg.oldBlobNameThresholdMs?o.push(i):n.push(i)}r.length>0&&(this.log.warn(`Giving up on ${r.length} blob(s) after ${this.cfg.giveUpBlobNameThresholdMs}ms`),this.gaveUpEmitter.fire(r)),this.retryNew.retryAll(n),this.retryOld.retryAll(o)}async internalProcess(){let t=new Set,n=0;for(;n<this.cfg.maxBatchCount;){let i=this.dequeue();if(i===void 0)break;t.add(i),this.startTimes.has(i)||this.startTimes.set(i,Date.now()),n++}let o;try{o=await ph(()=>this.api.findMissing([...t]),this.log)}catch{this.retryBlobNames([...t]);return}if(o.unknownBlobNames.length>0){for(let i of o.unknownBlobNames)this.startTimes.delete(i);this.log.debug(`${o.unknownBlobNames.length} blob(s) unknown, triggering re-upload`),this.unknownEmitter.fire(o.unknownBlobNames)}o.nonindexedBlobNames.length>0&&this.retryBlobNames(o.nonindexedBlobNames);let r=Lv(t,o);for(let i of r)this.startTimes.delete(i);r.length>0&&this.indexedEmitter.fire(r)}},Zh=class extends vi{uploadedEmitter=new ie;failedEmitter=new ie;rejectedEmitter=new ie;log=D.child({prefix:"UploadExecutor"});retrySched;api;cfg;constructor(t,n){super(),this.api=t,this.cfg=n,this.retrySched=new fr(this,{retryMs:n.retryMs})}dispose(){super.dispose(),this.uploadedEmitter.dispose(),this.failedEmitter.dispose(),this.rejectedEmitter.dispose(),this.retrySched.dispose()}get onDidUpload(){return this.uploadedEmitter.event.bind(this.uploadedEmitter)}get onFailed(){return this.failedEmitter.event.bind(this.failedEmitter)}get onRejected(){return this.rejectedEmitter.event.bind(this.rejectedEmitter)}async internalProcess(){let t=0,n=[],o=[],r=0;for(;!this.isDisposed()&&r<this.cfg.maxBatchCount;){let i=this.peek();if(i===void 0)break;let l=await i.readContent(),s=GS(l);if(s>this.cfg.maxUploadSize){this.dequeue(),this.rejectedEmitter.fire({item:i,reason:`File too large: ${s} > ${this.cfg.maxUploadSize} bytes`});continue}if(t+s>this.cfg.maxUploadSize)break;let a;try{a=WS(l)}catch{this.dequeue(),this.rejectedEmitter.fire({item:i,reason:"File contains invalid UTF-8 encoding"});continue}t+=s,n.push({pathName:i.path,text:a,blobName:i.blobName,metadata:[]}),o.push(i),this.dequeue(),r++}if(n.length!==0)try{let i=await ph(()=>this.api.batchUpload(n),this.log),l=new Map;for(let a=0;a<i.blobNames.length;a++)l.set(n[a].blobName,i.blobNames[a]);let s=n.length-i.blobNames.length;s>0&&this.retrySched.retryAll(o.slice(o.length-s)),l.size>0&&this.uploadedEmitter.fire(l)}catch{this.retrySched.retryAll(o)}}},Yn=class{uploadExec;statusExec;handled=new Map;disposables=[];log=D.child({prefix:"BlobUploader"});blobsUploadedEmitter=new ie;blobsIndexedEmitter=new ie;blobUploadFailedEmitter=new ie;blobRejectedEmitter=new ie;blobNameCalculator;constructor(t,n,o=Ji){this.blobNameCalculator=t,this.uploadExec=new Zh(n,o.uploadConfig),this.statusExec=new Rh(n,o.blobStatusConfig);let r=o.blobStatusConfig.postUploadDelayMs;this.disposables.push(this.uploadExec.onDidUpload(i=>{this.log.debug(`uploaded ${i.size} blob(s), waiting ${r}ms before status polling`),this.blobsUploadedEmitter.fire({expectedToActualBlobNameMap:i});for(let[s,a]of i)if(this.handled.has(s)&&s!==a){this.log.debug(`blob name changed by server: ${s} \u2192 ${a}`);let c=this.handled.get(s);c&&this.handled.set(a,c),this.handled.delete(s)}let l=[...i.values()];setTimeout(()=>{for(let s of l)this.statusExec.enqueue(s);this.statusExec.startProcess()},r)})),this.disposables.push(this.uploadExec.onFailed(i=>{this.log.debug(`upload failed: ${i.blobName}`),this.handled.delete(i.blobName),this.blobUploadFailedEmitter.fire({blobName:i.blobName})})),this.disposables.push(this.uploadExec.onRejected(({item:i,reason:l})=>{this.log.debug(`blob rejected: ${i.blobName} (${l})`),this.handled.delete(i.blobName),this.blobRejectedEmitter.fire({blobName:i.blobName,reason:l})})),this.disposables.push(this.statusExec.onFoundIndexed(i=>{this.log.debug(`${i.length} blob(s) confirmed indexed`);for(let l of i)this.handled.delete(l);this.blobsIndexedEmitter.fire({blobNames:i})})),this.disposables.push(this.statusExec.onFoundUnknown(i=>{this.log.debug(`${i.length} blob(s) unknown, re-enqueuing for upload`);for(let l of i){let s=this.handled.get(l);s&&this.uploadExec.enqueue(s)}this.uploadExec.startProcess()})),this.disposables.push(this.statusExec.onGaveUp(i=>{this.log.warn(`${i.length} blob(s) gave up after timeout, marking as failed`);for(let l of i)this.handled.delete(l),this.blobUploadFailedEmitter.fire({blobName:l})}))}get onBlobsUploaded(){return this.blobsUploadedEmitter.event.bind(this.blobsUploadedEmitter)}get onBlobsIndexed(){return this.blobsIndexedEmitter.event.bind(this.blobsIndexedEmitter)}get onBlobUploadFailed(){return this.blobUploadFailedEmitter.event.bind(this.blobUploadFailedEmitter)}get onBlobRejected(){return this.blobRejectedEmitter.event.bind(this.blobRejectedEmitter)}enqueueUpload(t,n){let o=this.blobNameCalculator.calculate(t.path,n);if(o===void 0)return;let r={...t,blobName:o};return this.handled.set(o,r),this.statusExec.enqueue(o),o}startUpload(){this.log.debug(`startUpload: ${this.handled.size} blob(s) in-flight`),this.statusExec.startProcess()}dispose(){for(let t of this.disposables)t.dispose();this.disposables.length=0,this.handled.clear(),this.uploadExec.dispose(),this.statusExec.dispose(),this.blobsUploadedEmitter.dispose(),this.blobsIndexedEmitter.dispose(),this.blobUploadFailedEmitter.dispose(),this.blobRejectedEmitter.dispose()}};import{exec as Pv}from"node:child_process";import{existsSync as qv}from"node:fs";import{join as $v}from"node:path";import{promisify as eJ}from"node:util";import{execFile as Hv}from"node:child_process";import{promisify as Mv}from"node:util";var IS=Mv(Hv);async function NS(e,t){D.child({prefix:"GitDeltaCalculator"}).info(`Calculating git delta from commit ${t}`);let[o,r]=await Promise.all([Ov(e,t),jv(e)]);return{modified:o.modified,added:o.added,deleted:o.deleted,untracked:r}}async function Ov(e,t){let n=new Set,o=new Set,r=new Set,i=D.child({prefix:"GitDeltaCalculator"});try{let{stdout:l}=await IS("git",["diff","--name-status",t],{cwd:e,maxBuffer:52428800});for(let s of l.split(`
132
132
  `)){if(!s.trim())continue;let[a,...c]=s.split(" "),d=c[0];if(d)switch(a[0]){case"M":case"T":n.add(d);break;case"A":o.add(d);break;case"D":r.add(d);break;case"R":r.add(d),c[1]&&o.add(c[1]);break;case"C":c[1]&&o.add(c[1]);break}}}catch(l){i.warn("Failed to get tracked changes",{error:l})}return{modified:n,added:o,deleted:r}}async function jv(e){let t=new Set,n=D.child({prefix:"GitDeltaCalculator"});try{let{stdout:o}=await IS("git",["ls-files","--others","--exclude-standard"],{cwd:e,maxBuffer:52428800});for(let r of o.split(`