@hagicode/cli 0.1.0-dev.57.1.8f2a93b → 0.1.0-dev.60.1.7a371f3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,271 @@
1
+ var $l=Object.create,mi=Object.defineProperty,Pl=Object.getOwnPropertyDescriptor,ql=Object.getOwnPropertyNames,ec=Object.getPrototypeOf,tc=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),nc=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var r=ql(t),a=0,i=r.length,s;a<i;a++)s=r[a],!tc.call(e,s)&&s!==n&&mi(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=Pl(t,s))||o.enumerable});return e},rt=(e,t,n)=>(n=e!=null?$l(ec(e)):{},nc(t||!e||!e.__esModule?mi(n,"default",{value:e,enumerable:!0}):n,e));let R=require("node:path");R=rt(R);let Y=require("node:fs");Y=rt(Y);let oc=require("node:os"),ft=require("node:zlib");ft=rt(ft);let Rn=require("node:util"),eo=require("node:http");eo=rt(eo);let to=require("node:https");to=rt(to);let Ee=require("node:http2");Ee=rt(Ee);let rc=require("node:fs/promises"),Te=require("node:crypto"),hi=require("node:url");var En=ot((e=>{var t=class extends Error{constructor(o,r,a){super(a),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=o,this.nestedError=void 0}},n=class extends t{constructor(o){super(1,"commander.invalidArgument",o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),So=ot((e=>{var{InvalidArgumentError:t}=En(),n=class{constructor(r,a){switch(this.description=a||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,r[0]){case"<":this.required=!0,this._name=r.slice(1,-1);break;case"[":this.required=!1,this._name=r.slice(1,-1);break;default:this.required=!0,this._name=r;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(r,a){return a===this.defaultValue||!Array.isArray(a)?[r]:(a.push(r),a)}default(r,a){return this.defaultValue=r,this.defaultValueDescription=a,this}argParser(r){return this.parseArg=r,this}choices(r){return this.argChoices=r.slice(),this.parseArg=(a,i)=>{if(!this.argChoices.includes(a))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(a,i):a},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(r){const a=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+a+">":"["+a+"]"}e.Argument=n,e.humanReadableArgName=o})),gi=ot((e=>{var{humanReadableArgName:t}=So(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(r){this.helpWidth=this.helpWidth??r.helpWidth??80}visibleCommands(r){const a=r.commands.filter(s=>!s._hidden),i=r._getHelpCommand();return i&&!i._hidden&&a.push(i),this.sortSubcommands&&a.sort((s,l)=>s.name().localeCompare(l.name())),a}compareOptions(r,a){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(r).localeCompare(i(a))}visibleOptions(r){const a=r.options.filter(s=>!s.hidden),i=r._getHelpOption();if(i&&!i.hidden){const s=i.short&&r._findOption(i.short),l=i.long&&r._findOption(i.long);!s&&!l?a.push(i):i.long&&!l?a.push(r.createOption(i.long,i.description)):i.short&&!s&&a.push(r.createOption(i.short,i.description))}return this.sortOptions&&a.sort(this.compareOptions),a}visibleGlobalOptions(r){if(!this.showGlobalOptions)return[];const a=[];for(let i=r.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);a.push(...s)}return this.sortOptions&&a.sort(this.compareOptions),a}visibleArguments(r){return r._argsDescription&&r.registeredArguments.forEach(a=>{a.description=a.description||r._argsDescription[a.name()]||""}),r.registeredArguments.find(a=>a.description)?r.registeredArguments:[]}subcommandTerm(r){const a=r.registeredArguments.map(i=>t(i)).join(" ");return r._name+(r._aliases[0]?"|"+r._aliases[0]:"")+(r.options.length?" [options]":"")+(a?" "+a:"")}optionTerm(r){return r.flags}argumentTerm(r){return r.name()}longestSubcommandTermLength(r,a){return a.visibleCommands(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleSubcommandTerm(a.subcommandTerm(s)))),0)}longestOptionTermLength(r,a){return a.visibleOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestGlobalOptionTermLength(r,a){return a.visibleGlobalOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestArgumentTermLength(r,a){return a.visibleArguments(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleArgumentTerm(a.argumentTerm(s)))),0)}commandUsage(r){let a=r._name;r._aliases[0]&&(a=a+"|"+r._aliases[0]);let i="";for(let s=r.parent;s;s=s.parent)i=s.name()+" "+i;return i+a+" "+r.usage()}commandDescription(r){return r.description()}subcommandDescription(r){return r.summary()||r.description()}optionDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&(r.required||r.optional||r.isBoolean()&&typeof r.defaultValue=="boolean")&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),r.presetArg!==void 0&&r.optional&&a.push(`preset: ${JSON.stringify(r.presetArg)}`),r.envVar!==void 0&&a.push(`env: ${r.envVar}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}argumentDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}formatItemList(r,a,i){return a.length===0?[]:[i.styleTitle(r),...a,""]}groupItems(r,a,i){const s=new Map;return r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(r,a){const i=a.padWidth(r,a),s=a.helpWidth??80;function l(f,p){return a.formatItem(f,i,p,a)}let c=[`${a.styleTitle("Usage:")} ${a.styleUsage(a.commandUsage(r))}`,""];const u=a.commandDescription(r);u.length>0&&(c=c.concat([a.boxWrap(a.styleCommandDescription(u),s),""]));const h=a.visibleArguments(r).map(f=>l(a.styleArgumentTerm(a.argumentTerm(f)),a.styleArgumentDescription(a.argumentDescription(f))));if(c=c.concat(this.formatItemList("Arguments:",h,a)),this.groupItems(r.options,a.visibleOptions(r),f=>f.helpGroupHeading??"Options:").forEach((f,p)=>{const E=f.map(V=>l(a.styleOptionTerm(a.optionTerm(V)),a.styleOptionDescription(a.optionDescription(V))));c=c.concat(this.formatItemList(p,E,a))}),a.showGlobalOptions){const f=a.visibleGlobalOptions(r).map(p=>l(a.styleOptionTerm(a.optionTerm(p)),a.styleOptionDescription(a.optionDescription(p))));c=c.concat(this.formatItemList("Global Options:",f,a))}return this.groupItems(r.commands,a.visibleCommands(r),f=>f.helpGroup()||"Commands:").forEach((f,p)=>{const E=f.map(V=>l(a.styleSubcommandTerm(a.subcommandTerm(V)),a.styleSubcommandDescription(a.subcommandDescription(V))));c=c.concat(this.formatItemList(p,E,a))}),c.join(`
2
+ `)}displayWidth(r){return o(r).length}styleTitle(r){return r}styleUsage(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a==="[command]"?this.styleSubcommandText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleCommandText(a)).join(" ")}styleCommandDescription(r){return this.styleDescriptionText(r)}styleOptionDescription(r){return this.styleDescriptionText(r)}styleSubcommandDescription(r){return this.styleDescriptionText(r)}styleArgumentDescription(r){return this.styleDescriptionText(r)}styleDescriptionText(r){return r}styleOptionTerm(r){return this.styleOptionText(r)}styleSubcommandTerm(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleSubcommandText(a)).join(" ")}styleArgumentTerm(r){return this.styleArgumentText(r)}styleOptionText(r){return r}styleArgumentText(r){return r}styleSubcommandText(r){return r}styleCommandText(r){return r}padWidth(r,a){return Math.max(a.longestOptionTermLength(r,a),a.longestGlobalOptionTermLength(r,a),a.longestSubcommandTermLength(r,a),a.longestArgumentTermLength(r,a))}preformatted(r){return/\n[^\S\r\n]/.test(r)}formatItem(r,a,i,s){const c=" ".repeat(2);if(!i)return c+r;const u=r.padEnd(a+r.length-s.displayWidth(r)),h=2,f=(this.helpWidth??80)-a-h-2;let p;return f<this.minWidthToWrap||s.preformatted(i)?p=i:p=s.boxWrap(i,f).replace(/\n/g,`
3
+ `+" ".repeat(a+h)),c+u+" ".repeat(h)+p.replace(/\n/g,`
4
+ ${c}`)}boxWrap(r,a){if(a<this.minWidthToWrap)return r;const i=r.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,l=[];return i.forEach(c=>{const u=c.match(s);if(u===null){l.push("");return}let h=[u.shift()],f=this.displayWidth(h[0]);u.forEach(p=>{const E=this.displayWidth(p);if(f+E<=a){h.push(p),f+=E;return}l.push(h.join(""));const V=p.trimStart();h=[V],f=this.displayWidth(V)}),l.push(h.join(""))}),l.join(`
5
+ `)}};function o(r){return r.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),bi=ot((e=>{var{InvalidArgumentError:t}=En(),n=class{constructor(i,s){this.flags=i,this.description=s||"",this.required=i.includes("<"),this.optional=i.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(i),this.mandatory=!1;const l=a(i);this.short=l.shortFlag,this.long=l.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(i,s){return this.defaultValue=i,this.defaultValueDescription=s,this}preset(i){return this.presetArg=i,this}conflicts(i){return this.conflictsWith=this.conflictsWith.concat(i),this}implies(i){let s=i;return typeof i=="string"&&(s={[i]:!0}),this.implied=Object.assign(this.implied||{},s),this}env(i){return this.envVar=i,this}argParser(i){return this.parseArg=i,this}makeOptionMandatory(i=!0){return this.mandatory=!!i,this}hideHelp(i=!0){return this.hidden=!!i,this}_collectValue(i,s){return s===this.defaultValue||!Array.isArray(s)?[i]:(s.push(i),s)}choices(i){return this.argChoices=i.slice(),this.parseArg=(s,l)=>{if(!this.argChoices.includes(s))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(s,l):s},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?r(this.name().replace(/^no-/,"")):r(this.name())}helpGroup(i){return this.helpGroupHeading=i,this}is(i){return this.short===i||this.long===i}isBoolean(){return!this.required&&!this.optional&&!this.negate}},o=class{constructor(i){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,i.forEach(s=>{s.negate?this.negativeOptions.set(s.attributeName(),s):this.positiveOptions.set(s.attributeName(),s)}),this.negativeOptions.forEach((s,l)=>{this.positiveOptions.has(l)&&this.dualOptions.add(l)})}valueFromOption(i,s){const l=s.attributeName();if(!this.dualOptions.has(l))return!0;const c=this.negativeOptions.get(l).presetArg,u=c!==void 0?c:!1;return s.negate===(u===i)}};function r(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function a(i){let s,l;const c=/^-[^-]$/,u=/^--[^-]/,h=i.split(/[ |,]+/).concat("guard");if(c.test(h[0])&&(s=h.shift()),u.test(h[0])&&(l=h.shift()),!s&&c.test(h[0])&&(s=h.shift()),!s&&u.test(h[0])&&(s=l,l=h.shift()),h[0].startsWith("-")){const f=h[0],p=`option creation failed due to '${f}' in option flags '${i}'`;throw/^-[^-][^-]/.test(f)?new Error(`${p}
6
+ - a short flag is a single dash and a single character
7
+ - either use a single dash and a single character (for a short flag)
8
+ - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(f)?new Error(`${p}
9
+ - too many short flags`):u.test(f)?new Error(`${p}
10
+ - too many long flags`):new Error(`${p}
11
+ - unrecognised flag format`)}if(s===void 0&&l===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:s,longFlag:l}}e.Option=n,e.DualOptions=o})),ac=ot((e=>{var t=3;function n(r,a){if(Math.abs(r.length-a.length)>t)return Math.max(r.length,a.length);const i=[];for(let s=0;s<=r.length;s++)i[s]=[s];for(let s=0;s<=a.length;s++)i[0][s]=s;for(let s=1;s<=a.length;s++)for(let l=1;l<=r.length;l++){let c=1;r[l-1]===a[s-1]?c=0:c=1,i[l][s]=Math.min(i[l-1][s]+1,i[l][s-1]+1,i[l-1][s-1]+c),l>1&&s>1&&r[l-1]===a[s-2]&&r[l-2]===a[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[r.length][a.length]}function o(r,a){if(!a||a.length===0)return"";a=Array.from(new Set(a));const i=r.startsWith("--");i&&(r=r.slice(2),a=a.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return a.forEach(u=>{if(u.length<=1)return;const h=n(r,u),f=Math.max(r.length,u.length);(f-h)/f>c&&(h<l?(l=h,s=[u]):h===l&&s.push(u))}),s.sort((u,h)=>u.localeCompare(h)),i&&(s=s.map(u=>`--${u}`)),s.length>1?`
12
+ (Did you mean one of ${s.join(", ")}?)`:s.length===1?`
13
+ (Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),ic=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),r=require("node:fs"),a=require("node:process"),{Argument:i,humanReadableArgName:s}=So(),{CommanderError:l}=En(),{Help:c,stripColor:u}=gi(),{Option:h,DualOptions:f}=bi(),{suggestSimilar:p}=ac(),E=class pi extends t{constructor(d){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=d||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:m=>a.stdout.write(m),writeErr:m=>a.stderr.write(m),outputError:(m,A)=>A(m),getOutHelpWidth:()=>a.stdout.isTTY?a.stdout.columns:void 0,getErrHelpWidth:()=>a.stderr.isTTY?a.stderr.columns:void 0,getOutHasColors:()=>y()??(a.stdout.isTTY&&a.stdout.hasColors?.()),getErrHasColors:()=>y()??(a.stderr.isTTY&&a.stderr.hasColors?.()),stripColor:m=>u(m)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(d){return this._outputConfiguration=d._outputConfiguration,this._helpOption=d._helpOption,this._helpCommand=d._helpCommand,this._helpConfiguration=d._helpConfiguration,this._exitCallback=d._exitCallback,this._storeOptionsAsProperties=d._storeOptionsAsProperties,this._combineFlagAndOptionalValue=d._combineFlagAndOptionalValue,this._allowExcessArguments=d._allowExcessArguments,this._enablePositionalOptions=d._enablePositionalOptions,this._showHelpAfterError=d._showHelpAfterError,this._showSuggestionAfterError=d._showSuggestionAfterError,this}_getCommandAndAncestors(){const d=[];for(let m=this;m;m=m.parent)d.push(m);return d}command(d,m,A){let b=m,Z=A;typeof b=="object"&&b!==null&&(Z=b,b=null),Z=Z||{};const[,G,C]=d.match(/([^ ]+) *(.*)/),L=this.createCommand(G);return b&&(L.description(b),L._executableHandler=!0),Z.isDefault&&(this._defaultCommandName=L._name),L._hidden=!!(Z.noHelp||Z.hidden),L._executableFile=Z.executableFile||null,C&&L.arguments(C),this._registerCommand(L),L.parent=this,L.copyInheritedSettings(this),b?this:L}createCommand(d){return new pi(d)}createHelp(){return Object.assign(new c,this.configureHelp())}configureHelp(d){return d===void 0?this._helpConfiguration:(this._helpConfiguration=d,this)}configureOutput(d){return d===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...d},this)}showHelpAfterError(d=!0){return typeof d!="string"&&(d=!!d),this._showHelpAfterError=d,this}showSuggestionAfterError(d=!0){return this._showSuggestionAfterError=!!d,this}addCommand(d,m){if(!d._name)throw new Error(`Command passed to .addCommand() must have a name
14
+ - specify the name in Command constructor or using .name()`);return m=m||{},m.isDefault&&(this._defaultCommandName=d._name),(m.noHelp||m.hidden)&&(d._hidden=!0),this._registerCommand(d),d.parent=this,d._checkForBrokenPassThrough(),this}createArgument(d,m){return new i(d,m)}argument(d,m,A,b){const Z=this.createArgument(d,m);return typeof A=="function"?Z.default(b).argParser(A):Z.default(A),this.addArgument(Z),this}arguments(d){return d.trim().split(/ +/).forEach(m=>{this.argument(m)}),this}addArgument(d){const m=this.registeredArguments.slice(-1)[0];if(m?.variadic)throw new Error(`only the last argument can be variadic '${m.name()}'`);if(d.required&&d.defaultValue!==void 0&&d.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${d.name()}'`);return this.registeredArguments.push(d),this}helpCommand(d,m){if(typeof d=="boolean")return this._addImplicitHelpCommand=d,d&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;const[,A,b]=(d??"help [command]").match(/([^ ]+) *(.*)/),Z=m??"display help for command",G=this.createCommand(A);return G.helpOption(!1),b&&G.arguments(b),Z&&G.description(Z),this._addImplicitHelpCommand=!0,this._helpCommand=G,(d||m)&&this._initCommandGroup(G),this}addHelpCommand(d,m){return typeof d!="object"?(this.helpCommand(d,m),this):(this._addImplicitHelpCommand=!0,this._helpCommand=d,this._initCommandGroup(d),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(d,m){const A=["preSubcommand","preAction","postAction"];if(!A.includes(d))throw new Error(`Unexpected value for event passed to hook : '${d}'.
15
+ Expecting one of '${A.join("', '")}'`);return this._lifeCycleHooks[d]?this._lifeCycleHooks[d].push(m):this._lifeCycleHooks[d]=[m],this}exitOverride(d){return d?this._exitCallback=d:this._exitCallback=m=>{if(m.code!=="commander.executeSubCommandAsync")throw m},this}_exit(d,m,A){this._exitCallback&&this._exitCallback(new l(d,m,A)),a.exit(d)}action(d){const m=A=>{const b=this.registeredArguments.length,Z=A.slice(0,b);return this._storeOptionsAsProperties?Z[b]=this:Z[b]=this.opts(),Z.push(this),d.apply(this,Z)};return this._actionHandler=m,this}createOption(d,m){return new h(d,m)}_callParseArg(d,m,A,b){try{return d.parseArg(m,A)}catch(Z){if(Z.code==="commander.invalidArgument"){const G=`${b} ${Z.message}`;this.error(G,{exitCode:Z.exitCode,code:Z.code})}throw Z}}_registerOption(d){const m=d.short&&this._findOption(d.short)||d.long&&this._findOption(d.long);if(m){const A=d.long&&this._findOption(d.long)?d.long:d.short;throw new Error(`Cannot add option '${d.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${A}'
16
+ - already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=b=>[b.name()].concat(b.aliases()),A=m(d).find(b=>this._findCommand(b));if(A){const b=m(this._findCommand(A)).join("|"),Z=m(d).join("|");throw new Error(`cannot add command '${Z}' as already have command '${b}'`)}this._initCommandGroup(d),this.commands.push(d)}addOption(d){this._registerOption(d);const m=d.name(),A=d.attributeName();if(d.negate){const Z=d.long.replace(/^--no-/,"--");this._findOption(Z)||this.setOptionValueWithSource(A,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(A,d.defaultValue,"default");const b=(Z,G,C)=>{Z==null&&d.presetArg!==void 0&&(Z=d.presetArg);const L=this.getOptionValue(A);Z!==null&&d.parseArg?Z=this._callParseArg(d,Z,L,G):Z!==null&&d.variadic&&(Z=d._collectValue(Z,L)),Z==null&&(d.negate?Z=!1:d.isBoolean()||d.optional?Z=!0:Z=""),this.setOptionValueWithSource(A,Z,C)};return this.on("option:"+m,Z=>{b(Z,`error: option '${d.flags}' argument '${Z}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,Z=>{b(Z,`error: option '${d.flags}' value '${Z}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,A,b,Z){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const G=this.createOption(m,A);if(G.makeOptionMandatory(!!d.mandatory),typeof b=="function")G.default(Z).argParser(b);else if(b instanceof RegExp){const C=b;b=(L,O)=>{const F=C.exec(L);return F?F[0]:O},G.default(Z).argParser(b)}else G.default(b);return this.addOption(G)}option(d,m,A,b){return this._optionEx({},d,m,A,b)}requiredOption(d,m,A,b){return this._optionEx({mandatory:!0},d,m,A,b)}combineFlagAndOptionalValue(d=!0){return this._combineFlagAndOptionalValue=!!d,this}allowUnknownOption(d=!0){return this._allowUnknownOption=!!d,this}allowExcessArguments(d=!0){return this._allowExcessArguments=!!d,this}enablePositionalOptions(d=!0){return this._enablePositionalOptions=!!d,this}passThroughOptions(d=!0){return this._passThroughOptions=!!d,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(d=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!d,this}getOptionValue(d){return this._storeOptionsAsProperties?this[d]:this._optionValues[d]}setOptionValue(d,m){return this.setOptionValueWithSource(d,m,void 0)}setOptionValueWithSource(d,m,A){return this._storeOptionsAsProperties?this[d]=m:this._optionValues[d]=m,this._optionValueSources[d]=A,this}getOptionValueSource(d){return this._optionValueSources[d]}getOptionValueSourceWithGlobals(d){let m;return this._getCommandAndAncestors().forEach(A=>{A.getOptionValueSource(d)!==void 0&&(m=A.getOptionValueSource(d))}),m}_prepareUserArgs(d,m){if(d!==void 0&&!Array.isArray(d))throw new Error("first parameter to parse must be array or undefined");if(m=m||{},d===void 0&&m.from===void 0){a.versions?.electron&&(m.from="electron");const b=a.execArgv??[];(b.includes("-e")||b.includes("--eval")||b.includes("-p")||b.includes("--print"))&&(m.from="eval")}d===void 0&&(d=a.argv),this.rawArgs=d.slice();let A;switch(m.from){case void 0:case"node":this._scriptPath=d[1],A=d.slice(2);break;case"electron":a.defaultApp?(this._scriptPath=d[1],A=d.slice(2)):A=d.slice(1);break;case"user":A=d.slice(0);break;case"eval":A=d.slice(1);break;default:throw new Error(`unexpected parse option { from: '${m.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",A}parse(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return this._parseCommand([],A),this}async parseAsync(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return await this._parseCommand([],A),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
17
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(d,m,A){if(r.existsSync(d))return;const b=`'${d}' does not exist
18
+ - if '${A}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
19
+ - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
20
+ - ${m?`searched for local subcommand relative to directory '${m}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory"}`;throw new Error(b)}_executeSubCommand(d,m){m=m.slice();let A=!1;const b=[".js",".ts",".tsx",".mjs",".cjs"];function Z(F,z){const ee=o.resolve(F,z);if(r.existsSync(ee))return ee;if(b.includes(o.extname(z)))return;const Ir=b.find(_l=>r.existsSync(`${ee}${_l}`));if(Ir)return`${ee}${Ir}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let G=d._executableFile||`${this._name}-${d._name}`,C=this._executableDir||"";if(this._scriptPath){let F;try{F=r.realpathSync(this._scriptPath)}catch{F=this._scriptPath}C=o.resolve(o.dirname(F),C)}if(C){let F=Z(C,G);if(!F&&!d._executableFile&&this._scriptPath){const z=o.basename(this._scriptPath,o.extname(this._scriptPath));z!==this._name&&(F=Z(C,`${z}-${d._name}`))}G=F||G}A=b.includes(o.extname(G));let L;a.platform!=="win32"?A?(m.unshift(G),m=V(a.execArgv).concat(m),L=n.spawn(a.argv[0],m,{stdio:"inherit"})):L=n.spawn(G,m,{stdio:"inherit"}):(this._checkForMissingExecutable(G,C,d._name),m.unshift(G),m=V(a.execArgv).concat(m),L=n.spawn(a.execPath,m,{stdio:"inherit"})),L.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(F=>{a.on(F,()=>{L.killed===!1&&L.exitCode===null&&L.kill(F)})});const O=this._exitCallback;L.on("close",F=>{F=F??1,O?O(new l(F,"commander.executeSubCommandAsync","(close)")):a.exit(F)}),L.on("error",F=>{if(F.code==="ENOENT")this._checkForMissingExecutable(G,C,d._name);else if(F.code==="EACCES")throw new Error(`'${G}' not executable`);if(!O)a.exit(1);else{const z=new l(1,"commander.executeSubCommandAsync","(error)");z.nestedError=F,O(z)}}),this.runningCommand=L}_dispatchSubcommand(d,m,A){const b=this._findCommand(d);b||this.help({error:!0}),b._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,b,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(b._executableHandler)this._executeSubCommand(b,m.concat(A));else return b._parseCommand(m,A)}),Z}_dispatchHelpCommand(d){d||this.help();const m=this._findCommand(d);return m&&!m._executableHandler&&m.help(),this._dispatchSubcommand(d,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((d,m)=>{d.required&&this.args[m]==null&&this.missingArgument(d.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){const d=(A,b,Z)=>{let G=b;if(b!==null&&A.parseArg){const C=`error: command-argument value '${b}' is invalid for argument '${A.name()}'.`;G=this._callParseArg(A,b,Z,C)}return G};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((A,b)=>{let Z=A.defaultValue;A.variadic?b<this.args.length?(Z=this.args.slice(b),A.parseArg&&(Z=Z.reduce((G,C)=>d(A,C,G),A.defaultValue))):Z===void 0&&(Z=[]):b<this.args.length&&(Z=this.args[b],A.parseArg&&(Z=d(A,Z,A.defaultValue))),m[b]=Z}),this.processedArgs=m}_chainOrCall(d,m){return d?.then&&typeof d.then=="function"?d.then(()=>m()):m()}_chainOrCallHooks(d,m){let A=d;const b=[];return this._getCommandAndAncestors().reverse().filter(Z=>Z._lifeCycleHooks[m]!==void 0).forEach(Z=>{Z._lifeCycleHooks[m].forEach(G=>{b.push({hookedCommand:Z,callback:G})})}),m==="postAction"&&b.reverse(),b.forEach(Z=>{A=this._chainOrCall(A,()=>Z.callback(Z.hookedCommand,this))}),A}_chainOrCallSubCommandHook(d,m,A){let b=d;return this._lifeCycleHooks[A]!==void 0&&this._lifeCycleHooks[A].forEach(Z=>{b=this._chainOrCall(b,()=>Z(this,m))}),b}_parseCommand(d,m){const A=this.parseOptions(m);if(this._parseOptionsEnv(),this._parseOptionsImplied(),d=d.concat(A.operands),m=A.unknown,this.args=d.concat(m),d&&this._findCommand(d[0]))return this._dispatchSubcommand(d[0],d.slice(1),m);if(this._getHelpCommand()&&d[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(d[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(m),this._dispatchSubcommand(this._defaultCommandName,d,m);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(A.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();const b=()=>{A.unknown.length>0&&this.unknownOption(A.unknown[0])},Z=`command:${this.name()}`;if(this._actionHandler){b(),this._processArguments();let G;return G=this._chainOrCallHooks(G,"preAction"),G=this._chainOrCall(G,()=>this._actionHandler(this.processedArgs)),this.parent&&(G=this._chainOrCall(G,()=>{this.parent.emit(Z,d,m)})),G=this._chainOrCallHooks(G,"postAction"),G}if(this.parent?.listenerCount(Z))b(),this._processArguments(),this.parent.emit(Z,d,m);else if(d.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",d,m);this.listenerCount("command:*")?this.emit("command:*",d,m):this.commands.length?this.unknownCommand():(b(),this._processArguments())}else this.commands.length?(b(),this.help({error:!0})):(b(),this._processArguments())}_findCommand(d){if(d)return this.commands.find(m=>m._name===d||m._aliases.includes(d))}_findOption(d){return this.options.find(m=>m.is(d))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(d=>{d.options.forEach(m=>{m.mandatory&&d.getOptionValue(m.attributeName())===void 0&&d.missingMandatoryOptionValue(m)})})}_checkForConflictingLocalOptions(){const d=this.options.filter(m=>{const A=m.attributeName();return this.getOptionValue(A)===void 0?!1:this.getOptionValueSource(A)!=="default"});d.filter(m=>m.conflictsWith.length>0).forEach(m=>{const A=d.find(b=>m.conflictsWith.includes(b.attributeName()));A&&this._conflictingOption(m,A)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(d=>{d._checkForConflictingLocalOptions()})}parseOptions(d){const m=[],A=[];let b=m;function Z(F){return F.length>1&&F[0]==="-"}const G=F=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(F)?!this._getCommandAndAncestors().some(z=>z.options.map(ee=>ee.short).some(ee=>/^-\d$/.test(ee))):!1;let C=null,L=null,O=0;for(;O<d.length||L;){const F=L??d[O++];if(L=null,F==="--"){b===A&&b.push(F),b.push(...d.slice(O));break}if(C&&(!Z(F)||G(F))){this.emit(`option:${C.name()}`,F);continue}if(C=null,Z(F)){const z=this._findOption(F);if(z){if(z.required){const ee=d[O++];ee===void 0&&this.optionMissingArgument(z),this.emit(`option:${z.name()}`,ee)}else if(z.optional){let ee=null;O<d.length&&(!Z(d[O])||G(d[O]))&&(ee=d[O++]),this.emit(`option:${z.name()}`,ee)}else this.emit(`option:${z.name()}`);C=z.variadic?z:null;continue}}if(F.length>2&&F[0]==="-"&&F[1]!=="-"){const z=this._findOption(`-${F[1]}`);if(z){z.required||z.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${z.name()}`,F.slice(2)):(this.emit(`option:${z.name()}`),L=`-${F.slice(2)}`);continue}}if(/^--[^=]+=/.test(F)){const z=F.indexOf("="),ee=this._findOption(F.slice(0,z));if(ee&&(ee.required||ee.optional)){this.emit(`option:${ee.name()}`,F.slice(z+1));continue}}if(b===m&&Z(F)&&!(this.commands.length===0&&G(F))&&(b=A),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&A.length===0){if(this._findCommand(F)){m.push(F),A.push(...d.slice(O));break}else if(this._getHelpCommand()&&F===this._getHelpCommand().name()){m.push(F,...d.slice(O));break}else if(this._defaultCommandName){A.push(F,...d.slice(O));break}}if(this._passThroughOptions){b.push(F,...d.slice(O));break}b.push(F)}return{operands:m,unknown:A}}opts(){if(this._storeOptionsAsProperties){const d={},m=this.options.length;for(let A=0;A<m;A++){const b=this.options[A].attributeName();d[b]=b===this._versionOptionName?this._version:this[b]}return d}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((d,m)=>Object.assign(d,m.opts()),{})}error(d,m){this._outputConfiguration.outputError(`${d}
21
+ `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
22
+ `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
23
+ `),this.outputHelp({error:!0}));const A=m||{},b=A.exitCode||1,Z=A.code||"commander.error";this._exit(b,Z,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in a.env){const m=d.attributeName();(this.getOptionValue(m)===void 0||["default","config","env"].includes(this.getOptionValueSource(m)))&&(d.required||d.optional?this.emit(`optionEnv:${d.name()}`,a.env[d.envVar]):this.emit(`optionEnv:${d.name()}`))}})}_parseOptionsImplied(){const d=new f(this.options),m=A=>this.getOptionValue(A)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(A));this.options.filter(A=>A.implied!==void 0&&m(A.attributeName())&&d.valueFromOption(this.getOptionValue(A.attributeName()),A)).forEach(A=>{Object.keys(A.implied).filter(b=>!m(b)).forEach(b=>{this.setOptionValueWithSource(b,A.implied[b],"implied")})})}missingArgument(d){const m=`error: missing required argument '${d}'`;this.error(m,{code:"commander.missingArgument"})}optionMissingArgument(d){const m=`error: option '${d.flags}' argument missing`;this.error(m,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(d){const m=`error: required option '${d.flags}' not specified`;this.error(m,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(d,m){const A=G=>{const C=G.attributeName(),L=this.getOptionValue(C),O=this.options.find(z=>z.negate&&C===z.attributeName()),F=this.options.find(z=>!z.negate&&C===z.attributeName());return O&&(O.presetArg===void 0&&L===!1||O.presetArg!==void 0&&L===O.presetArg)?O:F||G},b=G=>{const C=A(G),L=C.attributeName();return this.getOptionValueSource(L)==="env"?`environment variable '${C.envVar}'`:`option '${C.flags}'`},Z=`error: ${b(d)} cannot be used with ${b(m)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let b=[],Z=this;do{const G=Z.createHelp().visibleOptions(Z).filter(C=>C.long).map(C=>C.long);b=b.concat(G),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);m=p(d,b)}const A=`error: unknown option '${d}'${m}`;this.error(A,{code:"commander.unknownOption"})}_excessArguments(d){if(this._allowExcessArguments)return;const m=this.registeredArguments.length,A=m===1?"":"s",b=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${m} argument${A} but got ${d.length}.`;this.error(b,{code:"commander.excessArguments"})}unknownCommand(){const d=this.args[0];let m="";if(this._showSuggestionAfterError){const b=[];this.createHelp().visibleCommands(this).forEach(Z=>{b.push(Z.name()),Z.alias()&&b.push(Z.alias())}),m=p(d,b)}const A=`error: unknown command '${d}'${m}`;this.error(A,{code:"commander.unknownCommand"})}version(d,m,A){if(d===void 0)return this._version;this._version=d,m=m||"-V, --version",A=A||"output the version number";const b=this.createOption(m,A);return this._versionOptionName=b.attributeName(),this._registerOption(b),this.on("option:"+b.name(),()=>{this._outputConfiguration.writeOut(`${d}
24
+ `),this._exit(0,"commander.version",d)}),this}description(d,m){return d===void 0&&m===void 0?this._description:(this._description=d,m&&(this._argsDescription=m),this)}summary(d){return d===void 0?this._summary:(this._summary=d,this)}alias(d){if(d===void 0)return this._aliases[0];let m=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(m=this.commands[this.commands.length-1]),d===m._name)throw new Error("Command alias can't be the same as its name");const A=this.parent?._findCommand(d);if(A){const b=[A.name()].concat(A.aliases()).join("|");throw new Error(`cannot add alias '${d}' to command '${this.name()}' as already have command '${b}'`)}return m._aliases.push(d),this}aliases(d){return d===void 0?this._aliases:(d.forEach(m=>this.alias(m)),this)}usage(d){if(d===void 0){if(this._usage)return this._usage;const m=this.registeredArguments.map(A=>s(A));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?m:[]).join(" ")}return this._usage=d,this}name(d){return d===void 0?this._name:(this._name=d,this)}helpGroup(d){return d===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=d,this)}commandsGroup(d){return d===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=d,this)}optionsGroup(d){return d===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=d,this)}_initOptionGroup(d){this._defaultOptionGroup&&!d.helpGroupHeading&&d.helpGroup(this._defaultOptionGroup)}_initCommandGroup(d){this._defaultCommandGroup&&!d.helpGroup()&&d.helpGroup(this._defaultCommandGroup)}nameFromFilename(d){return this._name=o.basename(d,o.extname(d)),this}executableDir(d){return d===void 0?this._executableDir:(this._executableDir=d,this)}helpInformation(d){const m=this.createHelp(),A=this._getOutputContext(d);m.prepareContext({error:A.error,helpWidth:A.helpWidth,outputHasColors:A.hasColors});const b=m.formatHelp(this,m);return A.hasColors?b:this._outputConfiguration.stripColor(b)}_getOutputContext(d){d=d||{};const m=!!d.error;let A,b,Z;return m?(A=C=>this._outputConfiguration.writeErr(C),b=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth()):(A=C=>this._outputConfiguration.writeOut(C),b=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth()),{error:m,write:C=>(b||(C=this._outputConfiguration.stripColor(C)),A(C)),hasColors:b,helpWidth:Z}}outputHelp(d){let m;typeof d=="function"&&(m=d,d=void 0);const A=this._getOutputContext(d),b={error:A.error,write:A.write,command:this};this._getCommandAndAncestors().reverse().forEach(G=>G.emit("beforeAllHelp",b)),this.emit("beforeHelp",b);let Z=this.helpInformation({error:A.error});if(m&&(Z=m(Z),typeof Z!="string"&&!Buffer.isBuffer(Z)))throw new Error("outputHelp callback must return a string or a Buffer");A.write(Z),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",b),this._getCommandAndAncestors().forEach(G=>G.emit("afterAllHelp",b))}helpOption(d,m){return typeof d=="boolean"?(d?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(d??"-h, --help",m??"display help for command"),(d||m)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(d){return this._helpOption=d,this._initOptionGroup(d),this}help(d){this.outputHelp(d);let m=Number(a.exitCode??0);m===0&&d&&typeof d!="function"&&d.error&&(m=1),this._exit(m,"commander.help","(outputHelp)")}addHelpText(d,m){const A=["beforeAll","before","after","afterAll"];if(!A.includes(d))throw new Error(`Unexpected value for position to addHelpText.
25
+ Expecting one of '${A.join("', '")}'`);const b=`${d}Help`;return this.on(b,Z=>{let G;typeof m=="function"?G=m({error:Z.error,command:Z.command}):G=m,G&&Z.write(`${G}
26
+ `)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(A=>m.is(A))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function V(J){return J.map(d=>{if(!d.startsWith("--inspect"))return d;let m,A="127.0.0.1",b="9229",Z;return(Z=d.match(/^(--inspect(-brk)?)$/))!==null?m=Z[1]:(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=Z[1],/^\d+$/.test(Z[3])?b=Z[3]:A=Z[3]):(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=Z[1],A=Z[3],b=Z[4]),m&&b!=="0"?`${m}=${A}:${parseInt(b)+1}`:d})}function y(){if(a.env.NO_COLOR||a.env.FORCE_COLOR==="0"||a.env.FORCE_COLOR==="false")return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=E,e.useColor=y})),sc=ot((e=>{var{Argument:t}=So(),{Command:n}=ic(),{CommanderError:o,InvalidArgumentError:r}=En(),{Help:a}=gi(),{Option:i}=bi();e.program=new n,e.createCommand=s=>new n(s),e.createOption=(s,l)=>new i(s,l),e.createArgument=(s,l)=>new t(s,l),e.Command=n,e.Option=i,e.Argument=t,e.Help=a,e.CommanderError=o,e.InvalidArgumentError=r,e.InvalidOptionArgumentError=r})),lc=rt(sc(),1),{program:OZ,createCommand:DZ,createArgument:_Z,createOption:$Z,CommanderError:cc,InvalidArgumentError:PZ,InvalidOptionArgumentError:qZ,Command:dc,Argument:eR,Option:Ve,Help:tR}=lc.default;function Ai(e){return e.replace(/\s+/g," ").trim()}function re(e,t){const n=t.map(a=>e.map(i=>Ai(i.value(a)))),o=e.map((a,i)=>{const s=n.map(l=>l[i].length);return Math.max(a.header.length,...s)}),r=a=>a.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[r(e.map(a=>a.header)),r(o.map(a=>"-".repeat(a))),...n.map(r)].join(`
27
+ `)}function q(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,r])=>`${o.padEnd(n)} ${Ai(r??"")}`).join(`
28
+ `)}
29
+ `}function uc(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),o=Math.floor(t%3600/60);return n>0?`${n}h ${o}m`:o>0?`${o}m ${t%60}s`:`${t}s`}function gt(e,t){if(!e)return;if(!t)return e;const n=Date.parse(e)-Date.parse(t);return Number.isNaN(n)?e:`${e} (${n>=0?"in":"ago"} ${uc(Math.abs(n))})`}function _t(e,t){if(!e)return;const n=gt(e.earliestAt,t),o=gt(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function fi(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function Xr(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function Zt(e,t="status"){const n=e.serverTime,o=`Lock ${e.lockId}: ${e.status} as ${e.ownerId} (myTurn: ${e.myTurn?"yes":"no"})`;if(e.status==="Holding"){const r=[o,q([["Epoch",String(e.epoch)],["Valid until",gt(e.leaseExpiresAt,n)?`${gt(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",gt(e.maxHoldExpiresAt,n)?`${gt(e.maxHoldExpiresAt,n)}; the lock is taken back then even with heartbeats`:void 0],["Check in",_t(e.checkInWindow,n)],["Queue length",e.queueLength>0?String(e.queueLength):void 0]]).trimEnd(),`Next: start the heartbeat watcher before any work: hagi agent lock heartbeat ${Xr(e)} --epoch ${e.epoch}`];return t==="acquire"&&r.push("If you acquired this lock before, that first acquire is still valid: same epoch, the hard cap did not restart and the lease was not refreshed. Only the heartbeat renews the lease."),`${r.join(`
30
+ `)}
31
+ `}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",fi(e)],["Check in",_t(e.checkInWindow,n)],["Your turn",_t(e.turnWindow,n)?`${_t(e.turnWindow,n)} (a bound, usually much sooner)`:void 0],["Poll interval",e.suggestedPollIntervalMs>0?`${e.suggestedPollIntervalMs/1e3}s`:void 0]]).trimEnd(),`Next: wait with a continuous watcher, do not sleep and re-check: hagi agent lock acquire ${Xr(e)} --wait`].join(`
32
+ `)+`
33
+ `;if(e.status==="Requisitioned"){const r=e.requisition;return`${o}
34
+ Requisitioned by ${r?.byOwnerId??"another owner"}${r?.at?` at ${r.at}`:""}, reason: ${r?.reason??"not given"}.
35
+ Stop using the resource now. Queue again only if your task still needs it, and never requisition it back.
36
+ `}return e.status==="Expired"?`${o}
37
+ Your hold or queue entry has ended (lease or claim window ran out, hard cap passed, or the entry was dropped). Stop using the resource. Acquire again to queue at the back.
38
+ `:`${o}
39
+ The backend has no hold or queue entry for this owner. Acquire to queue.
40
+ `}function mc(e){const t=fi(e);return`Lock ${e.lockId}: still queued, position ${e.position} of ${e.queueLength}${t?`, held by ${t}`:""}.
41
+ `}function hc(e,t){switch(e.outcome){case"timeout":return`Timed out after ${e.elapsedSeconds}s waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
42
+ `;case"cancelled":return`Interrupted while waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
43
+ `;case"lost":return`The backend dropped the queue entry for lock ${e.status.lockId} (${e.status.status}). Acquire again to queue at the back.
44
+ `;default:return""}}function gc(e){const t=e.holderOwnerId?`held by ${e.holderOwnerId}`:"free",n=`owner ${e.ownerId} on lock ${e.lockId}`;return e.released?`Released ${e.previousStatus==="Holding"?"the lock":"the queue entry"} of ${n}. The lock is now ${t}.
45
+ `:`Nothing to release for ${n} (it was ${e.previousStatus}). The lock is ${t}.
46
+ `}function bc(e){return e.length===0?`No busy locks.
47
+ `:`Locks (${e.length})
48
+ ${re([{header:"LOCK",value:t=>t.lockId},{header:"HOLDER",value:t=>t.holderOwnerId??"-"},{header:"LABEL",value:t=>t.holderLabel??""},{header:"EPOCH",value:t=>String(t.epoch)},{header:"LEASE EXPIRES",value:t=>t.leaseExpiresAt??""},{header:"QUEUE",value:t=>String(t.queueLength)}],e)}
49
+ `}function v(e){return`${JSON.stringify(e,null,2)}
50
+ `}var S;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(S||(S={}));function Vo(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 g;(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"})(g||(g={}));function pc(){const e=this.buf;let t=this.pos,n=0,o=0;for(let a=0;a<28;a+=7){const i=e[t++];if(n|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const r=e[t++];if(n|=(r&15)<<28,o=(r&112)>>4,(r&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let a=3;a<=31;a+=7){const i=e[t++];if(o|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var ln=4294967296;function yr(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,r=0;function a(i,s){const l=Number(e.slice(i,s));r*=n,o=o*n+l,o>=ln&&(r=r+(o/ln|0),o=o%ln)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Ri(o,r):Go(o,r)}function Ac(e,t){let n=Go(e,t);const o=n.hi&2147483648;o&&(n=Ri(n.lo,n.hi));const r=Zi(n.lo,n.hi);return o?"-"+r:r}function Zi(e,t){if({lo:e,hi:t}=fc(e,t),t<=2097151)return String(ln*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535;let a=n+o*6777216+r*6710656,i=o+r*8147497,s=r*2;const l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Yr(i)+Yr(a)}function fc(e,t){return{lo:e>>>0,hi:t>>>0}}function Go(e,t){return{lo:e|0,hi:t|0}}function Ri(e,t){return t=~t,e?e=~e+1:t+=1,Go(e,t)}var Yr=e=>{const t=String(e);return"0000000".slice(t.length)+t};function Zc(e,t){if(e>>>0<128){t.push(e);return}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 Rc(){let e=this.buf[this.pos++];if((e&128)===0)return this.assertBounds(),e;let t=e&127;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 H=Ec();function Ec(){const 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"&&(globalThis.Deno||globalThis.Bun||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),o=BigInt("0"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>n||i<t)throw new Error(`invalid int64: ${a}`);return i},uParse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>r||i<o)throw new Error(`invalid uint64: ${a}`);return i},enc(a){return e.setBigInt64(0,this.parse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(a){return e.setBigInt64(0,this.uParse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Cr(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Br(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Cr(t),yr(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Br(t),yr(t)},dec(t,n){return Ac(t,n)},uDec(t,n){return Zi(t,n)}}}function Cr(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Br(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function ke(e,t){switch(e){case g.STRING:return"";case g.BOOL:return!1;case g.DOUBLE:case g.FLOAT:return 0;case g.INT64:case g.UINT64:case g.SFIXED64:case g.FIXED64:case g.SINT64:return t?"0":H.zero;case g.BYTES:return new Uint8Array(0);default:return 0}}function Sc(e,t){switch(e){case g.BOOL:return t===!1;case g.STRING:return t==="";case g.BYTES:return t instanceof Uint8Array&&!t.byteLength;case g.DOUBLE:case g.FLOAT:return Object.is(t,0);default:return t==0}}var Ei=2,me=Symbol.for("reflect unsafe local");function Vc(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Gc(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=Ei)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!Sc(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function xt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function Nc(e,t){if(t.oneof){const n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function Wc(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function fe(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function vc(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function Ic(e,t){const n=t.localName;if(t.oneof){const o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=Ei)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]=ke(t.scalar,t.longAsString);break}}function He(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e,t){var n,o,r,a;if(He(e)&&me in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Wo(e,t){var n,o,r,a;if(He(e)&&me in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function vo(e,t){return He(e)&&me in e&&"desc"in e&&He(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function Xc(e){return Vi(e.$typeName)}function at(e){const t=e.fields[0];return Vi(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function Si(e){switch(e.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return at(e)}}var yc=new Set(["google.protobuf.DoubleValue","google.protobuf.FloatValue","google.protobuf.Int64Value","google.protobuf.UInt64Value","google.protobuf.Int32Value","google.protobuf.UInt32Value","google.protobuf.BoolValue","google.protobuf.StringValue","google.protobuf.BytesValue"]);function Vi(e){return yc.has(e)}var Yc=999,Cc=998,Gi=2;function de(e,t){return Vo(t,e)?t:Ni(e)(t)}var Fr=new WeakMap;function Ni(e){let t=Fr.get(e);return t===void 0&&(t=Bc(e),Fr.set(e,t)),t}var no=0,Wi=1,vi=2,Ii=3;function Bc(e){const t=e.typeName,{properties:n,prototype:o}=Fc(e);return r=>{let a;o!==void 0?(a=Object.create(o),a.$typeName=t):a={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=r?.[l];switch(s.kind){case no:c!=null?a[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(a[l]=s.constant);break;case Wi:a[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case vi:if(s.convert===void 0||!He(c))a[l]=c??{};else{const u={},h=Object.keys(c);for(let f=0;f<h.length;f++)fe(u,h[f],s.convert(c[h[f]]));a[l]=u}break;case Ii:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){a[l]={case:u.case,value:h(u.value)};break}}a[l]={case:void 0};break}}}return a}}function Fc(e){var t,n;const o=[],r={},a=kc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Ii,constant:void 0,convert:wc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:no,constant:void 0,convert:cn(i)});break;case"list":o.push({name:s,kind:Wi,constant:void 0,convert:i.listKind=="message"?(t=cn(i))!==null&&t!==void 0?t:(l=>l):i.scalar==g.BYTES?Ut:void 0});break;case"map":o.push({name:s,kind:vi,constant:void 0,convert:i.mapKind=="message"?(n=cn(i))!==null&&n!==void 0?n:(l=>l):i.scalar==g.BYTES?Ut:void 0});break;default:{const l=Uc(i);o.push({name:s,kind:no,constant:i.presence==Gi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==g.BYTES?Ut:void 0}),a&&(r[s]=l);break}}}return{properties:o,prototype:a?r:void 0}}function wc(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=cn(n):n.fieldKind=="scalar"&&n.scalar==g.BYTES&&(o=Ut),t.set(n.localName,o??(r=>r))}return t}function cn(e){if(e.fieldKind=="message"&&!e.oneof&&at(e.message))return e.message.fields[0].scalar==g.BYTES?Ut:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!He(o)||Vo(o,t)?o:(n!=null||(n=Ni(t)),n(o))}function Ut(e){return Array.isArray(e)?new Uint8Array(e):e}function kc(e){switch(e.file.edition){case Yc:return!1;case Cc:return!0;default:return e.fields.some(t=>t.presence!=Gi&&t.fieldKind!="message"&&!t.oneof)}}function Uc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?ke(e.scalar,e.longAsString):e.enum.values[0].number}var Jc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function xc(e){return e instanceof Error&&Jc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var oo;function Lc(e){var t;oo=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:Xi(e.encodeUtf8.bind(e))})}function Io(){if(!oo){const e=globalThis;if(!e.TextEncoder||!e.TextDecoder)throw new Error("encoding API missing: install TextEncoder and TextDecoder on globalThis");const t=new e.TextEncoder,n=new e.TextDecoder;let o;const r={encodeUtf8(i){return t.encode(i)},decodeUtf8(i,s){return s?(o||(o=new e.TextDecoder("utf-8",{fatal:!0})),o.decode(i)):n.decode(i)},checkUtf8(i){try{return!0}catch{return!1}}};t.encodeInto&&(r.encodeUtf8Into=t.encodeInto.bind(t));const a=String.prototype.isWellFormed;a&&(r.checkUtf8=i=>a.call(i)),Lc(r)}return oo}function Xi(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var _;(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"})(_||(_={}));var yi=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?Xi(e):Io().encodeUtf8Into,this.buffer=Yi,this.viewCache=zc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Kc;for(;n<t;)n*=2;const o=new Uint8Array(n);this.pos>0&&o.set(this.buffer),this.buffer=o}}view(){const e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;const n=new DataView(e.buffer);return this.viewCache=n,n}finish(){const e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(Ct),this.buffer[this.pos++]=0,this}join(){const e=this.stackPos.pop();if(e===void 0)throw new Error("invalid state, fork stack empty");const t=this.pos-e-Ct,n=xn(t);return n>Ct&&(this.ensureCapacity(n-Ct),this.buffer.copyWithin(e+n,e+Ct,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(wr(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(Ln(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=e?1:0,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!="string"&&(e=String(e));const t=e.length;if(t<=Ci){this.ensureCapacity(t+1);const s=this.buffer;let l=this.pos;s[l++]=t;let c=0;for(;c<t;c++){const u=e.charCodeAt(c);if(u>127)break;s[l++]=u}if(c==t)return this.pos=l,this}this.ensureCapacity(t*3+5);const n=xn(t),o=this.buffer,r=this.pos,{written:a}=this.encodeUtf8Into(e,o.subarray(r+n)),i=xn(a);return i!=n&&o.copyWithin(r+i,r+n,r+n+a),this.uint32(a),this.pos+=a,this}float(e){return jc(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return wr(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return Ln(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return Ln(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=H.enc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){const t=H.uEnc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){const t=H.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=H.enc(e),n=t.hi>>31,o=t.lo<<1^n,r=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,r)}uint64(e){const t=H.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);const n=this.buffer;let o=this.pos;for(let i=0;i<28;i=i+7){const s=e>>>i,l=!(!(s>>>7)&&t==0);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}const r=e>>>28&15|(t&7)<<4,a=t>>3!=0;if(n[o++]=(a?r|128:r)&255,!a)return this.pos=o,this;for(let i=3;i<31;i=i+7){const s=t>>>i,l=!!(s>>>7);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}return n[o++]=t>>>31&1,this.pos=o,this}},Kc=128,Ct=1,Yi=new Uint8Array(0),zc=new DataView(Yi.buffer),Ci=32;function xn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var Lt=class{constructor(e,t=Io().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=pc,this.uint32=Rc,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){const e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");const o=t>>>3,r=t&7;if(o<=0||r>5)throw new Error("illegal tag: field no "+o+" wire type "+r);return[o,r]}skip(e,t,n=100){let o=this.pos;switch(e){case _.Varint:for(;this.buf[this.pos++]&128;);break;case _.Bit64:this.pos+=4;case _.Bit32:this.pos+=4;break;case _.LengthDelimited:let r=this.uint32();this.pos+=r;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[a,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a,n-1)}break;default:throw new Error("cant skip wire type "+e)}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 e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),H.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),H.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,H.dec(e,t)}bool(){const e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return H.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return H.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 e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){const t=this.bytes(),n=t.length;if(n<=Ci){const o=new Array(n);for(let r=0;r<n;r++){const a=t[r];if(a>127)return this.decodeUtf8(t,e);o[r]=a}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function Ln(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>2147483647||e<-2147483648)throw new Error("invalid int32: "+e)}function wr(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>4294967295||e<0)throw new Error("invalid uint32: "+e)}function jc(e){if(typeof e=="string"){const 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(Math.fround(e))&&Number.isFinite(e))throw new Error("invalid float32: "+e)}function Bi(e,t){const n=e.fieldKind=="list"?No(t,e):e.fieldKind=="map"?Wo(t,e):Xo(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${wi(e)}, got ${te(t)}`;break;case"map":o=`expected ${ki(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function kr(e,t,n){const o=Xo(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function Tc(e,t,n){const o=Qe(e.mapKey)(t);if(o!==!0)return new Q(e,`invalid map key: ${pe({scalar:e.mapKey},t,o)}`);const r=Xo(e,n);if(r!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,r)}`)}function Xo(e,t){return e.scalar!==void 0?Qe(e.scalar)(t):e.enum!==void 0?e.enum.open?Qe(g.INT32)(t):e.enum.values.some(n=>n.number===t):vo(t,e.message)}function Qe(e){switch(e){case g.DOUBLE:return t=>typeof t=="number";case g.FLOAT:return t=>typeof t!="number"?!1:!Number.isFinite(Math.fround(t))&&Number.isFinite(t)?`${t.toFixed()} out of range`:!0;case g.INT32:case g.SFIXED32:case g.SINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>2147483647||t<-2147483648?`${t.toFixed()} out of range`:!0;case g.FIXED32:case g.UINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>4294967295||t<0?`${t.toFixed()} out of range`:!0;case g.BOOL:return t=>typeof t=="boolean";case g.STRING:return t=>typeof t!="string"?!1:Io().checkUtf8(t)||"invalid UTF8";case g.BYTES:return t=>t instanceof Uint8Array;case g.INT64:case g.SFIXED64:case g.SINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return H.parse(t),!0}catch{return`${t} out of range`}return!1};case g.FIXED64:case g.UINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return H.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function pe(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(t)}`,e.scalar!==void 0?`expected ${Hc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Fi(e.message)}`+n}function te(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:No(e)?wi(e.field()):Wo(e)?ki(e.field()):vo(e)?Fi(e.desc):Vo(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 Fi(e){return`ReflectMessage (${e.typeName})`}function wi(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${g[e.scalar]})`}}function ki(e){switch(e.mapKind){case"message":return`ReflectMap (${g[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${g[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${g[e.mapKey]}, ${g[e.scalar]})`}}function Hc(e){switch(e){case g.STRING:return"string";case g.BOOL:return"boolean";case g.INT64:case g.SINT64:case g.SFIXED64:return"bigint (int64)";case g.UINT64:case g.FIXED64:return"bigint (uint64)";case g.BYTES:return"Uint8Array";case g.DOUBLE:return"number (float64)";case g.FLOAT:return"number (float32)";case g.FIXED32:case g.UINT32:return"number (uint32)";case g.INT32:case g.SFIXED32:case g.SINT32:return"number (int32)"}}var Qc=0;function We(e){if(Mc(e))return{toMessage:n=>yo(n),toLocal:n=>Yo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:r=>{const a=de(n);return r!==void 0&&(a[o]=r),a},toLocal:r=>r[o]}}const t=e.message;return{toMessage:n=>n===void 0?de(t):n,toLocal:n=>n}}function Mc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function yo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(He(e))for(const n of Object.keys(e))fe(t.fields,n,Ji(e[n]));return t}function Yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,Ui(e.fields[n]));return t}function Ui(e){switch(e.kind.case){case"structValue":return Yo(e.kind.value);case"listValue":return e.kind.value.values.map(Ui);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ji(e){const 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:Qc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ji(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:yo(e)};break}return t}function Oc(e,t,n=!0){return new xi(e,t,n)}var Ur=new WeakMap,xi=class{get sortedFields(){const e=Ur.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ur.set(this.desc,t),t}constructor(e,t,n=!0){this.lists=new Map,this.maps=new Map,this.check=n,this.desc=e,this.message=this[me]=t??de(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(e)}oneofCase(e){return Bt(this.message,e),Vc(this.message,e)}isSet(e){return Bt(this.message,e),Gc(this.message,e)}clear(e){Bt(this.message,e),Ic(this.message,e)}get(e){Bt(this.message,e);const t=Nc(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[me]!==t)&&this.lists.set(e,n=new Dc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new _c(e,t,this.check)),o;case"message":return Bo(e,t,this.check);case"scalar":return t===void 0?ke(e.scalar,!1):Fo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Bt(this.message,e),this.check){const o=Bi(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Co(e,t):Wo(t)||No(t)?n=t[me]:n=wo(e,t),Wc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Bt(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Dc=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[me]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:Kn(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new Q(this._field,`list item #${e+1}: out of range`);if(this.check){const n=kr(this._field,e,t);if(n)throw n}this._arr[e]=Jr(this._field,t)}add(e){if(this.check){const t=kr(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Jr(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(const e of this._arr)yield Kn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,Kn(this._field,this._arr[e],this.check)]}},_c=class{constructor(e,t,n=!0){this.obj=this[me]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=Tc(this._field,e,t);if(n)throw n}return fe(this.obj,$t(e),$c(this._field,t)),this}delete(e){const t=$t(e),n=Object.prototype.hasOwnProperty.call(this.obj,t);return n&&delete this.obj[t],n}clear(){for(const e of Object.keys(this.obj))delete this.obj[e]}get(e){let t=vc(this.obj,$t(e));return t!==void 0&&(t=zn(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,$t(e))}*keys(){for(const e of Object.keys(this.obj))yield xr(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[xr(e[0],this._field.mapKey),zn(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(const e of Object.values(this.obj))yield zn(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Co(e,t){return vo(t)?Xc(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Yo(t.message):t.message:t}function Bo(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:Fo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&He(t)&&(t=yo(t))),new xi(e.message,t,n)}function Jr(e,t){return e.listKind=="message"?Co(e,t):wo(e,t)}function Kn(e,t,n){return e.listKind=="message"?Bo(e,t,n):Fo(e,t)}function $c(e,t){return e.mapKind=="message"?Co(e,t):wo(e,t)}function zn(e,t,n){return e.mapKind=="message"?Bo(e,t,n):t}function $t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function xr(e,t){switch(t){case g.STRING:return e;case g.INT32:case g.FIXED32:case g.UINT32:case g.SFIXED32:case g.SINT32:{const n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case g.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case g.UINT64:case g.FIXED64:try{return H.uParse(e)}catch{}break;default:try{return H.parse(e)}catch{}break}return e}function Fo(e,t){switch(e.scalar){case g.INT64:case g.SFIXED64:case g.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.parse(t));break;case g.FIXED64:case g.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.uParse(t));break}return t}function wo(e,t){switch(e.scalar){case g.INT64:case g.SFIXED64:case g.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.parse(t));break;case g.FIXED64:case g.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.uParse(t));break}return t}var Lr=Uint8Array.prototype.setFromBase64;function ko(e){const t=e.length;let n=t-(t+3>>2);(t&3)==0&&e[t-1]=="="&&(n-=e[t-2]=="="?2:1);const o=new Uint8Array(n);let r=-1;if(Lr)try{const a=Lr.call(o,e);a.read==t&&(r=a.written)}catch{}return r<0&&(r=Pc(o,e)),r==n?o:o.subarray(0,r)}function Pc(e,t){const n=td();let o=0,r=0,a,i=0;for(let s=0;s<t.length;s++){if(a=n[t.charCodeAt(s)],a===void 0)switch(t[s]){case"=":r=0;case`
51
+ `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(r){case 0:i=a,r=1;break;case 1:e[o++]=i<<2|(a&48)>>4,i=a,r=2;break;case 2:e[o++]=(i&15)<<4|(a&60)>>2,i=a,r=3;break;case 3:e[o++]=(i&3)<<6|a,r=0;break}}if(r==1)throw Error("invalid base64 string");return o}var Kr=Uint8Array.prototype.toBase64,qc={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function ed(e,t="std"){if(Kr)return Kr.call(e,qc[t]);const n=Li(t),o=t=="std";let r="",a=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:r+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:r+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:r+=n[s|i>>6],r+=n[i&63],a=0;break}return a&&(r+=n[s],o&&(r+="=",a==1&&(r+="="))),r}var Pt,zr,ct;function Li(e){return Pt||(Pt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),zr=Pt.slice(0,-2).concat("-","_")),e=="url"?zr:Pt}function td(){if(!ct){ct=[];const e=Li("std");for(let t=0;t<e.length;t++)ct[e[t].charCodeAt(0)]=t;ct[45]=e.indexOf("+"),ct[95]=e.indexOf("/")}return ct}function Rt(e){let t=!1;const 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("")}function Ki(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var nd=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return nd.has(e)?e+"$":e}function Uo(e){for(const t of e.field)xt(t,"jsonName")||(t.jsonName=Rt(t.name));e.nestedType.forEach(Uo)}function od(e,t){const n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function rd(e,t){switch(e){case g.STRING:return t;case g.BYTES:{const n=ad(t);if(n===!1)throw new Error(`cannot parse ${g[e]} default value: ${t}`);return n}case g.INT64:case g.SFIXED64:case g.SINT64:return H.parse(t);case g.UINT64:case g.FIXED64:return H.uParse(t);case g.DOUBLE:case g.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return NaN;default:return parseFloat(t)}case g.BOOL:return t==="true";case g.INT32:case g.UINT32:case g.SINT32:case g.FIXED32:case g.SFIXED32:return parseInt(t,10)}}function ad(e){const 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){const 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":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{const o=n.c,r=n.take(4);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,r=n.take(8);if(r===!1)return!1;const a=H.uEnc(o+r),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*ro(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*ro(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*ro(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function zi(...e){const t=id();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Qr(o,t);return t}if("$typeName"in e[0]){let i=function(s){const l=[];for(const c of s.dependency){if(t.getFile(c)!=null||a.has(c))continue;const u=r(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],r=e[1],a=new Set;for(const s of[o,...i(o)].reverse())Qr(s,t)}else for(const o of e)for(const r of o.files)t.addFile(r);return t}function id(){const 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,a){if(n.set(o.proto.name,o),!r)for(const i of ro(o))this.add(i);if(a)for(const i of o.dependencies)this.addFile(i,r,a)},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){const r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){const r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){const r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var a;return(a=t.get(o.typeName))===null||a===void 0?void 0:a.get(r)},getService(o){const r=e.get(o);return r?.kind=="service"?r:void 0}}}var sd=998,ld=999,cd=9999,dd=9,zt=10,Jt=11,ud=12,jr=14,Jo=3,md=2,Tr=1,hd=0,jn=1,Hr=2,gd=3,bd=1,pd=2,Ad=1,fd=2,Zd=1002,ji={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2,enforceProtoLimits:1},1002:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:3,defaultSymbolVisibility:4,enforceProtoLimits:2}};function Qr(e,t){var n,o;const 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:Vd(e),name:e.name.replace(/\.proto$/,""),dependencies:Gd(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var l;ge(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(s.typeName,s)}};for(const s of e.enumType)Ti(s,r,void 0,t);for(const s of e.messageType)Hi(s,r,void 0,t,i);for(const s of e.service)Rd(s,r,t);ao(r,t);for(const s of a.values())io(s,t,i);for(const s of r.messages)io(s,t,i),ao(s,t);t.addFile(r,!0)}function ao(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=so(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=so(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)ao(n,t);break}}function io(e,t,n){const o=e.proto.oneofDecl.map(a=>Sd(a,e)),r=new Set;for(const a of e.proto.field){const i=Id(a,o),s=so(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),r.has(i)||(r.add(i),e.members.push(i)))}for(const a of o.filter(i=>r.has(i)))e.oneofs.push(a);for(const a of e.nestedMessages)io(a,t,n)}function Ti(e,t,n,o){var r,a,i,s,l,c;const u=Nd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(a=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&a!==void 0?a:!1,file:t,parent:n,open:!0,name:e.name,typeName:Sn(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=Cd(h),o.add(h);for(const f of e.value){const p=f.name;h.values.push(h.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:h,name:p,localName:Kt(u==null?p:p.substring(u.length)),number:f.number,jsonName:(l=Wd(f))!==null&&l!==void 0?l:p,toString(){return`enum value ${h.typeName}.${p}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Hi(e,t,n,o,r){var a,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:Sn(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):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)Ti(u,t,c,o);for(const u of e.nestedType)Hi(u,t,c,o,r)}function Rd(e,t,n){var o,r;const a={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:Sn(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(const i of e.method){const s=Ed(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function Ed(e,t,n){var o,r,a,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";const l=n.getMessage(we(e.inputType)),c=n.getMessage(we(e.outputType));ge(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),ge(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=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:u,localName:Kt(u.length?Kt(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:hd,toString(){return`rpc ${t.typeName}.${u}`}}}function Sd(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:Kt(Rt(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function so(e,t,n,o,r){var a,i,s;const l=r===void 0,c={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Xd(e,o,l,t),utf8Validation:Bd(e,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};let u;if(l){const E=t.kind=="file"?t:t.file,V=t.kind=="file"?void 0:t,y=Sn(e,V,E);c.kind="extension",c.file=E,c.parent=V,c.oneof=void 0,c.typeName=y,c.jsonName=`[${y}]`,u=()=>`extension ${y}`;const J=n.getMessage(we(e.extendee));ge(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const E=t;ge(E.kind=="message"),c.parent=E,c.oneof=o,c.localName=o?Rt(e.name):Kt(Rt(e.name)),c.jsonName=e.jsonName,u=()=>`field ${E.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,p=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Jo){const E=f==Jt?r?.get(we(e.typeName)):void 0;if(E){c.fieldKind="map";const{key:V,value:y}=Yd(E);return c.mapKey=V.scalar,c.mapKind=y.fieldKind,c.message=y.message,c.delimitedEncoding=!1,c.enum=y.enum,c.scalar=y.scalar,c}switch(c.fieldKind="list",f){case Jt:case zt:c.listKind="message",c.message=n.getMessage(we(e.typeName)),ge(c.message),c.delimitedEncoding=Mr(e,t);break;case jr:c.listKind="enum",c.enum=n.getEnum(we(e.typeName)),ge(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=p==Tr;break}return c.packed=yd(e,t),c}switch(f){case Jt:case zt:c.fieldKind="message",c.message=n.getMessage(we(e.typeName)),ge(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Mr(e,t),c.getDefaultValue=()=>{};break;case jr:{const E=n.getEnum(we(e.typeName));ge(E!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(we(e.typeName)),c.getDefaultValue=()=>xt(e,"defaultValue")?od(E,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=p==Tr,c.getDefaultValue=()=>xt(e,"defaultValue")?rd(f,e.defaultValue):void 0;break}return c}function Vd(e){switch(e.syntax){case"":case"proto2":return sd;case"proto3":return ld;case"editions":if(e.edition===cd)return Zd;if(e.edition in ji)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Gd(e,t){return e.dependency.map(n=>{const o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function Nd(e,t){const n=vd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Wd(e){var t,n;let a;for(const i of(n=(t=e.options)===null||t===void 0?void 0:t.$unknown)!==null&&n!==void 0?n:[]){if(i.no!==998||i.wireType!==_.LengthDelimited)continue;const s=new Lt(new Lt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===_.LengthDelimited?a=s.string():s.skip(c,l)}}return a}function vd(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function Sn(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 we(e){return e.startsWith(".")?e.substring(1):e}function Id(e,t){if(!xt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return ge(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function Xd(e,t,n,o){if(e.label==md)return gd;if(e.label==Jo)return Hr;if(t||e.proto3Optional||n)return jn;const r=et("fieldPresence",{proto:e,parent:o});return r==Hr&&(e.type==Jt||e.type==zt)?jn:r}function yd(e,t){if(e.label!=Jo)return!1;switch(e.type){case dd:case ud:case zt:case Jt:return!1}const n=e.options;return n&&xt(n,"packed")?n.packed:bd==et("repeatedFieldEncoding",{proto:e,parent:t})}function Yd(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return ge(t&&t.fieldKind=="scalar"&&t.scalar!=g.BYTES&&t.scalar!=g.FLOAT&&t.scalar!=g.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function Cd(e){var t;return Ad==et("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Mr(e,t){return e.type==zt?!0:pd==et("messageEncoding",{proto:e,parent:t})}function Bd(e,t){return fd==et("utf8Validation",{proto:e,parent:t})}function et(e,t){var n,o;const r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){const a=r[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return et(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const a=ji[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return et(e,t.parent)}function ge(e,t){if(!e)throw new Error(t)}function Fd(e){const t=wd(e);return t.messageType.forEach(Uo),zi(t,()=>{}).getFile(t.name)}function wd(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(Qi),enumType:e.enumType.map(Mi)}))}function Qi(e){var t,n,o,r,a,i,s,l;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(kd))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Qi))!==null&&r!==void 0?r:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Mi))!==null&&i!==void 0?i:[],extensionRange:(l=(s=e.extensionRange)===null||s===void 0?void 0:s.map(c=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},c)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function kd(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?Ud(e.options):void 0}))}function Ud(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(r=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},r)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Mi(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function W(e,t,...n){return n.reduce((o,r)=>o.nestedMessages[r],e.messages[t])}var Jd=Fd({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:990,end:999},{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",options:{}},{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",options:{}},{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:990,end:999},{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:990,end:999},{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",options:{deprecated:!0}},{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"},{name:"removal_error",number:5,type:9,label:1}]}],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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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:990,end:999},{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},{value:"STYLE2026",edition:1002}]}},{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},{value:"STRICT",edition:1002}]}},{name:"enforce_proto_limits",number:9,type:14,label:1,typeName:".google.protobuf.FeatureSet.ProtoLimitsFeature.EnforceProtoLimits",options:{retention:2,targets:[6,3,4,5],editionDefaults:[{value:"LEGACY_NO_EXPLICIT_LIMITS",edition:900},{value:"PROTO_LIMITS2026",edition:1002}]}}],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}]}]},{name:"ProtoLimitsFeature",enumType:[{name:"EnforceProtoLimits",value:[{name:"PROTO_LIMITS_UNKNOWN",number:0},{name:"LEGACY_NO_EXPLICIT_LIMITS",number:1},{name:"PROTO_LIMITS2026",number:2}]}]}],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},{name:"STYLE2026",number:3}]}],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_2026",number:1002},{name:"EDITION_UNSTABLE",number:9999},{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}]}]}),xd=W(Jd,1),Or;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Or||(Or={}));var Dr;(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"})(Dr||(Dr={}));var _r;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(_r||(_r={}));var $r;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})($r||($r={}));var Pr;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Pr||(Pr={}));var qr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(qr||(qr={}));var ea;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ea||(ea={}));var ta;(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"})(ta||(ta={}));var na;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(na||(na={}));var oa;(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"})(oa||(oa={}));var ra;(function(e){e[e.PROTO_LIMITS_UNKNOWN=0]="PROTO_LIMITS_UNKNOWN",e[e.LEGACY_NO_EXPLICIT_LIMITS=1]="LEGACY_NO_EXPLICIT_LIMITS",e[e.PROTO_LIMITS2026=2]="PROTO_LIMITS2026"})(ra||(ra={}));var aa;(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"})(aa||(aa={}));var ia;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ia||(ia={}));var sa;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(sa||(sa={}));var la;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(la||(la={}));var ca;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ca||(ca={}));var da;(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"})(da||(da={}));var ua;(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",e[e.STYLE2026=3]="STYLE2026"})(ua||(ua={}));var ma;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ma||(ma={}));var ha;(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_2026=1002]="EDITION_2026",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",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"})(ha||(ha={}));var ga;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ga||(ga={}));function Oi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Qt(e,t,n){const o=de(e);return xo(e).read(o,new Lt(t),Oi(n),t.byteLength),o}var Di=new WeakMap;function xo(e){let t=Di.get(e);return t===void 0&&(t=Ld(e)),t}function Ld(e){const t=String(e),n=new Map,o={read:Kd(t,n),readGroup:zd(t,n)};Di.set(e,o);for(const r of e.fields)n.set(r.number,_i(r));return o}function Kd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);const s=o.pos+a,l=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<s;){const[c,u]=o.tag(),h=t.get(c);if(h===void 0){const f=o.skip(u,c,r.recursionLimit-r.depth);r.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,r,u)}l.length>0&&(n.$unknown=l),r.depth--}}function zd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);let s,l;const c=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<o.len&&([s,l]=o.tag(),l!=_.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,r.recursionLimit-r.depth);r.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,r,l)}if(l!=_.EndGroup||s!==a)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),r.depth--}}function jd(e,t,n,o,r){_i(n)(e[me],t,r,o)}function _i(e){switch(e.fieldKind){case"scalar":return Td(e);case"enum":return Hd(e);case"message":return Qd(e);case"list":return Md(e);case"map":return Od(e)}}function Td(e){const t=gn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a)=>{r[o]={case:n,value:t(a)}}}return(o,r)=>{o[n]=t(r)}}function Hd(e){var t;const n=e.localName,o=(t=e.oneof)===null||t===void 0?void 0:t.localName;if(e.enum.open)return o!==void 0?(i,s)=>{i[o]={case:n,value:s.int32()}}:(i,s)=>{i[n]=s.int32()};const r=e.enum.values,a=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(r.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];Zc(h,f);const p=(u=i.$unknown)!==null&&u!==void 0?u:[];p.push({no:a,wireType:c,data:new Uint8Array(f)}),i.$unknown=p}}}function Qd(e){const t=e.localName,{toMessage:n,toLocal:o}=We(e),r=$i(e);if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=i[a],u=n(c.case===t?c.value:void 0);r(u,s,l),i[a]={case:t,value:o(u)}}}return(a,i,s)=>{const l=n(a[t]);r(l,i,s),a[t]=o(l)}}function $i(e){const t=xo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,r,a)=>t.readGroup(o,r,a,n)}return(n,o,r)=>t.read(n,o,r,o.uint32())}function Md(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=We(e),l=$i(e);return(c,u,h)=>{const f=i(void 0);l(f,u,h),c[t].push(s(f))}}const n=e.listKind=="enum"?g.INT32:e.scalar,o=e.listKind=="scalar"?e.longAsString:!1,r=gn(n,e.utf8Validation,o),a=n!=g.STRING&&n!=g.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&a){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(r(s))}else u.push(r(s))}}function Od(e){const t=e.localName,n=gn(e.mapKey,e.utf8Validation,!1),o=ke(e.mapKey,!1);let r,a;switch(e.mapKind){case"scalar":{const i=e.scalar,s=gn(i,e.utf8Validation,!1);if(r=l=>s(l),i==g.BYTES)a=()=>new Uint8Array(0);else{const l=ke(i,!1);a=()=>l}break}case"enum":{const i=e.enum.values[0].number;r=s=>s.int32(),a=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=We(e),l=xo(e.message).read;r=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},a=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),p=s.pos+f;for(;s.pos<p;){const[E]=s.tag();switch(E){case 1:u=n(s);break;case 2:h=r(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=a()),fe(c,u,h)}}function gn(e,t,n){switch(e){case g.STRING:return o=>o.string(t);case g.BOOL:return o=>o.bool();case g.DOUBLE:return o=>o.double();case g.FLOAT:return o=>o.float();case g.INT32:return o=>o.int32();case g.INT64:return n?o=>String(o.int64()):o=>o.int64();case g.UINT64:return n?o=>String(o.uint64()):o=>o.uint64();case g.FIXED64:return n?o=>String(o.fixed64()):o=>o.fixed64();case g.BYTES:return o=>o.bytes();case g.FIXED32:return o=>o.fixed32();case g.SFIXED32:return o=>o.sfixed32();case g.SFIXED64:return n?o=>String(o.sfixed64()):o=>o.sfixed64();case g.SINT64:return n?o=>String(o.sint64()):o=>o.sint64();case g.UINT32:return o=>o.uint32();case g.SINT32:return o=>o.sint32()}}function ae(e,t){var n;const o=Qt(xd,ko(e));return o.messageType.forEach(Uo),o.dependency=(n=t?.map(r=>r.proto.name))!==null&&n!==void 0?n:[],zi(o,r=>t?.find(a=>a.proto.name===r)).getFile(o.name)}var ve=ae("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Dd(e){return new Date(_d(e))}function _d(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var Pi=ae("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),$d=W(Pi,0),Pd=2,qd=3,ba={writeUnknownFields:!0};function eu(e){return e?Object.assign(Object.assign({},ba),e):ba}function qi(e,t,n){const o=new yi;return Lo(e)(o,eu(n),t),o.finish()}var es=new WeakMap;function Lo(e){let t=es.get(e);return t===void 0&&(t=tu(e)),t}function tu(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],r=[],a=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new Q(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<r.length;u++)r[u](i,s,l);const c=l.$unknown;if(c!==void 0&&s.writeUnknownFields)for(let u=0;u<c.length;u++){const{no:h,wireType:f,data:p}=c[u];i.tag(h,f).raw(p)}};es.set(e,a);for(const i of n)r.push(ts(i));return a}function ts(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return nu(e);case"list":return ru(e);case"map":return au(e)}}function nu(e){const t=ou(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a,i)=>{const s=i[o];s.case===n&&t(r,a,s.value)}}if(e.presence!=Pd){const o=e.presence==qd?`cannot encode ${e} to binary: required field not set`:void 0;return(r,a,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(r,a,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(r,a,i)=>{const s=i[n];s!==o&&t(r,a,s)}}switch(e.scalar){case g.BOOL:return(o,r,a)=>{const i=a[n];i!==!1&&t(o,r,i)};case g.STRING:return(o,r,a)=>{const i=a[n];i!==""&&t(o,r,i)};case g.BYTES:return(o,r,a)=>{const i=a[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,r,i)};case g.DOUBLE:case g.FLOAT:return(o,r,a)=>{const i=a[n];Object.is(i,0)||t(o,r,i)};default:return(o,r,a)=>{const i=a[n];i!=0&&t(o,r,i)}}}function ou(e){switch(e.fieldKind){case"message":{const{toMessage:t}=We(e),n=ns(e);return(o,r,a)=>{n(o,r,t(a))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?g.INT32:e.scalar,n=e.number,o=Gn(t),r=Vn(t,e.parent.typeName,e.name);return(a,i,s)=>{a.tag(n,o),r(a,s)}}}}function ru(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=We(e),r=ns(e);return(a,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)r(a,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?g.INT32:e.scalar,r=Vn(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,_.LengthDelimited).fork();for(let u=0;u<c.length;u++)r(i,c[u]);i.join()}};const a=Gn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,a),r(i,c[u])}}}}function au(e){const t=e.localName,n=e.number,o=iu(e);if(e.mapKind=="message"){const{toMessage:s}=We(e),l=Lo(e.message);return(c,u,h)=>{const f=h[t],p=Object.keys(f);for(let E=0;E<p.length;E++){const V=p[E];c.tag(n,_.LengthDelimited).fork(),o(c,V),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(f[V])),c.join(),c.join()}}}const r=e.mapKind=="enum"?g.INT32:e.scalar,a=Gn(r),i=Vn(r,e.parent.typeName,e.name);return(s,l,c)=>{const u=c[t],h=Object.keys(u);for(let f=0;f<h.length;f++){const p=h[f];s.tag(n,_.LengthDelimited).fork(),o(s,p),s.tag(2,a),i(s,u[p]),s.join()}}}function iu(e){const t=Gn(e.mapKey),n=Vn(e.mapKey,e.parent.typeName,e.name),o=su(e.mapKey);return(r,a)=>{r.tag(1,t),n(r,o(a))}}function su(e){switch(e){case g.STRING:return t=>t;case g.BOOL:return t=>t==="true"?!0:t==="false"?!1:t;case g.UINT64:case g.FIXED64:return t=>{try{return H.uParse(t)}catch{return t}};case g.INT64:case g.SFIXED64:case g.SINT64:return t=>{try{return H.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Vn(e,t,n){const o=lu(e);return(r,a)=>{try{o(r,a)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function lu(e){switch(e){case g.STRING:return(t,n)=>t.string(n);case g.BOOL:return(t,n)=>t.bool(n);case g.DOUBLE:return(t,n)=>t.double(n);case g.FLOAT:return(t,n)=>t.float(n);case g.INT32:return(t,n)=>t.int32(n);case g.INT64:return(t,n)=>t.int64(n);case g.UINT64:return(t,n)=>t.uint64(n);case g.FIXED64:return(t,n)=>t.fixed64(n);case g.BYTES:return(t,n)=>t.bytes(n);case g.FIXED32:return(t,n)=>t.fixed32(n);case g.SFIXED32:return(t,n)=>t.sfixed32(n);case g.SFIXED64:return(t,n)=>t.sfixed64(n);case g.SINT64:return(t,n)=>t.sint64(n);case g.UINT32:return(t,n)=>t.uint32(n);case g.SINT32:return(t,n)=>t.sint32(n)}}function cu(e,t,n,o){ts(o)(e,t,n[me])}function ns(e){const t=e.number,n=Lo(e.message);return e.delimitedEncoding?(o,r,a)=>{o.tag(t,_.StartGroup),n(o,r,a),o.tag(t,_.EndGroup)}:(o,r,a)=>{o.tag(t,_.LengthDelimited).fork(),n(o,r,a),o.join()}}function Gn(e){switch(e){case g.BYTES:case g.STRING:return _.LengthDelimited;case g.DOUBLE:case g.FIXED64:case g.SFIXED64:return _.Bit64;case g.FIXED32:case g.SFIXED32:case g.FLOAT:return _.Bit32;default:return _.Varint}}function du(e,t,n){let o=!1;return n||(n=de($d),o=!0),n.value=qi(e,t),n.typeUrl=hu(t.$typeName),o?n:void 0}function uu(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===os(e.typeUrl)}function mu(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(os(e.typeUrl));if(!(!n||!uu(e,n)))return Qt(n,e.value)}function hu(e){return`type.googleapis.com/${e}`}function os(e){const t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var xe=ae("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),gu=W(xe,0),rs=W(xe,1),bu=W(xe,2),lo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(lo||(lo={}));var as=ae("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function pu(e,t,n){is(t,e);const o=fu(e.$unknown,t),[r,a,i]=Nn(t),s=Oi(n);for(const l of o)jd(r,new Lt(l.data),a,l.wireType,s);return i()}function Au(e,t,n){var o;is(t,e);const r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[a,i]=Nn(t,n),s=new yi;cu(s,{writeUnknownFields:!0},a,i);const l=new Lt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);r.push({no:c,wireType:u,data:h})}e.$unknown=r}function fu(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function Nn(e,t){const 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:[]}),a=de(r,t!==void 0?{[n]:t}:void 0);return[Oc(r,a),o,()=>{const i=a[n];if(i===void 0){const s=e.message;return at(s)?ke(s.fields[0].scalar,s.fields[0].longAsString):de(s)}return i}]}function is(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var ss=Date.parse("0001-01-01T00:00:00Z"),ls=Date.parse("9999-12-31T23:59:59Z");var Zu=3,Ru=2,pa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function Eu(e){return e?Object.assign(Object.assign({},pa),e):pa}function cs(e,t,n){return bn(e)(Eu(n),t)}function Su(e,t,n){var o;const r=cs(e,t,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var co=new WeakMap;function bn(e){let t=co.get(e);return t===void 0&&(t=Vu(e)),t}function Vu(e){const t=e.typeName,n=Nu(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new Q(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return co.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),r=o[0],a=[],i=(s,l)=>{if(l.$typeName!==t&&r!==void 0)throw new Q(r,`cannot use ${r} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<a.length;u++)a[u](s,l,c);return s.registry&&Yu(c,s,s.registry,l,e),c};co.set(e,i);for(const s of o){const l=Wu(s);a.push(s.jsonName==="__proto__"||s.name==="__proto__"?Gu(l):l)}return i}function Gu(e){return(t,n,o)=>{const r=Object.create(null);e(t,n,r);for(const a of Object.keys(r))fe(o,a,r[a])}}function Nu(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Cu(n,t);case"google.protobuf.Timestamp":return(t,n)=>wu(n);case"google.protobuf.Duration":return(t,n)=>Bu(n);case"google.protobuf.FieldMask":return(t,n)=>Fu(n);case"google.protobuf.Struct":return(t,n)=>hs(n);case"google.protobuf.Value":return(t,n)=>jo(n);case"google.protobuf.ListValue":return(t,n)=>gs(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=ke(t.scalar,!1),r=Wn(t);return(a,i)=>{const s=i[n];return r(a,s===void 0?o:s)}}return}}function Wu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return vu(e);case"list":case"map":{const t=e.fieldKind=="list"?us(e):ms(e),n=e.name,o=e.jsonName,r=e.localName;return(a,i,s)=>{const l=t(a,i[r]);l!==void 0&&(s[a.useProtoFieldName?n:o]=l)}}}}function vu(e){const t=ds(e),n=e.name,o=e.jsonName,r=e.localName;if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=s[a];c.case===r&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=Ru){const a=e.presence==Zu?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[r];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,r))l[i.useProtoFieldName?n:o]=t(i,c);else if(a!==void 0)throw new Error(a)}}if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return(i,s,l)=>{const c=s[r];(c!==a||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case g.BOOL:return(a,i,s)=>{const l=i[r];(l!==!1||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case g.STRING:return(a,i,s)=>{const l=i[r];(l!==""||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case g.BYTES:return(a,i,s)=>{const l=i[r];(!(l instanceof Uint8Array)||l.byteLength>0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case g.DOUBLE:case g.FLOAT:return(a,i,s)=>{const l=i[r];(!Object.is(l,0)||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};default:return(a,i,s)=>{const l=i[r];(l!=0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))}}}function Iu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return ds(e);case"list":return us(e);case"map":return ms(e)}}function ds(e){switch(e.fieldKind){case"scalar":return Wn(e);case"enum":return zo(e);case"message":return Ko(e)}}function Ko(e){const{toMessage:t}=We(e),n=bn(e.message);return(o,r)=>n(o,t(r))}function us(e){const t=Xu(e);return(n,o)=>{const r=o;if(r.length==0&&!n.alwaysEmitImplicit)return;const a=[];for(let i=0;i<r.length;i++)a.push(t(n,r[i]));return a}}function Xu(e){switch(e.listKind){case"scalar":return Wn(e);case"enum":return zo(e);case"message":return Ko(e)}}function ms(e){const t=yu(e);return(n,o)=>{const r=o,a=Object.keys(r);if(a.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<a.length;s++){const l=a[s];fe(i,l,t(n,r[l]))}return i}}function yu(e){switch(e.mapKind){case"scalar":return Wn(e);case"enum":return zo(e);case"message":return Ko(e)}}function zo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Aa(t,o);return null}:(n,o)=>{var r,a;if(typeof o!="number")throw Aa(t,o);return n.enumAsInteger?o:(a=(r=t.value[o])===null||r===void 0?void 0:r.jsonName)!==null&&a!==void 0?a:o}}function Aa(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${te(t)}`)}function Wn(e){switch(e.scalar){case g.INT32:case g.SFIXED32:case g.SINT32:case g.FIXED32:case g.UINT32:return(t,n)=>{if(typeof n!="number")throw dt(e,n);return n};case g.FLOAT:case g.DOUBLE:return(t,n)=>{if(typeof n!="number")throw dt(e,n);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n};case g.STRING:return(t,n)=>{if(typeof n!="string")throw dt(e,n);return n};case g.BOOL:return(t,n)=>{if(typeof n!="boolean")throw dt(e,n);return n};case g.UINT64:case g.FIXED64:case g.INT64:case g.SFIXED64:case g.SINT64:return(t,n)=>{if(typeof n=="bigint"||typeof n=="string"||typeof n=="number"&&Number.isInteger(n))return n.toString();throw dt(e,n)};case g.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return ed(n);throw dt(e,n)}}}function dt(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Bi(e,t))===null||n===void 0?void 0:n.message}`)}function Yu(e,t,n,o,r){const a=o.$unknown;if(a===void 0)return;const i=new Set;for(let s=0;s<a.length;s++){const{no:l}=a[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(r,l);if(!c)continue;const[u,h]=Nn(c,pu(o,c)),f=u[me],p=Iu(h)(t,f[h.localName]);p!==void 0&&(e[c.jsonName]=p)}}}function Cu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,r;if(n&&(o=mu(e,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const a=Si(r)?{value:bn(r)(t,o)}:bn(r)(t,o);return a["@type"]=e.typeUrl,a}function Bu(e){const t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(n!==0){let r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&t==0&&(o="-"+o)}return o+"s"}function Fu(e){return e.paths.map(t=>{if(Ki(Rt(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return Rt(t)}).join(",")}function hs(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const r=n[o];fe(t,r,jo(e.fields[r]))}return t}function jo(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return hs(e.kind.value);case"listValue":return gs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function gs(e){return e.values.map(jo)}function wu(e){const t=Number(e.seconds)*1e3;if(t<ss||t>ls)throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){const o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var ku=2;function Uu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Ju(e,t,n){return bs(e,Du(t,e.typeName),n)}function bs(e,t,n){const o=de(e);return xu(e,o,t,n),o}function xu(e,t,n,o){try{Et(e)(t,n,Uu(o))}catch(r){throw xc(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}}var uo=new WeakMap;function Et(e){let t=uo.get(e);return t===void 0&&(t=Lu(e)),t}function Lu(e){const t=String(e),n=Ku(e);if(n!==void 0){const i=(s,l,c)=>{if(++c.depth>c.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${c.recursionLimit} reached`);n(s,l,c),c.depth--};return uo.set(e,i),i}const o=e.typeName,r=new Map,a=(i,s,l)=>{var c;if(++l.depth>l.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${l.recursionLimit} reached`);if(s==null||Array.isArray(s)||typeof s!="object")throw new Error(`cannot decode ${t} from JSON: ${te(s)}`);const u=new Map,h=new Set,f=Object.keys(s);for(let p=0;p<f.length;p++){const E=f[p],V=s[E],y=r.get(E);if(y!==void 0){const J=y.field;if(h.has(J))throw new Q(J,"set multiple times");if(h.add(J),y.oneofScalarNullSkip&&V===null)continue;if(y.oneof){const d=u.get(y.oneof);if(d!==void 0)throw new Q(y.oneof,`oneof set multiple times by ${d.name} and ${J.name}`);u.set(y.oneof,J)}y.read(i,V,l)}else{const J=E.startsWith("[")&&E.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(E.substring(1,E.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,A]=Nn(J);fa(m)(d[me],V,l),Au(i,J,A())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${E}" is unknown`)}}l.depth--};uo.set(e,a);for(const i of e.fields){const s={read:fa(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};r.set(i.name,s).set(i.jsonName,s)}return a}function Ku(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>$u(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Pu(t,n);case"google.protobuf.Duration":return(t,n)=>qu(t,n);case"google.protobuf.FieldMask":return(t,n)=>em(t,n);case"google.protobuf.Struct":return(t,n,o)=>Zs(t,n,o);case"google.protobuf.Value":return(t,n,o)=>Oo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>Rs(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,r=t.longAsString,a=As(t);return(i,s)=>{s===null?i[n]=ke(o,r):i[n]=a(s)}}return}}function fa(e){switch(e.fieldKind){case"scalar":return zu(e);case"enum":return ju(e);case"message":return Tu(e);case"list":return Hu(e);case"map":return Mu(e)}}function zu(e){const t=As(e),n=e.localName;if(e.oneof){const r=e.oneof.localName;return(a,i)=>{a[r]={case:n,value:t(i)}}}const o=ps(e);return(r,a)=>{a===null?o(r):r[n]=t(a)}}function ps(e){const t=e.localName;if(e.presence!=ku)return r=>{delete r[t]};if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return a=>{a[t]=r}}const n=e.scalar,o=e.longAsString;return r=>{r[t]=ke(n,o)}}function ju(e){const t=To(e.enum),n=Ho(e.enum),o=e.localName,r=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&r){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===St)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const a=ps(e);return(i,s,l)=>{if(s===null&&r){a(i);return}const c=t(s,l.ignoreUnknownFields);if(c===St)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function Tu(e){const t=e.localName,{toMessage:n,toLocal:o}=We(e),r=Et(e.message),a=e.message.typeName!="google.protobuf.Value";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{const u=s[i];if(l===null&&a){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);r(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&a){delete i[t];return}const c=n(i[t]);r(c,s,l),i[t]=o(c)}}function Hu(e){const t=e.localName,n=Qu(e);return(o,r,a)=>{if(r===null)return;if(!Array.isArray(r))throw new Q(e,"expected Array, got "+te(r));const i=o[t];for(let s=0;s<r.length;s++){const l=n(r[s],a,i.length);l!==St&&i.push(l)}}}function Qu(e){switch(e.listKind){case"scalar":{const t=Qo(e),n=Qe(e.scalar),o=Mo(e);return(r,a,i)=>{if(r===null)throw new Q(e,"list item must not be null");const s=t(r),l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return o(s)}}case"enum":{const t=To(e.enum),n=Ho(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(r,a,i)=>{if(r===null&&o)throw new Q(e,"list item must not be null");const s=t(r,a.ignoreUnknownFields);if(s===St)return s;const l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=We(e),o=Et(e.message),r=e.message.typeName!="google.protobuf.Value";return(a,i)=>{if(a===null&&r)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,a,i),n(s)}}}}function Mu(e){const t=e.localName,n=e.mapKey,o=Ou(n),r=Qe(n);let a,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":a=Qo(e),i=Qe(e.scalar),s=Mo(e);break;case"enum":{const c=To(e.enum);a=(u,h)=>c(u,h.ignoreUnknownFields),i=Ho(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=We(e),h=Et(e.message);l=e.message.typeName!="google.protobuf.Value",a=(f,p)=>{const E=c(void 0);return h(E,f,p),u(E)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new Q(e,"expected object, got "+te(u));const f=c[t],p=new Set,E=Object.keys(u);for(let V=0;V<E.length;V++){const y=E[V],J=u[y],d=o(y);if(p.has(d))throw new Q(e,`duplicate map key "${y}"`);if(p.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=a(J,h);if(m===St)continue;const A=r(d);if(A!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,A)}`);if(i!==void 0){const b=i(m);if(b!==!0)throw new Q(e,`map entry ${te(d)}: ${pe(e,m,b)}`)}fe(f,d,s(m))}}}var St=Symbol();function To(e){const t=e.values[0].number,n=new Map;for(const o of e.values)n.set(o.jsonName,o.number);for(const o of e.values)n.set(o.name,o.number);return(o,r)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const a=n.get(o);if(a!==void 0)return a;if(r)return St;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ho(e){if(e.open)return Qe(g.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function As(e){const t=Qo(e),n=Qe(e.scalar),o=Mo(e);return r=>{const a=t(r),i=n(a);if(i!==!0)throw new Q(e,pe(e,a,i));return o(a)}}function Qo(e){switch(e.scalar){case g.DOUBLE:case g.FLOAT:return t=>{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 Q(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Q(e,"unexpected infinite number");return t}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;const n=Number(t);return Number.isFinite(n)?n:t}return t};case g.INT32:case g.FIXED32:case g.SFIXED32:case g.SINT32:case g.UINT32:return fs;case g.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ko(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Mo(e){const t=e.fieldKind!=="map"&&e.longAsString;switch(e.scalar){case g.INT64:case g.SFIXED64:case g.SINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.parse(n):n;case g.FIXED64:case g.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.uParse(n):n;default:return n=>n}}function Ou(e){switch(e){case g.BOOL:return t=>{switch(t){case"true":return!0;case"false":return!1}return t};case g.INT32:case g.FIXED32:case g.UINT32:case g.SFIXED32:case g.SINT32:return fs;case g.INT64:case g.SINT64:case g.SFIXED64:case g.UINT64:case g.FIXED64:return t=>/^-?0+$/.test(t)?"0":t.replace(/^(-?)0+(?=\d)/,"$1");default:return t=>t}}function fs(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;const t=Number(e);return Number.isNaN(t)?e:t}return e}function Du(e,t){let n;try{n=JSON.parse(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:o})}return _u(e,t),n}function _u(e,t){const n=[];let o=!1,r=0;for(;r<e.length;)switch(e[r]){case"{":n.push(new Set),o=!0,r++;break;case"[":n.push(null),o=!1,r++;break;case"}":case"]":n.pop(),o=!1,r++;break;case",":o=n[n.length-1]!=null,r++;break;case":":o=!1,r++;break;case'"':{const a=r++;let i=!1;for(;r<e.length;){if(e[r]=="\\"){i=!0,r+=2;continue}if(e[r]=='"')break;r++}const s=r++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(a,s+1)):e.substring(a+1,s);if(l.has(c))throw new Error(`cannot decode message ${t} from JSON: duplicate object key "${c}"`);l.add(c)}o=!1;break}default:r++;break}}function $u(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 ${te(t)}`);if(Object.keys(t).length==0)return;const r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const a=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);const i=(o=n.registry)===null||o===void 0?void 0:o.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);const s=de(i);if(Si(i)&&Object.prototype.hasOwnProperty.call(t,"value"))Et(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);Et(i)(s,l,n)}du(i,s,e)}function Pu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const 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`);const 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<ss||o>ls)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=H.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function qu(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);if(e.seconds=H.parse(o),typeof n[2]!="string")return;const r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function em(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return Ki(n)}))}function Zs(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);const o=Object.keys(t);for(let r=0;r<o.length;r++){const a=o[r],i=de(rs);Oo(i,t[a],n),fe(e.fields,a,i)}}function Oo(e,t,n){if(++n.depth>n.recursionLimit)throw new Error(`cannot decode ${e.$typeName} from JSON: maximum recursion depth of ${n.recursionLimit} reached`);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:lo.NULL_VALUE};else if(Array.isArray(t)){const o=de(bu);Rs(o,t,n),e.kind={case:"listValue",value:o}}else{const o=de(gu);Zs(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`)}return n.depth--,e}function Rs(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);for(let o=0;o<t.length;o++){const r=de(rs);Oo(r,t[o],n),e.values.push(r)}}function Za(e){const t=S[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var B=class ht extends Error{constructor(t,n=S.Unknown,o,r,a){super(tm(t,n)),this.name="ConnectError",this.isWireError=!1,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(o??{}),this.details=r??[],this.cause=a}static from(t,n=S.Unknown){return t instanceof ht?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new ht(t.message,S.Canceled):new ht(t.message,n,void 0,void 0,t):new ht(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===ht.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){const n=t.kind==="message"?{getMessage:r=>r===t.typeName?t:void 0}:t,o=[];for(const r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(de(r.desc,r.value));continue}const a=n.getMessage(r.type);if(a)try{o.push(Qt(a,r.value))}catch{}}return o}};function tm(e,t){return e.length?`[${Za(t)}] ${e}`:`[${Za(t)}]`}function nm(e,t,n){try{const o=ko(e);return t?Qt(t,o,n):o}catch(o){throw B.from(o,S.DataLoss)}}function om(e,t){const n={};for(const o of e.methods){const r=t(o);r!=null&&(n[o.localName]=r)}return n}var dn=4294967295,Tn=dn,rm=1024;function am(e,t,n){if(t!=null||(t=Tn),e!=null||(e=dn),n!=null||(n=rm),t<1||t>Tn)throw new B(`writeMaxBytes ${t} must be >= 1 and <= ${Tn}`,S.Internal);if(e<1||e>dn)throw new B(`readMaxBytes ${e} must be >= 1 and <= ${dn}`,S.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function im(e,t){if(t>e)throw new B(`message size ${t} is larger than configured writeMaxBytes ${e}`,S.ResourceExhausted)}function Es(e,t,n=!1){if(t>e){let o=`message size is larger than configured readMaxBytes ${e}`;throw n&&(o=`message size ${t} is larger than configured readMaxBytes ${e}`),new B(o,S.ResourceExhausted)}}function sm(e){return new lm(e)}var lm=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,t)=>e+t.byteLength,0)}decode(e){this.buf.push(e);const t=[];for(;;){let n=this.pop();if(!n)break;t.push(n)}return t}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){const e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;const e=this.headerView.getUint8(0),t=this.headerView.getUint32(1);return Es(this.readMaxBytes,t,!0),{flags:e,data:new Uint8Array(t)}}cons(e){const t=e.byteLength;if(this.byteLength<t)return!1;let n=0;for(;n<t;){const o=this.buf.shift();o.byteLength>t-n?(e.set(o.subarray(0,t-n),n),this.buf.unshift(o.subarray(t-n)),n+=t-n):(e.set(o,n),n+=o.byteLength)}return!0}};async function cm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1)throw new B("invalid envelope, already compressed",S.Internal);return t&&r.byteLength>=n&&(r=await t.compress(r),o=o|1),{data:r,flags:o}}async function dm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1){if(!t)throw new B("received compressed envelope, but do not know how to decompress",S.Internal);r=await t.decompress(r,n),o=o^1}return{data:r,flags:o}}function um(e,t){const n=new Uint8Array(t.length+5);n.set(t,5);const o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,e),o.setUint32(1,t.length),n}var Ue=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},K=function(e){return this instanceof K?(this.v=e,this):new K(e)},Ge=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(E){return Promise.resolve(E).then(p,h)}}function s(p,E){o[p]&&(r[p]=function(V){return new Promise(function(y,J){a.push([p,V,y,J])>1||l(p,V)})},E&&(r[p]=E(r[p])))}function l(p,E){try{c(o[p](E))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof K?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,E){p(E),a.shift(),a.length&&l(a[0][0],a[0][1])}},mm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:K(e[r](i)),done:!1}:a?a(i):i}:a}};function hm(e,...t){const[n,o,r]=gm(t);let a=e,i;return r?.propagateDownStreamError===!0&&(a=i=Ss(a)),a=un(a,...n,{propagateDownStreamError:!1}),o(a).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function gm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function un(e,...t){return Ge(this,arguments,function*(){var o;const[r,a]=bm(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};a?.propagateDownStreamError===!0&&(l=i=Ss(l));for(const u of r)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield K(c.next());if(u.done===!0)break;if(!i){yield yield K(u.value);continue}try{yield yield K(u.value)}catch(h){throw yield K(i.abort(h)),h}}}finally{a?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function bm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ra(e,t,n){return t===void 0||n===void 0?function(o){return Ge(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Ue(o),u;u=yield K(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;yield yield K({flags:0,data:e.serialize(h)})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield K(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ge(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Ue(o),u;u=yield K(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;let f,p=0;h.end?(p=p|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield K({flags:p,data:f})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield K(i.call(c)))}finally{if(a)throw a.error}}})}}function Ea(e,t,n){return n&&t!==void 0?function(o){return Ge(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Ue(o),u;u=yield K(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;(h&t)===t?yield yield K({value:n.parse(f),end:!0}):yield yield K({value:e.parse(f),end:!1})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield K(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ge(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=Ue(o),u;u=yield K(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;if(t!==void 0&&(h&t)===t){if(n===null)throw new B("unexpected end flag",S.InvalidArgument);continue}yield yield K(e.parse(f))}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield K(i.call(c)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ge(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=Ue(n),c;c=yield K(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield K(yield K(cm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield K(a.call(l)))}finally{if(r)throw r.error}}})}}function Va(e,t){return function(n){return Ge(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=Ue(n),c;c=yield K(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield K(yield K(dm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield K(a.call(l)))}finally{if(r)throw r.error}}})}}function Ga(){return function(e){return Ge(this,arguments,function*(){var t,n,o,r;try{for(var a=!0,i=Ue(e),s;s=yield K(i.next()),t=s.done,!t;a=!0){r=s.value,a=!1;const{flags:l,data:c}=r;yield yield K(um(l,c))}}catch(l){n={error:l}}finally{try{!a&&!t&&(o=i.return)&&(yield K(o.call(i)))}finally{if(n)throw n.error}}})}}function Na(e){return function(t){return Ge(this,arguments,function*(){var n,o,r,a;const i=sm(e);try{for(var s=!0,l=Ue(t),c;c=yield K(l.next()),n=c.done,!n;s=!0){a=c.value,s=!1;const u=a;for(const h of i.decode(u))yield yield K(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(r=l.return)&&(yield K(r.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new B("protocol error: incomplete envelope",S.InvalidArgument)})}}function Ss(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,r,a={next(){return r=n.next().finally(()=>{r=void 0}),r},throw(s){return n.throw(s)}};t.return!==void 0&&(a=Object.assign(Object.assign({},a),{return(s){return n.return(s)}}));let i=!1;return{abort(s){if(o)return o.state;const l=()=>n.throw(s).then(c=>c.done===!0?"completed":"caught",()=>"rethrown");return r?(o={reason:s,state:r.then(l,l)},o.state):(o={reason:s,state:l()},o.state)},[Symbol.asyncIterator](){if(i)throw new Error("AsyncIterable cannot be re-used");return i=!0,a}}}function Vs(e){return Ge(this,arguments,function*(){yield K(yield*mm(Ue(e)))})}var Gs=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Vt=function(e){return this instanceof Vt?(this.v=e,this):new Vt(e)},pm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:Vt(e[r](i)),done:!1}:a?a(i):i}:a}},Am=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(E){return Promise.resolve(E).then(p,h)}}function s(p,E){o[p]&&(r[p]=function(V){return new Promise(function(y,J){a.push([p,V,y,J])>1||l(p,V)})},E&&(r[p]=E(r[p])))}function l(p,E){try{c(o[p](E))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof Vt?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,E){p(E),a.shift(),a.length&&l(a[0][0],a[0][1])}};function Ie(e,t){return om(e,n=>{switch(n.methodKind){case"unary":return fm(t,n);case"server_streaming":return Zm(t,n);case"client_streaming":return Rm(t,n);case"bidi_streaming":return Em(t,n);default:return null}})}function fm(e,t){return async(n,o)=>{var r,a;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,i.header),(a=o?.onTrailer)===null||a===void 0||a.call(o,i.trailer),i.message}}function Zm(e,t){return(n,o)=>Ns(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,Vs([n]),o?.contextValues),o)}function Rm(e,t){return async(n,o)=>{var r,a,i,s,l,c;const u=await e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,u.header);let h,f=0;try{for(var p=!0,E=Gs(u.message),V;V=await E.next(),r=V.done,!r;p=!0)s=V.value,p=!1,h=s,f++}catch(y){a={error:y}}finally{try{!p&&!r&&(i=E.return)&&await i.call(E)}finally{if(a)throw a.error}}if(!h)throw new B("protocol error: missing response message",S.Unimplemented);if(f>1)throw new B("protocol error: received extra messages for client streaming method",S.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function Em(e,t){return(n,o)=>Ns(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function Ns(e,t){const n=(function(){return Am(this,arguments,function*(){var o,r;const a=yield Vt(e);(o=t?.onHeader)===null||o===void 0||o.call(t,a.header),yield Vt(yield*pm(Gs(a.message))),(r=t?.onTrailer)===null||r===void 0||r.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Sm(...e){const t=new AbortController,n=e.filter(r=>r!==void 0).concat(t.signal);for(const r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(jt(this));for(const r of n)r.removeEventListener("abort",o)}return t}function Vm(e){const t=new AbortController,n=()=>{t.abort(new B("the operation timed out",S.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function jt(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;const t=new Error("This operation was aborted");return t.name="AbortError",t}function Wa(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function Gm(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
52
+ `);for(const o of n){if(o==="")continue;const r=o.indexOf(":");if(r>0){const a=o.substring(0,r).trim(),i=o.substring(r+1).trim();t.append(a,i)}}return t}function Nm(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
53
+ `)}),new TextEncoder().encode(t.join(""))}function va(){return{serialize:Nm,parse:Gm}}var Wm="Content-Type",Ws="Grpc-Encoding",vm="Grpc-Accept-Encoding",Im="Grpc-Timeout",vs="Grpc-Status";var Xm="Grpc-Status-Details-Bin",ym="User-Agent",Ym="X-User-Agent",Cm="X-Grpc-Web",Bm="application/grpc-web+proto",Fm="application/grpc-web+json";function Xe(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var wm=ae("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[Pi]),km=W(wm,0);function Is(e){var t;const n=e.get(Xm);if(n!=null){const r=nm(n,km);if(r.code==0)return;const a=new B(r.message,r.code,e);return a.details=r.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),a.isWireError=!0,a}const o=e.get(vs);if(o!=null){if(o==="0")return;const r=parseInt(o,10);let a;return r in S?a=new B(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),r,e):a=new B(`invalid grpc-status: ${o}`,S.Internal,e),a.isWireError=!0,a}}function Ia(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function Xs(e,t){return de(e,t)}function Um(e,t){function n(o){return o.done===!0?o:{done:o.done,value:Xs(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=a=>o.throw(a).then(n)),o.return!==void 0&&(r.return=a=>o.return(a).then(n)),r}}}function ys(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function Jm(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Xa(e,t,n,o){const r=qt(ya(e.input,t),o),a=qt(Ya(e.input,n),o),i=qt(ya(e.output,t),o),s=qt(Ya(e.output,n),o);return{getI(l){return l?r:a},getO(l){return l?i:s}}}function qt(e,t){return{serialize(n){const o=e.serialize(n);return im(t.writeMaxBytes,o.byteLength),o},parse(n){return Es(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function ya(e,t){return{parse(n){try{return Qt(e,n,t)}catch(o){throw new B(`parse binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}},serialize(n){try{return qi(e,n,t)}catch(o){throw new B(`serialize binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}}}}function Ya(e,t){var n,o;const r=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=Jm(t);return{parse(s){try{return Ju(e,a.decode(s),i)}catch(l){throw B.from(l,S.InvalidArgument)}},serialize(s){try{const l=Su(e,s,i);return r.encode(l)}catch(l){throw B.from(l,S.Internal)}}}}function xm(e){const t=ys(e.next,e.interceptors),[n,o,r]=Ys(e);return t(Object.assign(Object.assign({},e.req),{message:Xs(e.req.method.input,e.req.message),signal:n})).then(a=>(r(),a),o)}function Lm(e){const t=ys(e.next,e.interceptors),[n,o,r]=Ys(e),a=Object.assign(Object.assign({},e.req),{message:Um(e.req.method.input,e.req.message),signal:n});let i=!1;return n.addEventListener("abort",function(){var s,l;const c=e.req.message[Symbol.asyncIterator]();i||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),t(a).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){const l=s.message[Symbol.asyncIterator]();return{next(){return!i&&n.aborted?o(jt(n)):l.next().then(c=>(c.done==!0&&(i=!0,r()),c),o)}}}}}),o)}function Ys(e){const{signal:t,cleanup:n}=Vm(e.timeoutMs),o=Sm(e.signal,t);return[o.signal,function(a){const i=o.signal.aborted?B.from(jt(o.signal),S.Canceled):B.from(a);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var Km=ae("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[xe]),zm=W(Km,0),$={REFUSED:1,USAGE:2,SAGA_RESOURCE_CONFLICT:4,HTTP_BAD_REQUEST:20,HTTP_UNAUTHORIZED:21,HTTP_FORBIDDEN:23,HTTP_NOT_FOUND:24,HTTP_CONFLICT:29,OPERATION_FAILED:30,WAIT_TIMEOUT:31,LOCK_LOST:32,QUOTA_UNKNOWN:34,HTTP_CLIENT_ERROR:40,HTTP_SERVER_ERROR:50,TRANSPORT:60,UNKNOWN:70},N=class extends Error{constructor(e){super(e),this.name="CliUsageError"}},U=class extends Error{constructor(e){super(e),this.name="CliOperationFailedError"}},jm=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},T=class extends Error{reasons;details;reported;constructor(e,t={}){super(e.join("; ")),this.name="CliSagaRefusalError",this.reasons=e,this.details=t.details??{},this.reported=t.reported??!1}},mo=class extends Error{constructor(e){super(e),this.name="CliQuotaUnknownError"}},Do=class extends Error{constructor(e){super(e),this.name="CliWaitTimeoutError"}},tt=class extends Error{errorCode;reported;constructor(e,t={}){super(e),this.name="CliLockLostError",this.errorCode=t.errorCode,this.reported=t.reported??!1}},ye=class extends Error{status;details;constructor(e,t,n){super(t),this.name="CliHttpError",this.status=e,this.details=n}};function _o(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function Gt(e,t){const n=_o(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function $o(e){return e.includes("fetch failed")||e.includes("ECONNREFUSED")||e.includes("ENOTFOUND")||e.includes("ECONNRESET")||e.includes("ETIMEDOUT")||e.includes("EHOSTUNREACH")||e.includes("EAI_AGAIN")||e.includes("Failed to parse URL")||e.includes("Invalid URL")}function Ca(e){switch(e){case 400:return $.HTTP_BAD_REQUEST;case 401:return $.HTTP_UNAUTHORIZED;case 403:return $.HTTP_FORBIDDEN;case 404:return $.HTTP_NOT_FOUND;case 409:return $.HTTP_CONFLICT;default:return e&&e>=400&&e<500?$.HTTP_CLIENT_ERROR:e&&e>=500?$.HTTP_SERVER_ERROR:$.UNKNOWN}}var Tm={[S.InvalidArgument]:400,[S.OutOfRange]:400,[S.Unauthenticated]:401,[S.PermissionDenied]:403,[S.NotFound]:404,[S.AlreadyExists]:409,[S.FailedPrecondition]:409,[S.Aborted]:409,[S.Unimplemented]:501,[S.Internal]:500,[S.Unknown]:500,[S.DataLoss]:500,[S.Unavailable]:503,[S.DeadlineExceeded]:504},Hm=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function Qm(e){return e.code===S.ResourceExhausted?Hm.test(e.rawMessage)?413:429:Tm[e.code]??500}function Mm(e){return e.code!==S.Unavailable&&e.code!==S.Unknown&&e.code!==S.Internal&&e.code!==S.Aborted?!1:e.cause instanceof Error||$o(e.rawMessage)}function vn(e){if(!(e instanceof B)||e.code===S.Canceled||Mm(e))return;const[t]=e.findDetails(zm),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},r=e.rawMessage.trim()||`The backend rejected the request (${S[e.code]}).`;return{status:Qm(e),message:r,code:n,body:{error:r,...n?{code:n}:{},...o}}}function Cs(e){if(!(e instanceof B)||e.code!==S.FailedPrecondition)return;const t=vn(e);return new tt(t?.message??e.rawMessage,{errorCode:t?.code})}function Bs(e){return e instanceof B?e.code===S.Unavailable||e.code===S.DeadlineExceeded||e.code!==S.Canceled&&vn(e)===void 0:e instanceof Error&&$o(e.message)}function Ba(e,t){const n=t.baseUrl??"the configured backend";return{exitCode:$.TRANSPORT,message:/Failed to parse URL|Invalid URL/i.test(e)?`Invalid HagiCode backend base URL: ${n}`:`Cannot reach HagiCode backend at ${n}. Check that the backend is running and the base URL is correct.`}}function Fs(e,t={}){if(e instanceof N)return{exitCode:$.USAGE,message:e.message};if(e instanceof U)return{exitCode:$.OPERATION_FAILED,message:e.message};if(e instanceof jm)return{exitCode:$.SAGA_RESOURCE_CONFLICT,message:e.message};if(e instanceof T)return{exitCode:$.REFUSED,message:[e.reasons.length>1?"Refused:":"Refused.",...e.reasons.map(n=>` - ${n}`)].join(`
54
+ `),details:{errors:e.reasons}};if(e instanceof mo)return{exitCode:$.QUOTA_UNKNOWN,message:e.message};if(e instanceof Do)return{exitCode:$.WAIT_TIMEOUT,message:e.message};if(e instanceof tt)return{exitCode:$.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof ye)return{exitCode:Ca(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof B){const n=vn(e);if(n){const o=Dm(n.body);return{exitCode:Ca(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
55
+ `):n.message,errorCode:Gt(n.body,"errorCode")??n.code,correlationId:Gt(n.body,"correlationId"),details:n.body}}return e.code===S.Canceled?{exitCode:$.UNKNOWN,message:"The request was cancelled."}:Ba(e.rawMessage,t)}return e instanceof Error?$o(e.message)?Ba(e.message,t):{exitCode:$.UNKNOWN,message:e.message}:{exitCode:$.UNKNOWN,message:String(e)}}function Om(e){const t=_o(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=Gt(n,"field"),r=Gt(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function Dm(e){const t=_o(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=Gt(n,"field"),r=Gt(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function ws(e,t={}){if(t.json)return`${JSON.stringify({error:{message:e.message,status:e.status,exitCode:e.exitCode,errorCode:e.errorCode,correlationId:e.correlationId,details:e.details}},null,2)}
56
+ `;const n=[e.status?`status=${e.status}`:void 0,e.errorCode?`errorCode=${e.errorCode}`:void 0,e.correlationId?`correlationId=${e.correlationId}`:void 0].filter(Boolean),o=n.length>0?` (${n.join(", ")})`:"";return[`${e.message}${o}`,...Om(e.details)].join(`
57
+ `)+`
58
+ `}var _m="--base-url",$m="HAGI_API_BASE_URL";function Se(e){const t=e?.trim();return t||void 0}function Po(e=process.env){return(0,R.join)(Se(e.XDG_CONFIG_HOME)??(0,R.join)((0,oc.homedir)(),".config"),"hagi","config.json")}function ks(e){const t=Po(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${r instanceof Error?r.message:String(r)}`)}let o;try{o=JSON.parse(n)}catch{throw new N(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function Pm(e=process.env){const t=ks(e)?.baseUrl;return typeof t=="string"?Se(t):void 0}function qm(e=process.env){const t=ks(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Po(e)} has a "steer" value that is not true or false.`)}function eh(e={},t=process.env){const n=Se(e.baseUrl)??Se(t.HAGI_API_BASE_URL)??Pm(t);if(!n)throw new N(`No backend base URL is configured. Set ${_m} <url>, the ${$m} environment variable, or "baseUrl" in ${Po(t)}.`);return{baseUrl:n,token:Se(e.token)??Se(t.HAGI_API_TOKEN),lang:Se(e.lang)??Se(t.HAGI_API_LANG)}}var Tt;function th(e={},t=process.env){return Tt=eh(e,t),Tt}function Us(){if(!Tt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return Tt}function nh(){return Se(Tt?.baseUrl)}var le=ae("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[ve,as]),oh=W(le,1),rh=W(le,5),ah=W(le,15),ih=W(le,17),sh=W(le,19),lh=W(le,21),ch=W(le,23),dh=W(le,25),uh=W(le,41),mh=W(le,50),hh=W(le,51),gh=W(le,69),bh=W(le,71),ph=W(le,85),Ah=Xe(le,0),Le=ae("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[ve,le]),fh=W(Le,1),Zh=W(Le,3),Rh=W(Le,5),Eh=W(Le,7),Sh=W(Le,9),Vh=W(Le,11),Gh=W(Le,14),Nh=W(Le,15),Wh=Xe(Le,0),Oe=ae("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAki7gIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBEjYKKXNraXBfY29uZmlybWF0aW9uX2R1cmluZ191bmF0dGVuZGVkX2hvdXJzGAUgASgISASIAQFCCQoHX3dpbmRvd0IYChZfbWluX3JlbWFpbmluZ19wZXJjZW50QhsKGV9tYXhfbWludXRlc19iZWZvcmVfcmVzZXRCHgocX3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbkIsCipfc2tpcF9jb25maXJtYXRpb25fZHVyaW5nX3VuYXR0ZW5kZWRfaG91cnMiOQoXU2NoZWR1bGVkUGxhbldhcm5pbmdEdG8SDQoFZmllbGQYASABKAkSDwoHbWVzc2FnZRgCIAEoCSL3AgoYU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEgwKBG1vZGUYASABKAkSKgoGcnVuX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCgl0aW1lX3pvbmUYAyABKAlIAIgBARIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBEj0KBnJlcGVhdBgHIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVwZWF0RHRvEkYKC3F1b3RhX3Jlc2V0GAggASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvQgwKCl90aW1lX3pvbmVCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQg4KDF90aW1lX29mX2RheSKSBwoVU2NoZWR1bGVkUGxhblJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBHR5cGUYAiABKAkSDQoFc2NvcGUYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIhChRkZWZpbml0aW9uX2ZpbGVfcGF0aBgFIAEoCUgAiAEBEgwKBG5hbWUYBiABKAkSDwoHZW5hYmxlZBgHIAEoCBIRCgRpY29uGAggASgJSAGIAQESEgoFY29sb3IYCSABKAlIAogBARIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJBCghzY2hlZHVsZRgMIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2NoZWR1bGVEdG8SRAoKYWdlbnRfcG9vbBgNIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDQoFc3RhdGUYDyABKAkSLwoLbmV4dF9ydW5fYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkkKCmV4Y2VwdGlvbnMYESADKAsyNS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkV4Y2VwdGlvblJlc3BvbnNlEhwKD2lucHV0X2ZpbGVfcGF0aBgSIAEoCUgDiAEBEjsKF2xhc3RfdHJpZ2dlcmVkX3Jlc2V0X2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJZChVwZW5kaW5nX3F1b3RhX3RyaWdnZXIYFCABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SQAoId2FybmluZ3MYFSADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbldhcm5pbmdEdG9CFwoVX2RlZmluaXRpb25fZmlsZV9wYXRoQgcKBV9pY29uQggKBl9jb2xvckISChBfaW5wdXRfZmlsZV9wYXRoIokBCiNTY2hlZHVsZWRQbGFuUGVuZGluZ1F1b3RhVHJpZ2dlckR0bxItCglyYWlzZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKD3dpbmRvd19yZXNldF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiRwohU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJItMBCh9TY2hlZHVsZWRQbGFuUmVjdXJyZW5jZVJlc3BvbnNlEgwKBG1vZGUYASABKAkSEQoEcnVsZRgCIAEoCUgAiAEBEhAKCHdlZWtkYXlzGAMgAygJEhcKCnN0YXJ0X2RhdGUYBCABKAlIAYgBARIVCghlbmRfZGF0ZRgFIAEoCUgCiAEBEhgKC3RpbWVfb2ZfZGF5GAYgASgJSAOIAQFCBwoFX3J1bGVCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQg4KDF90aW1lX29mX2RheSLqAwofU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRIPCgdwbGFuX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSMQoNb2NjdXJyZW5jZV9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEbmFtZRgEIAEoCRIMCgR0eXBlGAUgASgJEg8KB2VuYWJsZWQYBiABKAgSEQoEaWNvbhgHIAEoCUgAiAEBEhIKBWNvbG9yGAggASgJSAGIAQESDQoFc3RhdGUYCSABKAkSHwoSc2NoZWR1bGVfdGltZV96b25lGAogASgJSAKIAQESSgoKcmVjdXJyZW5jZRgLIAEoCzI2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVjdXJyZW5jZVJlc3BvbnNlEi8KC25leHRfcnVuX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtvcmlnaW5hbF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLaXNfbW9kaWZpZWQYDiABKAhCBwoFX2ljb25CCAoGX2NvbG9yQhUKE19zY2hlZHVsZV90aW1lX3pvbmUikwIKI1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUGFnZVJlc3BvbnNlEi8KC3JhbmdlX3N0YXJ0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglyYW5nZV9lbmQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKEWRpc3BsYXlfdGltZV96b25lGAMgASgJEkcKB2VudHJpZXMYBCADKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRIYCgtuZXh0X2N1cnNvchgFIAEoCUgAiAEBQg4KDF9uZXh0X2N1cnNvciLRAgoYU2NoZWR1bGVkUGxhblNhdmVSZXF1ZXN0EgwKBHR5cGUYASABKAkSEgoFc2NvcGUYAiABKAlIAIgBARIMCgRuYW1lGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSEQoEaWNvbhgFIAEoCUgBiAEBEhIKBWNvbG9yGAYgASgJSAKIAQESQQoIc2NoZWR1bGUYByABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYCCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQggKBl9zY29wZUIHCgVfaWNvbkIICgZfY29sb3IijgIKIlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlRWRpdFJlcXVlc3QSMQoNb2NjdXJyZW5jZV9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKgoGcnVuX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAMgASgJSACIAQESRAoKYWdlbnRfcG9vbBgEIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUizgMKEkNoYXRIZXJvU3VtbWFyeUR0bxIPCgdoZXJvX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIRCgRpY29uGAQgASgJSAGIAQESFQoNZXhlY3V0b3JfdHlwZRgFIAEoCRIZCgxhZ2VudF9jbGlfaWQYBiABKAlIAogBARIbCg5hZ2VudF9jbGlfbmFtZRgHIAEoCUgDiAEBEhsKDmFnZW50X2NsaV9pY29uGAggASgJSASIAQESFQoIbW9kZWxfaWQYCSABKAlIBYgBARIXCgptb2RlbF9uYW1lGAogASgJSAaIAQESFwoKbW9kZWxfaWNvbhgLIAEoCUgHiAEBEiIKFXNlY29uZGFyeV9tb2RlbF9sYWJlbBgMIAEoCUgIiAEBQg4KDF9kZXNjcmlwdGlvbkIHCgVfaWNvbkIPCg1fYWdlbnRfY2xpX2lkQhEKD19hZ2VudF9jbGlfbmFtZUIRCg9fYWdlbnRfY2xpX2ljb25CCwoJX21vZGVsX2lkQg0KC19tb2RlbF9uYW1lQg0KC19tb2RlbF9pY29uQhgKFl9zZWNvbmRhcnlfbW9kZWxfbGFiZWwiOAoUT3BlblNwZWNUYXNrUHJvZ3Jlc3MSEQoJY29tcGxldGVkGAEgASgFEg0KBXRvdGFsGAIgASgFIoACChBPcGVuU3BlY0ZpbGVJbmZvEhEKCWZpbGVfbmFtZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEg4KBmV4aXN0cxgDIAEoCBIRCglmaWxlX3R5cGUYBCABKAkSEwoLaXNfcmVxdWlyZWQYBSABKAgSEwoLaXNfYXJjaGl2ZWQYBiABKAgSMQoNYXJjaGl2ZWRfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQgoNdGFza19wcm9ncmVzcxgIIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJeChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNgoFZmlsZXMYAiADKAsyJy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNGaWxlSW5mbyLMAQoWUXVldWVNZXNzYWdlU3VtbWFyeUR0bxINCgVpbmRleBgBIAEoBRIMCgRtb2RlGAIgASgFEi0KCXF1ZXVlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPY29udGVudF9wcmV2aWV3GAQgASgJEiEKFGV4ZWN1dGlvbl9tZXNzYWdlX2lkGAUgASgJSACIAQESEQoJY2FuX3N0ZWVyGAYgASgIQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24itwsKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESQQoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiguaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZXNJbmZvEh0KFXBlbmRpbmdfbWVzc2FnZV9jb3VudBgPIAEoBRJFCg5xdWV1ZV9tZXNzYWdlcxgQIAMoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh4KEXdvcmtpbmdfZGlyZWN0b3J5GBEgASgJSAOIAQESFQoIbWV0YWRhdGEYEiABKAlIBIgBARIfChJjaGF0X2V4ZWN1dG9yX3R5cGUYEyABKAlIBYgBARI8CgljaGF0X2hlcm8YFCABKAsyKS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElsKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8uU3RhZ2VFeGVjdXRvck1hcEVudHJ5EmYKGHN0YWdlX2hlcm9fc2VsZWN0aW9uX21hcBgWIAMoCzJELmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8uU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSIAoTcnVudGltZV9tb2RlbF9sYWJlbBgXIAEoCUgGiAEBEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgYIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoNc2Vzc2lvbl91c2FnZRgZIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkQKDW5vdGlmaWNhdGlvbnMYGyADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxpkChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjoKBXZhbHVlGAIgASgLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlRXhlY3V0b3JJbmZvRHRvOgI4ARpqChpTdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRILCgNrZXkYASABKAkSOwoFdmFsdWUYAiABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhZ2VIZXJvU2VsZWN0aW9uRHRvOgI4AUIOCgxfZGVzY3JpcHRpb25CEgoQX2NoaWVmX2NvbXBsYWludEIQCg5fcHJvcG9zYWxfbmFtZUIUChJfd29ya2luZ19kaXJlY3RvcnlCCwoJX21ldGFkYXRhQhUKE19jaGF0X2V4ZWN1dG9yX3R5cGVCFgoUX3J1bnRpbWVfbW9kZWxfbGFiZWxCEgoQX3ByZXZpb3VzX3N0YXR1cyIuChtTY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8SDwoHcGxhbl9pZBgBIAEoCTKZDgoVU2NoZWR1bGVkUGxhbnNTZXJ2aWNlEnkKEkxpc3RTY2hlZHVsZWRQbGFucxIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXF1ZXN0GjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RTY2hlZHVsZWRQbGFuc1Jlc3BvbnNlEnMKEEdldFNjaGVkdWxlZFBsYW4SLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2NoZWR1bGVkUGxhblJlcXVlc3QaLy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2NoZWR1bGVkUGxhblJlc3BvbnNlEo4BChlMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRKXAQocTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlcxI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBo7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVzcG9uc2USfAoTQ3JlYXRlU2NoZWR1bGVkUGxhbhIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5DcmVhdGVTY2hlZHVsZWRQbGFuUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5DcmVhdGVTY2hlZHVsZWRQbGFuUmVzcG9uc2USfAoTVXBkYXRlU2NoZWR1bGVkUGxhbhIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcGRhdGVTY2hlZHVsZWRQbGFuUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcGRhdGVTY2hlZHVsZWRQbGFuUmVzcG9uc2USfAoTRGVsZXRlU2NoZWR1bGVkUGxhbhIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVTY2hlZHVsZWRQbGFuUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVTY2hlZHVsZWRQbGFuUmVzcG9uc2USlAEKG0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZRI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEpoBCh1EZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZRI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRJzChBSdW5TY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJ1blNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJ1blNjaGVkdWxlZFBsYW5SZXNwb25zZRJ5ChJTdGFydFNjaGVkdWxlZFBsYW4SMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRKjAQogQ29uZmlybVNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXISPi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29uZmlybVNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVzcG9uc2USoAEKH0NhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXISPS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QaPi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[xe,ve]),vh=W(Oe,1),Ih=W(Oe,3),Xh=W(Oe,9),yh=W(Oe,11),Yh=W(Oe,19),Ch=W(Oe,21),Fa=W(Oe,40),Bh=Xe(Oe,0),Fh=ae("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[ve]),qo=ae("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[xe,Fh]),wh=W(qo,5),kh=W(qo,7),Uh=Xe(qo,0),ie=ae("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[ve]),Jh=W(ie,1),xh=W(ie,5),Lh=W(ie,7),Kh=W(ie,9),zh=W(ie,11),jh=W(ie,13),Th=W(ie,19),Hh=W(ie,21),Qh=W(ie,23),Mh=W(ie,25),Oh=W(ie,27),Dh=W(ie,37),_h=W(ie,39),$h=W(ie,49),Ph=W(ie,50),qh=W(ie,52),eg=Xe(ie,0),er=ae("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyImCiRHZXRUb2tlbk1vbml0b3JUaW1lT2ZEYXlSYXRlc1JlcXVlc3QibAolR2V0VG9rZW5Nb25pdG9yVGltZU9mRGF5UmF0ZXNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JUaW1lT2ZEYXlSYXRlc0R0byKXAgodVG9rZW5Nb25pdG9yVGltZU9mRGF5UmF0ZXNEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOY3VycmVudF9wZXJpb2QYAiABKAkSFQoNbG9va2JhY2tfZGF5cxgDIAEoBRJFCgdwZXJpb2RzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVGltZU9mRGF5UGVyaW9kRHRvEkoKB3dpbmRvd3MYBSADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JUaW1lT2ZEYXlXaW5kb3dSYXRlc0R0byJWCh5Ub2tlbk1vbml0b3JUaW1lT2ZEYXlQZXJpb2REdG8SDgoGcGVyaW9kGAEgASgJEhIKCnN0YXJ0X2hvdXIYAiABKAUSEAoIZW5kX2hvdXIYAyABKAUi4wEKI1Rva2VuTW9uaXRvclRpbWVPZkRheVdpbmRvd1JhdGVzRHRvEhAKCHByb3ZpZGVyGAEgASgJEgwKBGtpbmQYAiABKAkSKgodY3VycmVudF9yYXRlX3BlcmNlbnRfcGVyX2hvdXIYAyABKAFIAIgBARJOCgxwZXJpb2RfcmF0ZXMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JUaW1lT2ZEYXlQZXJpb2RSYXRlRHRvQiAKHl9jdXJyZW50X3JhdGVfcGVyY2VudF9wZXJfaG91ciKYAQoiVG9rZW5Nb25pdG9yVGltZU9mRGF5UGVyaW9kUmF0ZUR0bxIOCgZwZXJpb2QYASABKAkSKgodYXZlcmFnZV9yYXRlX3BlcmNlbnRfcGVyX2hvdXIYAiABKAFIAIgBARIUCgxhY3RpdmVfaG91cnMYAyABKAVCIAoeX2F2ZXJhZ2VfcmF0ZV9wZXJjZW50X3Blcl9ob3VyIiUKI0dldFRva2VuVGhyb3VnaHB1dFN0YXRpc3RpY3NSZXF1ZXN0ImAKJEdldFRva2VuVGhyb3VnaHB1dFN0YXRpc3RpY3NSZXNwb25zZRI4CgZyZXN1bHQYASABKAsyKC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlblRocm91Z2hwdXREdG8iRAogR2V0VG9rZW5UaHJvdWdocHV0SGlzdG9yeVJlcXVlc3QSFAoHbWludXRlcxgBIAEoBUgAiAEBQgoKCF9taW51dGVzImIKIUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRI9CgZyZXN1bHQYASADKAsyLS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlblRocm91Z2hwdXRTbmFwc2hvdCI4ChpHZXRIZXJvQmF0dGxlUmVwb3J0UmVxdWVzdBIRCgRkYXRlGAEgASgJSACIAQFCBwoFX2RhdGUiWAobR2V0SGVyb0JhdHRsZVJlcG9ydFJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnREdG8iQAogR2V0SGFnaXBvd2VySGlzdG9yeVJlcG9ydFJlcXVlc3QSEgoFcmFuZ2UYASABKAlIAIgBAUIICgZfcmFuZ2UiZwohR2V0SGFnaXBvd2VySGlzdG9yeVJlcG9ydFJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhhZ2lwb3dlclN0YXRpc3RpY3NSZXBvcnREdG8i7AIKHEdldEhpc3RvcmljYWxUaW1lbGluZVJlcXVlc3QSGAoLZW50aXR5X3R5cGUYASABKAlIAIgBARIWCgllbnRpdHlfaWQYAiABKAlIAYgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAKIAQESFwoKc2Vzc2lvbl9pZBgEIAEoCUgDiAEBEjMKD3JhbmdlX3N0YXJ0X3V0YxgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoGY3Vyc29yGAcgASgJSASIAQESFgoJcGFnZV9zaXplGAggASgFSAWIAQFCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWRCDQoLX3Nlc3Npb25faWRCCQoHX2N1cnNvckIMCgpfcGFnZV9zaXplImkKHUdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEkgKBnJlc3VsdBgBIAEoCzI4LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVF1ZXJ5UmVzcG9uc2VEdG8iJQojR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QicgokR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZUR0byKqAQoWQWdncmVnYXRpb25NZXRhZGF0YUR0bxItCgl0aW1lc3RhbXAYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDnRvdGFsX3Byb2plY3RzGAIgASgFEhoKEnRvdGFsX3JlcG9zaXRvcmllcxgDIAEoBRIXCg9mYWlsZWRfcHJvamVjdHMYBCABKAUSFAoMaGFzX2ZhaWx1cmVzGAUgASgIIrIFChhSZXBvc2l0b3J5QWdncmVnYXRpb25EdG8SEQoEY29kZRgBIAEoCUgAiAEBEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAQgASgJEhQKDGRpc3BsYXlfbmFtZRgFIAEoCRIRCgR0eXBlGAYgASgJSAGIAQESDAoEdGFncxgHIAMoCRIRCgRpY29uGAggASgJSAKIAQESEAoDdXJsGAkgASgJSAOIAQESGAoQY29sbGFwc2VfdG9fbW9yZRgKIAEoCBIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBIcChRnaXRfc3RhdHVzX2F2YWlsYWJsZRgMIAEoCBITCgZicmFuY2gYDSABKAlIBIgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgOIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDyABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgQIAEoCBI1Cg90cmFja2luZ19icmFuY2gYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYEiABKAUSFAoMYmVoaW5kX2NvdW50GBMgASgFEhcKCnN5bmNfc3RhdGUYFCABKAlIBYgBARITCgtpc19vcHRpb25hbBgVIAEoCBIUCgxpc19zYW5pdGl6ZWQYFiABKAgSGwoTc2FuaXRpemF0aW9uX3JlYXNvbhgXIAEoCRIYChBoYXNfbmFtZV93YXJuaW5nGBggASgIEhUKDW5hbWVfd2FybmluZ3MYGSADKAlCBwoFX2NvZGVCBwoFX3R5cGVCBwoFX2ljb25CBgoEX3VybEIJCgdfYnJhbmNoQg0KC19zeW5jX3N0YXRlIroEChVQcm9qZWN0QWdncmVnYXRpb25EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRwYXRoGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESFQoNaXNfbW9ub19zcGVjcxgFIAEoCBIfChJtb25vX3NwZWNzX3ZlcnNpb24YBiABKAlIAYgBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAKIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISAOIAQESRAoMcmVwb3NpdG9yaWVzGAkgAygLMi4uaGFnaWNvZGUucGxhdGZvcm0udjEuUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEkEKHWdpdF9zbmFwc2hvdF9yZWZyZXNoZWRfYXRfdXRjGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChlnaXRfc25hcHNob3Rfc2VydmVkX3N0YWxlGAsgASgIEisKBWVycm9yGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhEKCWhhc19lcnJvchgNIAEoCEIOCgxfZGVzY3JpcHRpb25CFQoTX21vbm9fc3BlY3NfdmVyc2lvbkIcChpfbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeUIhCh9fbW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlIpsBChpEYXRhQWdncmVnYXRpb25SZXNwb25zZUR0bxI9Cghwcm9qZWN0cxgBIAMoCzIrLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlByb2plY3RBZ2dyZWdhdGlvbkR0bxI+CghtZXRhZGF0YRgCIAEoCzIsLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8iqQMKHFRva2VuTW9uaXRvclVzYWdlU25hcHNob3REdG8SDgoGc3RhdHVzGAEgASgJEg4KBnNvdXJjZRgCIAEoCRIbCg5mYWlsdXJlX3JlYXNvbhgDIAEoCUgAiAEBEhUKCGRhdGVfa2V5GAQgASgJSAGIAQESGQoMdG90YWxfdG9rZW5zGAUgASgDSAKIAQESFQoIY29zdF91c2QYBiABKAFIA4gBARIvCgtyZWFkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQc25hcHNob3RfdmVyc2lvbhgIIAEoAxI7CgZsaW1pdHMYCSABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JMaW1pdHNEdG8SPQoHcGVyaW9kcxgKIAEoCzIsLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclBlcmlvZHNEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCK6AQoVVG9rZW5Nb25pdG9yTGltaXRzRHRvEjIKDnVwZGF0ZWRfYXRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpyZWZyZXNoX21zGAIgASgFSACIAQESRQoJcHJvdmlkZXJzGAMgAygLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRQcm92aWRlckR0b0INCgtfcmVmcmVzaF9tcyLTAgocVG9rZW5Nb25pdG9yTGltaXRQcm92aWRlckR0bxIQCghwcm92aWRlchgBIAEoCRIOCgZzdGF0dXMYAiABKAkSFwoKcGxhbl9sYWJlbBgDIAEoCUgAiAEBEjIKDnVwZGF0ZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJBCgd3aW5kb3dzGAUgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRXaW5kb3dEdG8SGAoLYmFsYW5jZV91c2QYBiABKAFIAYgBARJICg1yZXNldF9jcmVkaXRzGAcgASgLMjEuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUmVzZXRDcmVkaXRzRHRvQg0KC19wbGFuX2xhYmVsQg4KDF9iYWxhbmNlX3VzZCL1AwoaVG9rZW5Nb25pdG9yTGltaXRXaW5kb3dEdG8SDAoEa2luZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEhkKDHVzZWRfcGVyY2VudBgDIAEoAUgBiAEBEh4KEXJlbWFpbmluZ19wZXJjZW50GAQgASgBSAKIAQESEQoEdXNlZBgFIAEoAUgDiAEBEhIKBWxpbWl0GAYgASgBSASIAQESFgoJcmVtYWluaW5nGAcgASgBSAWIAQESFQoIY3VycmVuY3kYCCABKAlIBogBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbCg53aW5kb3dfbWludXRlcxgKIAEoBUgHiAEBEh4KEXJlc2V0X2Rlc2NyaXB0aW9uGAsgASgJSAiIAQESGgoNbWV0ZXJfdmlzaWJsZRgMIAEoCEgJiAEBQggKBl9sYWJlbEIPCg1fdXNlZF9wZXJjZW50QhQKEl9yZW1haW5pbmdfcGVyY2VudEIHCgVfdXNlZEIICgZfbGltaXRCDAoKX3JlbWFpbmluZ0ILCglfY3VycmVuY3lCEQoPX3dpbmRvd19taW51dGVzQhQKEl9yZXNldF9kZXNjcmlwdGlvbkIQCg5fbWV0ZXJfdmlzaWJsZSK9AQobVG9rZW5Nb25pdG9yUmVzZXRDcmVkaXRzRHRvEhwKD2F2YWlsYWJsZV9jb3VudBgBIAEoBUgAiAEBEjcKE25leHRfZXhwaXJlc19hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKD2V4cGlyYXRpb25zX3V0YxgDIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEgoQX2F2YWlsYWJsZV9jb3VudCLPAQoWVG9rZW5Nb25pdG9yUGVyaW9kc0R0bxI6CgV0b2RheRgBIAEoCzIrLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclBlcmlvZER0bxI6CgVtb250aBgCIAEoCzIrLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclBlcmlvZER0bxI9CghhbGxfdGltZRgDIAEoCzIrLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclBlcmlvZER0byKKBAoVVG9rZW5Nb25pdG9yUGVyaW9kRHRvEhQKDHRvdGFsX3Rva2VucxgBIAEoAxIQCghjb3N0X3VzZBgCIAEoARIeChFjYWNoZV9yZWFkX3Rva2VucxgDIAEoA0gAiAEBEh8KEmNhY2hlX3dyaXRlX3Rva2VucxgEIAEoA0gBiAEBEhoKDW91dHB1dF90b2tlbnMYBSABKANIAogBARIZCgx0aW1lZF90b2tlbnMYBiABKANIA4gBARIgChN0aW1lZF9vdXRwdXRfdG9rZW5zGAcgASgDSASIAQESHgoRdGltZWRfZHVyYXRpb25fbXMYCCABKANIBYgBARJNCgxjYXBhYmlsaXRpZXMYCSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDYXBhYmlsaXRpZXNEdG8SQgoHY2xpZW50cxgKIAMoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclBlcmlvZENsaWVudER0b0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2Vuc0IQCg5fb3V0cHV0X3Rva2Vuc0IPCg1fdGltZWRfdG9rZW5zQhYKFF90aW1lZF9vdXRwdXRfdG9rZW5zQhQKEl90aW1lZF9kdXJhdGlvbl9tcyJ/CiFUb2tlbk1vbml0b3JQZXJpb2RDYXBhYmlsaXRpZXNEdG8SHQoQdG9rZW5fY29tcG9uZW50cxgBIAEoCEgAiAEBEhcKCnRocm91Z2hwdXQYAiABKAhIAYgBAUITChFfdG9rZW5fY29tcG9uZW50c0INCgtfdGhyb3VnaHB1dCJPChtUb2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG8SDgoGY2xpZW50GAEgASgJEg4KBnRva2VucxgCIAEoAxIQCghjb3N0X3VzZBgDIAEoASLYAgoSVG9rZW5UaHJvdWdocHV0RHRvEh8KF2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAEgASgFEiAKGG91dHB1dF90b2tlbnNfcGVyX21pbnV0ZRgCIAEoBRIaChJ0b3RhbF9pbnB1dF90b2tlbnMYAyABKAMSGwoTdG90YWxfb3V0cHV0X3Rva2VucxgEIAEoAxIwCgxsYXN0X3VwZGF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKH3JlZ3VsYXJfaW5wdXRfdG9rZW5zX3Blcl9taW51dGUYBiABKAUSJQodY2FjaGVfaW5wdXRfdG9rZW5zX3Blcl9taW51dGUYByABKAUSIgoadG90YWxfcmVndWxhcl9pbnB1dF90b2tlbnMYCCABKAMSIAoYdG90YWxfY2FjaGVfaW5wdXRfdG9rZW5zGAkgASgDIq8BChdUb2tlblRocm91Z2hwdXRTbmFwc2hvdBItCgl0aW1lc3RhbXAYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDGlucHV0X3Rva2VucxgCIAEoBRIVCg1vdXRwdXRfdG9rZW5zGAMgASgFEhwKFHJlZ3VsYXJfaW5wdXRfdG9rZW5zGAQgASgFEhoKEmNhY2hlX2lucHV0X3Rva2VucxgFIAEoBSLgAQosSGVyb0JhdHRsZVJlcG9ydExhdGVzdFVubG9ja2VkQWNoaWV2ZW1lbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRITCgtzb3VyY2Vfa2luZBgDIAEoCRIzCg91bmxvY2tlZF9hdF91dGMYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDnByb2dyZXNzX2FmdGVyGAUgASgFEg4KBnRhcmdldBgGIAEoBRIVCg1yZXdhcmRfYW1vdW50GAcgASgDIrsBCilIZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0bxIVCg1jYW5vbmljYWxfa2V5GAEgASgJEhAKCG5hbWVfa2V5GAIgASgJEhEKCWdvYWxfdHlwZRgDIAEoCRIQCghwcm9ncmVzcxgEIAEoBRIOCgZ0YXJnZXQYBSABKAUSFwoPcmVtYWluaW5nX2NvdW50GAYgASgFEhcKD2NvbXBsZXRpb25fcmF0ZRgHIAEoASK9AgolSGVyb0JhdHRsZVJlcG9ydEFjaGlldmVtZW50U3VtbWFyeUR0bxIYChBoYXNfYXJjaGl2ZV9kYXRhGAEgASgIEhcKD2NvbXBsZXRlZF9jb3VudBgCIAEoBRITCgt0b3RhbF9jb3VudBgDIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYBCABKAESWwoPbGF0ZXN0X3VubG9ja2VkGAUgASgLMkIuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydExhdGVzdFVubG9ja2VkQWNoaWV2ZW1lbnREdG8SVgoNcGVuZGluZ19oaW50cxgGIAMoCzI/LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRQZW5kaW5nQWNoaWV2ZW1lbnRIaW50RHRvIvQCCiNIZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0bxISCgpzZXNzaW9uX2lkGAEgASgJEhIKBXRpdGxlGAIgASgJSACIAQESGQoMc2Vzc2lvbl9jb2RlGAMgASgJSAGIAQESGQoMc2Vzc2lvbl90eXBlGAQgASgJSAKIAQESGgoNcHJvcG9zYWxfbmFtZRgFIAEoCUgDiAEBEhYKDmFjdGl2aXR5X2NvdW50GAYgASgFEiIKGmNvbXBsZXRlZF9hc3Npc3RhbmNlX2NvdW50GAcgASgFEh8KF3Byb3Bvc2FsX2V4ZWN1dGVkX2NvdW50GAggASgFEjgKFGxhc3RfYWN0aXZpdHlfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIICgZfdGl0bGVCDwoNX3Nlc3Npb25fY29kZUIPCg1fc2Vzc2lvbl90eXBlQhAKDl9wcm9wb3NhbF9uYW1lIqcDCiJIZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEh0KFXNlc3Npb25fY3JlYXRlZF9jb3VudBgBIAEoBRIiChpjaGF0X3Nlc3Npb25fY3JlYXRlZF9jb3VudBgCIAEoBRImCh5wcm9wb3NhbF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAyABKAUSFgoOcHJvcG9zYWxfY291bnQYBCABKAUSIAoYcHJvcG9zYWxfZ2VuZXJhdGVkX2NvdW50GAUgASgFEh8KF3Byb3Bvc2FsX2V4ZWN1dGVkX2NvdW50GAYgASgFEh8KF3Byb3Bvc2FsX2FyY2hpdmVkX2NvdW50GAcgASgFEiIKGmFzc2lzdGFuY2VfY29tcGxldGVkX2NvdW50GAggASgFEh8KF2Fzc2lzdGFuY2VfZmFpbGVkX2NvdW50GAkgASgFElUKEmhpZ2hsaWdodF9zZXNzaW9ucxgKIAMoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRIaWdobGlnaHRTZXNzaW9uRHRvIkYKI0hlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvEhAKCHByZXZpb3VzGAEgASgDEg0KBWRlbHRhGAIgASgDIrwFCh1IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxIYChBoYXNfcHJldmlvdXNfZGF5GAEgASgIEhoKDXByZXZpb3VzX2RhdGUYAiABKAlIAIgBARJUChFhY3RpdmVfaGVyb19jb3VudBgDIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElIKD2V4ZWN1dGlvbl9jb3VudBgEIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElIKD3Rvb2xfY2FsbF9jb3VudBgFIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvEk8KDHRvdGFsX3Rva2VucxgGIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElgKFXNlc3Npb25fY3JlYXRlZF9jb3VudBgHIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElEKDnByb3Bvc2FsX2NvdW50GAggASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG8SVwoUaGFnaXBvd2VyX25ldF9jaGFuZ2UYCSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0b0IQCg5fcHJldmlvdXNfZGF0ZSLGAQobSGVyb0JhdHRsZVJlcG9ydEV4ZWN1dG9yRHRvEhUKDWV4ZWN1dG9yX3R5cGUYASABKAkSEgoKaGVyb19jb3VudBgCIAEoBRIZChFhY3RpdmVfaGVyb19jb3VudBgDIAEoBRIXCg9leGVjdXRpb25fY291bnQYBCABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAUgASgFEhQKDHRvdGFsX3Rva2VucxgGIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgHIAEoAyK4AQohSGVyb0JhdHRsZVJlcG9ydEhhZ2lwb3dlclBvaW50RHRvEjUKEWJ1Y2tldF9taW51dGVfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdiYWxhbmNlGAIgASgDEhUKDXRvdGFsX2JhbGFuY2UYAyABKAMSIQoZYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgEIAEoAxIRCglpc19maWxsZWQYBSABKAgi3AMKHEhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgSHgoWY3VycmVudF9wdWJsaWNfYmFsYW5jZRgGIAEoAxIdChVjdXJyZW50X3RvdGFsX2JhbGFuY2UYByABKAMSKQohY3VycmVudF9hY2N1bXVsYXRlZF90b3RhbF9iYWxhbmNlGAggASgDEhIKCm5ldF9jaGFuZ2UYCSABKAMSNwoTbGFzdF91cGRhdGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTgoNcHVibGljX3NlcmllcxgLIAMoCzI3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0byKJBAoXSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESDAoEcmFuaxgHIAEoBRIOCgZzdGF0dXMYCCABKAkSDQoFZ3JhZGUYCSABKAkSFAoMYmF0dGxlX3Njb3JlGAogASgFEhcKD2V4ZWN1dGlvbl9jb3VudBgLIAEoBRIXCg90b29sX2NhbGxfY291bnQYDCABKAUSFAoMaW5wdXRfdG9rZW5zGA0gASgDEhoKEmNhY2hlX2lucHV0X3Rva2VucxgOIAEoAxIVCg1vdXRwdXRfdG9rZW5zGA8gASgDEhsKE2NhY2hlX291dHB1dF90b2tlbnMYECABKAMSFAoMdG90YWxfdG9rZW5zGBEgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGBIgASgDEjkKFWxhc3RfY29tcGxldGVkX2F0X3V0YxgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDAoKX2hlcm9faWNvbkIICgZfbW9kZWxCDgoMX2Rlc2NyaXB0aW9uIoACCiJIZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEhIKCnByb2plY3RfaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKDmFjdGl2aXR5X2NvdW50GAMgASgFEh0KFXNlc3Npb25fY3JlYXRlZF9jb3VudBgEIAEoBRIWCg5wcm9wb3NhbF9jb3VudBgFIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgGIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgHIAEoBRIWCg5hY3Rpdml0eV9zaGFyZRgIIAEoAUIHCgVfbmFtZSL6AQohSGVyb0JhdHRsZVJlcG9ydFByb2plY3RQcm9maWxlRHRvEhAKCGhhc19kYXRhGAEgASgIEh0KFXByb2plY3RfY3JlYXRlZF9jb3VudBgCIAEoAxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYAyABKAMSIAoYcHJvcG9zYWxfZ2VuZXJhdGVkX2NvdW50GAQgASgDEh8KF3Byb3Bvc2FsX2V4ZWN1dGVkX2NvdW50GAUgASgDEhMKC3Rva2VuX3RvdGFsGAYgASgDEi0KCWFzX29mX3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAijQIKG0hlcm9CYXR0bGVSZXBvcnRQcm9qZWN0c0R0bxIbChN0b3RhbF9wcm9qZWN0X2NvdW50GAEgASgFEhwKFGFjdGl2ZV9wcm9qZWN0X2NvdW50GAIgASgFEhkKEW5ld19wcm9qZWN0X2NvdW50GAMgASgFEk4KDHRvcF9wcm9qZWN0cxgEIAMoCzI4LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0QWN0aXZpdHlEdG8SSAoHcHJvZmlsZRgFIAEoCzI3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0byKtAgoWSGVyb0JhdHRsZVJlcG9ydE12cER0bxIPCgdoZXJvX2lkGAEgASgJEhEKCWhlcm9fbmFtZRgCIAEoCRIWCgloZXJvX2ljb24YAyABKAlIAIgBARIVCg1leGVjdXRvcl90eXBlGAQgASgJEhIKBW1vZGVsGAUgASgJSAGIAQESDAoEcmFuaxgGIAEoBRIUCgxiYXR0bGVfc2NvcmUYByABKAUSDQoFZ3JhZGUYCCABKAkSFwoPZXhlY3V0aW9uX2NvdW50GAkgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgKIAEoBRIUCgx0b3RhbF90b2tlbnMYCyABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYDCABKANCDAoKX2hlcm9faWNvbkIICgZfbW9kZWwi2QIKGkhlcm9CYXR0bGVSZXBvcnRTdW1tYXJ5RHRvEhgKEHRvdGFsX2hlcm9fY291bnQYASABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAiABKAUSGgoSdG90YWxfYmF0dGxlX3Njb3JlGAMgASgFEhgKEHRvdGFsX3Rvb2xfY2FsbHMYBCABKAUSFAoMdG90YWxfdG9rZW5zGAUgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAYgASgDEhQKDGlucHV0X3Rva2VucxgHIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYCCABKAMSFQoNb3V0cHV0X3Rva2VucxgJIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGAogASgDEjkKA212cBgLIAEoCzIsLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8ipgYKE0hlcm9CYXR0bGVSZXBvcnREdG8SEwoLcmVwb3J0X2RhdGUYASABKAkSNAoQZ2VuZXJhdGVkX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMdGltZV96b25lX2lkGAMgASgJEjUKEWNvdmVyZWRfc3RhcnRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9jb3ZlcmVkX2VuZF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKCWhhZ2lwb3dlchgGIAEoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJEdG8SQQoHc3VtbWFyeRgHIAEoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRTdW1tYXJ5RHRvElEKDGFjaGlldmVtZW50cxgIIAEoCzI7LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SUgoQYWN0aXZpdHlfc3VtbWFyeRgJIAEoCzI4LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRBY3Rpdml0eVN1bW1hcnlEdG8SRwoKY29tcGFyaXNvbhgKIAEoCzIzLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uRHRvEkQKCWV4ZWN1dG9ycxgLIAMoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxJDCghwcm9qZWN0cxgMIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0c0R0bxI9CgZoZXJvZXMYDSADKAsyLS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGVyb0R0byK1AQoeSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvEjUKEWJ1Y2tldF9taW51dGVfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdiYWxhbmNlGAIgASgDEhUKDXRvdGFsX2JhbGFuY2UYAyABKAMSIQoZYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgEIAEoAxIRCglpc19maWxsZWQYBSABKAgi1wEKHkhhZ2lwb3dlclN0YXRpc3RpY3NNZXRhZGF0YUR0bxIzCg9yYW5nZV9zdGFydF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDmJ1Y2tldF9taW51dGVzGAMgASgFEhcKD2hhc19maWxsZWRfZ2FwcxgEIAEoCBIcChRoYXNfcmVjb3JkZWRfaGlzdG9yeRgFIAEoCCLWAQodSGFnaXBvd2VyU3RhdGlzdGljc1N1bW1hcnlEdG8SHgoWY3VycmVudF9wdWJsaWNfYmFsYW5jZRgBIAEoAxIdChVjdXJyZW50X3RvdGFsX2JhbGFuY2UYAiABKAMSKQohY3VycmVudF9hY2N1bXVsYXRlZF90b3RhbF9iYWxhbmNlGAMgASgDEhIKCm5ldF9jaGFuZ2UYBCABKAMSNwoTbGFzdF91cGRhdGVkX2F0X3V0YxgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiAIKHEhhZ2lwb3dlclN0YXRpc3RpY3NSZXBvcnREdG8SDQoFcmFuZ2UYASABKAkSRgoIbWV0YWRhdGEYAiABKAsyNC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SRAoHc3VtbWFyeRgDIAEoCzIzLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEksKDXB1YmxpY19zZXJpZXMYBCADKAsyNC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJQdWJsaWNIaXN0b3J5UG9pbnREdG8iuwMKGkhpc3RvcmljYWxUaW1lbGluZUV2ZW50RHRvEhAKCGV2ZW50X2lkGAEgASgJEjMKD29jY3VycmVkX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoOY3JlYXRlZF9hdF91dGMYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2VudGl0eV90eXBlGAQgASgJEhEKCWVudGl0eV9pZBgFIAEoCRIXCgpwcm9qZWN0X2lkGAYgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgHIAEoCUgBiAEBEgwKBGNvZGUYCCABKAkSKAoIbWV0YWRhdGEYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEwoGc291cmNlGAogASgJSAKIAQESFQoIYWN0b3JfaWQYCyABKAlIA4gBARIbCg5jb3JyZWxhdGlvbl9pZBgMIAEoCUgEiAEBQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19zb3VyY2VCCwoJX2FjdG9yX2lkQhEKD19jb3JyZWxhdGlvbl9pZCKIAQofSGlzdG9yaWNhbFRpbWVsaW5lUGFnaW5hdGlvbkR0bxIRCglwYWdlX3NpemUYASABKAUSFgoOcmV0dXJuZWRfY291bnQYAiABKAUSEAoIaGFzX21vcmUYAyABKAgSGAoLbmV4dF9jdXJzb3IYBCABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3IisAEKIkhpc3RvcmljYWxUaW1lbGluZVF1ZXJ5UmVzcG9uc2VEdG8SPwoFaXRlbXMYASADKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxJJCgpwYWdpbmF0aW9uGAIgASgLMjUuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lUGFnaW5hdGlvbkR0byKbAwogSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8SEwoLZW50aXR5X3R5cGUYASABKAkSDAoEY29kZRgCIAEoCRIYChBzYW1wbGVfZW50aXR5X2lkGAMgASgJEh4KEXNhbXBsZV9wcm9qZWN0X2lkGAQgASgJSACIAQESHgoRc2FtcGxlX3Nlc3Npb25faWQYBSABKAlIAYgBARIaCg1zYW1wbGVfc291cmNlGAYgASgJSAKIAQESHAoPc2FtcGxlX2FjdG9yX2lkGAcgASgJSAOIAQESIgoVc2FtcGxlX2NvcnJlbGF0aW9uX2lkGAggASgJSASIAQESMAoQbWV0YWRhdGFfZXhhbXBsZRgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIUChJfc2FtcGxlX3Byb2plY3RfaWRCFAoSX3NhbXBsZV9zZXNzaW9uX2lkQhAKDl9zYW1wbGVfc291cmNlQhIKEF9zYW1wbGVfYWN0b3JfaWRCGAoWX3NhbXBsZV9jb3JyZWxhdGlvbl9pZCJtCiRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8SRQoFaXRlbXMYASADKAsyNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVFdmVudFNhbXBsZUR0bzKIDAoRU3RhdGlzdGljc1NlcnZpY2USdAoRR2V0QWdncmVnYXRlZERhdGESLi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QaLy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRBZ2dyZWdhdGVkRGF0YVJlc3BvbnNlEn0KFEdldFRva2VuTW9uaXRvclVzYWdlEjEuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0GjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXNwb25zZRKDAQoWR2V0VG9rZW5Nb25pdG9ySGlzdG9yeRIzLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXF1ZXN0GjQuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlc3BvbnNlEo8BChpHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZRI3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhvdXJseVVzYWdlUmVxdWVzdBo4LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhvdXJseVVzYWdlUmVzcG9uc2USmAEKHUdldFRva2VuTW9uaXRvclRpbWVPZkRheVJhdGVzEjouaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5Nb25pdG9yVGltZU9mRGF5UmF0ZXNSZXF1ZXN0GjsuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5Nb25pdG9yVGltZU9mRGF5UmF0ZXNSZXNwb25zZRKVAQocR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljcxI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dFN0YXRpc3RpY3NSZXF1ZXN0GjouaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1Jlc3BvbnNlEowBChlHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5EjYuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0SGlzdG9yeVJlcXVlc3QaNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USegoTR2V0SGVyb0JhdHRsZVJlcG9ydBIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhlcm9CYXR0bGVSZXBvcnRSZXF1ZXN0GjEuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlc3BvbnNlEowBChlHZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0EjYuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGFnaXBvd2VySGlzdG9yeVJlcG9ydFJlcXVlc3QaNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVzcG9uc2USgAEKFUdldEhpc3RvcmljYWxUaW1lbGluZRIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlcXVlc3QaMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRKVAQocR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlcxI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0GjouaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlQiqqAidQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUGxhdGZvcm0uVjFiBnByb3RvMw",[xe,ve,as]),tg=W(er,1),ng=W(er,3),og=Xe(er,0),ce=ae("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8itQEKHUFkZFNlc3Npb25Vc2VyTWV0YWRhdGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSUAoHZW50cmllcxgCIAMoCzI/LmhhZ2ljb2RlLnNlc3Npb24udjEuQWRkU2Vzc2lvblVzZXJNZXRhZGF0YVJlcXVlc3QuRW50cmllc0VudHJ5Gi4KDEVudHJpZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlkKHkFkZFNlc3Npb25Vc2VyTWV0YWRhdGFSZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLUAgoTTGlzdFNlc3Npb25zUmVxdWVzdBIRCgR0eXBlGAEgASgJSACIAQESGAoLYWN0aXZlX29ubHkYAiABKAhIAYgBARIdChBpbmNsdWRlX2FyY2hpdmVkGAMgASgISAKIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgDiAEBEhMKC3Byb2plY3RfaWRzGAUgAygJElEKDXVzZXJfbWV0YWRhdGEYBiADKAsyOi5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1JlcXVlc3QuVXNlck1ldGFkYXRhRW50cnkaMwoRVXNlck1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMinwIKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRIWCgloZXJvX25hbWUYBiABKAlIAYgBARovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZSK+AgoQUGF0aFJlZmVyZW5jZUR0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSFQoNZGlzcGxheV92YWx1ZRgDIAEoCRIVCg1waHlzaWNhbF9wYXRoGAQgASgJEg0KBXN0YXJ0GAUgASgFEgsKA2VuZBgGIAEoBRIWCgllbnRpdHlfaWQYByABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAggASgJSAGIAQESRQoIbWV0YWRhdGEYCSADKAsyMy5oYWdpY29kZS5zZXNzaW9uLnYxLlBhdGhSZWZlcmVuY2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDAoKX2VudGl0eV9pZEINCgtfcHJvamVjdF9pZCL7AQoZU2Vzc2lvbk1lc3NhZ2VJbWFnZVJlZkR0bxISCgpzZXNzaW9uX2lkGAEgASgJEhAKCGltYWdlX2lkGAIgASgJEhYKDmhhZ2lfaW1hZ2VfdXJsGAMgASgJEhgKC3ByZXZpZXdfdXJsGAQgASgJSACIAQESFgoJZmlsZV9uYW1lGAUgASgJSAGIAQESGQoMY29udGVudF90eXBlGAYgASgJSAKIAQESFgoJZmlsZV9zaXplGAcgASgDSAOIAQFCDgoMX3ByZXZpZXdfdXJsQgwKCl9maWxlX25hbWVCDwoNX2NvbnRlbnRfdHlwZUIMCgpfZmlsZV9zaXplIn4KGVRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSGAoLYWNjZXNzX3R5cGUYBCABKAlIAIgBAUIOCgxfYWNjZXNzX3R5cGUihwEKE1RhcmdldFJlcG9zaXRvcnlEdG8SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhkKDGRpc3BsYXlfbmFtZRgDIAEoCUgAiAEBEhgKC2FjY2Vzc190eXBlGAQgASgJSAGIAQFCDwoNX2Rpc3BsYXlfbmFtZUIOCgxfYWNjZXNzX3R5cGUiPQoYVGFyZ2V0UmVwb3NpdG9yeVNjb3BlRHRvEgwKBG1vZGUYASABKAkSEwoLYWNjZXNzX3R5cGUYAiABKAkikQYKFENyZWF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhwKD2NoaWVmX2NvbXBsYWludBgCIAEoCUgAiAEBEiUKGG9yaWdpbmFsX2NoaWVmX2NvbXBsYWludBgDIAEoCUgBiAEBEkgKEGRyYWZ0X2ltYWdlX3JlZnMYBCADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEQoEdHlwZRgFIAEoCUgCiAEBEhIKCnByb2plY3RfaWQYBiABKAkSRQoTdGFyZ2V0X3JlcG9zaXRvcmllcxgHIAMoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVGFyZ2V0UmVwb3NpdG9yeUR0bxJOChd0YXJnZXRfcmVwb3NpdG9yeV9zY29wZRgIIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuVGFyZ2V0UmVwb3NpdG9yeVNjb3BlRHRvEkcKD3RhcmdldF9wcm9qZWN0cxgJIAMoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuVGFyZ2V0UHJvamVjdFJlZmVyZW5jZUR0bxI+Cg9wYXRoX3JlZmVyZW5jZXMYCiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLlBhdGhSZWZlcmVuY2VEdG8SGAoQaXNfZGVmYXVsdF90aXRsZRgLIAEoCBImChlwcm9wb3NhbF9jb250ZW50X2xhbmd1YWdlGAwgASgJSAOIAQESSQoIbWV0YWRhdGEYDSADKAsyNy5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZVNlc3Npb25SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQhIKEF9jaGllZl9jb21wbGFpbnRCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludEIHCgVfdHlwZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZSKTAQoUVXBkYXRlU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARITCgZzdGF0dXMYAyABKAlIAYgBARIVCghtZXRhZGF0YRgEIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkIJCgdfc3RhdHVzQgsKCV9tZXRhZGF0YSJTChZTZXNzaW9uTGlzdFJlc3BvbnNlRHRvEjkKCHNlc3Npb25zGAEgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iKwoYU2ltcGxlTWVzc2FnZVJlc3BvbnNlRHRvEg8KB21lc3NhZ2UYASABKAkiMwogU3dpdGNoU3RvcHBlZFNlc3Npb25BZ2VudFJlcXVlc3QSDwoHaGVyb19pZBgBIAEoCSKRCQocQ3JlYXRlSGFnaVRhc2tTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIYChBpc19kZWZhdWx0X3RpdGxlGAIgASgIEhIKCnByb2plY3RfaWQYAyABKAkSFgoJcHJvbXB0X2lkGAQgASgJSACIAQESFAoHbWVzc2FnZRgFIAEoCUgBiAEBEkgKEGRyYWZ0X2ltYWdlX3JlZnMYBiADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAcgASgJSAKIAQESGAoLdGFyZ2V0X3R5cGUYCCABKAlIA4gBARIVCgh2YXVsdF9pZBgJIAEoCUgEiAEBEhwKD291dHB1dF92YXVsdF9pZBgKIAEoCUgFiAEBEhsKE3JlZmVyZW5jZV92YXVsdF9pZHMYCyADKAkSGgoSZWRpdGFibGVfdmF1bHRfaWRzGAwgAygJEkcKD3RhcmdldF9wcm9qZWN0cxgNIAMoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuVGFyZ2V0UHJvamVjdFJlZmVyZW5jZUR0bxIfChJyZXNlYXJjaF9kaXJlY3Rpb24YDiABKAlIBogBARIbCg5wcmVzZXRfdGFza19pZBgPIAEoCUgHiAEBEh8KEnByZXNldF90YXNrX2xvY2FsZRgQIAEoCUgIiAEBEjEKEXByZXNldF90YXNrX2lucHV0GBEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhcKD3JlcG9zaXRvcnlfdXJscxgSIAMoCRITCgtwcm9qZWN0X2lkcxgTIAMoCRIRCgluZWVkX3B1c2gYFCABKAgSJAoXcHVsbF9yZWJhc2VfYmVmb3JlX3B1c2gYFSABKAhICYgBARIfChJ0YXJnZXRfYnJhbmNoX21vZGUYFiABKAlICogBARIfChJ0YXJnZXRfYnJhbmNoX25hbWUYFyABKAlIC4gBARIXCgpzY3JpcHRfa2V5GBggASgJSAyIAQESFAoHaGVyb19pZBgZIAEoCUgNiAEBEiAKE2hlcm9fc2VsZWN0aW9uX21vZGUYGiABKAlIDogBARIWCgloZXJvX25hbWUYGyABKAlID4gBAUIMCgpfcHJvbXB0X2lkQgoKCF9tZXNzYWdlQhIKEF9yZXBvc2l0b3J5X3BhdGhCDgoMX3RhcmdldF90eXBlQgsKCV92YXVsdF9pZEISChBfb3V0cHV0X3ZhdWx0X2lkQhUKE19yZXNlYXJjaF9kaXJlY3Rpb25CEQoPX3ByZXNldF90YXNrX2lkQhUKE19wcmVzZXRfdGFza19sb2NhbGVCGgoYX3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoQhUKE190YXJnZXRfYnJhbmNoX21vZGVCFQoTX3RhcmdldF9icmFuY2hfbmFtZUINCgtfc2NyaXB0X2tleUIKCghfaGVyb19pZEIWChRfaGVyb19zZWxlY3Rpb25fbW9kZUIMCgpfaGVyb19uYW1lMu4JCg9TZXNzaW9uc1NlcnZpY2USbAoPT3BlbkNoYXRTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuQ2hhdFNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuQ2hhdFNlc3Npb25SZXNwb25zZRJgCgtPcGVuU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuT3BlblNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlc3BvbnNlEl0KCkdldFNlc3Npb24SJi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXF1ZXN0GicuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRTZXNzaW9uUmVzcG9uc2USYAoLU2F2ZVNlc3Npb24SJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNhdmVTZXNzaW9uUmVxdWVzdBooLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXNwb25zZRKBAQoWQWRkU2Vzc2lvblVzZXJNZXRhZGF0YRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuQWRkU2Vzc2lvblVzZXJNZXRhZGF0YVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLkFkZFNlc3Npb25Vc2VyTWV0YWRhdGFSZXNwb25zZRJjCgxMaXN0U2Vzc2lvbnMSKC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1JlcXVlc3QaKS5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RTZXNzaW9uc1Jlc3BvbnNlEmYKDURlbGV0ZVNlc3Npb24SKS5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXF1ZXN0GiouaGFnaWNvZGUuc2Vzc2lvbi52MS5EZWxldGVTZXNzaW9uUmVzcG9uc2USdQoSQXJjaGl2ZUNoYXRTZXNzaW9uEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlQ2hhdFNlc3Npb25SZXNwb25zZRJ1ChJTd2l0Y2hTdG9wcGVkQWdlbnQSLi5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRBZ2VudFJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEnsKFFN0YXJ0SGFnaVRhc2tTZXNzaW9uEjAuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFydEhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QaMS5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USjQEKGlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uEjYuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFydExlZ2FjeUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QaNy5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[xe,ve]),rg=W(ce,1),ag=W(ce,3),ig=W(ce,5),sg=W(ce,7),lg=W(ce,9),cg=W(ce,11),dg=W(ce,13),ug=W(ce,15),mg=W(ce,19),hg=W(ce,32),gg=W(ce,38),bg=W(ce,39),pg=W(ce,43),Ag=Xe(ce,0),De=ae("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIrUCChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKBW1vZGVsGAYgASgJSACIAQESGAoLZnVzaW9uX3RpZXIYByABKAlIAYgBAUIICgZfbW9kZWxCDgoMX2Z1c2lvbl90aWVyIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[xe,ve,ce]),fg=W(De,1),Zg=W(De,11),Rg=W(De,15),Eg=W(De,19),Sg=W(De,34),Vg=W(De,38),Gg=W(De,43),Ng=Xe(De,0),Ye=ae("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[ve,ce]),Wg=W(Ye,15),vg=W(Ye,17),Ig=W(Ye,19),Xg=W(Ye,21),yg=W(Ye,23),Yg=W(Ye,36),Cg=W(Ye,38),Bg=W(Ye,39),Fg=W(Ye,40),wg=Xe(Ye,0),kg=ae("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[ve]),Ug=Xe(kg,0),Hn=new Set([g.INT64,g.UINT64,g.SINT64,g.FIXED64,g.SFIXED64]),Js=e=>e.typeName.startsWith("google.protobuf.");function Qn(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function mn(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||Js(e))return t;const n=t;for(const o of e.fields){const r=n[o.jsonName];r!==void 0&&(n[o.jsonName]=Jg(o,r))}return n}function Jg(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Qn(t):t;case"message":return mn(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Qn):t:e.listKind==="message"?t.map(n=>mn(e.message,n)):t:t;case"map":{if(t===null||typeof t!="object"||Array.isArray(t))return t;const n=t;for(const o of Object.keys(n))e.mapKind==="scalar"&&Hn.has(e.scalar)?n[o]=Qn(n[o]):e.mapKind==="message"&&(n[o]=mn(e.message,n[o]));return n}default:return t}}function xg(e,t){return mn(e,cs(e,t,{alwaysEmitImplicit:!0}))}function Lg(e,t){return xg(e,t).result}function hn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Js(e)||n>8)return t;const o=t;for(const r of e.fields){const a=o[r.jsonName];if(!(a===null||typeof a!="object")){if(r.fieldKind==="message")hn(r.message,a,n+1);else if(r.fieldKind==="list"&&r.listKind==="message"&&Array.isArray(a))a.forEach(i=>hn(r.message,i,n+1));else if(r.fieldKind==="map"&&!Array.isArray(a)){const i=a;for(const s of Object.keys(i)){const l=i[s];r.mapKind==="scalar"&&r.scalar===g.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):r.mapKind==="message"&&hn(r.message,l,n+1)}}}}return t}function D(e,t){return bs(e,t===void 0?t:hn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function wa(e,t){const n=Is(e);if(n)throw t.forEach((o,r)=>{n.metadata.append(r,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new B("protocol error: missing status",S.Internal)}function Kg(e,t,n,o){var r,a;const i=new Headers(n??{});i.set(Wm,e?Bm:Fm),i.set(Cm,"1");const s=(a=(r=i.get("User-Agent"))!==null&&r!==void 0?r:i.get("X-User-Agent"))!==null&&a!==void 0?a:"connect-es/2.2.0";return i.set(Ym,s),o&&i.set(ym,s),t!==void 0&&i.set(Im,`${t}m`),i}function ka(e,t,n,o,r,a){const i=Kg(e,t,n,a);return r!=null&&i.set(Ws,r.name),o.length>0&&i.set(vm,o.map(s=>s.name).join(",")),i}function zg(e){switch(e){case 400:return S.Internal;case 401:return S.Unauthenticated;case 403:return S.PermissionDenied;case 404:return S.Unimplemented;case 429:return S.Unavailable;case 502:return S.Unavailable;case 503:return S.Unavailable;case 504:return S.Unavailable;default:return S.Unknown}}function jg(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(vs),headerError:Is(t)};throw new B(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),zg(e),t)}function Ua(e,t,n){const{foundStatus:o,headerError:r}=jg(t,n);let a;const i=n.get(Ws);if(i!==null&&i.toLowerCase()!=="identity"&&(a=e.find(s=>s.name===i),!a))throw new B(`unsupported response encoding "${i}"`,S.Internal,n);return{foundStatus:o,compression:a,headerError:r}}var Ja=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Ke=function(e){return this instanceof Ke?(this.v=e,this):new Ke(e)},Tg=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(E){return Promise.resolve(E).then(p,h)}}function s(p,E){o[p]&&(r[p]=function(V){return new Promise(function(y,J){a.push([p,V,y,J])>1||l(p,V)})},E&&(r[p]=E(r[p])))}function l(p,E){try{c(o[p](E))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof Ke?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,E){p(E),a.shift(),a.length&&l(a[0][0],a[0][1])}};function Hg(e){return{async unary(t,n,o,r,a,i){const s=Xa(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await xm({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:Ia(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??Wa(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:un(Vs([l.message]),Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ua(e.acceptCompression,c.status,c.header),{trailer:f,message:p}=await hm(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,va()),async E=>{var V,y,J,d;let m,A;try{for(var b=!0,Z=Ja(E),G;G=await Z.next(),V=G.done,!V;b=!0){d=G.value,b=!1;const C=d;if(C.end){if(A!==void 0)throw new B("protocol error: received extra trailer",S.Unimplemented);A=C.value}else{if(m!==void 0)throw new B("protocol error: received extra output message for unary method",S.Unimplemented);m=C.value}}}catch(C){y={error:C}}finally{try{!b&&!V&&(J=Z.return)&&await J.call(Z)}finally{if(y)throw y.error}}return{trailer:A,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new B("protocol error: missing trailer",c.header.has("Grpc-Status")?S.Unimplemented:S.Unknown);if(wa(f,c.header),p===void 0)throw new B("protocol error: missing output message for unary method",f.has("Grpc-Status")?S.Unimplemented:S.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:p,trailer:f}}})},async stream(t,n,o,r,a,i){const s=Xa(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Lm({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:Ia(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??Wa(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:un(l.message,Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Ua(e.acceptCompression,c.status,c.header);if(f)throw f;const p=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:un(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,va()),function(E){return Tg(this,arguments,function*(){var V,y,J,d;if(h){if((yield Ke(E[Symbol.asyncIterator]().next())).done!==!0)throw new B("protocol error: extra data for trailers-only",S.InvalidArgument);return yield Ke(void 0)}let m=!1;try{for(var A=!0,b=Ja(E),Z;Z=yield Ke(b.next()),V=Z.done,!V;A=!0){d=Z.value,A=!1;const G=d;if(G.end){if(m)throw new B("protocol error: received extra trailer",S.InvalidArgument);m=!0,wa(G.value,c.header),G.value.forEach((C,L)=>p.trailer.set(L,C));continue}if(m)throw new B("protocol error: received extra message after trailer",S.InvalidArgument);yield yield Ke(G.value)}}catch(G){y={error:G}}finally{try{!A&&!V&&(J=b.return)&&(yield Ke(J.call(b)))}finally{if(y)throw y.error}}if(!m)throw new B("protocol error: missing trailer",S.Internal)})},{propagateDownStreamError:!0})});return p}})}}}function In(e){let t=S.Internal;const n=tr(e).map(Xn);n.some(r=>r.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(r=>r.code=="ERR_STREAM_DESTROYED"||r.code=="ERR_HTTP2_INVALID_STREAM"||r.code=="ECONNRESET")?t=S.Aborted:n.some(r=>r.code=="ETIMEDOUT"||r.code=="ENOTFOUND"||r.code=="EAI_AGAIN"||r.code=="ECONNREFUSED")&&(t=S.Unavailable);const o=B.from(e,t);return o!==e&&(o.cause=e),o}function tr(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function Xn(e){const t={};return e instanceof Error&&("code"in e&&typeof e.code=="string"&&(t.code=e.code),"syscall"in e&&typeof e.syscall=="string"&&(t.syscall=e.syscall)),t}function Qg(e){switch(e){case P.PROTOCOL_ERROR:case P.INTERNAL_ERROR:case P.FLOW_CONTROL_ERROR:case P.SETTINGS_TIMEOUT:case P.FRAME_SIZE_ERROR:case P.COMPRESSION_ERROR:case P.CONNECT_ERROR:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Internal);case P.REFUSED_STREAM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Unavailable);case P.CANCEL:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Canceled);case P.ENHANCE_YOUR_CALM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.ResourceExhausted);case P.INADEQUATE_SECURITY:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);case P.HTTP_1_1_REQUIRED:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);default:break}}var P;(function(e){e[e.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",e[e.INTERNAL_ERROR=2]="INTERNAL_ERROR",e[e.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",e[e.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",e[e.STREAM_CLOSED=5]="STREAM_CLOSED",e[e.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",e[e.REFUSED_STREAM=7]="REFUSED_STREAM",e[e.CANCEL=8]="CANCEL",e[e.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",e[e.CONNECT_ERROR=10]="CONNECT_ERROR",e[e.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",e[e.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",e[e.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})(P||(P={}));var Mg=(0,Rn.promisify)(ft.gzip),Og=(0,Rn.promisify)(ft.gunzip),Dg=(0,Rn.promisify)(ft.brotliCompress),_g=(0,Rn.promisify)(ft.brotliDecompress),$g={name:"gzip",compress(e){return pn(Mg(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):pn(xs(Og(e,{maxOutputLength:t}),t))}},Pg={name:"br",compress(e){return pn(Dg(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):pn(xs(_g(e,{maxOutputLength:t}),t))}};function pn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function xs(e,t){return e.catch(n=>{var o;const r=Xn(n);let a=S.Internal,i="decompression failed";switch(r.code){case"ERR_BUFFER_TOO_LARGE":a=S.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":a=S.InvalidArgument;break;default:!((o=r.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(a=S.InvalidArgument);break}return Promise.reject(new B(i,a,void 0,void 0,n))})}function yn(e){const t=new Headers;for(const[n,o]of Object.entries(e))if(!n.startsWith(":")&&o!==void 0)if(typeof o=="string")t.append(n,o);else if(typeof o=="number")t.append(n,String(o));else for(const r of o)t.append(n,r);return t}function Ls(e,t){if(e===void 0&&t===void 0)return;const n=Object.create(null);if(t!==void 0)if(Array.isArray(t))for(let o=0;o+1<t.length;o+=2){const r=t[o],a=t[o+1];Array.isArray(n[r])?n[r].push(a):typeof n[r]=="string"?n[r]=[n[r],a]:n[r]=a}else for(const[o,r]of Object.entries(t))Array.isArray(r)?n[o]=r.concat():r!==void 0&&(n[o]=r);if(e!==void 0)if(Array.isArray(e))for(const[o,r]of e)Mn(n,o,r);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,r)=>{Mn(n,r,o)});else for(const[o,r]of Object.entries(e))Mn(n,o,r);return n}function Mn(e,t,n){t=t.toLowerCase();const o=e[t];Array.isArray(o)?o.push(n):o===void 0?e[t]=n:e[t]=[o.toString(),n]}var Ks=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(e,t,n){var o,r,a,i;this.s=ho(),this.shuttingDown=[],this.authority=new URL(e).origin,this.http2SessionOptions=n,this.options={pingIntervalMs:(o=t?.pingIntervalMs)!==null&&o!==void 0?o:Number.POSITIVE_INFINITY,pingTimeoutMs:(r=t?.pingTimeoutMs)!==null&&r!==void 0?r:1e3*15,pingIdleConnection:(a=t?.pingIdleConnection)!==null&&a!==void 0?a:!1,idleConnectionTimeoutMs:(i=t?.idleConnectionTimeoutMs)!==null&&i!==void 0?i:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(e,t,n,o){for(;;){const r=await this.gotoReady();try{const a=r.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return r.registerRequest(a),a}catch(a){if(r.conn.closed||r.conn.destroyed)continue;throw a}}}notifyResponseByteRead(e){this.s.t=="ready"&&this.s.responseByteRead(e);for(const t of this.shuttingDown)t.responseByteRead(e)}abort(e){var t,n,o;const r=e??new B("connection aborted",S.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,r);for(const a of this.shuttingDown)(o=a.abort)===null||o===void 0||o.call(a,r);this.setState(en(r))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(On(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(On(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(e){var t,n;if((n=(t=this.s).onExitState)===null||n===void 0||n.call(t),this.s.t=="ready"&&this.s.isShuttingDown()){const o=this.s;this.shuttingDown.push(o),o.onClose=o.onError=()=>{const r=this.shuttingDown.indexOf(o);r!==-1&&this.shuttingDown.splice(r,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(eb(o,this.options))},o=>{this.setState(en(o))});break;case"ready":e.onClose=()=>this.setState(ho()),e.onError=o=>this.setState(en(o));break;case"closed":break;case"error":break}this.s=e}verify(e){return this.verifying!==void 0?this.verifying:(this.verifying=e.verify().then(t=>{t||this.setState(On(this.authority,this.http2SessionOptions))},t=>{this.setState(en(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function ho(){return{t:"closed"}}function qg(e){return{t:"error",reason:e}}function en(e){return e instanceof B&&B.from(e).code==S.Canceled?ho():qg(e)}function On(e,t){let n,o;const r=new Promise((c,u)=>{n=c,o=u}),a=Ee.connect(e,t);a.on("connect",i),a.on("error",s);function i(){n?.(a),l()}function s(c){o?.(In(c)),l()}function l(){a.off("connect",i),a.off("error",s)}return{t:"connecting",conn:r,abort(c){a.destroyed||a.destroy(void 0,Ee.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function eb(e,t){tb(e),e.unref();let n=Date.now(),o=0,r,a,i=!1,s=!1,l;V();const c={t:"ready",conn:e,streamCount(){return o},requiresVerify(){return Date.now()-n>t.pingIntervalMs},isShuttingDown(){return i},onClose:void 0,onError:void 0,registerRequest(b){o++,o==1&&(e.ref(),u(),E()),b.once("response",()=>{n=Date.now(),u()}),b.once("close",()=>{o--,o==0&&(e.unref(),u(),V())})},responseByteRead(b){b.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(b=>{const Z=()=>{b(!1)};p(()=>{o==0&&e.unref(),e.off("error",Z),e.off("close",Z),b(!0)}),e.once("error",Z),e.once("close",Z)})},abort(b){e.destroyed||(e.once("error",()=>{}),e.destroy(b,Ee.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(A(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(r=Dn(f,t.pingIntervalMs))}function h(){clearTimeout(r),clearTimeout(a)}function f(){p(u)}function p(b){clearTimeout(a),a=Dn(()=>{e.destroy(new B("PING timed out",S.Unavailable),Ee.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((Z,G)=>{if(clearTimeout(a),Z===null){if(G>t.pingTimeoutMs){e.destroy(new B("PING timed out",S.Unavailable),Ee.constants.NGHTTP2_CANCEL);return}n=Date.now(),b()}})}function E(){clearTimeout(l)}function V(){l=Dn(y,t.idleConnectionTimeoutMs)}function y(){e.close(),d()}function J(b,Z,G){if(b===Ee.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new B("received GOAWAY without any open streams",S.Canceled),Ee.constants.NGHTTP2_NO_ERROR);return}i=!0;const C=Buffer.from("too_many_pings","ascii");G?.equals(C)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var b;A(),(b=c.onClose)===null||b===void 0||b.call(c)}function m(b){var Z,G;if(A(),s){const C=new B(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${Ee.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,S.ResourceExhausted);(Z=c.onError)===null||Z===void 0||Z.call(c,C)}else(G=c.onError)===null||G===void 0||G.call(c,In(b))}function A(){h(),E(),e.off("error",m),e.off("close",d),e.off("goaway",J)}return e.on("error",m),e.on("close",d),e.on("goaway",J),c}function Dn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function tb(e){if(e.connecting)throw new B("expected open session, but it is connecting",S.Internal);if(e.destroyed)throw new B("expected open session, but it is destroyed",S.Internal);if(e.closed)throw new B("expected open session, but it is closed",S.Internal)}function xa(e){var t;return e.httpVersion=="1.1"?nb(e.nodeOptions):ob((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Ks(n)))}function nb(e){return async function(n){const o=js(n.signal);return new Promise((r,a)=>{o.onError(i=>{a(i)}),rb(o,n.url,Object.assign(Object.assign({},e),{headers:Ls(n.header,e?.headers),method:n.method}),i=>{zs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;r({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:yn(s.headers),body:ab(o,s,c),trailer:c})})})})}}function ob(e){return function(n){const o=js(n.signal),r=e(n.url);return new Promise((a,i)=>{o.onError(s=>{i(s)}),ib(o,r,n.url,n.method,Ls(n.header),{},s=>{zs(n,s,o),s.on("response",l=>{var c;a({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:yn(l),body:lb(o,s,r),trailer:sb(s)})})})})}}function rb(e,t,n,o){let r;new URL(t).protocol.startsWith("https")?r=to.request(t,n):r=eo.request(t,n),e.onError(a=>r.destroy(a)),r.flushHeaders(),r.on("error",e.error),r.on("socket",function(i){function s(){i.off("connect",s),o(r)}i.readyState==="open"?o(r):i.on("connect",s)})}function ab(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&(yn(t.trailers).forEach((a,i)=>{n.set(i,a)}),e.close()),r},throw(r){throw e.error(r),r}}}}}function ib(e,t,n,o,r,a,i){const s=new URL(n);if(s.origin!==t.authority){const l=`cannot make a request to ${s.origin}: the http2 session is connected to ${t.authority}`;e.error(new B(l,S.Internal));return}t.request(o,s.pathname+s.search,r,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==S.Canceled?P.CANCEL:P.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&tr(u).map(Xn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Qg(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function sb(e){const t=new Headers;return e.on("trailers",n=>{yn(n).forEach((o,r)=>{t.set(r,o)})}),t}function lb(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&e.close(),n?.notifyResponseByteRead(t),r},throw(r){throw e.error(r),r}}}}}async function zs(e,t,n){if(e.body===void 0){await new Promise(r=>t.end(r));return}const o=e.body[Symbol.asyncIterator]();return new Promise(r=>{a();function a(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(r);return}t.write(i.value,"binary",s=>{if(s==null){a();return}o.throw!==void 0&&o.throw(In(s)).catch(()=>{}),!(t.writableEnded&&tr(s).map(Xn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function js(e){let t,n=!1,o,r=[];const a={error(l){if(!n){n=!0,o=l instanceof B?l:In(l),t?.(o);for(const c of r)c(o);i()}},close(){n||(n=!0,t&&t(new B("sentinel completed early",S.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):r.push(l)},race(l){let c;const u=new Promise((h,f)=>{c=h,t=f});return l.then(h=>{c?.(h)},h=>{t?.(h)}),n&&t?.(o??new B("sentinel completed early",S.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),r=[],t=void 0}function s(){a.error(jt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&a.error(jt(e))),a}function cb(e){var t,n,o,r;let a;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Ks(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),a=xa({httpVersion:"2",sessionProvider:()=>i})}else a=xa({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:a,useBinaryFormat:(t=e.useBinaryFormat)!==null&&t!==void 0?t:!0,interceptors:(n=e.interceptors)!==null&&n!==void 0?n:[],sendCompression:(o=e.sendCompression)!==null&&o!==void 0?o:null,acceptCompression:(r=e.acceptCompression)!==null&&r!==void 0?r:[$g,Pg]}),am(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function db(e){return Hg(cb(e))}function ub(e){return`cli/${e??"unknown"}`}var mb=ub("0.1.0-dev.60.1.7a371f3"),hb="/grpc";function gb(e){return`${e.replace(/\/+$/,"")}${hb}`}var bb=e=>async t=>{const{token:n,lang:o}=Us();return t.header.set("X-Hagi-Client",mb),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},tn;function Ce(){const e=gb(Us().baseUrl);return(!tn||tn.baseUrl!==e)&&(tn={baseUrl:e,transport:db({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[bb]})}),tn.transport}function ze(e){return e?Dd(e).toISOString():null}function An(e){return e.length>0?e:null}function La(e,t){const n={earliestAt:ze(e),latestAt:ze(t)};return n.earliestAt||n.latestAt?n:null}function nn(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:ze(e.leaseExpiresAt),maxHoldExpiresAt:ze(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:An(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:ze(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:ze(e.requisitionedAt)}:null,checkInWindow:La(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:La(e.turnEarliestAt,e.turnLatestAt)}}function pb(e){return{lockId:e.lockId,holderOwnerId:An(e.holderOwnerId),holderLabel:An(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:ze(e.leaseExpiresAt),holdStartedAt:ze(e.holdStartedAt),queueLength:e.queueLength}}function Ab(e){return e.locks.map(pb)}var Re=()=>Ie(Ah,Ce()),ut=()=>Ie(Wh,Ce()),$e=()=>Ie(Bh,Ce()),Ka=()=>Ie(Uh,Ce()),he=()=>Ie(eg,Ce()),za=()=>Ie(og,Ce()),Be=()=>Ie(Ag,Ce()),on=()=>Ie(Ng,Ce()),Ft=()=>Ie(wg,Ce()),mt=()=>Ie(Ug,Ce());async function w(e,t){return Lg(e,await t)}function fb(){return{listSessions:async e=>w(cg,Be().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>w(ig,Be().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>w(fg,on().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>w(ag,Be().openSession({body:D(gg,e)})),createChatSession:async e=>w(rg,Be().openChatSession({body:D(hg,e)})),createHagiTaskSession:async e=>w(mg,Be().startHagiTaskSession({body:D(pg,e)})),listHagiTaskSchemas:async()=>w(wh,Ka().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>w(kh,Ka().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>w(sg,Be().saveSession({sessionId:e,body:D(bg,t)})),addSessionUserMetadata:async(e,t)=>w(lg,Be().addSessionUserMetadata({sessionId:e,entries:t})),deleteSession:async(e,t)=>w(dg,Be().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>w(Rg,on().postSessionMessage({sessionId:e,body:D(Vg,t)})),steerSession:async(e,t)=>w(Zg,on().steerSession({sessionId:e,body:D(Sg,t)})),optimizeProposal:async(e,t)=>w(Wg,Ft().optimizeSessionProposal({sessionId:e,body:D(Yg,t)})),generateProposal:async(e,t)=>w(vg,Ft().generateProposal({sessionId:e,body:D(Cg,t)})),executeProposal:async(e,t)=>w(Xg,Ft().executeProposal({sessionId:e,body:D(Fg,t??{})})),archiveProposal:async(e,t)=>w(Ig,Ft().archiveSession({sessionId:e,body:D(Bg,t??{})})),completeProposal:async e=>w(yg,Ft().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>w(Eg,on().submitSessionAnnotations({sessionId:e,body:D(Gg,t)})),listProjects:async()=>w(tg,za().getAggregatedData({forceRefresh:!1})),getTokenMonitorUsage:async()=>w(ng,za().getTokenMonitorUsage({})),createProject:async e=>w(oh,Re().createProject({body:D(mh,e)})),updateProject:async(e,t)=>w(rh,Re().updateProject({id:e,body:D(hh,t)})),deleteProject:async e=>{await Re().deleteProject({id:e})},getMonoSpecsManagement:async e=>w(ah,Re().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>w(dh,Re().updateMonoSpecsManagement({projectId:e,body:D(bh,t)})),initializeMonoSpecsManagement:async e=>w(ch,Re().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>w(ih,Re().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>w(uh,Re().validateMonoSpecsConfig({body:D(ph,e)})),cloneMonoSpecsRepositories:async(e,t)=>w(sh,Re().cloneMonoSpecsRepositories({projectId:e,body:D(gh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>w(lh,Re().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>w(vh,$e().listScheduledPlans({})),getPlan:async e=>w(Ih,$e().getScheduledPlan({id:e})),createPlan:async e=>w(Xh,$e().createScheduledPlan({body:D(Fa,e)})),updatePlan:async(e,t)=>w(yh,$e().updateScheduledPlan({id:e,body:D(Fa,t)})),deletePlan:async e=>{await $e().deleteScheduledPlan({id:e})},runPlan:async e=>w(Yh,$e().runScheduledPlan({id:e})),startPlan:async e=>w(Ch,$e().startScheduledPlan({id:e})),listVaults:async()=>w(fh,ut().listVaults({})),createVault:async e=>w(Zh,ut().createVault({body:D(Gh,e)})),updateVault:async(e,t)=>w(Rh,ut().updateVault({id:e,body:D(Nh,t)})),deleteVault:async(e,t)=>w(Eh,ut().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>w(Sh,ut().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>w(Vh,ut().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>w(ug,Be().archiveChatSession({sessionId:e})),listLocalSkills:async()=>w(Jh,he().getLocalSkills({})),uninstallLocalSkill:async e=>w(xh,he().uninstallLocalSkill({body:D(Dh,e)})),setBuiltInSkillAvailability:async e=>w(Lh,he().setBuiltInSkillAvailability({body:D(_h,e)})),searchSkillGallery:async e=>w(Kh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>w(zh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>w(jh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>w(Oh,he().installSkill({body:D(qh,e)})),listTrustedSkillProviders:async()=>w(Th,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>w(Hh,he().upsertTrustedSkillProvider({body:D($h,e)})),deleteTrustedSkillProvider:async e=>w(Qh,he().deleteTrustedSkillProvider({body:D(Ph,e)})),resetTrustedSkillProviders:async()=>w(Mh,he().resetTrustedSkillProviders({})),acquireLock:async e=>nn((await mt().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>nn((await mt().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>nn((await mt().renewLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)},{signal:t})).result),releaseLock:async e=>{const t=await mt().releaseLock({lockId:e.lockId,ownerId:e.ownerId,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)});return{lockId:e.lockId,ownerId:e.ownerId,released:t.released,previousStatus:t.previousStatus,holderOwnerId:An(t.holderOwnerId)}},requisitionLock:async e=>nn((await mt().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>Ab(await mt().listLocks({prefix:e}))}}function Ts(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Yn(e){return new Promise(t=>{setTimeout(t,e)})}function k(e){const t=e?.trim();return t||void 0}function x(e,t){const n=k(e);if(!n)throw new N(`${t} is required.`);return n}function go(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Hs(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:fb(),env:e,io:t,sleep:Yn}}function Zb(e){return e.option("--base-url <url>",'Backend API base URL. Overrides HAGI_API_BASE_URL and the "baseUrl" config file entry.').option("--token <token>","Bearer token for backend API calls. Overrides HAGI_API_TOKEN.").option("--lang <lang>","Accept-Language value for backend API calls. Overrides HAGI_API_LANG.")}function I(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function X(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:th({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var Rb=5e3,Eb=1e3,Sb=1e4;function Qs(e){return Math.min(Eb*2**Math.max(0,e-1),Sb)}async function bo(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const r=new Promise(a=>{o=a,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),r])}finally{n.removeEventListener("abort",o)}}function Vb(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function Gb(e){const{read:t,clock:n,signal:o}=e,r=n.now(),a=e.timeoutSeconds*1e3;let i=e.initial,s=0,l=0;const c=u=>({outcome:u,status:i,polls:s,elapsedSeconds:Math.round((n.now()-r)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=a-(n.now()-r);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let p;try{p=await t(h,o)}catch(y){if(o?.aborted)return c("cancelled");if(!Bs(y))throw y;l+=1,await bo(n,Math.min(Qs(l),u),o);continue}l=0,s+=1;const E=i;if(i=p,p.status==="Holding")return c("holding");if(p.status!=="Queued")return c("lost");const V=Vb(E,p);if(V&&e.onChange?.(p),!V&&n.now()-f<1e3){const y=p.suggestedPollIntervalMs>0?p.suggestedPollIntervalMs:Rb;await bo(n,Math.min(y,Math.max(0,a-(n.now()-r))),o)}}}var Nb="HAGI_LOCK_OWNER",Wb="HAGI_SESSION_ID";function At(e){const t=e?.trim();return t||void 0}function vb(e,t){const n=At(e)??At(t.HAGI_LOCK_OWNER)??At(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${Nb} (or ${Wb}). The CLI does not invent an owner ID.`);return n}function Ib(e){const t=At(e.lockId),n=At(e.server),o=At(e.game);if(t&&(n||o))throw new N("Use either --lock-id or the pair --server and --game, not both.");if(t)return t;if(n&&o)return`${n}/${o}`;throw n||o?new N("--server and --game must be given together."):new N("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function vt(e){return e.option("--lock-id <id>","Lock to use, for example eu-1/duckov. Alternative to --server and --game.").option("--server <name>","Server name; with --game, the lock is <server>/<game>.").option("--game <name>","Game name; with --server, the lock is <server>/<game>.").option("--owner <id>","Owner ID: your own session ID. Defaults to HAGI_LOCK_OWNER, then HAGI_SESSION_ID.")}function It(e,t){return{lockId:Ib(e),ownerId:vb(e.owner,t)}}function Nt(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function nr(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new N("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function Xt(e){try{return await e()}catch(t){throw Cs(t)??t}}function Ms(e){return{now:e.now??Date.now,sleep:e.sleep??Yn}}function Xb(e,t){vt(I(e.command("acquire").description("Take the lock or join its queue. Without --wait: one call, exit 0 for Holding and Queued. With --wait: wait for the turn, exit 0 only when Holding. There is no force option."))).option("--wait","Keep waiting in the queue (long-poll) until you hold the lock. Run it as a continuous watcher.").option("--timeout <seconds>","With --wait: give up after this many seconds (default 900), release the queue entry, exit code 31.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){if(!o.wait&&o.timeout!==void 0)throw new N("--timeout needs --wait.");const r=o.wait?Nt(o.timeout,"--timeout",1)??900:void 0,a=Nt(o.leaseSeconds,"--lease-seconds",1),i=X(this,t),s=It(o,i.env),l=await Xt(()=>i.api.acquireLock({...s,leaseSeconds:a,label:k(o.label)})),c=V=>i.io.stdout(i.outputJson?v(V):Zt(V,"acquire"));if(r===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new tt(`Owner ${s.ownerId} neither holds nor queues for lock ${s.lockId} (${l.status}).`,{reported:!0});i.outputJson||c(l);const u=new AbortController,h=(t.onInterrupt??Ts)(()=>u.abort());let f;try{f=await Gb({initial:l,read:(V,y)=>i.api.getLockStatus({...s,waitSeconds:V},y),timeoutSeconds:r,clock:Ms(t),signal:u.signal,onChange:V=>{i.outputJson||i.io.stdout(mc(V))}})}finally{h()}let p;(f.outcome==="timeout"||f.outcome==="cancelled")&&(p=await i.api.releaseLock(s).then(()=>!0,()=>!1));const E={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:p};switch(i.outputJson?i.io.stdout(v({...f.status,wait:E})):i.io.stdout(f.outcome==="holding"?Zt(f.status,"status"):hc(f,p)),f.outcome){case"timeout":throw new Do(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.status.status}.`);case"cancelled":throw new U(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new tt(`The queue entry for lock ${s.lockId} was dropped (${f.status.status}).`,{reported:!0});default:}})}var yb=6e4,ja=[30*6e4,5*6e4],kt="Stop using the resource now.";function Ta(e,t){switch(t.status){case"Requisitioned":{const n=t.requisition;return`Lock ${e} LOST: requisitioned by ${n?.byOwnerId??"another owner"}${n?.at?` at ${n.at}`:""}, reason: ${n?.reason??"not given"}. ${kt}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${kt}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${kt}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${kt}`}}function Ha(e,t,n){if(!t)return null;const o=Date.parse(t),r=n?Date.parse(n):NaN;return Number.isNaN(r)?o:e.now()+(o-r)}async function Yb(e){const{lockId:t,ownerId:n,api:o,clock:r,signal:a}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=r.now(),h=null,f=null;const p=new Set;let E=0,V=null,y=!1,J=!1;const d=(A,b,Z)=>e.emit({kind:A,message:b,errorCode:Z}),m=()=>{if(f===null)return;const A=ja.filter(Z=>!p.has(Z)&&r.now()>=f-Z);if(A.length===0)return;A.forEach(Z=>p.add(Z));const b=Math.min(...A)/6e4;d("cap-warning",`Lock ${t}: the hard cap (${new Date(f).toISOString()}) is about ${b} minutes away. The lock is taken back at the cap even while heartbeating: finish and release before then.`)};for(;;){if(a.aborted)return{outcome:"stopped",beats:c};let A=u;if(f!==null)for(const Z of ja)p.has(Z)||(A=Math.min(A,f-Z));if(A>r.now()&&(await bo(r,A-r.now(),a),a.aborted))return{outcome:"stopped",beats:c};if(m(),r.now()<u)continue;let b;try{if(i===void 0){const Z=await o.getLockStatus({lockId:t,ownerId:n},a);if(Z.status!=="Holding"){const G=`Refusing to start: owner ${n} does not hold lock ${t}. ${Ta(t,Z)}`;return d("refused",G),{outcome:"refused",message:G,beats:c}}i=Z.epoch}b=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},a)}catch(Z){if(a.aborted)return{outcome:"stopped",beats:c};const G=Cs(Z);if(G){const L=`Lock ${t} LOST: ${G.message}${/stop using/i.test(G.message)?"":` ${kt}`}`;return d("lost",L,G.errorCode),{outcome:"lost",message:L,beats:c}}if(!Bs(Z))throw Z;E+=1;const C=r.now();V??=C,!y&&C-V>=yb&&(y=!0,d("outage",`Backend unreachable for ${Math.round((C-V)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!J&&h!==null&&C>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=r.now()+Qs(E);continue}if(b.status!=="Holding"){const Z=Ta(t,b);return d("lost",Z),{outcome:"lost",message:Z,beats:c}}c+=1,V!==null&&(y&&d("recovered",`Backend reachable again after ${Math.round((r.now()-V)/1e3)}s; heartbeat resumed.`),V=null,y=!1,J=!1),E=0,h=Ha(r,b.leaseExpiresAt,b.serverTime),f=Ha(r,b.maxHoldExpiresAt,b.serverTime)??f,s??=b.suggestedHeartbeatIntervalMs>0?b.suggestedHeartbeatIntervalMs:120*1e3,l?e.verbose&&d("beat",`Heartbeat ok: valid until ${b.leaseExpiresAt??"unknown"}, hard cap ${b.maxHoldExpiresAt??"unknown"}.`):(l=!0,d("started",`Heartbeat started for lock ${t} as ${n} (epoch ${b.epoch}): renewing every ${s/1e3}s, valid until ${b.leaseExpiresAt??"unknown"}, hard cap ${b.maxHoldExpiresAt??"unknown"}. Quiet unless something needs you.`)),u=r.now()+s}}function Cb(e,t){vt(I(e.command("heartbeat").description("Keep a held lock alive: renew now and then every interval. Long-running and quiet on success; run it under a watcher. Exit code 32 when the lock is lost. Stopping it (SIGINT or SIGTERM) exits 0 and does not release."))).option("--epoch <n>","Epoch of your grant. Without it, the epoch of the first status read is used, and only while you hold the lock.").option("--interval <seconds>","Seconds between renewals (default: the interval the backend suggests, 120).").option("--lease-seconds <n>","Requested lease length in seconds on every renewal (the backend clamps it to 30 to 600).").option("--verbose","Also print one line per successful renewal.").action(async function(o){const r=nr(o.epoch),a=Nt(o.interval,"--interval",1),i=Nt(o.leaseSeconds,"--lease-seconds",1),s=X(this,t),l=It(o,s.env),c=new AbortController,u=(t.onInterrupt??Ts)(()=>c.abort());try{const h=await Yb({...l,epoch:r,intervalSeconds:a,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Ms(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
59
+ `:`${f.message}
60
+ `)}});if(h.outcome!=="stopped")throw new tt(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Bb(e,t){I(e.command("list").description("List the locks that have a holder or a queue. An empty result exits 0.")).option("--prefix <text>","Only locks whose ID starts with this text.").action(async function(o){const r=X(this,t),a=await Xt(()=>r.api.listLocks(k(o.prefix)));r.io.stdout(r.outputJson?v({locks:a}):bc(a))})}function Fb(e,t){vt(I(e.command("release").description("Give the lock back, or leave the queue. Exit code 0 whether or not something was released. Stop the heartbeat first."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused, so a slow old holder cannot release a newer grant.").action(async function(o){const r=nr(o.epoch),a=X(this,t),i=It(o,a.env),s=await Xt(()=>a.api.releaseLock({...i,epoch:r}));a.io.stdout(a.outputJson?v(s):gc(s))})}function wb(e,t){vt(I(e.command("renew").description("Renew the lease once (one heartbeat). Exit code 32 when the lock is no longer yours. Prefer `heartbeat` for keeping a lock alive."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").action(async function(o){const r=nr(o.epoch),a=Nt(o.leaseSeconds,"--lease-seconds",1),i=X(this,t),s=It(o,i.env),l=await Xt(()=>i.api.renewLock({...s,epoch:r,leaseSeconds:a}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?v(l):Zt(l,"renew")),new tt(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?v(l):Zt(l,"renew"))})}var Qa=200;function kb(e,t){vt(I(e.command("requisition").description("EMERGENCY: take the lock at once and displace the holder. Only when the user explicitly ordered a forced take; otherwise use acquire and queue."))).requiredOption("--reason <text>","Why the lock is taken (1 to 200 characters). Quote the user's order; the displaced owner is told.").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){const r=k(o.reason);if(!r||r.length>Qa)throw new N(`--reason must be 1 to ${Qa} characters.`);const a=X(this,t),i=It(o,a.env),s=await Xt(()=>a.api.requisitionLock({...i,reason:r,label:k(o.label)}));a.io.stdout(a.outputJson?v(s):Zt(s,"requisition"))})}function Ub(e,t){vt(I(e.command("status").description("Read this owner's state on a lock: Holding, Queued, Expired, Requisitioned or None. Exit code 0 for all of them."))).option("--wait-seconds <n>","Long-poll: return early when the state changes, or after this many seconds (the server caps it at 25).").action(async function(o){const r=Nt(o.waitSeconds,"--wait-seconds",0),a=X(this,t),i=It(o,a.env),s=await Xt(()=>a.api.getLockStatus({...i,waitSeconds:r}));a.io.stdout(a.outputJson?v(s):Zt(s,"status"))})}function Jb(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");Xb(n,t),Ub(n,t),wb(n,t),Cb(n,t),Fb(n,t),kb(n,t),Bb(n,t)}var xb=[Jb];function Lb(e,t,n=xb){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const r of n)r(o,t)}function Kb(e,t){I(e.command("archive").description("Archive a chat session through the dedicated chat archive endpoint.")).requiredOption("--session-id <id>","Chat session id to archive.").action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await r.api.archiveChat(a);if(r.outputJson){r.io.stdout(v({sessionId:a,message:i.message}));return}r.io.stdout(`Chat archived
61
+ sessionId ${a}
62
+ message ${i.message}
63
+ `)})}var Os=(function(e){return e.INIT="Init",e.COMPLETED="Completed",e.ARCHIVED="Archived",e.DRAFTING="Drafting",e.EXECUTION_COMPLETED="ExecutionCompleted",e.OPTIMIZING="Optimizing",e.OPENSPECING="Openspecing",e.REVIEWING="Reviewing",e.EXECUTING="Executing",e.ARCHIVING="Archiving",e})({});function Ma(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function zb(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function jb(e){const t=e.chatHero;return t?.heroId?{heroId:t.heroId,name:t.name}:void 0}function Tb(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function Ae(e){const t=zb(e),n=jb(e);return{sessionId:Ma(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:Ma(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Os.ARCHIVED,lastActiveAt:e.lastActiveAt??void 0,enableIndependentWorkspace:e.enableIndependentWorkspace,baseBranch:e.baseBranch??void 0,metadata:e.metadata??void 0,...t?{userMetadata:t}:{},chatExecutorType:e.chatExecutorType??void 0,...n?{chatHero:n}:{}}}function Ds(e){return{sessions:e.sessions.map(Ae)}}function _s(e,t){return t.length===0?`No ${e.toLowerCase()} found.
64
+ `:`${e} (${t.length})
65
+ ${re([{header:"Session ID",value:n=>n.sessionId},{header:"Title",value:n=>n.title},{header:"Status",value:n=>n.status},{header:"Project ID",value:n=>n.projectId},{header:"Archived",value:n=>n.archived?"yes":"no"}],t)}
66
+ `}function Je(e,t=[]){return q([["sessionId",e.sessionId],["type",e.type],["title",e.title],["status",e.status],["projectId",e.projectId],["proposalName",e.proposalName],["independentWorkspace",String(e.enableIndependentWorkspace)],["baseBranch",e.baseBranch],["chatExecutorType",e.chatExecutorType],["chatHero",e.chatHero?`${e.chatHero.name} (${e.chatHero.heroId})`:void 0],["metadata",e.metadata],["userMetadata",e.userMetadata?Tb(e.userMetadata):void 0],...t])}var Hb="No running task took the message, so it was sent as the next message.";function or(e){return{requested:e.requested,source:e.source,effective:e.effective,...e.outcome!==void 0?{outcome:e.outcome}:{},...e.messageId!==void 0?{messageId:e.messageId}:{},...e.reason!==void 0?{reason:e.reason}:{}}}function rr(e,t,n,o=[],r){const a=r&&r.source!=="default"?[["steer",`${r.requested?"on":"off"} (${r.source})`],["effective",r.effective?"yes":"no"],["outcome",r.outcome],["messageId",r.messageId],["reason",r.reason]]:[],i=r?.effective&&r.outcome==="queued"?`${Hb}
67
+ `:"";return`${e}
68
+ ${q([["sessionId",t],["message",n.message],...o,...a])}${i}`}function Qb(e,t){if(e.timedOut)return`wait: timed out after ${e.elapsedSeconds}s; status is still ${t}
69
+ `;if(t==="WaitingForReply")return`wait: settled at ${t} after ${e.elapsedSeconds}s; a person must answer
70
+ `;const n=e.transitionSeen?"a status change was seen":"no status change was seen";return`wait: settled at ${t} after ${e.polls} poll(s) in ${e.elapsedSeconds}s; ${n}
71
+ `}function Mb(e){if(e.messages.length===0)return`No messages found.
72
+ `;const t=e.messages.map(n=>{const o=n.contentBlocks??[],r=o.filter(s=>s.type==="Text"&&typeof s.text=="string"),a=o.length-r.length,i=[`[${n.timestamp}] ${n.type}`];for(const s of r)for(const l of s.text.split(`
73
+ `))i.push(` ${l}`);return a>0&&i.push(` (${a} other block${a===1?"":"s"} not shown)`),i.join(`
74
+ `)});return`Messages (${e.messages.length} of ${e.totalCount})
75
+ ${t.join(`
76
+
77
+ `)}
78
+ `}var Ob={readFile:e=>(0,Y.readFileSync)(e,"utf8"),readStdin:()=>(0,Y.readFileSync)(0,"utf8")},Db=['Session metadata entry as key=value (repeatable). Split at the first "=", so a value may contain "=".',"Write-once and visible to every reader of the session: do not put secrets in it."].join(" "),_b=["Read session metadata from a JSON object of string values, from a file or from stdin (-). Repeatable.","Keys and values follow the same rules as --metadata."].join(" ");function $s(){return["Metadata limits (the backend checks them and reports a violation as an error):"," - at most 16 entries in total;",' - key: 1 to 64 characters matching ^[a-z][a-z0-9._-]{0,63}$ (lowercase letters, digits, "." "_" "-", starting with a letter);'," - value: 1 to 512 characters, with no control characters;"," - each key may appear once across --metadata and --metadata-json."].join(`
79
+ `)}function $b(e,t){return[$s(),"","The metadata is returned as userMetadata in --json output and is shown in the human output when present.","","Example (a master session and a worker session that carry role markers, the worker naming its master):",` hagi ${e} ${t} --metadata role=master --metadata batch=2026-11-07`,` hagi ${e} ${t} --metadata role=worker --metadata master=<master-session-id>`].join(`
80
+ `)}function Oa(e,t){return[...t??[],e]}function Ps(e,t,n){return e.option("--metadata <key=value>",Db,Oa).option("--metadata-json <file|->",_b,Oa).addHelpText("after",`
81
+ ${$b(t,n)}
82
+ `)}function Pb(e){const t=e.indexOf("=");if(t===-1)throw new N(`--metadata expects key=value, got "${e}".`);const n=e.slice(0,t);if(n==="")throw new N(`--metadata key is empty in "${e}".`);return[n,e.slice(t+1)]}function qb(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n]==="\\")n+=1;else if(e[n]==='"')return n;return e.length-1}function ep(e){const t=[];let n=0;for(let o=0;o<e.length;o+=1){const r=e[o];if(r==='"'){const a=qb(e,o);let i=a+1;for(;i<e.length&&/\s/.test(e[i]);)i+=1;n===1&&e[i]===":"&&t.push(JSON.parse(e.slice(o,a+1))),o=a}else r==="{"||r==="["?n+=1:(r==="}"||r==="]")&&(n-=1)}return t}function ar(e){return e==="-"?"stdin":e}function tp(e,t){const n=ar(t);let o;try{o=JSON.parse(e)}catch(a){throw new N(`--metadata-json ${n} is not valid JSON: ${a instanceof Error?a.message:String(a)}`)}if(o===null||typeof o!="object"||Array.isArray(o))throw new N(`--metadata-json ${n} must be a JSON object of string values.`);const r=[];for(const[a,i]of Object.entries(o)){if(a==="")throw new N(`--metadata-json ${n} has an empty key.`);if(typeof i!="string")throw new N(`--metadata-json ${n}: the value of "${a}" must be a string.`);r.push([a,i])}return{entries:r,keys:ep(e)}}function qs(e,t=Ob){const n=new Map,o=(r,a)=>{if(n.has(r))throw new N(`Metadata key "${r}" is given more than once. Each key may appear once across --metadata and --metadata-json.`);n.set(r,a)};for(const r of e.entries??[]){const[a,i]=Pb(r);o(a,i)}for(const r of e.jsonSources??[]){const{entries:a,keys:i}=tp(np(r,t),r),s=new Set;for(const l of i){if(s.has(l))throw new N(`Metadata key "${l}" is given more than once in --metadata-json ${ar(r)}.`);s.add(l)}for(const[l,c]of a)o(l,c)}return n.size===0?void 0:Object.fromEntries(n)}function np(e,t){let n;try{n=e==="-"?t.readStdin():t.readFile(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new N(`Could not read --metadata-json ${ar(e)}: ${r}`)}return n.replace(/^\uFEFF/,"")}var Cn=(function(e){return e.CLAUDE_CODE_CLI="ClaudeCodeCli",e.CODEX_CLI="CodexCli",e.GIT_HUB_COPILOT="GitHubCopilot",e.CODEBUDDY_CLI="CodebuddyCli",e.OPEN_CODE_CLI="OpenCodeCli",e.IFLOW_CLI="IFlowCli",e.HERMES_CLI="HermesCli",e.QODER_CLI="QoderCli",e.KIRO_CLI="KiroCli",e.KIMI_CLI="KimiCli",e.GEMINI_CLI="GeminiCli",e.DEEP_AGENTS_CLI="DeepAgentsCli",e})({});function op(e,t){Ps(I(e.command("create").description("Create a normal chat session.")).requiredOption("--title <title>","Chat session title.").requiredOption("--project-id <id>","Owning project id.").option("--hero-id <id>","Optional bound hero id.").addOption(new Ve("--executor-type <type>","Optional executor override.").choices(Object.values(Cn))),"chat create",'--title "<title>" --project-id <id>').action(async function(o){const r=X(this,t),a=x(o.title,"--title"),i=x(o.projectId,"--project-id"),s=qs({entries:o.metadata,jsonSources:o.metadataJson}),l=Ae(await r.api.createChatSession({title:a,projectId:i,heroId:k(o.heroId),executorType:o.executorType,...s?{metadata:s}:{}}));if(r.outputJson){r.io.stdout(v({session:l}));return}r.io.stdout(`Chat session created
83
+ ${Je(l)}`)})}function rp(e,t){I(e.command("delete").description("Delete a chat session.")).requiredOption("--session-id <id>","Chat session id to delete.").action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await r.api.deleteSession(a,!1);if(r.outputJson){r.io.stdout(v({sessionId:a,deleted:!0,message:i.message}));return}r.io.stdout(`Chat deleted
84
+ sessionId ${a}
85
+ message ${i.message}
86
+ `)})}var ir=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function ap(e,t){I(e.command("list").description("List normal chat sessions.")).action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const r=X(this,t),a=Ds(await r.api.listSessions({type:ir.CHAT,projectId:k(o.projectId),projectIds:go(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(_s("Chat sessions",a.sessions))}).option("--project-id <id>","Filter chat sessions by a single project id.").option("--project-ids <ids...>","Filter chat sessions by multiple project ids.").option("--active-only","Only return non-archived chat sessions.").option("--include-archived","Include archived chat sessions.")}var ip="the backend does not support Steer",Da="HAGI_SEND_STEER";function sr(){return new Ve("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function lr(){return new Ve("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var sp=new Set(["1","true","yes","on"]),lp=new Set(["0","false","no","off"]);function cp(e){const t=Se(e[Da]);if(t===void 0)return;const n=t.toLowerCase();if(sp.has(n))return!0;if(lp.has(n))return!1;throw new N(`${Da} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function dp({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=cp(t);if(n!==void 0)return{requested:n,source:"env"};const o=qm(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function cr(e){const{context:t,sessionId:n,content:o,mode:r,executorType:a,steerFlag:i}=e,s=dp({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:r,executorType:a})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...r!==void 0?["--mode"]:[],...a!==void 0?["--executor-type"]:[]];if(c.length>0){if(s.source==="flag")throw new N(`--steer cannot be combined with ${c.join(" or ")}.`);return l(`${c.join(" or ")} cannot be combined with Steer`)}try{const u=await t.api.steerSession(n,{content:o}),h=u.outcome==="steered"?"steered":"queued";return{message:h==="steered"?"Steered":"Queued",steer:{requested:!0,source:s.source,effective:!0,outcome:h,...u.messageId!==void 0?{messageId:u.messageId}:{}}}}catch(u){if(s.source!=="flag"&&u instanceof B&&u.code===S.Unimplemented)return l(ip);throw u}}var dr=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function up(e,t){I(e.command("send").description("Send a follow-up message to a chat session.")).requiredOption("--session-id <id>","Chat session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Cn))).addOption(sr()).addOption(lr()).action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(v({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Chat message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function mp(e,t){const n=e.command("chat").description("Manage normal chat sessions.");ap(n,t),op(n,t),Kb(n,t),rp(n,t),up(n,t)}var hp=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function el(e,t="--hero"){const n=e.trim();if(n==="")throw new N(`${t} needs a nonblank Hero name or ID.`);return hp.test(n)?{heroId:n}:{heroName:n}}async function gp(){const e=[];for await(const t of process.stdin)e.push(typeof t=="string"?Buffer.from(t):t);return Buffer.concat(e).toString("utf8")}async function Bn(e){const t=e.trim();if(!t)throw new N("Provide --input <file> or --input - for stdin.");const n=t==="-"?await gp():await(0,rc.readFile)(t,"utf8");try{return JSON.parse(n)}catch(o){throw new N(`Invalid JSON input from ${t}: ${o instanceof Error?o.message:String(o)}`)}}var bp=["first","random"];async function pp(e){let t;try{t=await Bn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read HagiTask input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`HagiTask input from ${e} must be a JSON object.`);return t}function Ap(e,t,n){if(!t&&!n)throw new N("Provide --task-id or --prompt-id.");if(e.input!==void 0&&!t)throw new N("--input requires --task-id.");if(e.targetBranchName&&e.targetBranchMode!=="new-custom")throw new N("--target-branch-name requires --target-branch-mode new-custom.");if(e.targetBranchMode==="new-custom"&&!k(e.targetBranchName))throw new N("--target-branch-name is required when --target-branch-mode is new-custom.");const o=k(e.heroSelectionMode);if(o&&!bp.includes(o))throw new N("--hero-selection-mode must be first or random.");if(e.hero!==void 0&&e.heroId!==void 0)throw new N("--hero and --hero-id cannot be given together; use one of them.")}function fp(e,t){I(e.command("create").description("Create a HagiTask session. Read the task schema first with `hagitask schema --task-id <id>`, then pass the input JSON with --input.")).requiredOption("--title <title>","HagiTask session title.").requiredOption("--project-id <id>","Owning project id.").option("--task-id <id>","HagiTask id from `hagitask list`. Required with --input.").option("--prompt-id <id>","Prompt template id, for example auto-compose-commit.en-US. Used when there is no --task-id.").option("--input <file|->","Structured task input: a JSON object file, or - to read it from stdin. Needs --task-id.").option("--message <text>","Optional message that overrides the prompt template.").option("--locale <locale>","Locale for the HagiTask prompt, for example en-US.").option("--repository-path <path>","Optional MonoSpecs sub-repository path, for example repos/cli.").option("--target-type <type>","Explicit target type: repository or vault.").option("--vault-id <id>","Registered vault id for vault-targeted execution.").option("--output-vault-id <id>","Output vault id for research-investigation tasks.").option("--reference-vault-id <ids...>","Reference vault ids the session may read.").option("--editable-vault-id <ids...>","Vault ids the session may edit.").option("--hero-id <id>","Preferred hero id. Takes precedence over --hero-selection-mode.").option("--hero <name-or-id>","Preferred hero by name or ID. A GUID is an ID, any other value is a name; cannot be combined with --hero-id.").option("--hero-selection-mode <mode>","Hero choice when no --hero or --hero-id is given: first (default) or random.").option("--need-push","Request a push after commit creation when supported.").option("--pull-rebase","Run git pull --rebase before pushing, when push is requested.").option("--target-branch-mode <mode>","Target branch mode: current, new-custom or ai-generated-new. new-custom needs --target-branch-name.").option("--target-branch-name <name>","Custom target branch name. Requires --target-branch-mode new-custom.").option("--script-key <key>","Optional stable scenario script key.").action(async function(o){const r=k(o.taskId),a=k(o.promptId);Ap(o,r,a);const i=o.hero!==void 0?el(o.hero):void 0,s=o.input!==void 0?await pp(x(o.input,"--input")):void 0,l=X(this,t),c={title:x(o.title,"--title"),projectId:x(o.projectId,"--project-id"),promptId:a,presetTaskId:r,presetTaskLocale:k(o.locale),presetTaskInput:s,message:k(o.message),repositoryPath:k(o.repositoryPath),targetType:k(o.targetType),vaultId:k(o.vaultId),outputVaultId:k(o.outputVaultId),referenceVaultIds:go(o.referenceVaultId),editableVaultIds:go(o.editableVaultId),heroId:i&&"heroId"in i?i.heroId:k(o.heroId),heroName:i&&"heroName"in i?i.heroName:void 0,heroSelectionMode:k(o.heroSelectionMode),needPush:o.needPush?!0:void 0,pullRebaseBeforePush:o.pullRebase?!0:void 0,targetBranchMode:k(o.targetBranchMode),targetBranchName:k(o.targetBranchName),scriptKey:k(o.scriptKey)},u=Ae(await l.api.createHagiTaskSession(c));if(l.outputJson){l.io.stdout(v({session:u,presetTaskId:c.presetTaskId??null,promptId:c.promptId??null,requested:c}));return}l.io.stdout(`HagiTask session created
87
+ ${Je(u,[["presetTaskId",c.presetTaskId??void 0],["presetTaskLocale",c.presetTaskLocale??void 0],["promptId",c.promptId??void 0],["repositoryPath",c.repositoryPath??void 0],["targetBranchMode",c.targetBranchMode??void 0],["targetBranchName",c.targetBranchName??void 0],["scriptKey",c.scriptKey??void 0],["heroId",c.heroId??void 0],["heroName",c.heroName??void 0],["heroSelectionMode",c.heroSelectionMode??void 0]])}`)})}var Zp=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function Rp(e){return Zp.has(e)}async function Ep(e,t,n){const o=n.now(),r=t.timeoutSeconds*1e3,a=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,f=Rp(u.status);if(l=l||f,!f&&(l||h>=a||h>=r))return c(u,{settled:!0,timedOut:!1});if(h>=r)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,r-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function _n(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function Sp(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,a])=>a!==void 0).map(([a])=>a);if(!e.wait){if(t.length>0)throw new N(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:_n(e.timeout,"--timeout",1),o=e.interval===void 0?5:_n(e.interval,"--interval",1),r=e.grace===void 0?10:_n(e.grace,"--grace",0);if(o>=n)throw new N("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:r}}function tl(e,t,n){I(e.command("get").description(n.description)).requiredOption("--session-id <id>","Session id to read.").option("--wait","Poll until the status settles: not Optimizing, Openspecing, Executing or Archiving. WaitingForReply counts as settled.").option("--timeout <seconds>","With --wait: stop waiting after this many seconds (default 900). Exit code 31 on timeout.").option("--interval <seconds>","With --wait: seconds between reads (default 5). Must be less than --timeout.").option("--grace <seconds>","With --wait: keep polling a stable status that never transitioned for this long (default 10, 0 disables).").action(async function(r){const a=Sp(r),i=x(r.sessionId,"--session-id"),s=X(this,t);if(!a){const h=Ae(await s.api.getSession(i));if(s.outputJson){s.io.stdout(v({session:h}));return}s.io.stdout(Je(h));return}const l=await Ep(()=>s.api.getSession(i),a,{now:t.now??Date.now,sleep:t.sleep??Yn}),c=Ae(l.session),u={settled:l.settled,timedOut:l.timedOut,transitionSeen:l.transitionSeen,polls:l.polls,elapsedSeconds:l.elapsedSeconds};if(s.outputJson?s.io.stdout(v({session:c,wait:u})):s.io.stdout(`${Je(c)}${Qb(u,c.status)}`),l.timedOut)throw new Do(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function Vp(e,t){tl(e,t,{description:"Read one HagiTask session by id, including a Super Commit session. With --wait, poll until its status settles.",label:"HagiTask session"})}function Gp(e){if(e===void 0)return;const t=e.trim();if(!/^\d+$/.test(t)||Number(t)<1)throw new N("--last must be a positive whole number.");return Number(t)}function nl(e,t,n){I(e.command("messages").description(n.description)).requiredOption("--session-id <id>","Session id whose messages to read.").option("--last <n>","Read only the n newest messages. Omit it to read the backend default page (50 messages).").action(async function(r){const a=Gp(r.last),i=x(r.sessionId,"--session-id"),s=X(this,t),l=await s.api.getSessionMessages(i,a===void 0?{page:1,order:"desc"}:{page:1,pageSize:a,order:"desc"});if(s.outputJson){s.io.stdout(v(l));return}s.io.stdout(Mb(l))})}function Np(e,t){nl(e,t,{description:"Read a HagiTask session's messages, newest first. For a Super Commit, --last 1 reads the final result message."})}var M="-";function _a(e){return e?"yes":"no"}function $a(e){return e&&e.length>0?e.join(", "):M}function fn(e){if(Array.isArray(e))return e.map(t=>fn(t));if(e&&typeof e=="object"){const t=e;return Object.fromEntries(Object.keys(t).sort().map(n=>[n,fn(t[n])]))}return e}function ol(e){return[...e].sort((t,n)=>{const o=t.id??"",r=n.id??"";return o<r?-1:o>r?1:0})}function Wp(e){return fn({tasks:ol(e)})}function vp(e){if(e.length===0)return`No HagiTask is available.
88
+ `;const t=ol(e);return`HagiTasks (${t.length})
89
+ ${re([{header:"ID",value:n=>n.id??M},{header:"Version",value:n=>n.version??M},{header:"Title",value:n=>n.title??M},{header:"Description",value:n=>n.description??M}],t)}
90
+ `}function Ip(e){const t=[];e.origin==="derived"&&t.push(e.producer?`derived by ${e.producer}`:"derived");for(const n of e.aliases??[])n.key&&t.push(`alias ${n.key} (deprecated)`);return e.options&&e.options.length>0&&t.push(`options: ${e.options.map(n=>n.value??"").join(", ")}`),t.length>0?t.join("; "):M}function Xp(e){const t=e.id??M,n=[];n.push(q([["id",e.id??void 0],["title",e.title??void 0],["version",e.version??void 0],["locale",e.locale??void 0],["description",e.description??void 0]]));const o=e.scope?.targets??[];n.push(`Target scope (default ${e.scope?.defaultTargetType??M})${o.length===0?`
91
+ None.
92
+ `:`
93
+ ${re([{header:"ID",value:c=>c.id??M},{header:"Kind",value:c=>c.kind??M},{header:"Selection",value:c=>c.selectionMode??M},{header:"Required",value:c=>_a(c.required)},{header:"Access",value:c=>$a(c.allowedAccessTypes)},{header:"Input key",value:c=>c.requestKey??M},{header:"Scope key",value:c=>c.scopeRequestKey??M}],o)}
94
+ `}`);const r=e.commands?.commands??[];n.push(`Commands${r.length===0?`
95
+ None.
96
+ `:`
97
+ ${re([{header:"ID",value:c=>c.id??M},{header:"Group",value:c=>c.groupId??M},{header:"Label",value:c=>c.label??M},{header:"URL",value:c=>c.url??M}],r)}
98
+ `}`);const a=e.parameters??[];n.push(`Parameters${a.length===0?`
99
+ None.
100
+ `:`
101
+ ${re([{header:"Key",value:c=>c.key??M},{header:"Required",value:c=>_a(c.required)},{header:"Origin",value:c=>c.origin??M},{header:"Type",value:c=>c.valueType??M},{header:"Label",value:c=>c.label??M},{header:"Notes",value:Ip}],a)}
102
+ `}`);const i=e.requirements??[];n.push(`Requirements${i.length===0?`
103
+ None.
104
+ `:`
105
+ ${i.map(c=>`- ${c.type??M}: ${c.name??$a(c.names)}`).join(`
106
+ `)}
107
+ `}`);const s=e.scenes?.registrations??[];n.push(`Scenes${s.length===0?`
108
+ None.
109
+ `:`
110
+ ${s.map(c=>`- ${c.sceneKey??M}: ${c.title??M}`).join(`
111
+ `)}
112
+ `}`);const l=e.request;return n.push(q([["endpoint",l?`${l.method??M} ${l.path??M}`:void 0],["presetTaskIdField",l?.presetTaskIdField??void 0],["localeField",l?.localeField??void 0],["requiredFields",l?.requiredFields&&l.requiredFields.length>0?l.requiredFields.join(", "):void 0]])),n.push(`Example
113
+ hagi hagitask schema --task-id ${t} --json # full input JSON Schema and example body
114
+ hagi hagitask create --title "<title>" --project-id <project-id> --task-id ${t} --input input.json
115
+ `),n.join(`
116
+ `)}function yp(e){return fn(e)}function Yp(e,t){I(e.command("list").description("List the active HagiTasks with their id, version, title and description.")).action(async function(){const o=X(this,t),r=await o.api.listHagiTaskSchemas();if(o.outputJson){o.io.stdout(v(Wp(r)));return}o.io.stdout(vp(r))})}function Cp(e,t){const n=e&&typeof e=="object"?e[t]:void 0;return typeof n=="string"&&n.trim()?n.trim():void 0}function Bp(e){const t=e&&typeof e=="object"?e.diagnostics:void 0;return Array.isArray(t)?t:[]}async function Fp(e,t){try{return await e.getHagiTaskSchema(t)}catch(n){const o=vn(n);if(o?.status===404){const r=Bp(o.body);if(r.length>0){const a=r.map(i=>{const s=i.path?` (${i.path})`:"";return` - ${i.code??"diagnostic"}: ${i.message??""}${s}`});throw new ye(404,[Cp(o.body,"error")??`HagiTask ${t} is not available.`,...a].join(`
117
+ `),o.body)}}throw n}}function wp(e,t){I(e.command("schema").description("Show the creation schema of one HagiTask: scope, commands, parameters, requirements, scenes and an example. --json prints the full schema, including the input JSON Schema.")).requiredOption("--task-id <id>","HagiTask id to read.").action(async function(o){const r=x(o.taskId,"--task-id"),a=X(this,t),i=await Fp(a.api,r);if(a.outputJson){a.io.stdout(v(yp(i)));return}a.io.stdout(Xp(i))})}function kp(e,t){I(e.command("send").description("Send a follow-up message to a HagiTask session.")).requiredOption("--session-id <id>","HagiTask session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Cn))).addOption(sr()).addOption(lr()).action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(v({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("HagiTask message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Up(e,t){const n=e.command("hagitask").description("Manage HagiTask sessions: list tasks, read a task schema, create a session from it, read one session with get (--wait to follow a run) and its messages, and send follow-up messages.");Yp(n,t),wp(n,t),fp(n,t),kp(n,t),Vp(n,t),Np(n,t)}function be(e){const t=e?.trim();return t||void 0}function rl(e){if(!e)return"";const t=be(e.mode);if(t==="once")return["once",be(e.runAt)].filter(Boolean).join(" ");const n=be(e.repeat?.rule)??t??"";return[n,n==="weekly"?(e.repeat?.weekdays??[]).map(o=>o.trim().slice(0,3).toLowerCase()).join(","):void 0,be(e.timeOfDay),be(e.timeZone)].filter(Boolean).join(" ")}function Pe(e){return{id:be(e.id)??"",type:be(e.type)??"",name:be(e.name)??"",enabled:e.enabled===!0,state:be(e.state)??"",nextRunAt:be(e.nextRunAt)??null,schedule:e.schedule,agentPool:e.agentPool,payload:e.payload}}function Jp(e){return{plans:e.map(Pe)}}function xp(e){return e.length===0?`No scheduled plans found.
118
+ `:`Plans (${e.length})
119
+ ${re([{header:"ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Enabled",value:t=>t.enabled?"yes":"no"},{header:"State",value:t=>t.state},{header:"Next Run",value:t=>t.nextRunAt??"-"},{header:"Schedule",value:t=>rl(t.schedule)}],e)}
120
+ `}function Mt(e){return q([["id",e.id],["type",e.type],["name",e.name],["enabled",e.enabled?"yes":"no"],["state",e.state],["nextRun",e.nextRunAt??"-"],["schedule",rl(e.schedule)]])}function Lp(e){return{planId:e,deleted:!0}}function Kp(e){return`Plan deleted
121
+ ${q([["planId",e.planId],["deleted",String(e.deleted)]])}`}function zp(e){return{planId:be(e.planId)??"",accepted:!0}}function jp(e){return`Plan run accepted
122
+ ${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var Tp=["id","createdAt","updatedAt","state","nextRunAt"];async function al(e){let t;try{t=await Bn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read plan input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`Plan input from ${e} must be a JSON object.`);return t}function Zn(e){const t={...e};for(const n of Tp)delete t[n];return t}function Hp(e){return{strategy:"random",agents:[{heroId:e}]}}function il(e){return{...e.name!==void 0?{name:e.name}:{},...e.heroId!==void 0?{agentPool:Hp(e.heroId)}:{},...e.enabled!==void 0?{enabled:e.enabled}:{}}}function sl(e,t){return{...Zn(e),...Zn(t)}}function Qp(e,t){I(e.command("create").description("Create a scheduled plan from a JSON document. Plans are enabled unless --disabled or the document says otherwise.")).requiredOption("--input <file|->","Plan JSON file path, or - to read from stdin.").option("--name <name>","Plan name. Overrides the document name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the document agent pool.").option("--disabled","Create the plan disabled. Overrides the document enabled value.").action(async function(o){const r=X(this,t),a=Zn(await al(o.input)),i=Pe(await r.api.createPlan({enabled:!0,...a,...il({name:k(o.name),heroId:k(o.heroId),enabled:o.disabled?!1:void 0})}));if(r.outputJson){r.io.stdout(v({plan:i}));return}r.io.stdout(`Plan created
123
+ ${Mt(i)}`)})}function Mp(e,t){I(e.command("delete").description("Delete a scheduled plan by id.")).requiredOption("--id <id>","Plan id to delete.").action(async function(o){const r=X(this,t),a=x(o.id,"--id");await r.api.deletePlan(a);const i=Lp(a);if(r.outputJson){r.io.stdout(v(i));return}r.io.stdout(Kp(i))})}async function ll(e,t,n){const o=await e.api.getPlan(t);return Pe(o).enabled===n?{view:Pe(o),changed:!1}:{view:Pe(await e.api.updatePlan(t,sl(o,{enabled:n}))),changed:!0}}function Op(e,t){I(e.command("disable").description("Disable a scheduled plan. Nothing is sent when it is already disabled.")).requiredOption("--id <id>","Plan id to disable.").action(async function(o){const r=X(this,t),{view:a,changed:i}=await ll(r,x(o.id,"--id"),!1);if(r.outputJson){r.io.stdout(v({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
124
+ ${Mt(a)}`)})}function Dp(e,t){I(e.command("enable").description("Enable a scheduled plan. Nothing is sent when it is already enabled.")).requiredOption("--id <id>","Plan id to enable.").action(async function(o){const r=X(this,t),{view:a,changed:i}=await ll(r,x(o.id,"--id"),!0);if(r.outputJson){r.io.stdout(v({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
125
+ ${Mt(a)}`)})}function _p(e,t){I(e.command("get").description("Show one scheduled plan, including its schedule, agent pool and payload in --json mode.")).requiredOption("--id <id>","Plan id to read.").action(async function(o){const r=X(this,t),a=Pe(await r.api.getPlan(x(o.id,"--id")));if(r.outputJson){r.io.stdout(v({plan:a}));return}r.io.stdout(Mt(a))})}function $p(e,t){I(e.command("list").description("List scheduled plans with their state, next run time and schedule.")).action(async function(){const o=X(this,t),r=Jp(await o.api.listPlans());if(o.outputJson){o.io.stdout(v(r));return}o.io.stdout(xp(r.plans))})}function Pp(e,t){I(e.command("run").description("Run a scheduled plan now from its stored inputs. The schedule is not changed.")).requiredOption("--id <id>","Plan id to run.").option("--background","Start the run and print the accepted plan id without waiting for the session.").action(async function(o){const r=X(this,t),a=x(o.id,"--id");if(o.background){const s=zp(await r.api.startPlan(a));if(r.outputJson){r.io.stdout(v(s));return}r.io.stdout(jp(s));return}const i=Ae(await r.api.runPlan(a));if(r.outputJson){r.io.stdout(v({session:i}));return}r.io.stdout(`Plan run created a session
126
+ ${Je(i)}`)})}function qp(e,t){I(e.command("update").description("Update a scheduled plan. The current plan is read first and only the given fields change.")).requiredOption("--id <id>","Plan id to update.").option("--input <file|->","JSON document whose top-level fields replace the same fields of the plan.").option("--name <name>","Updated plan name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the agent pool.").option("--enabled","Enable the plan.").option("--disabled","Disable the plan.").action(async function(o){const r=x(o.id,"--id"),a=k(o.input),i=k(o.name),s=k(o.heroId);if(o.enabled&&o.disabled)throw new N("Pass either --enabled or --disabled, not both.");const l=o.enabled?!0:o.disabled?!1:void 0;if(!a&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=a?Zn(await al(a)):{},u=X(this,t),h=await u.api.getPlan(r),f=Pe(await u.api.updatePlan(r,sl(h,{...c,...il({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(v({plan:f}));return}u.io.stdout(`Plan updated
127
+ ${Mt(f)}`)})}function eA(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");$p(n,t),_p(n,t),Qp(n,t),qp(n,t),Dp(n,t),Op(n,t),Mp(n,t),Pp(n,t)}function ue(e){const t=e?.trim();return t||void 0}function ur(e){return{id:ue(e.id)??"",name:ue(e.name)??"",path:ue(e.path)??"",description:ue(e.description),isMonoSpecs:e.isMonoSpecs===!0,monoSpecsVersion:ue(e.monoSpecsVersion),monoSpecsRepoDirectory:ue(e.monoSpecsRepoDirectory),monoSpecsCommitWhenArchive:typeof e.monoSpecsCommitWhenArchive=="boolean"?e.monoSpecsCommitWhenArchive:void 0,hasError:"hasError"in e?e.hasError===!0:!1,error:"error"in e?ue(e.error):void 0}}function cl(e){return{projects:(e??[]).map(ur)}}function tA(e){return e.length===0?`No projects found.
128
+ `:`Projects (${e.length})
129
+ ${re([{header:"Project ID",value:t=>t.id},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.path},{header:"MonoSpecs",value:t=>t.isMonoSpecs?"yes":"no"},{header:"Error",value:t=>t.hasError?"yes":"no"}],e)}
130
+ `}function dl(e,t=[]){return q([["id",e.id],["name",e.name],["path",e.path],["description",e.description],["isMonoSpecs",String(e.isMonoSpecs)],["monoSpecsVersion",e.monoSpecsVersion],["monoSpecsRepoDirectory",e.monoSpecsRepoDirectory],["monoSpecsCommitWhenArchive",typeof e.monoSpecsCommitWhenArchive=="boolean"?String(e.monoSpecsCommitWhenArchive):void 0],["hasError",String(e.hasError)],["error",e.error],...t])}function nA(e){return{projectId:ue(e.id)??"",name:ue(e.name)??"",isMonoSpecs:e.isMonoSpecs===!0,hasError:e.hasError===!0,error:ue(e.error),repositories:(e.repositories??[]).map(t=>({name:ue(t.name),path:t.path??void 0,displayName:ue(t.displayName),type:ue(t.type),branch:ue(t.branch),isValidGitRepo:typeof t.isValidGitRepo=="boolean"?t.isValidGitRepo:void 0}))}}function oA(e){return`${q([["projectId",e.projectId],["name",e.name],["isMonoSpecs",String(e.isMonoSpecs)],["hasError",String(e.hasError)],["error",e.error??(e.hasError?"The project failed to load; its repository list may be incomplete.":void 0)]])}
131
+ ${e.repositories.length===0?`This project lists no repositories.
132
+ `:`${re([{header:"Name",value:t=>t.name??""},{header:"Path",value:t=>t.path??""},{header:"Display name",value:t=>t.displayName??""},{header:"Type",value:t=>t.type??""},{header:"Branch",value:t=>t.branch??""}],e.repositories)}
133
+ `}`}function rA(e,t){I(e.command("create").description("Create a project through the generated project client.")).requiredOption("--name <name>","Project display name.").requiredOption("--path <path>","Project root path.").option("--description <text>","Optional project description.").action(async function(o){const r=X(this,t),a=ur(await r.api.createProject({name:x(o.name,"--name"),path:x(o.path,"--path"),description:k(o.description)}));if(r.outputJson){r.io.stdout(v({project:a}));return}r.io.stdout(`Project created
134
+ ${dl(a)}`)})}function aA(e,t){I(e.command("delete").description("Delete a project by id.")).requiredOption("--id <id>","Project id to delete.").action(async function(o){const r=X(this,t),a=o.id.trim();if(await r.api.deleteProject(a),r.outputJson){r.io.stdout(v({projectId:a,deleted:!0}));return}r.io.stdout(`Project deleted
135
+ projectId ${a}
136
+ `)})}function iA(e,t){I(e.command("list").description("List projects from the aggregation endpoint.")).action(async function(){const o=X(this,t),r=cl((await o.api.listProjects()).projects);if(o.outputJson){o.io.stdout(v(r));return}o.io.stdout(tA(r.projects))})}function se(e){const t=e?.trim();return t||void 0}function ul(e){return{key:e.key??"",value:e.value??"",valueKind:e.valueKind??"string"}}function sA(e){const t=e.isValidGitRepo===!0;return{name:se(e.name),code:se(e.code),path:e.path??"",url:se(e.url),displayName:se(e.displayName),type:se(e.type),icon:se(e.icon),optional:e.optional===!0,tags:e.tags??[],metadata:(e.metadata??[]).map(ul),isValidGitRepo:t,branch:t?se(e.branch):void 0,hasUncommittedChanges:e.hasUncommittedChanges===!0,unpushedCommitCount:e.unpushedCommitCount??0,hasTrackingBranch:e.hasTrackingBranch===!0,trackingBranch:se(e.trackingBranch),aheadCount:e.aheadCount??0,behindCount:e.behindCount??0,syncState:t?se(e.syncState):void 0}}function ml(e){return{version:se(e.version)??"",repoDirectory:se(e.repoDirectory)??"",configPath:se(e.configPath)??"",commitWhenArchive:e.commitWhenArchive===!0,yamlPreview:e.yamlPreview??"",metadata:(e.metadata??[]).map(ul),repositories:(e.repositories??[]).map(sA)}}function lA(e){return e.isValidGitRepo?[e.branch??"no branch",e.syncState,e.hasUncommittedChanges?"uncommitted changes":void 0].filter(Boolean).join(", "):"missing or not a Git repository"}function hl(e,t={}){return`${q([["version",e.version],["repoDirectory",e.repoDirectory],["configPath",e.configPath],["commitWhenArchive",String(e.commitWhenArchive)]])}
137
+ ${e.repositories.length===0?`This document lists no repositories.
138
+ `:`${re([{header:"Path",value:n=>n.path},{header:"Name",value:n=>n.name??""},{header:"Type",value:n=>n.type??""},{header:"URL",value:n=>n.url??""},{header:"Local state",value:n=>lA(n)}],e.repositories)}
139
+ `}${t.yaml?`
140
+ YAML
141
+ ${e.yamlPreview}${e.yamlPreview.endsWith(`
142
+ `)?"":`
143
+ `}`:""}`}function gl(e){return{results:(e??[]).map(t=>({path:t.path??"",status:t.status??"",message:se(t.message)}))}}function bl(e){return e.results.length===0?`No repositories were selected for cloning.
144
+ `:`${re([{header:"Path",value:t=>t.path},{header:"Status",value:t=>t.status},{header:"Message",value:t=>t.message??""}],e.results)}
145
+ `}function cA(e){return{isValid:e.isValid===!0,config:e.config?{version:se(e.config.version),repoDirectory:se(e.config.repoDirectory)}:null,warnings:e.warnings??[],errors:e.errors??[]}}function dA(e){const t=e.isValid?"MonoSpecs configuration is valid.":"MonoSpecs configuration is invalid.",n=q([["version",e.config?.version],["repoDirectory",e.config?.repoDirectory]]),o=e.warnings.map(a=>` - ${a}
146
+ `).join(""),r=e.errors.map(a=>` - ${a}
147
+ `).join("");return[t,n.trimEnd(),e.warnings.length>0?`Warnings:
148
+ ${o}`.trimEnd():"",e.errors.length>0?`Errors:
149
+ ${r}`.trimEnd():""].filter(Boolean).join(`
150
+ `)+`
151
+ `}function uA(e){return{path:e.path??"",removed:e.removed===!0,message:se(e.message)}}function mA(e){const t=e.removed?`Removed checkout ${e.path}`:`Checkout ${e.path} was not removed`;return`${e.message?`${t}
152
+ ${e.message}`:t}
153
+ `}function mr(e,t,n={}){const o=ml(t);if(e.outputJson){e.io.stdout(v(o));return}const r=n.heading?`${n.heading}
154
+ `:"";e.io.stdout(`${r}${hl(o,{yaml:n.yaml})}`)}function po(e,t){return[...t,e]}function bt(e){const t=e.trim().replace(/\\/g,"/").replace(/^(\.\/)+/,"").replace(/\/+$/,"");if(!t||t===".")throw new N(`Repository path must name a directory below the project root: "${e}".`);return t}function hA(e,t){I(e.command("clone").description("Clone the configured repositories that are missing on the backend host. Exits with code 30 when any clone fails.")).requiredOption("--id <id>","Project id.").option("--path <path>","Configured repository path to clone. Repeatable; omit to clone every missing repository.",po,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const r=o.path.map(bt),a=X(this,t),i=x(o.id,"--id"),s=o.includeOptional===!0,l=gl((await a.api.cloneMonoSpecsRepositories(i,r.length>0?{paths:r,includeOptional:s}:{includeOptional:s})).results);a.outputJson?a.io.stdout(v(l)):a.io.stdout(bl(l));const c=l.results.filter(u=>u.status==="failed");if(c.length>0)throw new U(`${c.length} repository clone(s) failed. See the results above.`)})}function gA(e,t){I(e.command("init").description("Initialize the MonoSpecs configuration of a project. An initialized project returns its existing document.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=X(this,t);mr(r,await r.api.initializeMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function bA(e,t){I(e.command("reload").description("Reread monospecs.yaml on the backend host and refresh the local Git state of its repositories.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=X(this,t);mr(r,await r.api.reloadMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function pA(e,t){I(e.command("remove-checkout").description("Delete the local checkout of one configured repository on the backend host. monospecs.yaml is not changed.")).requiredOption("--id <id>","Project id.").requiredOption("--path <path>","Configured repository path whose local checkout to delete.").option("--force","Delete the checkout even with uncommitted changes, unpushed commits or no upstream branch.").action(async function(o){const r=X(this,t),a=x(o.id,"--id"),i=bt(x(o.path,"--path")),s=o.force===!0;let l;try{l=await r.api.removeMonoSpecsRepositoryCheckout(a,i,s)}catch(u){const h=Fs(u);throw h.status===409&&!s&&/force/i.test(h.message)?new ye(409,`${h.message}
155
+ Re-run with --force to delete this checkout anyway.`,h.details):u}const c=uA(l);r.outputJson?r.io.stdout(v(c)):r.io.stdout(mA(c))})}var AA="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function fA(e){return{name:e.name,code:e.code,path:e.path,url:e.url,displayName:e.displayName,type:e.type,icon:e.icon,optional:e.optional,tags:e.tags,metadata:e.metadata}}function ZA(e){return e.split("/").at(-1)??e}function $n(e,t,n){const o=ml(t),r=n?gl(n.results):void 0;if(e.outputJson){e.io.stdout(v(r?{...o,clone:r}:o));return}e.io.stdout(`MonoSpecs configuration saved.
156
+ ${hl(o)}`),r&&e.io.stdout(`
157
+ Clone results
158
+ ${bl(r)}`)}function RA(e,t){I(e.command("set").description("Change the MonoSpecs metadata or repositories. Reads the document, applies the given options and saves it.")).requiredOption("--id <id>","Project id.").option("--version <value>","MonoSpecs configuration version.").option("--repo-directory <dir>","Repository directory relative to the project root.").option("--commit-when-archive <true|false>","Whether archiving commits the MonoSpecs changes.").option("--add-repository <path>","Configured repository path to add. Repeatable.",po,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",po,[]).option("--url <url>","Clone URL of the single added repository.").option("--name <name>","Name of the single added repository. Defaults to the last path segment.").option("--display-name <name>","Display name of the single added repository.").option("--type <type>","Type of the single added repository.").option("--clone","Clone the added repositories after saving. Requires at least one --add-repository.").action(async function(o){const r=o.addRepository.map(bt),a=o.removeRepository.map(bt);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&r.length===0&&a.length===0)throw new N(`Provide at least one change: ${AA}.`);if(o.clone&&r.length===0)throw new N("--clone requires at least one --add-repository.");const i=[o.url!==void 0?"--url":void 0,o.name!==void 0?"--name":void 0,o.displayName!==void 0?"--display-name":void 0,o.type!==void 0?"--type":void 0].filter(Boolean);if(i.length>0&&r.length!==1)throw new N(`${i.join(", ")} apply to a single --add-repository only.`);let s;if(o.commitWhenArchive!==void 0){if(o.commitWhenArchive!=="true"&&o.commitWhenArchive!=="false")throw new N("--commit-when-archive must be true or false.");s=o.commitWhenArchive==="true"}const l=X(this,t),c=x(o.id,"--id"),u=await l.api.getMonoSpecsManagement(c),h=(u.repositories??[]).map(fA);for(const V of a){const y=h.findIndex(J=>bt(J.path??"")===V);if(y<0)throw new N(`Repository path ${V} is not configured, so it cannot be removed.`);h.splice(y,1)}for(const V of r){if(h.some(y=>bt(y.path??"")===V))throw new N(`Repository path ${V} is already configured.`);h.push({name:o.name??ZA(V),code:null,path:V,url:o.url??null,displayName:o.displayName??null,type:o.type??null,icon:null,optional:!1,tags:[],metadata:[]})}const f=await l.api.saveMonoSpecsManagement(c,{version:o.version??u.version,repoDirectory:o.repoDirectory??u.repoDirectory,commitWhenArchive:s??u.commitWhenArchive,repositories:h,metadata:u.metadata??[]});if(!o.clone){$n(l,f);return}let p;try{p=(await l.api.cloneMonoSpecsRepositories(c,{paths:r,includeOptional:!1})).results??[]}catch(V){throw $n(l,f),V}$n(l,f,{results:p});const E=p.filter(V=>V.status==="failed");if(E.length>0)throw new U(`The configuration was saved, but ${E.length} repository clone(s) failed. See the clone results above.`)})}function EA(e,t){I(e.command("show").description("Show the MonoSpecs management document of a project, with local Git state per repository.")).requiredOption("--id <id>","Project id.").option("--yaml","Also print the YAML preview in human-readable mode.").action(async function(o){const r=X(this,t);mr(r,await r.api.getMonoSpecsManagement(x(o.id,"--id")),{yaml:o.yaml===!0})})}function SA(e,t){I(e.command("validate").description("Validate the MonoSpecs configuration of a project. Exits with code 30 when it is invalid.")).requiredOption("--id <id>","Project id.").action(async function(o){const r=X(this,t),a=x(o.id,"--id"),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i?.path)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=cA(await r.api.validateMonoSpecs({projectPath:i.path}));if(r.outputJson?r.io.stdout(v(s)):r.io.stdout(dA(s)),!s.isValid)throw new U("MonoSpecs configuration is invalid. See the errors above.")})}function VA(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");EA(n,t),gA(n,t),RA(n,t),SA(n,t),bA(n,t),hA(n,t),pA(n,t)}function GA(e,t){I(e.command("repositories").description("List the repositories of one project from the aggregation snapshot.")).requiredOption("--id <id>","Project id whose repositories to list.").action(async function(o){const r=X(this,t),a=o.id.trim(),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=nA(i);if(r.outputJson){r.io.stdout(v(s));return}r.io.stdout(oA(s))})}function NA(e,t){I(e.command("update").description("Update a project by merging provided fields into the aggregation snapshot.")).requiredOption("--id <id>","Project id to update.").option("--name <name>","Updated project name.").option("--path <path>","Updated project path.").option("--description <text>","Updated project description.").option("--clear-description","Clear the stored description.").action(async function(o){if(!o.name&&!o.path&&!o.description&&!o.clearDescription)throw new N("Provide at least one field to update: --name, --path, --description, or --clear-description.");if(o.description&&o.clearDescription)throw new N("Use either --description or --clear-description, not both.");const r=X(this,t),a=o.id.trim(),i=cl((await r.api.listProjects()).projects).projects.find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=ur(await r.api.updateProject(a,{name:k(o.name)??i.name,path:k(o.path)??i.path,description:o.clearDescription?null:k(o.description)??i.description??null}));if(r.outputJson){r.io.stdout(v({project:s}));return}r.io.stdout(`Project updated
159
+ ${dl(s)}`)})}function WA(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");iA(n,t),GA(n,t),rA(n,t),NA(n,t),aA(n,t),VA(n,t)}function vA(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new N("Annotation input must be a JSON object.");const n=t;if(!Array.isArray(n.files))throw new N("Annotation input must include a files array.");const o=typeof n.totalAnnotations=="number"?n.totalAnnotations:n.files.length,r=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:r,files:n.files}}function IA(e,t){I(e.command("annotate").description("Submit proposal annotations from structured JSON input.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=vA(a,await Bn(o.input)),s=await r.api.submitAnnotations(a,i);if(r.outputJson){r.io.stdout(v({sessionId:a,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}r.io.stdout(`Proposal annotations submitted
160
+ sessionId ${a}
161
+ message ${s.message}
162
+ annotationCount ${s.annotationCount??i.totalAnnotations}
163
+ fileCount ${s.fileCount??i.files.length}
164
+ `)})}function XA(e,t){I(e.command("archive").description("Archive a proposal session through the explicit archive endpoint.")).requiredOption("--session-id <id>","Proposal session id to archive.").option("--hero-id <id>","Optional hero override for archiving.").action(async function(o){const r=X(this,t),a=Ae(await r.api.archiveProposal(o.sessionId.trim(),{heroId:k(o.heroId)}));if(r.outputJson){r.io.stdout(v({session:a}));return}r.io.stdout(`Proposal archive started
165
+ ${Je(a)}`)})}function yA(e,t){I(e.command("complete").description("Mark a proposal session as completed through the dedicated completion endpoint.")).requiredOption("--session-id <id>","Proposal session id to complete.").action(async function(o){const r=X(this,t),a=Ae(await r.api.completeProposal(o.sessionId.trim()));if(r.outputJson){r.io.stdout(v({session:a}));return}r.io.stdout(`Proposal completed
166
+ ${Je(a)}`)})}function YA(e){return Ae(e)}function CA(e){return Ds(e)}function BA(e){return _s("Proposal sessions",e)}function FA(e,t=[]){return Je(e,t)}var pl="New Proposal";function wA(e){const t=k(e.title);if(t)return t;if(e.defaultTitle)return pl;throw new N("Provide --title or pass --default-title to use the placeholder proposal title.")}function kA(e,t){Ps(I(e.command("create").description("Create a proposal session only. This command does not trigger later lifecycle APIs.")).requiredOption("--project-id <id>","Project id that owns the new proposal session.").requiredOption("--chief-complaint <text>","Proposal chief complaint to store on the new session.").option("--original-chief-complaint <text>","Optional raw chief complaint text to keep alongside the stitched content.").option("--title <title>","Explicit proposal session title.").option("--default-title",`Mark the title as the placeholder title (${pl}).`).option("--enable-independent-workspace","Request an independent workspace for the proposal session.").option("--base-branch <branch>","Optional base branch for the independent workspace."),"proposal create",'--project-id <id> --chief-complaint "<text>" --default-title').action(async function(o){const r=X(this,t),a=wA(o),i=qs({entries:o.metadata,jsonSources:o.metadataJson}),s=YA(await r.api.createProposalSession({title:a,chiefComplaint:o.chiefComplaint.trim(),originalChiefComplaint:k(o.originalChiefComplaint),type:ir.PROPOSAL,projectId:o.projectId.trim(),enableIndependentWorkspace:o.enableIndependentWorkspace?!0:void 0,baseBranch:k(o.baseBranch),isDefaultTitle:!!o.defaultTitle,...i?{metadata:i}:{}})),l=`hagi proposal optimize-description --session-id ${s.sessionId} --description "<description>"`;if(r.outputJson){r.io.stdout(v({session:s,nextCommand:l}));return}r.io.stdout(`Proposal session created
167
+ ${FA(s,[["next",l]])}`)})}function UA(e,t){I(e.command("execute").description("Start proposal execution only. This command maps to the execute-proposal backend action.")).requiredOption("--session-id <id>","Proposal session id to execute.").option("--hero-id <id>","Optional hero override for the execute stage.").action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=k(o.heroId),s=await r.api.executeProposal(a,{heroId:i});if(r.outputJson){r.io.stdout(v({sessionId:a,message:s.message,requested:{heroId:i}}));return}r.io.stdout(`Proposal execution started
168
+ sessionId ${a}
169
+ message ${s.message}
170
+ `)})}var Ao=["zh-CN","zh-Hant","en-US","ja-JP","ko-KR","de-DE","fr-FR","es-ES","pt-BR","ru-RU"];function JA(e){if(e.enableExploreMode&&e.disableExploreMode)throw new N("Use either --enable-explore-mode or --disable-explore-mode, not both.");if(e.enableExploreMode)return!0;if(e.disableExploreMode)return!1}function xA(e){const t=e.trim();if(!Ao.includes(t))throw new N(`--proposal-content-language must be one of: ${Ao.join(", ")}.`);return t}function LA(e,t){I(e.command("generate").description("Start proposal generation only. This command does not execute the proposal.")).requiredOption("--session-id <id>","Proposal session id to generate.").requiredOption("--proposal-content-language <language>",`Language of the generated proposal content (${Ao.join(", ")}).`).option("--enable-explore-mode","Explicitly enable explore mode for proposal generation.").option("--disable-explore-mode","Explicitly disable explore mode for proposal generation.").option("--hero-id <id>","Optional hero override for the generate stage.").action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=JA(o),s=xA(o.proposalContentLanguage),l=await r.api.generateProposal(a,{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s}),c=`hagi proposal execute --session-id ${a}`;if(r.outputJson){r.io.stdout(v({sessionId:a,message:l.message,requested:{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s},nextCommand:c}));return}r.io.stdout(`Proposal generation started
171
+ sessionId ${a}
172
+ message ${l.message}
173
+ next Wait for the session to reach Reviewing, then run ${c}
174
+ `)})}function KA(e,t){tl(e,t,{description:"Read one proposal session by id. With --wait, poll until its status settles, so a stage can be followed without guessing.",label:"proposal session"})}function zA(e,t){nl(e,t,{description:"Read a proposal session's messages, newest first. Use --last 1 to read the final message of a run."})}function jA(e,t){I(e.command("list").description("List proposal sessions from the backend Sessions API.")).option("--project-id <id>","Filter proposal sessions by a single project id.").option("--project-ids <ids...>","Filter proposal sessions by multiple project ids.").option("--active-only","Only return non-archived proposal sessions.").option("--include-archived","Include archived proposal sessions in the result set.").action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const r=X(this,t),a=CA(await r.api.listSessions({type:ir.PROPOSAL,projectId:k(o.projectId),projectIds:o.projectIds?.map(k).filter(Boolean),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(BA(a.sessions))})}function TA(e,t){const n=t.summary,o=t.result,r=o?.validation?.isValid===!0,a=n?.appliedTitle||o?.optimizedTitle||"",i=n?.appliedProposalName||o?.optimizedProposalName||"",s=o?.validation?.diagnostics??[],l=[r?"Proposal optimized":"Proposal optimization returned diagnostics",`sessionId ${e}`,`title ${a}`,`proposalName ${i}`,`valid ${r?"yes":"no"}`];for(const c of s)l.push(`diagnostic ${c.code??"UNKNOWN"}: ${c.message??""}`.trimEnd());return r&&l.push(`next hagi proposal generate --session-id ${e}`),`${l.join(`
175
+ `)}
176
+ `}function HA(e,t){I(e.command("optimize-description").description("Optimize the proposal description, title, and name in one backend step.")).requiredOption("--session-id <id>","Proposal session id to optimize.").requiredOption("--description <text>","Description text to optimize.").option("--title <title>","Current title snapshot. The session title is used when omitted.").option("--default-title","Treat the current title as the placeholder title.").option("--optimization-direction <text>","Optional optimization direction for AI guidance.").option("--original-chief-complaint <text>","Optional original chief complaint to keep as context.").action(async function(o){const r=X(this,t),a=x(o.sessionId,"--session-id"),i=await r.api.optimizeProposal(a,{description:x(o.description,"--description"),title:k(o.title),isDefaultTitle:o.defaultTitle?!0:void 0,optimizationDirection:k(o.optimizationDirection),originalChiefComplaint:k(o.originalChiefComplaint)});if(r.outputJson){r.io.stdout(v({sessionId:a,...i}));return}r.io.stdout(TA(a,i))})}function QA(e,t){I(e.command("send").description("Send a follow-up message to a proposal session.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--content <text>","Message content.").addOption(new Ve("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Ve("--executor-type <type>","Executor override for this message.").choices(Object.values(Cn))).addOption(sr()).addOption(lr()).action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(v({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Proposal message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function MA(e,t){I(e.command("status").description("Update proposal session status through read-before-write merging.")).requiredOption("--session-id <id>","Proposal session id.").addOption(new Ve("--status <status>","Target session status.").choices(Object.values(Os)).makeOptionMandatory()).action(async function(o){const r=X(this,t),a=o.sessionId.trim(),i=await r.api.getSession(a);await r.api.updateSession(a,{title:i.title,description:i.description,status:o.status,metadata:i.metadata});const s=Ae({...i,status:o.status});if(r.outputJson){r.io.stdout(v({session:s}));return}r.io.stdout(`Proposal status updated
177
+ ${Je(s)}`)})}function OA(e,t){const n=e.command("proposal").description("Manage proposal sessions through backend session APIs: create, generate, execute and archive stages, read one session with get (--wait to follow a stage), and read its messages.");jA(n,t),kA(n,t),HA(n,t),LA(n,t),IA(n,t),UA(n,t),XA(n,t),MA(n,t),KA(n,t),zA(n,t),yA(n,t),QA(n,t)}function DA(e){const t=["created","unchanged","merged"],n=["Saga resource installation",`root ${e.root}`,`force ${e.force?"yes":"no"}`];for(const o of t){const r=e.files.filter(a=>a.outcome===o).map(a=>a.path);n.push(`${o.padEnd(10)}${r.length>0?r.join(", "):"none"}`)}return`${n.join(`
178
+ `)}
179
+ `}function _A(e){return["Saga created",`id ${e.id}`,`directory ${e.directory}`,`createdAt ${e.metadata.createdAt}`,`method ${e.metadata.method}`,'next read the planning method with "hagi saga method goal", then write goal.md, research.md, acceptance.md and progress.md',""].join(`
180
+ `)}function Al(e){return`total ${e.total}, done ${e.done}, blocked ${e.blocked}, pending ${e.pending}, superseded ${e.superseded}`}function $A(e){return e.sagas.length===0?`No active Sagas found.
181
+ `:[`Active Sagas (${e.sagas.length})`,...e.sagas.map(t=>`${t.sagaId} ${t.state} revision ${t.revision} ${Al(t.counts)} open amendments ${t.openAmendments}`),""].join(`
182
+ `)}function PA(e){const t=Object.entries(e.artifacts).map(([o,r])=>`${o}=${r?"written":"missing"}`).join(", "),n=e.nextArtifact?`next artifact ${e.nextArtifact}: read the method with "hagi saga method ${e.nextArtifact}"`:"next artifact none";return[`Saga ${e.sagaId}`,`state ${e.state}`,`revision ${e.revision}`,`observed ${e.updatedAt}`,`artifacts ${t}`,n,`counts ${Al(e.counts)}`,`open amendments ${e.openAmendments}`,""].join(`
183
+ `)}function qA(e){return e.items.length===0?`No plan items for Saga ${e.sagaId}.
184
+ `:[`Saga ${e.sagaId} items (${e.items.length})`,...e.items.map(t=>{const n=[t.cmd?`cmd: ${t.cmd}`:void 0,t.note?`note: ${t.note}`:void 0].filter(Boolean);return`- [${t.state}] ${t.id} ${t.title}${n.length>0?` | ${n.join(" | ")}`:""}`}),""].join(`
185
+ `)}function ef(e){const t=Object.entries(e.session.userMetadata??{}).map(([o,r])=>`${o}=${r}`).join(", "),n=e.session.chatHero;return[`session created: ${e.session.sessionId}`,`saga ${e.sagaId}`,`metadata ${t||"none"}`,...n?[`hero ${n.name} (${n.heroId})`]:[],`recorded in ${e.record}`,""].join(`
186
+ `)}function fl(e){return e?e.drift.map(t=>`notice: method ${t.name} differs from the digest recorded at freeze (recorded ${t.recorded??"none"}, installed ${t.current}); confirm before resuming
187
+ `).join(""):""}function tf(e){return fl(e.methods)}function fo(e,t,n){return[`refused: ${e} ${t}`,...n.map(o=>` - ${o}`),""].join(`
188
+ `)}function Pa(e){const t=Array.isArray(e)?e.map(String):[];return t.length>0?`[${t.map(n=>`'${n}'`).join(", ")}]`:"none"}function nf(e){if(!e||typeof e!="object")return[];const t=e;return[t.marked?"master mark saga.role=master set":`master mark not set: ${String(t.reason)}`]}function of(e){return e.sessions.length===0?`no Worker sessions recorded for ${e.sagaId}
189
+ `:`${re([{header:"Session ID",value:t=>t.sessionId},{header:"Created",value:t=>t.createdAt},{header:"Role",value:t=>t.role},{header:"Item",value:t=>t.item??"-"},{header:"Title",value:t=>t.title}],e.sessions)}
190
+ `}function rf(e,t){const n=String(t.sagaId);switch(e){case"log append":return[`logged: ${n}`,`line ${String(t.line)}`,""].join(`
191
+ `);case"claim":return[`claimed: ${n}`,`owner session ${String(t.ownerSession)}`,`token ${String(t.token)}`,`created at ${String(t.createdAt)}`,...nf(t.master),""].join(`
192
+ `);case"assert-owner":return t.locked?`owner ok: ${n} is owned by session ${String(t.ownerSession)}
193
+ `:`no owner: ${n} has no execution lock
194
+ `;case"release":return`released: ${n} (owner session ${String(t.ownerSession)})
195
+ `;case"check":return`check passed: ${n} (${String(t.phase)})
196
+ `+fl(t.methods);case"set-status":return`status set: ${n} ${String(t.state)} (revision ${String(t.revision)})
197
+ `;case"tick":return`ticked: ${n} ${String(t.itemId)} (${String(t.evidence)})
198
+ `;case"block":return`blocked: ${n} ${String(t.itemId)}: ${String(t.reason)}
199
+ `;case"amend":return`amendment: ${n} ${String(t.name)} (open)
200
+ `;case"archive":return`archived: ${n} -> ${String(t.destination)}
201
+ `;case"freeze":return t.unchanged?`freeze unchanged: ${n} stays at revision ${String(t.revision)}
202
+ `:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${Pa(t.reopened)} added: ${Pa(t.added)}`,""].join(`
203
+ `);default:return`${e}: ${n}
204
+ `}}var hr=["goal","research","acceptance","plan","run","amend"],af="install/gitignore.template",sf=".gitignore";function lf(){return typeof __filename=="string"?(0,hi.pathToFileURL)(__filename).href:{}.url}function cf(e){let t=R.default.dirname((0,hi.fileURLToPath)(e));for(;;){const n=R.default.join(t,"resources","saga");if(Y.default.existsSync(n))return n;const o=R.default.dirname(t);if(o===t)break;t=o}throw new Error(`Unable to locate package resources/saga from ${e}`)}function Zl(e,t){let n;try{n=Y.default.lstatSync(e)}catch(o){throw new U(`Unable to read ${t} at ${e}: ${o instanceof Error?o.message:String(o)}`)}if(!n.isFile())throw new U(`${t} is not a regular file: ${e}`);return Y.default.readFileSync(e)}function qa(e,t,n,o){if(!e||typeof e!="object"||Array.isArray(e))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must be an object`);const r=e,a=Object.keys(r).sort(),i=[...t].sort();if(a.length!==i.length||a.some((s,l)=>s!==i[l]))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must list exactly ${t.join(", ")}`);for(const s of a)if(typeof r[s]!="string")throw new U(`Invalid Saga asset manifest at ${o}: ${n}.${s} must be a digest`);return r}function df(e,t){let n;try{n=JSON.parse(e.toString("utf8"))}catch(r){throw new U(`Invalid Saga asset manifest at ${t}: ${r instanceof Error?r.message:String(r)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new U(`Invalid Saga asset manifest at ${t}: expected an object`);const o=n;if(o.schemaVersion!==2)throw new U(`Unsupported Saga asset manifest schema at ${t}`);return{schemaVersion:2,install:qa(o.install,[af],"install",t),methods:qa(o.methods,hr,"methods",t)}}function ei(e,t,n){const o=Zl(R.default.join(e,...t.split("/")),`Saga asset ${t}`);if(!/^[0-9a-f]{64}$/.test(n)||(0,Te.createHash)("sha256").update(o).digest("hex")!==n)throw new U(`Saga asset integrity check failed for ${t}`);return o}function Fn(e=lf()){const t=cf(e),n=R.default.join(t,"manifest.json"),o=df(Zl(n,"Saga asset manifest"),n),r=new Map;for(const[i,s]of Object.entries(o.install))r.set(sf,ei(t,i,s));const a=new Map;for(const i of hr)a.set(i,ei(t,`prompts/${i}.md`,o.methods[i]));return{directory:t,install:r,methods:a}}var uf=/^- \[( |x)\] (\S+) (.*?)\s*\|\s*(.*)$/,mf=/^- ~ (\S+) (.*?)\s*\|\s*(.*)$/,hf=new Set(["## 待决问题","## Open questions"]),gf=["[已决定","[decided"],bf=new Set(["- 无","- none"]);function Me(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function qe(e){return(0,Te.createHash)("sha256").update(e).digest("hex")}function Ot(e){if(!e)return[];const t=e.split(/\r?\n/);return t.at(-1)===""&&t.pop(),t}function Rl(e){const t=[],n=[];return Ot(e).forEach((o,r)=>{const a=uf.exec(o);if(a){t.push({line:r,id:a[2],title:a[3],done:a[1]==="x",note:a[4].trim()});return}const i=mf.exec(o);i&&n.push({id:i[1],title:i[2]})}),{active:t,superseded:n}}function El(e){const t={};let n;for(const o of Ot(e)){const r=/^## (\S+)/.exec(o);r&&(n=r[1]);const a=/^cmd:\s*(.+)$/.exec(o);a&&n&&(t[n]=a[1].trim())}return t}function pf(e){const t=[];let n=!1;for(const o of Ot(e)){if(o.startsWith("## ")){n=hf.has(o.trim());continue}n&&o.startsWith("- ")&&!gf.some(r=>o.includes(r))&&!bf.has(o.trim().toLowerCase())&&t.push(o.slice(2).trim())}return t}function Af(e){const t=/^merged-in:[ \t]*(\S*)[ \t]*$/m.exec(e);return t?t[1]:""}function ff(e){return[...e.active.map(t=>`${t.id} ${t.title}`),...e.superseded.map(t=>`~ ${t.id} ${t.title}`)].join(`
205
+ `)}function Zf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,qe(n)]))}function ti(e){const t=n=>Object.entries(n).map(([o,r])=>` ${o}: ${r}
206
+ `).join("");return`revision: ${e.revision}
207
+ `+(e.frozenAt===void 0?"":`frozen-at: ${e.frozenAt}
208
+ `)+(e.prev===void 0?"":`prev: ${e.prev}
209
+ `)+`hashes:
210
+ ${t(e.hashes)}acceptance-by-item:
211
+ ${t(e.acceptanceByItem)}`+(e.methods===void 0?"":`methods:
212
+ ${t(e.methods)}`)+`items: ${e.items.join(" ")}
213
+ `}function Sl(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),r=/^acceptance-by-item:\r?\n/m.exec(e),a=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!r||!a)throw new U(`Invalid Saga data in "${t}": malformed contract lock.`);const i=Number(n[1]);if(!Number.isSafeInteger(i))throw new U(`Invalid Saga data in "${t}": invalid revision.`);return{revision:i,frozenAt:/^frozen-at:[ \t]*(\S*)/m.exec(e)?.[1],prev:/^prev:[ \t]*(\S*)/m.exec(e)?.[1],hashes:Pn(e,"hashes"),acceptanceByItem:Pn(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?Pn(e,"methods"):void 0,items:a[1].split(/\s+/).filter(Boolean)}}function Pn(e,t){const n=new RegExp(`^${t}:\\r?\\n((?: .*\\r?\\n?)*)`,"m").exec(e);return n?Object.fromEntries([...n[1].matchAll(/^ {2}(\S+):\s*(\S+)\s*$/gm)].map(o=>[o[1],o[2]])):{}}var Zo="**/runtime/";function Wt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function Rf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function ne(e,t){const n=R.default.resolve(e),o=R.default.resolve(t),r=R.default.relative(n,o);if(r==="")return o;if(r===".."||r.startsWith(`..${R.default.sep}`)||R.default.isAbsolute(r))throw new T([`path escapes the Saga root: ${t}`]);const a=Wt(n);if(a&&(a.isSymbolicLink()||!Rf((0,Y.realpathSync)(n),n)))throw new T([`Saga root is redirected through a link: ${n}`]);let i=n;for(const s of r.split(R.default.sep)){i=R.default.join(i,s);const l=Wt(i);if(!l)break;if(l.isSymbolicLink())throw new T([`refusing a redirected Saga path: ${i}`])}return o}function Ne(e,t){const n=ne(e,t);try{(0,Y.mkdirSync)(n,{recursive:!0})}catch(o){throw new U(`Cannot create Saga directory "${t}": ${kn(o)}`)}}function wn(e,t,n){const o=ne(e,t);let r;try{r=(0,Y.openSync)(o,"wx"),(0,Y.writeSync)(r,br(n))}finally{r!==void 0&&(0,Y.closeSync)(r)}}function pt(e,t,n){const o=ne(e,t),r=R.default.join(R.default.dirname(o),`${R.default.basename(o)}.${(0,Te.randomUUID)()}.tmp`);let a;try{a=(0,Y.openSync)(r,"wx"),(0,Y.writeSync)(a,br(n)),(0,Y.closeSync)(a),a=void 0,(0,Y.renameSync)(r,o)}finally{a!==void 0&&(0,Y.closeSync)(a),Wt(r)&&(0,Y.unlinkSync)(r)}}function gr(e,t,n){pt(e,t,`${JSON.stringify(n,null,2)}
214
+ `)}function Vl(e,t,n){const o=ne(e,t),r=yt(e,t),a=r!==void 0&&r.length>0&&r[r.length-1]!==10;let i;try{i=(0,Y.openSync)(o,"a"),(0,Y.writeSync)(i,br(a?`
215
+ ${n}`:n))}catch(s){throw new U(`Cannot append to Saga data "${t}": ${kn(s)}`)}finally{i!==void 0&&(0,Y.closeSync)(i)}}function Gl(e,t){(0,Y.unlinkSync)(ne(e,t))}function Ef(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function Sf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Wt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function yt(e,t){const n=ne(e,t);try{return(0,Y.readFileSync)(n)}catch(o){if(o.code==="ENOENT")return;throw new U(`Cannot read Saga data "${t}": ${kn(o)}`)}}function je(e,t){return yt(e,t)?.toString("utf8")}function Vf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Wt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function Gf(e){return e.split(/\r?\n/).includes(Zo)}function it(e){Ne(e,e);const t=ne(e,R.default.join(e,".gitignore"));let n;try{if(n=Wt(t)?(0,Y.readFileSync)(t,"utf8"):void 0,n!==void 0&&Gf(n))return;if(n===void 0){wn(e,t,`${Zo}
216
+ `);return}const o=n.includes(`\r
217
+ `)?`\r
218
+ `:`
219
+ `;(0,Y.appendFileSync)(t,`${n.length>0&&!n.endsWith(`
220
+ `)?o:""}${Zo}${o}`)}catch(o){throw o instanceof T?o:new U(`Cannot write the runtime ignore rule in "${t}": ${kn(o)}. No runtime files were created.`)}}function br(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function kn(e){return e instanceof Error?e.message:String(e)}var Nf=/^[a-z0-9][a-z0-9-]{0,62}$/,Wf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ro(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function vf(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function If(e,t){if(!Nf.test(e))throw new N(`Invalid Saga ID ${JSON.stringify(e)}: use 1-63 lowercase letters, digits, or hyphens, beginning with a letter or digit.`);if(Wf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=R.default.join(t,e);if(Ro(n))throw new U(`Saga "${e}" already exists at ${n}.`);const o=R.default.join(t,"archive");if(vf(o)){const r=(0,Y.readdirSync)(o).find(a=>a.endsWith(`-${e}`));if(r)throw new U(`Saga "${e}" already exists in the archive as "${r}".`)}}function Xf(e){return`hagi saga init ${e.kind==="path"?"--path":"--project-id"} ${JSON.stringify(e.value)}`}function yf(e,t){const n=R.default.dirname(R.default.dirname(e)),o=[".hagicode",".hagicode/sagas"],r=[".gitignore"],a=s=>{throw new U(`Saga resource path "${s}" is missing or unsafe. Run ${Xf(t)} after correcting the target.`)};for(const s of o){const l=R.default.join(n,s);Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isDirectory())&&a(s)}for(const s of r){const l=R.default.join(e,...s.split("/"));Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isFile())&&a(s)}const i=(0,Y.readFileSync)(R.default.join(e,".gitignore"),"utf8").split(/\r?\n/);!i.includes("**/runtime/")&&!i.includes("*/runtime/")&&a(".gitignore (runtime ignore rule)")}function Yf(e,t){const n=ne(t,R.default.join(t,e));try{(0,Y.mkdirSync)(n)}catch(r){throw r.code==="EEXIST"?new U(`Saga "${e}" already exists at ${n}.`):r}const o={id:e,createdAt:Me(),method:1};try{wn(t,R.default.join(n,"saga.json"),`${JSON.stringify(o,null,2)}
221
+ `)}catch(r){throw(0,Y.rmSync)(n,{recursive:!0,force:!0}),r}return o}var Nl=[".hagicode",".hagicode/sagas"];function Wl(e){return e.toString("utf8").split(/\r?\n/).includes("**/runtime/")}function Cf(e){if(Wl(e))return e;const t=e.toString("utf8"),n=t.match(/\r\n|\n/)?.[0]??`
222
+ `,o=e.length>0&&!t.endsWith(`
223
+ `)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Ht(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function ni(e,t,n){const o=R.default.join(R.default.dirname(e),`.${R.default.basename(e)}.${(0,Te.randomUUID)()}.tmp`);let r;try{r=(0,Y.openSync)(o,"wx",n??438),(0,Y.writeFileSync)(r,t),(0,Y.closeSync)(r),r=void 0,(0,Y.renameSync)(o,e)}finally{r!==void 0&&(0,Y.closeSync)(r),Ht(o)&&(0,Y.unlinkSync)(o)}}function oi(e,t,n){const o=R.default.relative(e,n);if(o===".."||o.startsWith(`..${R.default.sep}`)||R.default.isAbsolute(o))throw new U(`Saga installation path escapes the selected project: ${t}`);const r=R.default.resolve(t),a=R.default.resolve(n);if(process.platform==="win32"?r.toLowerCase()!==a.toLowerCase():r!==a)throw new U(`Saga installation path is redirected: ${t}`)}function rn(e,t){const n=(0,Y.realpathSync)(e);if(!(0,Y.statSync)(n).isDirectory())throw new U(`Selected project path is not a directory: ${e}`);const o=R.default.join(n,".hagicode","sagas");for(const r of Nl){const a=R.default.join(n,r),i=Ht(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga installation directory: ${a}`);if(!i.isDirectory())throw new U(`Saga installation path is not a directory: ${a}`);oi(n,a,(0,Y.realpathSync)(a))}}for(const r of t.install.keys()){const a=R.default.join(o,...r.split("/")),i=Ht(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga resource: ${a}`);if(!i.isFile())throw new U(`Saga resource is not a regular file: ${a}`);if(oi(o,a,(0,Y.realpathSync)(a)),i.nlink>1&&!Wl((0,Y.readFileSync)(a)))throw new U(`Refusing to overwrite hard-linked Saga resource: ${a}`)}}return o}function Bf(e,t,n=!1){const o=rn(e,t),r=R.default.dirname(R.default.dirname(o));for(const i of Nl){const s=R.default.join(r,i);Ht(s)||(0,Y.mkdirSync)(s)}rn(r,t);const a=[];for(const[i,s]of t.install){const l=R.default.join(o,...i.split("/")),c=Ht(l);if(!c){rn(r,t),ni(l,s),a.push({path:i,outcome:"created"});continue}const u=(0,Y.readFileSync)(l),h=Cf(u);u.equals(h)?a.push({path:i,outcome:"unchanged"}):(rn(r,t),ni(l,h,c.mode&511),a.push({path:i,outcome:"merged"}))}return{root:o,force:n,files:a,conflicts:[]}}var Dt=hr;function Ff(e){return Dt.includes(e)}function wf(e){return(0,Te.createHash)("sha256").update(e).digest("hex")}function vl(e,t=Fn()){const n=t.methods.get(e);if(!n)throw new Error(`Saga method ${e} is missing from the verified bundle`);return{name:e,sha256:wf(n),bytes:n}}function Il(e=Fn()){return Object.fromEntries(Dt.map(t=>[t,vl(t,e).sha256]))}var Xl=/^[a-z0-9][a-z0-9-]{0,62}$/,yl=new Set(["prompts","tools","archive","runtime","amendments","revisions"]),kf=[["goal","goal.md"],["research","research.md"],["acceptance","acceptance.md"],["plan","progress.md"]];function Un(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}function st(e){let t;try{t=(0,Y.statSync)(e)}catch(n){if(Un(n))return;throw new U(`Cannot inspect Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}if(!t.isFile())throw new U(`Cannot read Saga data "${e}": not a regular file.`);try{return(0,Y.readFileSync)(e,"utf8")}catch(n){throw new U(`Cannot read Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}}function Uf(e){const t=Rl(st(R.default.join(e,"progress.md"))??"");return{active:t.active.map(({id:n,title:o,done:r,note:a})=>({id:n,title:o,done:r,note:a})),superseded:t.superseded}}function Jf(e){return El(st(R.default.join(e,"acceptance.md"))??"")}function xf(e){const t=R.default.join(e,"runtime","blocked.json"),n=st(t);if(n===void 0)return{};let o;try{o=JSON.parse(n)}catch(r){throw new U(`Invalid Saga data in "${t}": ${r instanceof Error?r.message:String(r)}`)}if(!o||typeof o!="object"||Array.isArray(o))throw new U(`Invalid Saga data in "${t}": expected a JSON object.`);return o}function Lf(e){const t=R.default.join(e,"contract.lock"),n=st(t);return n===void 0?0:Sl(n,t).revision}function pr(e){const t=R.default.join(e,"amendments");let n;try{if(!(0,Y.statSync)(t).isDirectory())return[];n=(0,Y.readdirSync)(t).filter(o=>o.endsWith(".md")).sort()}catch(o){if(Un(o))return[];throw new U(`Cannot read Saga amendments "${t}": ${o instanceof Error?o.message:String(o)}`)}return n.map(o=>{const r=R.default.join(t,o),a=st(r);if(a===void 0)throw new U(`Cannot read Saga amendment "${r}": not a regular file.`);return{name:o,mergedIn:Af(a)}})}function Kf(e){const t=n=>{const o=st(R.default.join(e,n));return o!==void 0&&o.trim()!==""};return{goal:t("goal.md"),research:t("research.md"),acceptance:t("acceptance.md"),plan:t("progress.md")}}function Yl(e){const t=Uf(e),n=Jf(e),o=xf(e);return[...t.active.map(r=>({id:r.id,title:r.title,state:r.done?"done":r.id in o?"blocked":"pending",cmd:n[r.id]||"",note:r.note})),...t.superseded.map(r=>({id:r.id,title:r.title,state:"superseded",cmd:"",note:""}))]}function zf(e){return Yl(e)}var jf=["draft","planned","running","paused","done"];function Tf(e){const t=st(R.default.join(e,"runtime","status.json"));if(t===void 0)return;let n;try{n=JSON.parse(t)}catch{return}if(!n||typeof n!="object"||Array.isArray(n))return;const{state:o,note:r}=n;if(!(typeof o!="string"||!jf.includes(o)))return{state:o,note:typeof r=="string"?r:""}}function Ar(e,t){const n=Lf(t),o=Yl(t),r=Kf(t),a=o.filter(p=>p.state!=="superseded"),i=o.filter(p=>p.state==="done").length,s=kf.find(([p])=>!r[p])?.[0]??null,l=n===0?s?"draft":"planned":i===a.length?"done":"running",c=Tf(t),u=c!==void 0&&(c.state!=="running"||l==="running"),h=u?c.state:l,f=u?c.note:"";return{schema:"saga-status/2",sagaId:e,revision:n,state:h,updatedAt:new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),note:f,artifacts:r,nextArtifact:s,counts:{total:a.length,done:i,blocked:o.filter(p=>p.state==="blocked").length,pending:o.filter(p=>p.state==="pending").length,superseded:o.filter(p=>p.state==="superseded").length},openAmendments:pr(t).filter(p=>!p.mergedIn).length,items:o.map(({id:p,title:E,state:V})=>({id:p,title:E,state:V}))}}function Yt(e,t){const n=()=>{throw new ye(404,`Saga "${t}" was not found.`)};(!Xl.test(t)||yl.has(t))&&n();const o=R.default.join(e,t);let r;try{r=(0,Y.lstatSync)(o)}catch(a){throw Un(a)&&n(),new U(`Cannot inspect Saga "${o}": ${a instanceof Error?a.message:String(a)}`)}return r.isDirectory()||n(),o}function Hf(e){let t;try{t=(0,Y.readdirSync)(e,{withFileTypes:!0})}catch(n){if(Un(n))return[];throw new U(`Cannot list Sagas in "${e}": ${n instanceof Error?n.message:String(n)}`)}return t.filter(n=>n.isDirectory()&&Xl.test(n.name)&&!yl.has(n.name)).map(n=>n.name).sort()}function Qf(e){return Hf(e).map(t=>{const n=Ar(t,R.default.join(e,t));return{sagaId:n.sagaId,state:n.state,revision:n.revision,counts:n.counts,openAmendments:n.openAmendments,updatedAt:n.updatedAt}})}function Mf(e){return{sagas:Qf(e)}}function Of(e,t){return{sagaId:t,items:zf(Yt(e,t))}}function fr(e,t){return R.default.join(e,t)}function Zr(e,t){return R.default.join(fr(e,t),"runtime","execute.lock")}function Df(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.token=="string"&&typeof t.ownerSession=="string"&&typeof t.createdAt=="string"}function Rr(e,t){const n=ne(e,Zr(e,t));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new U(`Cannot read the execution lock of Saga "${t}": ${a.message}`)}let r;try{r=JSON.parse(o)}catch{throw new U(`The execution lock of Saga "${t}" is not valid JSON.`)}if(!Df(r))throw new U(`The execution lock of Saga "${t}" has an unexpected shape.`);return r}function Cl(e,t){return t===void 0||t===""?!1:(0,Te.timingSafeEqual)(Buffer.from(qe(e),"hex"),Buffer.from(qe(t),"hex"))}function Bl(e,t){return`Saga "${e}" is owned by session ${t}; reconcile the prior orchestrator and its workers. Ownership is never taken over by age.`}function _f(e,t,n){const o=n?.trim();if(!o)throw new N("claim requires a nonempty --session <owner-session-id>.");it(e),Ne(e,R.default.join(fr(e,t),"runtime"));const r={token:(0,Te.randomUUID)(),ownerSession:o,createdAt:Me()},a=Zr(e,t),i=R.default.join(R.default.dirname(a),`.execute.lock.${(0,Te.randomUUID)()}.tmp`);wn(e,i,`${JSON.stringify(r,null,2)}
224
+ `);try{Ef(e,i,a)}catch(s){throw s.code!=="EEXIST"?s:new T([Bl(t,Rr(e,t)?.ownerSession??"unknown")])}finally{Gl(e,i)}return r}function Er(e,t,n){const o=Rr(e,t);if(!o)return{locked:!1};if(!Cl(o.token,n))throw new T([`${Bl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function $f(e,t){const n=ne(e,R.default.join(fr(e,t),"runtime","status.json"));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(r){if(r.code==="ENOENT")return;throw r}try{const r=JSON.parse(o).state;return typeof r=="string"?r:void 0}catch{return}}function Pf(e,t,n){const o=Rr(e,t);if(!o)throw new T([`Saga "${t}" has no execution lock; there is nothing to release.`]);if(!Cl(o.token,n.token))throw new T([`the execution token does not match the owner session ${o.ownerSession}.`]);if(!n.workersSettled)throw new T(["confirm that every worker has settled with --workers-settled."]);const r=$f(e,t);if(r!=="paused"&&r!=="done")throw new T([`the stored status is ${r??"missing"}; write a paused or done snapshot with set-status before releasing.`]);return Gl(e,Zr(e,t)),{ownerSession:o.ownerSession}}function Sr(e){const t=R.default.resolve(e);let n;try{n=(0,Y.realpathSync)(t)}catch(o){throw new U(`Cannot use local project path "${e}": ${o instanceof Error?o.message:String(o)}`)}if(!(0,Y.statSync)(n).isDirectory())throw new U(`Local project path is not a directory: "${e}"`);return n}function Eo(e){if(!Array.isArray(e.projects))throw new U("Backend project list did not include a projects collection.");return e.projects}function Fl(e,t){if(typeof e.path!="string"||e.path.length===0)throw new U(`Backend project "${t}" has no host-local project path.`);return Sr(e.path)}async function qf(e,t,n){if(e.kind==="path")return Sr(e.value);const o=Eo(await X(t,n).api.listProjects()).find(r=>r.id===e.value);if(!o)throw new ye(404,`Project "${e.value}" was not found.`);return Fl(o,e.value)}function e2(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function t2(e){try{return(0,Y.realpathSync)(R.default.resolve(e))}catch{return}}function n2(e,t){const n=e.flatMap(o=>{if(typeof o.id!="string"||typeof o.path!="string"||o.path.length===0)return[];const r=t2(o.path);return r!==void 0&&e2(r,t)?[{id:o.id}]:[]});if(n.length===0)throw new T([`no registered project has the path ${t}; register the project or pass --project-id.`]);if(n.length>1){const o=n.map(r=>r.id).join(", ");throw new T([`${n.length} registered projects have the path ${t} (${o}); pass --project-id to choose one.`])}return{projectId:n[0].id,projectDirectory:t}}async function o2(e,t){if(e.kind==="path"){const o=Sr(e.value);return n2(Eo(await t()),o)}const n=Eo(await t()).find(o=>o.id===e.value);if(!n)throw new ye(404,`Project "${e.value}" was not found.`);return{projectId:e.value,projectDirectory:Fl(n,e.value)}}var ri=["implementation","verification"],r2="worker";function a2(e){const t={"saga.id":e.sagaId,"saga.role":r2,"saga.worker":e.role,"saga.master":e.masterSessionId};return e.item!==void 0&&(t["saga.item"]=e.item),t}function i2(e){const t=e.title.replace(/\s+/g," ").trim(),n=e.createdAt??Me();return`- ${e.sessionId} | ${n} | ${e.role} | ${e.item??"-"} | ${t}
225
+ `}function wl(e){const t=e.path!==void 0;if(t===(e.projectId!==void 0))throw new N("Specify exactly one of --path <directory> or --project-id <id>.");if(t){const o=e.path;if(o===void 0||o==="")throw new N("--path <directory> must not be empty.");return{kind:"path",value:o}}const n=e.projectId?.trim();if(!n)throw new N("--project-id <id> must not be empty.");return{kind:"project-id",value:n}}function s2(e,t){const n=e.opts().token??e.optsWithGlobals().token;if(e.optsWithGlobals().projectId!==void 0&&n!==void 0)throw new N("--token is the backend bearer token with --project-id; set SAGA_EXECUTION_TOKEN to pass the execution token.");return n!==void 0&&n!==""?n:t.SAGA_EXECUTION_TOKEN||void 0}async function lt(e,t){const n=e.optsWithGlobals(),o=wl(n),r=await qf(o,e,t);return{env:t.env,io:t.io,outputJson:n.json===!0,projectDirectory:r,sagaRoot:R.default.join(r,".hagicode","sagas"),selector:o}}var wt="session create",l2=/[\\/]/;function an(e,t){if(typeof e!="string"||e.trim()==="")throw new N(`session create requires a nonblank ${t} <value>.`);return e.trim()}function ai(e,t){if(l2.test(e)||e==="."||e===".."||e.includes("\0"))throw new N(`${t} must not contain a path separator or a traversal segment: ${JSON.stringify(e)}.`);return e}function c2(e){if(typeof e!="string"||!ri.includes(e))throw new N(`--role must be one of ${ri.join(", ")}.`);return e}function d2(e,t){const n=ai(an(e.saga,"--saga"),"--saga"),o=an(e.title,"--title"),r=c2(e.role),a=an(e.master,"--master"),i=e.item===void 0?void 0:ai(an(e.item,"--item"),"--item"),s=e.hero===void 0?void 0:el(e.hero,"--hero");if(e.token!==void 0)throw new N("--token is the backend bearer token; the Saga execution token comes only from SAGA_EXECUTION_TOKEN.");const l=t.SAGA_EXECUTION_TOKEN;if(l===void 0||l.trim()==="")throw new N("session create requires SAGA_EXECUTION_TOKEN to hold the execution token claimed for this Saga.");return{sagaId:n,title:o,role:r,masterSessionId:a,item:i,hero:s,executionToken:l,selector:wl(e)}}function u2(e,t){const n=R.default.join(e,t,"runtime"),o=R.default.join(n,"sessions.md");return ne(e,o),it(e),Ne(e,n),o}function m2(e){return e instanceof Error?e.message:String(e)}function h2(e){return async function(){const n=d2(this.optsWithGlobals(),e.env),o=X(this,e),r=i=>o.io.stdout(i),{sagaId:a}=n;try{const i=await o2(n.selector,()=>o.api.listProjects()),s=R.default.join(i.projectDirectory,".hagicode","sagas");Yt(s,a),Er(s,a,n.executionToken);const l=u2(s,a),c=Ae(await o.api.createChatSession({title:n.title,projectId:i.projectId,metadata:a2({sagaId:a,role:n.role,masterSessionId:n.masterSessionId,item:n.item}),...n.hero}));try{Vl(s,l,i2({sessionId:c.sessionId,role:n.role,item:n.item,title:n.title}))}catch(h){const f=`session ${c.sessionId} was created but its record could not be written to ${l}: ${m2(h)}`,p={sagaId:a,command:wt,ok:!1,errors:[f],session:c};throw r(o.outputJson?v(p):fo(wt,a,[f])),new T([f],{reported:!0})}const u={sagaId:a,command:wt,ok:!0,session:c,record:l};r(o.outputJson?v(u):ef(u))}catch(i){if(i instanceof T&&!i.reported){const s={sagaId:a,command:wt,ok:!1,errors:i.reasons};r(o.outputJson?v(s):fo(wt,a,i.reasons)),i.reported=!0}throw i}}}var g2=/^- (\S+) \| (\S+) \| (implementation|verification) \| (.+?) \| (.*)$/;function b2(e,t){const n=Yt(e,t),o=je(e,R.default.join(n,"runtime","sessions.md"));return o===void 0?[]:o.split(`
226
+ `).flatMap(r=>{const a=g2.exec(r);return a?[{sessionId:a[1],createdAt:a[2],role:a[3],item:a[4]==="-"?null:a[4],title:a[5]}]:[]})}function p2(e,t=Me()){return`- ${t} | ${e.replace(/\s+/g," ").trim()}
227
+ `}function A2(e,t,n){const o=Yt(e,t),r=R.default.join(o,"runtime"),a=R.default.join(r,"orchestrator-log.md");ne(e,a),it(e),Ne(e,r);const i=p2(n);return Vl(e,a,i),{line:i.trimEnd(),path:a}}var f2=["goal.md","research.md","acceptance.md","progress.md"],kl=/^(状态|Status):\s*PASS\s*$/m;function _e(e,t){const n=R.default.join(e,t),o=je(e,R.default.join(n,"progress.md")),r=je(e,R.default.join(n,"acceptance.md"));return{sagaRoot:e,sagaId:t,directory:n,goal:yt(e,R.default.join(n,"goal.md")),research:je(e,R.default.join(n,"research.md")),acceptance:r,progress:o,plan:Rl(o??""),commands:El(r??"")}}function Z2(e){return/[\\/]/.test(e)||e==="."||e===".."}function Jn(e){const t=[],n={"goal.md":e.goal!==void 0,"research.md":e.research!==void 0,"acceptance.md":e.acceptance!==void 0,"progress.md":e.progress!==void 0};for(const r of f2)n[r]||t.push(`${r} is missing`);const o=e.plan.active.map(r=>r.id);o.length===0&&n["progress.md"]&&t.push("progress.md has no active items"),new Set(o).size!==o.length&&t.push("progress.md has duplicate item IDs");for(const r of[...o,...e.plan.superseded.map(a=>a.id)])Z2(r)&&t.push(`unsafe item ID: ${r}`);for(const r of o)r in e.commands||t.push(`item ${r} has no acceptance cmd in acceptance.md`);for(const r of Object.keys(e.commands))o.includes(r)||t.push(`acceptance entry ${r} is not an active item in progress.md`);return t}function Ul(e){return{goal:qe(e.goal??Buffer.alloc(0)),acceptance:qe(e.acceptance!==void 0?Buffer.from(e.acceptance,"utf8"):Buffer.alloc(0)),"plan-items":qe(ff(e.plan))}}function Vr(e){return pr(e.directory).filter(t=>!t.mergedIn).map(t=>`open amendment ${t.name}: merge it into the artifacts and set merged-in`)}function Jl(e){return pf(e.research??"").map(t=>`open question not decided by a human: ${t}`)}function Gr(e){const t=je(e.sagaRoot,R.default.join(e.directory,"contract.lock"));if(t!==void 0)return{text:t,lock:Sl(t,R.default.join(e.directory,"contract.lock"))}}function xl(e){const t=[],n=Gr(e);if(!n)t.push("contract.lock missing: run freeze first");else{const o=Ul(e);for(const[r,a]of Object.entries(o))n.lock.hashes[r]!==a&&t.push(`hash mismatch for ${r}: frozen contract (r${n.lock.revision}) changed, run freeze after merging an amendment`)}return t.push(...Vr(e)),t.push(...Jl(e)),t.push(...R2(e)),t}function R2(e){const t=[],n=R.default.join(e.directory,"runtime");for(const o of e.plan.active.filter(r=>r.done)){if(!o.note)t.push(`item ${o.id} is ticked but has no evidence reference`);else{const a=R.default.resolve(n,o.note);a.startsWith(`${R.default.resolve(n)}${R.default.sep}`)?yt(e.sagaRoot,a)===void 0&&t.push(`item ${o.id} is ticked but evidence file is missing: ${o.note}`):t.push(`item ${o.id} evidence reference escapes the runtime directory: ${o.note}`)}const r=je(e.sagaRoot,R.default.join(n,"reports",`${o.id}.md`));(r===void 0||!kl.test(r))&&t.push(`item ${o.id} is ticked but its PASS report is missing`)}return t}function Ll(e,t,n){const o=_e(e,t),r=Jn(o);return n==="run"?[...r,...xl(o)]:r}function E2(e){const t=Gr(e);if(!t)return;const n=t.lock.methods;if(n===void 0)return{recorded:!1,drift:[]};const o=Il();return{recorded:!0,drift:Dt.filter(r=>n[r]!==o[r]).map(r=>({name:r,recorded:n[r]??null,current:o[r]}))}}function S2(e,t,n){const o=_e(e,t),r=Jn(o);return n==="plan"?{errors:r}:{errors:[...r,...xl(o)],methods:E2(o)}}function V2(e,t){const n=_e(e,t).plan.active;return[...n.length>0&&n.every(o=>o.done)?[]:["active items remain pending or blocked, or there are no active items"],...Ll(e,t,"run")]}function G2(e){return Zf(e.commands)}function N2(e,t){const n=Il(),o=_e(e,t),r=[...Jn(o),...Jl(o),...Vr(o)];if(r.length>0)throw new T(r);const a=Ul(o),i=G2(o),s=o.plan.active,l=[...s.map(d=>d.id),...o.plan.superseded.map(d=>d.id)],c=R.default.join(o.directory,"contract.lock"),u=Gr(o);if(!u)return pt(e,c,ti({revision:1,frozenAt:Me(),prev:"-",hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:1,unchanged:!1,reopened:[],added:s.map(d=>d.id)};const{text:h,lock:f}=u;if(Object.keys(a).length===Object.keys(f.hashes).length&&Object.entries(a).every(([d,m])=>f.hashes[d]===m))return{revision:f.revision,unchanged:!0,reopened:[],added:[]};const p=`r${f.revision+1}`;if(!pr(o.directory).some(d=>d.mergedIn===p))throw new T([`contract changed without an amendment merged into ${p}: tamper or unrecorded change`]);const E=new Set(l),V=f.items.filter(d=>!E.has(d));if(V.length>0)throw new T([`item removed without being marked superseded: ${V.join(", ")}`]);Ne(e,R.default.join(o.directory,"revisions")),pt(e,R.default.join(o.directory,"revisions",`r${f.revision}.lock`),h);const y=Ot(o.progress??""),J=[];for(const d of s)d.done&&f.acceptanceByItem[d.id]!==i[d.id]&&(y[d.line]=`- [ ] ${d.id} ${d.title} | reopened in ${p}: acceptance changed`,J.push(d.id));if(J.length>0){it(e);const d=R.default.join(o.directory,"runtime","history",`r${f.revision}`);Ne(e,d);for(const m of J)for(const A of[R.default.join(o.directory,"runtime","evidence",`${m}.log`),R.default.join(o.directory,"runtime","reports",`${m}.md`)])yt(e,A)!==void 0&&Sf(e,A,R.default.join(d,R.default.basename(A)))}return pt(e,R.default.join(o.directory,"progress.md"),`${y.join(`
228
+ `)}
229
+ `),pt(e,c,ti({revision:f.revision+1,frozenAt:Me(),prev:qe(h),hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:f.revision+1,previousRevision:f.revision,unchanged:!1,reopened:J,added:s.filter(d=>!f.items.includes(d.id)).map(d=>d.id)}}function Kl(e){return e.length>0&&!/[\\/]/.test(e)&&e!=="."&&e!==".."}function Nr(e,t){const n=R.default.join(e,t,"runtime","blocked.json"),o=je(e,n);if(o===void 0)return{};let r;try{r=JSON.parse(o)}catch(a){throw new U(`Invalid Saga data in "${n}": ${a.message}`)}if(!r||typeof r!="object"||Array.isArray(r))throw new U(`Invalid Saga data in "${n}": expected a JSON object.`);return{...r}}function W2(e,t){return R.default.join(e,t,"progress.md")}function v2(e,t,n){if(!n||!Kl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const o=_e(e,t),r=o.plan.active.find(h=>h.id===n);if(!r)throw new T([`unknown item ${n}: it is not an active item in progress.md`]);const a=R.default.join(o.directory,"runtime"),i=je(e,R.default.join(a,"reports",`${n}.md`));if(i===void 0||!kl.test(i))throw new T([`no PASS report for ${n}: runtime/reports/${n}.md must contain "Status: PASS"`]);if(yt(e,R.default.join(a,"evidence",`${n}.log`))===void 0)throw new T([`no evidence file for ${n}: runtime/evidence/${n}.log is missing`]);const s=Ll(e,t,"run");if(s.length>0)throw new T(s);const l=`evidence/${n}.log`,c=Ot(o.progress??"");c[r.line]=`- [x] ${n} ${r.title} | ${l}`,it(e),pt(e,W2(e,t),`${c.join(`
230
+ `)}
231
+ `);const u=Nr(e,t);return n in u&&(delete u[n],gr(e,R.default.join(a,"blocked.json"),u)),{itemId:n,evidence:l}}function I2(e,t,n,o){if(o===void 0||o.trim()==="")throw new N("block requires a nonempty reason.");if(!n||!Kl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const r=_e(e,t);if(!r.plan.active.some(s=>s.id===n))throw new T([`unknown item ${n}: it is not an active item in progress.md`]);it(e);const a=R.default.join(r.directory,"runtime");Ne(e,a);const i=Nr(e,t);return i[n]=o.trim(),gr(e,R.default.join(a,"blocked.json"),i),{itemId:n,reason:o.trim()}}function X2(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"amendment"}function y2(e,t,n,o){const r=(n??"").replace(/\s*[\r\n]+\s*/g," ").trim();if(r==="")throw new N("amend requires a nonempty title.");const a=R.default.join(e,t,"amendments");Ne(e,a);const i=(0,Y.readdirSync)(a).map(c=>/^(\d+)-.*\.md$/.exec(c)).filter(c=>c!==null).map(c=>Number(c[1])),s=(i.length>0?Math.max(...i):0)+1,l=`${String(s).padStart(3,"0")}-${X2(r)}.md`;return wn(e,R.default.join(a,l),`title: ${r}
232
+ created-at: ${Me()}
233
+ merged-in:
234
+ ---
235
+ ${o}
236
+ `),{name:l,mergedIn:""}}function Y2(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function C2(e,t,n){const o=_e(e,t),r=Nr(e,t),a=[];o.plan.active.length===0&&a.push("the saga has no active items");for(const l of o.plan.active.filter(c=>!c.done))a.push(`item ${l.id} is ${l.id in r?"blocked":"pending"}`);if(a.push(...Vr(o)),a.length>0&&!n)throw new T([...a,"use --force to archive anyway"]);const i=R.default.join(e,"archive");Ne(e,i);const s=R.default.join(i,`${Y2()}-${t}`);return Vf(e,R.default.join(e,t),s),{destination:s}}var Wr=["draft","planned","running","paused","done"];function zl(e){return typeof e=="string"&&Wr.includes(e)}function B2(e,t,n,o){if(!zl(n))throw new N(`--state must be one of ${Wr.join(", ")}.`);const r=R.default.join(e,t);if(n==="planned"||n==="running"){const i=Jn(_e(e,t));if(i.length>0)throw new T(i)}if(n==="done"){const i=V2(e,t);if(i.length>0)throw new T(i)}const a={...Ar(t,r),state:n,note:o??"",updatedAt:Me()};return it(e),Ne(e,R.default.join(r,"runtime")),gr(e,R.default.join(r,"runtime","status.json"),a),a}function Ze(e,t){return async function(...o){const r=o.slice(0,-2).map(String),a=this.opts();t.preflight?.(a);const i=t.takesToken?s2(this,e.env):void 0,s=await lt(this,e),l=r[0];if(!l)throw new N(`${t.name} requires a Saga ID.`);Yt(s.sagaRoot,l);const c=u=>s.io.stdout(u);try{t.guard&&Er(s.sagaRoot,l,i);const u=await t.run({sagaId:l,sagaRoot:s.sagaRoot,token:i,command:this},a,r),h={sagaId:l,command:t.name,ok:!0,...u};c(s.outputJson?v(h):rf(t.name,h))}catch(u){if(u instanceof T){const h={sagaId:l,command:t.name,ok:!1,errors:u.reasons,...u.details};c(s.outputJson?v(h):fo(t.name,l,u.reasons)+tf(u.details)),u.reported=!0}throw u}}}function F2(e){if(typeof e.session!="string"||e.session.trim()==="")throw new N("claim requires a nonempty --session <owner-session-id>.")}var ii=1e4;async function w2(e,t,n,o){let r;try{const{api:a}=X(e,t),i=new Promise((s,l)=>{r=setTimeout(()=>l(new Error(`no answer within ${ii/1e3} s`)),ii)});return await Promise.race([a.addSessionUserMetadata(o,{"saga.id":n,"saga.role":"master"}),i]),{sessionId:o,marked:!0}}catch(a){return{sessionId:o,marked:!1,reason:a instanceof Error?a.message:String(a)}}finally{r!==void 0&&clearTimeout(r)}}function k2(e){return Ze(e,{name:"claim",takesToken:!1,preflight:F2,run:async({sagaId:t,sagaRoot:n,command:o},r)=>{const a=_f(n,t,r.session),i=r.markSession===!1?{sessionId:a.ownerSession,marked:!1,reason:"skipped by --no-mark-session"}:await w2(o,e,t,a.ownerSession);return{ownerSession:a.ownerSession,token:a.token,createdAt:a.createdAt,master:i}}})}function U2(e){return Ze(e,{name:"assert-owner",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o})=>{const r=Er(n,t,o);return r.locked?{locked:!0,ownerSession:r.ownerSession}:{locked:!1}}})}function J2(e){return Ze(e,{name:"freeze",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n})=>{const o=N2(n,t);return{revision:o.revision,previousRevision:o.previousRevision??null,unchanged:o.unchanged,reopened:o.reopened,added:o.added}}})}function x2(e){return Ze(e,{name:"check",takesToken:!1,preflight:t=>{if(t.phase!=="plan"&&t.phase!=="run")throw new N("check --phase must be plan or run.")},run:({sagaId:t,sagaRoot:n},o)=>{const r=o.phase,{errors:a,methods:i}=S2(n,t,r),s=i===void 0?{}:{methods:i};if(a.length>0)throw new T(a,{details:s});return{phase:r,errors:[],...s}}})}function L2(e){return Ze(e,{name:"tick",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...v2(n,t,r[1])})})}function K2(e){return Ze(e,{name:"block",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...I2(n,t,r[1],r[2])})})}function z2(e){return Ze(e,{name:"amend",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({name:y2(n,t,r[1],r[2]??"").name,merged:!1})})}function j2(e){return Ze(e,{name:"archive",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o)=>({...C2(n,t,o.force===!0)})})}function T2(e){return Ze(e,{name:"set-status",takesToken:!0,guard:!0,preflight:t=>{if(!zl(t.state))throw new N(`--state must be one of ${Wr.join(", ")}.`)},run:({sagaId:t,sagaRoot:n},o)=>({...B2(n,t,o.state,o.note)})})}function H2(e){return Ze(e,{name:"release",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o},r)=>({released:!0,ownerSession:Pf(n,t,{token:o,workersSettled:r.workersSettled===!0}).ownerSession})})}var Q2="session list";function M2(e){return async function(n){const o=await lt(this,e),r={sagaId:n,command:Q2,ok:!0,sessions:b2(o.sagaRoot,n)};o.io.stdout(o.outputJson?v(r):of(r))}}function O2(e){return Ze(e,{name:"log append",takesToken:!0,guard:!0,preflight:t=>{if(typeof t.message!="string"||t.message.trim()==="")throw new N("log append requires a nonblank --message <text>.")},run:({sagaId:t,sagaRoot:n},o)=>({...A2(n,t,String(o.message))})})}function oe(e){return I(e.option("--path <directory>","Select a local project directory without backend access.").option("--project-id <id>","Select a project from the configured backend."))}function Fe(e){return e.option("--token <token>","Execution token of the Saga owner (or set SAGA_EXECUTION_TOKEN).")}function D2(e){return async function(){const n=await lt(this,e),o=this.opts().force===!0,r=Bf(n.projectDirectory,Fn(),o);n.io.stdout(n.outputJson?v(r):DA(r))}}function _2(e){return async function(n){const o=this.optsWithGlobals();if(!Ff(n))throw new N(`Unknown Saga method ${JSON.stringify(n)}: use one of ${Dt.join(", ")}.`);const r=vl(n,Fn()),a=r.bytes.toString("utf8");e.io.stdout(o.json===!0?v({name:r.name,sha256:r.sha256,content:a}):a)}}function $2(e){return async function(n){const o=await lt(this,e);If(n,o.sagaRoot),yf(o.sagaRoot,o.selector);const r=Yf(n,o.sagaRoot),a={id:r.id,directory:R.default.join(o.sagaRoot,n),metadata:r};o.io.stdout(o.outputJson?v(a):_A(a))}}function P2(e){return async function(){const n=await lt(this,e),o=Mf(n.sagaRoot);n.io.stdout(n.outputJson?v(o):$A(o))}}function q2(e){return async function(n){const o=await lt(this,e),r=Ar(n,Yt(o.sagaRoot,n));o.io.stdout(o.outputJson?v(r):PA(r))}}function eZ(e){return async function(n){const o=await lt(this,e),r=Of(o.sagaRoot,n);o.io.stdout(o.outputJson?v(r):qA(r))}}function tZ(e,t){const n=e.command("saga").description("Initialize, create, and inspect project-local Sagas.");oe(n.command("init").description("Install the Saga ignore rule. Method prompts come from the CLI (see method).")).option("--force","Accepted for compatibility; no managed resource is replaced.").action(D2(t)),I(n.command("method <name>").description(`Print a published Saga method (${Dt.join(", ")}) from the installed CLI.`)).action(_2(t)),oe(n.command("new <saga-id>").description("Create a Saga in an initialized project.")).action($2(t)),oe(n.command("list").description("List active Sagas.")).action(P2(t)),oe(n.command("status <saga-id>").description("Read a Saga status projection.")).action(q2(t)),oe(n.command("items <saga-id>").description("Read Saga plan items.")).action(eZ(t)),oe(n.command("claim <saga-id>").description("Claim exclusive execution ownership of a Saga.")).requiredOption("--session <id>","Owner session identifier recorded in the lock.").option("--no-mark-session","Do not add saga.id and saga.role=master to the owner session (by default the claim marks it, so session lists group it with its Workers).").action(k2(t)),Fe(oe(n.command("assert-owner <saga-id>").description("Check the execution token before dispatch."))).action(U2(t)),Fe(oe(n.command("release <saga-id>").description("Release execution ownership after a paused or done snapshot."))).option("--workers-settled","Confirm that every worker has settled.").action(H2(t)),Fe(oe(n.command("freeze <saga-id>").description("Freeze the Saga contract as revision 1, or the next revision after a merged amendment."))).action(J2(t)),Fe(oe(n.command("set-status <saga-id>").description("Write the runtime status snapshot (draft, planned, running, paused or done)."))).requiredOption("--state <state>","draft, planned, running, paused or done.").option("--note <text>","Note stored with the snapshot.").action(T2(t)),Fe(oe(n.command("tick <saga-id> <item-id>").description("Mark a plan item done once its PASS report and evidence exist."))).action(L2(t)),Fe(oe(n.command("block <saga-id> <item-id> <reason>").description("Record why a plan item is blocked."))).action(K2(t)),Fe(oe(n.command("amend <saga-id> <title> <text>").description("Append an open amendment to the Saga contract."))).action(z2(t)),Fe(oe(n.command("archive <saga-id>").description("Archive a finished Saga; --force archives unfinished work."))).option("--force","Archive even when items are unfinished or amendments are open.").action(j2(t)),oe(n.command("check <saga-id>").description("Check the plan (--phase plan) or the frozen run contract (--phase run, the default).")).option("--phase <phase>","plan or run.","run").action(x2(t));const o=n.command("session").description("Create Saga Worker chat sessions and record them.");I(o.command("create").description("Create a Worker chat session marked with saga.* metadata and record it in runtime/sessions.md.")).option("--saga <id>","Saga whose Worker this is.").option("--title <title>","Title of the Worker chat session.").option("--role <role>","implementation or verification.").option("--master <session-id>","Session ID of the orchestrating (master) session.").option("--item <id>",'Plan item the Worker serves; recorded as "-" when omitted.').option("--hero <name-or-id>","Hero the Worker runs, by name or ID. A GUID is an ID, any other value is a name. Without it the backend picks the Hero.").option("--path <directory>","Project directory. The backend is called to find the registered project with this real path.").option("--project-id <id>","Backend project ID.").addHelpText("after",`
237
+ ${nZ}
238
+ `).action(h2(t)),oe(o.command("list <saga-id>").description("List the Worker sessions recorded in runtime/sessions.md. Read-only.")).action(M2(t)),Fe(oe(n.command("log").description("Write the orchestrator run record of a Saga.").command("append <saga-id>").description("Append one line to runtime/orchestrator-log.md under the execution token."))).requiredOption("--message <text>","Text of the log line. Whitespace and line breaks collapse to one line.").action(O2(t))}var nZ=["Metadata written to the session (userMetadata):"," saga.id the Saga ID"," saga.role always worker"," saga.worker the --role value"," saga.master the --master value"," saga.item the --item value (only when --item is given)","","--hero binds the Worker session to a Hero: a GUID is sent as a Hero ID, any other value as a Hero name. A Hero the backend","rejects (an unknown name, or both a Hero ID and a name) fails with the backend message and records nothing. The Hero is not","written to the metadata or to sessions.md.","","The execution token comes only from SAGA_EXECUTION_TOKEN; --token is refused because it is the backend bearer token.","The command creates and records the session. It sends no message and does not archive it (see hagi chat archive).","","Exit codes: 0 created and recorded; 1 refused, or the record could not be written (the session ID is named);","2 usage error, nothing sent; 24 Saga not found.","",$s(),"","Example:",' SAGA_EXECUTION_TOKEN=<token> hagi saga session create --saga demo --path <root> --title "T1 implementation"'," --role implementation --master <your-session-id> --item T1"].join(`
239
+ `);function nt(e){return e?"yes":"no"}function oZ(e){return e&&e.length>0?e.join(", "):"-"}function jl(e){return e.origin??"user"}function Tl(e){return jl(e)==="built-in"}function rZ(e){return Tl(e)?nt(e.builtIn?.enabled):"-"}function aZ(e){return(Tl(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function iZ(e){const t=e.items??[];return t.length===0?`No local skills installed.
240
+ `:`Local skills (${t.length})
241
+ ${re([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:jl},{header:"Enabled",value:rZ},{header:"Version",value:aZ},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>oZ(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
242
+ `}function sZ(e){return q([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function lZ(e){return q([["skillName",e.slug??void 0],["enabled",nt(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function cZ(e){const t=e.items??[];return t.length===0?`No gallery skills found.
243
+ `:`Gallery skills (${t.length})
244
+ ${re([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>nt(n.isTrustedSource)}],t)}
245
+ `}function dZ(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function uZ(e,t={providers:[]}){const n=e.trustedProvider;return`${q([["id",e.id??void 0],["source",e.source??void 0],["skillSlug",e.skillSlug??void 0],["installable",nt(e.isInstallable)],["description",e.description??void 0],["repository",e.repositoryFullName??e.repositoryName??void 0],["repositoryUrl",e.repositoryUrl??void 0],["defaultBranch",e.repositoryDefaultBranch??void 0],["trustedSource",nt(e.isTrustedSource)],["trustedProvider",n?`${n.displayName??n.providerId??"-"}`:void 0],["installReference",e.installReference??void 0],["installCommand",e.installCommandPreview??void 0],["installVersion",e.installVersion??void 0],["installHint",e.installHint??void 0]])}${t.providers.map(o=>`${dZ(o)}
246
+ `).join("")}`}function mZ(e){return q([["installReference",e.installReference??void 0],["normalizedSkillKey",e.normalizedSkillKey??void 0],["version",e.version??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0],["commandPreview",e.commandPreview??void 0]])}function sn(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
247
+ `:`Trusted providers (${t.length}, directory version ${e.version??0})
248
+ ${re([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>nt(n.isEnabled)},{header:"Preset",value:n=>nt(n.isPreset)},{header:"Rules",value:n=>String(n.ruleCount??0)}],t)}
249
+ `}function hZ(e,t){const n=e.command("gallery").description("Search the skill gallery, read skill details, and start managed installs.");I(n.command("search").description("Search the skill gallery by keyword.")).option("--query <query>","Keyword to search for. Omit to list the gallery.").action(async function(r){const a=X(this,t),i=await a.api.searchSkillGallery(k(r.query));if(a.outputJson){a.io.stdout(v(i));return}a.io.stdout(cZ(i))}),I(n.command("detail").description("Show one gallery skill with installability, trust, and repository details.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").action(async function(r){const a=X(this,t),i=x(r.id,"--id"),s=x(r.source,"--source"),[l,c]=await Promise.allSettled([a.api.getSkillGalleryDetail(i,s),a.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(a.outputJson){a.io.stdout(v({...u,audit:h}));return}a.io.stdout(uZ(u,h))}),I(n.command("install").description("Start a managed install of one gallery skill.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").requiredOption("--skill-slug <slug>","Skill slug inside the source repository.").option("--version <version>","Optional version token to install.").action(async function(r){const a=X(this,t),i=await a.api.installGallerySkill({id:x(r.id,"--id"),source:x(r.source,"--source"),skillSlug:x(r.skillSlug,"--skill-slug"),version:k(r.version)});if(a.outputJson){a.io.stdout(v(i));return}a.io.stdout(mZ(i))})}var gZ="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function si(e,t,n){const o=n?"enable":"disable";I(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${gZ}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(a){const i=X(this,t),s=await i.api.setBuiltInSkillAvailability({slug:x(a.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(v(s)):i.io.stdout(lZ(s)),!s.succeeded)throw new U(s.userMessage??`The built-in skill availability was not changed for ${s.slug??a.skillName}.`)})}function bZ(e,t){const n=e.command("local").description("List, enable or disable built-in skills, and uninstall user-installed local skills.");I(n.command("list").description("List installed local skills with their managed install metadata.")).action(async function(){const r=X(this,t),a=await r.api.listLocalSkills();if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(iZ(a))}),si(n,t,!0),si(n,t,!1),I(n.command("uninstall").description("Uninstall one user-installed local skill by name. Built-in skills cannot be uninstalled; use `skills local disable --skill-name <name>` to stop one from loading.")).requiredOption("--skill-name <name>","Local skill name to uninstall.").action(async function(r){const a=X(this,t),i=await a.api.uninstallLocalSkill({skillName:x(r.skillName,"--skill-name")});if(a.outputJson){a.io.stdout(v(i));return}a.io.stdout(sZ(i))})}async function pZ(e,t){const n=await Bn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new N(`${t} must be a JSON object.`);return n}function AZ(e,t){const n=e.command("trusted").description("Manage the trusted skill provider directory.");I(n.command("list").description("List trusted skill providers.")).action(async function(){const r=X(this,t),a=await r.api.listTrustedSkillProviders();if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(sn(a))}),I(n.command("upsert").description("Create or update a trusted provider from a JSON document.")).requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(r){const a=X(this,t),i=await pZ(x(r.input,"--input"),"Trusted provider input"),s=await a.api.upsertTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(v(s));return}a.io.stdout(sn(s))}),I(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(r){const a=X(this,t),i={providerId:x(r.providerId,"--provider-id")},s=await a.api.deleteTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(v(s));return}a.io.stdout(sn(s))}),I(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const r=X(this,t),a=await r.api.resetTrustedSkillProviders();if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(sn(a))})}function fZ(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");bZ(n,t),hZ(n,t),AZ(n,t)}function li(e,t,n){const o=n.guard;return{state:o?o.state:n.reason===null?null:"unknown",reason:o?o.reason:n.reason,provider:n.provider??null,status:e?.status??"unavailable",source:e?.source??"none",failureReason:e?.failureReason??null,dateKey:e?.dateKey??null,totalTokens:e?.totalTokens??null,costUsd:e?.costUsd??null,windows:t.map(r=>({provider:r.provider,kind:r.kind,remainingPercent:r.remainingPercent,resetsAtUtc:r.resetsAtUtc,minutesToReset:r.minutesToReset,windowMinutes:r.windowMinutes,watched:r.watched})),guard:o}}function ZZ(e){const t=e.provider??"all providers",n=[];n.push(RZ(e,t));for(const o of e.windows)n.push(` ${SZ(o)}`);return e.windows.length===0&&e.state!=="unknown"&&n.push(" No limit windows reported."),`${n.join(`
250
+ `)}
251
+ `}function RZ(e,t){const n=e.guard;if(n?.state==="ready")return`READY ${t}: every watched window is above ${n.thresholdPercent}% remaining (waited ${n.waitedSeconds}s, stagger ${n.jitterSeconds}s).`;if(n?.state==="low"){const o=n.blockers.map(EZ).join("; ");return`LOW ${t}: at or below ${n.thresholdPercent}% after waiting ${n.waitedSeconds}s: ${o}.`}return e.state==="unknown"?`UNAVAILABLE ${t}: ${e.reason??"no usable figure"}.`:`READ ${t}: ${e.windows.length} limit window(s), no threshold given.`}function EZ(e){const t=e.remainingPercent===null?"remaining unknown":`${e.remainingPercent}% remaining`;return`${e.provider} ${e.kind} ${t}, resets ${e.resetsAtUtc??"at an unknown time"}`}function SZ(e){const t=e.windowMinutes===null?"":` [${e.windowMinutes} min]`,n=e.remainingPercent===null?"remaining unknown":`remaining ${e.remainingPercent}%`,o=e.resetsAtUtc===null?"reset unknown":`resets ${e.resetsAtUtc} (in ${e.minutesToReset??"?"} min)`,r=e.watched?"":" (not watched: weekly or longer)";return`${e.provider} ${e.kind}${t}: ${n}, ${o}${r}`}var VZ=1800,ci=21600,di=3600;function GZ(e){return typeof e.remainingPercent=="number"&&Number.isFinite(e.remainingPercent)?ui(e.remainingPercent):typeof e.usedPercent=="number"&&Number.isFinite(e.usedPercent)?ui(100-e.usedPercent):null}function NZ(e){return typeof e.windowMinutes=="number"?e.windowMinutes<=360:e.kind==="session"}function Hl(e,t,n){const o=[];for(const r of e.limits?.providers??[])if(!(n!==void 0&&r.provider!==n))for(const a of r.windows??[]){const i=a.resetsAtUtc?Date.parse(a.resetsAtUtc):NaN;o.push({provider:r.provider,kind:a.kind,windowMinutes:typeof a.windowMinutes=="number"?a.windowMinutes:null,remainingPercent:GZ(a),resetsAtUtc:a.resetsAtUtc??null,minutesToReset:Number.isNaN(i)?null:vZ((i-t)/6e4),watched:NZ(a)})}return o}function Ql(e,t,n,o){return e.status!=="ok"?e.failureReason?`Token Monitor status is ${e.status}: ${e.failureReason}`:`Token Monitor status is ${e.status}`:t.some(r=>(!o||r.watched)&&r.remainingPercent!==null)?null:`no ${o?"watched ":""}${n??"provider"} window with a remaining figure in the Token Monitor snapshot`}async function WZ(e,t,n){const o=n.now(),r=()=>Math.floor((n.now()-o)/1e3);let a=0,i=null,s=[];const l=(c,u)=>({wait:{state:c,provider:t.provider,thresholdPercent:t.thresholdPercent,checkedAtUtc:new Date(n.now()).toISOString(),...u},snapshot:i,windows:s});for(;;){let c=null,u=null;try{c=await e(),i=c}catch(d){u=d instanceof Error?d.message:String(d)}const h=c?Hl(c,n.now(),t.provider):[];c&&(s=h);const f=c?Ql(c,h,t.provider,!0):u;if(f!==null){a+=1;const d=r();if(a>3||d>=t.maxWaitSeconds)return l("unknown",{waitedSeconds:d,jitterSeconds:0,blockers:[],reason:f});await n.sleep(Math.min(30,t.maxWaitSeconds-d)*1e3);continue}a=0;const p=h.filter(d=>d.watched&&d.remainingPercent!==null&&d.remainingPercent<=t.thresholdPercent),E=r();if(p.length===0){const d=t.jitterSeconds>0&&E>0?Math.floor(n.random()*(t.jitterSeconds+1)):0;return d>0&&await n.sleep(d*1e3),l("ready",{waitedSeconds:E,jitterSeconds:d,blockers:[],reason:null})}if(E>=t.maxWaitSeconds)return l("low",{waitedSeconds:E,jitterSeconds:0,blockers:p,reason:null});const V=Math.max(...p.map(d=>d.minutesToReset===null?300:Math.max(0,d.minutesToReset*60)+60)),y=t.maxWaitSeconds-E,J=Math.max(1,Math.min(300,V,y));await n.sleep(J*1e3)}}function ui(e){return Math.min(100,Math.max(0,e))}function vZ(e){return Math.round(e*10)/10}function IZ(e,t){I(e.command("usage").description("Read Token Monitor usage: each provider's limit windows with their remaining percent and reset times.").command("limits").description("Read provider limit windows. With --wait-until-above, wait for a reset for a bounded time. Read-only.").option("--provider <id>","Only this provider, for example claude or codex. Required with --wait-until-above.").option("--wait-until-above <percent>","Wait until every short window (six hours or less) of --provider is above this remaining percent.").option("--max-wait <seconds>",`Longest wait with --wait-until-above (default ${VZ}; 0 checks once; at most ${ci}).`).option("--jitter-seconds <seconds>",`Random delay after a wait that ends ready (default 120; 0 disables; at most ${di}).`).addHelpText("after",`
252
+ Exit codes: 0 a usable reading (with --wait-until-above: ready or low; low is not a failure),
253
+ ${$.QUOTA_UNKNOWN} unavailable (no usable figure was read), 2 invalid options.
254
+ Transport and HTTP failures keep their usual codes. Quota comes only from the backend Token Monitor usage RPC.
255
+ `)).action(async function(){const o=this.opts(),r=o.provider?.trim()||void 0,a=qn(o.waitUntilAbove,"--wait-until-above",0,100),i=qn(o.maxWait,"--max-wait",0,ci),s=qn(o.jitterSeconds,"--jitter-seconds",0,di);if(a===void 0){if(o.maxWait!==void 0||o.jitterSeconds!==void 0)throw new N("--max-wait and --jitter-seconds apply only with --wait-until-above <percent>.")}else if(r===void 0)throw new N("--wait-until-above needs --provider <id>: a wait watches one provider's windows.");const l=X(this,t),c={now:t.now??Date.now,sleep:t.sleep??Yn,random:Math.random},u=()=>l.api.getTokenMonitorUsage(),h=p=>{l.io.stdout(l.outputJson?v(p):ZZ(p))};if(a===void 0){const p=await u(),E=Hl(p,c.now(),r),V=Ql(p,E,r,!1);if(h(li(p,E,{provider:r,reason:V,guard:null})),V!==null)throw new mo(`Quota unavailable: ${V}.`);return}const f=await WZ(u,{provider:r,thresholdPercent:a,maxWaitSeconds:i??1800,jitterSeconds:s??120},c);if(h(li(f.snapshot,f.windows,{provider:r,reason:null,guard:f.wait})),f.wait.state==="unknown")throw new mo(`${r} quota could not be read: ${f.wait.reason??"no usable figure"}.`)})}function qn(e,t,n,o){if(e===void 0)return;if(!/^\d+$/.test(e.trim()))throw new N(`${t} must be a whole number.`);const r=Number(e.trim());if(r<n||r>o)throw new N(`${t} must be between ${n} and ${o}.`);return r}function j(e){const t=e?.trim();return t||void 0}function XZ(e){return{severity:j(e.severity)??"",code:j(e.code)??"",message:j(e.message)??"",relativePath:j(e.relativePath)}}function vr(e){return{id:j(e.id)??"",name:j(e.name)??"",type:j(e.type)??"",physicalPath:j(e.physicalPath)??"",gitUrl:j(e.gitUrl),createdAtUtc:j(e.createdAtUtc),updatedAtUtc:j(e.updatedAtUtc),bootstrapDiagnostics:(e.bootstrapDiagnostics??[]).map(XZ)}}function Ml(e){return{generatedAtUtc:j(e.generatedAtUtc),vaults:(e.items??[]).map(vr)}}function yZ(e){return e.length===0?`No vaults found.
256
+ `:`Vaults (${e.length})
257
+ ${re([{header:"Vault ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.physicalPath}],e)}
258
+ `}function Ol(e,t=[]){return q([["id",e.id],["name",e.name],["type",e.type],["physicalPath",e.physicalPath],["gitUrl",e.gitUrl],["createdAtUtc",e.createdAtUtc],["updatedAtUtc",e.updatedAtUtc],["bootstrapDiagnostics",String(e.bootstrapDiagnostics.length)],...t])}function YZ(e){return{relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",isDirectory:e.isDirectory===!0,extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),previewSupported:e.previewSupported===!0}}function CZ(e){return{vaultId:j(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:j(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function BZ(e){return`Vault deleted
259
+ ${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function FZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),isTruncated:e.isTruncated===!0,totalFileCount:typeof e.totalFileCount=="number"?e.totalFileCount:0,items:(e.items??[]).map(YZ)}}function wZ(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["status",e.status],["errorCode",e.errorCode],["message",e.message],["isTruncated",String(e.isTruncated)],["totalFileCount",String(e.totalFileCount)]]);return e.items.length===0?`Vault files
260
+ ${t}No files found.
261
+ `:`Vault files
262
+ ${t}${re([{header:"Relative Path",value:n=>n.relativePath},{header:"Directory",value:n=>n.isDirectory?"yes":"no"},{header:"Extension",value:n=>n.extension},{header:"Size",value:n=>String(n.sizeBytes)},{header:"Preview",value:n=>n.previewSupported?"yes":"no"}],e.items)}
263
+ `}function kZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),previewSupported:e.previewSupported===!0,contentTruncated:e.contentTruncated===!0,content:j(e.content)}}function UZ(e){const t=q([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["relativePath",e.relativePath],["fileName",e.fileName],["extension",e.extension],["sizeBytes",String(e.sizeBytes)],["lastModifiedUtc",e.lastModifiedUtc],["status",e.status],["errorCode",e.errorCode],["message",e.message],["previewSupported",String(e.previewSupported)],["contentTruncated",String(e.contentTruncated)]]);if(!e.content)return`Vault file preview
264
+ ${t}`;const n=e.content.endsWith(`
265
+ `)?"":`
266
+ `;return`Vault file preview
267
+ ${t}content
268
+ -------
269
+ ${e.content}${n}`}function JZ(e,t){I(e.command("create").description("Create a vault through the generated vault client.")).requiredOption("--name <name>","Vault display name.").requiredOption("--type <type>","Vault type, such as folder, obsidian, or coderef.").requiredOption("--physical-path <path>","Vault physical path.").option("--git-url <url>","Optional git remote URL for git-backed vaults.").action(async function(o){const r=X(this,t),a=vr(await r.api.createVault({name:x(o.name,"--name"),type:x(o.type,"--type"),physicalPath:x(o.physicalPath,"--physical-path"),gitUrl:k(o.gitUrl)}));if(r.outputJson){r.io.stdout(v({vault:a}));return}r.io.stdout(`Vault created
270
+ ${Ol(a)}`)})}function xZ(e,t){I(e.command("delete").description("Delete a vault by id and optionally request local file cleanup.")).requiredOption("--id <id>","Vault id to delete.").option("--delete-local-files","Request backend deletion of local vault files.").action(async function(o){const r=X(this,t),a=CZ(await r.api.deleteVault(x(o.id,"--id"),o.deleteLocalFiles===!0));if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(BZ(a))})}function LZ(e,t){I(e.command("list").description("List files under a registered vault path.")).requiredOption("--id <id>","Vault id to browse.").option("--path <path>","Optional relative path under the vault root.").action(async function(o){const r=X(this,t),a=FZ(await r.api.listVaultFiles(x(o.id,"--id"),k(o.path)));if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(wZ(a))})}function KZ(e,t){I(e.command("preview").description("Preview supported file content from a registered vault.")).requiredOption("--id <id>","Vault id to browse.").requiredOption("--path <path>","Relative file path to preview.").action(async function(o){const r=X(this,t),a=kZ(await r.api.previewVaultFile(x(o.id,"--id"),x(o.path,"--path")));if(r.outputJson){r.io.stdout(v(a));return}r.io.stdout(UZ(a))})}function zZ(e,t){I(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=X(this,t),r=Ml(await o.api.listVaults());if(o.outputJson){o.io.stdout(v(r));return}o.io.stdout(yZ(r.vaults))})}function jZ(e,t){I(e.command("update").description("Update a vault by merging provided fields into the current vault snapshot.")).requiredOption("--id <id>","Vault id to update.").option("--name <name>","Updated vault display name.").option("--type <type>","Updated vault type.").option("--physical-path <path>","Updated vault physical path.").option("--git-url <url>","Updated git remote URL.").action(async function(o){const r=k(o.name),a=k(o.type),i=k(o.physicalPath),s=k(o.gitUrl);if(!r&&!a&&!i&&!s)throw new N("Provide at least one field to update: --name, --type, --physical-path, or --git-url.");const l=X(this,t),c=x(o.id,"--id"),u=Ml(await l.api.listVaults()).vaults.find(f=>f.id===c);if(!u)throw new ye(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=vr(await l.api.updateVault(c,{name:r??u.name,type:a??u.type,physicalPath:i??u.physicalPath,gitUrl:s??u.gitUrl??null}));if(l.outputJson){l.io.stdout(v({vault:h}));return}l.io.stdout(`Vault updated
271
+ ${Ol(h)}`)})}function TZ(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");zZ(n,t),JZ(n,t),jZ(n,t),xZ(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");LZ(o,t),KZ(o,t)}function HZ(e){return e.includes("--json")}function Dl(e=Hs(),t=!1){const n=new dc;return n.name("hagi").description("HagiCode CLI for project, proposal, Saga, vault, chat, HagiTask, and scheduled plan management, plus agent-facing capabilities.").showHelpAfterError().exitOverride(),n.configureOutput({writeOut:o=>{e.io.stdout(o)},writeErr:o=>{t||e.io.stderr(o)},getOutHelpWidth:()=>100,getErrHelpWidth:()=>100}),Zb(n),WA(n,e),OA(n,e),TZ(n,e),mp(n,e),Up(n,e),eA(n,e),fZ(n,e),Lb(n,e),tZ(n,e),IZ(n,e),n}function QZ(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(ws({exitCode:$.USAGE,message:e.message},{json:!0})),$.USAGE)}async function MZ(e=process.argv,t=Hs()){const n=HZ(e),o=Dl(t,n);try{return await o.parseAsync([...e]),0}catch(r){if(r instanceof cc)return QZ(r,t,n);const a=Fs(r,{baseUrl:nh()});return(r instanceof tt||r instanceof T)&&r.reported||t.io.stderr(ws(a,{json:n})),a.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return $}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return Dl}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return MZ}});