@tokmizer/plugin 0.9.56 → 0.9.58

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.
Files changed (57) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +168 -9
  3. package/agent-plugins/amp.js +38 -0
  4. package/agent-plugins/hermes/__init__.py +39 -0
  5. package/agent-plugins/hermes/plugin.yaml +5 -0
  6. package/agent-plugins/kilo.js +40 -0
  7. package/agent-plugins/omp.js +32 -0
  8. package/agent-plugins/openclaw/index.js +39 -0
  9. package/agent-plugins/openclaw/openclaw.plugin.json +12 -0
  10. package/agent-plugins/openclaw/package.json +11 -0
  11. package/agent-plugins/opencode.js +40 -0
  12. package/agent-plugins/pi.js +30 -0
  13. package/codex-plugin/plugin.json +1 -1
  14. package/command-templates/tkr-gain.md +7 -2
  15. package/command-templates/tkr-link.md +1 -1
  16. package/command-templates/tkr-status.md +5 -3
  17. package/command-templates/tkr-telemetry.md +3 -3
  18. package/command-templates/tkr-unlink.md +2 -2
  19. package/dist/bin/tkr-agent-hook.js +11 -0
  20. package/dist/bin/tkr-codex-hook.js +131 -40
  21. package/dist/bin/tkr-copilot-hook.js +11 -0
  22. package/dist/bin/tkr-crush-hook.js +11 -0
  23. package/dist/bin/tkr-cursor-hook.js +11 -0
  24. package/dist/bin/tkr-daemon.js +161 -55
  25. package/dist/bin/tkr-droid-hook.js +11 -0
  26. package/dist/bin/tkr-exec +135 -42
  27. package/dist/bin/tkr-exec.js +135 -42
  28. package/dist/bin/tkr-gemini-hook.js +11 -0
  29. package/dist/bin/tkr-grok-hook.js +11 -0
  30. package/dist/bin/tkr-junie-hook.js +11 -0
  31. package/dist/bin/tkr-processor.js +162 -0
  32. package/dist/bin/tkr-qwen-hook.js +11 -0
  33. package/dist/bin/tkr-shim.js +131 -38
  34. package/dist/bin/tkr-trae-hook.js +11 -0
  35. package/dist/bin/tkr-zcode-hook.js +11 -0
  36. package/dist/bin/tkr.js +356 -152
  37. package/dist/hooks-host/post-tool-use.js +144 -48
  38. package/dist/hooks-host/pre-tool-use.js +8 -7
  39. package/dist/hooks-host/reducer-prompt-submit.js +1 -1
  40. package/dist/hooks-host/reducer-session-start.js +1 -1
  41. package/dist/hooks-host/reducer-stop.js +25 -16
  42. package/dist/hooks-host/session-recap.js +4 -3
  43. package/dist/index.js +125 -39
  44. package/dist/native/manifest.json +18 -8
  45. package/dist/native/single.json +38 -0
  46. package/dist/native/tkr-exec-darwin-arm64 +0 -0
  47. package/dist/native/tkr-exec-darwin-x64 +0 -0
  48. package/dist/native/tkr-exec-linux-arm64 +0 -0
  49. package/dist/native/tkr-exec-linux-x64 +0 -0
  50. package/dist/native/tkr-exec-win32-arm64.exe +0 -0
  51. package/dist/native/tkr-exec-win32-x64.exe +0 -0
  52. package/hooks/on-session-start.d.mts +1 -0
  53. package/hooks/on-session-start.mjs +25 -8
  54. package/package.json +24 -2
  55. package/scripts/README-INSTALL.md +13 -5
  56. package/scripts/install-mac-linux.sh +72 -6
  57. package/scripts/install-native.mjs +164 -25
package/dist/bin/tkr.js CHANGED
@@ -1,199 +1,403 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __tkrCreateRequire } from "node:module"; const require = __tkrCreateRequire(import.meta.url);
3
- var Ki=Object.defineProperty;var S=(t,e,r)=>()=>{if(r)throw r[0];try{return t&&(e=t(t=0)),e}catch(n){throw r=[n],n}};var Q=(t,e)=>{for(var r in e)Ki(t,r,{get:e[r],enumerable:!0})};var x,jr,p,se,yt=S(()=>{(function(t){t.assertEqual=s=>{};function e(s){}t.assertIs=e;function r(s){throw new Error}t.assertNever=r,t.arrayToEnum=s=>{let o={};for(let i of s)o[i]=i;return o},t.getValidEnumValues=s=>{let o=t.objectKeys(s).filter(a=>typeof s[s[a]]!="number"),i={};for(let a of o)i[a]=s[a];return t.objectValues(i)},t.objectValues=s=>t.objectKeys(s).map(function(o){return s[o]}),t.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let o=[];for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&o.push(i);return o},t.find=(s,o)=>{for(let i of s)if(o(i))return i},t.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function n(s,o=" | "){return s.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}t.joinValues=n,t.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(x||(x={}));(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(jr||(jr={}));p=x.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),se=t=>{switch(typeof t){case"undefined":return p.undefined;case"string":return p.string;case"number":return Number.isNaN(t)?p.nan:p.number;case"boolean":return p.boolean;case"function":return p.function;case"bigint":return p.bigint;case"symbol":return p.symbol;case"object":return Array.isArray(t)?p.array:t===null?p.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?p.promise:typeof Map<"u"&&t instanceof Map?p.map:typeof Set<"u"&&t instanceof Set?p.set:typeof Date<"u"&&t instanceof Date?p.date:p.object;default:return p.unknown}}});var d,Gi,L,Kt=S(()=>{yt();d=x.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Gi=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),L=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(o){return o.message},n={_errors:[]},s=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(s);else if(i.code==="invalid_return_type")s(i.returnTypeError);else if(i.code==="invalid_arguments")s(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let a=n,c=0;for(;c<i.path.length;){let u=i.path[c];c===i.path.length-1?(a[u]=a[u]||{_errors:[]},a[u]._errors.push(r(i))):a[u]=a[u]||{_errors:[]},a=a[u],c++}}};return s(this),n}static assert(e){if(!(e instanceof t))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,x.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=r=>r.message){let r={},n=[];for(let s of this.issues)if(s.path.length>0){let o=s.path[0];r[o]=r[o]||[],r[o].push(e(s))}else n.push(e(s));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};L.create=t=>new L(t)});var Ji,ce,zr=S(()=>{Kt();yt();Ji=(t,e)=>{let r;switch(t.code){case d.invalid_type:t.received===p.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case d.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,x.jsonStringifyReplacer)}`;break;case d.unrecognized_keys:r=`Unrecognized key(s) in object: ${x.joinValues(t.keys,", ")}`;break;case d.invalid_union:r="Invalid input";break;case d.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${x.joinValues(t.options)}`;break;case d.invalid_enum_value:r=`Invalid enum value. Expected ${x.joinValues(t.options)}, received '${t.received}'`;break;case d.invalid_arguments:r="Invalid function arguments";break;case d.invalid_return_type:r="Invalid function return type";break;case d.invalid_date:r="Invalid date";break;case d.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:x.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case d.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case d.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case d.custom:r="Invalid input";break;case d.invalid_intersection_types:r="Intersection results could not be merged";break;case d.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case d.not_finite:r="Number must be finite";break;default:r=e.defaultError,x.assertNever(t)}return{message:r}},ce=Ji});function Yi(t){is=t}function We(){return is}var is,Gt=S(()=>{zr();is=ce});function m(t,e){let r=We(),n=wt({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===ce?void 0:ce].filter(s=>!!s)});t.common.issues.push(n)}var wt,Wi,O,b,Ae,N,Jt,Yt,ge,qe,Ur=S(()=>{Gt();zr();wt=t=>{let{data:e,path:r,errorMaps:n,issueData:s}=t,o=[...r,...s.path||[]],i={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let a="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)a=u(i,{data:e,defaultError:a}).message;return{...s,path:o,message:a}},Wi=[];O=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let s of r){if(s.status==="aborted")return b;s.status==="dirty"&&e.dirty(),n.push(s.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let s of r){let o=await s.key,i=await s.value;n.push({key:o,value:i})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let s of r){let{key:o,value:i}=s;if(o.status==="aborted"||i.status==="aborted")return b;o.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||s.alwaysSet)&&(n[o.value]=i.value)}return{status:e.value,value:n}}},b=Object.freeze({status:"aborted"}),Ae=t=>({status:"dirty",value:t}),N=t=>({status:"valid",value:t}),Jt=t=>t.status==="aborted",Yt=t=>t.status==="dirty",ge=t=>t.status==="valid",qe=t=>typeof Promise<"u"&&t instanceof Promise});var as=S(()=>{});var h,cs=S(()=>{(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(h||(h={}))});function v(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:s}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(i,a)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??n??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:c??r??a.defaultError}},description:s}}function fs(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function ma(t){return new RegExp(`^${fs(t)}$`)}function ms(t){let e=`${ds}T${fs(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function pa(t,e){return!!((e==="v4"||!e)&&ia.test(t)||(e==="v6"||!e)&&ca.test(t))}function ha(t,e){if(!ra.test(t))return!1;try{let[r]=t.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=JSON.parse(atob(n));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||e&&s.alg!==e)}catch{return!1}}function ga(t,e){return!!((e==="v4"||!e)&&aa.test(t)||(e==="v6"||!e)&&ua.test(t))}function ya(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,s=r>n?r:n,o=Number.parseInt(t.toFixed(s).replace(".","")),i=Number.parseInt(e.toFixed(s).replace(".",""));return o%i/10**s}function Xe(t){if(t instanceof F){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=J.create(Xe(n))}return new F({...t._def,shape:()=>e})}else return t instanceof de?new de({...t._def,type:Xe(t.element)}):t instanceof J?J.create(Xe(t.unwrap())):t instanceof ie?ie.create(Xe(t.unwrap())):t instanceof oe?oe.create(t.items.map(e=>Xe(e))):t}function Hr(t,e){let r=se(t),n=se(e);if(t===e)return{valid:!0,data:t};if(r===p.object&&n===p.object){let s=x.objectKeys(e),o=x.objectKeys(t).filter(a=>s.indexOf(a)!==-1),i={...t,...e};for(let a of o){let c=Hr(t[a],e[a]);if(!c.valid)return{valid:!1};i[a]=c.data}return{valid:!0,data:i}}else if(r===p.array&&n===p.array){if(t.length!==e.length)return{valid:!1};let s=[];for(let o=0;o<t.length;o++){let i=t[o],a=e[o],c=Hr(i,a);if(!c.valid)return{valid:!1};s.push(c.data)}return{valid:!0,data:s}}else return r===p.date&&n===p.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}function ps(t,e){return new Fe({values:t,typeName:k.ZodEnum,...v(e)})}function ls(t,e){let r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function hs(t,e={},r){return t?we.create().superRefine((n,s)=>{let o=t(n);if(o instanceof Promise)return o.then(i=>{if(!i){let a=ls(e,n),c=a.fatal??r??!0;s.addIssue({code:"custom",...a,fatal:c})}});if(!o){let i=ls(e,n),a=i.fatal??r??!0;s.addIssue({code:"custom",...i,fatal:a})}}):we.create()}var Y,us,_,qi,Xi,Qi,ea,ta,ra,na,sa,oa,Zr,ia,aa,ca,ua,la,da,ds,fa,ye,Re,Ce,$e,Pe,Qe,Oe,Ie,we,le,ee,et,de,F,De,ue,Wt,Ne,oe,qt,tt,rt,Xt,Me,Le,Fe,je,be,W,J,ie,ze,Ue,nt,wa,bt,kt,Ze,ba,k,ka,gs,ys,va,_a,ws,xa,Sa,Ea,Ta,Aa,Ra,Ca,$a,Pa,Oa,Ia,Da,Na,Ma,La,Fa,ja,za,Ua,Za,Ha,Ba,Va,Ka,Ga,Ja,Ya,Wa,qa,Xa,Qa,ec,tc,rc,bs=S(()=>{Kt();Gt();cs();Ur();yt();Y=class{constructor(e,r,n,s){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},us=(t,e)=>{if(ge(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new L(t.common.issues);return this._error=r,this._error}}};_=class{get description(){return this._def.description}_getType(e){return se(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:se(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new O,ctx:{common:e.parent.common,data:e.data,parsedType:se(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(qe(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:se(e)},s=this._parseSync({data:e,path:n.path,parent:n});return us(n,s)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:se(e)};if(!this["~standard"].async)try{let n=this._parseSync({data:e,path:[],parent:r});return ge(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(n=>ge(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:se(e)},s=this._parse({data:e,path:n.path,parent:n}),o=await(qe(s)?s:Promise.resolve(s));return us(n,o)}refine(e,r){let n=s=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(s):r;return this._refinement((s,o)=>{let i=e(s),a=()=>o.addIssue({code:d.custom,...n(s)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,r){return this._refinement((n,s)=>e(n)?!0:(s.addIssue(typeof r=="function"?r(n,s):r),!1))}_refinement(e){return new W({schema:this,typeName:k.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return J.create(this,this._def)}nullable(){return ie.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return de.create(this)}promise(){return be.create(this,this._def)}or(e){return De.create([this,e],this._def)}and(e){return Ne.create(this,e,this._def)}transform(e){return new W({...v(this._def),schema:this,typeName:k.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new ze({...v(this._def),innerType:this,defaultValue:r,typeName:k.ZodDefault})}brand(){return new bt({typeName:k.ZodBranded,type:this,...v(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Ue({...v(this._def),innerType:this,catchValue:r,typeName:k.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return kt.create(this,e)}readonly(){return Ze.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},qi=/^c[^\s-]{8,}$/i,Xi=/^[0-9a-z]+$/,Qi=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ea=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ta=/^[a-z0-9_-]{21}$/i,ra=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,na=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,sa=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,oa="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ia=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,aa=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ca=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ua=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,la=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,da=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ds="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",fa=new RegExp(`^${ds}$`);ye=class t extends _{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==p.string){let o=this._getOrReturnCtx(e);return m(o,{code:d.invalid_type,expected:p.string,received:o.parsedType}),b}let n=new O,s;for(let o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(s=this._getOrReturnCtx(e,s),m(s,{code:d.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),n.dirty());else if(o.kind==="max")e.data.length>o.value&&(s=this._getOrReturnCtx(e,s),m(s,{code:d.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),n.dirty());else if(o.kind==="length"){let i=e.data.length>o.value,a=e.data.length<o.value;(i||a)&&(s=this._getOrReturnCtx(e,s),i?m(s,{code:d.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&m(s,{code:d.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),n.dirty())}else if(o.kind==="email")sa.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"email",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="emoji")Zr||(Zr=new RegExp(oa,"u")),Zr.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"emoji",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="uuid")ea.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"uuid",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="nanoid")ta.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"nanoid",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="cuid")qi.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"cuid",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="cuid2")Xi.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"cuid2",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="ulid")Qi.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"ulid",code:d.invalid_string,message:o.message}),n.dirty());else if(o.kind==="url")try{new URL(e.data)}catch{s=this._getOrReturnCtx(e,s),m(s,{validation:"url",code:d.invalid_string,message:o.message}),n.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"regex",code:d.invalid_string,message:o.message}),n.dirty())):o.kind==="trim"?e.data=e.data.trim():o.kind==="includes"?e.data.includes(o.value,o.position)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),n.dirty()):o.kind==="toLowerCase"?e.data=e.data.toLowerCase():o.kind==="toUpperCase"?e.data=e.data.toUpperCase():o.kind==="startsWith"?e.data.startsWith(o.value)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:{startsWith:o.value},message:o.message}),n.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:{endsWith:o.value},message:o.message}),n.dirty()):o.kind==="datetime"?ms(o).test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:"datetime",message:o.message}),n.dirty()):o.kind==="date"?fa.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:"date",message:o.message}),n.dirty()):o.kind==="time"?ma(o).test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{code:d.invalid_string,validation:"time",message:o.message}),n.dirty()):o.kind==="duration"?na.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"duration",code:d.invalid_string,message:o.message}),n.dirty()):o.kind==="ip"?pa(e.data,o.version)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"ip",code:d.invalid_string,message:o.message}),n.dirty()):o.kind==="jwt"?ha(e.data,o.alg)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"jwt",code:d.invalid_string,message:o.message}),n.dirty()):o.kind==="cidr"?ga(e.data,o.version)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"cidr",code:d.invalid_string,message:o.message}),n.dirty()):o.kind==="base64"?la.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"base64",code:d.invalid_string,message:o.message}),n.dirty()):o.kind==="base64url"?da.test(e.data)||(s=this._getOrReturnCtx(e,s),m(s,{validation:"base64url",code:d.invalid_string,message:o.message}),n.dirty()):x.assertNever(o);return{status:n.value,value:e.data}}_regex(e,r,n){return this.refinement(s=>e.test(s),{validation:r,code:d.invalid_string,...h.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...h.errToObj(e)})}url(e){return this._addCheck({kind:"url",...h.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...h.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...h.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...h.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...h.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...h.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...h.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...h.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...h.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...h.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...h.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...h.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...h.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...h.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...h.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...h.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...h.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...h.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...h.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...h.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...h.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...h.errToObj(r)})}nonempty(e){return this.min(1,h.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}};ye.create=t=>new ye({checks:[],typeName:k.ZodString,coerce:t?.coerce??!1,...v(t)});Re=class t extends _{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==p.number){let o=this._getOrReturnCtx(e);return m(o,{code:d.invalid_type,expected:p.number,received:o.parsedType}),b}let n,s=new O;for(let o of this._def.checks)o.kind==="int"?x.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),m(n,{code:d.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?ya(e.data,o.value)!==0&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),m(n,{code:d.not_finite,message:o.message}),s.dirty()):x.assertNever(o);return{status:s.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,h.toString(r))}gt(e,r){return this.setLimit("min",e,!1,h.toString(r))}lte(e,r){return this.setLimit("max",e,!0,h.toString(r))}lt(e,r){return this.setLimit("max",e,!1,h.toString(r))}setLimit(e,r,n,s){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:h.toString(s)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:h.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:h.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:h.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:h.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:h.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:h.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:h.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:h.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:h.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&x.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.value<e)&&(e=n.value)}return Number.isFinite(r)&&Number.isFinite(e)}};Re.create=t=>new Re({checks:[],typeName:k.ZodNumber,coerce:t?.coerce||!1,...v(t)});Ce=class t extends _{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==p.bigint)return this._getInvalidInput(e);let n,s=new O;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),m(n,{code:d.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):x.assertNever(o);return{status:s.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return m(r,{code:d.invalid_type,expected:p.bigint,received:r.parsedType}),b}gte(e,r){return this.setLimit("min",e,!0,h.toString(r))}gt(e,r){return this.setLimit("min",e,!1,h.toString(r))}lte(e,r){return this.setLimit("max",e,!0,h.toString(r))}lt(e,r){return this.setLimit("max",e,!1,h.toString(r))}setLimit(e,r,n,s){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:h.toString(s)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:h.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:h.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:h.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:h.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:h.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}};Ce.create=t=>new Ce({checks:[],typeName:k.ZodBigInt,coerce:t?.coerce??!1,...v(t)});$e=class extends _{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==p.boolean){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.boolean,received:n.parsedType}),b}return N(e.data)}};$e.create=t=>new $e({typeName:k.ZodBoolean,coerce:t?.coerce||!1,...v(t)});Pe=class t extends _{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==p.date){let o=this._getOrReturnCtx(e);return m(o,{code:d.invalid_type,expected:p.date,received:o.parsedType}),b}if(Number.isNaN(e.data.getTime())){let o=this._getOrReturnCtx(e);return m(o,{code:d.invalid_date}),b}let n=new O,s;for(let o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(s=this._getOrReturnCtx(e,s),m(s,{code:d.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),n.dirty()):o.kind==="max"?e.data.getTime()>o.value&&(s=this._getOrReturnCtx(e,s),m(s,{code:d.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),n.dirty()):x.assertNever(o);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:h.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:h.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e!=null?new Date(e):null}};Pe.create=t=>new Pe({checks:[],coerce:t?.coerce||!1,typeName:k.ZodDate,...v(t)});Qe=class extends _{_parse(e){if(this._getType(e)!==p.symbol){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.symbol,received:n.parsedType}),b}return N(e.data)}};Qe.create=t=>new Qe({typeName:k.ZodSymbol,...v(t)});Oe=class extends _{_parse(e){if(this._getType(e)!==p.undefined){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.undefined,received:n.parsedType}),b}return N(e.data)}};Oe.create=t=>new Oe({typeName:k.ZodUndefined,...v(t)});Ie=class extends _{_parse(e){if(this._getType(e)!==p.null){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.null,received:n.parsedType}),b}return N(e.data)}};Ie.create=t=>new Ie({typeName:k.ZodNull,...v(t)});we=class extends _{constructor(){super(...arguments),this._any=!0}_parse(e){return N(e.data)}};we.create=t=>new we({typeName:k.ZodAny,...v(t)});le=class extends _{constructor(){super(...arguments),this._unknown=!0}_parse(e){return N(e.data)}};le.create=t=>new le({typeName:k.ZodUnknown,...v(t)});ee=class extends _{_parse(e){let r=this._getOrReturnCtx(e);return m(r,{code:d.invalid_type,expected:p.never,received:r.parsedType}),b}};ee.create=t=>new ee({typeName:k.ZodNever,...v(t)});et=class extends _{_parse(e){if(this._getType(e)!==p.undefined){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.void,received:n.parsedType}),b}return N(e.data)}};et.create=t=>new et({typeName:k.ZodVoid,...v(t)});de=class t extends _{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),s=this._def;if(r.parsedType!==p.array)return m(r,{code:d.invalid_type,expected:p.array,received:r.parsedType}),b;if(s.exactLength!==null){let i=r.data.length>s.exactLength.value,a=r.data.length<s.exactLength.value;(i||a)&&(m(r,{code:i?d.too_big:d.too_small,minimum:a?s.exactLength.value:void 0,maximum:i?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),n.dirty())}if(s.minLength!==null&&r.data.length<s.minLength.value&&(m(r,{code:d.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),n.dirty()),s.maxLength!==null&&r.data.length>s.maxLength.value&&(m(r,{code:d.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((i,a)=>s.type._parseAsync(new Y(r,i,r.path,a)))).then(i=>O.mergeArray(n,i));let o=[...r.data].map((i,a)=>s.type._parseSync(new Y(r,i,r.path,a)));return O.mergeArray(n,o)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:h.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:h.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:h.toString(r)}})}nonempty(e){return this.min(1,e)}};de.create=(t,e)=>new de({type:t,minLength:null,maxLength:null,exactLength:null,typeName:k.ZodArray,...v(e)});F=class t extends _{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=x.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==p.object){let u=this._getOrReturnCtx(e);return m(u,{code:d.invalid_type,expected:p.object,received:u.parsedType}),b}let{status:n,ctx:s}=this._processInputParams(e),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof ee&&this._def.unknownKeys==="strip"))for(let u in s.data)i.includes(u)||a.push(u);let c=[];for(let u of i){let l=o[u],g=s.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new Y(s,g,s.path,u)),alwaysSet:u in s.data})}if(this._def.catchall instanceof ee){let u=this._def.unknownKeys;if(u==="passthrough")for(let l of a)c.push({key:{status:"valid",value:l},value:{status:"valid",value:s.data[l]}});else if(u==="strict")a.length>0&&(m(s,{code:d.unrecognized_keys,keys:a}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let l of a){let g=s.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new Y(s,g,s.path,l)),alwaysSet:l in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let u=[];for(let l of c){let g=await l.key,w=await l.value;u.push({key:g,value:w,alwaysSet:l.alwaysSet})}return u}).then(u=>O.mergeObjectSync(n,u)):O.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return h.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{let s=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:h.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:k.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let n of x.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let n of x.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}deepPartial(){return Xe(this)}partial(e){let r={};for(let n of x.objectKeys(this.shape)){let s=this.shape[n];e&&!e[n]?r[n]=s:r[n]=s.optional()}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let n of x.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let o=this.shape[n];for(;o instanceof J;)o=o._def.innerType;r[n]=o}return new t({...this._def,shape:()=>r})}keyof(){return ps(x.objectKeys(this.shape))}};F.create=(t,e)=>new F({shape:()=>t,unknownKeys:"strip",catchall:ee.create(),typeName:k.ZodObject,...v(e)});F.strictCreate=(t,e)=>new F({shape:()=>t,unknownKeys:"strict",catchall:ee.create(),typeName:k.ZodObject,...v(e)});F.lazycreate=(t,e)=>new F({shape:t,unknownKeys:"strip",catchall:ee.create(),typeName:k.ZodObject,...v(e)});De=class extends _{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function s(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return r.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new L(a.ctx.common.issues));return m(r,{code:d.invalid_union,unionErrors:i}),b}if(r.common.async)return Promise.all(n.map(async o=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await o._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(s);{let o,i=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},l=c._parseSync({data:r.data,path:r.path,parent:u});if(l.status==="valid")return l;l.status==="dirty"&&!o&&(o={result:l,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(o)return r.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(c=>new L(c));return m(r,{code:d.invalid_union,unionErrors:a}),b}}get options(){return this._def.options}};De.create=(t,e)=>new De({options:t,typeName:k.ZodUnion,...v(e)});ue=t=>t instanceof Me?ue(t.schema):t instanceof W?ue(t.innerType()):t instanceof Le?[t.value]:t instanceof Fe?t.options:t instanceof je?x.objectValues(t.enum):t instanceof ze?ue(t._def.innerType):t instanceof Oe?[void 0]:t instanceof Ie?[null]:t instanceof J?[void 0,...ue(t.unwrap())]:t instanceof ie?[null,...ue(t.unwrap())]:t instanceof bt||t instanceof Ze?ue(t.unwrap()):t instanceof Ue?ue(t._def.innerType):[],Wt=class t extends _{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==p.object)return m(r,{code:d.invalid_type,expected:p.object,received:r.parsedType}),b;let n=this.discriminator,s=r.data[n],o=this.optionsMap.get(s);return o?r.common.async?o._parseAsync({data:r.data,path:r.path,parent:r}):o._parseSync({data:r.data,path:r.path,parent:r}):(m(r,{code:d.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),b)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let s=new Map;for(let o of r){let i=ue(o.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let a of i){if(s.has(a))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(a)}`);s.set(a,o)}}return new t({typeName:k.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:s,...v(n)})}};Ne=class extends _{_parse(e){let{status:r,ctx:n}=this._processInputParams(e),s=(o,i)=>{if(Jt(o)||Jt(i))return b;let a=Hr(o.value,i.value);return a.valid?((Yt(o)||Yt(i))&&r.dirty(),{status:r.value,value:a.data}):(m(n,{code:d.invalid_intersection_types}),b)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([o,i])=>s(o,i)):s(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Ne.create=(t,e,r)=>new Ne({left:t,right:e,typeName:k.ZodIntersection,...v(r)});oe=class t extends _{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==p.array)return m(n,{code:d.invalid_type,expected:p.array,received:n.parsedType}),b;if(n.data.length<this._def.items.length)return m(n,{code:d.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),b;!this._def.rest&&n.data.length>this._def.items.length&&(m(n,{code:d.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let o=[...n.data].map((i,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new Y(n,i,n.path,a)):null}).filter(i=>!!i);return n.common.async?Promise.all(o).then(i=>O.mergeArray(r,i)):O.mergeArray(r,o)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};oe.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new oe({items:t,typeName:k.ZodTuple,rest:null,...v(e)})};qt=class t extends _{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==p.object)return m(n,{code:d.invalid_type,expected:p.object,received:n.parsedType}),b;let s=[],o=this._def.keyType,i=this._def.valueType;for(let a in n.data)s.push({key:o._parse(new Y(n,a,n.path,a)),value:i._parse(new Y(n,n.data[a],n.path,a)),alwaysSet:a in n.data});return n.common.async?O.mergeObjectAsync(r,s):O.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof _?new t({keyType:e,valueType:r,typeName:k.ZodRecord,...v(n)}):new t({keyType:ye.create(),valueType:e,typeName:k.ZodRecord,...v(r)})}},tt=class extends _{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==p.map)return m(n,{code:d.invalid_type,expected:p.map,received:n.parsedType}),b;let s=this._def.keyType,o=this._def.valueType,i=[...n.data.entries()].map(([a,c],u)=>({key:s._parse(new Y(n,a,n.path,[u,"key"])),value:o._parse(new Y(n,c,n.path,[u,"value"]))}));if(n.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of i){let u=await c.key,l=await c.value;if(u.status==="aborted"||l.status==="aborted")return b;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),a.set(u.value,l.value)}return{status:r.value,value:a}})}else{let a=new Map;for(let c of i){let u=c.key,l=c.value;if(u.status==="aborted"||l.status==="aborted")return b;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),a.set(u.value,l.value)}return{status:r.value,value:a}}}};tt.create=(t,e,r)=>new tt({valueType:e,keyType:t,typeName:k.ZodMap,...v(r)});rt=class t extends _{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==p.set)return m(n,{code:d.invalid_type,expected:p.set,received:n.parsedType}),b;let s=this._def;s.minSize!==null&&n.data.size<s.minSize.value&&(m(n,{code:d.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),r.dirty()),s.maxSize!==null&&n.data.size>s.maxSize.value&&(m(n,{code:d.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let o=this._def.valueType;function i(c){let u=new Set;for(let l of c){if(l.status==="aborted")return b;l.status==="dirty"&&r.dirty(),u.add(l.value)}return{status:r.value,value:u}}let a=[...n.data.values()].map((c,u)=>o._parse(new Y(n,c,n.path,u)));return n.common.async?Promise.all(a).then(c=>i(c)):i(a)}min(e,r){return new t({...this._def,minSize:{value:e,message:h.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:h.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};rt.create=(t,e)=>new rt({valueType:t,minSize:null,maxSize:null,typeName:k.ZodSet,...v(e)});Xt=class t extends _{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==p.function)return m(r,{code:d.invalid_type,expected:p.function,received:r.parsedType}),b;function n(a,c){return wt({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,We(),ce].filter(u=>!!u),issueData:{code:d.invalid_arguments,argumentsError:c}})}function s(a,c){return wt({data:a,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,We(),ce].filter(u=>!!u),issueData:{code:d.invalid_return_type,returnTypeError:c}})}let o={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof be){let a=this;return N(async function(...c){let u=new L([]),l=await a._def.args.parseAsync(c,o).catch(E=>{throw u.addIssue(n(c,E)),u}),g=await Reflect.apply(i,this,l);return await a._def.returns._def.type.parseAsync(g,o).catch(E=>{throw u.addIssue(s(g,E)),u})})}else{let a=this;return N(function(...c){let u=a._def.args.safeParse(c,o);if(!u.success)throw new L([n(c,u.error)]);let l=Reflect.apply(i,this,u.data),g=a._def.returns.safeParse(l,o);if(!g.success)throw new L([s(l,g.error)]);return g.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:oe.create(e).rest(le.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||oe.create([]).rest(le.create()),returns:r||le.create(),typeName:k.ZodFunction,...v(n)})}},Me=class extends _{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Me.create=(t,e)=>new Me({getter:t,typeName:k.ZodLazy,...v(e)});Le=class extends _{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return m(r,{received:r.data,code:d.invalid_literal,expected:this._def.value}),b}return{status:"valid",value:e.data}}get value(){return this._def.value}};Le.create=(t,e)=>new Le({value:t,typeName:k.ZodLiteral,...v(e)});Fe=class t extends _{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return m(r,{expected:x.joinValues(n),received:r.parsedType,code:d.invalid_type}),b}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return m(r,{received:r.data,code:d.invalid_enum_value,options:n}),b}return N(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};Fe.create=ps;je=class extends _{_parse(e){let r=x.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==p.string&&n.parsedType!==p.number){let s=x.objectValues(r);return m(n,{expected:x.joinValues(s),received:n.parsedType,code:d.invalid_type}),b}if(this._cache||(this._cache=new Set(x.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let s=x.objectValues(r);return m(n,{received:n.data,code:d.invalid_enum_value,options:s}),b}return N(e.data)}get enum(){return this._def.values}};je.create=(t,e)=>new je({values:t,typeName:k.ZodNativeEnum,...v(e)});be=class extends _{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==p.promise&&r.common.async===!1)return m(r,{code:d.invalid_type,expected:p.promise,received:r.parsedType}),b;let n=r.parsedType===p.promise?r.data:Promise.resolve(r.data);return N(n.then(s=>this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};be.create=(t,e)=>new be({type:t,typeName:k.ZodPromise,...v(e)});W=class extends _{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===k.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),s=this._def.effect||null,o={addIssue:i=>{m(n,i),i.fatal?r.abort():r.dirty()},get path(){return n.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){let i=s.transform(n.data,o);if(n.common.async)return Promise.resolve(i).then(async a=>{if(r.value==="aborted")return b;let c=await this._def.schema._parseAsync({data:a,path:n.path,parent:n});return c.status==="aborted"?b:c.status==="dirty"?Ae(c.value):r.value==="dirty"?Ae(c.value):c});{if(r.value==="aborted")return b;let a=this._def.schema._parseSync({data:i,path:n.path,parent:n});return a.status==="aborted"?b:a.status==="dirty"?Ae(a.value):r.value==="dirty"?Ae(a.value):a}}if(s.type==="refinement"){let i=a=>{let c=s.refinement(a,o);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(n.common.async===!1){let a=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?b:(a.status==="dirty"&&r.dirty(),i(a.value),{status:r.value,value:a.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(a=>a.status==="aborted"?b:(a.status==="dirty"&&r.dirty(),i(a.value).then(()=>({status:r.value,value:a.value}))))}if(s.type==="transform")if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!ge(i))return b;let a=s.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>ge(i)?Promise.resolve(s.transform(i.value,o)).then(a=>({status:r.value,value:a})):b);x.assertNever(s)}};W.create=(t,e,r)=>new W({schema:t,typeName:k.ZodEffects,effect:e,...v(r)});W.createWithPreprocess=(t,e,r)=>new W({schema:e,effect:{type:"preprocess",transform:t},typeName:k.ZodEffects,...v(r)});J=class extends _{_parse(e){return this._getType(e)===p.undefined?N(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};J.create=(t,e)=>new J({innerType:t,typeName:k.ZodOptional,...v(e)});ie=class extends _{_parse(e){return this._getType(e)===p.null?N(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ie.create=(t,e)=>new ie({innerType:t,typeName:k.ZodNullable,...v(e)});ze=class extends _{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===p.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};ze.create=(t,e)=>new ze({innerType:t,typeName:k.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...v(e)});Ue=class extends _{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return qe(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new L(n.common.issues)},input:n.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new L(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Ue.create=(t,e)=>new Ue({innerType:t,typeName:k.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...v(e)});nt=class extends _{_parse(e){if(this._getType(e)!==p.nan){let n=this._getOrReturnCtx(e);return m(n,{code:d.invalid_type,expected:p.nan,received:n.parsedType}),b}return{status:"valid",value:e.data}}};nt.create=t=>new nt({typeName:k.ZodNaN,...v(t)});wa=Symbol("zod_brand"),bt=class extends _{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},kt=class t extends _{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?b:o.status==="dirty"?(r.dirty(),Ae(o.value)):this._def.out._parseAsync({data:o.value,path:n.path,parent:n})})();{let s=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?b:s.status==="dirty"?(r.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:k.ZodPipeline})}},Ze=class extends _{_parse(e){let r=this._def.innerType._parse(e),n=s=>(ge(s)&&(s.value=Object.freeze(s.value)),s);return qe(r)?r.then(s=>n(s)):n(r)}unwrap(){return this._def.innerType}};Ze.create=(t,e)=>new Ze({innerType:t,typeName:k.ZodReadonly,...v(e)});ba={object:F.lazycreate};(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(k||(k={}));ka=(t,e={message:`Input not instance of ${t.name}`})=>hs(r=>r instanceof t,e),gs=ye.create,ys=Re.create,va=nt.create,_a=Ce.create,ws=$e.create,xa=Pe.create,Sa=Qe.create,Ea=Oe.create,Ta=Ie.create,Aa=we.create,Ra=le.create,Ca=ee.create,$a=et.create,Pa=de.create,Oa=F.create,Ia=F.strictCreate,Da=De.create,Na=Wt.create,Ma=Ne.create,La=oe.create,Fa=qt.create,ja=tt.create,za=rt.create,Ua=Xt.create,Za=Me.create,Ha=Le.create,Ba=Fe.create,Va=je.create,Ka=be.create,Ga=W.create,Ja=J.create,Ya=ie.create,Wa=W.createWithPreprocess,qa=kt.create,Xa=()=>gs().optional(),Qa=()=>ys().optional(),ec=()=>ws().optional(),tc={string:(t=>ye.create({...t,coerce:!0})),number:(t=>Re.create({...t,coerce:!0})),boolean:(t=>$e.create({...t,coerce:!0})),bigint:(t=>Ce.create({...t,coerce:!0})),date:(t=>Pe.create({...t,coerce:!0}))},rc=b});var f={};Q(f,{BRAND:()=>wa,DIRTY:()=>Ae,EMPTY_PATH:()=>Wi,INVALID:()=>b,NEVER:()=>rc,OK:()=>N,ParseStatus:()=>O,Schema:()=>_,ZodAny:()=>we,ZodArray:()=>de,ZodBigInt:()=>Ce,ZodBoolean:()=>$e,ZodBranded:()=>bt,ZodCatch:()=>Ue,ZodDate:()=>Pe,ZodDefault:()=>ze,ZodDiscriminatedUnion:()=>Wt,ZodEffects:()=>W,ZodEnum:()=>Fe,ZodError:()=>L,ZodFirstPartyTypeKind:()=>k,ZodFunction:()=>Xt,ZodIntersection:()=>Ne,ZodIssueCode:()=>d,ZodLazy:()=>Me,ZodLiteral:()=>Le,ZodMap:()=>tt,ZodNaN:()=>nt,ZodNativeEnum:()=>je,ZodNever:()=>ee,ZodNull:()=>Ie,ZodNullable:()=>ie,ZodNumber:()=>Re,ZodObject:()=>F,ZodOptional:()=>J,ZodParsedType:()=>p,ZodPipeline:()=>kt,ZodPromise:()=>be,ZodReadonly:()=>Ze,ZodRecord:()=>qt,ZodSchema:()=>_,ZodSet:()=>rt,ZodString:()=>ye,ZodSymbol:()=>Qe,ZodTransformer:()=>W,ZodTuple:()=>oe,ZodType:()=>_,ZodUndefined:()=>Oe,ZodUnion:()=>De,ZodUnknown:()=>le,ZodVoid:()=>et,addIssueToContext:()=>m,any:()=>Aa,array:()=>Pa,bigint:()=>_a,boolean:()=>ws,coerce:()=>tc,custom:()=>hs,date:()=>xa,datetimeRegex:()=>ms,defaultErrorMap:()=>ce,discriminatedUnion:()=>Na,effect:()=>Ga,enum:()=>Ba,function:()=>Ua,getErrorMap:()=>We,getParsedType:()=>se,instanceof:()=>ka,intersection:()=>Ma,isAborted:()=>Jt,isAsync:()=>qe,isDirty:()=>Yt,isValid:()=>ge,late:()=>ba,lazy:()=>Za,literal:()=>Ha,makeIssue:()=>wt,map:()=>ja,nan:()=>va,nativeEnum:()=>Va,never:()=>Ca,null:()=>Ta,nullable:()=>Ya,number:()=>ys,object:()=>Oa,objectUtil:()=>jr,oboolean:()=>ec,onumber:()=>Qa,optional:()=>Ja,ostring:()=>Xa,pipeline:()=>qa,preprocess:()=>Wa,promise:()=>Ka,quotelessJson:()=>Gi,record:()=>Fa,set:()=>za,setErrorMap:()=>Yi,strictObject:()=>Ia,string:()=>gs,symbol:()=>Sa,transformer:()=>Ga,tuple:()=>La,undefined:()=>Ea,union:()=>Da,unknown:()=>Ra,util:()=>x,void:()=>$a});var Br=S(()=>{Gt();Ur();as();yt();bs();Kt()});var st=S(()=>{Br();Br()});import{createHash as nc}from"node:crypto";function ke(t){let e=ks.get(t);return e||(e=nc("sha256").update(`tkr:${t}`).digest("hex").slice(0,16),ks.set(t,e)),e}var sc,oc,ot,ks,vt=S(()=>{"use strict";st();sc=f.enum(["normal","compact","minimal"]),oc=f.enum(["off","light","balanced","max"]),ot=f.object({enabled:f.boolean().default(!0),telemetryOptIn:f.boolean().default(!0),outputVerbosity:sc.default("compact"),reducer:oc.default("off"),filters:f.object({enableAll:f.boolean().default(!0),disabled:f.array(f.string().max(64)).max(100).default([])}).default({enableAll:!0,disabled:[]})}),ks=new Map});var _s={};Q(_s,{bundleRefreshFile:()=>_t,claudeCommandFile:()=>_e,claudeCommandsDir:()=>tr,contentCacheDir:()=>St,contentCacheFile:()=>Qt,enrollCooldownFile:()=>Vr,installIdFile:()=>it,managedCommandsFile:()=>er,skillFile:()=>ve,skillsDir:()=>xt,stateFile:()=>ic,tokmizerHome:()=>y});import vs from"node:os";import{join as q}from"node:path";function y(){return process.env.TOKMIZER_HOME||q(vs.homedir(),".tokmizer")}function ic(){return q(y(),"state.json")}function it(){return q(y(),"install-id")}function Vr(){return q(y(),"enroll-cooldown")}function _t(){return q(y(),"bundle-refresh.json")}function xt(){return q(y(),"skills")}function ve(t){return q(xt(),`${t}.md`)}function St(){return q(y(),"content-cache")}function Qt(t){return q(St(),t)}function er(){return q(y(),"managed-commands.json")}function tr(){return process.env.TOKMIZER_CLAUDE_COMMANDS_DIR||q(vs.homedir(),".claude","commands")}function _e(t){return q(tr(),`${t}.md`)}var I=S(()=>{"use strict"});import at from"node:os";import{createHash as ac,randomUUID as cc}from"node:crypto";import{readFile as xs,writeFile as Ss,mkdir as uc}from"node:fs/promises";async function rr(){try{let r=(await xs(it(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(r))return r}catch{}await uc(y(),{recursive:!0});let t=cc();try{return await Ss(it(),t,{mode:384,flag:"wx"}),t}catch{try{let e=(await xs(it(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(e))return e}catch{}return await Ss(it(),t,{mode:384}),t}}function Kr(t){return ac("sha256").update(t).digest("hex")}function lc(){let t=at.networkInterfaces();for(let e of Object.keys(t))for(let r of t[e]??[])if(!r.internal&&r.mac&&r.mac!=="00:00:00:00:00:00")return r.mac;return"no-mac"}async function X(){let t=await rr(),e=at.hostname(),r=at.platform(),n=at.release(),s=at.cpus(),o=s[0]?.model??"unknown",i=s.length,a=Kr(lc()),c=Kr(at.userInfo().username),u=[e,r,n,o,String(i),a,c,t].join("|");return{fingerprint:Kr(u),installId:t,hostname:e,os:r,osVersion:n,cpuModel:o,cpuCores:i,macHash:a,usernameHash:c}}var He=S(()=>{"use strict";I()});import{join as Gr}from"node:path";import{mkdir as dc,readFile as fc,writeFile as mc,unlink as Es,rename as pc}from"node:fs/promises";function Et(){try{let t=Intl.DateTimeFormat().resolvedOptions().timeZone;return t&&t.length>0?t:"Etc/UTC"}catch{return"Etc/UTC"}}function Yr(t){return t?.dir??y()}async function T(t){let e=Yr(t);try{let r=await fc(Gr(e,Jr),"utf8"),n=JSON.parse(r),s=n.timeZone;return{...n,lastSettingsRevision:n.lastSettingsRevision??0,get timeZone(){return s??=Et()},bonusActive:n.bonusActive??!1,...n.bonusResetAt!==void 0?{bonusResetAt:n.bonusResetAt}:{}}}catch{return null}}async function nr(t,e){let r=Yr(e);await dc(r,{recursive:!0}),t.installedAt==null&&(t.installedAt=Math.floor(Date.now()/1e3));let n=Gr(r,Jr),s=`${n}.tmp-${process.pid}-${process.hrtime.bigint()}`;await mc(s,JSON.stringify(t,null,2),{mode:384});try{await pc(s,n)}catch(o){try{await Es(s)}catch{}throw o}}async function sr(t){let e=Yr(t);try{await Es(Gr(e,Jr))}catch{return}}var Jr,fe=S(()=>{"use strict";I();Jr="state.json"});import{createRequire as hc}from"node:module";function yc(){for(let t of["../package.json","../../package.json"])try{let e=gc(t).version;if(typeof e=="string"&&e)return e}catch{}return"0.0.0"}function xe(t,e){if(!t||!e)return!1;let r=t.split(".").map(s=>parseInt(s,10)),n=e.split(".").map(s=>parseInt(s,10));for(let s=0;s<3;s+=1){let o=r[s]??0,i=n[s]??0;if(Number.isNaN(o)||Number.isNaN(i))return!1;if(o<i)return!0;if(o>i)return!1}return!1}var gc,B,ct=S(()=>{"use strict";gc=hc(import.meta.url);B=yc()});var Ts,As=S(()=>{"use strict";Ts=`-----BEGIN PUBLIC KEY-----
3
+ var Qh=Object.create;var Ao=Object.defineProperty;var eg=Object.getOwnPropertyDescriptor;var tg=Object.getOwnPropertyNames;var ng=Object.getPrototypeOf,rg=Object.prototype.hasOwnProperty;var tt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var g=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var me=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}},Z=(e,t)=>{for(var n in t)Ao(e,n,{get:t[n],enumerable:!0})},sg=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of tg(t))!rg.call(e,s)&&s!==n&&Ao(e,s,{get:()=>t[s],enumerable:!(r=eg(t,s))||r.enumerable});return e};var og=(e,t,n)=>(n=e!=null?Qh(ng(e)):{},sg(t||!e||!e.__esModule?Ao(n,"default",{value:e,enumerable:!0}):n,e));var O,Oo,b,De,Ln=g(()=>{(function(e){e.assertEqual=s=>{};function t(s){}e.assertIs=t;function n(s){throw new Error}e.assertNever=n,e.arrayToEnum=s=>{let o={};for(let i of s)o[i]=i;return o},e.getValidEnumValues=s=>{let o=e.objectKeys(s).filter(a=>typeof s[s[a]]!="number"),i={};for(let a of o)i[a]=s[a];return e.objectValues(i)},e.objectValues=s=>e.objectKeys(s).map(function(o){return s[o]}),e.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let o=[];for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&o.push(i);return o},e.find=(s,o)=>{for(let i of s)if(o(i))return i},e.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function r(s,o=" | "){return s.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(O||(O={}));(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Oo||(Oo={}));b=O.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),De=e=>{switch(typeof e){case"undefined":return b.undefined;case"string":return b.string;case"number":return Number.isNaN(e)?b.nan:b.number;case"boolean":return b.boolean;case"function":return b.function;case"bigint":return b.bigint;case"symbol":return b.symbol;case"object":return Array.isArray(e)?b.array:e===null?b.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?b.promise:typeof Map<"u"&&e instanceof Map?b.map:typeof Set<"u"&&e instanceof Set?b.set:typeof Date<"u"&&e instanceof Date?b.date:b.object;default:return b.unknown}}});var h,ig,ae,Ur=g(()=>{Ln();h=O.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),ig=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ae=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}format(t){let n=t||function(o){return o.message},r={_errors:[]},s=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(s);else if(i.code==="invalid_return_type")s(i.returnTypeError);else if(i.code==="invalid_arguments")s(i.argumentsError);else if(i.path.length===0)r._errors.push(n(i));else{let a=r,c=0;for(;c<i.path.length;){let l=i.path[c];c===i.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(n(i))):a[l]=a[l]||{_errors:[]},a=a[l],c++}}};return s(this),r}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,O.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=n=>n.message){let n={},r=[];for(let s of this.issues)if(s.path.length>0){let o=s.path[0];n[o]=n[o]||[],n[o].push(t(s))}else r.push(t(s));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}};ae.create=e=>new ae(e)});var ag,Ue,Io=g(()=>{Ur();Ln();ag=(e,t)=>{let n;switch(e.code){case h.invalid_type:e.received===b.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case h.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,O.jsonStringifyReplacer)}`;break;case h.unrecognized_keys:n=`Unrecognized key(s) in object: ${O.joinValues(e.keys,", ")}`;break;case h.invalid_union:n="Invalid input";break;case h.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${O.joinValues(e.options)}`;break;case h.invalid_enum_value:n=`Invalid enum value. Expected ${O.joinValues(e.options)}, received '${e.received}'`;break;case h.invalid_arguments:n="Invalid function arguments";break;case h.invalid_return_type:n="Invalid function return type";break;case h.invalid_date:n="Invalid date";break;case h.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:O.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case h.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case h.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case h.custom:n="Invalid input";break;case h.invalid_intersection_types:n="Intersection results could not be merged";break;case h.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case h.not_finite:n="Number must be finite";break;default:n=t.defaultError,O.assertNever(e)}return{message:n}},Ue=ag});function cg(e){sl=e}function nn(){return sl}var sl,Br=g(()=>{Io();sl=Ue});function y(e,t){let n=nn(),r=zn({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===Ue?void 0:Ue].filter(s=>!!s)});e.common.issues.push(r)}var zn,lg,G,_,yt,X,Jr,Vr,nt,rn,Po=g(()=>{Br();Io();zn=e=>{let{data:t,path:n,errorMaps:r,issueData:s}=e,o=[...n,...s.path||[]],i={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let a="",c=r.filter(l=>!!l).slice().reverse();for(let l of c)a=l(i,{data:t,defaultError:a}).message;return{...s,path:o,message:a}},lg=[];G=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){let r=[];for(let s of n){if(s.status==="aborted")return _;s.status==="dirty"&&t.dirty(),r.push(s.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){let r=[];for(let s of n){let o=await s.key,i=await s.value;r.push({key:o,value:i})}return e.mergeObjectSync(t,r)}static mergeObjectSync(t,n){let r={};for(let s of n){let{key:o,value:i}=s;if(o.status==="aborted"||i.status==="aborted")return _;o.status==="dirty"&&t.dirty(),i.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||s.alwaysSet)&&(r[o.value]=i.value)}return{status:t.value,value:r}}},_=Object.freeze({status:"aborted"}),yt=e=>({status:"dirty",value:e}),X=e=>({status:"valid",value:e}),Jr=e=>e.status==="aborted",Vr=e=>e.status==="dirty",nt=e=>e.status==="valid",rn=e=>typeof Promise<"u"&&e instanceof Promise});var ol=g(()=>{});var x,il=g(()=>{(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(x||(x={}))});function A(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:s}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(i,a)=>{let{message:c}=e;return i.code==="invalid_enum_value"?{message:c??a.defaultError}:typeof a.data>"u"?{message:c??r??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:c??n??a.defaultError}},description:s}}function ul(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let n=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function Tg(e){return new RegExp(`^${ul(e)}$`)}function dl(e){let t=`${ll}T${ul(e)}`,n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function $g(e,t){return!!((t==="v4"||!t)&&wg.test(e)||(t==="v6"||!t)&&vg.test(e))}function Rg(e,t){if(!hg.test(e))return!1;try{let[n]=e.split(".");if(!n)return!1;let r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),s=JSON.parse(atob(r));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||t&&s.alg!==t)}catch{return!1}}function Ag(e,t){return!!((t==="v4"||!t)&&bg.test(e)||(t==="v6"||!t)&&xg.test(e))}function Cg(e,t){let n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,s=n>r?n:r,o=Number.parseInt(e.toFixed(s).replace(".","")),i=Number.parseInt(t.toFixed(s).replace(".",""));return o%i/10**s}function sn(e){if(e instanceof ce){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=be.create(sn(r))}return new ce({...e._def,shape:()=>t})}else return e instanceof Ve?new Ve({...e._def,type:sn(e.element)}):e instanceof be?be.create(sn(e.unwrap())):e instanceof Fe?Fe.create(sn(e.unwrap())):e instanceof Me?Me.create(e.items.map(t=>sn(t))):e}function Do(e,t){let n=De(e),r=De(t);if(e===t)return{valid:!0,data:e};if(n===b.object&&r===b.object){let s=O.objectKeys(t),o=O.objectKeys(e).filter(a=>s.indexOf(a)!==-1),i={...e,...t};for(let a of o){let c=Do(e[a],t[a]);if(!c.valid)return{valid:!1};i[a]=c.data}return{valid:!0,data:i}}else if(n===b.array&&r===b.array){if(e.length!==t.length)return{valid:!1};let s=[];for(let o=0;o<e.length;o++){let i=e[o],a=t[o],c=Do(i,a);if(!c.valid)return{valid:!1};s.push(c.data)}return{valid:!0,data:s}}else return n===b.date&&r===b.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}function fl(e,t){return new At({values:e,typeName:T.ZodEnum,...A(t)})}function cl(e,t){let n=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof n=="string"?{message:n}:n}function pl(e,t={},n){return e?st.create().superRefine((r,s)=>{let o=e(r);if(o instanceof Promise)return o.then(i=>{if(!i){let a=cl(t,r),c=a.fatal??n??!0;s.addIssue({code:"custom",...a,fatal:c})}});if(!o){let i=cl(t,r),a=i.fatal??n??!0;s.addIssue({code:"custom",...i,fatal:a})}}):st.create()}var ve,al,C,ug,dg,fg,pg,mg,hg,gg,kg,yg,No,wg,bg,vg,xg,Sg,_g,ll,Eg,rt,wt,bt,vt,xt,on,St,_t,st,Je,$e,an,Ve,ce,Et,Be,Zr,Tt,Me,Gr,cn,ln,Kr,$t,Rt,At,Ct,ot,xe,be,Fe,Ot,It,un,Og,Un,Bn,Pt,Ig,T,Pg,ml,hl,Ng,Dg,gl,Mg,Fg,jg,Hg,Lg,zg,Ug,Bg,Jg,Vg,Zg,Gg,Kg,Wg,qg,Yg,Xg,Qg,ek,tk,nk,rk,sk,ok,ik,ak,ck,lk,uk,dk,fk,pk,mk,hk,kl=g(()=>{Ur();Br();il();Po();Ln();ve=class{constructor(t,n,r,s){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},al=(e,t)=>{if(nt(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let n=new ae(e.common.issues);return this._error=n,this._error}}};C=class{get description(){return this._def.description}_getType(t){return De(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:De(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new G,ctx:{common:t.parent.common,data:t.data,parsedType:De(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let n=this._parse(t);if(rn(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){let n=this._parse(t);return Promise.resolve(n)}parse(t,n){let r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){let r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:De(t)},s=this._parseSync({data:t,path:r.path,parent:r});return al(r,s)}"~validate"(t){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:De(t)};if(!this["~standard"].async)try{let r=this._parseSync({data:t,path:[],parent:n});return nt(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then(r=>nt(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(t,n){let r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){let r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:De(t)},s=this._parse({data:t,path:r.path,parent:r}),o=await(rn(s)?s:Promise.resolve(s));return al(r,o)}refine(t,n){let r=s=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(s):n;return this._refinement((s,o)=>{let i=t(s),a=()=>o.addIssue({code:h.custom,...r(s)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,s)=>t(r)?!0:(s.addIssue(typeof n=="function"?n(r,s):n),!1))}_refinement(t){return new xe({schema:this,typeName:T.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return be.create(this,this._def)}nullable(){return Fe.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ve.create(this)}promise(){return ot.create(this,this._def)}or(t){return Et.create([this,t],this._def)}and(t){return Tt.create(this,t,this._def)}transform(t){return new xe({...A(this._def),schema:this,typeName:T.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let n=typeof t=="function"?t:()=>t;return new Ot({...A(this._def),innerType:this,defaultValue:n,typeName:T.ZodDefault})}brand(){return new Un({typeName:T.ZodBranded,type:this,...A(this._def)})}catch(t){let n=typeof t=="function"?t:()=>t;return new It({...A(this._def),innerType:this,catchValue:n,typeName:T.ZodCatch})}describe(t){let n=this.constructor;return new n({...this._def,description:t})}pipe(t){return Bn.create(this,t)}readonly(){return Pt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},ug=/^c[^\s-]{8,}$/i,dg=/^[0-9a-z]+$/,fg=/^[0-9A-HJKMNP-TV-Z]{26}$/i,pg=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,mg=/^[a-z0-9_-]{21}$/i,hg=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,gg=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,kg=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,yg="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wg=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,bg=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,vg=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,xg=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Sg=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,_g=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ll="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Eg=new RegExp(`^${ll}$`);rt=class e extends C{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==b.string){let o=this._getOrReturnCtx(t);return y(o,{code:h.invalid_type,expected:b.string,received:o.parsedType}),_}let r=new G,s;for(let o of this._def.checks)if(o.kind==="min")t.data.length<o.value&&(s=this._getOrReturnCtx(t,s),y(s,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="max")t.data.length>o.value&&(s=this._getOrReturnCtx(t,s),y(s,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let i=t.data.length>o.value,a=t.data.length<o.value;(i||a)&&(s=this._getOrReturnCtx(t,s),i?y(s,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&y(s,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")kg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"email",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")No||(No=new RegExp(yg,"u")),No.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"emoji",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")pg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"uuid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")mg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"nanoid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")ug.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"cuid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")dg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"cuid2",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")fg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"ulid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(t.data)}catch{s=this._getOrReturnCtx(t,s),y(s,{validation:"url",code:h.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"regex",code:h.invalid_string,message:o.message}),r.dirty())):o.kind==="trim"?t.data=t.data.trim():o.kind==="includes"?t.data.includes(o.value,o.position)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):o.kind==="toLowerCase"?t.data=t.data.toLowerCase():o.kind==="toUpperCase"?t.data=t.data.toUpperCase():o.kind==="startsWith"?t.data.startsWith(o.value)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?t.data.endsWith(o.value)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?dl(o).test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?Eg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?Tg(o).test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{code:h.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?gg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"duration",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?$g(t.data,o.version)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"ip",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Rg(t.data,o.alg)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"jwt",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Ag(t.data,o.version)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"cidr",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Sg.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"base64",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?_g.test(t.data)||(s=this._getOrReturnCtx(t,s),y(s,{validation:"base64url",code:h.invalid_string,message:o.message}),r.dirty()):O.assertNever(o);return{status:r.value,value:t.data}}_regex(t,n,r){return this.refinement(s=>t.test(s),{validation:n,code:h.invalid_string,...x.errToObj(r)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...x.errToObj(t)})}url(t){return this._addCheck({kind:"url",...x.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...x.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...x.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...x.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...x.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...x.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...x.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...x.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...x.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...x.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...x.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...x.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...x.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...x.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...x.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...x.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...x.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...x.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...x.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...x.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...x.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...x.errToObj(n)})}nonempty(t){return this.min(1,x.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};rt.create=e=>new rt({checks:[],typeName:T.ZodString,coerce:e?.coerce??!1,...A(e)});wt=class e extends C{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==b.number){let o=this._getOrReturnCtx(t);return y(o,{code:h.invalid_type,expected:b.number,received:o.parsedType}),_}let r,s=new G;for(let o of this._def.checks)o.kind==="int"?O.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),y(r,{code:h.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?Cg(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),y(r,{code:h.not_finite,message:o.message}),s.dirty()):O.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,x.toString(n))}gt(t,n){return this.setLimit("min",t,!1,x.toString(n))}lte(t,n){return this.setLimit("max",t,!0,x.toString(n))}lt(t,n){return this.setLimit("max",t,!1,x.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:x.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:x.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:x.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:x.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:x.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:x.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:x.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:x.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:x.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:x.toString(t)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&O.isInteger(t.value))}get isFinite(){let t=null,n=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.value<t)&&(t=r.value)}return Number.isFinite(n)&&Number.isFinite(t)}};wt.create=e=>new wt({checks:[],typeName:T.ZodNumber,coerce:e?.coerce||!1,...A(e)});bt=class e extends C{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==b.bigint)return this._getInvalidInput(t);let r,s=new G;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),y(r,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):O.assertNever(o);return{status:s.value,value:t.data}}_getInvalidInput(t){let n=this._getOrReturnCtx(t);return y(n,{code:h.invalid_type,expected:b.bigint,received:n.parsedType}),_}gte(t,n){return this.setLimit("min",t,!0,x.toString(n))}gt(t,n){return this.setLimit("min",t,!1,x.toString(n))}lte(t,n){return this.setLimit("max",t,!0,x.toString(n))}lt(t,n){return this.setLimit("max",t,!1,x.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:x.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:x.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:x.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:x.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:x.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:x.toString(n)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};bt.create=e=>new bt({checks:[],typeName:T.ZodBigInt,coerce:e?.coerce??!1,...A(e)});vt=class extends C{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==b.boolean){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.boolean,received:r.parsedType}),_}return X(t.data)}};vt.create=e=>new vt({typeName:T.ZodBoolean,coerce:e?.coerce||!1,...A(e)});xt=class e extends C{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==b.date){let o=this._getOrReturnCtx(t);return y(o,{code:h.invalid_type,expected:b.date,received:o.parsedType}),_}if(Number.isNaN(t.data.getTime())){let o=this._getOrReturnCtx(t);return y(o,{code:h.invalid_date}),_}let r=new G,s;for(let o of this._def.checks)o.kind==="min"?t.data.getTime()<o.value&&(s=this._getOrReturnCtx(t,s),y(s,{code:h.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),r.dirty()):o.kind==="max"?t.data.getTime()>o.value&&(s=this._getOrReturnCtx(t,s),y(s,{code:h.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):O.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:x.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:x.toString(n)})}get minDate(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t!=null?new Date(t):null}};xt.create=e=>new xt({checks:[],coerce:e?.coerce||!1,typeName:T.ZodDate,...A(e)});on=class extends C{_parse(t){if(this._getType(t)!==b.symbol){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.symbol,received:r.parsedType}),_}return X(t.data)}};on.create=e=>new on({typeName:T.ZodSymbol,...A(e)});St=class extends C{_parse(t){if(this._getType(t)!==b.undefined){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.undefined,received:r.parsedType}),_}return X(t.data)}};St.create=e=>new St({typeName:T.ZodUndefined,...A(e)});_t=class extends C{_parse(t){if(this._getType(t)!==b.null){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.null,received:r.parsedType}),_}return X(t.data)}};_t.create=e=>new _t({typeName:T.ZodNull,...A(e)});st=class extends C{constructor(){super(...arguments),this._any=!0}_parse(t){return X(t.data)}};st.create=e=>new st({typeName:T.ZodAny,...A(e)});Je=class extends C{constructor(){super(...arguments),this._unknown=!0}_parse(t){return X(t.data)}};Je.create=e=>new Je({typeName:T.ZodUnknown,...A(e)});$e=class extends C{_parse(t){let n=this._getOrReturnCtx(t);return y(n,{code:h.invalid_type,expected:b.never,received:n.parsedType}),_}};$e.create=e=>new $e({typeName:T.ZodNever,...A(e)});an=class extends C{_parse(t){if(this._getType(t)!==b.undefined){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.void,received:r.parsedType}),_}return X(t.data)}};an.create=e=>new an({typeName:T.ZodVoid,...A(e)});Ve=class e extends C{_parse(t){let{ctx:n,status:r}=this._processInputParams(t),s=this._def;if(n.parsedType!==b.array)return y(n,{code:h.invalid_type,expected:b.array,received:n.parsedType}),_;if(s.exactLength!==null){let i=n.data.length>s.exactLength.value,a=n.data.length<s.exactLength.value;(i||a)&&(y(n,{code:i?h.too_big:h.too_small,minimum:a?s.exactLength.value:void 0,maximum:i?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),r.dirty())}if(s.minLength!==null&&n.data.length<s.minLength.value&&(y(n,{code:h.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),r.dirty()),s.maxLength!==null&&n.data.length>s.maxLength.value&&(y(n,{code:h.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((i,a)=>s.type._parseAsync(new ve(n,i,n.path,a)))).then(i=>G.mergeArray(r,i));let o=[...n.data].map((i,a)=>s.type._parseSync(new ve(n,i,n.path,a)));return G.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:x.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:x.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:x.toString(n)}})}nonempty(t){return this.min(1,t)}};Ve.create=(e,t)=>new Ve({type:e,minLength:null,maxLength:null,exactLength:null,typeName:T.ZodArray,...A(t)});ce=class e extends C{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),n=O.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==b.object){let l=this._getOrReturnCtx(t);return y(l,{code:h.invalid_type,expected:b.object,received:l.parsedType}),_}let{status:r,ctx:s}=this._processInputParams(t),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof $e&&this._def.unknownKeys==="strip"))for(let l in s.data)i.includes(l)||a.push(l);let c=[];for(let l of i){let u=o[l],d=s.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new ve(s,d,s.path,l)),alwaysSet:l in s.data})}if(this._def.catchall instanceof $e){let l=this._def.unknownKeys;if(l==="passthrough")for(let u of a)c.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(l==="strict")a.length>0&&(y(s,{code:h.unrecognized_keys,keys:a}),r.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let u of a){let d=s.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new ve(s,d,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let l=[];for(let u of c){let d=await u.key,f=await u.value;l.push({key:d,value:f,alwaysSet:u.alwaysSet})}return l}).then(l=>G.mergeObjectSync(r,l)):G.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(t){return x.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{let s=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:x.errToObj(t).message??s}:{message:s}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:T.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let r of O.objectKeys(t))t[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let r of O.objectKeys(this.shape))t[r]||(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}deepPartial(){return sn(this)}partial(t){let n={};for(let r of O.objectKeys(this.shape)){let s=this.shape[r];t&&!t[r]?n[r]=s:n[r]=s.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let r of O.objectKeys(this.shape))if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof be;)o=o._def.innerType;n[r]=o}return new e({...this._def,shape:()=>n})}keyof(){return fl(O.objectKeys(this.shape))}};ce.create=(e,t)=>new ce({shape:()=>e,unknownKeys:"strip",catchall:$e.create(),typeName:T.ZodObject,...A(t)});ce.strictCreate=(e,t)=>new ce({shape:()=>e,unknownKeys:"strict",catchall:$e.create(),typeName:T.ZodObject,...A(t)});ce.lazycreate=(e,t)=>new ce({shape:e,unknownKeys:"strip",catchall:$e.create(),typeName:T.ZodObject,...A(t)});Et=class extends C{_parse(t){let{ctx:n}=this._processInputParams(t),r=this._def.options;function s(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new ae(a.ctx.common.issues));return y(n,{code:h.invalid_union,unionErrors:i}),_}if(n.common.async)return Promise.all(r.map(async o=>{let i={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:i}),ctx:i}})).then(s);{let o,i=[];for(let c of r){let l={...n,common:{...n.common,issues:[]},parent:null},u=c._parseSync({data:n.data,path:n.path,parent:l});if(u.status==="valid")return u;u.status==="dirty"&&!o&&(o={result:u,ctx:l}),l.common.issues.length&&i.push(l.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(c=>new ae(c));return y(n,{code:h.invalid_union,unionErrors:a}),_}}get options(){return this._def.options}};Et.create=(e,t)=>new Et({options:e,typeName:T.ZodUnion,...A(t)});Be=e=>e instanceof $t?Be(e.schema):e instanceof xe?Be(e.innerType()):e instanceof Rt?[e.value]:e instanceof At?e.options:e instanceof Ct?O.objectValues(e.enum):e instanceof Ot?Be(e._def.innerType):e instanceof St?[void 0]:e instanceof _t?[null]:e instanceof be?[void 0,...Be(e.unwrap())]:e instanceof Fe?[null,...Be(e.unwrap())]:e instanceof Un||e instanceof Pt?Be(e.unwrap()):e instanceof It?Be(e._def.innerType):[],Zr=class e extends C{_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==b.object)return y(n,{code:h.invalid_type,expected:b.object,received:n.parsedType}),_;let r=this.discriminator,s=n.data[r],o=this.optionsMap.get(s);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(y(n,{code:h.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),_)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let s=new Map;for(let o of n){let i=Be(o.shape[t]);if(!i.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of i){if(s.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);s.set(a,o)}}return new e({typeName:T.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:s,...A(r)})}};Tt=class extends C{_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=(o,i)=>{if(Jr(o)||Jr(i))return _;let a=Do(o.value,i.value);return a.valid?((Vr(o)||Vr(i))&&n.dirty(),{status:n.value,value:a.data}):(y(r,{code:h.invalid_intersection_types}),_)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>s(o,i)):s(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};Tt.create=(e,t,n)=>new Tt({left:e,right:t,typeName:T.ZodIntersection,...A(n)});Me=class e extends C{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.array)return y(r,{code:h.invalid_type,expected:b.array,received:r.parsedType}),_;if(r.data.length<this._def.items.length)return y(r,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),_;!this._def.rest&&r.data.length>this._def.items.length&&(y(r,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());let o=[...r.data].map((i,a)=>{let c=this._def.items[a]||this._def.rest;return c?c._parse(new ve(r,i,r.path,a)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>G.mergeArray(n,i)):G.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};Me.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Me({items:e,typeName:T.ZodTuple,rest:null,...A(t)})};Gr=class e extends C{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.object)return y(r,{code:h.invalid_type,expected:b.object,received:r.parsedType}),_;let s=[],o=this._def.keyType,i=this._def.valueType;for(let a in r.data)s.push({key:o._parse(new ve(r,a,r.path,a)),value:i._parse(new ve(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?G.mergeObjectAsync(n,s):G.mergeObjectSync(n,s)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof C?new e({keyType:t,valueType:n,typeName:T.ZodRecord,...A(r)}):new e({keyType:rt.create(),valueType:t,typeName:T.ZodRecord,...A(n)})}},cn=class extends C{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.map)return y(r,{code:h.invalid_type,expected:b.map,received:r.parsedType}),_;let s=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([a,c],l)=>({key:s._parse(new ve(r,a,r.path,[l,"key"])),value:o._parse(new ve(r,c,r.path,[l,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of i){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return _;(l.status==="dirty"||u.status==="dirty")&&n.dirty(),a.set(l.value,u.value)}return{status:n.value,value:a}})}else{let a=new Map;for(let c of i){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return _;(l.status==="dirty"||u.status==="dirty")&&n.dirty(),a.set(l.value,u.value)}return{status:n.value,value:a}}}};cn.create=(e,t,n)=>new cn({valueType:t,keyType:e,typeName:T.ZodMap,...A(n)});ln=class e extends C{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.set)return y(r,{code:h.invalid_type,expected:b.set,received:r.parsedType}),_;let s=this._def;s.minSize!==null&&r.data.size<s.minSize.value&&(y(r,{code:h.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),n.dirty()),s.maxSize!==null&&r.data.size>s.maxSize.value&&(y(r,{code:h.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),n.dirty());let o=this._def.valueType;function i(c){let l=new Set;for(let u of c){if(u.status==="aborted")return _;u.status==="dirty"&&n.dirty(),l.add(u.value)}return{status:n.value,value:l}}let a=[...r.data.values()].map((c,l)=>o._parse(new ve(r,c,r.path,l)));return r.common.async?Promise.all(a).then(c=>i(c)):i(a)}min(t,n){return new e({...this._def,minSize:{value:t,message:x.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:x.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}};ln.create=(e,t)=>new ln({valueType:e,minSize:null,maxSize:null,typeName:T.ZodSet,...A(t)});Kr=class e extends C{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==b.function)return y(n,{code:h.invalid_type,expected:b.function,received:n.parsedType}),_;function r(a,c){return zn({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nn(),Ue].filter(l=>!!l),issueData:{code:h.invalid_arguments,argumentsError:c}})}function s(a,c){return zn({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nn(),Ue].filter(l=>!!l),issueData:{code:h.invalid_return_type,returnTypeError:c}})}let o={errorMap:n.common.contextualErrorMap},i=n.data;if(this._def.returns instanceof ot){let a=this;return X(async function(...c){let l=new ae([]),u=await a._def.args.parseAsync(c,o).catch(p=>{throw l.addIssue(r(c,p)),l}),d=await Reflect.apply(i,this,u);return await a._def.returns._def.type.parseAsync(d,o).catch(p=>{throw l.addIssue(s(d,p)),l})})}else{let a=this;return X(function(...c){let l=a._def.args.safeParse(c,o);if(!l.success)throw new ae([r(c,l.error)]);let u=Reflect.apply(i,this,l.data),d=a._def.returns.safeParse(u,o);if(!d.success)throw new ae([s(u,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:Me.create(t).rest(Je.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new e({args:t||Me.create([]).rest(Je.create()),returns:n||Je.create(),typeName:T.ZodFunction,...A(r)})}},$t=class extends C{get schema(){return this._def.getter()}_parse(t){let{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};$t.create=(e,t)=>new $t({getter:e,typeName:T.ZodLazy,...A(t)});Rt=class extends C{_parse(t){if(t.data!==this._def.value){let n=this._getOrReturnCtx(t);return y(n,{received:n.data,code:h.invalid_literal,expected:this._def.value}),_}return{status:"valid",value:t.data}}get value(){return this._def.value}};Rt.create=(e,t)=>new Rt({value:e,typeName:T.ZodLiteral,...A(t)});At=class e extends C{_parse(t){if(typeof t.data!="string"){let n=this._getOrReturnCtx(t),r=this._def.values;return y(n,{expected:O.joinValues(r),received:n.parsedType,code:h.invalid_type}),_}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let n=this._getOrReturnCtx(t),r=this._def.values;return y(n,{received:n.data,code:h.invalid_enum_value,options:r}),_}return X(t.data)}get options(){return this._def.values}get enum(){let t={};for(let n of this._def.values)t[n]=n;return t}get Values(){let t={};for(let n of this._def.values)t[n]=n;return t}get Enum(){let t={};for(let n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}};At.create=fl;Ct=class extends C{_parse(t){let n=O.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==b.string&&r.parsedType!==b.number){let s=O.objectValues(n);return y(r,{expected:O.joinValues(s),received:r.parsedType,code:h.invalid_type}),_}if(this._cache||(this._cache=new Set(O.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let s=O.objectValues(n);return y(r,{received:r.data,code:h.invalid_enum_value,options:s}),_}return X(t.data)}get enum(){return this._def.values}};Ct.create=(e,t)=>new Ct({values:e,typeName:T.ZodNativeEnum,...A(t)});ot=class extends C{unwrap(){return this._def.type}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==b.promise&&n.common.async===!1)return y(n,{code:h.invalid_type,expected:b.promise,received:n.parsedType}),_;let r=n.parsedType===b.promise?n.data:Promise.resolve(n.data);return X(r.then(s=>this._def.type.parseAsync(s,{path:n.path,errorMap:n.common.contextualErrorMap})))}};ot.create=(e,t)=>new ot({type:e,typeName:T.ZodPromise,...A(t)});xe=class extends C{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===T.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=this._def.effect||null,o={addIssue:i=>{y(r,i),i.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){let i=s.transform(r.data,o);if(r.common.async)return Promise.resolve(i).then(async a=>{if(n.value==="aborted")return _;let c=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return c.status==="aborted"?_:c.status==="dirty"?yt(c.value):n.value==="dirty"?yt(c.value):c});{if(n.value==="aborted")return _;let a=this._def.schema._parseSync({data:i,path:r.path,parent:r});return a.status==="aborted"?_:a.status==="dirty"?yt(a.value):n.value==="dirty"?yt(a.value):a}}if(s.type==="refinement"){let i=a=>{let c=s.refinement(a,o);if(r.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?_:(a.status==="dirty"&&n.dirty(),i(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?_:(a.status==="dirty"&&n.dirty(),i(a.value).then(()=>({status:n.value,value:a.value}))))}if(s.type==="transform")if(r.common.async===!1){let i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!nt(i))return _;let a=s.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>nt(i)?Promise.resolve(s.transform(i.value,o)).then(a=>({status:n.value,value:a})):_);O.assertNever(s)}};xe.create=(e,t,n)=>new xe({schema:e,typeName:T.ZodEffects,effect:t,...A(n)});xe.createWithPreprocess=(e,t,n)=>new xe({schema:t,effect:{type:"preprocess",transform:e},typeName:T.ZodEffects,...A(n)});be=class extends C{_parse(t){return this._getType(t)===b.undefined?X(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};be.create=(e,t)=>new be({innerType:e,typeName:T.ZodOptional,...A(t)});Fe=class extends C{_parse(t){return this._getType(t)===b.null?X(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};Fe.create=(e,t)=>new Fe({innerType:e,typeName:T.ZodNullable,...A(t)});Ot=class extends C{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return n.parsedType===b.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};Ot.create=(e,t)=>new Ot({innerType:e,typeName:T.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...A(t)});It=class extends C{_parse(t){let{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return rn(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new ae(r.common.issues)},input:r.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new ae(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};It.create=(e,t)=>new It({innerType:e,typeName:T.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...A(t)});un=class extends C{_parse(t){if(this._getType(t)!==b.nan){let r=this._getOrReturnCtx(t);return y(r,{code:h.invalid_type,expected:b.nan,received:r.parsedType}),_}return{status:"valid",value:t.data}}};un.create=e=>new un({typeName:T.ZodNaN,...A(e)});Og=Symbol("zod_brand"),Un=class extends C{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}},Bn=class e extends C{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?_:o.status==="dirty"?(n.dirty(),yt(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let s=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?_:s.status==="dirty"?(n.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:r.path,parent:r})}}static create(t,n){return new e({in:t,out:n,typeName:T.ZodPipeline})}},Pt=class extends C{_parse(t){let n=this._def.innerType._parse(t),r=s=>(nt(s)&&(s.value=Object.freeze(s.value)),s);return rn(n)?n.then(s=>r(s)):r(n)}unwrap(){return this._def.innerType}};Pt.create=(e,t)=>new Pt({innerType:e,typeName:T.ZodReadonly,...A(t)});Ig={object:ce.lazycreate};(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(T||(T={}));Pg=(e,t={message:`Input not instance of ${e.name}`})=>pl(n=>n instanceof e,t),ml=rt.create,hl=wt.create,Ng=un.create,Dg=bt.create,gl=vt.create,Mg=xt.create,Fg=on.create,jg=St.create,Hg=_t.create,Lg=st.create,zg=Je.create,Ug=$e.create,Bg=an.create,Jg=Ve.create,Vg=ce.create,Zg=ce.strictCreate,Gg=Et.create,Kg=Zr.create,Wg=Tt.create,qg=Me.create,Yg=Gr.create,Xg=cn.create,Qg=ln.create,ek=Kr.create,tk=$t.create,nk=Rt.create,rk=At.create,sk=Ct.create,ok=ot.create,ik=xe.create,ak=be.create,ck=Fe.create,lk=xe.createWithPreprocess,uk=Bn.create,dk=()=>ml().optional(),fk=()=>hl().optional(),pk=()=>gl().optional(),mk={string:(e=>rt.create({...e,coerce:!0})),number:(e=>wt.create({...e,coerce:!0})),boolean:(e=>vt.create({...e,coerce:!0})),bigint:(e=>bt.create({...e,coerce:!0})),date:(e=>xt.create({...e,coerce:!0}))},hk=_});var k={};Z(k,{BRAND:()=>Og,DIRTY:()=>yt,EMPTY_PATH:()=>lg,INVALID:()=>_,NEVER:()=>hk,OK:()=>X,ParseStatus:()=>G,Schema:()=>C,ZodAny:()=>st,ZodArray:()=>Ve,ZodBigInt:()=>bt,ZodBoolean:()=>vt,ZodBranded:()=>Un,ZodCatch:()=>It,ZodDate:()=>xt,ZodDefault:()=>Ot,ZodDiscriminatedUnion:()=>Zr,ZodEffects:()=>xe,ZodEnum:()=>At,ZodError:()=>ae,ZodFirstPartyTypeKind:()=>T,ZodFunction:()=>Kr,ZodIntersection:()=>Tt,ZodIssueCode:()=>h,ZodLazy:()=>$t,ZodLiteral:()=>Rt,ZodMap:()=>cn,ZodNaN:()=>un,ZodNativeEnum:()=>Ct,ZodNever:()=>$e,ZodNull:()=>_t,ZodNullable:()=>Fe,ZodNumber:()=>wt,ZodObject:()=>ce,ZodOptional:()=>be,ZodParsedType:()=>b,ZodPipeline:()=>Bn,ZodPromise:()=>ot,ZodReadonly:()=>Pt,ZodRecord:()=>Gr,ZodSchema:()=>C,ZodSet:()=>ln,ZodString:()=>rt,ZodSymbol:()=>on,ZodTransformer:()=>xe,ZodTuple:()=>Me,ZodType:()=>C,ZodUndefined:()=>St,ZodUnion:()=>Et,ZodUnknown:()=>Je,ZodVoid:()=>an,addIssueToContext:()=>y,any:()=>Lg,array:()=>Jg,bigint:()=>Dg,boolean:()=>gl,coerce:()=>mk,custom:()=>pl,date:()=>Mg,datetimeRegex:()=>dl,defaultErrorMap:()=>Ue,discriminatedUnion:()=>Kg,effect:()=>ik,enum:()=>rk,function:()=>ek,getErrorMap:()=>nn,getParsedType:()=>De,instanceof:()=>Pg,intersection:()=>Wg,isAborted:()=>Jr,isAsync:()=>rn,isDirty:()=>Vr,isValid:()=>nt,late:()=>Ig,lazy:()=>tk,literal:()=>nk,makeIssue:()=>zn,map:()=>Xg,nan:()=>Ng,nativeEnum:()=>sk,never:()=>Ug,null:()=>Hg,nullable:()=>ck,number:()=>hl,object:()=>Vg,objectUtil:()=>Oo,oboolean:()=>pk,onumber:()=>fk,optional:()=>ak,ostring:()=>dk,pipeline:()=>uk,preprocess:()=>lk,promise:()=>ok,quotelessJson:()=>ig,record:()=>Yg,set:()=>Qg,setErrorMap:()=>cg,strictObject:()=>Zg,string:()=>ml,symbol:()=>Fg,transformer:()=>ik,tuple:()=>qg,undefined:()=>jg,union:()=>Gg,unknown:()=>zg,util:()=>O,void:()=>Bg});var Mo=g(()=>{Br();Po();ol();Ln();kl();Ur()});var dn=g(()=>{Mo();Mo()});import{createHash as gk}from"node:crypto";function Re(e){let t=yl.get(e);return t||(t=gk("sha256").update(`tkr:${e}`).digest("hex").slice(0,16),yl.set(e,t)),t}var kk,yk,fn,yl,pn=g(()=>{"use strict";dn();kk=k.enum(["normal","compact","minimal"]),yk=k.enum(["off","light","balanced","max"]),fn=k.object({enabled:k.boolean().default(!0),telemetryOptIn:k.boolean().default(!0),outputVerbosity:kk.default("compact"),reducer:yk.default("off"),filters:k.object({enableAll:k.boolean().default(!0),disabled:k.array(k.string().max(64)).max(100).default([])}).default({enableAll:!0,disabled:[]})}),yl=new Map});var bl={};Z(bl,{bundleRefreshFile:()=>Jn,claudeCommandFile:()=>at,claudeCommandsDir:()=>qr,contentCacheDir:()=>Ze,contentCacheFile:()=>hn,enrollCooldownFile:()=>Fo,installIdFile:()=>mn,managedCommandsFile:()=>Wr,restoreConfigFile:()=>je,skillFile:()=>it,skillsDir:()=>Vn,stateFile:()=>wk,tokmizerHome:()=>w});import wl from"node:os";import{join as ge}from"node:path";function w(){return process.env.TOKMIZER_HOME||ge(wl.homedir(),".tokmizer")}function wk(){return ge(w(),"state.json")}function mn(){return ge(w(),"install-id")}function Fo(){return ge(w(),"enroll-cooldown")}function Jn(){return ge(w(),"bundle-refresh.json")}function Vn(){return ge(w(),"skills")}function it(e){return ge(Vn(),`${e}.md`)}function Ze(){return ge(w(),"content-cache")}function je(){return ge(w(),"restore.json")}function hn(e){return ge(Ze(),e)}function Wr(){return ge(w(),"managed-commands.json")}function qr(){return process.env.TOKMIZER_CLAUDE_COMMANDS_DIR||ge(wl.homedir(),".claude","commands")}function at(e){return ge(qr(),`${e}.md`)}var z=g(()=>{"use strict"});import gn from"node:os";import{createHash as bk,randomUUID as vk}from"node:crypto";import{readFile as vl,writeFile as xl,mkdir as xk}from"node:fs/promises";async function Yr(){try{let n=(await vl(mn(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(n))return n}catch{}await xk(w(),{recursive:!0});let e=vk();try{return await xl(mn(),e,{mode:384,flag:"wx"}),e}catch{try{let t=(await vl(mn(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(t))return t}catch{}return await xl(mn(),e,{mode:384}),e}}function jo(e){return bk("sha256").update(e).digest("hex")}function Sk(){let e=gn.networkInterfaces();for(let t of Object.keys(e))for(let n of e[t]??[])if(!n.internal&&n.mac&&n.mac!=="00:00:00:00:00:00")return n.mac;return"no-mac"}async function Se(){let e=await Yr(),t=gn.hostname(),n=gn.platform(),r=gn.release(),s=gn.cpus(),o=s[0]?.model??"unknown",i=s.length,a=jo(Sk()),c=jo(gn.userInfo().username),l=[t,n,r,o,String(i),a,c,e].join("|");return{fingerprint:jo(l),installId:e,hostname:t,os:n,osVersion:r,cpuModel:o,cpuCores:i,macHash:a,usernameHash:c}}var Nt=g(()=>{"use strict";z()});import{join as Ho}from"node:path";import{mkdir as _k,readFile as Ek,writeFile as Tk,unlink as Sl,rename as $k}from"node:fs/promises";function Zn(){try{let e=Intl.DateTimeFormat().resolvedOptions().timeZone;return e&&e.length>0?e:"Etc/UTC"}catch{return"Etc/UTC"}}function zo(e){return e?.dir??w()}async function N(e){let t=zo(e);try{let n=await Ek(Ho(t,Lo),"utf8"),r=JSON.parse(n),s=r.timeZone;return{...r,lastSettingsRevision:r.lastSettingsRevision??0,get timeZone(){return s??=Zn()},bonusActive:r.bonusActive??!1,...r.bonusResetAt!==void 0?{bonusResetAt:r.bonusResetAt}:{}}}catch{return null}}async function Xr(e,t){let n=zo(t);await _k(n,{recursive:!0}),e.installedAt==null&&(e.installedAt=Math.floor(Date.now()/1e3));let r=Ho(n,Lo),s=`${r}.tmp-${process.pid}-${process.hrtime.bigint()}`;await Tk(s,JSON.stringify(e,null,2),{mode:384});try{await $k(s,r)}catch(o){try{await Sl(s)}catch{}throw o}}async function Qr(e){let t=zo(e);try{await Sl(Ho(t,Lo))}catch{return}}var Lo,Ge=g(()=>{"use strict";z();Lo="state.json"});import{createRequire as Rk}from"node:module";function Ck(){let e="0.9.58";if(e)return e;for(let t of["../package.json","../../package.json"])try{let n=Ak(t).version;if(typeof n=="string"&&n)return n}catch{}return"0.0.0"}function ct(e,t){if(!e||!t)return!1;let n=e.split(".").map(s=>parseInt(s,10)),r=t.split(".").map(s=>parseInt(s,10));for(let s=0;s<3;s+=1){let o=n[s]??0,i=r[s]??0;if(Number.isNaN(o)||Number.isNaN(i))return!1;if(o<i)return!0;if(o>i)return!1}return!1}var Ak,Q,Dt=g(()=>{"use strict";Ak=Rk(import.meta.url);Q=Ck()});var _l,El=g(()=>{"use strict";_l=`-----BEGIN PUBLIC KEY-----
4
4
  MCowBQYDK2VwAyEAj/kMlXlhTIGHRKxOKMuGFa1S1ybxxwgdYcAE0YM9fgU=
5
5
  -----END PUBLIC KEY-----
6
- `});import{createHmac as wc,createPublicKey as bc,verify as kc}from"node:crypto";function Tt(){return((process.env.TOKMIZER_DEV==="1"?process.env.TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM:void 0)??Ts).replace(/\\n/g,`
7
- `)}function _c(t,e,r,n){try{let s=bc({key:n,format:"pem"});return kc(null,Buffer.from(`${e}.${t}`,"utf8"),s,Buffer.from(r,"base64url"))}catch{return!1}}async function Ee(t){let e=await t.text(),r=Tt(),n=t.headers?.get?.("x-tokmizer-resp-ts")??null;if(n!==null){let i=Number(n);if(!Number.isFinite(i)||Date.now()-i>vc)throw new Se("http","stale server response (resp-ts outside freshness window)")}if(!r||!r.includes("BEGIN PUBLIC KEY"))throw new Se("http","no signing public key configured; refusing to trust server response");let s=t.headers?.get?.("x-tokmizer-resp-sig")??null,o=Number(n);if(!s||n===null||!Number.isFinite(o))throw new Se("http","missing server response signature");if(!_c(e,o,s,r))throw new Se("http","invalid server response signature");return JSON.parse(e)}function xc(t,e,r){return wc("sha256",r).update(`${e}.${t}`).digest("hex")}async function j(t,e,r,n){let s=Date.now(),o=r===void 0?"":JSON.stringify(r),i=n.signingSecret?xc(o,s,n.signingSecret):"0".repeat(64),a={"content-type":"application/json","x-tokmizer-fingerprint":n.fingerprint,"x-tokmizer-install-id":n.installId,"x-tokmizer-sig":i,"x-tokmizer-ts":String(s),"x-tokmizer-plugin-version":B};n.bearer&&(a.authorization=`Bearer ${n.bearer}`);let c=n.timeoutMs??5e3,u=t!=="GET"&&t!=="DELETE",l={method:t,headers:a,signal:AbortSignal.timeout(c)};u&&(l.body=o);try{return await fetch(`${n.baseUrl}${e}`,l)}catch(g){let w=g.name;throw w==="TimeoutError"||w==="AbortError"?new Se("timeout",`${t} ${e} timed out after ${c}ms`):new Se("network",`${t} ${e} failed: ${g.message}`)}}var vc,Se,Be=S(()=>{"use strict";ct();As();vc=300*1e3;Se=class extends Error{constructor(r,n,s){super(n);this.kind=r;this.status=s;this.name="TransportError"}kind;status}});import{readFile as Ys,writeFile as Ws,mkdir as qs,chmod as Zc,rm as $t,rename as Xs,readdir as Hc}from"node:fs/promises";import{randomUUID as Bc}from"node:crypto";import{join as lt}from"node:path";import{setTimeout as Ks}from"node:timers/promises";async function z(){try{let t=await Ys(lt(y(),rn),"utf8"),e=JSON.parse(t);return ot.parse({...Gs,...e})}catch{return Gs}}async function nn(t){await qs(y(),{recursive:!0});let e=lt(y(),rn),r=`${e}.tmp-${process.pid}-${process.hrtime.bigint()}`;await Ws(r,JSON.stringify(t,null,2),{mode:384});try{await Zc(r,384),await Xs(r,e)}catch(n){try{await $t(r,{force:!0})}catch{}throw n}}async function Js(t){let e=[];for(let r of await Hc(t)){let n=/^([1-9]\d*)-[0-9a-f-]{36}\.json$/.exec(r);if(!n)continue;let s=lt(t,r);try{process.kill(Number(n[1]),0)}catch(o){let i=o.code;if(i==="ESRCH"){await $t(s,{force:!0});continue}if(i!=="EPERM")throw o}try{let o=JSON.parse(await Ys(s,"utf8"));if(!Number.isSafeInteger(o)||o<0)throw new Error("Invalid local settings lock");e.push({id:r,ticket:o})}catch(o){if(o.code!=="ENOENT")throw o}}return e}async function Qs(t){let e=Vc.parse(t),r=lt(y(),"settings-cache-locks");await qs(r,{recursive:!0,mode:448});let n=`${process.pid}-${Bc()}.json`,s=lt(r,n),o=`${s}.tmp`,i=performance.now()+3e3,a=async c=>{for(await Ws(o,String(c),{mode:384});;)try{await Xs(o,s);return}catch(u){let l=u.code;if(process.platform!=="win32"||l!=="EPERM"&&l!=="EBUSY"||performance.now()>=i)throw u;await Ks(10)}};try{await a(0);let c=Math.max(0,...(await Js(r)).map(u=>u.ticket))+1;if(!Number.isSafeInteger(c))throw new Error("Invalid local settings lock");for(await a(c);;){if(!(await Js(r)).some(l=>l.id!==n&&(l.ticket===0||l.ticket<c||l.ticket===c&&l.id<n))){let l=await z(),g=ot.parse({...l,...e,filters:{...l.filters,...e.filters}});return await nn(g),g}if(performance.now()>=i)throw new Error("Timed out waiting for local settings lock after 3 seconds; another process may still be updating settings");await Ks(10)}}finally{await Promise.all([$t(s,{force:!0}),$t(o,{force:!0})])}}async function eo(){try{await $t(lt(y(),rn),{force:!0})}catch{}}var rn,Gs,Vc,Pt=S(()=>{"use strict";vt();I();rn="settings-cache.json",Gs=ot.parse({}),Vc=ot.partial().extend({filters:ot.shape.filters.removeDefault().partial().optional()})});var ur,sn=S(()=>{"use strict";st();ur=f.object({slug:f.string().min(1).max(64),description:f.string().max(255).optional(),match_command:f.string().min(1),priority:f.number().int().default(50),strip_ansi:f.boolean().default(!1),strip_lines_matching:f.array(f.string()).default([]),keep_failures:f.boolean().default(!1),fold_passing:f.boolean().default(!1),fold_passing_threshold:f.number().int().positive().max(1e3).optional(),mask_abs_paths:f.boolean().default(!1),preserve_exact:f.boolean().default(!1),truncate_lines_at:f.number().int().positive().max(1e4).optional(),max_lines:f.number().int().positive().max(1e5).optional(),scale_with_level:f.boolean().default(!0),transform:f.string().max(64).optional(),on_empty:f.string().max(255).optional()})});function on(t){return JSON.stringify(t)+lr}function*so(t){let e=0;for(;;){let r=t.indexOf(lr,e);if(r<0)return;yield t.slice(e,r),e=r+1}}function Ot(){return`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var Yc,Wc,qc,Xc,_m,xm,Sm,no,lr,Em,oo=S(()=>{"use strict";st();sn();Yc=f.object({id:f.string().min(1).max(64),op:f.literal("filter"),cmd:f.string().min(1).max(2048),plan:f.enum(["trial","smart","pro"]),allowed:f.array(f.string().min(1).max(64)).max(512).optional(),installId:f.string().min(1).max(64).optional()}),Wc=f.object({id:f.string().min(1).max(64),op:f.literal("ping")}),qc=f.object({id:f.string().min(1).max(64),op:f.literal("shutdown"),installId:f.string().min(1).max(64)}),Xc=f.object({id:f.string().min(1).max(64),op:f.literal("reload"),installId:f.string().min(1).max(64).optional()}),_m=f.discriminatedUnion("op",[Yc,Wc,qc,Xc]),xm=f.object({id:f.string(),ok:f.literal(!0),data:f.unknown()}),Sm=f.object({id:f.string(),ok:f.literal(!1),err:f.string(),retryAfterMs:f.number().int().nonnegative().optional()}),no=f.object({filter:ur.nullable(),cacheHit:f.boolean().optional()}),lr=`
8
- `,Em=64*1024});var co={};Q(co,{IDLE_TIMEOUT_MS:()=>uu,PARENT_WATCH_INTERVAL_MS:()=>cu,cleanupStaleSocket:()=>dr,isParentAlive:()=>lu,socketPath:()=>dt});import Qc from"node:os";import{join as It}from"node:path";import{existsSync as eu,statSync as tu,lstatSync as io,unlinkSync as ru,mkdirSync as nu,chmodSync as su}from"node:fs";import{createHash as ou}from"node:crypto";function iu(t){let e=ou("sha256").update(y()).digest("hex").slice(0,8),r=It(Qc.tmpdir(),`tkr-${t}-${e}`),n=It(r,"d.sock");if(Buffer.byteLength(n)>an)throw new Error("Temporary directory path is too long for IPC");return ao(r,t),n}function au(t,e){try{let r=io(t);return r.isDirectory()&&r.uid===e&&(r.mode&63)===0}catch{return!1}}function ao(t,e){nu(t,{recursive:!0,mode:448});let r=io(t);if(!r.isDirectory()||r.uid!==e)throw new Error("Unsafe IPC directory");su(t,448)}function dt(){if(process.platform==="win32")return{path:`\\\\.\\pipe\\tokmizer-${process.env.USERNAME??"tokmizer"}`,isPipe:!0};let t=typeof process.getuid=="function"?process.getuid():0,e=process.env.XDG_RUNTIME_DIR;if(e&&au(e,t)){let s=It(e,`tokmizer-${t}.sock`);if(Buffer.byteLength(s)<=an)return{path:s,isPipe:!1}}let r=It(y(),"run"),n=It(r,"daemon.sock");return Buffer.byteLength(n)>an?{path:iu(t),isPipe:!1}:(ao(r,t),{path:n,isPipe:!1})}async function dr(){let{path:t,isPipe:e}=dt();if(e||!eu(t))return;try{if(!tu(t).isSocket())return}catch{return}let r=await import("node:net");if(!await new Promise(s=>{let o=r.createConnection(t),i=a=>{o.removeAllListeners();try{o.destroy()}catch{}s(a)};o.once("connect",()=>i(!0)),o.once("error",a=>{let c=a.code;i(c!=="ECONNREFUSED"&&c!=="ENOENT")}),setTimeout(()=>i(!0),250)}))try{ru(t)}catch{}}function lu(){let t=process.ppid;if(!t||t===1)return!1;try{return process.kill(t,0),!0}catch{return!1}}var an,cu,uu,cn=S(()=>{"use strict";I();an=100;cu=3e4,uu=5*6e4});var ft={};Q(ft,{connectDaemon:()=>ho,shutdownDaemon:()=>po});import{createConnection as du}from"node:net";import{spawn as fu}from"node:child_process";import{existsSync as fo,openSync as un,closeSync as uo,unlinkSync as dn,writeFileSync as fn,mkdirSync as mn,readFileSync as mu,appendFileSync as pu,rmSync as hu,statSync as gu}from"node:fs";import{dirname as yu,join as pn}from"node:path";import{fileURLToPath as wu}from"node:url";function hn(){return pn(y(),"daemon.spawn.fail")}function gn(){return pn(y(),"daemon.log")}function _u(){try{let t=Number(mu(hn(),"utf8"));return Number.isFinite(t)&&Date.now()-t<ku}catch{return!1}}function xu(t){try{mn(y(),{recursive:!0});let e=gn();try{gu(e).size>vu&&dn(e)}catch{}pu(e,`${new Date().toISOString()} ${t}
9
- `)}catch{}}function Su(t){try{mn(y(),{recursive:!0}),fn(hn(),String(Date.now()))}catch{}xu(`spawn failed: ${t.message}`)}function Eu(){try{hu(hn(),{force:!0})}catch{}}async function fr(t,e){return new Promise((r,n)=>{let s=du(t),o=a=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(i),a){try{s.destroy()}catch{}n(a)}else r(s)},i=setTimeout(()=>o(new Error("connect timeout")),e);s.once("connect",()=>o(null)),s.once("error",a=>o(a))})}function Tu(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:wu(new URL("../bin/tkr-daemon.js",import.meta.url))}async function ln(t,e=3e3){let r=Math.ceil(e/75),n=process.platform==="win32";for(let s=0;s<r;s++){if(n)try{return(await fr(t,75)).destroy(),!0}catch{}else if(fo(t))return!0;await new Promise(o=>setTimeout(o,75))}return!1}async function Au(t){let e=Tu();if(!fo(e))throw new Error(`tkr-daemon binary not found at ${e}`);let{path:r}=dt(),n=process.platform==="win32"?y():yu(r);try{mn(n,{recursive:!0})}catch{}let s=pn(n,"daemon.spawn.lock"),o=null;try{o=un(s,"wx"),fn(o,String(process.pid))}catch(i){if(i.code==="EEXIST"){if(await ln(r,5e3))return;try{dn(s)}catch{}try{o=un(s,"wx"),fn(o,String(process.pid))}catch(c){if(c.code==="EEXIST"){await ln(r,5e3);return}throw c}}else throw i}try{let i=null;try{i=un(gn(),"a")}catch{}if(fu(process.execPath,[e],{detached:!0,stdio:["ignore","ignore",i??"ignore"],env:{...process.env,TOKMIZER_DAEMON_INSTALL_ID:t}}).unref(),i!==null)try{uo(i)}catch{}if(!await ln(r,3e3))throw new Error("tkr-daemon failed to bind socket within 3s")}finally{if(o!==null){try{uo(o)}catch{}try{dn(s)}catch{}}}}async function po(t={}){let{path:e}=t.socketPath?{path:t.socketPath}:dt(),r=await rr();try{let n=await fr(e,mo);n.write(on({id:Ot(),op:"shutdown",installId:r})),await new Promise(s=>setTimeout(s,150));try{n.destroy()}catch{}return!0}catch{return!1}}async function Ru(t,e){let r=Date.now()+e;for(;Date.now()<r;){try{(await fr(t,250)).destroy()}catch{return!0}await new Promise(n=>setTimeout(n,100))}return!1}async function ho(t={}){let{path:e}=t.socketPath?{path:t.socketPath}:dt(),r=await rr(),n=null,s=0,o=!1;for(;s<=lo;)try{n=await fr(e,mo),Eu();break}catch{if(s+=1,s>lo)throw new Error(`tkr-daemon unreachable at ${e}`);if(_u())throw new Error(`tkr-daemon spawn on cooldown (see ${gn()})`);await dr();try{await Au(r),o=!0}catch(l){throw Su(l),l}}if(!n)throw new Error("tkr-daemon: socket setup failed");let i=new Map,a="";n.setEncoding("utf8"),n.on("data",l=>{a+=l;let g=-1;for(let E=0;E<a.length;E++)a[E]===lr&&(g=E);if(g<0)return;let w=[];for(let E of so(a.slice(0,g+1)))w.push(E);a=a.slice(g+1);for(let E of w)if(E)try{let $=JSON.parse(E),Z=i.get($.id);if(!Z)continue;clearTimeout(Z.timer),i.delete($.id),Z.resolve($)}catch{}}),n.on("close",()=>{for(let l of i.values())clearTimeout(l.timer),l.reject(new Error("daemon socket closed"));i.clear()}),n.on("error",()=>{});function c(l){return new Promise((g,w)=>{if(n.destroyed||!n.writable){w(new Error("daemon socket closed"));return}let E=setTimeout(()=>{i.delete(l.id),w(new Error(`daemon request timeout (${l.op})`))},bu);i.set(l.id,{resolve:g,reject:w,timer:E}),n.write(on(l))})}let u={filter:async(l,g,w)=>{let E=await c({id:Ot(),op:"filter",cmd:l.slice(0,2048),plan:g,...w&&w.length>0?{allowed:w.slice(0,512)}:{},installId:r});if(!E.ok)return null;let $=no.safeParse(E.data);return $.success?$.data.filter:null},ping:async()=>{let l=await c({id:Ot(),op:"ping"});if(!l.ok)throw new Error(l.err);return l.data},reload:async()=>{let l=await c({id:Ot(),op:"reload",installId:r});if(!l.ok)throw new Error(l.err);return l.data},close:()=>{try{n.destroy()}catch{}}};if(!t.skipVersionCheck&&!o){let l=!1;try{let g=await u.ping();if(g.version&&xe(B,g.version))throw new Error(`newer daemon ${g.version} already running`);l=g.version!==B}catch(g){throw u.close(),g}if(l){try{await po(t.socketPath?{socketPath:t.socketPath}:{})}catch{}u.close();let g=await Ru(e,2e3);if(await dr(),!g)throw new Error("stale daemon still running after shutdown request");return ho({...t,skipVersionCheck:!0})}}return u}var mo,bu,lo,ku,vu,mt=S(()=>{"use strict";oo();cn();I();He();ct();mo=500,bu=3e3,lo=1,ku=6e4,vu=256*1024});import{readFileSync as Cu,renameSync as $u,statSync as Pu,writeFileSync as Ou}from"node:fs";function yn(t,e,r){try{if(Pu(t).size<=e)return;let n=Cu(t,"utf8").split(`
10
- `).filter(a=>a.trim()!==""),s=[],o=0;for(let a=n.length-1;a>=0;a-=1){let c=n[a],u=Buffer.byteLength(c)+1;if(o+u>r)break;s.push(c),o+=u}s.reverse();let i=`${t}.tmp-${process.pid}`;Ou(i,s.length?`${s.join(`
6
+ `});import{existsSync as Tl,mkdirSync as $l,rmSync as Ok,writeFileSync as Rl}from"node:fs";import{join as Al}from"node:path";function Bo(){return Al(w(),"network-off")}function Gn(){let e=process.env.TOKMIZER_NETWORK;return e!==void 0&&Ik.has(e.trim().toLowerCase())}function D(){return Gn()?!1:!Tl(Bo())}function Mt(){if(!D())throw new Uo}function Cl(e){if(e){Ok(Bo(),{force:!0});return}$l(w(),{recursive:!0,mode:448}),Rl(Bo(),String(Date.now()),{mode:384})}function Kn(){return Gn()?"off (TOKMIZER_NETWORK)":D()?"on":"off"}function Dk(){return Al(w(),Pk)}function Ol(){if(!D())return null;let e=Dk();if(Tl(e))return null;try{$l(w(),{recursive:!0}),Rl(e,String(Date.now()),{mode:384})}catch{return null}return Nk}var Ik,Pk,Jo,Nk,Uo,Ke=g(()=>{"use strict";z();Ik=new Set(["0","off","false","no"]),Pk="network-notice-shown",Jo="Network is off for Tokmizer. Turn it back on with: tkr network on",Nk=["Tokmizer contacts tokmizer.com to keep its rules up to date and to improve the product. No account or email is needed.","It sends a random install ID, your computer name, OS and CPU model, a hash of your network card address and of your user name, and the plugin version. Command contents and output are never sent.","Usage stats (command names and token counts) are sent only while they are on. Check with: tkr telemetry status.","Turn all network access off: tkr network off. Usage stats only: tkr telemetry off."].join(`
7
+ `),Uo=class extends Error{constructor(){super(Jo),this.name="NetworkDisabledError"}}});import{createHmac as Mk,createPublicKey as Fk,verify as jk}from"node:crypto";function Wn(){return((process.env.TOKMIZER_DEV==="1"?process.env.TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM:void 0)??_l).replace(/\\n/g,`
8
+ `)}function Lk(e,t,n,r){try{let s=Fk({key:r,format:"pem"});return jk(null,Buffer.from(`${t}.${e}`,"utf8"),s,Buffer.from(n,"base64url"))}catch{return!1}}async function ut(e){let t=await e.text(),n=Wn(),r=e.headers?.get?.("x-tokmizer-resp-ts")??null;if(r!==null){let i=Number(r);if(!Number.isFinite(i)||Date.now()-i>Hk)throw new lt("http","stale server response (resp-ts outside freshness window)")}if(!n||!n.includes("BEGIN PUBLIC KEY"))throw new lt("http","no signing public key configured; refusing to trust server response");let s=e.headers?.get?.("x-tokmizer-resp-sig")??null,o=Number(r);if(!s||r===null||!Number.isFinite(o))throw new lt("http","missing server response signature");if(!Lk(t,o,s,n))throw new lt("http","invalid server response signature");return JSON.parse(t)}function zk(e,t,n){return Mk("sha256",n).update(`${t}.${e}`).digest("hex")}async function le(e,t,n,r){Mt();let s=Date.now(),o=n===void 0?"":JSON.stringify(n),i=r.signingSecret?zk(o,s,r.signingSecret):"0".repeat(64),a={"content-type":"application/json","x-tokmizer-fingerprint":r.fingerprint,"x-tokmizer-install-id":r.installId,"x-tokmizer-sig":i,"x-tokmizer-ts":String(s),"x-tokmizer-plugin-version":Q};r.bearer&&(a.authorization=`Bearer ${r.bearer}`);let c=r.timeoutMs??5e3,l=e!=="GET"&&e!=="DELETE",u={method:e,headers:a,signal:AbortSignal.timeout(c)};l&&(u.body=o);try{return await fetch(`${r.baseUrl}${t}`,u)}catch(d){let f=d.name;throw f==="TimeoutError"||f==="AbortError"?new lt("timeout",`${e} ${t} timed out after ${c}ms`):new lt("network",`${e} ${t} failed: ${d.message}`)}}var Hk,lt,Ft=g(()=>{"use strict";Dt();El();Ke();Hk=300*1e3;lt=class extends Error{constructor(n,r,s){super(r);this.kind=n;this.status=s;this.name="TransportError"}kind;status}});import{readFile as ou,writeFile as iu,mkdir as au,chmod as dy,rm as nr,rename as cu,readdir as fy}from"node:fs/promises";import{randomUUID as py}from"node:crypto";import{join as wn}from"node:path";import{setTimeout as nu}from"node:timers/promises";async function J(){let e=null;try{let t=JSON.parse(await ou(wn(w(),ni),"utf8"));typeof t=="object"&&t!==null&&!Array.isArray(t)&&(e=t)}catch{}return e?fn.parse({...ru,...e}):ru}async function ri(e){await au(w(),{recursive:!0});let t=wn(w(),ni),n=`${t}.tmp-${process.pid}-${process.hrtime.bigint()}`;await iu(n,JSON.stringify(e,null,2),{mode:384});try{await dy(n,384),await cu(n,t)}catch(r){try{await nr(n,{force:!0})}catch{}throw r}}async function su(e){let t=[];for(let n of await fy(e)){let r=/^([1-9]\d*)-[0-9a-f-]{36}\.json$/.exec(n);if(!r)continue;let s=wn(e,n);try{process.kill(Number(r[1]),0)}catch(o){let i=o.code;if(i==="ESRCH"){await nr(s,{force:!0});continue}if(i!=="EPERM")throw o}try{let o=JSON.parse(await ou(s,"utf8"));if(!Number.isSafeInteger(o)||o<0)throw new Error("Invalid local settings lock");t.push({id:n,ticket:o})}catch(o){if(o.code!=="ENOENT")throw o}}return t}async function lu(e){let t=my.parse(e),n=wn(w(),"settings-cache-locks");await au(n,{recursive:!0,mode:448});let r=`${process.pid}-${py()}.json`,s=wn(n,r),o=`${s}.tmp`,i=performance.now()+3e3,a=async c=>{for(await iu(o,String(c),{mode:384});;)try{await cu(o,s);return}catch(l){let u=l.code;if(process.platform!=="win32"||u!=="EPERM"&&u!=="EBUSY"||performance.now()>=i)throw l;await nu(10)}};try{await a(0);let c=Math.max(0,...(await su(n)).map(l=>l.ticket))+1;if(!Number.isSafeInteger(c))throw new Error("Invalid local settings lock");for(await a(c);;){if(!(await su(n)).some(u=>u.id!==r&&(u.ticket===0||u.ticket<c||u.ticket===c&&u.id<r))){let u=await J(),d=fn.parse({...u,...t,filters:{...u.filters,...t.filters}});return await ri(d),d}if(performance.now()>=i)throw new Error("Timed out waiting for local settings lock after 3 seconds; another process may still be updating settings");await nu(10)}}finally{await Promise.all([nr(s,{force:!0}),nr(o,{force:!0})])}}async function uu(){try{await nr(wn(w(),ni),{force:!0})}catch{}}var ni,ru,my,Ht=g(()=>{"use strict";pn();z();ni="settings-cache.json",ru=fn.parse({}),my=fn.partial().extend({filters:fn.shape.filters.removeDefault().partial().optional()})});async function du(e,t){let n=await N();if(!D()||!n||n.linked===!1){let a=n?.plan??"free";if(e==="GET")return{plan:a,settings:await J()};let c=await lu(t);return{plan:a,settings:c}}let r=process.env.TOKMIZER_BASE_URL??"https://tokmizer.com",s=await Se(),o=await le(e,"/api/v1/settings",t,{baseUrl:r,bearer:n.jwt,signingSecret:n.signingSecret,fingerprint:s.fingerprint,installId:s.installId,timeoutMs:8e3});if(!o.ok)throw new Error(`Settings ${e} failed: ${o.status}`);let i=await ut(o);return await ri(i.settings),i}async function Lt(){return du("GET")}async function Ae(e){return du("PATCH",e)}function gy(e,t,n){let r=t.split(".");if(r.some(o=>hy.has(o)))throw new Error(`invalid settings key: ${t}`);let s=e;for(let o=0;o<r.length-1;o++){let i=r[o];(typeof s[i]!="object"||s[i]===null)&&(s[i]={}),s=s[i]}s[r[r.length-1]]=n}function ky(e){if(e==="true")return!0;if(e==="false")return!1;if(/^-?\d+$/.test(e))return Number.parseInt(e,10);if(e.startsWith("[")||e.startsWith("{"))try{return JSON.parse(e)}catch{}return e}function fu(e,t){let n=ky(t),r={};return gy(r,e,n),r}var hy,rr=g(()=>{"use strict";Ge();Nt();Ft();Ht();Ke();hy=new Set(["__proto__","constructor","prototype"])});var bn,cs=g(()=>{"use strict";dn();bn=k.object({slug:k.string().min(1).max(64),description:k.string().max(255).optional(),match_command:k.string().min(1),priority:k.number().int().default(50),strip_ansi:k.boolean().default(!1),strip_lines_matching:k.array(k.string()).default([]),keep_failures:k.boolean().default(!1),strip_on_failure:k.boolean().default(!1),fold_passing:k.boolean().default(!1),fold_passing_threshold:k.number().int().positive().max(1e3).optional(),mask_abs_paths:k.boolean().default(!1),preserve_exact:k.boolean().default(!1),truncate_lines_at:k.number().int().positive().max(1e4).optional(),max_lines:k.number().int().positive().max(1e5).optional(),scale_with_level:k.boolean().default(!0),transform:k.string().max(64).optional(),on_empty:k.string().max(255).optional()})});function si(e){return JSON.stringify(e)+ls}function*mu(e){let t=0;for(;;){let n=e.indexOf(ls,t);if(n<0)return;yield e.slice(t,n),t=n+1}}function sr(){return`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var yy,wy,by,vy,aR,cR,lR,pu,ls,uR,hu=g(()=>{"use strict";dn();cs();yy=k.object({id:k.string().min(1).max(64),op:k.literal("filter"),cmd:k.string().min(1).max(2048),plan:k.enum(["trial","smart","pro"]),allowed:k.array(k.string().min(1).max(64)).max(512).optional(),installId:k.string().min(1).max(64).optional()}),wy=k.object({id:k.string().min(1).max(64),op:k.literal("ping")}),by=k.object({id:k.string().min(1).max(64),op:k.literal("shutdown"),installId:k.string().min(1).max(64)}),vy=k.object({id:k.string().min(1).max(64),op:k.literal("reload"),installId:k.string().min(1).max(64).optional()}),aR=k.discriminatedUnion("op",[yy,wy,by,vy]),cR=k.object({id:k.string(),ok:k.literal(!0),data:k.unknown()}),lR=k.object({id:k.string(),ok:k.literal(!1),err:k.string(),retryAfterMs:k.number().int().nonnegative().optional()}),pu=k.object({filter:bn.nullable(),cacheHit:k.boolean().optional()}),ls=`
9
+ `,uR=64*1024});var yu={};Z(yu,{IDLE_TIMEOUT_MS:()=>Iy,PARENT_WATCH_INTERVAL_MS:()=>Oy,cleanupStaleSocket:()=>us,isParentAlive:()=>Py,socketPath:()=>vn});import xy from"node:os";import{join as or}from"node:path";import{existsSync as Sy,statSync as _y,lstatSync as gu,unlinkSync as Ey,mkdirSync as Ty,chmodSync as $y}from"node:fs";import{createHash as Ry}from"node:crypto";function Ay(e){let t=Ry("sha256").update(w()).digest("hex").slice(0,8),n=or(xy.tmpdir(),`tkr-${e}-${t}`),r=or(n,"d.sock");if(Buffer.byteLength(r)>oi)throw new Error("Temporary directory path is too long for IPC");return ku(n,e),r}function Cy(e,t){try{let n=gu(e);return n.isDirectory()&&n.uid===t&&(n.mode&63)===0}catch{return!1}}function ku(e,t){Ty(e,{recursive:!0,mode:448});let n=gu(e);if(!n.isDirectory()||n.uid!==t)throw new Error("Unsafe IPC directory");$y(e,448)}function vn(){if(process.platform==="win32")return{path:`\\\\.\\pipe\\tokmizer-${process.env.USERNAME??"tokmizer"}`,isPipe:!0};let e=typeof process.getuid=="function"?process.getuid():0,t=process.env.XDG_RUNTIME_DIR;if(t&&Cy(t,e)){let s=or(t,`tokmizer-${e}.sock`);if(Buffer.byteLength(s)<=oi)return{path:s,isPipe:!1}}let n=or(w(),"run"),r=or(n,"daemon.sock");return Buffer.byteLength(r)>oi?{path:Ay(e),isPipe:!1}:(ku(n,e),{path:r,isPipe:!1})}async function us(){let{path:e,isPipe:t}=vn();if(t||!Sy(e))return;try{if(!_y(e).isSocket())return}catch{return}let n=await import("node:net");if(!await new Promise(s=>{let o=n.createConnection(e),i=a=>{o.removeAllListeners();try{o.destroy()}catch{}s(a)};o.once("connect",()=>i(!0)),o.once("error",a=>{let c=a.code;i(c!=="ECONNREFUSED"&&c!=="ENOENT")}),setTimeout(()=>i(!0),250)}))try{Ey(e)}catch{}}function Py(){let e=process.ppid;if(!e||e===1)return!1;try{return process.kill(e,0),!0}catch{return!1}}var oi,Oy,Iy,ii=g(()=>{"use strict";z();oi=100;Oy=3e4,Iy=5*6e4});import{basename as Ny}from"node:path";function xn(e){let t=Ny(e).replace(/\.(m?js|ts)$/,"");if(t==="tkr")return[];for(let[n,r]of Object.entries(Dy))if(r===t)return[n];for(let[n,r]of Object.entries(My))if(r===t)return["hook",n];return null}var Dy,My,ds=g(()=>{"use strict";Dy={exec:"tkr-exec",processor:"tkr-processor",daemon:"tkr-daemon","shim-run":"tkr-shim"},My={codex:"tkr-codex-hook",cursor:"tkr-cursor-hook",gemini:"tkr-gemini-hook",agent:"tkr-agent-hook",copilot:"tkr-copilot-hook",droid:"tkr-droid-hook",trae:"tkr-trae-hook",qwen:"tkr-qwen-hook",crush:"tkr-crush-hook",junie:"tkr-junie-hook",zcode:"tkr-zcode-hook",grok:"tkr-grok-hook","pre-tool-use":"pre-tool-use","post-tool-use":"post-tool-use","session-recap":"session-recap","session-start":"on-session-start","reducer-session-start":"reducer-session-start","reducer-prompt-submit":"reducer-prompt-submit","reducer-stop":"reducer-stop"}});import{realpathSync as wu}from"node:fs";import{delimiter as Fy,join as jy}from"node:path";function Ce(){return!1}function Sn(e,t=process.execPath){let n=Ce()?xn(e):null;return n?[process.execPath,...n]:[t,e]}function Hy(e,t){try{return wu(e)===wu(t)}catch{return!1}}function _n(e=process.env.PATH??"",t=process.platform,n=process.execPath){let r=t==="win32"?"tkr.exe":"tkr";for(let s of e.split(t==="win32"?";":Fy)){if(!s||s.includes("node_modules"))continue;let o=jy(s,r);if(Hy(o,n))return o}return n}var We=g(()=>{"use strict";ds()});var En={};Z(En,{connectDaemon:()=>Eu,shutdownDaemon:()=>_u});import{createConnection as Ly}from"node:net";import{spawn as zy}from"node:child_process";import{existsSync as xu,openSync as ai,closeSync as bu,unlinkSync as li,writeFileSync as ui,mkdirSync as di,readFileSync as Uy,appendFileSync as By,rmSync as Jy,statSync as Vy}from"node:fs";import{dirname as Zy,join as fi}from"node:path";import{fileURLToPath as Gy}from"node:url";function pi(){return fi(w(),"daemon.spawn.fail")}function mi(){return fi(w(),"daemon.log")}function Yy(){try{let e=Number(Uy(pi(),"utf8"));return Number.isFinite(e)&&Date.now()-e<Wy}catch{return!1}}function Xy(e){try{di(w(),{recursive:!0});let t=mi();try{Vy(t).size>qy&&li(t)}catch{}By(t,`${new Date().toISOString()} ${e}
10
+ `)}catch{}}function Qy(e){try{di(w(),{recursive:!0}),ui(pi(),String(Date.now()))}catch{}Xy(`spawn failed: ${e.message}`)}function ew(){try{Jy(pi(),{force:!0})}catch{}}async function fs(e,t){return new Promise((n,r)=>{let s=Ly(e),o=a=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(i),a){try{s.destroy()}catch{}r(a)}else n(s)},i=setTimeout(()=>o(new Error("connect timeout")),t);s.once("connect",()=>o(null)),s.once("error",a=>o(a))})}function tw(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:Gy(new URL("../bin/tkr-daemon.js",import.meta.url))}async function ci(e,t=3e3){let n=Math.ceil(t/75),r=process.platform==="win32";for(let s=0;s<n;s++){if(r)try{return(await fs(e,75)).destroy(),!0}catch{}else if(xu(e))return!0;await new Promise(o=>setTimeout(o,75))}return!1}async function nw(e){let t=tw();if(!Ce()&&!xu(t))throw new Error(`tkr-daemon binary not found at ${t}`);let{path:n}=vn(),r=process.platform==="win32"?w():Zy(n);try{di(r,{recursive:!0})}catch{}let s=fi(r,"daemon.spawn.lock"),o=null;try{o=ai(s,"wx"),ui(o,String(process.pid))}catch(i){if(i.code==="EEXIST"){if(await ci(n,5e3))return;try{li(s)}catch{}try{o=ai(s,"wx"),ui(o,String(process.pid))}catch(c){if(c.code==="EEXIST"){await ci(n,5e3);return}throw c}}else throw i}try{let i=null;try{i=ai(mi(),"a")}catch{}let[a,...c]=Sn(t);if(zy(a,c,{detached:!0,stdio:["ignore","ignore",i??"ignore"],env:{...process.env,TOKMIZER_DAEMON_INSTALL_ID:e}}).unref(),i!==null)try{bu(i)}catch{}if(!await ci(n,3e3))throw new Error("tkr-daemon failed to bind socket within 3s")}finally{if(o!==null){try{bu(o)}catch{}try{li(s)}catch{}}}}async function _u(e={}){let{path:t}=e.socketPath?{path:e.socketPath}:vn(),n=await Yr();try{let r=await fs(t,Su);r.write(si({id:sr(),op:"shutdown",installId:n})),await new Promise(s=>setTimeout(s,150));try{r.destroy()}catch{}return!0}catch{return!1}}async function rw(e,t){let n=Date.now()+t;for(;Date.now()<n;){try{(await fs(e,250)).destroy()}catch{return!0}await new Promise(r=>setTimeout(r,100))}return!1}async function Eu(e={}){let{path:t}=e.socketPath?{path:e.socketPath}:vn(),n=await Yr(),r=null,s=0,o=!1;for(;s<=vu;)try{r=await fs(t,Su),ew();break}catch{if(s+=1,s>vu)throw new Error(`tkr-daemon unreachable at ${t}`);if(Yy())throw new Error(`tkr-daemon spawn on cooldown (see ${mi()})`);await us();try{await nw(n),o=!0}catch(u){throw Qy(u),u}}if(!r)throw new Error("tkr-daemon: socket setup failed");let i=new Map,a="";r.setEncoding("utf8"),r.on("data",u=>{a+=u;let d=-1;for(let p=0;p<a.length;p++)a[p]===ls&&(d=p);if(d<0)return;let f=[];for(let p of mu(a.slice(0,d+1)))f.push(p);a=a.slice(d+1);for(let p of f)if(p)try{let m=JSON.parse(p),v=i.get(m.id);if(!v)continue;clearTimeout(v.timer),i.delete(m.id),v.resolve(m)}catch{}}),r.on("close",()=>{for(let u of i.values())clearTimeout(u.timer),u.reject(new Error("daemon socket closed"));i.clear()}),r.on("error",()=>{});function c(u){return new Promise((d,f)=>{if(r.destroyed||!r.writable){f(new Error("daemon socket closed"));return}let p=setTimeout(()=>{i.delete(u.id),f(new Error(`daemon request timeout (${u.op})`))},Ky);i.set(u.id,{resolve:d,reject:f,timer:p}),r.write(si(u))})}let l={filter:async(u,d,f)=>{let p=await c({id:sr(),op:"filter",cmd:u.slice(0,2048),plan:d,...f&&f.length>0?{allowed:f.slice(0,512)}:{},installId:n});if(!p.ok)return null;let m=pu.safeParse(p.data);return m.success?m.data.filter:null},ping:async()=>{let u=await c({id:sr(),op:"ping"});if(!u.ok)throw new Error(u.err);return u.data},reload:async()=>{let u=await c({id:sr(),op:"reload",installId:n});if(!u.ok)throw new Error(u.err);return u.data},close:()=>{try{r.destroy()}catch{}}};if(!e.skipVersionCheck&&!o){let u=!1;try{let d=await l.ping();if(d.version&&ct(Q,d.version))throw new Error(`newer daemon ${d.version} already running`);u=d.version!==Q}catch(d){throw l.close(),d}if(u){try{await _u(e.socketPath?{socketPath:e.socketPath}:{})}catch{}l.close();let d=await rw(t,2e3);if(await us(),!d)throw new Error("stale daemon still running after shutdown request");return Eu({...e,skipVersionCheck:!0})}}return l}var Su,Ky,vu,Wy,qy,Tn=g(()=>{"use strict";hu();ii();z();We();Nt();Dt();Su=500,Ky=3e3,vu=1,Wy=6e4,qy=256*1024});import{readFileSync as sw,renameSync as ow,statSync as iw,writeFileSync as aw}from"node:fs";function ps(e,t,n){try{if(iw(e).size<=t)return;let r=sw(e,"utf8").split(`
11
+ `).filter(a=>a.trim()!==""),s=[],o=0;for(let a=r.length-1;a>=0;a-=1){let c=r[a],l=Buffer.byteLength(c)+1;if(o+l>n)break;s.push(c),o+=l}s.reverse();let i=`${e}.tmp-${process.pid}`;aw(i,s.length?`${s.join(`
11
12
  `)}
12
- `:"",{mode:384}),$u(i,t)}catch{}}var wn=S(()=>{"use strict"});var ko={};Q(ko,{codexHookCommand:()=>vn,codexHookInstalled:()=>bn,codexHooksFile:()=>pt,ensureCodexHook:()=>kn});import{readFile as Iu,writeFile as Du,rename as Nu,mkdir as Mu,copyFile as Lu}from"node:fs/promises";import{existsSync as go,readFileSync as Fu,accessSync as ju,constants as zu}from"node:fs";import{join as mr}from"node:path";import Uu from"node:os";function pt(){return mr(process.env.CODEX_HOME||mr(Uu.homedir(),".codex"),"hooks.json")}function bo(t){return(t.hooks??[]).find(e=>typeof e.command=="string"&&e.command.includes(wo))}function bn(){try{return(JSON.parse(Fu(pt(),"utf8")).hooks?.PreToolUse??[]).some(e=>bo(e)!=null)}catch{return!1}}async function kn(t){let e=pt(),r={},n=go(e);if(n)try{if(r=JSON.parse(await Iu(e,"utf8")),!r||typeof r!="object"||Array.isArray(r))return"error"}catch{return"error"}let s=r.hooks&&typeof r.hooks=="object"?r.hooks:{},o=Array.isArray(s.PreToolUse)?s.PreToolUse:[],i="added",a=o.map(bo).find(c=>c!=null);if(a){if(a.command===t)return"present";a.command=t,i="updated"}else o.push({matcher:"Bash",hooks:[{type:"command",command:t,timeout:10}]});s.PreToolUse=o,r.hooks=s;try{await Mu(mr(e,".."),{recursive:!0});let c=`${e}.tkr-bak`;n&&!go(c)&&await Lu(e,c);let u=`${e}.tmp-${process.pid}`;await Du(u,`${JSON.stringify(r,null,2)}
13
- `),await Nu(u,e)}catch{return"error"}return i}function yo(t){return`'${t.replace(/'/g,"'\\''")}'`}function vn(t,e){if(process.platform!=="win32")for(let r of t.split(":")){if(!r||r.includes("node_modules"))continue;let n=mr(r,wo);try{return ju(n,zu.X_OK),yo(n)}catch{}}return`node ${yo(e)}`}var wo,_n=S(()=>{"use strict";wo="tkr-codex-hook"});var pr={};Q(pr,{autoUpdateEnabled:()=>En,claimSelfUpdateSlot:()=>Ro,defaultDeps:()=>el,maybeSpawnSelfUpdate:()=>rl,selfUpdate:()=>Xu,setAutoUpdate:()=>Wu});import{spawn as Eo}from"node:child_process";import{accessSync as Zu,constants as Hu,existsSync as Dt,mkdirSync as To,readFileSync as Ao,rmSync as Bu,writeFileSync as Sn,appendFileSync as Vu}from"node:fs";import{fileURLToPath as Ku}from"node:url";import{join as te}from"node:path";import Gu from"node:os";function En(){return process.env.TOKMIZER_AUTO_UPDATE==="0"?!1:!Dt(xn())}function Wu(t){if(t){Bu(xn(),{force:!0});return}To(y(),{recursive:!0,mode:448}),Sn(xn(),String(Date.now()))}function Ro(t=Date.now()){try{let e=Number(Ao(xo(),"utf8"));if(Number.isFinite(e)&&t-e<Ju)return!1}catch{}try{To(y(),{recursive:!0,mode:448}),Sn(xo(),String(t))}catch{return!1}return!0}function qu(t){try{let e=te(y(),"self-update.log");Vu(e,`${new Date().toISOString()} ${t}
14
- `,{mode:384}),yn(e,_o,_o/2)}catch{}}async function Xu(t){if(!En())return["disabled"];let e=t.latest;if(!e||!vo.test(e))return["no-version"];let r=[],n=[],s=(await t.run("npm",["root","-g"]).catch(()=>({code:1,stdout:""}))).stdout.trim(),o=s?t.npmVersion(s):void 0;if(o)if(!xe(o,e))n.push(o);else if(!t.writable(s))r.push("npm needs permission");else{let a=await t.run("npm",["i","-g",`@tokmizer/plugin@${e}`,"--no-audit","--no-fund"]).catch(()=>({code:1,stdout:""})),c=t.npmVersion(s);a.code===0&&c===e?(r.push(`npm ${o} -> ${e}`),n.push(e)):r.push(`npm failed (${o})`)}if(process.platform!=="win32"){let a=await t.run("brew",["list","--versions","tokmizer"]).catch(()=>({code:1,stdout:""})),c=a.code===0?a.stdout.trim().split(/\s+/)[1]:void 0;if(c&&vo.test(c))if(!xe(c,e))n.push(c);else{let u=await t.run("brew",["upgrade","tokmizer"],{...process.env,HOMEBREW_NO_INSTALL_CLEANUP:"1"}).catch(()=>({code:1,stdout:""}));u.code===0?(r.push(`brew ${c} -> ${e}`),n.push(e)):/untrusted tap/i.test(u.stderr??"")?r.push("brew tap not trusted: run brew trust norwelltw/tokmizer"):r.push(`brew failed (${c})`)}}if(r.some(a=>a.includes("->"))&&await t.run("tkr",["shims-refresh"]).catch(()=>({code:1,stdout:""})),n.some(a=>!xe(a,Yu))&&t.codexInstalled()&&!Dt(So())){let a=await t.ensureCodexHook(s).catch(()=>"error");if(a!=="error"){try{Sn(So(),String(Date.now()))}catch{}r.push(`codex hook ${a}`)}}for(let a of r)qu(a);return r}function Qu(t,e,r){return new Promise(n=>{let s=Eo(t,e,{env:r??process.env,shell:process.platform==="win32",stdio:["ignore","pipe","pipe"],windowsHide:!0}),o="",i="";s.stdout?.on("data",c=>{o+=c.toString("utf8")}),s.stderr?.on("data",c=>{i.length<8192&&(i+=c.toString("utf8"))});let a=setTimeout(()=>s.kill("SIGTERM"),10*6e4);s.on("error",()=>{clearTimeout(a),n({code:127,stdout:""})}),s.on("close",c=>{clearTimeout(a),n({code:c??1,stdout:o,stderr:i})})})}function el(t){return{latest:t,run:Qu,npmVersion:e=>{try{let r=JSON.parse(Ao(te(e,"@tokmizer","plugin","package.json"),"utf8")).version;return typeof r=="string"?r:void 0}catch{return}},writable:e=>{try{return Zu(e,Hu.W_OK),!0}catch{return!1}},codexInstalled:()=>Dt(process.env.CODEX_HOME||te(Gu.homedir(),".codex")),ensureCodexHook:async e=>{let{ensureCodexHook:r,codexHookCommand:n}=await Promise.resolve().then(()=>(_n(),ko)),s=te(e,"@tokmizer","plugin","dist","bin","tkr-codex-hook.js"),o=n(process.env.PATH??"",s);return o.startsWith("node ")&&!Dt(s)?"error":r(o)}}}function tl(){let t=Ku(new URL(".",import.meta.url));for(let e of[te(t),te(t,"..")])if(Dt(te(e,"bin","tkr.js")))return e;return null}function rl(){try{if(!En())return;let t=tl();if(!t||!Ro())return;let e=Eo(process.execPath,[te(t,"bin","tkr.js"),"self-update"],{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,TOKMIZER_SELF_UPDATE_CHILD:"1"}});e.on("error",()=>{}),e.unref()}catch{}}var vo,Ju,Yu,_o,xn,xo,So,hr=S(()=>{"use strict";I();ct();wn();vo=/^\d+\.\d+\.\d+$/,Ju=6*36e5,Yu="0.9.34",_o=64*1024,xn=()=>te(y(),"auto-update-off"),xo=()=>te(y(),"self-update-last"),So=()=>te(y(),"codex-hook-offered")});function Nt(t){let e=t;for(let[r,n]of nl)e=e.replace(r,n);return e}var nl,Tn=S(()=>{"use strict";nl=[[/(authorization\s*:\s*)([A-Za-z][A-Za-z0-9._-]*)\s+[^\s'"]+/gi,"$1$2 [REDACTED]"],[/(authorization\s*:\s*)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/(bearer\s+)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-b|--cookie)[=\s]+['"]?)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/(--?(?:password|passwd|passphrase|apipass|pass|pwd|token|api[-_]?key|secret|bearer|cookie|jwt)(?:-[a-z0-9]+)*[=\s]+)\S+/gi,"$1[REDACTED]"],[/((?:^|\s)-b[=\s]?['"]?)[^\s'"=]+=[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*:)(\/[^/\s'"][^\s'"]*|[^\s/'"0-9][^\s'"]*|[0-9][^\s'"]*[^\s'"0-9][^\s'"]*)/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*[^\s:/'"0-9][^\s:/'"]*:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:[A-Za-z0-9]+-){0,8}(?:X-Api-Key|Private-Token|[A-Za-z0-9]+-(?:Token|Key|Auth|Secret))\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/(-i\s+)(\/[^\s]+|~\/[^\s]+|[A-Z]:\\[^\s]+)/g,"$1[REDACTED]"],[/([a-zA-Z][a-zA-Z0-9+.-]{0,31}:\/\/[^:/\s@]*:)[^\s@]+(@[^@/\s]+)/g,"$1[REDACTED]$2"],[/(AWS_(?:ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(GOOGLE_APPLICATION_CREDENTIALS\s*=\s*)\S+/g,"$1[REDACTED]"],[/(AZURE_(?:CLIENT_SECRET|TENANT_ID|CLIENT_ID)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-(?:proj-)?[A-Za-z0-9_-]{20,})/g,"sk-[REDACTED]"],[/\b(OPENAI_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(ANTHROPIC_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-ant-[A-Za-z0-9_-]{20,})/g,"sk-ant-[REDACTED]"],[/\b(GH(?:_|ITHUB_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(GITLAB_TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(SLACK_(?:BOT_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/(xox[bpsoa]-[A-Za-z0-9-]{10,})/g,"xox[REDACTED]"],[/(xapp-[A-Za-z0-9-]{10,})/g,"[REDACTED]"],[/(sk_(?:test|live)_[A-Za-z0-9]{16,})/g,"sk_[REDACTED]"],[/(gh[a-z])_[A-Za-z0-9]{20,}/g,"$1_[REDACTED]"],[/(github_pat)_[A-Za-z0-9_]{20,}/g,"$1_[REDACTED]"],[/(gl(?:pat|rt|soat|imt|dt|ft|agent|oas|cbt|ptt))-[A-Za-z0-9_-]{16,}/g,"$1-[REDACTED]"],[/(npm_[A-Za-z0-9_-]{20,})/g,"npm_[REDACTED]"],[/(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16,}/g,"[REDACTED_AWS_KEY]"],[/AIza[A-Za-z0-9_-]{35}/g,"[REDACTED_GOOGLE_KEY]"],[/hv[sb]\.[A-Za-z0-9_-]{20,}/g,"[REDACTED_VAULT_TOKEN]"],[/dop_v1_[A-Za-z0-9]{40,}/g,"[REDACTED]"],[/dckr_pat_[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/pypi-[A-Za-z0-9_-]{16,}/g,"[REDACTED]"],[/rk_(?:live|test)_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/whsec_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/(eyJ[A-Za-z0-9_-]{6,}(?:\.[A-Za-z0-9_-]{4,}){1,2})/g,"[REDACTED_JWT]"],[/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[\s\S]*?-----END[^\n]*-----|\r?\n[A-Za-z0-9+/=][A-Za-z0-9+/=\r\n]*)?/g,"[REDACTED_PEM]"],[/\b((?:--?)?[A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|AUTH|_PWD)[A-Za-z0-9_]*['"]?\s*=\s*)(?:"[^"]*"|'[^']*'|[^"'\s]\S*)/gi,"$1[REDACTED]"],[/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|_PWD)[A-Za-z0-9_]*['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/((?:^|[\s'"{,])['"]?(?:[A-Za-z0-9_]+_)?auth['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/(\bpwd\s*[=:]\s*)(?:"[^"]*"|'[^']*'|[^/~\s][^\s;'"]*)/gi,"$1[REDACTED]"],[/([=:]\s*["']?)[A-Za-z0-9_\-+/=]{40,}/g,"$1[REDACTED]"]]});import{join as yr}from"node:path";import{appendFileSync as $o,chmodSync as sl,existsSync as Mt,mkdirSync as Cn,readFileSync as On,renameSync as $n,rmdirSync as Po,statSync as In,unlinkSync as ht,utimesSync as ol,writeFileSync as Dn}from"node:fs";function Nn(t){return yr(Ft(),`${t}.lock`)}function al(t){let e=Nn(t);try{return Cn(Ft(),{recursive:!0,mode:448}),Cn(e),!0}catch{try{Date.now()-In(e).mtimeMs>il&&Po(e)}catch{return!1}return!1}}function cl(t){try{ol(Nn(t),new Date,new Date)}catch{return}}function ul(t){try{Po(Nn(t))}catch{return}}function Ft(){return yr(y(),"spool")}function gr(t){return yr(Ft(),`${t}.jsonl`)}function wr(t){return yr(Ft(),`${t}.pending.jsonl`)}function br(t,e){try{Cn(Ft(),{recursive:!0,mode:448});let r=gr(t);if(Mt(r)&&In(r).size>=Pn)return;$o(r,JSON.stringify(e)+`
15
- `,{mode:384}),sl(r,384)}catch{return}}function Co(t,e){$o(t,On(e,"utf8"),{mode:384}),Dn(e,"",{mode:384});try{ht(e)}catch{return}}function ll(t){if(In(t).size<=Pn)return;let e=On(t,"utf8").split(`
16
- `).filter(s=>s.trim()),r=0,n=[];for(let s=e.length-1;s>=0;s--){let o=e[s]??"";if(r+=Buffer.byteLength(o,"utf8")+1,r>Pn)break;n.unshift(o)}Dn(t,n.length?n.join(`
13
+ `:"",{mode:384}),ow(i,e)}catch{}}var hi=g(()=>{"use strict"});import{readFile as cw,writeFile as lw,rename as uw,mkdir as dw,copyFile as fw}from"node:fs/promises";import{existsSync as ki,accessSync as pw,constants as mw}from"node:fs";import{join as Tu}from"node:path";function M(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}async function K(e){if(!ki(e))return{};try{let t=JSON.parse(await cw(e,"utf8"));return M(t)?t:null}catch{return null}}async function W(e,t){try{await dw(Tu(e,".."),{recursive:!0});let n=`${e}.tkr-bak`;ki(e)&&!ki(n)&&await fw(e,n);let r=`${e}.tmp-${process.pid}`;return await lw(r,`${JSON.stringify(t,null,2)}
14
+ `),await uw(r,e),!0}catch{return!1}}function gi(e){return`'${e.replace(/'/g,"'\\''")}'`}function He(e,t,n){let r=Ce()?xn(n):null;if(r)return[gi(_n(t)),...r].join(" ");if(process.platform!=="win32")for(let s of t.split(":")){if(!s||s.includes("node_modules"))continue;let o=Tu(s,e);try{return pw(o,mw.X_OK),gi(o)}catch{}}return`node ${gi(n)}`}var dt=g(()=>{"use strict";ds();We()});var Cu={};Z(Cu,{codexHookCommand:()=>wi,codexHookInstalled:()=>ir,codexHooksFile:()=>$n,ensureCodexHook:()=>yi});import{readFileSync as hw}from"node:fs";import{join as $u}from"node:path";import gw from"node:os";function $n(){return $u(process.env.CODEX_HOME||$u(gw.homedir(),".codex"),"hooks.json")}function Au(e){return(e.hooks??[]).find(t=>typeof t.command=="string"&&t.command.includes(Ru))}function ir(){try{return(JSON.parse(hw($n(),"utf8")).hooks?.PreToolUse??[]).some(t=>Au(t)!=null)}catch{return!1}}async function yi(e){let t=$n(),n=await K(t);if(!n)return"error";let r=n.hooks&&typeof n.hooks=="object"?n.hooks:{},s=Array.isArray(r.PreToolUse)?r.PreToolUse:[],o="added",i=s.map(Au).find(a=>a!=null);if(i){if(i.command===e)return"present";i.command=e,o="updated"}else s.push({matcher:"Bash",hooks:[{type:"command",command:e,timeout:10}]});return r.PreToolUse=s,n.hooks=r,await W(t,n)?o:"error"}function wi(e,t){return He(Ru,e,t)}var Ru,ms=g(()=>{"use strict";dt();Ru="tkr-codex-hook"});var hs={};Z(hs,{autoUpdateEnabled:()=>xi,claimSelfUpdateSlot:()=>ju,defaultDeps:()=>Aw,maybeSpawnSelfUpdate:()=>Ow,selfUpdate:()=>$w,setAutoUpdate:()=>Ew});import{spawn as Du}from"node:child_process";import{accessSync as kw,constants as yw,existsSync as ar,mkdirSync as Mu,readFileSync as Fu,rmSync as ww,writeFileSync as vi,appendFileSync as bw}from"node:fs";import{fileURLToPath as vw}from"node:url";import{join as Oe}from"node:path";import xw from"node:os";function xi(){return process.env.TOKMIZER_AUTO_UPDATE==="0"?!1:!ar(bi())}function Ew(e){if(e){ww(bi(),{force:!0});return}Mu(w(),{recursive:!0,mode:448}),vi(bi(),String(Date.now()))}function ju(e=Date.now()){try{let t=Number(Fu(Pu(),"utf8"));if(Number.isFinite(t)&&e-t<Sw)return!1}catch{}try{Mu(w(),{recursive:!0,mode:448}),vi(Pu(),String(e))}catch{return!1}return!0}function Tw(e){try{let t=Oe(w(),"self-update.log");bw(t,`${new Date().toISOString()} ${e}
15
+ `,{mode:384}),ps(t,Iu,Iu/2)}catch{}}async function $w(e){if(!xi())return["disabled"];if(!D())return["network off"];let t=e.latest;if(!t||!Ou.test(t))return["no-version"];let n=[],r=[],s=(await e.run("npm",["root","-g"]).catch(()=>({code:1,stdout:""}))).stdout.trim(),o=s?e.npmVersion(s):void 0;if(o)if(!ct(o,t))r.push(o);else if(!e.writable(s))n.push("npm needs permission");else{let a=await e.run("npm",["i","-g",`@tokmizer/plugin@${t}`,"--no-audit","--no-fund"]).catch(()=>({code:1,stdout:""})),c=e.npmVersion(s);a.code===0&&c===t?(n.push(`npm ${o} -> ${t}`),r.push(t)):n.push(`npm failed (${o})`)}if(process.platform!=="win32"){let a=await e.run("brew",["list","--versions","tokmizer"]).catch(()=>({code:1,stdout:""})),c=a.code===0?a.stdout.trim().split(/\s+/)[1]:void 0;if(c&&Ou.test(c))if(!ct(c,t))r.push(c);else{let l=await e.run("brew",["upgrade","tokmizer"],{...process.env,HOMEBREW_NO_INSTALL_CLEANUP:"1"}).catch(()=>({code:1,stdout:""}));l.code===0?(n.push(`brew ${c} -> ${t}`),r.push(t)):/untrusted tap/i.test(l.stderr??"")?n.push("brew tap not trusted: run brew trust norwelltw/tokmizer"):n.push(`brew failed (${c})`)}}if(n.some(a=>a.includes("->"))&&await e.run("tkr",["shims-refresh"]).catch(()=>({code:1,stdout:""})),r.some(a=>!ct(a,_w))&&e.codexInstalled()&&!ar(Nu())){let a=await e.ensureCodexHook(s).catch(()=>"error");if(a!=="error"){try{vi(Nu(),String(Date.now()))}catch{}n.push(`codex hook ${a}`)}}for(let a of n)Tw(a);return n}function Rw(e,t,n){return new Promise(r=>{let s=Du(e,t,{env:n??process.env,shell:process.platform==="win32",stdio:["ignore","pipe","pipe"],windowsHide:!0}),o="",i="";s.stdout?.on("data",c=>{o+=c.toString("utf8")}),s.stderr?.on("data",c=>{i.length<8192&&(i+=c.toString("utf8"))});let a=setTimeout(()=>s.kill("SIGTERM"),10*6e4);s.on("error",()=>{clearTimeout(a),r({code:127,stdout:""})}),s.on("close",c=>{clearTimeout(a),r({code:c??1,stdout:o,stderr:i})})})}function Aw(e){return{latest:e,run:Rw,npmVersion:t=>{try{let n=JSON.parse(Fu(Oe(t,"@tokmizer","plugin","package.json"),"utf8")).version;return typeof n=="string"?n:void 0}catch{return}},writable:t=>{try{return kw(t,yw.W_OK),!0}catch{return!1}},codexInstalled:()=>ar(process.env.CODEX_HOME||Oe(xw.homedir(),".codex")),ensureCodexHook:async t=>{let{ensureCodexHook:n,codexHookCommand:r}=await Promise.resolve().then(()=>(ms(),Cu)),s=Oe(t,"@tokmizer","plugin","dist","bin","tkr-codex-hook.js"),o=r(process.env.PATH??"",s);return o.startsWith("node ")&&!ar(s)?"error":n(o)}}}function Cw(){let e=vw(new URL(".",import.meta.url));for(let t of[Oe(e),Oe(e,"..")])if(ar(Oe(t,"bin","tkr.js")))return t;return null}function Ow(){try{if(!xi()||!D())return;let e=Cw();if(!e||!ju())return;let[t,...n]=Sn(Oe(e,"bin","tkr.js")),r=Du(t,[...n,"self-update"],{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,TOKMIZER_SELF_UPDATE_CHILD:"1"}});r.on("error",()=>{}),r.unref()}catch{}}var Ou,Sw,_w,Iu,bi,Pu,Nu,gs=g(()=>{"use strict";z();Dt();hi();We();Ke();Ou=/^\d+\.\d+\.\d+$/,Sw=6*36e5,_w="0.9.34",Iu=64*1024,bi=()=>Oe(w(),"auto-update-off"),Pu=()=>Oe(w(),"self-update-last"),Nu=()=>Oe(w(),"codex-hook-offered")});function cr(e){let t=e;for(let[n,r]of Iw)t=t.replace(n,r);return t}var Iw,Si=g(()=>{"use strict";Iw=[[/(authorization\s*:\s*)([A-Za-z][A-Za-z0-9._-]*)\s+[^\s'"]+/gi,"$1$2 [REDACTED]"],[/(authorization\s*:\s*)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/(bearer\s+)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-b|--cookie)[=\s]+['"]?)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/(--?(?:password|passwd|passphrase|apipass|pass|pwd|token|api[-_]?key|secret|bearer|cookie|jwt)(?:-[a-z0-9]+)*[=\s]+)\S+/gi,"$1[REDACTED]"],[/((?:^|\s)-b[=\s]?['"]?)[^\s'"=]+=[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*:)(\/[^/\s'"][^\s'"]*|[^\s/'"0-9][^\s'"]*|[0-9][^\s'"]*[^\s'"0-9][^\s'"]*)/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*[^\s:/'"0-9][^\s:/'"]*:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:[A-Za-z0-9]+-){0,8}(?:X-Api-Key|Private-Token|[A-Za-z0-9]+-(?:Token|Key|Auth|Secret))\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/(-i\s+)(\/[^\s]+|~\/[^\s]+|[A-Z]:\\[^\s]+)/g,"$1[REDACTED]"],[/([a-zA-Z][a-zA-Z0-9+.-]{0,31}:\/\/[^:/\s@]*:)[^\s@]+(@[^@/\s]+)/g,"$1[REDACTED]$2"],[/(AWS_(?:ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(GOOGLE_APPLICATION_CREDENTIALS\s*=\s*)\S+/g,"$1[REDACTED]"],[/(AZURE_(?:CLIENT_SECRET|TENANT_ID|CLIENT_ID)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-(?:proj-)?[A-Za-z0-9_-]{20,})/g,"sk-[REDACTED]"],[/\b(OPENAI_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(ANTHROPIC_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-ant-[A-Za-z0-9_-]{20,})/g,"sk-ant-[REDACTED]"],[/\b(GH(?:_|ITHUB_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(GITLAB_TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(SLACK_(?:BOT_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/(xox[bpsoa]-[A-Za-z0-9-]{10,})/g,"xox[REDACTED]"],[/(xapp-[A-Za-z0-9-]{10,})/g,"[REDACTED]"],[/(sk_(?:test|live)_[A-Za-z0-9]{16,})/g,"sk_[REDACTED]"],[/(gh[a-z])_[A-Za-z0-9]{20,}/g,"$1_[REDACTED]"],[/(github_pat)_[A-Za-z0-9_]{20,}/g,"$1_[REDACTED]"],[/(gl(?:pat|rt|soat|imt|dt|ft|agent|oas|cbt|ptt))-[A-Za-z0-9_-]{16,}/g,"$1-[REDACTED]"],[/(npm_[A-Za-z0-9_-]{20,})/g,"npm_[REDACTED]"],[/(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16,}/g,"[REDACTED_AWS_KEY]"],[/AIza[A-Za-z0-9_-]{35}/g,"[REDACTED_GOOGLE_KEY]"],[/hv[sb]\.[A-Za-z0-9_-]{20,}/g,"[REDACTED_VAULT_TOKEN]"],[/dop_v1_[A-Za-z0-9]{40,}/g,"[REDACTED]"],[/dckr_pat_[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/pypi-[A-Za-z0-9_-]{16,}/g,"[REDACTED]"],[/rk_(?:live|test)_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/whsec_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/(eyJ[A-Za-z0-9_-]{6,}(?:\.[A-Za-z0-9_-]{4,}){1,2})/g,"[REDACTED_JWT]"],[/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[\s\S]*?-----END[^\n]*-----|\r?\n[A-Za-z0-9+/=][A-Za-z0-9+/=\r\n]*)?/g,"[REDACTED_PEM]"],[/\b((?:--?)?[A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|AUTH|_PWD)[A-Za-z0-9_]*['"]?\s*=\s*)(?:"[^"]*"|'[^']*'|[^"'\s]\S*)/gi,"$1[REDACTED]"],[/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|_PWD)[A-Za-z0-9_]*['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/((?:^|[\s'"{,])['"]?(?:[A-Za-z0-9_]+_)?auth['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/(\bpwd\s*[=:]\s*)(?:"[^"]*"|'[^']*'|[^/~\s][^\s;'"]*)/gi,"$1[REDACTED]"],[/([=:]\s*["']?)[A-Za-z0-9_\-+/=]{40,}/g,"$1[REDACTED]"]]});import{existsSync as _i,mkdirSync as Pw,writeFileSync as Nw}from"node:fs";import{join as Hu}from"node:path";function jw(){return Hu(w(),Dw)}function ks(){return Hu(w(),Mw)}function Ti(e,t){if(_i(e))return!1;try{Pw(w(),{recursive:!0}),Nw(e,t,{mode:384})}catch{return!1}return!0}async function $i(){return(await J()).telemetryOptIn?null:Ti(jw(),String(Date.now()))?Fw:null}function Lu(){return _i(ks())}function Ri(){Ti(ks(),`${Q} ${Date.now()}`)}async function zu(){return!D()||_i(ks())||!(await J()).telemetryOptIn?null:Ti(ks(),`${Q} ${Date.now()}`)?Ei:null}var Dw,Mw,Fw,Ei,Ai=g(()=>{"use strict";z();Ht();Ke();Dt();Dw="telemetry-hint-shown",Mw="telemetry-notice-shown",Fw="Usage stats are off on this machine. If you turn them on, they share command names and token counts, never arguments or output. Turn them on with: tkr telemetry on",Ei="Tokmizer sends usage stats (command names and tokens saved, never content, files or arguments) to improve the product. No account or email needed. To turn off: tkr telemetry off (or tkr network off to cut all network access)."});import{join as ws}from"node:path";import{appendFileSync as Bu,chmodSync as Hw,existsSync as lr,mkdirSync as Ii,readFileSync as Di,renameSync as Pi,rmdirSync as Ju,statSync as Mi,unlinkSync as Rn,utimesSync as Lw,writeFileSync as Fi}from"node:fs";function ji(e){return ws(dr(),`${e}.lock`)}function Uw(e){let t=ji(e);try{return Ii(dr(),{recursive:!0,mode:448}),Ii(t),!0}catch{try{Date.now()-Mi(t).mtimeMs>zw&&Ju(t)}catch{return!1}return!1}}function Bw(e){try{Lw(ji(e),new Date,new Date)}catch{return}}function Jw(e){try{Ju(ji(e))}catch{return}}function dr(){return ws(w(),"spool")}function ys(e){return ws(dr(),`${e}.jsonl`)}function bs(e){return ws(dr(),`${e}.pending.jsonl`)}function vs(e,t){if(D())try{Ii(dr(),{recursive:!0,mode:448});let n=ys(e);if(lr(n)&&Mi(n).size>=Ni)return;Bu(n,JSON.stringify(t)+`
16
+ `,{mode:384}),Hw(n,384)}catch{return}}function Uu(e,t){Bu(e,Di(t,"utf8"),{mode:384}),Fi(t,"",{mode:384});try{Rn(t)}catch{return}}function Vw(e){if(Mi(e).size<=Ni)return;let t=Di(e,"utf8").split(`
17
+ `).filter(s=>s.trim()),n=0,r=[];for(let s=t.length-1;s>=0;s--){let o=t[s]??"";if(n+=Buffer.byteLength(o,"utf8")+1,n>Ni)break;r.unshift(o)}Fi(e,r.length?r.join(`
17
18
  `)+`
18
- `:"",{mode:384})}function dl(t){try{let e=wr(t),r=gr(t),n=`${r}.merging`;if(Mt(n)&&Co(e,n),Mt(e))Mt(r)&&($n(r,n),Co(e,n));else{if(!Mt(r))return[];$n(r,e)}ll(e);let s=[];for(let o of On(e,"utf8").split(`
19
- `))if(o.trim())try{s.push(JSON.parse(o))}catch{continue}return s.length===0?(ht(e),[]):s}catch{return[]}}function Oo(t){try{ht(wr(t))}catch{return}}function fl(t,e){if(e.length===0){Oo(t);return}let r=wr(t),n=`${r}.tmp`;Dn(n,e.map(s=>JSON.stringify(s)).join(`
19
+ `:"",{mode:384})}function Zw(e){try{let t=bs(e),n=ys(e),r=`${n}.merging`;if(lr(r)&&Uu(t,r),lr(t))lr(n)&&(Pi(n,r),Uu(t,r));else{if(!lr(n))return[];Pi(n,t)}Vw(t);let s=[];for(let o of Di(t,"utf8").split(`
20
+ `))if(o.trim())try{s.push(JSON.parse(o))}catch{continue}return s.length===0?(Rn(t),[]):s}catch{return[]}}function Vu(e){try{Rn(bs(e))}catch{return}}function Gw(e,t){if(t.length===0){Vu(e);return}let n=bs(e),r=`${n}.tmp`;Fi(r,t.map(s=>JSON.stringify(s)).join(`
20
21
  `)+`
21
- `,{mode:384}),$n(n,r)}async function kr(t,e,r={}){if(Rn.has(t)||!al(t))return"fail";Rn.add(t);try{if(!(await z()).telemetryOptIn)return Lt(t),"empty";let n=dl(t);if(n.length===0)return"empty";let s=await T();if(!s)return"fail";if(r.requirePro&&s.plan!=="pro")return Oo(t),"ok";let o=r.baseUrl??process.env.TOKMIZER_BASE_URL??"https://tokmizer.com",i=await X();for(let a=0;a<n.length;a+=An){if(!(await z()).telemetryOptIn)return Lt(t),"empty";cl(t);let c=await j("POST",e,{events:n.slice(a,a+An)},{baseUrl:o,bearer:s.jwt,signingSecret:s.signingSecret,fingerprint:i.fingerprint,installId:i.installId});if(!c.ok)return c.status===401||c.status===403?"auth":"fail";fl(t,n.slice(a+An))}return"ok"}catch{return"fail"}finally{Rn.delete(t),ul(t)}}function Lt(t){try{ht(gr(t))}catch{}try{ht(`${gr(t)}.merging`)}catch{}try{ht(wr(t))}catch{return}}var Pn,An,il,Rn,vr=S(()=>{"use strict";I();fe();He();Be();Pt();Pn=512*1024,An=100,il=12e4,Rn=new Set});var Do={};Q(Do,{commandName:()=>_r,flushTelemetry:()=>kl,recordTelemetry:()=>Mn});function Io(t){let e=t.toLowerCase();return e.startsWith("git")||gl.has(e)}function _r(t){let e=t.trim().split(/\s+/).filter(a=>a.length>0),r=0;for(;r<e.length&&hl.test(e[r]??"");)r+=1;let n=e[r];if(!n||!ml.test(n)||n.length>wl||Io(n)||yl.test(n)||Nt(n)!==n)return"";let s=e[r+1];return s&&Io(s)?"":(s&&bl.has(n.toLowerCase())&&pl.test(s)?`${n} ${s}`:n).slice(0,64)}async function Mn(t){if(!t.telemetryOptIn)return;let e=_r(t.cmd),r=e&&Nt(e)===e?e:"other",n=t.sessionId?t.sessionId.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64):"";br("telemetry",{cmd:r,tokensSaved:Math.max(0,Math.round(t.tokensSaved)),...t.tokensRestored?{tokensRestored:Math.max(0,Math.round(t.tokensRestored))}:{},...t.rawTokens!=null?{rawTokens:Math.max(0,Math.round(t.rawTokens))}:{},optimized:t.optimized,...n?{sessionId:n}:{},...t.host?{host:t.host}:{}})}async function kl(t){return kr("telemetry","/api/v1/telemetry",{baseUrl:t})}var ml,pl,hl,gl,yl,wl,bl,xr=S(()=>{"use strict";Tn();vr();ml=/^[a-z0-9][a-z0-9._-]*$/i,pl=/^[a-z][a-z-]+$/,hl=/^[A-Za-z_][A-Za-z0-9_]*=/,gl=new Set(["gh","glab","gup","hub","gist"]),yl=/^(gh[a-z]_|github_pat_|gl(?:pat|rt|soat|imt|dt|ft|agent|oas)-|npm_|xox|sk-|sk_|eyj|a(?:kia|sia|gpa|ida|roa|npa)|aiza|hv[sb]\.)/i,wl=24,bl=new Set(["docker","podman","npm","pnpm","yarn","npx","bun","deno","cargo","rustup","go","pip","pip3","uv","poetry","brew","apt","apt-get","dnf","yum","pacman","kubectl","helm","terraform","aws","gcloud","az","systemctl","composer","bundle","gem","dotnet","prisma","tkr","rtk","token"])});var No={};Q(No,{flush:()=>_l,recordEvent:()=>vl});async function vl(t){if(t.plan!=="pro"||!(await z()).telemetryOptIn)return;let e=_r(t.cmd);!e||Nt(e)!==e||br("learn",{cmd:e,filterId:t.filterId==null?null:ke(t.filterId),rawBytes:t.rawBytes,filteredBytes:t.filteredBytes})}async function _l(t){return kr("learn","/api/v1/learn",{baseUrl:t,requirePro:!0})}var Mo=S(()=>{"use strict";xr();Tn();vr();vt();Pt()});function Bn(t){return Zn.filter(e=>Hn.has(e.host)===t).flatMap(e=>e.vars)}function Rr(t=process.env){let e=process.platform,r=e==="darwin"||e==="linux"||e==="win32"?e:"other",n=process.arch;for(let s of Zn)if(s.vars.some(o=>t[o]))return{host:s.host,source:"env",os:r,arch:n,shimRecommended:!Hn.has(s.host)};return{host:"shell",source:"fallback",os:r,arch:n,shimRecommended:!0}}function Bo(t){return Hn.has(t)?"native-hooks":"shell-shim"}var Zn,Zp,Hn,Vn=S(()=>{"use strict";Zn=[{host:"claude-code",vars:["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE","CLAUDE_CODE_VERSION","ANTHROPIC_CLAUDE_CODE"]},{host:"codex",vars:["CODEX_VERSION","CODEX_CLI","OPENAI_CODEX","CODEX_THREAD_ID","CODEX_SESSION_ID"]},{host:"cursor",vars:["CURSOR_VERSION","CURSOR_TRACE_ID"]},{host:"cline",vars:["CLINE_VERSION","CLINE_API_KEY"]},{host:"aider",vars:["AIDER_VERSION","AIDER_MODEL"]},{host:"gemini-cli",vars:["GEMINI_CLI_VERSION","GEMINI_API_KEY"]},{host:"windsurf",vars:["WINDSURF_VERSION","WINDSURF_USER"]},{host:"copilot",vars:["GITHUB_COPILOT_VERSION","COPILOT_INTEGRATION_ID"]}],Zp=[...Zn.map(t=>t.host),"shell"],Hn=new Set(["claude-code","codex"])});var Xo={};Q(Xo,{ensurePathInRc:()=>Zt,ensureShimPath:()=>Dr,envWithoutShimDir:()=>Zl,installShims:()=>Je,listShimmableCommands:()=>Hl,powershellProfilePath:()=>qo,powershellProfileSnippet:()=>Wo,refreshShimsIfStale:()=>Bl,refreshStaleShims:()=>Jo,resolveShimJsPath:()=>ae,shellRcLine:()=>pe,shimsDir:()=>D,shimsInstalled:()=>Ht,uninstallShims:()=>Jn,unixWrapperScript:()=>Or,windowsWrapperScript:()=>Yo});import{mkdir as Kn,writeFile as Ut,readFile as $r,unlink as Gn,chmod as Go,rename as jl}from"node:fs/promises";import{existsSync as Ge}from"node:fs";import{delimiter as Vo,join as M,dirname as Cr}from"node:path";import{fileURLToPath as zl}from"node:url";import{execFileSync as Ul}from"node:child_process";import V from"node:os";function D(){return M(y(),"shims")}function Zl(){let t=D(),e={...process.env},r=process.platform==="win32"?"Path":"PATH",s=(e[r]??e.PATH??"").split(Vo).filter(o=>o&&o!==t);return e[r]=s.join(Vo),r==="Path"&&(e.PATH=e[r]),e}function Ht(){try{let t=V.platform()==="win32";return Ge(M(D(),t?"git.cmd":"git"))}catch{return!1}}function Hl(){return[...Pr]}function zt(t){return`'${t.replace(/'/g,"'\\''")}'`}function Ko(t){return`"${t.map(e=>`\${${e}:-}`).join("")}"`}function Or(t,e){return["#!/bin/sh",`if [ -n ${Ko(Bn(!0))} ] || { [ -z ${Ko(Bn(!1))} ] && [ ! -t 1 ]; }; then`," set -f",` _tk_d=${zt(D())}`,` _tk_c=${zt(e)}`," _tk_o=$IFS; IFS=:; _tk_p=; _tk_x="," for _tk_e in $PATH; do",' [ -n "$_tk_e" ] || continue',' [ "$_tk_e" -ef "$_tk_d" ] && continue'," _tk_p=${_tk_p:+$_tk_p:}$_tk_e",' [ -z "$_tk_x" ] && [ -f "$_tk_e/$_tk_c" ] && [ -x "$_tk_e/$_tk_c" ] && _tk_x=$_tk_e/$_tk_c'," done"," IFS=$_tk_o; PATH=$_tk_p; export PATH; set +f",' [ -n "$_tk_x" ] || { echo "$_tk_c: command not found" >&2; exit 127; }',' exec "$_tk_x" "$@"',"fi",`exec node ${zt(t)} --as ${zt(e)} "$@"`,""].join(`
22
- `)}async function Bl(t,e){if(V.platform()==="win32")return 0;try{if(await $r(M(D(),e),"utf8")===Or(t,e))return 0}catch{return 0}return Jo(t)}async function Jo(t){if(V.platform()==="win32")return 0;let e=D();if(!Ge(e))return 0;let r=0;for(let n of Pr){let s=M(e,n),o=Or(t,n),i;try{i=await $r(s,"utf8")}catch{continue}if(i===o)continue;let a=`${s}.${process.pid}.tmp`;try{await Ut(a,o,{mode:493}),await Go(a,493),await jl(a,s),r+=1}catch{try{await Gn(a)}catch{}}}return r}function Yo(t,e){return["@echo off",`node "${t}" --as "${e}" %*`,""].join(`\r
23
- `)}async function Je(t){let e=D();await Kn(e,{recursive:!0,mode:448});let r=[],n=V.platform()==="win32";for(let s of Pr){let o=n?M(e,`${s}.cmd`):M(e,s);if(Ge(o))try{await Gn(o)}catch{}n?await Ut(o,Yo(t,s)):(await Ut(o,Or(t,s),{mode:493}),await Go(o,493)),r.push(s)}return r}async function Jn(){let t=D();if(!Ge(t))return 0;let e=0,r=V.platform()==="win32";for(let n of Pr){let s=r?M(t,`${n}.cmd`):M(t,n);try{await Gn(s),e+=1}catch{}}return e}function pe(t=!1){let e=t?`'${D().replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`:zt(D());return`${Ir}
24
- ${t?`set -gx PATH ${e} $PATH`:`export PATH=${e}:"$PATH"`}
25
- `}async function Zt(t,e=!1){try{await Kn(Cr(t),{recursive:!0});let r=Ge(t)?await $r(t,"utf8"):"";return r.includes(Ir)?"present":(await Ut(t,`${r.replace(/\n*$/,`
22
+ `,{mode:384}),Pi(r,n)}async function xs(e,t,n={}){if(!D()||Oi.has(e)||!Uw(e))return"fail";Oi.add(e);try{if(!(await J()).telemetryOptIn)return ur(e),"empty";if(!Lu())return"fail";let r=Zw(e);if(r.length===0)return"empty";let s=await N();if(!s)return"fail";if(n.requirePro&&s.plan!=="pro")return Vu(e),"ok";let o=n.baseUrl??process.env.TOKMIZER_BASE_URL??"https://tokmizer.com",i=await Se();for(let a=0;a<r.length;a+=Ci){if(!(await J()).telemetryOptIn)return ur(e),"empty";Bw(e);let c=await le("POST",t,{events:r.slice(a,a+Ci),...n.consent?{consent:!0}:{}},{baseUrl:o,bearer:s.jwt,signingSecret:s.signingSecret,fingerprint:i.fingerprint,installId:i.installId});if(!c.ok)return c.status===401||c.status===403?"auth":"fail";Gw(e,r.slice(a+Ci))}return"ok"}catch{return"fail"}finally{Oi.delete(e),Jw(e)}}function ur(e){try{Rn(ys(e))}catch{}try{Rn(`${ys(e)}.merging`)}catch{}try{Rn(bs(e))}catch{return}}var Ni,Ci,zw,Oi,Ss=g(()=>{"use strict";z();Ge();Nt();Ft();Ht();Ke();Ai();Ni=512*1024,Ci=100,zw=12e4,Oi=new Set});var Ku={};Z(Ku,{commandName:()=>_s,flushTelemetry:()=>ob,recordTelemetry:()=>Hi});function rb(e){if(!/[\\/]/.test(e))return e;let t=e.split(/[\\/]/).filter(r=>r.length>0).pop()??"",n=t.toLowerCase().endsWith(".exe")?t.slice(0,-4):t;return eb.has(n.toLowerCase())?n:""}function sb(e,t,n){let r=0;for(;e==="git"&&r<n.length&&n[r].startsWith("-");)r+=nb.has(n[r])?2:1;let s=(n[r]??"").toLowerCase();return t.has(s)?`${e} ${s}`:e}function Zu(e){let t=e.toLowerCase();return t.startsWith("git")||Yw.has(t)}function _s(e){let t=e.trim().split(/\s+/).filter(c=>c.length>0),n=0;for(;n<t.length&&qw.test(t[n]??"");)n+=1;let r=rb(t[n]??"");if(!r||!Kw.test(r)||r.length>Qw)return"";let s=tb.get(r.toLowerCase());if(s)return sb(r.toLowerCase(),s,t.slice(n+1));if(Zu(r)||Xw.test(r)||cr(r)!==r)return"";let o=t[n+1];return o&&Zu(o)?"":(o&&Gu.has(r.toLowerCase())&&Ww.test(o)?`${r} ${o}`:r).slice(0,64)}async function Hi(e){if(!e.telemetryOptIn)return;let t=_s(e.cmd),n=t&&cr(t)===t?t:"other",r=e.sessionId?e.sessionId.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64):"";vs("telemetry",{cmd:n,tokensSaved:Math.max(0,Math.round(e.tokensSaved)),...e.tokensRestored?{tokensRestored:Math.max(0,Math.round(e.tokensRestored))}:{},...e.rawTokens!=null?{rawTokens:Math.max(0,Math.round(e.rawTokens))}:{},optimized:e.optimized,...r?{sessionId:r}:{},...e.host?{host:e.host}:{}})}async function ob(e){return xs("telemetry","/api/v1/telemetry",{baseUrl:e,consent:!0})}var Kw,Ww,qw,Yw,Xw,Qw,Gu,eb,tb,nb,Es=g(()=>{"use strict";Si();Ss();Kw=/^[a-z0-9][a-z0-9._-]*$/i,Ww=/^[a-z][a-z-]+$/,qw=/^[A-Za-z_][A-Za-z0-9_]*=/,Yw=new Set(["gh","glab","gup","hub","gist"]),Xw=/^(gh[a-z]_|github_pat_|gl(?:pat|rt|soat|imt|dt|ft|agent|oas)-|npm_|xox|sk-|sk_|eyj|a(?:kia|sia|gpa|ida|roa|npa)|aiza|hv[sb]\.)/i,Qw=24,Gu=new Set(["docker","podman","npm","pnpm","yarn","npx","bun","deno","cargo","rustup","go","pip","pip3","uv","poetry","brew","apt","apt-get","dnf","yum","pacman","kubectl","helm","terraform","aws","gcloud","az","systemctl","composer","bundle","gem","dotnet","prisma","tkr","rtk","token"]),eb=new Set([...Gu,"git","gh","node","python","python3","bash","sh","zsh","psql","mysql","sqlite3","java","ruby","perl","rg","fd","jq","make","gradle","mvn","vitest","jest","tsc","esbuild","vite","webpack","playwright","rails","rake"]),tb=new Map([["git",new Set(["status","diff","log","show","blame","ls-files","rev-parse","branch","fetch","pull","push","commit","checkout","switch","merge","rebase","stash","tag","remote","add","reset","restore","clean","grep"])],["gh",new Set(["pr","issue","run","repo","api"])]]),nb=new Set(["-C","-c"])});function Ts(e,t,n,r=t){let s=Wu.get(r);s||(s=new Map,Wu.set(r,s));let o=JSON.stringify([e,n?[...n].sort():null]),i=s.get(o);if(i!==void 0)return i;let a=null;for(let c of t)n&&!n.has(Re(c.slug))||c.matchRegex.test(e)&&(!a||c.priority>a.priority)&&(a=c);if(s.size>=ib){let c=s.keys().next().value;c&&s.delete(c)}return s.set(o,a),a}var Wu,ib,Li=g(()=>{"use strict";pn();Wu=new WeakMap,ib=256});function qu(e){return e.replace(ab,"").replace(cb,"")}var ab,cb,Yu=g(()=>{"use strict";ab=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,cb=/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g});function Xu(e,t){return t.length===0?e:e.filter(n=>!t.some(r=>r.test(n)))}var Qu=g(()=>{"use strict"});function ed(e,t){return e.map(n=>{if(n.length<=t)return n;let r=n.charCodeAt(t-1),s=n.charCodeAt(t),o=r>=55296&&r<=56319&&s>=56320&&s<=57343?t-1:t;return`${n.slice(0,o)}\u2026`})}var td=g(()=>{"use strict"});function $s(e){return`\u2026 (${e} more lines omitted)`}function nd(e,t){if(e.length<=t)return{kept:e,dropped:[]};let n=Math.ceil(t*.7),r=t-n,s=e.slice(n,e.length-r);return{kept:[...e.slice(0,n),$s(s.length),...e.slice(e.length-r)],dropped:s}}var rd=g(()=>{"use strict"});function sd(e,t){let n=t>0?t:5,r=[],s=0,o=a=>{s>=n?r.push(`\u2026 ${s} passing checks folded \u2026`):r.push(...a)},i=[];for(let a of e)lb.test(a)&&!ft.test(a)?(i.push(a),s+=1):(o(i),i=[],s=0,r.push(a));return o(i),r}var lb,ft,zi=g(()=>{"use strict";lb=/^\s*(?:[✓✔√]|ok )/,ft=/✕|✗|×|\bFAIL\b|\bERROR\b|\bFATAL\b|\bError|\berror|Expected|Received|\bfailed\b|^\s*Tests?:|^\s*Test Suites?:/});function od(e){return e.map(t=>t.replace(ub,n=>{let r=n.split("/").filter(Boolean);return r.length<=2?n:`\u2026/${r.slice(-2).join("/")}`}))}var ub,id=g(()=>{"use strict";ub=/(?:\/[\w.@+-]+){3,}/g});function hb(e){let t=pb.exec(e);return!t||mb.has(t[1])?!1:!/=>|\bfunction\b/.test(t[2])}function kb(e,t,n){let r=t;for(;r<e.length;){if(e[r]==="\\"){r+=2;continue}if(e[r]===n)return!0;r+=1}return!1}function yb(e,t){let n=0,r=null,s=0;for(;s<e.length;){let o=e[s];if(t.inBlockComment){if(o==="*"&&e[s+1]==="/"){t.inBlockComment=!1,s+=2;continue}s+=1;continue}if(t.inTemplate){if(o==="\\"){s+=2;continue}o==="`"&&(t.inTemplate=!1),s+=1;continue}if(r){if(o==="\\"){s+=2;continue}o===r&&(r=null),s+=1;continue}if(o==="/"&&e[s+1]==="/")break;if(o==="/"&&e[s+1]==="*"){t.inBlockComment=!0,s+=2;continue}if(o==="`"){t.inTemplate=!0,s+=1;continue}if(o==="'"||o==='"'){let i=s>0?e[s-1]:"";!(o==="'"&&(i==="<"||i==="&"))&&kb(e,s+1,o)&&(r=o),s+=1;continue}o==="{"||o==="("||o==="["?n+=1:(o==="}"||o===")"||o==="]")&&(n-=1),s+=1}return n}function bb(e,t,n){let r=n==null?"":` (${n}-${n+t-1}): Read offset=${n} limit=${t} before editing`;return`${e}\u2026 ${t} ${t===1?"line":"lines"} folded${r} \u2026`}function Ui(e){let t=new Array(e.length).fill(!1);for(let n=0;n<e.length;n+=1){let r=wb.exec(e[n]);if(!r)continue;let s=Number(r[1])-1,o=n+1;for(;s>0&&o<e.length&&e[o]==="";)t[o]=!0,s-=1,o+=1;n=o-1}return t}function fr(e,t=3,n=!1){let r=[],s=0;for(;s<e.length;){let o=e[s];if(db.test(o)&&fb.test(o)||hb(o)||gb.test(o)){let i={inBlockComment:!1,inTemplate:!1},a=0,c=s,l=!1;for(;c<e.length&&c-s<200;)if(a+=yb(e[c],i),c+=1,a<=0&&!i.inTemplate&&!i.inBlockComment){l=!0;break}let u=c-s;if(l&&u<t){r.push(...e.slice(s,c)),s=c;continue}if(l&&u>=3){let d=u-2,f=/^\s*/.exec(e[s+1]??"")?.[0]??" ";r.push(o),r.push(bb(f,d,n?s+2:null));for(let p=0;p<d-1;p++)r.push("");r.push(e[c-1]),s=c;continue}}r.push(o),s+=1}return r}function ad(e){let t=e.slice(0,4096);return!(!vb.test(t)||t.split(`
23
+ `).length<6)}var db,fb,pb,mb,gb,wb,vb,Bi=g(()=>{"use strict";db=/^(\s*)(?:export\s+)?(?:async\s+)?(?:function|interface|type|const|let|var|def|fn|impl|trait|struct|enum)\s+[\w$]+/,fb=/\{\s*$/,pb=/^\s*(?:(?:public|private|protected|static|async|get|set|readonly|override)\s+)*([\w$]+)\s*\(([^)]*)\)\s*(?::\s*[^{]+)?\{\s*$/,mb=new Set(["if","for","while","switch","catch","do","with","return","else","function","await","yield"]);gb=/^\s*(?:if|for|while|switch|try|do)\b[^{}]*\{\s*$/;wb=/^\s*… (\d+) lines? folded(?: \(\d+-\d+\): Read offset=\d+ limit=\d+ before editing)? …$/;vb=/\b(?:function|class|interface|import\s+|export\s+|def\s+|fn\s+|impl\s+|package\s+|namespace\s+|using\s+|#include|=>\s*\{|=\s*function)/});function cd(e){let t=[],n=0,r=()=>{n>0&&t.push(`\u2026 ${n} verbose log line${n===1?"":"s"} dropped \u2026`),n=0};for(let s of e){if(Sb.test(s.replace(xb,""))&&!_b.test(s)&&!Eb.test(s)){n+=1;continue}r(),t.push(s)}return r(),t}function ld(e){if(e.length===0)return e;let t=[],n=1,r=e[0];for(let s=1;s<e.length;s++){if(e[s]===r){n+=1;continue}t.push(n>1?`${r} \xD7${n}`:r),r=e[s],n=1}return t.push(n>1?`${r} \xD7${n}`:r),t}function ud(e){let t=[],n=0;for(let r of e){if(r.trim()===""){n+=1;continue}n>0&&t.push(""),n=0,t.push(r)}return t}var xb,Sb,_b,Eb,dd=g(()=>{"use strict";zi();xb=/^\s*(?:\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?|\d{2}:\d{2}:\d{2}(?:\.\d+)?)\s*/,Sb=/^\s*(?:\[(?:DEBUG|TRACE|INFO|VERBOSE)\]|(?:DEBUG|TRACE|INFO|VERBOSE)(?!\s*:))(?=\s|:|$)(?!\s*[+\-*\/%&|^?]*=)/,_b=new RegExp(ft.source,"i"),Eb=/\bWARN(?:ING)?\b/i});function ue(e,t){fd.set(e,t)}function pd(e){return fd.get(e)}var fd,qe=g(()=>{"use strict";fd=new Map});function Ob(e){if(e<1024)return String(e);let t=["K","M","G","T"],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(1)}${t[r]}`}function Ib(e){let t=/^(\d+(?:[.,]\d+)?)([KMGTPkmgtp])?/.exec(e),n=t[2]?Cb[t[2].toLowerCase()]:0;return Number(t[1].replace(",","."))*1024**n}function Pb(e){let t=Ab.exec(e);if(!t)return null;let n=t[2].trim();if(n===""||n==="."||n==="..")return null;let r=t[1],s=/^\d+$/.test(r)?Ob(Number(r)):r,o=e.charCodeAt(0)===100;return{name:n,size:s,sizeKey:Ib(r),isDir:o}}function Nb(e){if(e.length<3)return null;let t=new Map;for(let s of e){let o=s.name.lastIndexOf(".");if(o<=0)continue;let i=s.name.slice(o);t.set(i,(t.get(i)??0)+1)}let n=null,r=0;for(let[s,o]of t)o>r&&(r=o,n=s);return n&&r>=Math.ceil(e.length/2)?`${r} ${n}`:null}function Db(e){let t=[],n=[],r=!1;for(let d of e){if(d.trim()===""||/^total\s+\d+/.test(d))continue;if($b.test(d.trim())||!Tb.test(d))return e;let f=Pb(d);if(!f){if(/\s\.\.?$/.test(d))continue;return e}r=!0,(f.isDir?t:n).push(f)}if(!r)return e;let s=(d,f)=>d.name.localeCompare(f.name);t.sort(s),n.sort((d,f)=>f.sizeKey-d.sizeKey||s(d,f));let o=[...t,...n],i=[];for(let d of o){let f=d.isDir?`${d.name}/`:d.name;i.push(d.isDir?f:`${f} ${d.size}`)}if(i.length>Ji){let d=i.length-Ji;i=[...i.slice(0,Ji),`\u2026 ${d} more lines omitted`]}let a=n.length===1?"file":"files",c=t.length===1?"dir":"dirs",l=Nb(n),u=`${n.length} ${a}, ${t.length} ${c}`+(l?` (${l})`:"");return i.push(u),i}var Tb,$b,Rb,Ab,Cb,Ji,md=g(()=>{"use strict";qe();Tb=/^[dbclps\-][rwxsStT\-]{9}[@.+]?(?:\s|$)/,$b=/^[./~][^\s]*:$/,Rb=String.raw`(?:[^\s\d]{3,}\s+\d{1,2}|\d{1,2}\s+[^\s\d]{3,})\s+(?:\d{1,2}:\d{2}|\d{4})|\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:\s+[+-]\d{4})?`,Ab=new RegExp(String.raw`^\S+\s+\d+\s+\S+\s+(?:\S+\s+)?(\d+(?:[.,]\d+)?[KMGTPkmgtp]?i?B?)\s+(?:${Rb})\s+(.+)$`),Cb={k:1,m:2,g:3,t:4,p:5},Ji=1e3;ue("smart-ls",Db)});var hd=g(()=>{"use strict";Bi();qe();ue("smart-read",e=>fr(e))});function Mb(e){let t=e[0].split("/");for(let n of e.slice(1)){let r=n.split("/"),s=0;for(;s<t.length&&s<r.length&&t[s]===r[s];)s+=1;if(t=t.slice(0,s),t.length===0)break}return t.join("/")}function Fb(e){if(e.length<2||e.some(s=>s.startsWith('"')))return"";let t=e[0];for(let s of e.slice(1)){let o=0;for(;o<t.length&&o<s.length&&t[t.length-1-o]===s[s.length-1-o];)o+=1;if(t=t.slice(t.length-o),!t)return""}let n=t.indexOf("."),r=n<0?"":t.slice(n);return r.length>=3&&e.every(s=>s.length>r.length)?r:""}function jb(e){let t=e.filter(l=>l.trim()!=="");if(t.length===0||t.filter(l=>!/\s/.test(l.trim())).length<t.length*.6)return e;let r=new Map,s=[],o=0;for(let l of t){let u=l.trim();if(u.startsWith("find:")){s.push(u);continue}let d=u.replace(/^\.\//,"").replace(/\/+$/,""),f=d.lastIndexOf("/"),p=f>=0?d.slice(0,f):"",m=f>=0?d.slice(f+1):d;if(!m)continue;let v=r.get(p)??[];v.push(/\s/.test(m)?`"${m}"`:m),r.set(p,v),o+=1}if(o===0)return e;let i=[...r.keys()].sort(),a=i.every(l=>l!=="")?Mb(i):"",c=[`${o}F ${i.length}D${a?` in ${a}/`:""}:`];for(let l of i){let u=a?l.slice(a.length).replace(/^\//,""):l,d=r.get(l),f=Fb(d),p=f?d.map(m=>m.slice(0,-f.length)):d;c.push(`${u?`${u}/`:"./"} (${d.length}${f?`, *${f}`:""}): ${p.join(" ")}`)}if(c.length+s.length>gd){let l=Math.max(0,gd-s.length),u=c.length-l;return[...c.slice(0,l),`\u2026 ${u} more lines omitted`,...s]}return[...c,...s]}var gd,kd=g(()=>{"use strict";qe();gd=1e3;ue("smart-find",jb)});function bd(e){let t=e.trim();return t.length>yd?`${t.slice(0,yd)}\u2026`:t}function Jb(e){let t=[],n="";for(let r of e){let s=n?`${n}, ${r}`:r;s.length>=Lb&&n?(t.push(`${n},`),n=r):n=s}return n&&t.push(n),t}function Vb(e){let t=null;for(let n of e){let r=n.split("/").slice(0,-1);if(t===null){t=r;continue}let s=0;for(;s<t.length&&s<r.length&&t[s]===r[s];)s+=1;if(t=t.slice(0,s),t.length===0)return""}return t?t.join("/"):""}function Zb(e){let t=e.filter(p=>p.trim()!=="");if(t.length===0)return e;let n=new Map,r=new Map,s=null,o=0,i=0;for(let p of t){if(p==="--"){s&&n.get(s).push({separator:!0});continue}if(/^[A-Za-z]:[\\/]/.test(p))return e;let m=zb.exec(p),v=Ub.exec(p);if(m&&v)return e;let S=m||v?null:Bb.exec(p),$=(m??v??S)?.[1];if(!$)return e;let I=m?{line:m[2],content:m[3],context:!1}:v?{line:v[2],content:v[3],context:!0}:{line:"",content:S[2],context:!1},H=n.get($)??[];H.push(I),n.set($,H),I.context||(o+=1,r.set($,(r.get($)??0)+1)),i+=1,s=$}if(n.size===i)return e;let a=[...n.keys()].sort((p,m)=>{let v=wd.test(p)?1:0,S=wd.test(m)?1:0;return v-S||(p<m?-1:p>m?1:0)}),c=a.length>1?Vb(a):"",l=p=>c?p.slice(c.length+1):p,u=[];for(let p of a){u.push(`${l(p)} (${r.get(p)??0}):`);for(let m of n.get(p))"separator"in m?u.push(" --"):m.line?u.push(` ${m.line}${m.context?"-":":"} ${bd(m.content)}`):u.push(` ${bd(m.content)}`)}let d=a.length>1&&u.length>Hb?Jb(a.map(p=>`${l(p)} (${r.get(p)??0})`)):[],f=[`${o}m ${a.length}f${c?` in ${c}/`:""}:`,...d,"",...u];if(f.length>Vi){let p=f.length-Vi;return[...f.slice(0,Vi),`\u2026 ${p} more lines omitted`]}return f}var Vi,yd,Hb,Lb,zb,Ub,Bb,wd,vd=g(()=>{"use strict";qe();Vi=1e3,yd=200,Hb=60,Lb=190,zb=/^([^\s:]+):(\d+):(.*)$/,Ub=/^([^:]+?)-(\d+)-(.*)$/,Bb=/^([^\s:]+):(.*)$/,wd=/(?:^|\/)(?:__tests__|tests?|spec|fixtures?|__mocks__|__snapshots__)\/|\.(?:test|spec)\.[^/]+$/i;ue("smart-grep",Zb)});function qb(e){if(!e.some(l=>xd.test(l)))return e;let t=[],n=0,r=0,s=0,o="",i=!1,a=!1,c=()=>{r>0&&t.push(`${o} \u2026 ${r} ${r===1?"line":"lines"} folded \u2026`),r=0};for(let l of e){let u=l.slice(0,s),d=Gb.test(u),f=d?l.slice(s):l,p=Kb.test(f),m=i&&p?null:xd.exec(l);if(m){c(),n=0,s=m[1]?.length??0,i=!0,a=!1,t.push(l);continue}if(/^diff --(?:git|cc|combined) /.test(f)&&(a=!0),p&&!a&&!(s>0&&f.trim().length===0)){n+=1,n<=Wb?t.push(l):(r+=1,o=d?u:"");continue}c(),t.push(l)}return c(),t}var xd,Gb,Kb,Wb,Sd=g(()=>{"use strict";qe();xd=/^(?:([|\\/ ._-]*\*[|\\/* ._-]* ))?commit [0-9a-f]{7,40}\b/,Gb=/^[|\\/* ._-]*$/,Kb=/^ {4}/,Wb=2;ue("smart-log",qb)});var Yb,Xb,Qb,_d=g(()=>{"use strict";qe();Yb=/^[\s=]+$/,Xb=/^\s*=+\s+(.*?)\s+=+\s*$/,Qb=512;ue("strip-banners",e=>{let t=[];for(let n of e){if(Yb.test(n))continue;let r=n.length<=Qb?Xb.exec(n):null;t.push(r?r[1]:n)}return t})});function e0(e){let t=[],n=0,r=0;for(;r<e.length;){let s=e[r].replace(/\s+$/,"");if(s===""){n+=1,r+=1,n<=1&&t.push("");continue}n=0;let o=1;for(;r+o<e.length&&e[r+o].replace(/\s+$/,"")===s;)o+=1;if(o>=3)t.push(s),t.push(` \u2026 (repeated ${o}x)`);else for(let i=0;i<o;i++)t.push(s);r+=o}for(;t.length>0&&t[t.length-1]==="";)t.pop();return t}var Ed=g(()=>{"use strict";qe();ue("squeeze-output",e0)});function t0(e){return e==="compact"?.6:e==="minimal"?.3:1}function r0(e){let[t,n,r,s]=e.slice(-4);if(!t||!n||!r||!s||!/^\s*Test Files\s+([1-9]\d*) passed \(\1\)$/.test(t)||!/^\s*Tests\s+([1-9]\d*) passed \(\1\)$/.test(n)||!/^\s*Start at\s+\d{2}:\d{2}:\d{2}$/.test(r))return e;let o=/^(\s*Duration\s+\d+(?:\.\d+)?(?:ms|s)) \(transform [^\n]+\)$/.exec(s)?.[1];return o?[...e.slice(0,-4).filter((a,c)=>c>2||!/^ RUN v\d+\.\d+\.\d+(?:[\w.+-]*) .+$/.test(a)),t,n,o]:e}function s0(e){let t=Td.get(e);if(t)return t;let n=e.strip_lines_matching.map(s=>new RegExp(s)),r={def:e,stripRegexes:n};return Td.set(e,r),r}function $d(e,t,n={}){return o0(e,t,n).text}function o0(e,t,n={}){let r=n.verbosity??"normal";if(!t.strip_ansi&&t.strip_lines_matching.length===0&&!t.transform&&!t.mask_abs_paths&&!t.fold_passing&&!t.truncate_lines_at&&!t.max_lines&&!t.on_empty&&!n.smartCode&&r==="normal")return{text:e,droppedTail:null};let s=s0(t),o=e;t.strip_ansi&&(o=qu(o));let i=o.endsWith(`
24
+ `),a=(i?o.slice(0,-1):o).split(`
25
+ `);s.stripRegexes.length&&(a=t.keep_failures?a.filter(f=>ft.test(f)||!s.stripRegexes.some(p=>p.test(f))):Xu(a,s.stripRegexes)),r!=="normal"&&!t.preserve_exact&&(a=ld(a),a=ud(a)),r==="minimal"&&!t.preserve_exact&&(a=cd(a),(t.slug==="vitest"||t.slug==="npm-test")&&(a=r0(a)));let c=t.transform==="smart-read"&&n.smartCode!==!0?r==="compact"?8:r==="minimal"?6:3:3;if(!t.preserve_exact&&(n.smartCode||n.smartCode===void 0&&r!=="normal"&&ad(o))&&(a=fr(a,c)),t.transform){let f=pd(t.transform);t.transform==="smart-read"?a=fr(a,c,t.slug==="read-tool"):f&&(a=f(a))}let l=t.slug==="read-tool";if(!l){let f=Ui(a);f.some(Boolean)&&(a=a.filter((p,m)=>!f[m]))}t.mask_abs_paths&&(a=od(a)),t.fold_passing&&(a=sd(a,t.fold_passing_threshold??5)),t.truncate_lines_at&&(a=ed(a,t.truncate_lines_at));let u=null;if(t.max_lines){let f=t.scale_with_level?t0(n.verbosity):1,p=Math.min(t.max_lines,Math.max(n0,Math.round(t.max_lines*f))),m=l?Ui(a):null,v=m?m.filter(S=>!S).length:a.length;if(v>p){let S=p;if(m){let I=0;for(S=0;S<a.length&&I<p;)m[S]||(I+=1),S+=1}let $=v-p;if(t.keep_failures){let I=a.slice(S),H=I.filter(q=>!ft.test(q)),V=I.reduce((q,et,Ne)=>q+(!ft.test(et)&&!m?.[S+Ne]?1:0),0);u=H.length>0?H.join(`
26
+ `):null,a=[...a.slice(0,S),...V>0?[$s(V)]:[],...I.filter(q=>ft.test(q))]}else if(l)u=a.slice(S).join(`
27
+ `),a=[...a.slice(0,S),$s($)];else{let{kept:I,dropped:H}=nd(a,p);u=H.length>0?H.join(`
28
+ `):null,a=I}}}let d=a.join(`
29
+ `);return i&&d.length>0&&(d+=`
30
+ `),d.trim().length===0&&t.on_empty&&(d=t.on_empty),{text:d,droppedTail:u}}var n0,Td,Rd=g(()=>{"use strict";Yu();Qu();td();rd();zi();id();Bi();dd();qe();md();hd();kd();vd();Sd();_d();Ed();n0=20;Td=new WeakMap});function i0(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function a0(e,t,n){let r=e.split(/\r?\n/),s="",o=(Math.log10(t+1)|0)+1;for(let i=t-1;i<=t+1;i++){let a=r[i-1];a&&(s+=i.toString().padEnd(o," "),s+=": ",s+=a,s+=`
31
+ `,i===t&&(s+=" ".repeat(o+n+2),s+=`^
32
+ `))}return s}var E,zt=g(()=>{E=class e extends Error{line;column;codeblock;constructor(t,n){let[r,s]=i0(n.toml,n.ptr),o=a0(n.toml,r,s);super(`Invalid TOML document: ${t}
33
+
34
+ ${o}`,n),this.line=r,this.column=s,this.codeblock=o}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}}});function Rs(e){let t=e.p,n=e.s.charCodeAt(e.p++),r=n,s=n===39,o=n===e.s.charCodeAt(e.p)&&n===e.s.charCodeAt(e.p+1);o&&((n=e.s.charCodeAt(e.p+=2))===10?e.p++:n===13&&e.s.charCodeAt(e.p+1)===10&&(e.p+=2));let i="",a=e.p,c=0;for(;e.p<e.s.length;e.p++)if(n=e.s.charCodeAt(e.p),o&&(n===10||n===13&&e.s.charCodeAt(e.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)E.x("control characters are not allowed in strings",e);else if((!c||c===3)&&n===r&&(!o||e.s.charCodeAt(e.p+1)===r&&e.s.charCodeAt(e.p+2)===r)){if(o&&(e.s.charCodeAt(e.p+3)===r&&e.p++,e.s.charCodeAt(e.p+3)===r&&e.p++),!c){let l=e.s.slice(a,e.p);i=i?i+l:l}return e.p+=o?3:1,i}else if(!c)!s&&n===92&&(i+=e.s.slice(a,a=e.p),c=1);else if(c===1)if(n===120||n===117||n===85){let l=e.p++-1,u=0,d=n===120?2:n===117?4:8;for(let f=0;f<d;f++,e.p++){let p=e.s.charCodeAt(e.p),m=p>=48&&p<=57?p-48:p>=65&&p<=70?p-65+10:p>=97&&p<=102?p-97+10:-1;m<0&&E.x("invalid non-hex character in unicode escape",e),u=u<<4|m}(u<0||u>1114111||u>=55296&&u<=57343)&&E.x("invalid unicode escape",e,l),i+=String.fromCodePoint(u),a=e.p--,c=0}else o&&(n===32||n===9)?c=2:(n===98?i+="\b":n===116?i+=" ":n===110?i+=`
35
+ `:n===102?i+="\f":n===114?i+="\r":n===101?i+="\x1B":n===34?i+='"':n===92?i+="\\":E.x("unrecognised escape sequence",e),a=e.p+1,c=0);else n!==32&&n!==9&&(c===2&&E.x("invalid escape: only line-ending whitespace may be escaped",e,a),c=!s&&n===92?1:0,a=e.p);E.x("unfinished string",e,t)}var Zi=g(()=>{zt();});var c0,Ut,Gi=g(()=>{c0=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,Ut=class e extends Date{#t=!1;#n=!1;#e=null;constructor(t,n,r){let s=!0,o=!0,i="Z",a;if(typeof t=="string")if(n)e:{if(n<3){if(+t.slice(11,13)>23){t="";break e}n===2?(i=null,t+="Z"):(a=t.charCodeAt(t.length-1))!==90&&a!==122&&(i=t.slice(t.length-6)),r&&(t=t.slice(0,10)+"T"+t.slice(11))}else n===4&&(t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`);s=n!==4,o=n!==3}else{let c=t.match(c0);c?(c[1]||(s=!1,t=`0000-01-01T${t}`),o=!!c[2],o&&t[10]===" "&&(t=t.replace(" ","T")),c[2]&&+c[2]>23?t="":(i=c[3]||null,!i&&o&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=s,this.#n=o,this.#e=i)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z"||this.#e==="z")return t;let n=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return n=this.#e[0]==="-"?n:-n,new Date(this.getTime()-n*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,n="Z"){let r=new e(t);return r.#e=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#e=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#n=!1,n.#e=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#t=!1,n.#e=null,n}}});function ke(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function Wi(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function mr(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||E.x("document contains excessively nested structures. aborting.",e);let s=r===91?Od(e):Cd(e);return e.d++,s}return r===34||r===39?Rs(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!1):r===43||r===45?As(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?l0(e,r,t):e.s.charCodeAt(e.p+2)===58?u0(e,r,t):As(e,e.p,r,0,t)}function As(e,t,n,r,s){let o=n,i=0,a=!1;if(o===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&E.x("invalid value",e,t),e.p++,(r||1)/0;if(o===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&E.x("invalid value",e,t),e.p++,NaN;if(o===48){if(++e.p>=e.s.length||Wi(o=e.s.charCodeAt(e.p),s))return e.bi===!0?0n:0;if(!r){if(o===120)return Ki(e,t,16,s);if(o===98)return Ki(e,t,2,s);if(o===111)return Ki(e,t,8,s)}o===46?i=2:o===101||o===69?i=4:E.x("illegal leading zero",e,t)}else ke(o)||E.x("invalid value",e,t);for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!Wi(o,s));)i||(i=1),o===95?(i&1||E.x("illegal underscore",e),i+=11,a=!0):i===1&&o===46?i=2:(i===1||i===3)&&(o===101||o===69)?i=4:i===4&&(o===43||o===45)||(ke(o)?i>9?i-=11:i&1||i++:E.x("illegal character in numeric literal",e));if(!i){let l=(n-48)*(r||1);return e.bi===!0?BigInt(l):l}i&1||E.x("unfinished numeric value",e,t);let c=e.s.slice(t,e.p);return a&&(c=c.replaceAll("_","")),i>1?parseFloat(c):Ad(e,c,10,t)}function Ki(e,t,n,r){let s,o=1;for(;++e.p<e.s.length&&(s=e.s.charCodeAt(e.p),!Wi(s,r));)s===95?(o&1&&E.x("illegal underscore",e),o=3):ke(s,n)?o&1&&o--:E.x("illegal character in numeric literal",e);o&1&&E.x("unfinished numeric value",e);let i=e.s.slice(t+2,e.p);return o&&(i=i.replaceAll("_","")),Ad(e,i,n,t)}function Ad(e,t,n,r){if(e.bi!==!0)e:{let s=parseInt(t,n);if(!Number.isSafeInteger(s)){if(e.bi)break e;E.x("integer value cannot be represented losslessly",e,r)}return s}return BigInt(n===10?t:(n===2?"0b":n===8?"0o":"0x")+t)}function l0(e,t,n){let r=e.p++,s;if(!ke(t)||!ke(e.s.charCodeAt(e.p++))||!ke(e.s.charCodeAt(e.p++))||!ke(e.s.charCodeAt(e.p++)))return As(e,e.p=r,t,0,n);if(e.p+=5,ke(e.s.charCodeAt(e.p++))||E.x("invalid date-time: date part is malformed",e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(s=!0,!ke(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116){let i=e.s.slice(r,e.p);return pr(e,i,3,!1,r)}if(e.s.charCodeAt(e.p+=3)!==58&&E.x("invalid date-time: time part is malformed",e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;ke(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122){let i=e.s.slice(r,++e.p);return pr(e,i,1,s,r,"[+00:00]")}if(t===43||t===45){let i=e.s.slice(r,e.p+=6);return pr(e,i,1,s,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let o=e.s.slice(r,e.p);return pr(e,o,2,s,r)}function u0(e,t,n){let r=e.p;if(!ke(t)||!ke(e.s.charCodeAt(++e.p)))return As(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;ke(e.s.charCodeAt(++e.p)););let s=e.s.slice(r,e.p);return pr(e,s,4,!1,r)}function pr(e,t,n,r,s,o){if(e.ld){let i=new Ut(t,n,r);return i.isValid()||E.x("invalid date",e,s),i}try{switch(o&&(t+=o),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(i){E.x(i instanceof Error?i.message:""+i,e,s)}}var qi=g(()=>{Zi();Yi();zt();Gi();});function d0(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&E.x("control characters are not allowed in comments",e)}}function Ie(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;d0(e)}}var Xi=g(()=>{zt();});function Cs(e,t=61){let n,r=0,s=[],o,i=e.s.charCodeAt(n=e.p);do{if(i===t)return r||E.x("unexpected end of key",e),r===1&&s.push(e.s.slice(o,e.p)),e.p++,s;i===46?(r||E.x("illegal empty bare key",e),r===1&&s.push(e.s.slice(o,e.p)),r=0):!r&&(i===34||i===39)?(i===e.s.charCodeAt(e.p+1)&&i===e.s.charCodeAt(e.p+2)&&E.x("illegal quoted key: multiline strings are not allowed",e),s.push(Rs(e)),r=2,e.p--):i===32||i===9?r===1&&(s.push(e.s.slice(o,e.p)),r=2):r===2||i<48&&i!==45||i>57&&i<65||i>90&&i<97&&i!==95||i>122?E.x("illegal character in key",e):r||(r=1,o=e.p)}while(i=e.s.charCodeAt(++e.p));E.x("incomplete key-value: cannot find end of key",e,n)}function Cd(e){let t=e.p++,n=Object.create(null),r=new Set,s;for(;e.p<e.s.length;){if(Ie(e),(s=e.s.charCodeAt(e.p))===125)return e.p++,n;let o,i=n,a=!1,c=e.p,l=Cs(e);for(let d=0;d<l.length;d++){d&&(i=a?i[o]:i[o]=Object.create(null)),o=l[d],(a=Object.hasOwn(i,o))&&(typeof i[o]!="object"||r.has(i[o]))&&E.x("trying to redefine an already defined value",e,c);let f=o==="__proto__";if(e.uk&&(f||o==="constructor")){i=e.uk!==1&&E.x("document contains an unsafe property",e,c);break}!a&&f&&Object.defineProperty(i,o,{enumerable:!0,configurable:!0,writable:!0})}a&&E.x("trying to redefine an already defined value",e,c),Ie(e,!0,!0);let u=mr(e,125);if(i&&typeof(i[o]=u)=="object"&&r.add(u),Ie(e),(s=e.s.charCodeAt(e.p++))===125)return n;s!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished table",e,t)}function Od(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(Ie(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(mr(e,93)),Ie(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished array",e,t)}var Yi=g(()=>{Zi();qi();Xi();zt();});function Id(e,t,n,r,s){let o=n,i=r,a,c=!1,l;for(let u=0;u<t.length;u++){if(u){if(o=c?o[a]:o[a]=Object.create(null),i=(l=i[a]).c,s===0&&(l.t===1||l.t===2))return null;if(l.t===2){let d=o.length-1;o=o[d],i=i[d].c}}if(a=t[u],(c=Object.hasOwn(o,a))&&i[a]?.t===0&&i[a]?.d)return null;if(!c){let d=a==="__proto__";if(e.uk&&(d||a==="constructor"))return!1;d&&(Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(i,a,{enumerable:!0,configurable:!0,writable:!0})),i[a]={t:u<t.length-1&&s===2?3:s,d:!1,i:0,c:Object.create(null)}}}if(l=i[a],l.t!==s&&!(s===1&&l.t===3)||(s===2&&(l.d||(l.d=!0,o[a]=[]),o[a].push(o=Object.create(null)),l.c[l.i++]=l={t:1,d:!1,i:0,c:Object.create(null)}),l.d))return null;if(l.d=!0,s===1)o=c?o[a]:o[a]=Object.create(null);else if(s===0&&c)return null;return[a,o,l.c]}function Pd(e,t,n){(t===null||e.uk===2)&&E.x(t===null?"trying to redefine an already defined table or value":"document contains an unsafe property",e,n)}function Qi(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour==="throw"?2:t.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),s=Object.create(null),o,i=!1,a=r,c=s;for(e.charCodeAt(0)===65279&&n.p++,Ie(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let l=e.charCodeAt(++n.p)===91;o=n.p+=+l,i=!1;let u=Cs(n,93);l&&(e.charCodeAt(n.p)!==93&&E.x("expected end of table array declaration",n),n.p++);let d=Id(n,u,r,s,l?2:1);d?(c=d[2],a=d[1]):(Pd(n,d,o),i=!0)}else{o=n.p;let l=Cs(n),u=Id(n,l,a,c,0);!u&&!i&&Pd(n,u,o),Ie(n,!0,!0);let d=mr(n,void 0);u&&!i&&(u[1][u[0]]=d)}Ie(n,!0),n.p<e.length&&(o=e.charCodeAt(n.p))!==10&&(o!==13||e.charCodeAt(n.p+1)!==10)&&E.x("each key-value declaration must be followed by an end-of-line",n),Ie(n)}return r}var Nd=g(()=>{Yi();qi();Xi();zt();});function hr(e){let t=typeof e;if(t==="object"){if(Array.isArray(e))return"array";if(typeof e.getUTCDate=="function"&&e instanceof Date)return"date";if(globalThis.Temporal){if(e.until){if(e instanceof Temporal.ZonedDateTime)return"temporal/tz+uc";if(e instanceof Temporal.PlainDateTime||e instanceof Temporal.PlainDate)return"temporal/uc";if(e instanceof Temporal.PlainTime||e instanceof Temporal.Instant)return"temporal";if(e instanceof Temporal.PlainYearMonth)return"temporal/x"}else if(e.toPlainDate&&e instanceof Temporal.PlainMonthDay||e.negated&&e instanceof Temporal.Duration)return"temporal/x"}}return t}function p0(e){for(let t=0;t<e.length;t++)if(hr(e[t])!=="object")return!1;return e.length!=0}function Md(e){return JSON.stringify(e).replaceAll("\x7F","\\u007f")}function m0(e){return Md(Dd?e.toWellFormed():e)}function Fd(e){if(f0.test(e))return e;if(Dd&&!e.isWellFormed())throw new RangeError("key contains illegal lone surrogates");return Md(e)}function ea(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");switch(t){case"number":if(isNaN(e))return"nan";if(e===1/0)return"inf";if(e===-1/0)return"-inf";if(Number.isInteger(e)&&(r||!Number.isSafeInteger(e)))return e.toFixed(1);case"bigint":case"boolean":case"temporal":return e.toString();case"string":return m0(e);case"date":if(isNaN(e.getTime()))throw new TypeError("cannot serialize invalid date");return e.toISOString();case"object":return h0(e,n,r,s);case"array":return g0(e,n,r,s);case"temporal/tz+uc":if(s){let o=e.timeZoneId,i=o.charCodeAt(0);if(i!==43&&i!==45&&(i!==85&&i!==71&&i!==90&&i!==69||o!=="UTC"&&o!=="UCT"&&o!=="Universal"&&o!=="Zulu"&&!o.startsWith("GMT")&&o!=="Greenwich"&&!o.startsWith("Etc/")))throw new TypeError("Temporal objects with an IANA timezone are not allowed in Temporal strict mode")}case"temporal/uc":if(s&&e.calendarId!=="iso8601")throw new TypeError("Temporal objects with a non-default calendar are not allowed in Temporal strict mode");return e.toString({calendarName:"never",timeZoneName:"never"});case"temporal/x":throw new TypeError("Unsupported "+e[Symbol.toStringTag])}}function h0(e,t,n,r){let s=Object.keys(e);if(s.length===0)return"{}";let o="{ ";for(let i=0;i<s.length;i++){let a=s[i];i&&(o+=", "),o+=Fd(a)+" = "+ea(e[a],hr(e[a]),t-1,n,r)}return o+" }"}function g0(e,t,n,r){if(e.length===0)return"[]";let s="[ ";for(let o=0;o<e.length;o++){if(o&&(s+=", "),e[o]===null||e[o]===void 0)throw new TypeError("arrays cannot contain null or undefined values");s+=ea(e[o],hr(e[o]),t-1,n,r)}return s+" ]"}function k0(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let o="";for(let i=0;i<e.length;i++)o+=`${o&&`
36
+ `}[[${t}]]
37
+ `,o+=ta(0,e[i],t,n,r,s);return o}function ta(e,t,n,r,s,o){if(r===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let i="",a="",c=Object.keys(t);for(let l=0;l<c.length;l++){let u=c[l];if(t[u]!==null&&t[u]!==void 0){let d=hr(t[u]);if(d==="symbol"||d==="function")throw new TypeError(`cannot serialize values of type '${d}'`);let f=Fd(u);if(d==="array"&&p0(t[u]))a+=(a&&`
38
+ `)+k0(t[u],n?`${n}.${f}`:f,r-1,s,o);else if(d==="object"){let p=n?`${n}.${f}`:f;a+=(a&&`
39
+ `)+ta(p,t[u],p,r-1,s,o)}else i+=f,i+=" = ",i+=ea(t[u],d,r,s,o),i+=`
40
+ `}}return e&&(i||!a)&&(i=i?`[${e}]
41
+ ${i}`:`[${e}]`),i&&a?`${i}
42
+ ${a}`:i||a}function na(e,{maxDepth:t=1e3,numbersAsFloat:n=!1,strictTemporal:r=!1}={}){if(hr(e)!=="object")throw new TypeError("stringify can only be called with an object");let s=ta(0,e,"",t,n,r);return s[s.length-1]!==`
43
+ `?s+`
44
+ `:s}var f0,Dd,jd=g(()=>{f0=/^[a-z0-9-_]+$/i,Dd=!!"".isWellFormed});var Os={};Z(Os,{TomlDate:()=>Ut,TomlError:()=>E,default:()=>y0,parse:()=>Qi,stringify:()=>na});var y0,Is=g(()=>{Nd();jd();Gi();zt();y0={parse:Qi,stringify:na,TomlDate:Ut,TomlError:E}});var ua={};Z(ua,{USER_FILTER_PREFIX:()=>Ps,USER_FILTER_SCHEMA_VERSION:()=>gr,__resetUserFilters:()=>Ds,isUserFilterId:()=>ia,loadUserFilters:()=>Jd,parseUserFilterText:()=>Jt,readUserFilters:()=>ca,runFilterTests:()=>Ns,runUserFilterTests:()=>I0,selectUserFilter:()=>Vd,trustUserFilters:()=>la,untrustUserFilters:()=>O0,userFiltersDir:()=>_e,userFiltersTrustFile:()=>pt,withUserFilters:()=>C0});import{readdir as w0,readFile as oa,writeFile as b0,mkdir as v0,rename as x0}from"node:fs/promises";import{readdirSync as S0,statSync as Hd}from"node:fs";import{createHash as _0}from"node:crypto";import{basename as Ld,join as kr}from"node:path";function _e(){return kr(w(),"filters")}function pt(){return kr(w(),"filters-trust.json")}function ia(e){return typeof e=="string"&&e.startsWith(Ps)}function zd(e){return _0("sha256").update(e).digest("hex")}async function aa(){try{let e=JSON.parse(await oa(pt(),"utf8")),t={};if(e.files&&typeof e.files=="object")for(let[n,r]of Object.entries(e.files))typeof r=="string"&&/^[0-9a-f]{64}$/.test(r)&&(t[n]=r);return{v:1,files:t}}catch{return{v:1,files:{}}}}async function Ud(e){let t=pt();await v0(w(),{recursive:!0,mode:448});let n=`${t}.tmp-${process.pid}`;await b0(n,JSON.stringify(e,null,2)+`
45
+ `,{mode:384}),await x0(n,t)}function T0(e,t){if(t===void 0)return{tests:[]};let n={message:`${e}: tests: each [[filters.${e}.tests]] needs input and expected strings`};if(!Array.isArray(t))return n;let r=[];for(let s of t){if(typeof s!="object"||s===null)return n;let{input:o,expected:i,name:a}=s;if(typeof o!="string"||typeof i!="string")return n;r.push({...typeof a=="string"&&a?{name:a}:{},input:o,expected:i})}return{tests:r}}function $0(e,t){let n=typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{},{tests:r,...s}=n,o=T0(e,r);if("message"in o)return o;let i=bn.safeParse({...s,slug:e});if(!i.success){let c=i.error.issues.map(l=>`${l.path.join(".")||"rule"}: ${l.message}`).join("; ");return{message:`${e}: ${c}`}}let a;try{a=new RegExp(i.data.match_command)}catch{return{message:`${e}: match_command is not a valid regular expression`}}for(let c of i.data.strip_lines_matching)try{new RegExp(c)}catch{return{message:`${e}: strip_lines_matching has an invalid regular expression`}}return{filter:{...i.data,slug:`${Ps}${i.data.slug}`,matchRegex:a},tests:o.tests}}function R0(e){return e===void 0||e===gr?null:typeof e=="number"&&Number.isInteger(e)?`schema_version ${e} is not supported: this tkr reads schema_version = ${gr}. Update tkr, or write the file for version ${gr}`:`schema_version must be the number ${gr}`}async function Bd(e){try{return(await w0(e)).filter(t=>t.endsWith(".toml")).sort()}catch{return[]}}async function ca(e={}){let t=e.requireTrust!==!1,n=_e(),r=new Map,s=new Map,o=[],i=await Bd(n);if(i.length===0)return{dir:n,filters:r,tests:s,issues:o};let a=t?await aa():null;for(let c of i){let l;try{l=await oa(kr(n,c),"utf8")}catch{o.push({file:c,message:"could not be read"});continue}if(a){let d=a.files[c];if(!d){o.push({file:c,message:`not trusted yet. Review it, then run: tkr filters trust ${c}`});continue}if(d!==zd(l)){o.push({file:c,message:`changed since it was trusted. Review it, then run: tkr filters trust ${c}`});continue}}let u=await Jt(l,c);for(let[d,f]of u.filters)r.set(d,f);for(let[d,f]of u.tests)s.set(d,f);o.push(...u.issues)}return{dir:n,filters:r,tests:s,issues:o}}async function Jt(e,t){let n=new Map,r=new Map,s=[],{parse:o}=await Promise.resolve().then(()=>(Is(),Os)),i;try{i=o(e)}catch(l){return s.push({file:t,message:`not valid TOML (${String(l.message).split(`
46
+ `)[0]})`}),{filters:n,tests:r,issues:s}}let a=R0(i.schema_version);if(a)return s.push({file:t,message:a}),{filters:n,tests:r,issues:s};let c=i.filters;if(typeof c!="object"||c===null||Array.isArray(c))return s.push({file:t,message:"no [filters.<name>] table found"}),{filters:n,tests:r,issues:s};for(let[l,u]of Object.entries(c)){let d=$0(l,u);if("message"in d){s.push({file:t,message:d.message});continue}n.set(d.filter.slug,d.filter),d.tests.length>0&&r.set(d.filter.slug,{file:t,tests:d.tests})}return{filters:n,tests:r,issues:s}}function A0(){let e=[];for(let t of[pt(),_e()])try{let n=Hd(t);e.push(`${n.mtimeMs}:${n.size}`)}catch{e.push("-")}try{for(let t of S0(_e()).filter(n=>n.endsWith(".toml")).sort()){let n=Hd(kr(_e(),t));e.push(`${t}:${n.mtimeMs}:${n.size}`)}}catch{}return e.join("|")}function Jd(){let e=Date.now();if(!Bt||e-sa>=E0){sa=e;let t=A0();(!Bt||t!==ra)&&(ra=t,Bt=ca())}return Bt}async function Vd(e){let{filters:t}=await Jd();return t.size===0?null:Ts(e,t.values(),null,t)}function C0(e){return async(t,n)=>await Vd(t)??e(t,n)}async function la(e=[]){let t=_e(),n=await Bd(t),r=e.length>0?e.map(a=>Ld(a)):n,s=await aa(),o=[],i=[];for(let a of r){if(!n.includes(a)){i.push(a);continue}s.files[a]=zd(await oa(kr(t,a),"utf8")),o.push(a)}return o.length>0&&await Ud(s),Bt=null,{trusted:o,missing:i}}async function O0(e=[]){let t=await aa(),r=(e.length>0?e.map(s=>Ld(s)):Object.keys(t.files)).filter(s=>s in t.files);for(let s of r)delete t.files[s];return r.length>0&&await Ud(t),Bt=null,r}async function I0(e){return Ns(await ca({requireTrust:!1}),e)}function Ns(e,t){let n=[],r=[];for(let[s,o]of e.filters){let i=s.slice(Ps.length);if(t&&i!==t)continue;let a=e.tests.get(s);if(!a){r.push(i);continue}a.tests.forEach((c,l)=>{let u=$d(c.input,o,{verbosity:"normal"});n.push({rule:i,file:a.file,index:l+1,...c.name?{name:c.name}:{},pass:u.trimEnd()===c.expected.trimEnd(),expected:c.expected,actual:u})})}return{results:n,issues:e.issues,untested:r}}function Ds(){Bt=null,ra="",sa=0}var Ps,gr,Bt,ra,sa,E0,Vt=g(()=>{"use strict";cs();Li();Rd();z();Ps="user/",gr=1,Bt=null,ra="",sa=0,E0=1e3});var Zd={};Z(Zd,{flush:()=>N0,recordEvent:()=>P0});async function P0(e){if(e.plan!=="pro"||ia(e.filterId)||!(await J()).telemetryOptIn)return;let t=_s(e.cmd);!t||cr(t)!==t||vs("learn",{cmd:t,filterId:e.filterId==null?null:Re(e.filterId),rawBytes:e.rawBytes,filteredBytes:e.filteredBytes})}async function N0(e){return xs("learn","/api/v1/learn",{baseUrl:e,requirePro:!0})}var Gd=g(()=>{"use strict";Es();Si();Ss();pn();Vt();Ht()});import{existsSync as Y0,readFileSync as X0}from"node:fs";import{join as Q0}from"node:path";import ev from"node:os";function br(){return Q0(ev.homedir(),".cursor","hooks.json")}function ka(e){return typeof e.command=="string"&&e.command.includes(tf)}function ya(e){let t=M(e.hooks)?e.hooks:{},n=Array.isArray(t[wr])?t[wr]:[];return{hooks:t,entries:n}}function Zt(){try{let e=JSON.parse(X0(br(),"utf8"));return ya(e).entries.some(ka)}catch{return!1}}async function nf(e){let t=br(),n=await K(t);if(!n)return"error";let{hooks:r,entries:s}=ya(n),o="added",i=s.find(ka);if(i){if(i.command===e&&i.matcher===ga)return"present";i.command=e,i.matcher=ga,o="updated"}else s.push({command:e,matcher:ga,timeout:10});return r[wr]=s,n.hooks=r,typeof n.version!="number"&&(n.version=1),await W(t,n)?o:"error"}async function rf(){let e=br();if(!Y0(e))return"absent";let t=await K(e);if(!t)return"error";let{hooks:n,entries:r}=ya(t),s=r.filter(o=>!ka(o));return s.length===r.length?"absent":(s.length?n[wr]=s:delete n[wr],t.hooks=n,await W(e,t)?"removed":"error")}function sf(e,t){return He(tf,e,t)}var tf,wr,ga,Ls=g(()=>{"use strict";dt();tf="tkr-cursor-hook",wr="preToolUse",ga="Shell"});import{existsSync as tv,readFileSync as nv}from"node:fs";import{join as rv}from"node:path";import sv from"node:os";function Gt(){return rv(process.env.GEMINI_CLI_HOME||sv.homedir(),".gemini","settings.json")}function af(e){return typeof e.command=="string"&&e.command.includes(of)}function wa(e){return(Array.isArray(e.hooks)?e.hooks:[]).find(af)}function ba(e){let t=M(e.hooks)?e.hooks:{},n=Array.isArray(t[vr])?t[vr]:[];return{hooks:t,groups:n}}function Kt(){try{let e=JSON.parse(nv(Gt(),"utf8"));return ba(e).groups.some(t=>wa(t)!=null)}catch{return!1}}async function cf(e){let t=Gt(),n=await K(t);if(!n)return"error";let{hooks:r,groups:s}=ba(n),o="added",i=s.map(wa).find(a=>a!=null);if(i){if(i.command===e)return"present";i.command=e,o="updated"}else s.push({matcher:ov,hooks:[{name:"tokmizer",type:"command",command:e,timeout:1e4}]});return r[vr]=s,n.hooks=r,await W(t,n)?o:"error"}async function lf(){let e=Gt();if(!tv(e))return"absent";let t=await K(e);if(!t)return"error";let{hooks:n,groups:r}=ba(t);if(!r.some(o=>wa(o)!=null))return"absent";let s=r.map(o=>Array.isArray(o.hooks)?{...o,hooks:o.hooks.filter(i=>!af(i))}:o).filter(o=>!Array.isArray(o.hooks)||o.hooks.length>0);return s.length?n[vr]=s:delete n[vr],t.hooks=n,await W(e,t)?"removed":"error"}function uf(e,t){return He(of,e,t)}var of,vr,ov,zs=g(()=>{"use strict";dt();of="tkr-gemini-hook",vr="BeforeTool",ov="run_shell_command"});import{readFile as df,writeFile as iv,rename as av,mkdir as cv,copyFile as lv,unlink as uv}from"node:fs/promises";import{existsSync as va,accessSync as dv,constants as fv,readFileSync as pv}from"node:fs";import{dirname as mv,join as hv}from"node:path";function xa(e,t,n=process.platform,r=process.execPath){if(n!=="win32")for(let s of e.split(":")){if(!s||s.includes("node_modules"))continue;let o=hv(s,"tkr");try{return dv(o,fv.X_OK),[o]}catch{}}return Sn(t,r)}function ff(e,t){return e.split(gv).join(JSON.stringify(t))}function Sa(e){return e.includes(kv)}function pf(e){try{return Sa(pv(e,"utf8"))}catch{return!1}}async function mf(e,t){try{let n="added";if(va(e)){let s=await df(e,"utf8");if(s===t)return"present";Sa(s)?n="updated":va(`${e}.tkr-bak`)||await lv(e,`${e}.tkr-bak`)}await cv(mv(e),{recursive:!0});let r=`${e}.tmp-${process.pid}`;return await iv(r,t),await av(r,e),n}catch{return"error"}}async function hf(e){try{return!va(e)||!Sa(await df(e,"utf8"))?"absent":(await uv(e),"removed")}catch{return"error"}}var gv,kv,_a=g(()=>{"use strict";We();gv="__TKR_ARGV__",kv='"rewrite", "--host"'});import{readFile as kf,writeFile as yv,rename as wv,mkdir as bv,copyFile as vv}from"node:fs/promises";import{existsSync as xr,readFileSync as yf}from"node:fs";import{dirname as xv,join as Ea}from"node:path";import wf from"node:os";function vf(e,t,n){return`${He(Sv,t,n)} ${e}`}function Er(){return Ea(process.env.VIBE_HOME||Ea(wf.homedir(),".vibe"),"hooks.toml")}function gf(e){return JSON.stringify(e)}function _v(e){return["[[hooks]]",`name = ${gf(bf)}`,'type = "pre_tool"','match = "bash"',`command = ${gf(e)}`,"timeout = 10.0","strict = false",'description = "Route shell commands through tokmizer."',""].join(`
47
+ `)}function Ta(e){let t=[],n=[];for(let r of e.split(/(?<=\n)/))/^\s*\[\[?\s*[A-Za-z0-9_-]/.test(r)&&n.length&&(t.push(n.join("")),n=[]),n.push(r);return n.length&&t.push(n.join("")),t}function _r(e){return/^\s*\[\[hooks\]\]/.test(e)&&new RegExp(`^\\s*name\\s*=\\s*"${bf}"\\s*$`,"m").test(e)}async function xf(e,t){try{await bv(xv(e),{recursive:!0}),xr(e)&&!xr(`${e}.tkr-bak`)&&await vv(e,`${e}.tkr-bak`);let n=`${e}.tmp-${process.pid}`;return await yv(n,t),await wv(n,e),!0}catch{return!1}}function Sf(){try{return Ta(yf(Er(),"utf8")).some(_r)}catch{return!1}}async function _f(e){let t=Er(),n="";try{xr(t)&&(n=await kf(t,"utf8"))}catch{return"error"}let r=_v(e),s=Ta(n),o=s.filter(_r);if(o.length===1&&o[0].trimEnd()===r.trimEnd())return"present";let i=s.filter(c=>!_r(c)).join("").trimEnd(),a=i?`${i}
48
+
49
+ ${r}`:r;return await xf(t,a)?o.length?"updated":"added":"error"}async function Ef(){let e=Er();if(!xr(e))return"absent";let t;try{t=await kf(e,"utf8")}catch{return"error"}let n=Ta(t);if(!n.some(_r))return"absent";let r=n.filter(o=>!_r(o)).join("").trimEnd(),s=r?`${r}
50
+ `:"";return await xf(e,s)?"removed":"error"}function Tr(){return Ea(wf.homedir(),".gemini","config","hooks.json")}function Ev(e){return{enabled:!0,PreToolUse:[{matcher:"run_command",hooks:[{type:"command",command:e,timeout:10}]}]}}function Tf(){try{let e=JSON.parse(yf(Tr(),"utf8"));return M(e)&&M(e[Sr])}catch{return!1}}async function $f(e){let t=Tr(),n=await K(t);if(!n)return"error";let r=Ev(e),s=n[Sr];return s!==void 0&&JSON.stringify(s)===JSON.stringify(r)?"present":(n[Sr]=r,await W(t,n)?s===void 0?"added":"updated":"error")}async function Rf(){let e=Tr();if(!xr(e))return"absent";let t=await K(e);return t?Sr in t?(delete t[Sr],await W(e,t)?"removed":"error"):"absent":"error"}var Sv,bf,Sr,$a=g(()=>{"use strict";dt();Sv="tkr-agent-hook",bf="tokmizer-rewrite",Sr="tokmizer-rewrite"});import{readFile as Aa,rmdir as Tv,unlink as $v,writeFile as Rv,mkdir as Av,rename as Cv}from"node:fs/promises";import{existsSync as Ca,readdirSync as Ov}from"node:fs";import{dirname as Oa,join as fe}from"node:path";import Iv from"node:os";function Af(e){return mt.find(t=>t.command===e)}function Cf(e){return mt.find(t=>t.host===e)}function Of(e){return e.kind==="hook"?e.file():Oa(e.files()[0].target)}function Wt(e){return e.kind==="hook"?e.installed():pf(e.files()[0].target)}async function Pv(e,t){try{if(Ca(e)&&await Aa(e,"utf8")===t)return"present";await Av(Oa(e),{recursive:!0});let n=`${e}.tmp-${process.pid}`;return await Rv(n,t),await Cv(n,e),"updated"}catch{return"error"}}async function If(e,t,n){let[r,...s]=e.files(),o;try{o=await mf(r.target,ff(await Aa(fe(t,r.template),"utf8"),n))}catch{return"error"}if(o==="error")return o;for(let i of s){let a;try{a=await Pv(i.target,await Aa(fe(t,i.template),"utf8"))}catch{return"error"}if(a==="error")return"error";a==="updated"&&o==="present"&&(o="updated")}return o}async function Pf(e){let[t,...n]=e.files(),r=await hf(t.target);if(r!=="removed")return r;try{for(let s of n)Ca(s.target)&&await $v(s.target);if(n.length){let s=Oa(t.target);Ca(s)&&Ov(s).length===0&&await Tv(s)}return"removed"}catch{return"error"}}var $r,Ra,mt,Us=g(()=>{"use strict";_a();$a();$r=()=>Iv.homedir(),Ra=()=>process.env.XDG_CONFIG_HOME||fe($r(),".config"),mt=[{host:"opencode",label:"OpenCode",command:"setup-opencode",kind:"shim",files:()=>[{template:"opencode.js",target:fe(Ra(),"opencode","plugins","tokmizer.js")}],next:"Restart OpenCode so it loads the plugin."},{host:"kilo",label:"Kilo Code",command:"setup-kilo",kind:"shim",files:()=>[{template:"kilo.js",target:fe(Ra(),"kilo","plugin","tokmizer.js")}],next:"Restart Kilo Code (CLI or VS Code extension) so it loads the plugin."},{host:"amp",label:"Amp",command:"setup-amp",kind:"shim",files:()=>[{template:"amp.js",target:fe(Ra(),"amp","plugins","tokmizer.js")}],next:"Reload plugins in Amp (or restart it), then check it with: amp plugins list"},{host:"vibe",label:"Mistral Vibe",command:"setup-vibe",kind:"hook",file:Er,installed:Sf,ensure:_f,remove:Ef,next:"Restart Vibe so it reads hooks.toml."},{host:"antigravity",label:"Antigravity",command:"setup-antigravity",kind:"hook",file:Tr,installed:Tf,ensure:$f,remove:Rf,next:"Restart Antigravity, then check it with /hooks."},{host:"openclaw",label:"OpenClaw",command:"setup-openclaw",kind:"shim",files:()=>{let e=fe($r(),".openclaw","extensions","tokmizer");return["index.js","openclaw.plugin.json","package.json"].map(t=>({template:`openclaw/${t}`,target:fe(e,t)}))},next:"Run: openclaw plugins enable tokmizer && openclaw gateway restart"},{host:"pi",label:"Pi",command:"setup-pi",kind:"shim",files:()=>[{template:"pi.js",target:fe(process.env.PI_CODING_AGENT_DIR||fe($r(),".pi","agent"),"extensions","tokmizer.js")}],next:"Restart Pi (or run /reload) so it loads the extension."},{host:"omp",label:"Oh My Pi",command:"setup-omp",kind:"shim",files:()=>[{template:"omp.js",target:fe($r(),".omp","agent","extensions","tokmizer.js")}],next:"Restart omp so it loads the extension."},{host:"hermes",label:"Hermes",command:"setup-hermes",kind:"shim",files:()=>{let e=fe(process.env.HERMES_HOME||fe($r(),".hermes"),"plugins","tokmizer");return["__init__.py","plugin.yaml"].map(t=>({template:`hermes/${t}`,target:fe(e,t)}))},next:"Run: hermes plugins enable tokmizer, then restart Hermes (needs Hermes v2026.8.16 or newer)."}]});import{existsSync as Nv,readFileSync as Dv}from"node:fs";function Ia(e,t){return M(e)&&typeof e.command=="string"&&e.command.includes(t)}function Nf(e){return e.path??(e.nested?["hooks"]:[])}function Df(e,t){let n=e;for(let r of Nf(t))M(n[r])||(n[r]={}),n=n[r];return n}function Mf(e,t){let n=e;for(let s of Nf(t))n=M(n)?n[s]:void 0;if(!M(n))return[];let r=n[t.event];return Array.isArray(r)?r:[]}function Mv(e){return M(e)&&Array.isArray(e.hooks)?e.hooks:[]}function Ff(e,t){return(t.matcher===void 0?e:e.flatMap(Mv)).filter(r=>Ia(r,t.mark))}function jf(e,t){return Ff(Mf(e,t),t).length>0}function Pa(e,t){try{let n=JSON.parse(Dv(e,"utf8"));return M(n)&&jf(n,t)}catch{return!1}}function Fv(e,t,n){let r=Df(e,t),s=Array.isArray(r[t.event])?r[t.event]:[];r[t.event]=s;let o=Ff(s,t)[0];if(o)return o.command===n?"present":(o.command=n,"updated");let i=t.entry(n);return s.push(t.matcher===void 0?i:{matcher:t.matcher,hooks:[i]}),"added"}function jv(e,t){if(!jf(e,t))return!1;let n=Df(e,t),r=Mf(e,t),s=t.matcher===void 0?r.filter(o=>!Ia(o,t.mark)):r.map(o=>M(o)&&Array.isArray(o.hooks)?{...o,hooks:o.hooks.filter(i=>!Ia(i,t.mark))}:o).filter(o=>!M(o)||!Array.isArray(o.hooks)||o.hooks.length>0);return s.length?n[t.event]=s:delete n[t.event],!0}async function Na(e,t,n){let r=await K(e);if(!r||t.prepare&&!t.prepare(r))return"error";let s=Fv(r,t,n);return s==="present"||await W(e,r)?s:"error"}async function Bs(e,t){if(!Nv(e))return"absent";let n=await K(e);return n?jv(n,t)?await W(e,n)?"removed":"error":"absent":"error"}var Hf=g(()=>{"use strict";dt()});import{existsSync as Ma,readFileSync as Hv}from"node:fs";import{join as ee}from"node:path";import Lv from"node:os";function Le(){return Lv.homedir()}function Bf(e){return e.version===void 0&&(e.version=1),e.version===1}function zv(e,t,n){return Promise.all(e.map(r=>Na(r,t,n))).then(r=>r.includes("error")?"error":r.includes("updated")?"updated":r.includes("added")?"added":"present")}function Uv(e,t){return Promise.all(e.map(n=>Bs(n,t))).then(n=>n.includes("error")?"error":n.includes("removed")?"removed":"absent")}function qt(e,t){return{...e,installed:()=>e.files().some(n=>Pa(n,t)),ensure:n=>zv(e.files(),t,n),remove:()=>Uv(e.files(),t)}}function Jv(){return ee(process.env.COPILOT_HOME||ee(Le(),".copilot"),"hooks","tokmizer.json")}function Zv(){let e=[ee(Le(),".trae","hooks.json")];return Ma(ee(Le(),".trae-cn"))&&e.push(ee(Le(),".trae-cn","hooks.json")),e}function Kv(){return ee(process.env.QWEN_HOME||ee(Le(),".qwen"),"settings.json")}function qv(){return ee(process.env.XDG_CONFIG_HOME||ee(Le(),".config"),"crush","crush.json")}function Xv(){return ee(Le(),".junie","config.json")}function ex(){return ee(Le(),".zcode","cli","config.json")}function nx(){return ee(Le(),".grok","hooks","tokmizer.json")}function Da(){return ee(Le(),".factory")}function Js(){return[{file:ee(Da(),"hooks.json"),spec:Fa},{file:ee(Da(),"hooks","hooks.json"),spec:Fa},{file:ee(Da(),"settings.json"),spec:sx}]}function Lf(e){try{let t=JSON.parse(Hv(e,"utf8"));return M(t)?t:null}catch{return null}}function zf(e,t){let n=t?e?.hooks:e;return M(n)&&Array.isArray(n.PreToolUse)&&n.PreToolUse.length>0}function Uf(){let[e,t,n]=Js(),r=Ma(e.file)?e:Ma(t.file)?t:null;return r&&zf(Lf(r.file),!1)?r:zf(Lf(n.file),!0)?n:r??e}function Jf(e){return ht.find(t=>t.id===e)}function Vf(e){return ht.find(t=>t.setup===`tkr ${e}`)}function Zf(e,t,n){return He(e.bin,t,n)}var Bv,Vv,Gv,Wv,Yv,Qv,tx,rx,Fa,sx,ox,ht,Vs=g(()=>{"use strict";dt();Hf();Bv={mark:"tkr-copilot-hook",event:"PreToolUse",nested:!0,entry:e=>({type:"command",command:e,bash:e,powershell:e,timeout:10,timeoutSec:10}),prepare:Bf};Vv={mark:"tkr-trae-hook",event:"PreToolUse",nested:!0,matcher:"RunCommand",entry:e=>({type:"command",command:e,timeout:30}),prepare:Bf};Gv={mark:"tkr-qwen-hook",event:"PreToolUse",nested:!0,matcher:"run_shell_command",entry:e=>({name:"tokmizer",type:"command",command:e,timeout:10})};Wv={mark:"tkr-crush-hook",event:"PreToolUse",nested:!0,entry:e=>({name:"tokmizer",matcher:"^bash$",command:e,timeout:10})};Yv={mark:"tkr-junie-hook",event:"PreToolUse",nested:!0,matcher:"^Bash$",entry:e=>({type:"command",command:e,timeout:10})};Qv={mark:"tkr-zcode-hook",event:"PreToolUse",nested:!0,path:["hooks","events"],matcher:"Bash",entry:e=>({type:"command",command:e,timeoutMs:1e4}),prepare:e=>(e.hooks===void 0&&(e.hooks={}),M(e.hooks)?(e.hooks.enabled===void 0&&(e.hooks.enabled=!0),e.hooks.events===void 0||M(e.hooks.events)):!1)};tx={mark:"tkr-grok-hook",event:"PreToolUse",nested:!0,matcher:"Bash",entry:e=>({type:"command",command:e,timeout:10})};rx="tkr-droid-hook",Fa={mark:rx,event:"PreToolUse",nested:!1,matcher:"Execute",entry:e=>({type:"command",command:e,timeout:10})},sx={...Fa,nested:!0};ox={id:"droid",label:"Factory Droid",setup:"tkr setup-droid",bin:"tkr-droid-hook",restart:"Restart Droid, then check it with /hooks.",files:()=>[Uf().file],installed:()=>Js().some(e=>Pa(e.file,e.spec)),ensure:async e=>{let t=Uf(),n=await Na(t.file,t.spec,e);return n==="error"||await Promise.all(Js().filter(r=>r.file!==t.file).map(r=>Bs(r.file,r.spec))),n},remove:async()=>{let e=await Promise.all(Js().map(t=>Bs(t.file,t.spec)));return e.includes("error")?"error":e.includes("removed")?"removed":"absent"}},ht=[qt({id:"copilot",label:"GitHub Copilot",setup:"tkr setup-copilot",bin:"tkr-copilot-hook",restart:"Restart VS Code or Copilot CLI so they load the new hook.",files:()=>[Jv()]},Bv),ox,qt({id:"trae",label:"Trae",setup:"tkr setup-trae",bin:"tkr-trae-hook",restart:"Restart Trae so it loads the new hook.",files:Zv},Vv),qt({id:"qwen-code",label:"Qwen Code",setup:"tkr setup-qwen",bin:"tkr-qwen-hook",restart:"Restart Qwen Code, then check it with /hooks.",files:()=>[Kv()]},Gv),qt({id:"crush",label:"Crush",setup:"tkr setup-crush",bin:"tkr-crush-hook",restart:"Restart Crush so it loads the new hook.",files:()=>[qv()]},Wv),qt({id:"junie",label:"Junie CLI",setup:"tkr setup-junie",bin:"tkr-junie-hook",restart:"Restart Junie CLI so it loads the new hook.",files:()=>[Xv()]},Yv),qt({id:"zcode",label:"ZCode",setup:"tkr setup-zcode",bin:"tkr-zcode-hook",restart:"Restart ZCode so it loads the new hook.",files:()=>[ex()]},Qv),qt({id:"grok",label:"Grok Build",setup:"tkr setup-grok",bin:"tkr-grok-hook",restart:"Restart Grok Build (1.0.4 or newer) so it loads the new hook.",files:()=>[nx()]},tx)]});function La(e){return Ha.filter(t=>Gf.has(t.host)===e).flatMap(t=>t.vars)}function ja(e){return Gf.has(e)||(Kf[e]?.installed()??!1)}function Wf(e){let t=Kf[e];return t&&!t.installed()?t.setup:null}function Zs(e=process.env){let t=process.platform,n=t==="darwin"||t==="linux"||t==="win32"?t:"other",r=process.arch,s=e.TOKMIZER_HOST;if(s&&ix.includes(s)){let o=s;return{host:o,source:"env",os:n,arch:r,shimRecommended:!ja(o)}}for(let o of Ha)if(o.vars.some(i=>e[i]))return{host:o.host,source:"env",os:n,arch:r,shimRecommended:!ja(o.host)};return{host:"shell",source:"fallback",os:n,arch:r,shimRecommended:!0}}function qf(e){return ja(e)?"native-hooks":"shell-shim"}var Ha,ix,Gf,Kf,za=g(()=>{"use strict";Ls();zs();Us();Vs();Ha=[{host:"claude-code",vars:["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE","CLAUDE_CODE_VERSION","ANTHROPIC_CLAUDE_CODE"]},{host:"codex",vars:["CODEX_VERSION","CODEX_CLI","OPENAI_CODEX","CODEX_THREAD_ID","CODEX_SESSION_ID"]},{host:"cursor",vars:["CURSOR_AGENT","CURSOR_VERSION","CURSOR_TRACE_ID"]},{host:"cline",vars:["CLINE_VERSION","CLINE_API_KEY"]},{host:"aider",vars:["AIDER_VERSION","AIDER_MODEL"]},{host:"qwen-code",vars:["QWEN_CODE"]},{host:"gemini-cli",vars:["GEMINI_CLI","GEMINI_CLI_VERSION","GEMINI_API_KEY"]},{host:"windsurf",vars:["WINDSURF_VERSION","WINDSURF_USER"]},{host:"copilot",vars:["GITHUB_COPILOT_VERSION","COPILOT_INTEGRATION_ID"]},{host:"opencode",vars:[]},{host:"amp",vars:[]},{host:"vibe",vars:[]},{host:"antigravity",vars:[]},{host:"openclaw",vars:[]},{host:"pi",vars:[]},{host:"omp",vars:[]},{host:"hermes",vars:[]},{host:"crush",vars:["CRUSH"]},{host:"droid",vars:[]},{host:"trae",vars:[]},{host:"junie",vars:[]},{host:"zcode",vars:[]},{host:"grok",vars:[]},{host:"kilo",vars:[]}],ix=[...Ha.map(e=>e.host),"shell"],Gf=new Set(["claude-code","codex"]),Kf={cursor:{installed:Zt,setup:"tkr setup-cursor"},"gemini-cli":{installed:Kt,setup:"tkr setup-gemini"},...Object.fromEntries(mt.map(e=>[e.host,{installed:()=>Wt(e),setup:`tkr ${e.command}`}])),...Object.fromEntries(ht.map(e=>[e.id,{installed:e.installed,setup:e.setup}]))}});var op={};Z(op,{ensurePathInRc:()=>Cr,ensureShimPath:()=>Xs,envWithoutShimDir:()=>ux,installShims:()=>Xt,listShimmableCommands:()=>dx,powershellProfilePath:()=>sp,powershellProfileSnippet:()=>rp,refreshShimsIfStale:()=>fx,refreshStaleShims:()=>tp,resolveShimJsPath:()=>ze,shellRcLine:()=>Ye,shimsDir:()=>B,shimsInstalled:()=>Or,uninstallShims:()=>Ja,unixWrapperScript:()=>qs,windowsWrapperScript:()=>np});import{mkdir as Ua,writeFile as Ar,readFile as Ks,unlink as Ba,chmod as Qf,rename as ax}from"node:fs/promises";import{existsSync as Yt}from"node:fs";import{delimiter as Yf,join as te,dirname as Gs}from"node:path";import{fileURLToPath as cx}from"node:url";import{execFileSync as lx}from"node:child_process";import ye from"node:os";function B(){return te(w(),"shims")}function ux(){let e=B(),t={...process.env},n=process.platform==="win32"?"Path":"PATH",s=(t[n]??t.PATH??"").split(Yf).filter(o=>o&&o!==e);return t[n]=s.join(Yf),n==="Path"&&(t.PATH=t[n]),t}function Or(){try{let e=ye.platform()==="win32";return Yt(te(B(),e?"git.cmd":"git"))}catch{return!1}}function dx(){return[...Ws]}function Rr(e){return`'${e.replace(/'/g,"'\\''")}'`}function Xf(e){return`"${e.map(t=>`\${${t}:-}`).join("")}"`}function ep(e,t){let n=Ce()?xn(e):null;return n?[t(_n()),...n].join(" "):`node ${t(e)}`}function qs(e,t){return["#!/bin/sh",`if [ -n ${Xf(La(!0))} ] || { [ -z ${Xf(La(!1))} ] && [ ! -t 1 ]; }; then`," set -f",` _tk_d=${Rr(B())}`,` _tk_c=${Rr(t)}`," _tk_o=$IFS; IFS=:; _tk_p=; _tk_x="," for _tk_e in $PATH; do",' [ -n "$_tk_e" ] || continue',' [ "$_tk_e" -ef "$_tk_d" ] && continue'," _tk_p=${_tk_p:+$_tk_p:}$_tk_e",' [ -z "$_tk_x" ] && [ -f "$_tk_e/$_tk_c" ] && [ -x "$_tk_e/$_tk_c" ] && _tk_x=$_tk_e/$_tk_c'," done"," IFS=$_tk_o; PATH=$_tk_p; export PATH; set +f",' [ -n "$_tk_x" ] || { echo "$_tk_c: command not found" >&2; exit 127; }',' exec "$_tk_x" "$@"',"fi",`exec ${ep(e,Rr)} --as ${Rr(t)} "$@"`,""].join(`
51
+ `)}async function fx(e,t){if(ye.platform()==="win32")return 0;try{if(await Ks(te(B(),t),"utf8")===qs(e,t))return 0}catch{return 0}return tp(e)}async function tp(e){if(ye.platform()==="win32")return 0;let t=B();if(!Yt(t))return 0;let n=0;for(let r of Ws){let s=te(t,r),o=qs(e,r),i;try{i=await Ks(s,"utf8")}catch{continue}if(i===o)continue;let a=`${s}.${process.pid}.tmp`;try{await Ar(a,o,{mode:493}),await Qf(a,493),await ax(a,s),n+=1}catch{try{await Ba(a)}catch{}}}return n}function np(e,t){return["@echo off",`${ep(e,n=>`"${n}"`)} --as "${t}" %*`,""].join(`\r
52
+ `)}async function Xt(e){let t=B();await Ua(t,{recursive:!0,mode:448});let n=[],r=ye.platform()==="win32";for(let s of Ws){let o=r?te(t,`${s}.cmd`):te(t,s);if(Yt(o))try{await Ba(o)}catch{}r?await Ar(o,np(e,s)):(await Ar(o,qs(e,s),{mode:493}),await Qf(o,493)),n.push(s)}return n}async function Ja(){let e=B();if(!Yt(e))return 0;let t=0,n=ye.platform()==="win32";for(let r of Ws){let s=n?te(e,`${r}.cmd`):te(e,r);try{await Ba(s),t+=1}catch{}}return t}function Ye(e=!1){let t=e?`'${B().replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`:Rr(B());return`${Ys}
53
+ ${e?`set -gx PATH ${t} $PATH`:`export PATH=${t}:"$PATH"`}
54
+ `}async function Cr(e,t=!1){try{await Ua(Gs(e),{recursive:!0});let n=Yt(e)?await Ks(e,"utf8"):"";return n.includes(Ys)?"present":(await Ar(e,`${n.replace(/\n*$/,`
26
55
  `)}
27
- ${pe(e)}`,{mode:384}),"added")}catch{return"missing"}}function Wo(){return`${Ir}
28
- $env:Path = '${D().replace(/'/g,"''")};' + $env:Path
29
- `}function qo(){let t=V.platform()==="win32"?Ul("powershell.exe",["-NoProfile","-NonInteractive","-Command","[Environment]::GetFolderPath('MyDocuments')"],{encoding:"utf8",windowsHide:!0}).trim():M(V.homedir(),"Documents");return M(t||M(V.homedir(),"Documents"),"PowerShell","profile.ps1")}async function Dr(){if(V.platform()==="win32"){let o=M(V.homedir(),"Documents","PowerShell","profile.ps1"),i=Wo();try{o=qo();let a=!1;for(let c of[o,M(Cr(Cr(o)),"WindowsPowerShell","profile.ps1")]){await Kn(Cr(c),{recursive:!0});let u=Ge(c)?await $r(c,"utf8"):"";u.includes(Ir)||(await Ut(c,`${u.replace(/\n*$/,`
56
+ ${Ye(t)}`,{mode:384}),"added")}catch{return"missing"}}function rp(){return`${Ys}
57
+ $env:Path = '${B().replace(/'/g,"''")};' + $env:Path
58
+ `}function sp(){let e=ye.platform()==="win32"?lx("powershell.exe",["-NoProfile","-NonInteractive","-Command","[Environment]::GetFolderPath('MyDocuments')"],{encoding:"utf8",windowsHide:!0}).trim():te(ye.homedir(),"Documents");return te(e||te(ye.homedir(),"Documents"),"PowerShell","profile.ps1")}async function Xs(){if(ye.platform()==="win32"){let o=te(ye.homedir(),"Documents","PowerShell","profile.ps1"),i=rp();try{o=sp();let a=!1;for(let c of[o,te(Gs(Gs(o)),"WindowsPowerShell","profile.ps1")]){await Ua(Gs(c),{recursive:!0});let l=Yt(c)?await Ks(c,"utf8"):"";l.includes(Ys)||(await Ar(c,`${l.replace(/\n*$/,`
30
59
  `)}
31
- ${i}`),a=!0)}return{status:a?"added":"present",target:o,manual:i}}catch{return{status:"missing",target:o,manual:i}}}let t=process.env.SHELL??"",e=t.endsWith("/fish"),r=e?".config/fish/config.fish":t.endsWith("/zsh")?".zshrc":t.endsWith("/bash")?".bashrc":".profile",n=M(V.homedir(),r),s=await Zt(n,e);if(t.endsWith("/bash")&&s!=="missing"){let o=[".bash_profile",".bash_login",".profile"].map(a=>M(V.homedir(),a)).find(Ge)??M(V.homedir(),".bash_profile"),i=await Zt(o);if(i==="missing")return{status:"missing",target:o,manual:pe()};if(i==="added")return{status:"added",target:o,manual:pe()}}return{status:s,target:n,manual:pe(e)}}function ae(){return process.env.TOKMIZER_SHIM_JS?process.env.TOKMIZER_SHIM_JS:zl(new URL("../bin/tkr-shim.js",import.meta.url))}var Pr,Ir,Nr=S(()=>{"use strict";I();Vn();Pr=["git","npm","yarn","pnpm","docker","kubectl","terraform","tofu","cargo","go","mvn","gradle","rg","grep","find","ls","cat","tail","head","ps","lsof","ssh","scp","rsync","curl","wget","jq","yq","make"];Ir="# tokmizer-shim PATH (managed by tokmizer)"});var Di={};Q(Di,{TAP_FORMULA_PATHS:()=>Oi,brewTapStatus:()=>fd,formulaWedged:()=>Ii});import{readFileSync as ld}from"node:fs";function Ii(t){return/^(?:<{7}|={7}|>{7})/m.test(t)}function fd(t=Oi){for(let e of t)try{return{path:e,wedged:Ii(ld(e,"utf8"))}}catch{}return null}var dd,Oi,Ni=S(()=>{"use strict";dd=["/opt/homebrew/Library/Taps","/usr/local/Homebrew/Library/Taps","/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps"],Oi=dd.map(t=>`${t}/norwelltw/homebrew-tokmizer/Formula/tokmizer.rb`)});function Li(t,e,r,n=e){let s=Mi.get(n);s||(s=new Map,Mi.set(n,s));let o=JSON.stringify([t,r?[...r].sort():null]),i=s.get(o);if(i!==void 0)return i;let a=null;for(let c of e)r&&!r.has(ke(c.slug))||c.matchRegex.test(t)&&(!a||c.priority>a.priority)&&(a=c);if(s.size>=md){let c=s.keys().next().value;c&&s.delete(c)}return s.set(o,a),a}var Mi,md,Fi=S(()=>{"use strict";vt();Mi=new WeakMap,md=256});import{createCipheriv as Ch,createDecipheriv as pd,hkdfSync as hd,randomBytes as $h}from"node:crypto";function wd(t){return Buffer.from(hd("sha256",Buffer.from(t,"utf8"),gd,yd,32))}function ji(t,e){let r=wd(e),n=Buffer.from(t,"base64url"),s=n.subarray(0,12),o=n.subarray(12,28),i=n.subarray(28),a=pd("aes-256-gcm",r,s);return a.setAuthTag(o),Buffer.concat([a.update(i),a.final()]).toString("utf8")}var gd,yd,zi=S(()=>{"use strict";gd=Buffer.from("tokmizer-bundle-enc-v1"),yd=Buffer.from("rules-bundle")});import{chmodSync as bd,readFileSync as kd,writeFileSync as vd,mkdirSync as _d,renameSync as xd}from"node:fs";import{join as Ui}from"node:path";function ts(){return Ui(y(),"bundle-cache.json")}function Zi(t){try{let e=y();_d(e,{recursive:!0});let r={...t,fetchedAt:Date.now()},n=Ui(e,`bundle-cache.${process.pid}.tmp`);vd(n,JSON.stringify(r),{mode:384}),xd(n,ts()),bd(ts(),384)}catch{}}function Hi(){try{let t=kd(ts(),"utf8"),e=Sd.safeParse(JSON.parse(t));return e.success?e.data:null}catch{return null}}var Sd,Bi=S(()=>{"use strict";st();I();Sd=f.object({payload:f.string().min(1),signature:f.string().min(1),enc:f.literal("v1"),fetchedAt:f.number().int().nonnegative()})});var ss={};Q(ss,{BundleFetchError:()=>Bt,bundleExpired:()=>$d,fetchBundle:()=>Id,healOn401:()=>Od,maxBundleAgeMs:()=>rs,runtimeFromCache:()=>Dd,runtimeFromEnvelope:()=>ns});import{createPublicKey as Ed,verify as Td}from"node:crypto";function rs(){let t=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(t)&&t>0?t:Cd}function $d(t,e=Date.now()){return e-t.fetchedAt>rs()}function Pd(t,e){let r=Tt();if(!r||!r.includes("BEGIN PUBLIC KEY"))throw new Error("tkr-daemon: no valid signing public key configured (set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM at build time).");let n=Ed({key:r,format:"pem"});if(!Td(null,Buffer.from(t.payload,"utf8"),n,Buffer.from(t.signature,"base64url")))throw new Error("tkr-daemon: rules bundle signature invalid");return JSON.parse(ji(t.payload,e))}async function Od(t,e,r){if(t instanceof Bt&&(t.status===401||t.status===403))try{return await r.heartbeat(e),await r.fetchBundle(e)}catch(n){return r.log(`initial fetch failed after heartbeat: ${n.message}`),null}return r.log(`initial fetch failed: ${t.message}`),null}async function Id(t){let e=await T();if(!e||!e.jwt)throw new Error("tkr-daemon: not activated (no JWT)");if(!e.signingSecret)throw new Error("tkr-daemon: not activated (no signing secret)");let r=await j("GET","/api/v1/rules/bundle",void 0,{baseUrl:t,bearer:e.jwt,signingSecret:e.signingSecret,fingerprint:e.fingerprint??"0".repeat(64),installId:e.installId,timeoutMs:1e4});if(!r.ok)throw new Bt(r.status);let n=Rd.parse(await r.json()),s=ns(n,e.signingSecret);return Zi(n),s}function ns(t,e){let r=Pd(t,e),n=Ad.parse(r);if(Date.now()-n.signedAt>rs())throw new Error("tkr-daemon: rules bundle is stale");let s=new Map;for(let o of n.filters)s.set(o.slug,{...o,matchRegex:new RegExp(o.match_command)});return{bundleVersion:n.bundleVersion,signedAt:n.signedAt,ruleCount:s.size,startedAt:Date.now(),fetchedAt:Date.now(),selectFor:(o,i,a)=>Li(o,s.values(),a?new Set(a):null,s)}}async function Dd(){try{let t=Hi();if(!t)return null;let e=await T();return e?.signingSecret?ns(t,e.signingSecret):null}catch{return null}}var Ad,Rd,Cd,Bt,os=S(()=>{"use strict";st();sn();Fi();fe();Be();zi();Bi();Ad=f.object({bundleVersion:f.number().int().nonnegative(),signedAt:f.number().int(),filters:f.array(ur)}),Rd=f.object({payload:f.string().min(1),signature:f.string().min(1),enc:f.literal("v1")}),Cd=10080*60*1e3;Bt=class extends Error{status;constructor(e){super(`tkr-daemon: bundle fetch failed ${e}`),this.status=e}}});import Qo from"node:readline/promises";import{stdin as Yn,stdout as K}from"node:process";import Vl from"node:os";import{join as Kl}from"node:path";var H={welcome:"Link your Tokmizer account.",needToken:"Tokmizer already works on this device. Linking attaches it to your account.",getToken:"Sign in at tokmizer.com, then grab your key from your dashboard.",askToken:"Paste your dashboard key, then press Enter:",activating:"Linking...",activated:t=>`Linked. You are on the ${t} plan.`,failed:t=>`Activation failed: ${t}`,suspended:t=>`Your token is suspended. ${t}`,revoked:"Your token has been revoked. Contact support at tokmizer.com/contact",rotated:"Token rotated. Paste your new token from tokmizer.com/dashboard/token",offline:"Network required. Tokmizer needs an internet connection.",deviceCap:"Device limit reached. Manage devices at tokmizer.com/dashboard/devices"};function Fr(t,e){return t===null?e!==null?` \u26A0 engine offline \u2014 compression continues on ${e} cached rules (details: tkr doctor)
60
+ ${i}`),a=!0)}return{status:a?"added":"present",target:o,manual:i}}catch{return{status:"missing",target:o,manual:i}}}let e=process.env.SHELL??"",t=e.endsWith("/fish"),n=t?".config/fish/config.fish":e.endsWith("/zsh")?".zshrc":e.endsWith("/bash")?".bashrc":".profile",r=te(ye.homedir(),n),s=await Cr(r,t);if(e.endsWith("/bash")&&s!=="missing"){let o=[".bash_profile",".bash_login",".profile"].map(a=>te(ye.homedir(),a)).find(Yt)??te(ye.homedir(),".bash_profile"),i=await Cr(o);if(i==="missing")return{status:"missing",target:o,manual:Ye()};if(i==="added")return{status:"added",target:o,manual:Ye()}}return{status:s,target:r,manual:Ye(t)}}function ze(){return process.env.TOKMIZER_SHIM_JS?process.env.TOKMIZER_SHIM_JS:cx(new URL("../bin/tkr-shim.js",import.meta.url))}var Ws,Ys,Ir=g(()=>{"use strict";ds();We();z();za();Ws=["git","npm","yarn","pnpm","docker","kubectl","terraform","tofu","cargo","go","mvn","gradle","rg","grep","find","ls","cat","tail","head","ps","lsof","ssh","scp","rsync","curl","wget","jq","yq","make"];Ys="# tokmizer-shim PATH (managed by tokmizer)"});import{existsSync as jS,readFileSync as HS,statSync as mm}from"node:fs";import{spawnSync as LS}from"node:child_process";import{delimiter as zS,isAbsolute as US,join as oe}from"node:path";import BS from"node:os";function Mr(){return{home:BS.homedir(),env:process.env,platform:process.platform,cwd:process.cwd()}}function ao(e,t){let n=e.env[t];return n&&US(n)?n:null}function Fr(e){return e.platform==="darwin"?[{dir:oe(e.home,"Library","Application Support","rtk"),readByRtk:!0},{dir:oe(e.home,".config","rtk"),readByRtk:!1}]:e.platform==="win32"?[{dir:oe(ao(e,"APPDATA")??oe(e.home,"AppData","Roaming"),"rtk"),readByRtk:!0}]:[{dir:oe(ao(e,"XDG_CONFIG_HOME")??oe(e.home,".config"),"rtk"),readByRtk:!0}]}function lo(e){return e.platform==="darwin"?oe(e.home,"Library","Application Support","rtk"):e.platform==="win32"?oe(ao(e,"LOCALAPPDATA")??oe(e.home,"AppData","Local"),"rtk"):oe(ao(e,"XDG_DATA_HOME")??oe(e.home,".local","share"),"rtk")}function hm(e){return oe(lo(e),"trusted_filters.json")}function gm(e){for(let{dir:t,readByRtk:n}of Fr(e)){let r=oe(t,"config.toml");if(n&&jS(r))return r}return null}function km(e,t){let n=e.env.RTK_DB_PATH;return n||t||oe(lo(e),"history.db")}function JS(e){try{return mm(e).isFile()}catch{return!1}}function hc(e,t=[],n=!0){let r=e.env.PATH??e.env.Path??"",s=e.platform==="win32"?["rtk.exe","rtk.cmd"]:["rtk"];for(let o of r.split(e.platform==="win32"?";":zS))if(!(!o||t.includes(o)))for(let i of s){let a=oe(o,i);if(!JS(a))continue;let c=!1;try{c=mm(a).size<4096&&HS(a,"utf8").includes(co)}catch{}return{path:a,version:c||!n?null:VS(a,e),compatShim:c}}return null}function VS(e,t){try{return(`${LS(e,["--version"],{encoding:"utf8",timeout:3e3,env:{...t.env,RTK_TELEMETRY_DISABLED:"1"}}).stdout??""}`.split(`
61
+ `)[0]?.trim()??"")||null}catch{return null}}var co,Pn=g(()=>{"use strict";co="tokmizer-rtk-compat"});import{createHash as ZS}from"node:crypto";import{readFileSync as wm,realpathSync as GS}from"node:fs";import{basename as KS,join as ym}from"node:path";function YS(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"project"}function bm(e){let t=[];for(let{dir:n,readByRtk:r}of Fr(e))t.push({path:ym(n,"filters.toml"),scope:"global",readByRtk:r,target:r?"rtk-global.toml":"rtk-global-unused-dir.toml"});return t.push({path:ym(e.cwd,".rtk","filters.toml"),scope:"project",readByRtk:!0,target:`rtk-project-${YS(KS(e.cwd))}.toml`}),t}function XS(e){return ZS("sha256").update(e).digest("hex")}function QS(e,t,n){try{let s=JSON.parse(wm(hm(e),"utf8")).trusted?.[GS(t)];return typeof s?.sha256=="string"&&s.sha256===XS(n)}catch{return!1}}function e_(e){let t=[],n=0,r=!1,s=!1,o=0;for(let i=0;i<e.length;i+=1){let a=e[i];if(s){s=!1;continue}a==="\\"?s=!0:a==="["&&!r?r=!0:a==="]"&&r?r=!1:a==="("&&!r?n+=1:a===")"&&!r?n=Math.max(0,n-1):a==="|"&&!r&&n===0&&(t.push(e.slice(o,i)),o=i+1)}return t.push(e.slice(o)),t}function t_(e){return e_(e).every(t=>t.replace(/^\(\?[imsuxU-]+\)/,"").startsWith("^"))}function n_(e,t){if(typeof t!="object"||t===null||Array.isArray(t))return{name:e,reason:"not a table"};let n=t,r=[],s=[];for(let[i,a]of Object.entries(n)){if(WS.has(i))continue;let c=qS[i];c?c(a)&&r.push(i):s.push(i)}if(s.length>0)return{name:e,reason:`unknown key${s.length===1?"":"s"} ${s.join(", ")} (rtk rejects them too)`};if(r.length>0)return{name:e,reason:`uses ${r.join(", ")}, which Tokmizer filters do not support`};if(typeof n.match_command!="string")return{name:e,reason:"match_command is missing"};if(!t_(n.match_command))return{name:e,reason:"match_command is not anchored with ^, so rtk ignored this filter"};let o={match_command:n.match_command};for(let i of["description","strip_ansi","strip_lines_matching","truncate_lines_at","max_lines","on_empty"])n[i]!==void 0&&(o[i]=n[i]);return o.strip_ansi===!1&&delete o.strip_ansi,Array.isArray(o.strip_lines_matching)&&o.strip_lines_matching.length===0&&delete o.strip_lines_matching,o.max_lines!==void 0&&(o.scale_with_level=!1),{name:e,rule:o}}function r_(e){let t=new Map;if(typeof e!="object"||e===null||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){if(!Array.isArray(r))continue;let s=r.flatMap(o=>{if(typeof o!="object"||o===null)return[];let{name:i,input:a,expected:c}=o;return typeof a!="string"||typeof c!="string"?[]:[{...typeof i=="string"&&i?{name:i}:{},input:a,expected:c}]});t.set(n,s)}return t}async function vm(e,t){let n;try{n=wm(t.path)}catch{return null}let r={source:t,text:null,imported:[],skipped:[],fileIssue:null,tests:[],untested:[],orphanTests:[],trustedByRtk:QS(e,t.path,n)},{parse:s,stringify:o}=await Promise.resolve().then(()=>(Is(),Os)),i;try{i=s(n.toString("utf8").replace(/^/,""))}catch(d){return r.fileIssue=`not valid TOML (${String(d.message).split(`
62
+ `)[0]})`,r}if(i.schema_version!==1)return r.fileIssue=`schema_version ${JSON.stringify(i.schema_version??null)} is not 1, so rtk did not load this file`,r;let a=typeof i.filters=="object"&&i.filters!==null&&!Array.isArray(i.filters)?i.filters:{},c=r_(i.tests),l={};for(let[d,f]of Object.entries(a)){let p=n_(d,f);if("reason"in p){r.skipped.push(p);continue}let m={...p.rule,...c.get(d)?.length?{tests:c.get(d)}:{}},v=await Jt(o({schema_version:1,filters:{[d]:m}}),t.target);if(v.issues.length>0){r.skipped.push({name:d,reason:v.issues.map(S=>S.message.replace(`${d}: `,"")).join("; ")});continue}l[d]=m,r.imported.push(d)}if(r.orphanTests=[...c.keys()].filter(d=>!(d in a)),r.imported.length===0)return r;r.text=o({schema_version:1,filters:l});let u=Ns(await Jt(r.text,t.target));return r.tests=u.results,r.untested=u.untested,r}var WS,qS,xm=g(()=>{"use strict";Vt();Pn();WS=new Set(["description","match_command","strip_ansi","strip_lines_matching","truncate_lines_at","max_lines","on_empty"]),qS={replace:e=>Array.isArray(e)&&e.length>0,match_output:e=>Array.isArray(e)&&e.length>0,keep_lines_matching:e=>Array.isArray(e)&&e.length>0,head_lines:e=>e!==void 0,tail_lines:e=>e!==void 0,filter_stderr:e=>e===!0}});import{readFileSync as s_}from"node:fs";function Nn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function a_(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c_(e){let t=e.trim();return!t||t==="^"?null:t.startsWith("^")?t:`^${a_(t)}($|\\s)`}async function Sm(e){let t={file:gm(e),parseError:null,excludePatterns:[],excludeText:null,excludeSkipped:[],retentionDays:null,restoreDisabled:!1,telemetryOff:!1,historyPath:null,notImported:[]};if(!t.file)return t;let{parse:n,stringify:r}=await Promise.resolve().then(()=>(Is(),Os)),s;try{s=n(s_(t.file,"utf8").replace(/^/,""))}catch(f){return t.parseError=String(f.message).split(`
63
+ `)[0]??"unreadable",t}for(let[f,p]of Object.entries(s)){let m=Nn(p);if(Object.keys(m).length===0&&(typeof p!="object"||p===null)){t.notImported.push(f);continue}for(let v of Object.keys(m))l_.has(`${f}.${v}`)||t.notImported.push(`${f}.${v}`)}let o=Nn(s.hooks),i=Nn(s.retriever),a=Nn(s.tee),c=Nn(s.telemetry),l=Nn(s.tracking);if(Array.isArray(o.exclude_commands)){t.excludePatterns=o.exclude_commands.filter(m=>typeof m=="string");let f={},p=0;for(let m of t.excludePatterns){let v=c_(m);if(!v){t.excludeSkipped.push({name:m,reason:"empty pattern, rtk ignores it too"});continue}p+=1;let S=`rtk-exclude-${p}`,$={description:`Left unchanged, as rtk exclude_commands "${m}"`.slice(0,255),match_command:v,preserve_exact:!0,priority:100};if((await Jt(r({schema_version:1,filters:{[S]:$}}),"rtk-excluded.toml")).issues.length>0){t.excludeSkipped.push({name:m,reason:"not a regular expression Tokmizer can read"}),p-=1;continue}f[S]=$}Object.keys(f).length>0&&(t.excludeText=r({schema_version:1,filters:f}))}let u=Object.keys(i).length>0;(i.mode==="disabled"||!u&&a.enabled===!1)&&(t.restoreDisabled=!0);let d=i.retention_days;return typeof d=="number"&&Number.isInteger(d)&&d>0&&d!==o_&&d!==i_&&(t.retentionDays=Math.min(d,365)),t.telemetryOff=c.enabled===!1||c.consent_given===!1,typeof l.database_path=="string"&&l.database_path&&(t.historyPath=l.database_path),t}var o_,i_,l_,_m=g(()=>{"use strict";Vt();Pn();o_=30,i_=30;l_=new Set(["hooks.exclude_commands","retriever.mode","retriever.retention_days","tee.enabled","telemetry.enabled","telemetry.consent_given","telemetry.consent_date","tracking.database_path"])});function ne(e){throw new gc(e)}function d_(e){(e.length<100||e.toString("latin1",0,16)!==u_)&&ne("not a SQLite database");let t=e.readUInt16BE(16),n=t===1?65536:t;(n<512||n>65536||(n&n-1)!==0)&&ne("invalid page size");let r=e.readUInt32BE(56);r!==0&&r!==1&&ne("only UTF-8 databases can be read");let s=n-e[20];return s<480&&ne("invalid reserved space"),{buf:e,pageSize:n,usable:s,pageCount:Math.floor(e.length/n)}}function uo(e,t){let n=0;for(let r=0;r<8;r+=1){t+r>=e.length&&ne("truncated varint");let s=e[t+r];if(n=n*128+(s&127),s<128)return[n,t+r+1]}return t+8>=e.length&&ne("truncated varint"),[n*256+e[t+8],t+9]}function Tm(e,t){return(!Number.isInteger(t)||t<1||t>e.pageCount)&&ne("page out of range"),(t-1)*e.pageSize}function f_(e,t,n){let r=e.usable-35;if(n<=r)return t+n>e.buf.length&&ne("truncated cell"),e.buf.subarray(t,t+n);let s=Math.floor((e.usable-12)*32/255)-23,o=s+(n-s)%(e.usable-4),i=o<=r?o:s,a=[e.buf.subarray(t,t+i)],c=n-i,l=e.buf.readUInt32BE(t+i),u=new Set;for(;c>0;){u.has(l)&&ne("overflow loop"),u.add(l);let d=Tm(e,l),f=Math.min(c,e.usable-4);a.push(e.buf.subarray(d+4,d+4+f)),c-=f,l=e.buf.readUInt32BE(d)}return Buffer.concat(a)}function p_(e){let[t,n]=uo(e,0);t>e.length&&ne("bad record header");let r=[],s=n;for(;s<t;){let[c,l]=uo(e,s);r.push(c),s=l}let o=t,i=[],a=c=>{o+c>e.length&&ne("truncated record")};for(let c of r)if(c===0)i.push(null);else if(c>=1&&c<=6){let l=[0,1,2,3,4,6,8][c];if(a(l),c===6){let u=e.readBigInt64BE(o);i.push(u>=BigInt(Number.MIN_SAFE_INTEGER)&&u<=BigInt(Number.MAX_SAFE_INTEGER)?Number(u):u)}else i.push(e.readIntBE(o,l));o+=l}else if(c===7)a(8),i.push(e.readDoubleBE(o)),o+=8;else if(c===8||c===9)i.push(c-8);else if(c>=12){let l=Math.floor((c-(c%2===0?12:13))/2);a(l);let u=e.subarray(o,o+l);i.push(c%2===0?new Uint8Array(u):u.toString("utf8")),o+=l}else ne("reserved serial type");return i}function Em(e,t,n){let r=[t],s=new Set;for(;r.length>0;){let o=r.pop();s.has(o)&&ne("b-tree loop"),s.add(o);let i=Tm(e,o),a=i+(o===1?100:0),c=e.buf[a],l=e.buf.readUInt16BE(a+3);if(c===5){let u=[];for(let d=0;d<l;d+=1){let f=i+e.buf.readUInt16BE(a+12+d*2);u.push(e.buf.readUInt32BE(f))}u.push(e.buf.readUInt32BE(a+8));for(let d=u.length-1;d>=0;d-=1)r.push(u[d])}else if(c===13)for(let u=0;u<l;u+=1){let d=i+e.buf.readUInt16BE(a+8+u*2),[f,p]=uo(e.buf,d),[m,v]=uo(e.buf,p);n(m,p_(f_(e,v,f)))}else ne("unexpected page type")}}function m_(e){let t=[],n=0,r=null,s=0;for(let o=0;o<e.length;o+=1){let i=e[o];r?i===r&&(r=null):i==="'"||i==='"'||i==="`"?r=i:i==="["?r="]":i==="("?n+=1:i===")"?n-=1:i===","&&n===0&&(t.push(e.slice(s,o)),s=o+1)}return t.push(e.slice(s)),t}function g_(e){let t=e.indexOf("("),n=e.lastIndexOf(")");(t<0||n<=t)&&ne("unreadable table definition");let r=[],s=-1;for(let o of m_(e.slice(t+1,n))){let i=o.trim();if(!i||h_.test(i))continue;let a=/^(?:"([^"]+)"|`([^`]+)`|\[([^\]]+)\]|([^\s]+))/.exec(i);if(!a)continue;let c=a[1]??a[2]??a[3]??a[4];s<0&&/\binteger\s+primary\s+key\b/i.test(i)&&(s=r.length),r.push(c)}return{names:r,rowidAlias:s}}function $m(e,t,n){let r=d_(e),s=0,o="";Em(r,1,(l,u)=>{u[0]==="table"&&u[1]===t&&typeof u[3]=="number"&&typeof u[4]=="string"&&(s=u[3],o=u[4])}),s||ne(`no ${t} table`);let{names:i,rowidAlias:a}=g_(o),c=0;return Em(r,s,(l,u)=>{let d={};i.forEach((f,p)=>{d[f]=p===a&&(u[p]??null)===null?l:u[p]??null}),n(d),c+=1}),c}var gc,u_,h_,Rm=g(()=>{"use strict";gc=class extends Error{},u_="SQLite format 3\0";h_=/^(?:constraint|primary|unique|check|foreign)\b/i});import{readFileSync as k_,statSync as y_}from"node:fs";import{readFile as w_,writeFile as gI,mkdir as kI,rename as yI}from"node:fs/promises";import{join as b_}from"node:path";function fo(){return b_(w(),"rtk-import.json")}function kc(e){return typeof e=="number"&&Number.isFinite(e)?e:typeof e=="bigint"?Number(e):0}function Am(e,t=new Date){try{if(y_(e).size>v_)return{error:"the history file is too large to read"}}catch{return{error:"no history file"}}try{let n={source:e,commands:0,inputTokens:0,outputTokens:0,savedTokens:0,firstAt:null,lastAt:null,importedAt:t.toISOString()};return $m(k_(e),"commands",r=>{n.commands+=1,n.inputTokens+=kc(r.input_tokens),n.outputTokens+=kc(r.output_tokens),n.savedTokens+=kc(r.saved_tokens);let s=typeof r.timestamp=="string"?r.timestamp:null;s&&(!n.firstAt||s<n.firstAt)&&(n.firstAt=s),s&&(!n.lastAt||s>n.lastAt)&&(n.lastAt=s)}),{totals:n}}catch(n){return{error:`could not read it (${n.message})`}}}async function yc(){try{let e=JSON.parse(await w_(fo(),"utf8"));return typeof e.commands!="number"||typeof e.savedTokens!="number"?null:e}catch{return null}}function x_(e){return e>=1e9?`${(e/1e9).toFixed(1)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function Cm(e){let t=e.firstAt&&e.lastAt?`, ${e.firstAt.slice(0,10)} to ${e.lastAt.slice(0,10)}`:"";return` Imported from rtk: ${x_(e.savedTokens)} tokens saved over ${e.commands} command${e.commands===1?"":"s"}${t} (rtk's own estimate, not included above)
64
+ `}var v_,wc=g(()=>{"use strict";z();Rm();v_=512*1024*1024});var Dm={};Z(Dm,{claudeDir:()=>mo,doubleHooked:()=>F_,isRtkHookCommand:()=>vc,scanRtkHooks:()=>go,tokmizerInClaude:()=>Nm});import{existsSync as S_,readFileSync as Om}from"node:fs";import{basename as __,join as P}from"node:path";function Xe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T_(e){let t=[],n=/"((?:\\.|[^"\\])*)"|'([^']*)'|(\S+)/g;for(let r of e.trim().matchAll(n))t.push(r[1]??r[2]??r[3]??"");return t}function vc(e,t){if(typeof e!="string")return!1;if(/rtk-rewrite\.sh|rtk-hook-gemini\.sh/.test(e))return!0;let n=T_(e);if(n.length!==3)return!1;let r=__(n[0].replace(/\\/g,"/")).toLowerCase();return(r==="rtk"||r==="rtk.exe")&&n[1]==="hook"&&n[2]===t}function ho(e){try{let t=JSON.parse(Om(e,"utf8"));return Xe(t)?t:null}catch{return null}}function en(e){try{return Om(e,"utf8")}catch{return null}}function $_(e,t){let n=0,r=[];for(let s of e)if(Xe(s)&&Array.isArray(s.hooks)){let o=s.hooks.filter(a=>!(Xe(a)&&(a.type===void 0||a.type==="command")&&vc(a.command,t))),i=s.hooks.length-o.length;if(n+=i,i>0&&o.length===0)continue;r.push(i>0?{...s,hooks:o}:s)}else Xe(s)&&(s.type===void 0||s.type==="command")&&vc(s.command,t)?n+=1:r.push(s);return{kept:r,removed:n}}function R_(e,t,n){let r=0;for(let s of[e,Xe(e.hooks)?e.hooks:null])if(s)for(let o of t){let i=s[o];if(!Array.isArray(i))continue;let a=$_(i,n);a.removed!==0&&(r+=a.removed,a.kept.length>0?s[o]=a.kept:delete s[o])}return r>0&&Xe(e.hooks)&&Object.keys(e.hooks).length===0&&delete e.hooks,r}function Qt(e,t,n,r){let s=ho(e);if(!s)return null;let o=R_(s,t,n);return o>0?{file:e,action:"write",content:`${JSON.stringify(s,null,2)}
65
+ `,what:`${r} (${o} entr${o===1?"y":"ies"})`}:null}function Im(e,t,n){let r=en(e);if(r===null)return null;let s=r.replace(E_,"").split(`
66
+ `).filter(o=>!t(o.trim())).join(`
67
+ `);return s!==r?{file:e,action:"write",content:s,what:n}:null}function po(e,t,n){let r=en(e);return r!==null&&t(r)?{file:e,action:"delete",what:n}:null}function A_(e){let t=en(e);if(t===null)return null;let n=t.split(`
68
+ `),r=[],s=-1;n.forEach((a,c)=>{/^\s*\[/.test(a)&&(s>=0&&r.push({start:s,end:c}),s=c)}),s>=0&&r.push({start:s,end:n.length});let o=r.find(a=>/^\s*\[\[hooks\]\]/.test(n[a.start])&&n.slice(a.start,a.end).some(c=>/^\s*name\s*=\s*"rtk-rewrite"/.test(c)));if(!o)return null;let i=[...n.slice(0,o.start),...n.slice(o.end)].join(`
69
+ `);return{file:e,action:"write",content:i,what:"rtk [[hooks]] block"}}function C_(e){let t=ho(e);return!t||!Xe(t["rtk-rewrite"])||t["rtk-rewrite"].enabled===!1?null:(t["rtk-rewrite"]={...t["rtk-rewrite"],enabled:!1},{file:e,action:"write",content:`${JSON.stringify(t,null,2)}
70
+ `,what:"rtk-rewrite hook (set enabled = false)"})}function Pm(e){let t=Cf(e);return t?Wt(t):!1}function Sc(e){try{return Jf(e).installed()}catch{return!1}}function mo(e){return e.env.CLAUDE_CONFIG_DIR||P(e.home,".claude")}function Nm(e){let t=ho(P(mo(e),"settings.json")),n=t&&Xe(t.enabledPlugins)?t.enabledPlugins:{};if(Object.entries(n).some(([s,o])=>s.startsWith("tokmizer@")&&o!==!1))return!0;let r=en(P(mo(e),"plugins","installed_plugins.json"));return r!==null&&r.includes('"tokmizer@')}function O_(e){let t=mo(e),n=P(t,"settings.json"),r=[Qt(n,["PreToolUse","PostToolUse"],"claude","rtk PreToolUse/PostToolUse hook"),Qt(P(t,"settings.local.json"),["PreToolUse","PostToolUse"],"claude","rtk PreToolUse/PostToolUse hook"),Im(P(t,"CLAUDE.md"),a=>a.startsWith("@RTK.md"),"@RTK.md import and rtk instructions")].filter(a=>a!==null),s=[],o=ho(n),i=o&&Xe(o.env)?o.env:{};return typeof i.ANTHROPIC_BASE_URL=="string"&&/127\.0\.0\.1|localhost/.test(i.ANTHROPIC_BASE_URL)&&s.push(`rtk proxy is set in ${n} (env.ANTHROPIC_BASE_URL); left as is, with its SessionStart hook. It does not wrap commands. Remove both by hand if you stop using it.`),{agent:"Claude Code",tkrInstalled:Nm(e),tkrSetup:"install the tokmizer plugin in Claude Code",edits:r,notes:s}}function I_(e){let t=e.env.CODEX_HOME||P(e.home,".codex"),n=[Qt(P(t,"hooks.json"),["PreToolUse"],"codex","rtk PreToolUse hook"),Im(P(t,"AGENTS.md"),r=>r==="@RTK.md"||r.startsWith("@")&&r.endsWith("RTK.md"),"@RTK.md import and rtk instructions")].filter(r=>r!==null);return{agent:"Codex",tkrInstalled:ir(),tkrSetup:"tkr setup-codex",edits:n,notes:[]}}function P_(e){let t=[Qt(Gt(),["BeforeTool"],"gemini","rtk BeforeTool hook")].filter(o=>o!==null),n=[],r=P(e.home,".gemini","GEMINI.md"),s=en(r);return s&&xc.test(s)&&n.push(`${r} was written by rtk and tells Gemini to prefix commands with rtk. Edit or delete it.`),{agent:"Gemini CLI",tkrInstalled:Kt(),tkrSetup:"tkr setup-gemini",edits:t,notes:n}}function N_(e){let t=e.env.FACTORY_HOME_OVERRIDE?P(e.env.FACTORY_HOME_OVERRIDE,".factory"):P(e.home,".factory"),n=[P(t,"hooks.json"),P(t,"hooks","hooks.json"),P(t,"settings.json")].map(r=>Qt(r,["PreToolUse"],"droid","rtk PreToolUse hook")).filter(r=>r!==null);return{agent:"Factory Droid",tkrInstalled:Sc("droid"),tkrSetup:"tkr setup-droid",edits:n,notes:[]}}function D_(e){let t=[P(e.home,".trae","hooks.json"),P(e.home,".trae-cn","hooks.json")].map(n=>Qt(n,["PreToolUse"],"trae","rtk PreToolUse hook")).filter(n=>n!==null);return{agent:"Trae",tkrInstalled:Sc("trae"),tkrSetup:"tkr setup-trae",edits:t,notes:[]}}function M_(e){let t=e.env.COPILOT_HOME||P(e.home,".copilot"),n=[po(P(t,"hooks","rtk-rewrite.json"),o=>o.includes("rtk hook copilot"),"rtk hook file")].filter(o=>o!==null),r=[],s=en(P(t,"copilot-instructions.md"));return s&&/rtk/i.test(s)&&xc.test(s)&&r.push(`${P(t,"copilot-instructions.md")} tells Copilot to prefix commands with rtk. Remove the rtk block.`),{agent:"GitHub Copilot",tkrInstalled:Sc("copilot"),tkrSetup:"tkr setup-copilot",edits:n,notes:r}}function jr(e,t,n,r){return{agent:e,tkrInstalled:Pm(t),tkrSetup:n,edits:r?[r]:[],notes:[]}}function go(e){let t=e.env.PI_CODING_AGENT_DIR||P(e.home,".pi","agent"),n=[O_(e),I_(e),{agent:"Cursor",tkrInstalled:Zt(),tkrSetup:"tkr setup-cursor",edits:[Qt(P(e.home,".cursor","hooks.json"),["preToolUse"],"cursor","rtk preToolUse hook")].filter(s=>s!==null),notes:[]},P_(e),M_(e),N_(e),D_(e),jr("Mistral Vibe","vibe","tkr setup-vibe",A_(P(e.home,".vibe","hooks.toml"))),jr("Antigravity","antigravity","tkr setup-antigravity",C_(P(e.home,".gemini","config","plugins","rtk","hooks.json"))),jr("OpenCode","opencode","tkr setup-opencode",po(P(e.home,".config","opencode","plugins","rtk.ts"),bc,"rtk plugin")),jr("Pi","pi","tkr setup-pi",po(P(t,"extensions","rtk.ts"),bc,"rtk extension")),jr("Oh My Pi","omp","tkr setup-omp",po(P(e.home,".omp","agent","extensions","rtk.ts"),bc,"rtk extension"))],r=P(e.env.HERMES_HOME||P(e.home,".hermes"),"plugins","rtk-rewrite");S_(r)&&n.push({agent:"Hermes",tkrInstalled:Pm("hermes"),tkrSetup:"tkr setup-hermes",edits:[],notes:[`rtk plugin in ${r} is not changed automatically. Remove it with: rtk init --agent hermes --uninstall`]});for(let s of[".windsurfrules",".clinerules",P(".kilocode","rules","rtk-rules.md")]){let o=P(e.cwd,s),i=en(o);i&&xc.test(i)&&n.push({agent:"Project rules",tkrInstalled:!0,tkrSetup:"",edits:[],notes:[`${o} tells the agent to prefix commands with rtk. Remove that part.`]})}return n.filter(s=>s.edits.length>0||s.notes.length>0)}function F_(e){return go(e).filter(t=>t.tkrInstalled&&t.edits.length>0).map(t=>t.agent)}var E_,xc,bc,_c=g(()=>{"use strict";ms();Ls();zs();Us();Vs();E_=/<!-- rtk-instructions v2 -->[\s\S]*?<!-- \/rtk-instructions -->\n?/,xc=/prefix (?:every|all|each)? ?(?:shell )?commands? with `?rtk`?/i;bc=e=>/["']rtk["']\s*,\s*\[\s*["']rewrite["']|rtk hook opencode|rtk rewrite/.test(e)});var Lm=me((CI,Hm)=>{Hm.exports=jm;jm.sync=H_;var Mm=tt("fs");function j_(e,t){var n=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!n||(n=n.split(";"),n.indexOf("")!==-1))return!0;for(var r=0;r<n.length;r++){var s=n[r].toLowerCase();if(s&&e.substr(-s.length).toLowerCase()===s)return!0}return!1}function Fm(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:j_(t,n)}function jm(e,t,n){Mm.stat(e,function(r,s){n(r,r?!1:Fm(s,e,t))})}function H_(e,t){return Fm(Mm.statSync(e),e,t)}});var Vm=me((OI,Jm)=>{Jm.exports=Um;Um.sync=L_;var zm=tt("fs");function Um(e,t,n){zm.stat(e,function(r,s){n(r,r?!1:Bm(s,t))})}function L_(e,t){return Bm(zm.statSync(e),t)}function Bm(e,t){return e.isFile()&&z_(e,t)}function z_(e,t){var n=e.mode,r=e.uid,s=e.gid,o=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),i=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),a=parseInt("100",8),c=parseInt("010",8),l=parseInt("001",8),u=a|c,d=n&l||n&c&&s===i||n&a&&r===o||n&u&&o===0;return d}});var Gm=me((PI,Zm)=>{var II=tt("fs"),ko;process.platform==="win32"||global.TESTING_WINDOWS?ko=Lm():ko=Vm();Zm.exports=Ec;Ec.sync=U_;function Ec(e,t,n){if(typeof t=="function"&&(n=t,t={}),!n){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(r,s){Ec(e,t||{},function(o,i){o?s(o):r(i)})})}ko(e,t||{},function(r,s){r&&(r.code==="EACCES"||t&&t.ignoreErrors)&&(r=null,s=!1),n(r,s)})}function U_(e,t){try{return ko.sync(e,t||{})}catch(n){if(t&&t.ignoreErrors||n.code==="EACCES")return!1;throw n}}});var eh=me((NI,Qm)=>{var Dn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Km=tt("path"),B_=Dn?";":":",Wm=Gm(),qm=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Ym=(e,t)=>{let n=t.colon||B_,r=e.match(/\//)||Dn&&e.match(/\\/)?[""]:[...Dn?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(n)],s=Dn?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=Dn?s.split(n):[""];return Dn&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:r,pathExt:o,pathExtExe:s}},Xm=(e,t,n)=>{typeof t=="function"&&(n=t,t={}),t||(t={});let{pathEnv:r,pathExt:s,pathExtExe:o}=Ym(e,t),i=[],a=l=>new Promise((u,d)=>{if(l===r.length)return t.all&&i.length?u(i):d(qm(e));let f=r[l],p=/^".*"$/.test(f)?f.slice(1,-1):f,m=Km.join(p,e),v=!p&&/^\.[\\\/]/.test(e)?e.slice(0,2)+m:m;u(c(v,l,0))}),c=(l,u,d)=>new Promise((f,p)=>{if(d===s.length)return f(a(u+1));let m=s[d];Wm(l+m,{pathExt:o},(v,S)=>{if(!v&&S)if(t.all)i.push(l+m);else return f(l+m);return f(c(l,u,d+1))})});return n?a(0).then(l=>n(null,l),n):a(0)},J_=(e,t)=>{t=t||{};let{pathEnv:n,pathExt:r,pathExtExe:s}=Ym(e,t),o=[];for(let i=0;i<n.length;i++){let a=n[i],c=/^".*"$/.test(a)?a.slice(1,-1):a,l=Km.join(c,e),u=!c&&/^\.[\\\/]/.test(e)?e.slice(0,2)+l:l;for(let d=0;d<r.length;d++){let f=u+r[d];try{if(Wm.sync(f,{pathExt:s}))if(t.all)o.push(f);else return f}catch{}}}if(t.all&&o.length)return o;if(t.nothrow)return null;throw qm(e)};Qm.exports=Xm;Xm.sync=J_});var nh=me((DI,Tc)=>{"use strict";var th=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"};Tc.exports=th;Tc.exports.default=th});var ih=me((MI,oh)=>{"use strict";var rh=tt("path"),V_=eh(),Z_=nh();function sh(e,t){let n=e.options.env||process.env,r=process.cwd(),s=e.options.cwd!=null,o=s&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(e.options.cwd)}catch{}let i;try{i=V_.sync(e.command,{path:n[Z_({env:n})],pathExt:t?rh.delimiter:void 0})}catch{}finally{o&&process.chdir(r)}return i&&(i=rh.resolve(s?e.options.cwd:"",i)),i}function G_(e){return sh(e)||sh(e,!0)}oh.exports=G_});var ah=me((FI,Rc)=>{"use strict";var $c=/([()\][%!^"`<>&|;, *?])/g;function K_(e){return e=e.replace($c,"^$1"),e}function W_(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace($c,"^$1"),t&&(e=e.replace($c,"^$1")),e}Rc.exports.command=K_;Rc.exports.argument=W_});var lh=me((jI,ch)=>{"use strict";ch.exports=/^#!(.*)/});var dh=me((HI,uh)=>{"use strict";var q_=lh();uh.exports=(e="")=>{let t=e.match(q_);if(!t)return null;let[n,r]=t[0].replace(/#! ?/,"").split(" "),s=n.split("/").pop();return s==="env"?r:r?`${s} ${r}`:s}});var ph=me((LI,fh)=>{"use strict";var Ac=tt("fs"),Y_=dh();function X_(e){let n=Buffer.alloc(150),r;try{r=Ac.openSync(e,"r"),Ac.readSync(r,n,0,150,0),Ac.closeSync(r)}catch{}return Y_(n.toString())}fh.exports=X_});var kh=me((zI,gh)=>{"use strict";var Q_=tt("path"),mh=ih(),hh=ah(),eE=ph(),tE=process.platform==="win32",nE=/\.(?:com|exe)$/i,rE=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function sE(e){e.file=mh(e);let t=e.file&&eE(e.file);return t?(e.args.unshift(e.file),e.command=t,mh(e)):e.file}function oE(e){if(!tE)return e;let t=sE(e),n=!nE.test(t);if(e.options.forceShell||n){let r=rE.test(t);e.command=Q_.normalize(e.command),e.command=hh.command(e.command),e.args=e.args.map(o=>hh.argument(o,r));let s=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${s}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function iE(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:oE(r)}gh.exports=iE});var bh=me((UI,wh)=>{"use strict";var Cc=process.platform==="win32";function Oc(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function aE(e,t){if(!Cc)return;let n=e.emit;e.emit=function(r,s){if(r==="exit"){let o=yh(s,t);if(o)return n.call(e,"error",o)}return n.apply(e,arguments)}}function yh(e,t){return Cc&&e===1&&!t.file?Oc(t.original,"spawn"):null}function cE(e,t){return Cc&&e===1&&!t.file?Oc(t.original,"spawnSync"):null}wh.exports={hookChildProcess:aE,verifyENOENT:yh,verifyENOENTSync:cE,notFoundError:Oc}});var Sh=me((BI,Mn)=>{"use strict";var vh=tt("child_process"),Ic=kh(),Pc=bh();function xh(e,t,n){let r=Ic(e,t,n),s=vh.spawn(r.command,r.args,r.options);return Pc.hookChildProcess(s,r),s}function lE(e,t,n){let r=Ic(e,t,n),s=vh.spawnSync(r.command,r.args,r.options);return s.error=s.error||Pc.verifyENOENTSync(s.status,r),s}Mn.exports=xh;Mn.exports.spawn=xh;Mn.exports.sync=lE;Mn.exports._parse=Ic;Mn.exports._enoent=Pc});var Eh={};Z(Eh,{rtkCompatAction:()=>pE,rtkShimContent:()=>Dc,rtkShimFile:()=>Nc,runRaw:()=>mE});import{join as uE}from"node:path";import{constants as dE}from"node:os";function pE(e){let[t,...n]=e;if(!t||t==="help"||t==="--help"||t==="-h")return{kind:"message",stdout:fE,code:0};if(t==="--version"||t==="-V"||t==="version")return{kind:"message",stdout:`rtk compatibility command for Tokmizer
71
+ `,code:0};if(t==="gain")return{kind:"tkr",argv:["gain",...n]};if(t==="recall"||t==="restore")return{kind:"tkr",argv:["restore",...n.filter(s=>s!=="--full")]};if(t==="bypass"||t==="proxy")return n.length===0?{kind:"message",stderr:`Usage: rtk ${t} <command> [args...]
72
+ `,code:2}:{kind:"raw",argv:n};let r=[t,...n].join(" ");return{kind:"message",stderr:`rtk ${t}: rtk was replaced by Tokmizer, which has no "${t}" subcommand.
73
+ Run the command directly, Tokmizer compresses its output on its own: ${r}
74
+ See: rtk help
75
+ `,code:1}}function mE(e){let t=_h.default.sync(e[0],e.slice(1),{stdio:"inherit"});return t.error?(process.stderr.write(`rtk: ${e[0]}: ${t.error.code==="ENOENT"?"command not found":t.error.message}
76
+ `),127):t.signal?128+(dE.signals[t.signal]??1):t.status??1}function hE(e){return`'${e.replace(/'/g,"'\\''")}'`}function Nc(e,t=process.platform){return uE(e,t==="win32"?"rtk.cmd":"rtk")}function Dc(e,t=process.platform){return t==="win32"?`@echo off\r
77
+ set TOKMIZER_SHIM=${co}\r
78
+ ${e.map(n=>`"${n}"`).join(" ")} rtk-compat %*\r
79
+ `:`#!/bin/sh
80
+ TOKMIZER_SHIM=${co} exec ${e.map(hE).join(" ")} rtk-compat "$@"
81
+ `}var _h,fE,Mc=g(()=>{"use strict";_h=og(Sh(),1);Pn();fE=["rtk was replaced by Tokmizer. This rtk command forwards to it:"," rtk gain [...] -> tkr gain [...]"," rtk recall|restore <hash> -> tkr restore <hash>"," rtk bypass|proxy <cmd> -> runs <cmd> unchanged","Run your other commands directly: Tokmizer compresses them on its own.",""].join(`
82
+ `)});var Oh={};Z(Oh,{applyPlan:()=>AE,buildPlan:()=>bE,migrationApplied:()=>$E,migrationsDir:()=>Fn,pendingWork:()=>zc,planHasWork:()=>TE,renderPlan:()=>RE,rtkDetected:()=>Ah,rtkMigrationHint:()=>bo,undoMigration:()=>OE});import{createHash as gE}from"node:crypto";import{existsSync as Hr,readFileSync as jn,readdirSync as kE}from"node:fs";import{copyFile as Th,mkdir as yo,rename as yE,rm as $h,writeFile as Fc,chmod as wE}from"node:fs/promises";import{dirname as jc,join as Te}from"node:path";function Fn(){return Te(w(),"migrate-rtk")}function Rh(e){return gE("sha256").update(e).digest("hex")}function Hc(e){try{return Rh(jn(e))}catch{return null}}function Ah(e){let t=hc(e,[B()]),n=[...new Set([...Fr(e).map(r=>r.dir),lo(e)])].filter(r=>Hr(r));return{binary:t&&!t.compatShim?t:null,dirs:n}}async function bE(e,t={}){let{binary:n,dirs:r}=Ah(e),s=[];for(let l of bm(e)){let u=await vm(e,l);u&&s.push(u)}let o=await Sm(e),i=km(e,o.historyPath),a=Hr(i)?(()=>{let l=Am(i);return"error"in l?{file:i,error:l.error}:{file:i,totals:l.totals}})():null,c=await J().catch(()=>({telemetryOptIn:!1}));return{binary:n,dirs:r,filters:s,config:o,history:a,hooks:go(e),telemetryOn:c.telemetryOptIn===!0,shim:t.shim?{file:Nc(B()),content:Dc(t.shim.tkr)}:null}}function vE(e){let t=[],n=[];for(let r of e.filters){if(!r.text)continue;let s=Te(_e(),r.source.target);t.push({path:s,content:r.text,done:`Imported ${wo(r.imported.length,"filter")} into ${s}`}),r.trustedByRtk&&r.source.scope==="global"&&n.push(r.source.target)}if(e.config.excludeText){let r=Te(_e(),"rtk-excluded.toml");t.push({path:r,content:e.config.excludeText,done:`Imported exclude_commands into ${r}`}),n.push("rtk-excluded.toml")}if(e.config.restoreDisabled||e.config.retentionDays){let r={};try{r=JSON.parse(jn(je(),"utf8"))}catch{}let s=e.config.restoreDisabled?{...r,disabled:!0}:{...r,maxAgeDays:e.config.retentionDays};t.push({path:je(),content:`${JSON.stringify(s,null,2)}
83
+ `,done:e.config.restoreDisabled?"tkr restore disabled, as rtk recall was":`tkr restore keeps outputs ${e.config.retentionDays} days`})}e.history?.totals&&t.push({path:fo(),content:SE(e.history.totals),done:"Imported rtk savings history (shown separately in tkr gain)"});for(let r of e.hooks)if(r.tkrInstalled)for(let s of r.edits)t.push({path:s.file,content:s.action==="delete"?null:s.content??"",done:`${r.agent}: removed ${s.what} from ${s.file}`});return e.shim&&t.push({path:e.shim.file,content:e.shim.content,mode:493,done:`Wrote ${e.shim.file}`}),{steps:t,toTrust:n}}function xE(e,t){let n=r=>JSON.stringify(Object.fromEntries(Object.entries(r).filter(([s])=>s!=="importedAt").sort()));return n(e)===n(t)}function SE(e){try{let t=jn(fo(),"utf8");if(xE(JSON.parse(t),e))return t}catch{}return`${JSON.stringify(e,null,2)}
84
+ `}function _E(e){if(e.content===null)return Hr(e.path);try{return jn(e.path,"utf8")!==e.content}catch{return!0}}function EE(){try{let e=JSON.parse(jn(pt(),"utf8"));return Object.fromEntries(Object.entries(e.files??{}).filter(([,t])=>typeof t=="string"))}catch{return{}}}function zc(e){let{steps:t,toTrust:n}=vE(e),r=EE(),s=new Map(t.map(i=>[i.path,i.content])),o=n.filter(i=>{let a=s.get(Te(_e(),i));return typeof a!="string"||r[i]!==Rh(a)});return{steps:t.filter(_E),trust:o,telemetry:e.config.telemetryOff&&e.telemetryOn}}function TE(e){let t=zc(e);return t.steps.length>0||t.trust.length>0||t.telemetry}function $E(){return Ch().length>0}function wo(e,t){return`${e} ${t}${e===1?"":"s"}`}function RE(e){let t=[],n=e.binary?`${e.binary.path}${e.binary.version?` (${e.binary.version})`:""}`:"no rtk binary on PATH";t.push(`rtk: ${n}`);for(let s of e.dirs)t.push(` data: ${s}`);t.push("","Filters"),e.filters.length===0&&t.push(" no rtk filters.toml found");for(let s of e.filters){if(t.push(` ${s.source.path}${s.source.readByRtk?"":" (rtk does not read this folder on this system)"}`),s.fileIssue&&t.push(` not imported: ${s.fileIssue}`),s.text){let i=Te(_e(),s.source.target);t.push(` import ${wo(s.imported.length,"filter")} into ${i}: ${s.imported.join(", ")}`),t.push(s.trustedByRtk&&s.source.scope==="global"?" trusted, as it was in rtk":` left untrusted${s.source.scope==="project"?" (Tokmizer filters apply in every project)":" (rtk had not trusted it)"}: review it, then run tkr filters trust ${s.source.target}`)}for(let i of s.skipped)t.push(` not imported: ${i.name}: ${i.reason}`);for(let i of s.tests)t.push(` test ${i.pass?"PASS":"FAIL"} ${i.rule} #${i.index}${i.name?` (${i.name})`:""}`),i.pass||t.push(` expected: ${JSON.stringify(i.expected.trimEnd())}`,` got: ${JSON.stringify(i.actual.trimEnd())}`);let o=s.tests.filter(i=>!i.pass).length;s.tests.length>0&&t.push(` ${wo(s.tests.length,"test")}: ${s.tests.length-o} pass on Tokmizer, ${o} fail`),s.untested.length>0&&t.push(` without tests: ${s.untested.join(", ")}`),s.orphanTests.length>0&&t.push(` tests for unknown filters ignored: ${s.orphanTests.join(", ")}`)}t.push("","Settings");let r=e.config;if(!r.file)t.push(" no rtk config.toml found");else if(r.parseError)t.push(` ${r.file}: not imported, not valid TOML (${r.parseError})`);else{t.push(` ${r.file}`),r.excludeText&&t.push(` exclude_commands -> ${Te(_e(),"rtk-excluded.toml")} (output of ${r.excludePatterns.filter(s=>s.trim()&&s.trim()!=="^").map(s=>JSON.stringify(s)).join(", ")} left unchanged)`);for(let s of r.excludeSkipped)t.push(` exclude_commands "${s.name}" not imported: ${s.reason}`);r.restoreDisabled?t.push(` recall disabled -> tkr restore disabled (${je()})`):r.retentionDays&&t.push(` recall retention ${r.retentionDays} days -> tkr restore keeps outputs ${r.retentionDays} days (${je()})`),r.telemetryOff&&t.push(e.telemetryOn?" telemetry off -> tkr telemetry off":" telemetry off: Tokmizer telemetry is already off"),r.notImported.length>0&&t.push(` no Tokmizer equivalent, not imported: ${r.notImported.join(", ")}`)}if(t.push("","History"),!e.history)t.push(" no rtk history.db found");else if(e.history.error)t.push(` ${e.history.file}: skipped, ${e.history.error}`);else if(e.history.totals){t.push(` ${e.history.file}: read-only`);let s=e.history.totals;t.push(` ${s.savedTokens} tokens saved over ${wo(s.commands,"command")}${s.firstAt&&s.lastAt?`, ${s.firstAt.slice(0,10)} to ${s.lastAt.slice(0,10)}`:""} (rtk's own estimate)`),t.push(" shown on its own line in tkr gain, never added to Tokmizer's measured totals")}t.push("","Agent hooks"),e.hooks.length===0&&t.push(" no rtk hook found");for(let s of e.hooks){for(let o of s.edits)t.push(s.tkrInstalled?` ${s.agent}: remove ${o.what} from ${o.file}`:` ${s.agent}: rtk kept in ${o.file}, Tokmizer is not set up there (${s.tkrSetup}, then run tkr migrate rtk again)`);for(let o of s.notes)t.push(` ${s.agent}: ${o}`)}return e.shim&&t.push("","rtk command",` write ${e.shim.file}: rtk gain, rtk recall and rtk bypass forward to Tokmizer`),t.push("","Every changed file is backed up. Undo with: tkr migrate rtk --undo",""),t.join(`
85
+ `)}async function AE(e){let t=zc(e);if(t.steps.length===0&&t.trust.length===0&&!t.telemetry)return["Already migrated: nothing to change."];let n=new Date().toISOString().replace(/[:.]/g,"-"),r=new Lc(Te(Fn(),n)),s=[];for(let o of t.steps)o.content===null?await r.remove(o.path):await r.write(o.path,o.content,o.mode),s.push(o.done);if(t.trust.length>0&&(await r.snapshot(pt()),await la(t.trust),r.settle(pt()),s.push(`Trusted ${t.trust.join(", ")}`)),Ds(),t.telemetry){r.manifest.telemetryWas=!0,await r.save();try{await Ae({telemetryOptIn:!1}),s.push("Telemetry off")}catch(o){s.push(`Telemetry: could not turn it off (${o.message}). Run: tkr telemetry off`)}}return await r.save(),s.push(`Backups: ${r.dir}`),s}function Ch(){let e;try{e=kE(Fn()).sort().reverse()}catch{return[]}let t=[];for(let n of e)try{let r=JSON.parse(jn(Te(Fn(),n,"manifest.json"),"utf8"));r.undoneAt||t.push({dir:Te(Fn(),n),manifest:r})}catch{}return t}async function CE(e,t){let n=!0;for(let r of[...e.manifest.files].reverse()){if(Hc(r.path)!==r.after){t.push(`Kept ${r.path}: it changed after the migration.${r.backup?` Its previous version is in ${r.backup}`:""}`),n=!1;continue}r.backup?(await yo(jc(r.path),{recursive:!0}),await Th(r.backup,r.path),t.push(`Restored ${r.path}`)):(await $h(r.path,{force:!0}),t.push(`Removed ${r.path}`))}if(e.manifest.telemetryWas!==void 0)try{await Ae({telemetryOptIn:e.manifest.telemetryWas}),t.push(`Telemetry ${e.manifest.telemetryWas?"on":"off"} again`)}catch(r){t.push(`Telemetry: could not restore it (${r.message})`),n=!1}return e.manifest.undoneAt=new Date().toISOString(),await Fc(Te(e.dir,"manifest.json"),`${JSON.stringify(e.manifest,null,2)}
86
+ `,{mode:384}),t.push(`Undid the rtk migration of ${e.manifest.createdAt}.`),n}async function OE(){let e=Ch();if(e.length===0)return{lines:["Nothing to undo: no rtk migration found."],ok:!0};let t=[],n=!0;for(let r of e)await CE(r,t)||(n=!1);return Ds(),e.length>1&&t.push(`${e.length} migrations undone, newest first.`),{lines:t,ok:n}}function bo(e){try{if(Hr(Fn()))return null;let t=hc(e,[B()],!1);return!t||t.compatShim?null:"rtk is installed too. Move its filters, settings and history, and stop wrapping commands twice: tkr migrate rtk"}catch{return null}}var Lc,Uc=g(()=>{"use strict";z();Vt();Ht();rr();Ir();xm();_m();wc();_c();Pn();Mc();Lc=class{dir;manifest;seen=new Map;constructor(t){this.dir=t,this.manifest={v:1,createdAt:new Date().toISOString(),files:[]}}async snapshot(t){let n=this.seen.get(t);if(n)return n;let r=null;Hr(t)&&(r=Te(this.dir,"files",String(this.manifest.files.length)),await yo(jc(r),{recursive:!0,mode:448}),await Th(t,r));let s={path:t,backup:r,after:null};return this.seen.set(t,s),this.manifest.files.push(s),await this.save(),s}async write(t,n,r){let s=await this.snapshot(t);await yo(jc(t),{recursive:!0});let o=`${t}.tmp-${process.pid}`;await Fc(o,n),r!==void 0&&await wE(o,r),await yE(o,t),s.after=Hc(t)}async remove(t){let n=await this.snapshot(t);await $h(t,{force:!0}),n.after=null}settle(t){let n=this.seen.get(t);n&&(n.after=Hc(t))}async save(){await yo(this.dir,{recursive:!0,mode:448}),await Fc(Te(this.dir,"manifest.json"),`${JSON.stringify(this.manifest,null,2)}
87
+ `,{mode:384})}}});var Nh={};Z(Nh,{TAP_FORMULA_PATHS:()=>Ih,brewTapStatus:()=>NE,formulaWedged:()=>Ph});import{readFileSync as IE}from"node:fs";function Ph(e){return/^(?:<{7}|={7}|>{7})/m.test(e)}function NE(e=Ih){for(let t of e)try{return{path:t,wedged:Ph(IE(t,"utf8"))}}catch{}return null}var PE,Ih,Dh=g(()=>{"use strict";PE=["/opt/homebrew/Library/Taps","/usr/local/Homebrew/Library/Taps","/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps"],Ih=PE.map(e=>`${e}/norwelltw/homebrew-tokmizer/Formula/tokmizer.rb`)});var Hh={};Z(Hh,{claudeExecutables:()=>HE,claudeHooksPresent:()=>zE,claudePluginEnabled:()=>jh,claudeSettingsFile:()=>Jc,ensureClaudeHooks:()=>UE,removeClaudeHooks:()=>BE});import{existsSync as Fh,realpathSync as DE}from"node:fs";import{dirname as Mh,join as vo}from"node:path";import ME from"node:os";function Jc(){return vo(process.env.CLAUDE_CONFIG_DIR||vo(ME.homedir(),".claude"),"settings.json")}function jE(e,t){return t==="win32"?`"${e}"`:`'${e.replace(/'/g,"'\\''")}'`}function Bc(e){try{return DE(e)}catch{return null}}function HE(e=process.env.PATH??"",t=process.platform,n=process.execPath){let r=t==="win32"?"tkr-exec.exe":"tkr-exec",s=_n(e,t,n),o=vo(Mh(Bc(n)??n),r),i=vo(Mh(s),r),a=Fh(i)&&Bc(i)===Bc(o)?i:o;return{tkr:s,exec:a}}function LE(e,t,n){return`${jE(e.exec?t.exec:t.tkr,n)} ${e.words}`}function Vc(e,t){return M(e)&&typeof e.command=="string"&&e.command.endsWith(` ${t.words}`)&&/tkr(?:-exec)?(?:\.exe)?['"]? /.test(e.command)}function Zc(e,t){let n=M(e.hooks)?e.hooks:{};return Array.isArray(n[t])?n[t].filter(M):[]}function So(e){return Array.isArray(e.hooks)?e.hooks:[]}function jh(e){return M(e.enabledPlugins)&&e.enabledPlugins[FE]===!0}function zE(e){return xo.every(t=>Zc(e,t.event).some(n=>So(n).some(r=>Vc(r,t))))}async function UE(e,t=process.platform){let n=Jc(),r=await K(n);if(!r)return"error";if(jh(r))return"plugin";let s=M(r.hooks)?r.hooks:{};r.hooks=s;let o=!1,i=!1;for(let a of xo){let c=LE(a,e,t),l=Zc(r,a.event),u=l.flatMap(So).find(p=>Vc(p,a));if(u){u.command!==c&&(u.command=c,o=!0);continue}let d={type:"command",command:c,timeout:a.timeout},f=l.find(p=>p.matcher===a.matcher);f?f.hooks=[...So(f),d]:l.push({matcher:a.matcher,hooks:[d]}),s[a.event]=l,o=!0,i=!0}return o?await W(n,r)?i?"added":"updated":"error":"present"}async function BE(){let e=Jc();if(!Fh(e))return"absent";let t=await K(e);if(!t)return"error";if(!M(t.hooks))return"absent";let n=t.hooks,r=!1;for(let s of new Set(xo.map(o=>o.event))){let o=xo.filter(c=>c.event===s),i=Zc(t,s),a=i.map(c=>{let l=So(c),u=l.filter(d=>!o.some(f=>Vc(d,f)));return u.length!==l.length&&(r=!0),{...c,hooks:u}}).filter(c=>c.hooks.length>0);a.length?n[s]=a:i.length&&delete n[s]}return r?await W(e,t)?"removed":"error":"absent"}var xo,FE,Lh=g(()=>{"use strict";dt();We();xo=[{event:"SessionStart",matcher:"",words:"hook session-start",exec:!1,timeout:5},{event:"SessionStart",matcher:"",words:"hook reducer-session-start",exec:!1,timeout:5},{event:"SessionStart",matcher:"",words:"hook session-recap",exec:!1,timeout:5},{event:"UserPromptSubmit",matcher:"",words:"hook reducer-prompt-submit",exec:!1,timeout:5},{event:"Stop",matcher:"",words:"hook reducer-stop",exec:!1,timeout:5},{event:"PreToolUse",matcher:"Bash",words:"--pre-tool-use",exec:!0,timeout:5},{event:"PostToolUse",matcher:"Read|Grep|Glob|Bash",words:"--post-tool-use",exec:!0,timeout:10}],FE="tokmizer@tokmizer"});import{createCipheriv as hP,createDecipheriv as JE,hkdfSync as VE,randomBytes as gP}from"node:crypto";function KE(e){return Buffer.from(VE("sha256",Buffer.from(e,"utf8"),ZE,GE,32))}function _o(e,t){let n=KE(t),r=Buffer.from(e,"base64url"),s=r.subarray(0,12),o=r.subarray(12,28),i=r.subarray(28),a=JE("aes-256-gcm",n,s);return a.setAuthTag(o),Buffer.concat([a.update(i),a.final()]).toString("utf8")}var ZE,GE,Gc=g(()=>{"use strict";ZE=Buffer.from("tokmizer-bundle-enc-v1"),GE=Buffer.from("rules-bundle")});import{chmodSync as WE,readFileSync as qE,writeFileSync as YE,mkdirSync as XE,renameSync as QE}from"node:fs";import{join as zh}from"node:path";function Kc(){return zh(w(),"bundle-cache.json")}function Uh(e){try{let t=w();XE(t,{recursive:!0});let n={...e,fetchedAt:Date.now()},r=zh(t,`bundle-cache.${process.pid}.tmp`);YE(r,JSON.stringify(n),{mode:384}),QE(r,Kc()),WE(Kc(),384)}catch{}}function Bh(){try{let e=qE(Kc(),"utf8"),t=eT.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}var eT,Jh=g(()=>{"use strict";dn();z();eT=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1"),fetchedAt:k.number().int().nonnegative()})});var Yc={};Z(Yc,{BundleFetchError:()=>Lr,BundlePayload:()=>Eo,bundleExpired:()=>oT,compileRuntime:()=>To,fetchBundle:()=>cT,healOn401:()=>aT,maxBundleAgeMs:()=>Wc,runtimeFromCache:()=>lT,runtimeFromEnvelope:()=>qc});import{createPublicKey as tT,verify as nT}from"node:crypto";function Wc(){let e=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(e)&&e>0?e:sT}function oT(e,t=Date.now()){return t-e.fetchedAt>Wc()}function iT(e,t){let n=Wn();if(!n||!n.includes("BEGIN PUBLIC KEY"))throw new Error("tkr-daemon: no valid signing public key configured (set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM at build time).");let r=tT({key:n,format:"pem"});if(!nT(null,Buffer.from(e.payload,"utf8"),r,Buffer.from(e.signature,"base64url")))throw new Error("tkr-daemon: rules bundle signature invalid");return JSON.parse(_o(e.payload,t))}async function aT(e,t,n){if(e instanceof Lr&&(e.status===401||e.status===403))try{return await n.heartbeat(t),await n.fetchBundle(t)}catch(r){return n.log(`initial fetch failed after heartbeat: ${r.message}`),null}return n.log(`initial fetch failed: ${e.message}`),null}async function cT(e){let t=await N();if(!t||!t.jwt)throw new Error("tkr-daemon: not activated (no JWT)");if(!t.signingSecret)throw new Error("tkr-daemon: not activated (no signing secret)");let n=await le("GET","/api/v1/rules/bundle",void 0,{baseUrl:e,bearer:t.jwt,signingSecret:t.signingSecret,fingerprint:t.fingerprint??"0".repeat(64),installId:t.installId,timeoutMs:1e4});if(!n.ok)throw new Lr(n.status);let r=rT.parse(await n.json()),s=qc(r,t.signingSecret);return Uh(r),s}function qc(e,t){let n=iT(e,t),r=Eo.parse(n);if(Date.now()-r.signedAt>Wc())throw new Error("tkr-daemon: rules bundle is stale");return To(r,{signedAt:r.signedAt,fetchedAt:Date.now()})}function To(e,t){let n=new Map;for(let r of e.filters)n.set(r.slug,{...r,matchRegex:new RegExp(r.match_command)});return{bundleVersion:e.bundleVersion,signedAt:t.signedAt,ruleCount:n.size,startedAt:Date.now(),fetchedAt:t.fetchedAt,selectFor:(r,s,o)=>Ts(r,n.values(),o?new Set(o):null,n)}}async function lT(){try{let e=Bh();if(!e)return null;let t=await N();return t?.signingSecret?qc(e,t.signingSecret):null}catch{return null}}var Eo,rT,sT,Lr,$o=g(()=>{"use strict";dn();cs();Li();Ge();Ft();Gc();Jh();Eo=k.object({bundleVersion:k.number().int().nonnegative(),signedAt:k.number().int(),filters:k.array(bn)}),rT=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1")}),sT=10080*60*1e3;Lr=class extends Error{status;constructor(t){super(`tkr-daemon: bundle fetch failed ${t}`),this.status=t}}});var Gh={};Z(Gh,{DEFAULT_RULES_SECRET:()=>Vh,defaultRulesRuntime:()=>dT,resolveAllowedFilters:()=>pT});function Zh(){let e="r0GPTdS6_piDwTU716xagvXxcpjjhvOR18YNArkbbMGUBC1WTgdo1DuC2YZeiEndHPCrBNXtuoIWHDVBDPp1lySpaje7_dn68NbJ8qfhkZvHuEB6g4aqNQb4vgpEwapqQ_P8iECE0nXMM-iyi501xKsNsq_kl6PgUhOiEh8w_3WEr9Ferh1p8YlL_7pEdIWv_iltHDXuj_XSCwXpA0YMuWymlnIWcrbij13BthhvSrGlDSjMzFt313ke730IL5JetiV0e2UQX6aG_LMhRBgbW4WtQ4lm-4ZNARzFdMfVvKDmtT5ErVRz_RiJ5usFFTaMmzAhFiGqOw2wRKPF0fWDF3Mc7bFiWlyOZ6SJr0JqMHOxMeP_uhbbopXiSLbL4e2eV1e1tvEsEbW24LVh3WiJs0yF814PKGmCCcwkU-C9RL3Ia9vKeVJ4JZfb7Xf-OLGm6knkw7SQneP3jFpsnwjO4-mzOUovauctU659QeRDJQyvn6dkYMXWUpD8m81aZ6G5USIjwzHHzVRqPGHOGQmu0XbxLz9S0CL2cxP7kN9Rk0cvGP6FwkVVtWjCscxXchFREmbnVhHdcP-3bVOJmrBrRsKXvmUV0rr9LGldiCyCBVVqYSAqXs2PMs8QLVYx6Lccl1-bfyD4EJ0qqAFLwyasF-KDBvFkivAxfx_gesPKiell1az241RH2sTUe7cQPtioLYIrQgLHw_dWLEhSauv3-k5Zsd1vzVvRbyTI6azG-q3_ns3fhQ6pL0ZfEB75rQxmT4ylYVdM1Jq8Q5Zfcl2V4hmoBH6kNFbpN5JYzf3NJ0NGTKuxqxPgYtHqpHy9a5oilJMu94QX8jSANOZOOg06z8oLAP1L1E9kCcWrF4M4YSqfpwax3wlyU1_jepaoOizpgEvu-gWam9twuj74spUxfDND6BOOVzPz35U97cL90vM47UFkyKT39HH2tBKMZaQKMJdAp7x6HGBcMJkcIh0vSJej_gRKmdXsywVIk2j7ZFiMRQw4RoqYII4dAY9naEm777NuKMqwFNb2_m7F14e2RBVay7dXg5vTqdvoZ_wdhcqeccZLuT8I1_5xoToUzKSDSNH70ssVmgAaLbwqhguj2IeWAxhRSqzjFjOR-O9iFVkWTPdbKATyyJxgoLqVpGg0zcnz2A__5l-Z8VNqfj8UbiKcfttOwxWmtLE8tMOKlgixDoOduWUIXwlmkU3rBXZZir-EFdiOmHBTRKWn_eD78GuA9E-HXzInUyBiJ7N9xEoSlMUpzlwTdvWebmKGFZ7lhHC79lk54c5qgIceYFdRw-39vyQe2bwboLX6F19FLJXxaTUjUdiOrnu_eNsR7owt8-we0Qfc9j8i1o0S1rVJDgjCg3esemjN_sW1fb89BRTFVtyaQWdDy01VXUQQ-PC2g0639p3qPlXLKFqyKS_cgd_kSS1tLTRPPpN1qLcmvCjq5nQ3w_od-_G_GOA_w2PCBZzORylwK-SaZ8-b3ApRQomiLCa6mZH5oLqId4SGE_Kf76uv4nD0e-Q93uXOlIbJn35bhRLbgQmQ3jPqRtDN8YRfp9RZDW4_UwjYBNtQLieKAGTqLgPlDS5rSzJCNfQYOZxgfflSMxf5taWuMkbg3_CdShukYkdJT-Wi2lATcPlq8bZV9IWIaBVVeBynkj_gRrTtnG0o4WIlbb1X_DD1A8WcTQ3nWcEic9yoMfdx2Y7mPtxAS5JzCaNT_W9LaoAjf0XIurHSeNJzQMZrw0G2kzCUNH_oZpoiQD1WOP7FiDxIHUNVKdBdbH46Mq3Tzo89_fJ5otD_4nEoi4CEknEkiZ-f0Th3dYCgUSur5CwZynaTqh5GB7XbDMGoEz0eMyOh4u2gwQ_wh8oN524CnueMTLoLM6lLeeZXjwWRx9x6LiM0M6-l2mOg54AZOpkU1jwGJvA7Fc_yGv9cgNE5jjVeMwfEAw14-b_gDE1nvaatUfPFunibR5ZyAT1FBeHMPYgjx74xkhZC7lCTj4rP0ozsjS4F36JahRjlhWHr3ZwGIc8TVDibCPJ5lE4q9sCG1XnCAgW4yypR9LxCTD0VUaUJAMU9Q3PrbGL0n2DkNhNPk7R9h3taXZsIsx_yvZCMdH6OGNl1_tgXaGHcAtQQ3vOVTqWB7ohtetUFl_w8BHqBhXaY4t03ZZwXwEtza6E6phFV2DKFKPL8WGyIyOwEVFWEOWDHe_TDF-dukZGrAF8tTov3UKHx67brcrcnTzZ2aVhhZ4Kvk4rjS2zrw4lA2EsIsUS7M-NxfRd7KNZbo79MMjPodwNuXrmtoAXmmEcshuRhha7Y0xjPGkBfbJs8p75vdbwyj02BFO7Vxy3f4qezLOIaFwSM4ZZ-SglvuPYO8JEnj5Rk6pG0t1R-n3nkPUD8K3CvyYQalFxMKuzFrT0H7tVzvk6HQA0415yAxbxLMQc8HcfugyNb3NrGsKLhMxmaWSjyQqXo0P1xkiTzqTDlhXgP3nbG5W19joIvRYACyHK_9CN1iaYFMkjz1geDwVozXxiP8nHKqAPm1sj2bMfHikMlFrLWajYSuE2NaTdU0FSqxsIcQ7ZC3T0HZbSH5k_IMAPL1c624Wy3bQtPgKjGxJuMBWtNgkXAOzzFqw2YSiM8jVGCezQ1W2ljMujKf0zBOHjjsmWdHKZdErlyXANO2VxxDFFomWAi5_NhgdPQsc5fO5vu87VrVzk-sBwUKXW0v7043OK4Dav0sPYGGJSh-lsKIl63CZX9Q29QoSHgrlI75iIL38q70WVccTquec4EZpBy5NUJiWhmwWv5z8DhFATUh1swaeHwVr772NObQZ-8Fuy-VTh9gKeDKzDK3YLXNAqsBLHrSVpJHZXiwms0hbGPCp-h6ie9y7OZBtIUR0zokwt6rifyZsXOEQk5Ped-eh_8A6Adk6-rJx06oOuTK15Mzr3g_7Y1ynoRCwkhCM6RiWF1Ax1ud2C_n7XjCI60KxnDwZ8J8VeK5ZmUrj-Z7u8bkZ4bIy8qWxPyk4D_ldw8flfC3sYZz1eI_HUsWMEPF2keqfyB0Y_8zg9ZYBoBSp5DEnpUFs521fpbVsJeocEHfajTIYHOxG8z_t3k-fTgfngy6FwUhAz35wdyBzPGK5f_4T1VqrbNTBOhbLWSpXz197ybhMXQvDDguLCg_H3a3My8hZjEKoEySZaUplwzrN6hcyIXwqJQ84bDFMfjVV-BjT4ZclNnOdwSD7WzuYYNcpccb6FRu3gFfND21Z_vW_FLGJxuSM5QPr9JPU7bLCcHOV-pWYW1uMLCEYXxF4P68mhKcgq3Clx14_jzwDMylJMcilNiR5NUmF3DIwmJIfAKCwnCkavcoR-aXY4i_OKKVM37ufUxcEwqv2hN7vLy2XkKU0zhgytEWek60rtqtgZT-LwhtnJoYalIGUQzGpEJ3n1quyDm7fgymyYQk545XIDjF9nREdMKnqejnk_YzL6eWUMilAjDMwWDXBsgzVSufNDTvt6aOF5mbW1UnIfWlTuAyHVBKu3JzMxWGxQ0HSh4WY4G9pmlI54f0I1v0q1ptDCa2QiVbMqd6SS33k6IzZndTATvLyBfL8X4-usZti8lVFTLOjory8d2QzImVj6w0fF4vClQfdK40Ydf22cQynhNT1pG_pBOuSIDIoFhulHDiqBc9nx8VoyzGSv6VAAKfieeyCEk1adpinpt6FSu8-HfXGk0bzZTfbHkW2Gpon1rg7Wgn2z0ydUSLBUfH5quQX5R4oUq9dOItaky2cUkYI-8JkmiR3Wu1BNU7FfLXVPDphacwk_2vPUD9_of-nii36g2L_07Tyfh59NDMCnw0bCGWo0tJ_29YeClqyXQETbNBOTrYr0AL3EOMLNB6ra7IWsUBTnA4KAzJise6UqZQ9atIZ7cN-WTbODGE4gZtixnj1Gam_k09yMZ_0YTZMzboD8J_tqzL-P7czlkdg4HYw1QVvxBA0wbexhGUCkH3mBkLsLVbo6hX9loDrOC7p4SpCovmfiHFrC9vl3p4PGOPpBd9SwY3Vlpes0EJnMIbLF2v1MaW0oV3JII5c-ewG0N2w9IQeW2iSHfpTdsQV4cBLwknAoNFUrVgjCnW8s24cyYmkWIVcOL-8yKzxLm48GMbrC2BKYKl4pbKPmUCyDARvQ2ni6bAwVLkI_edpbE8vbOUxkOCl9H9i2FTDCvc9TwmJFhFp3TV336-2apBD1LO2jLOJVmjXjQRmQgtYjwqzAxlOuVqmUp12c9S20vRKk0PNmb-nJMa4XpoTVTiYloOleXDgxa8ZCc_JVT5Q4A5bxb8R_WlsLXsgZ5NUxHY3hEOl7DN16xEBq8GjQXX_C-DISUEYURoz1imh3hnXj77rmdTYloPe5cU6aIbPrUBs24wUhj-laBZ_sGaG-L1MYrTTniVIndK-vqTG7qBW3uQMu4k2mD_NIJGNo2wo2BuK6fw6_NuFG1273tHt_qRxtaAMjG6mxYwTRZs-veuTB09RQ2R8jmFxtYxSnYAAelwz4RGNRtY00kFZHqQ3KZ5SPgdm7Sj5PXlmmdXvPjMswWmkYu7Hn17X_HHzVZVcImpA44h7CgW8Fq-jx35PFgSpGxJiYD8Pac8gCuQfeKSFgG9rL5oXBydFkErp2m6lJ4wc8GkFORFIEQPVpMmq8clbhT3mwt-cpcxbsa1ro2kvNFurOAjOSj79uqVZkI_ysLuzbJxFvYw12mwIf_xWfbXKEopPeG54gr-zVZj9jOLTwhZ0BmVCbl6i5eylaFBt7058LVVlDlojysmYO8X206baiWFnM7bYRFOrV4Mpsd-GlMY8zX2vthPn1TvlZyc4wVxTPNCKj--7VKVtujqRmmgX_9svT1SNOOGzs5CKpS3se3aYiZ8Ot3K3Vxsk1uFUD3I6QpkF1ejeNmuGtt41EOox0-gux295ZErYj9dtOziOqgP_EEgJmdubh187w7FvQEWJpioSV1QlSsKQzjICJ4dBjxOONaQxcVeqP9EKcrde2Cl7J_ZkkL7wV8iILh_rA0P9XqpG6DYhwmoGKUYWAvoHm7TtrLQoqu20vbqL6-PFJi9p-x0crZUeeeOmGHoel2kVY3wQb9wkhgQjQf9SvF6ePh0f7wQ6YY9CwH46qKQKGx7OpwjWYOB71K7-OGUIgdBFeTCwK4xa9I6e-yO18fr3ipUbQXYA-DVkTZXHfVcVqR3fXnqtA3ONFI1NYO7rmQRB-ioeNoFM6qjWlAdt2cMN3JZmOUcnXSsnQPnqPnyDvhU8wk6wZC7uC2m7msBPBgo2gDdk8JkLL5Y1CMtjZber_YrK1kchOtR_eYdSdwCiqDKBM0la4N6nMInyGquoxNYemIuVXCTjRb8lxErF96KdnWs4W39KUgwZD0PrFd022W7xEq0uUmDLjoeRnJ_CGm5PxAnGgp1zPJET913aRK3uXnweoqzJs8FaVu8Gj8E37bHGQSdqqIVXkrmsJb_tuiecghODnfIUQ9aNsphrpy_Aixpg0yrlwHN0uSkoJMrokz_PtF22rKmiF3KNu5pMfn6fdgeQlakCEid6wuYTwFglwnM3XXXA8VJSKIsgw60-uDMYUwFEOSM8ZajzjJor-Hgl_y2_OaYvc4LPYeWnNOVSTsFB22SN3AGHdUoQa7NTE20zfwF7SJU9UL_hjp_zMFKtB5dHY_d5ADbWvGCt5n8CN8XMB9JMsUm8Rwc5X1MhDD5oSQ8pTDoFPrxKJtuLpXEvVnVCDv5TOHGqxPNpN2dnlnn5WEPpgxdFvcYNOynm-4OKtHCaFLFcI6WiBdtaliWIUOj9uftoLWo5A6fm7zI2nPq8SwFxbntJMVJNPEUA9bJImmDwfDY2J6CfqT9ZEJ1UCs5e38r4dyVTJxjBoGh4yiD1hIkaEoKY5NsyXK86pnt83uIPCz9wgrYsCuuLTifUa5rUM5pLiZfi_u5eeiFqiKaZcNl6_bNV9Kh1Qvh0DAUF2wJw2C0LW9i1TJbZZoKI5MyjefDHCdnXpzWOwy0oLTiFk-Dhyk7u5QoO3Q-hSGF7cyVK3_wlUH6ACIcVShVoQEsillXBsz3Z0ZUzx4huVh57wp9UpyHff9p8HEyfhnv8MeKBCqA1Zwx3bHPBJUaM_FTl28AEYH-_nlmhjpAedliWfT6FsxfgneWAiYBlp_DDscndJSAxlZn1WrtbKE6B6VNBIVI3Al026iGApdf3a7rQc94iBa2yZDx09NzvqguChAmK_JeZ7iidebORgnAG-pkdiXIuoWxqUgA5XrKLMVX-iAWv7fJ3DMDgC7TxRNysd84FpHwBtbeUZpKNDukINwv6Zifxei0jJnpHu6eBfxJMxYkjRYBs8DRAg_9viriUX-Cqjxsa6QD0TAZNMW3BLppWMuPwiElTOgcHzHPHffUHE-99Few7dpmgYu0nl-U1x8sotLLOPn3RwZQ6JEj8xE_ssqmErlcMzlBFSjJpO_vljbsc7BUD7TvL9AT8vwSp_HtbWK1XbQb6wK-uKR2Qvjdv1qxOXKpdaKLJWKknNaWVY9moq3Hm8yoYzOClop46Dqfm-JclAu34RdYwtZ7M7XjxD9iB_ObZLuTLbNu0hr9qXj4yRyOclX9GSjnQvU26V1px22zgwVXRya1-YSkS2gCsbSx18l4M67BN_O-VMFKuIfysS-bbxmZR5R4KieX45mNQYLu2ju1VfI1vSNpin-MhHS7zZmm-pzXdiFMiJeJcDmr7XRPJ66tO53TedfAAVgbKhx2Fl0URz8GgoQ7_NEk-nJj-M_RJO8Aj-jXAblgpG7hu1rgLCowbZDS4Tlbs0Y-BJ45AMSt3XAXUiuRFw1BJnec0PL0V2l5uxA05Tl-TjoUf80xLqm2ABAUw0IsQ9S-lP_d-WhqGHzHvcbJ2unvg4Hwbwh9eAfhjU0DKigZCnTX1WVJpG_UCZnX_jV3F6YVLY69GlLf2dsspVBdOD6d8KA0Iyt5tmYIVFHkd2nEZ2KMT6P9vQD9g0zixy1YQpVIah3kxOR2u2wcRgIKLyWWlp8T-5m-NJRY82tlDhH5gmguOo7gHZEUVNvVd3LAdDF24SlG92_1GMyTOftoG9bFrpixI3jSdipB0qIMOhfvNlVwNFqg4MZz1EKu-JCPMFNf5ckz3kLuSoB1R8v2ddy1x2r8ErDYFos-GxNe8AV1koOhnSy6hNe7dmhfvBRl-eo9cMpm5HYEuH_zWQppc_w9lmqeADCaNGmfc0Fvze0aK6MQqW1MRT9DYES6thS_6iBdPpr7cGwTef5XIa8GB6I3ZSGigbumqjggMp5QCKdPJoWVtBxEfQlyH8gQY0KQXofiEQiiKXGsa-1I8wKggk1e8Xjd_UbtYZZWFmAHPjsPam7whGf8ZcHSwWpWLAWRZzy_lp9WSHzuB01j2p3VlmC0eet10xjWdPkb-m1zNyqvFFAQr40sXmyuTIu4-ZuuUu4FsDQfAKYFRloRS6IE9BwA-Q6TfOtS6Uj3uHPJMgj1vvKVdbC91hAk8NDZYT3xm60SvBJ_KhfNOZyrPFTcH4j-s5dqJOt7lrqoGqIyo3rEJcjeOwqAoGfgxTelAZf4c9_5MRHbXF-azYhAlM4hON2Erxv05J9h9bCRZc-NaxXv1lv4eWaiFk1T5GiLfm5Xw0nRf5FBHv3g6mseVx4n7-Mdj6-vOX0NCSqdFZ2Mwez6bLQ3miDgUUPIKxbxo-kmVAxFFvo5FwWj65X14a5J3JzmguSzOPKjWPHzZDfELXn6EmofwnI3gFQF8m2JgZ79e9dYSQA1Tz3FRkke8Q342Q41mUtg0qasU9-xCZ-BqksQkslBXRgypXT0AsYI1qhpBfOn71M0tc1rSuE5NxUnn_YWA1Oo35T7sgtcpgyC9BGO51A8Cwym27xqN9Y2V43bythPH134iu9_i8BneCB7CAFEDvkM8p2riRWGwqM9guIUa-dpkkbqTRLsoTZc0DNa_rXokgjynoICC9fnLSZ49jsZfKwawfv1-PcFOj-FmxpD-MafdfnCkCuRX-1_PRzwRGXj-q8hkTiT4HUSCWipeb573raDf7ILs4TedWioYr-_R6dVaz12db8nPMF9UB97dMFwf1kSPy8UmKkMYH_7SVltgtx9TvzONYZxIbKkF5Z3R2Rd7cl_cLKO8m413WgxQQnNE3eLNiX1C5Xl2qLHDGnvo7JYezW6D7KOjwlqa-VEw2F3pi2-FMLkWh3NTYY0s0323Ah6k-WezAjW_ErsIQy2n5weyr-Y3_3OkJ3jDAIdRK8aO-kV_EzWbkd4l_V-pFW944MevV-mpNpal23pDIqOru9CDaicNZUS6c1HiIRcl0LF-bU5OmulHQF3HI10a9faAyyRDgD5rRaf6zGsITl8EBvTxpSuMtI8vItWLGs6isIGjYhE5r1NpWFV-oJiMkNDZOyUi1ySeF9h9qTueNUBzSLKsNoEYT8Ck4RfdQXMjXr3JpE9Doc2HS8m2D-qEmPq4lqjk5v3fIrFlVvf1ABtyHah4-fG1C4o2nngbi8tIWi_zevxFVyvsJRa5tM-SnQ2Ruz5mjliOAM9bOy2I82FTYtXVoWZc1GveIYDzfmKn48OfC5DyC6n5MyPMlKltI8CfZJyeYnM35nSMty_paOXq-nwHacpM1wL6ynkpiBS3GT2fbjd74zwFnbjmwmaq3T9nuwacYOkmFwFB5mdsdqxPYtpazPAkdGTvXatDQsC9e_G_pgyIy0ghWPbsfCyPOLjS3FewJfO5al-8Cv71ikIAo4Svm4dGKg2QGMM2ux0r6BLdNXugVnZW3HuGMcM132xhvayI9i2FHqPoQB052ozq_1VAfBOPM_6he3LWHo29V5Ujvk4dXj0q6xuDTPx089eGY7B9OKV3Iwv3leQWoMpXa2mCC1AyqkkK6-uqVEtpZIrsFR5kYpLBGwJnq6Rm7feT1OZGVpOIW62DEqBMNZyr3wFD7g4uPxSSIT-x97jlNRaizquHrBO7Ki_6nr1bn9qdadeTScL1v62RiVSFXmRe_LY3V63hFpesarUpRkwqsB9Cd8FNQHJcwBLnzYt-syOsXtCqo0WUCHtM2n5V1-wazlpTFUR-s2L1eNLPNqX82cPT4UcKZLMGUkYnxlPtzNE-YcdZcxsayOtrSGrmwRZK6uCf3z36s6ETyxiRWfMBy5d2pikz9KwzBR_NmT9PqarfMuAYZTyY0u1m2Cr8RGm4Ml6NOwZxjbATeL8-Rnxk0e1trKwutjsjx_piFOr4Q2Re0P9FtXOO-8mmNz8zxAVn8GwhXDqw231TcDd9XqjZNf3E0DBZxR-fFqKpGDn6SoVOP4o5B5oNIlmY-Vb5SkBhldJkGn0iCRNT0AJGiQ3O-NtaxS7HslxscVLdXF3T-yb5JRcfvRDaBt5-MDeMAEaS8WyOwYrZtnx-M02v_Kzt4gd7MF1Hs_uBoxrobvRS6pWvOCUz0mox-MG7dNtT_Jg_bxv8XYIz5RQrD0Co2aOZsZqvk-d1ylC1nw7VXzWLOhMRZbp55yFeqhY3FEaudCV_L9GTKfm5lae9UySMdsZ4c_cCL8BKFyKVe-MJH7xqu8o6k-a188PHeLz7BDDGObUSbgo37B5sgNfButJktPnzyJJHBZq17l4mlLlVQSwCtMNZGZuKXPxvYKrhvNXGF2pB7UdAoTvLnqynFVEKw0jc-52iWPVwiJVfC7rPFn9CVz8ObvmzjOH5HVfPFFZOOI4TKjQVaaa3P6bjIPX1PfaowLo_e8inoCuOw0dqXeuhPY6mkvwgG1GZveaol5H3OGDM_G3sRMQ7zK3XoMTJKXaFenk6swYtMaQlI48fBrgdjMzlL_IiJA4qRjGSRYO8Bd1z_PypfV1KAypQ8CG0vo7UgFlsPN_4A_1FmiBSFuVdxRwY9LNdbJomVIclYNbqHjQbHu6GiODryTu5HoFmzP1LlXgQTP0GFeVWZBtrkb4TLNhNtaICCQFCP9klr73s49Ob4ensnhNLwZ3Od22HFrJHPZfVRgriaXOX372L7SmDtB-ojRPReuA3tWe7B5Y2J999LPN6Km9BDn8O-KE0vKZKTuR5gbHAtAMltoWzljLwZaISKjbD_2z4mE9bLVCTf9QsITrnwcoUHYgKnFMDTQ9skcorqKjDZFHglsntYNO1oqyRGt_Ge0RvQSlxid-7Au0XZkubPouf0ZGLuUIJ88IPAuVwDPghtCAKKvLuVVMSdTP-ond76D-PcRsxAtKeV5vQ16S3BHzLQNGRJZFuuoUf_6Aa2Wlup7NpuJ5nL2AB05lk0bSKJGTHikTCi2HeB-Ogkv-e796T38fz691s2CukDyDXuX6a_yht6tswTVEJL6Q1hlGvoSNnNzAIDmCnaL4GK_0dYT_TOcTkQuz7KrL4x-CMXhfqKRn-M3umj2zCJWNsC405unGquMeMtqm43RMTIjvS40LLyCXML9TEuq6R6WEOKQ305nNB-HERJKjHe2g31FNmxkvqHkrY4OzFxo7iCPRZ_VCH_Z_vwQOG7Ss0DMzL_N3AXhHPcMh6Sd8RgWh3K1ejrBynlMFRWOWDnWrAgPC5QjtM6PvVI9frcV_pXXooFTyRdQWWoqvGSJPpy_ZFV_TVKE1d4cNx6Bqp8XxOZv2Bz36M__ouELPMOAi-xqGPoNFsVRQXFMCb564-btpHodl9NoP9tNqVp4kFbH8RYTBiRYSfAYyhi7lFs_ZSgYjGygMQhJpCq7vioQfE4Tc8wqB0RWbIIzTXiGWrfJroKSlUlZhTPwWaK6sn1w6l5_n5HVX4uz-Q8sWajjP9EAfGW4tXXt0czWpM5Ql0-6Ye6XxDbkjQTXaMUQ1WY9oZDWuzZkbnD5tsBFrnvqmcJF5bBHTkfdDY9cbJxh5_gTIy0MNvfBS7PlzvRTDfeekZFJsXKtWwjX-Ikz4R_TUP3JYXPKRPgGW1bDV0kLFq0z17ydCNQmUNRxafIKGQYh3s0hzXrfK80WbawgPfgYERyMIBPtqL_8KnBdEFMeRKhOJ2b41vyB7NM1ZN5OjBJx0hyFNkdM3kn4dUZqnhGLKN3tP8WWWu5cPS1wsHZnWENqW5UliBJntjqf_e0oi2dO7Lzwy2yvWbMvfWXJn4fSXfGVk_qk6ZKiYPtp70Xj1QFOd6kpzHxGhgvIFryzZIELCapejkMHUbzMG0HYpw3SWv9P30RRKIOHVDtG2dyvFBehvypHYjNp12MYHnqgaGFCi-_3-ylyxwYw8XkT6lNAcUgrdm-k9aGeIMjrA1n_UFp62AV2r6AXox5kKDZUXEMT185T-xW4MiSb_WtQjmB06AxLmh_taM3rjKXU13sfa7XGcbM6hIIHPCgruRKmW5uvtvvLrL8fwWDNHX3_8Q0F9NXp8EVP9J2O7MZHtk_tnrFh3nLZ29foaIOXWXwrBTftJwOfFzpyOfCKQLGzpoX8lGiJR6OWlZkl_BeLs0GhkJu2oLHspUa8T1QxLDN1v6IrVbT_euyyIHhqEsHw03PZOGvLm-uwFlFRzaR4WqJ7rt4jBkg6NkqTo8MEJY_kCTHKgmJrI-7VEXaB33aWCaVsoB8DoKixEjN99Tm1RU-mZRQAuDvbQGs5TSPeF15IXezwFZLApvznvdlgcHRmR5zxiLidRLIqKhvjblsGDkJC9rjL_TUFxO5ECRfoFPgx-ryBW0ABGc1YrYrqLIGH8mMMBwwDTOAXwWc1Vn-ZE7WWeNvEK-LqMrqs60iDP9P_CpZH2JnIyX4WJ8uN1_PdP23S4ZhGR7eRd3pww2Bu1R-9Py8RryKoIfnXwLyM7iBL-H8S-e3GFLISgbngqf7s_w98K9x3hmlPA9-zZ7yW3UHnCUsrUQ6NF2d6AWIGPknxNFYu87GjSEFBBmu9yXY0qWthIVoaNTIjbpv1BwOLvLtEB9_ijR_8O3FfWwkIZR4GGZpKYHZzhhdkPDdBZZD8l33eIn2dE9QoCFvr75kV1qQh_7t3MvmRE4qM-roWb27OoqaEPXr1efNAUJKnRBQqp_iq7fripCSN879zoblmKjHmR__GWhJ8Q8_IwacK_4VRbjZByDBOadB0DThRpLgDPRCZQckXDvKh3iNgypmubpjvKBzzMpPTnnncbrGPDNzlS7IyGoeCddNkyOVGUZpxAZpdmfwxgautSb2hYBzUWE2nyK5fS4qJ2KfhwiztdLnwekei945MhO4ajxeK1isaTteqHk8Bl7SD_K75mMBPWart8RN6j_m4EYZDsc06F80YKAFrYUvnCdPqIkYkyDhpd2hYbDCEOw4Gn6QNYLGFTBAmsihctdMzjLzR_QC__HDBNzExIxq-TUVUB0d1kW6y0es8ObHQZjXTEhxPrOkYn25iNkZsbNJrnh1NxhrAcpkiySgTjlnk-MtaEObPjIykatpj5zCqpOZSRGm6lEGi96iNKPnzjpL5hukllxTCJDfAvz_hTQkNpGomcwOIctAr136oeSt8Fx-uCfH7RCQKH-VVO0CTG1My3kZaqr3dRdpM3cc8uLvU34mOBtfcS89ES8dQioL2zrpTEg94pcWo-Jao8ZfAwbSwTazPMieH11j447_UR-DGiML8t6Pq22z3lWhtSiVt-Zh98YEPog01mC1eiQ34rBIbhGxgoOL61JKtEFZdN6XDijwAvDf15bRjeuQ9XutDqN9p7QRyejTIaWCc1X7VNwIOMpBUlpNZkLBdXcJySb05pHaHc6rbkG6INspkfYrSpvweMurDbIhScU8HGyJ4y1BYqsdQr5Hmx49_mFIKoxMhUETB8Z35S5o4pKDukjHwj6rCDfJKl35yYYngZlXTCDBTPsUtcH_3E9K-5OAjQZuHhQdIKXhPK1Ja2GBjGj_WAKhM8BXnypF3Yz7bnXR6_ew7q2olLHb0YUMDYJuZRhX_Ne2pSTZvagSxIe06Ox7Ao6_SUtt8SiCWhbtpy5zSje_GsUbq0f9ZWP4JVcBkvNX6tWq-Zpek5c3WnAWhffKR6_4b42GHdA1xMG5_Q1rmyof3UMyYcaWvtsV7SpR2ac6oYhQsmOhy9LItJvkwJmpY6-6PeW-khRx4NN04P90kT5bs7LkjmB0jlDLdyuqBRgpfXIjmaPfTG9kIT2NBeaDRrJmwsqFSry60cJmQpltz_FJAXVAwN4lVIj653d74lmJvmV_7AIuEE1C_jO8VVY8jKjtejHqB0AFG4CAnB8ALQNH_WixJribKWu-70DTVWtdzkHAM9z9fNf8yFH3Ji2VSPZfKpePfH6REqPkfYhpaxahdEsYRqLzhpK9ojZN_1fSYKomCFvwxiygi54s9SLfrdfXg84kfO_NmH6wLenYZe5CLtgl7LVEpnIrRMsn6uEjGpf4n2cyCoRVxzEyLuxrMFQvLFFFenVWVDK3Xpu6tYO_Pu_YdhDCdOq78KETr6doY9rstXpcnrepiztkfdlh9YThX-z4kT43v-WY-Vs0bTxEPCsW6VMhCQhklLbJ7hu-f294KbIPy5ukyvRy3SUcVkAB3WEx8Qr2sC_M-O5T0x3WhDWHYlu_VPn-Ge0BaGD_cwa1bkWYYkpTk6WBdxpCMvUkxYbL-QGdxPkl_K8GMXZKVEuX-DPo6pSvEyO-eFtKFdQAUlunBNGvX7KT4jCwI76eAx9GQZFtUaGVTauy9I37AsC_KLj7HXGVNzbDKWjHwj-lk0Yoj6jiLSeKhexxS712FHou-YHBveeKlm1kVtvAHHxVpqxhamIeoCiwnG6u9Fz8S39HSIp8E5-TAsiLprVKRUeBIq5tKfrScmLic9OTnoCPGNYTUhSGwrvSyA648UVDhE8BVRfiJEM5pLsrYWMuejUJ9ntUWLnY5onkgvo6jhCULiPoFJSkRDGF2Ksd6r3DgEeV3pFtFaK7eGp3N3rYERTAKtHGVXgEyXrGzXGsICzWRMeULe18-G47kEeF4HUPfr9qh0OTUU98g1l4P1WNwFtQLjU7eEJ3qWGTlCP-5_Epo1lvlMA7GOm70PU97U3oal0asIJoBjuukODDskeE2XENmeWXmk7-AjNGKtkv5kL8tNTxeYjPjA1igv5IYimWB8hqTcpsoXLuY5FNnzVpvyQzF5Ts9dg-lwsdsbGrN-Kv4Aj7jHRcT4bYmeLUck2o8XQFsrKW0z8pBMiwetCo60cqUQdrvy33kyXbMFb3CUlyzJEyBxmrvt9JOoWuu1r8oWd6r27p81vmR9cXXjblfU7xUb4j0iwv6-T3CkffeKlZLVW5odHghiuS2janup06LTdKjq0E97cY4dDhqkerjwD0ipBcmnwRGOamh-wNxlDny0lKjhPW-YazRN2GnYkBcJCz4lPYomDuAwwjy18GxGATipkVHrq75n3p-JVck5HcNa9xqio3-LQE1qvTwTOdA1OuIxTLLR5dNdv7X2Oem4R2T5giutqx-ayuvZSYNezlZ9EP1n2bdhJpJUDBGUTYcchecFNM1XqbrrOStdZ2ZAPWuzg0xxNmkkJCHKXVzKALqUJ5uKlDmQoLRAvcSD8QnWfVzQnEE34TGQY7vrX6liTw3Ua-vj7MeJQbcC5mhphREw7mAp79lxrUcZyzBnTRpYE5nPgtuKIyNHBVIiT2tfaBVPLKP5pL5yuCCgO7qdqkmomVmB8EAJX2fKR5LL5O7L3nxcMDc5o9P1HkqQqweAVoNEIrlHLDFfx7EAoVHvOA2QInb3d-vK9wGBNoBgAJguJtXKEe1jn_nflczoB-TZlqxt7xI0EkgxXIEDOZxXl9qvMUw-dHF-WNiwPzhTxx-Gu3pka12n-hKg1h6zR1we80fcsvA4jka2n6DRW12diL3PsxxJafBQSVj6zsqR1KXNMruG35dp2yU6v-1GNCg6pnXZKb3sLNhYpcJCuezkT7IuxK7rbURhqq4CGgy6FzDb_FrBbABiK0BmBSY0N0FnaBVCZy-PeK5nb5nOB1aSYmw190d9PZekQn9NdtlgL3ZI-T_Vo_4XjL27G_U2VIEKnrpyoL1G6FVSS_S__o9z1fVVwU015U_8ibAnnFjKcn8_2D8gvo4alw0E7eEqBXyMgz2g2jxMNTYAnsjEdZPhTrKZLcxfLgt4Kg3xz9fF-y-PBvcxljDyQiaQ8_lJ7cZ1uJEv9bDBhPDxP9sNFLRknjo32CURIM8AjyPppLQZGVe3rnZPA1OKmF6D2qT9OjmBPNpshdVjGYRUci1TAb9eJI1uBbIyGcO2R7V6WMxrf7kPQFR8I_ZrwVgqT1lvwiG_qS2_1IoaK5RLQ-AgXkq4DOaV7D2apXVL0d7RdPJeEJFhuX61Sdz44-toHAVZ38o7a07LDd9UxT0-Y_0crDQdgS0dCMvGAK7Xn26zKyVmgfO3u7JZK2ygYQ2a2qO_zDR7LUQbukyaveqRye7FBzmaDuwCW5fENyN3quW9MTJ-SenUquv8ddGkCCsT3GHdX6EHGhhxogc_apv-HHW61UeI1HWdqeq87OtDbMM50HvjMpGv7DRuxSABdDAC0aEZeRveC2hFR2ufL9JburOaBlpQmw5Ang9L-Esii49olMOG80vCfE_AJ94tNHT5eFu22HYp1HxflpF4WccuD1Wu-AzHtQahz4oely6gWZj6SrTZpmYXDfhlxRF6xspGBPqO2R8D7-kWeOm3D6ULIkIp71_8XXwBzy4l7Rb6TwzH5naA5EzcuiAeEMYbBjeSNZ5rK-xHwWp9__HJzw5mMK0Jh8vDTKWF6cQAZAoUugrwIptC090-qNjgYxU3O0kkLlgbDL9XyLwrnn5CLYLMlOkOixwaQgTNJAtDZxJEU-sfGNx-m3IJPNVbHwTvPeUlCtzGM4Xsso0_2no5EqHJKBQHHNn8ZYsul0Rf5ZUV15O653mx87zESCM1gaqR-x1fE1HHqTfrCMyQELF70-LeoHhWLQj0ZWP-D3LGZJfuosFpCy3Qz37M_WRMkSipMygCg26DT81RJwxp-Y9Sd2Z4A9P0Yx02XsoM8cLV34s0A3P0m5wjoL8aqmZK4-vuAMEhxaAMeFofidz9p3drSoYzNV8IkIBBWh2ggSL1WGxZ-9jLWW77p3Dmg2OzsB3zh-Er1am65Vf6SArhsRi-slkuF53OYtQ3jkrkauPWV-QzVLgS3sy1XPaoBxGAj-HfXSlE9bkhGR1B3WBbvhjfH6S0qHg04_sAMpx9o3nRqRTmHfcTjwdtLqKayipjfz3_OkvPpk4WcYiovd-X7rwgiXGnGFFSZEP9xMe5n0qgaXpOQF5gi-6mFedQ2BZ0vat4KvzzybhBuzw1LVwfG_Nl3myYNoebe5dIXQguzK0ILMpP9ZgquSVrCgwbuFadWbIm-bp5SYs_NTlWoQbNaGmMIBwkUoLz6xaCR76BKuRNOY3juFpB48FNGAkr0z8vusxrzrxcWQdXqoe22u3Ux9gt0sOnD_toILrBLt7w20EsGAYWDo6kmAqZRFesJTrp4rf5oThAsjL7lLNP2e3aCElhlJ-7Nv7pXbBiqEi4ALV0fA4aBd2Dq398f6DIotEVIaE_fQmN9wUd9-GTMWQl1jXzQTU9BZ0-gOx3e2suthpIAbk0UxArkKRUFdm8ZHgaVRx4aibmAVZ1GfqQ0Ug8ltTrID_iGbJneBma6lP4zx3jhmAWTWS9BSZbQgQW_i_LP26nbKPS7yEE4zFGUEtYAJLtJO1Y34vzzNNobNgDuHTzSKcqgtecf8V3msoVeIgy2mrqXfe_RG5XM34RRZI03Nb1sEKuGbWCaAiCQNZbuH9p8nCq-970mOIKzVEMjv6As_t1NLMQfgu36QrRBdRxQ7kofwG9v34CFr4VQiA9R4rI5I6fxgviH8jKt690tREHmfO22IiisGUlHDNJU6GUWm4LwWGAV_UZwZH_aVeDa2RCSiFwpbBLV27e4PLj8Ys4_nCKt1fYerYV2oyhtRbCgl0GhuGDwiMPsj35MNzg-jTTgNpio_zGLfMNb6q91u-fg30GHMl_MafwL56gsdHZn0EkSu7cV-f8PszWal4CoSizJXdazx99TTTJuKki6jEFlu3pQ84nvtY0noGNnTAdNxfng3GSLcDQER0woq_fVcHNReEVfKFNVoWCA2IEycCsPzfW2XnrkwRPc_5emQlcHLc1DqF307BwU6_MpxbyRMcCy1mUnBlnuUVI2mFfT0vQjiSaRw5G-53_SmB99oSRyME7ZB-H9BFjuxKTIkdp_s7kSOiX0ujA-yWwFQYc5okB-4SzIJTPnZs1V8a8j9S8PIervVyEj1JKdRUAnycEeF_KEZzruYVyQFe8EPDUb6rgt-VaBIvWdx-9AOgHeUniQc5thh2ahgyCHUuTjQ2bMsR3FXs-w-JHV10vgafimrnHtr2cRjpoG0oKGpWSliIfpIXxi69cz5VCS-_yWFJmTYitHh9UL0ySwNttjqBUtmoP4KezJmeWGtnpBnhao5YAcooC7UlmRPr41Ui4RQ4l1xCq783bJoXVkuIrOyooviM4J2iL5b84Ods4jfMDa6C1RlYWDsnmWG38nZz9Ul0KeiAgaJzYGR83keLWHF32kVFujloqxgAEO7LIoHOM8IGA9wDuQHzWzPcY4pM0GHnYIP3e00aIGohDs3dRgF-TOrtX2yNd3V-MazAa3DapE5QSLs5c_isry-_-mIAXaCgs57sy-V-_gcz1Q0bBBPgXowVPg6CoDhxGt8SZ2W32K_5j5JOy6a_V-bd8JdoC9m6GFWYURYZjmuQcgM-bjiAJCM6nMmtHcDjkFFDuQkUwswUpuPQeHvhS_Y_KVugC6WV4XB2DawkWu9SA7EfdM34GjkEwrECeCNZKov1XpJPHObgPs64jKvDOjwwCmAXwzX4PrhN7HIDnhYQ1muHL9z4JOne3UrxiH_HFhJiMSpI9MjA_aFcysF7lHOv0wRI0ucy74LhU0jJBfEwumzneid6Qf8Qjk3tac0meMcrOuiMlihUcd79yWS0t7A3moWt6cyZZk_T6ygwuQbrKnyIGWo3Hu0vJoZ1d-S_kXT5DV92r2N7W7Gjr2_3i-rEr-ffGEl3hO7RLCGgpteYUs5cDbAxwNExJYzcMBu1NWdEmfxNjk8dXOsIJkMh6Gy193QokuGReXkAg-6kj9sE7tycjknBT17NpN1B_nFhe04hHngyBVHEL5bRWY2De_gyd5KJhGTPaN5W-SmHB1QKIegWlHxWtNSqR5heOBU4xYDuyrd1v1yNrjOJe5-A8e79cARcTepZGh0fSaw4BK05Kr4XawQSzAamaito1ytKlbCEP9-3PtZIS_WoN3oET98lPhB0ufj0r_ZXccsW7Pwyh2bKOT5owCFc_Ij65xXahapknQKxn-QCp-KEQ3or6WxUTYl1-dqatqvPcWO9cmZBqQ6znakzOk2fCd6zXlL-vsMDByUNicVBgFCVDt7CURwjdVRumdWqR6yxgriwv6I_sOMgRJWp4WmPsT9fggYjNeCx2D9iVeqyQfENjtVF4tBcnmW6ydA6mTpXZFe8jkcwJH2NtTQ2Y7UZPL2JRor_IUSEkHq-F-C1iYpmRTQAdvvAz8SaVj8R7F55iLi18x5x98WURc5O8kTxSojGINglC1ZL5rEG6_oyabVoyMWUJwilYD7BRxq0e0EQP6u7jxAyjqIOCgBrvgWDGxUIbH5qmEm3gtub4mT_Wi3v2dX7OIGOwNJ2bbvw5UXUPUVuGB8E82eEQYzvlhMELKNGXNTbGXvc-kKrW_1plCDr_fumCoRO4Oen5u1Zmj5vLx8UFjs9PD7SdBTpZJNmSIKYNGH7XDPCyLde2UCWE9cuGxa788sMmRzZU8gsNfHfCYQWP-lMb0eQQMlSPix_BgOQqi9rp3qOOJKJLGXYsEJh91JDkxUtuP_vyw08Kxl8ZQPULVSXEdW7YUcoPT2BJS6FhAtDFn-tgg2-0UnxWHCXEfyS027cbtqfpfYqwODmRWGm_4eWS1Wf8tl1M5aIkHs0NCb9xu98pqss_bKPq6-o_kU3X-IpDdwLKOi6qHI6hF7PildAhSVAbwwoIvxJJotCVAGdBZzSQJ54dsa6POSegfwI-R9wjxt83DR_DWIcn7PRG7iMQH8MyrlQB2MIzK4fp2FrZKU7YfLcgTtefi2-bAm_wjEUq08bf_9ZIpRUNqV89kRbD9gL_oTOFcfKzNmTm92v5LSIML3NbAtwZV5WyH17YoR3-8r0XLOZmFMhBUgujeko5UMpZMc5IsLM-2f9YFNPr0U3SLLVUCB-wo3H85j64Bg5JrBPO_MzjhfVDmHU3bQJgd_plw_66EUDymfbBRpxuNIAOoWBrzJ5h_gK1vB8wH2yNfn4w8X7_3RLjQEHF7SwCu4dr4ndqS3Me6EGtghEQMUlfhVJ53ynTyElzp2fcULU4XjBeCED5tBrwZjHGEOMTvxUV4siyngqe7ixkvhFo46C85TRO15B-TnMVVZMVuaXnGew2XMYlQVj6zm0TSyg3xR-Mos7jUtyauvJ1yvfbN13nz7t0lmG70RbnVEXNdmcdmZJA7qZU0Fk19ztkWzk_dgE_dZdnMtvTf2JIiSgGALll3rQKfECJbjxOI8r2F4nYyuEn6hZ2IOnS0Bbxl-SjMGpmUNSS6nLsRgLhtRy47M1F2Pz4W6DWeaEILu9PcMNcr5Kh5pIRki3Nr6lrEpD3QtbEOIn9Drstzen5CslYGAIi-74rUOn76z0Agy8T80WQmBr4T-Hhga7T-0qR81GrTu2za0T6z8E3TR2gVF0c7VxN7OdBLvmQpIqfSEpTuY7ZGOkz9TIcRig6UtkQdz5oB5XcY_mHBeq2rTHzLshaYcS83tVV7yui391gFTjmLaV7k8261f_n5Y_jAHQiL9YWUC44UPtDvGfmBW810mGCBzxcqYY0H-5XVrwk6gKF2ZCR69hW8Uco7bLpKCMPtZId94RHpsVH1788bYaZFJTHSIDgAKdnZ0-UAKgH3atDonqLCZEV7rPM-u6_5ryq2N6x7qNyzMXhwTn0IVZAh8SQZIZTGLkPmZUL71TtgrtA5srm0zoZelNAk6ER9Z7k2c3C9fK6aAlhiegcI4ESTsvdTp9O1_3XvCeMfw-K6pJRH6Cyil4blD6jAFOVFxmgLCyzG-eiA0j4USePYvk6ND6uFwLQl49FIVTQt_F2rcaaKN_mzafRmr2nmOvpR_bwWN8ygf5znl9kTDTq2TdpKM3zyqyfm3NRmB44DLj-yO2Xy8rkn0HsP_vrFatVR4Ff84nGpKKCSwcqbIweZebZ7_yyElwWCkcxf24Eaj2jpWYZ7Mh6LKz50x5S1er8Pt17wQyQjD3k8Tj5DBiAYYrSsBSdEalHvnLBRLfiPfmx_AQ-6N_eBxwaNEdo2sGxpJB24Efoqe04LTwmHHLzDcuIiF2iHPCwUz4B8vEGcihpCE4Q7j8ZHV07z-IbNJw-OLYMhqxly_5BIBSH36NywCyxwtJRB2sRVrNxouLN5RoNJdtj7JaDzJcdebt0hRsAl0YaWNxQG94hPWLu3rXQsE9yN8P1Ch7jfWSk2GTFrsi5ZapSwkIFVogKV3VWYhjZYn3FHJkcQiw7ifQ-Ddm5cWpwYCPuf4JpFYeICfqh9ol6KdIpxB2Ctupfg2I6wdMKcii0tsQaX2FkDxqB3iT67bCffhcA_-Vpb03YDJc4rsx_EXFKmbR-XyDuYSSyiU_yzRkHIFg45QILYtCgeVnIs0EnNVXFiuIJ4zOo79KqnvtyXvbflpb9TGGCY2Vfky0kXmj1Jo_ALzuj7FJlYfpNdANYyDaNYny4QwKaPbz2NvN16ITI_0U1Z1KHMsu2hvkMt4bGFOse6msgOsz4eTKHmR3Fj_T-H6G35QOm6lnubst2CgYMCSdb6gXcYW7rVri1fuxrY7paHJRvS-dIQX3Lwkrki0J9KYVqcf2IO73L-_e7EsttPn1vrMITeI4rMK9yL2PPZZ0aHSSmsI1eRwCgUQgGGnJOrexDB-L2bWDm6L3p4tWnq6XxpPmtIQooHFNj81VkYUi-xVbn2HPqBOnqo5d4_7Nzfdbit2WNJSz4HeSTotk7YpLo7aiDAvj-cHpVh4q_aUJPY4X8AwY1eOavXeKBuNbGxnwTSeiTqSePhOSOHTo8ioavuvOBqU5xZvM_rZwGBmP-m-jC5Y33WKV3qsEOwPNAjwyjxU0uEJJwO5zP81PSaLkHGADfX85Mtaq76Z2bRo4l93MIa78mFP6viJBptCSOXUfuU2cbhxrR98S4cUlBv0yzY7NOJ6m-UzSfXCY1L6MPIYTcIfnr9Z4EVR7u8Qo3G0P0CfPyqbAVHWqKkp8iZxwcwlPYbE4DRGjpMbrve3Vq0GEQTidE2wmL7_UOeIKHl-lmkxUffKEmvWjs6ojQW2lsveplM229afz-c0IsXXLqJa206YrUqzux6nevrqp2oFXNLGrh3VVZRR6_tfiY1k5WkSbphV5eLc9GcLOLa271uLq5Zs8I4Dxl8uEePnsxOxFscCYhnQ23dRDtkr2EvY0x34Xks3SjvFw2-upIxpumqogrZ-pOTi8s6vuqh4iGbqFN5Wg8ljBHIETxmc3RD_zeLqluW-tlEcemXWxiSArQag7od05i-sCXCiSVbWKn4TWw_xy_qns3JBN2ZBAgC27wl6qXpq_D2Wrw8PszKUOY0Bn1K08vwIQXRGLDJc25xSNdUFqvoiGHZpjO_IqwrZEOizt_5lXfYJS8EPD4UUDS60nxAlsV1ijGSdWfcF48yxcADwZx-5hxO6b6UL6fRijlAE650mSScNBGri4cp87yoiiNwOZZLje2m382M511eV2YbOsZDm-qGjvKsHlsN4DIDp-NH4YsGAki7X1lQUm7yAj5RcSiwDBdkaE_tzyjUyJ7oSJCxJyx9R19jLGboBEIptLAiXmT4YvemJcEiaYvovkyTxLPt1pFgkr7s_AfCHf_6eo6yftydWM4aMr8aqeoFwjUG9lHx18tbIozf_MUMF4pcvE7foudDfGmSfawpS_ijOcfVvH3HBQ7DuDmXx_uIB2zXoTb4uSjXE3305gyjOpXx6b_Ulc-hZfLyN4f56KaDKh8nytN2uci3guRkIkQhy3No-5H4uMgbOdNxeIicSAwH4T4VktVou20CVCW9uxA6h5q80CREUs808PnMHTEaD6sf9piJO-XXSKW_pegJ6ukjUTI7O5UQsFVNutIfLq4-7_tiLT98scmpabCIFcroKYbsVCSyWT6iWRlH2SYbiYxeaZJ44ydNvt0dDeLdM2fFYIktyVCIXLMEyjxA76tkawfK7DEjm4g5iXilU0SwpgqvjOVlYa_85FQFD85zF-g7wkGPyahwexWItFfXA63yGgwRBMhpdjrVbJIJJ1YZCaASWupz6_NKRir1AMLmd6qezK7FNRakYLq4nFpEAcRe8BwF5HJosqwfbsqpfyv5aPB3ocWPy8UvVxjnK-Dqb-Y8ybYf2C_skDFRRTNxHP2PqX0minAhcfKf1E42x_zo4_7eBsZx9NEzTBWbj3Eox6oZlgfHZDGOvfsZOOqU_W2YR1JZRe-mERbfkgZPyyOgEVhHBEBi0V6983FXf-1PtBZ9fYSAAD2VmOS2viliX0zPQm0Gcm0vrPw7s_kLI65lB1L-1b5x1aP6W0NaKerbsRtN75i6i8slIYMYZpZrU0qBsWMskgMtgZ0iu4VzvkTF5SwKjQ14zv1ni7cXtH02LD8F6Zwz0YRgaa3TnAOInw2b5K7Lmtj9LcwXcoxGM59t1G1uUg03kls4_eZ9LlADSk4bKoFV8x5ZqicegM0_rCZIA06NhdQOV7uuW3axAr4bDJ5bMUZguqQUTX52QEgC-EhW_x79tcUF4GD9Mlw2buqmwE4GwSrYFFayhfRAdxbDfMsVf4RupTGSVPRn7_e9yFQ6doWbbrEsy0oQKO7TZcSjBhNCT27OUzYqoPlZtzrpWKtoJjdEokijLfDDXkl82IQVNULbnHA9rpqEl1VfoXJ8kpCcXuWz-vHnQt8mWhbv_PFR0Su8ITIRIcGTSin8fwCV1RmjqHstHaK46PocHzvMqbgRovZw-L4PZYlw6PrcJbT85Hx62cwxiB3K4A-WUW_ikyL8LuLK986fhUVM6j5TwrhOa4-a-ycGSl3rmbQoBkP3T4aVATw1NZxb2N-uQdeQIJn7Q3veny99pz6hcLUGAvuPsH3VmGSOsnGbN35h648RkyjEAVabbe_VqlIYT-vDLv6VfJ2Sim0mKkOwfUOPRfsfmeJGTa7lWZQ0wc3wANYIcc5g6v9R6Wl2YrfHWWFWhg4JqQLP44RFxeUelMgHfR2xH1b4-TjklV0JQ4yUGDLYcYi9cchj_OmtgOojBxTA2nxm6h6kcIqp-TkeqbKrX3kVhC48L1pBgaiqz6iHewVqvjAvlR2yIB45HR3HvLRQU0pwmgpYiFHQOrxjMwmqTuR_Qj9_P9DftYanXkRuVkT2__tbmUTHWBNS49f4xWwWFTVv6X5qLDuNfTVHLyHrE4qCbba3jRzsq-xP7eANBSrYeSM2KA4YPpyRUf1OuE3c7qZxv2t-sj8Yg9Pymlleha8sZAt8vk61PSJ7SIfbLuf1cBRORyNa962W9358JPATItrtxnUFDeJT9btzCEoOviOFc1z9HkKMjJQy4PD9XXz58FtWxE7E5Q6RnfbZ1BHsPQ-YLTK2Ms_P8oUWISc9sEJAOlsyXe_PyW6DWVIJGeMBreArTuqucQeA0yxSUIKSrDX_dw2wZRS2XyY4uOGjFc4riJDdLBqQSFeWUWXM98Lf-Fw0H2JyF43xCRpjU3_sR85O73tywUuXEiW6K8IMTo-3KOI3snwzkQcCL6W6g5gLgj9fhc3NlaeWVayRuep9sTX6tlQTbuBKtLeSqeRPD1PD61Oby_1AsJJ5hJF9UUnh0zCX93zx-EX0dunylvtOlF6UkBAszk6nvpdkI485mcpF6jnCtw6Ooz6aOSBPlPm1hnnaj_nAtykKemZ9wOmdgj0f1eXyXLVDbruiN8TKzyGZ2RHw0PiV2E2pT3wSnJGRlu7A88T49DyjN-wabOveb4SWy1TEpGI8Ynuz9MdD2myDllex6vKMSqjizE4Rpl98GNc4UCWH5VIvug5vBo5RFcc7dYGXcGFnFDb2wBJ_cKNKmZyRJGFfiIlRlDjWAZ_zgBjhAv_QGD2qo4v1zUnHpP833SEhCuynXYrF0jczdv9QKpY_SUSRpgFoEp20iyE2tAE_vVQ63k6AEZMSy_-AKWKe42ALQYDgoiWklLs-0ZCixcIBHqobATOAXymbyeNTtnfMt048TgD7FunFpjAolZSDzTZhbOxaGJFgMiqfHsTl7Jve2jVpu3ERXwq21AawfsD4dtVOFc_D6AbHaHhwChSwi2OCyq4I4jfnlsoDiayJk0L-RNCVubqMHFJyisslmDFOkuA3B68yd88iMOiRyn18SxruzpnotwpQTEj0z5Em6WtGUMwdpcCL5OaHqiexePwlHMnS40OpUh9SsRLQ8B0MvdZYKoEnVcu4R4pSlH-_lzHsmykjz4jZE98KmqFEb9sbF9Z_Nc7wPED1_TZj6EtagrNzBDOQlKsF7fuKiiTKYQ5jg9WhiupE2IeSaS1Iwyao98ATkImssbt-rJbJPcUgqAXZ9HPduRDd7AKmgSuq50vod0B5Ff62x0ed4giplPrCx72NfhBsR6JHRQMNGrG0d0O_lGb2KtTgnPUo7TgD4JxfuBoNQysD3wsdxLcfAtwtVV6Gy4aKMAlMZVCdd7KqayYu5POVdG-pqFxn00Phnbor9AiNCdcaa2eKQSK4EjgLJDqDIzR_W2HIdtKfOBHx99TuavlEuZlwo6DypzztvCLjX7nqaZI75KNM4mVInxYZJtkjTeWZKFstwD2k6J-62NaAz8RvQ1R5yxaygxqVPITZdaimt4GUW-dJxlieT-RGEJPDwcYb7nr_iTN47njAZrRiPMYH7OJVoxurJrlenzOQrbtFyKL0BA2bWGzIsqXf4o5NC7c2kVCmVD1SI-XAkZeouulhp_ZWwNIhRMMSyc3eKwq1nNBBh_C5Gghjul6IoNnd5FwFJEefnpgOJurd7u4cf8j_R4suSYB_Ss4I1PgPz-fKnGF66DGUSF-GsSjQFSGJZiXCeK60TN-CM_9xt4vl63Gzds3uI-3cZr6kDaB_KHzmGTZEDstUdPdk-l4bz97tWr380blsg15QsmbRYqOTuMR2KQ2G9msfrrjpNs0sqePKHLzoEczJKymqsUnGMClZ38z2QGrEdUxFd06D8MJO35vhrq-zC6-P69b2aG_FaUzAaftOGdkO-JoWO8-mpi8NkcvuRNK5K379tU964SZ6ioGokMbWskaaPCN2URRDPPl9Yjp2qPFwpnP1VyihwMOnUqRdTe5NuKnMwLvI1Q91CllWWRefzOPkqCuTTObmXBK7_VZtnTM2sHFiQQHd4xvz4VVAWUiOIKYy6FoRGZ1GNiAbkKJ06k7cO1puucPixPn0fc9y84CbzXaXUDcp_QZXAop9ZGoRW3EF5_HPXI_CqQBhndGKm2AZJiQb2LPk-adYQaHaCIKyU7d05YB8uc_xeviQCVGB5YC0J4sIqYusniVxiUwY9FTD6pYdk3j3DVEhiqJddk3DLsr5i1FdZ5lxNX7AJHd6Ie6Rxr57CqSqE0JtwvPLXVjtZXp1r0vMDFCAYY12NZkTOG_fGWLWJLfIwlAtSdJwyuNgD9vGuThyz7N9HLdSzW2ZcbjqUHzfOQ7UI9FovSw2jQJCOcDkQ2WH9ZwWlF5PbK7ErAaFVIIQxGPCbVSSOJKuKgoAgr6j1eUM3ju59U3pm9DMSFCVM14_HfxCzTg1xM_KQEockUB5TISHixrf3wVzMNtkkhl77SFoCpmFhJeK9uj0kE9ijvAzItgk1dga2vPWW1BGxctw7_ofz9DQIIt7OciDGL-h-93blRweOm16Sm9DbPK3jdLvPS-wMADo0U7wkM_FGj1iG9r38c4loIsjhFbRgZPaYjaU6bxarZlLFjA9ceKA75e6q4DwTUD4g4J3t1Y_fFT_E6jRjJXiG5FDtgEw5JGMHkWLmM5dWq3jVMz6K0xg3S8npND7TFJ_GQFg3J-KhIEDfwy80pWtlDGxz_JPmTmQdEKvoHDvUG0vOPTK5mShCpofQQB8qG-sLjP5Bj8LK0pC6kHSpAKpYrp5p62moJT-W6xvEU7_kC2ZeFCk5aLORahWffmDdE9_sHTEJ_0PbAx-o6Lj8oJz1Sp_bI0s46VuZAOrf-Ml7qK_f9CeGj1ORnODbtRH9TxcsQHP8DJJXFbo-AjuD4h2OXUF3bVRKQSE99PSCCBxUln4BQ4fjnM2BP9L6S8GAAUWXdRm-amprthSgevD-ytm49rp1VKQCPiOKRJyYSkHAQ99LpG4NLtxDWnKsHCg1FbPok13AuRnNZgNqxTjyUFUSeYoy4NTk2Gy2Aw5yAwS4Rkp74Qzhv2kNZEH91QjQ2VGXKBDwaOT_tYNdA2wIIlSbsQLk0uvGlu9iRy3ThxWPJeQH1HRt35FZ6RxfLOH1PS7tBRfKQT1oR1mMsTPttDwGqGDnrptL43srkviE-pWH9kcoOUHPTHqmNz7ZzgRHOlPr5uXNv6kn-GgrLrmhYJuei73WLMISOAOHTy3DXmXTbN6iZzivfH6ejt-mjvwUGYyhSXNoDo1GKeVruFbtxyXrvm1IaERgfzmy-2kLnPDneqlFniFzUV3ebGVZOULYJaWZrHLDIzWovqSQjfLqYr-Hle4EPXWqGYy_iVhky05agnA_-m2VOxnSlkgYbokg-z0c8T7b7pg_EhEF0I6BrfRV-T4tzcwOKPseGvAu6Sb-ITooaZU4kvx3xhbogJ6ipkvsa85dR1JTSOcdpjhSvInClLXDx4wcHaJp67BjNJUexHyx83hZCKLYgswMHmk5ALztHsY_nAmgp9UILVjLs6RtfyYhZ4VEal9mspX_vqHrvmpXbI5m_hVR5shQyRx7mswyeVGIQx6cUO3yxyQrjKQMuVHzvO2Lpki5QE19g0UtID3-jzi6OKCUpwp7-paS5659ToNJd_gfrq6R8exLS71rCGPKwncss2xRBwQfBqM5ith7QL4jRZ_eNGfdzwYGgI4QnPExru3swurmYER5gQ_GOOatnwXOMs1NbEj4e_Q0sDRKX8NHgtdBcL0mFfdU2gBqlxexpFk5M46kqupWPgubvXHs9utrcuv82cIOrB1ho3ddSwc1OhLT6VabtrR1k06Uax5w0U01j1vwIFJMajpXYGzejeI8JXK2rWMLzV-vWUAsMymnbcSbA9jUNMvobe1X4lCGRYSFVHTpQuqcGB5ydWukUiycV1SZXD0OPAtcYV9sKbV8eScimKEGsMqc3d1Izh_jkWqnf6_CHZaISVBSdLX4gQ7gc0bsPO9oeXTvz9spvp8RGYRmTMoxP1q4qIxs1q3SzFHJCxBDdYw303Tq5Ecv75I3eRqv62mF9s2Ae_4XSjfQqpvVSEAYyx22aELTiWLpnRCQKOXeKlF7CabvPmEsH51BXZN-6glQH9JhpbQMIGLjeG0Lt0nHZvj6vcKw6D1w7XH7UKucAyAkP9ZhUuG5K6NkCpDM_D78s0vST9afxk6lBwRAQCmsys7E1Cleyqg3BT1f8QOgn7vnKLe0NKUmZzgeoihgdbjxpM6fRut5vw69Ev1Cm8I4Gwz_JqOq2RqJFqQ9CP4ue2sfHueO0AOQIySsO8F5_cBiBycKziDy1kSg-XwItwyBJ2hprq0BAdYgCTQXbuD0Zz9if6qwac5ddoEs_TIX8WucXxiFRF_wlwJTixy7gEkWYM4Gg6w2s6FdYKJ8quxaaeLBExLwwgFXOqyhQH1Y4hECOF6hfcQSwNC27C_IJGlUcFACpiCUoFLFZPazieqD-0Utu3WEaHXCtgcs8TRoutBECSpLwnu6gIBQrkOGruPS1ZiPqKzE4oTjlyQ0v-PBw6oYUA9jIfvEr7VwmwWs7asjX_nz-9oydFZo2rhJLxy1w-1c27VPqstAje5UtHehhHe8ZXzeKoSGHW1fIfLZppaBXc6_Hrffkf2ikljM1RkxPeSqqtIbGFgN9esn90JdWbHdNz-ZTQutL1BGb2Kq3JShqOsmujUPsNkQg3Arny1hmx_LNDLTHw4ly7qsdDLDaex7cwvFiMw3nplQlqXtMeaaFjeV5Y1RuX54iO_btboqLY1Oh9L7_zygT8lPR7ZV4OVc9Txzlf4Cqc46AP8a0YjiIP78Fj9NGRICjZ_s7JAXExewGcsLF0GUXatkMivx3XABN8X4jzeN9QtB9jnszjIpiZaRPAI8Oe9GTqvq7HLP9G1ClE8L1fx9dZlSz2cJyybMq8vYJrL1b7IppqeXRlfak7HmaBoTJukAILFiG-fRs0L1wg6Z2c7AL3vyBn-ncRGxSvLZ0qAGIvyi1a-_LvO7BRgTKaS16Kyo2__8MSrXuXiP0tFQD2MyywNFbwqpF6umUaQZB0V-ovA6UrhM1fKKiDyx-vPHqX6jNzaZgKMwCt3AsBLODlQX7eqXwhC2r7KgVmWXSRtLE2AW5BiGxwquDytZhLSt_GC2MU5q1B3Z3BNHUyF-Bo0NaTe1Vevb-cxzogiOLqmz0rdOV3XldztwbQeqG31l6uuI3b-TrID5twQcRvTCjLT9zEyua8eCCi3p-T7I-rtpsskU-nCheizxt2SjI_PQna69CAEWqAGfPVFiDdee-hoLr8GU85c2WzwWB25WIlTLI26x38tlwSww8UU31_j993_XRoFApjmwGXXOoRl5g8Hzojb2W71NqLLYAOSZeyJvJeaJ62mHepa6S4kPO-yKmR_ixv_H3TKaQ0TFwMvrBIE3lnovMHrSNVoUD0LCfU_h4u44J5N7g-B2j8D4BGX-R5I0mHB20LfDg879VyAW9n1iYHLbVbxS_1KiHxl4x7zSdbRTq2nKjPktDFwHKR5jxr5LhqQmnTk0dFKmEVflzZEzkVZPL-r2rDde-bo--mXeKcRb6k4-bSrOPOmA9PX6qO6t8oi4RDeSsIG5DswlDTuG-g0bexBWlM3S0PShFg4CtdCUFLhHgb-9ap9RqQx1i5nLNgkiKnVm0yh-1LMFv-sY1hqEP6wU9wxahFaX4kUZzlSIppn304JKML-V2foRdpGYYcvvos0t03CfdgQ4CppcGbbBxeKiqYEdzJcJXl3t7LLLJ_bNssJcrXbnaRJqnHldJF9p8DUed_gC4HPTSOLUZqiLO0mBld2Aytt3vozTHuVIY5OFq_rwxmTCrrB-NuSctBYJ5usJB6BH_DtqhlyUpwuzizObTzREqRyk_vSEiF-wexv2RrTSPavek64LP_6xn-M4EUndqURFHggbx366kTMpuGhH9XKRBs_QakuEhqdz4OoYKt-HxA6BcgkZGkxgtvaYYL3E9UA6Utp6lK74CRwPHofqyUrLhfN6dLCh40jWf0aBZsx1hsUfwPyw1_5nmhW5SIwJ7H2w0iLVizBs7Ysl7szgqbIHi3ef5iJzPSlid59njaaUbUPCT_pA2r6Z4QorUItby3eH3OK67XHLoGUJ_ybaMGz3bUU0o-b9bpmje7wimpReocub2mZzlDqsnVffpDC1ty9GLhS0EanWAmJzlxKKkRtSFujEeDssyVlrmqoaWMdxIV3qAoS4cnZBMSlpbtV3oYUPMOJvqCSEvCJnIF6GxixatXOpCn23L7p-f_Ibn-OnVYtp70RUgczWhWp33nmiersTqfEhfbsTZVJzej19-WmOLb-38zhLbO4Gv4CYc4dvowFuqTHz3T8K2azkwcssQJTZn9NmvVLe8-zNitrgbrodqSEEssY3ttHyfmpq-DxDolZynJiOay_2VEyisITUGuzd5vern2lMAX3JP0Je81KLp4xljvg6eal-VZTKV3twZChJhrIk-iL2RHr496s9Jc_q6Vn3W7q2HGLmcjqq0zbcl-OmGnA-XbXAf4ieYQoS-kMqXFmnjfCDoYfApJIoz--G7t0Hm3XSZI6_JwzS8pllQf4gdkXfTQOuurOh5jj0jPximP-fJujXt8FBYgnnMpSgtzH5haMuCUGS5hc5T9SZm-3K91YWQLtpfNrpk07is1BN9mi1QTzaud4M9KUZyB2ktW0PcFzlWPZvvJPVq9DcSHUV9vCXFwJ2G_MP-GquZu04BCDDWZ0x-0qiZB2tp4AYgGopWiGxJmQQDt2YeVaGcU8TPZO9SZBG7LB19aHJeDMhSqdazkACsD_yJr_F1CjkcXPMEZ1FT_ksen3ZEVagz8fL9aGrfuTnBAeFEGmc1xw-RfmLZxR_NcEFWCXhhk-m2hJLFEkQhFlyYrgnU0BY1r70KafVKLSKcG8hrVHcVyJXkwAhX0PG_6oO96iflnYeEsfUAM_-srECB95z6dEAdKhUyWr1zAJfXzarhdj_CiCkYybCD32vQvz0h0StopEw_0wL7gspAWUauUyyZdvOHLIFZ1og8A9jZpNiNeXK7u4PYEFtzmYm_23TN4GuaLuW0eMSe7E3Zl22bsAMd3kLK-vLCvffP2SFsgiw4XNvO4TGqDtQjADeBVPAvf-OugkaTGxUHV7UuZbq3gJhKDoi10rQ5n1EV33WZTaFKSuBrCJlMOVCY65dwTOhfgQvJBYmm4QAEZrcOfPGwGxnrERuXryGZvy6a0_UYad3chjqcR1MygTnYev-rwcaVkWwDYwqwTiEHKDWspkec9OnptTLJvkEBGl8jCWbR5lfhu7U9UNGtypqzRuh_4T_zETr643NacxpFU_AUbDs3qfpqTFwgkFqdvi3dZ4ZQYJPv5w5B0984q05hM87oSpdvdHmljL-wyuHAzSKU5Bza9A_MhuJ2lYJGZXMwCNNmN-DQ5clzLqrKffXFxzpOCYyPUl3PfH_iZmxusFPnUqltg5cLuzF4Bp0PPzBaYWNCgw0cCjiVVeS49_YM2M5fur6m9L_OCVsjTKx1QVGLI85lhgIg5CylcfHIA1MiLr61DYvbNLkSnyQ6bSnV_VvbgulAG0GzPkaeUdumsu6hjgOvzWrVTnJ5M3qlanIlqGYaMyYMEo8sbF2MinCHAUaUsYWThOHpcgG7D2alDBSod4Uw-WYW3vsm5e38nMf6riYmJLrgGwgEYZioQIMVKcq7icJNBcql6LogVRhorMO9lcpPc8u3Y9v1JCGqcepU_ZUuSrVOjclsWr7yIEPMdsyAxVjAPl9d9EIhl8sC83QJHjRYlsAqY5zSh_q4sZzfUFXcTP2wsZcvRliRxt0EnCwPB2iB99jgrC293FTm2ct-CjOoBZRg0qyyNQ4S4qwIm79SmsxnVIJ1qUG7coy8n2KT2Gqt6VTFzZUHiAxi2VywU41ku4VB0Vjn1UC1L2u1cJOdg060ULQakmO-aQ-MMG3e39SPHTiEvAXyQe2IlIXmsktz9gmex6Pl6KklTDsoWrRU_wiMyt3UluVmlUjDfherAXZVgCl7PN2lLs6k6Owvj_Deo5qbTTpI7LgS7_ojAVJsFyQU8Gtu3CGdWiPekvaLPh-33CPnDxRc64ubPSgfuaAz8V3PsJ0S9NwL_F7d0URLYbudEC5XuJHvN6bO0NsfoaeKw_A64kgCDhacosbLQzyM7uAi2QW5IOhMhrV1OjSavzXwTEGZYi30wwAV5tS5ngdi6ZWzTqunG_JPx7mUz33JCDhWA-HSbEHAeyWdsdMoEntXU4B5vrxLVnP1eP3pSUjsecWZBgFp6WhDA4u-_v7HhK2Ha8j75p0gm2c-lDEVN5W2MunT8IuZWYp6Y61eFzAoFQrdwSKuYiJEVbOjWIG8_HDoKaBOtzCs5jIN6DuFMYtDmkTraw9AK0a5IDZ7mEcFpX1q6ZXIjaoziEVW9e_h42jDmRPmg6EURdLLT0w-fPmBefCCLHyosb9A6-eY4nf46JjjFnUw6JN1xWN0j7nAAJtQWKvws0rceh0jVhTS-sLsTfqj1GbpgNXzh4KWWQLwVx-BB7yzV2UOx6o0HRkMcHUVX1xK58cQwlzVNfYQ-VaS2SY1Z6qPtTxHUqy_Lf5ggO8VVWN-4LQo_d-XParEy7rxNuuogGIUxNRN54KEpiVd9k686X4docQI6xnQYQImldxFdPfE6B1RVsIZIB2uyFkcg2y7SNOHgTQ0xC_JdAoxJE46aUqAVJ9DcF5q8l10GGUAWL69d_bqsSA_7gGuB8diWo8C7fAF1etbd4L6vkI8Jf1DwZO17J9ubIvuUZ_XPEpihLBf_ob-s-VVL2df154pWzOVmMo3CFlv_ZFlSUKGBKfnVg2trkpf9Bh_mTrXBTQpjEUdDGrRTERb8efxPqoBx16tO7SlnAYAHIM1CEniCdI04iiStGfoukhmiRpt7yeJG1Yf1F26iArnU9cBJNy1yz02lNIrc-QnWBOw_vvQB5zUl6SoDNnc55uwE4lh_eKAthlJGog8FtwA7UfCAMYwjQ3O0sJHl66taqGbPpz51Mv7vuTF3zV33kwyeiTT_9VXsq2IYf8Y88O9r42F3uoZApUQz0dgVW5ZOPWMAUUyBW9A6si6-meuWyiixbEa4gGE1DLXB1ByBviYmojEPuDwIyRB_oLWY2IAsAksT8CDXU-zA-t8oFPIXbllkmqSW9ZDhPhwT9JYHw-NZ__sn1ykNBa_rXRK_t9LdKsPfd99RpuBOOCgdt3ua8nyTVQfdiuUk2F462GrxFU3lgXxAN2FrstgeLNC98AERuvElI99c8FOpz5JmuIpt9fXWEFwoxd5XWoxQzGhLMxeaHgMCAC1NZkSj6-ZMktcnOU0se2cW6AynMrpd40PrI-6bzIzbDxXkPMNs4y3bmGk3tMVX0DJ1lKhd7Qgz7oU1gOVBVvIeyCunZu5ZS8qJFYnLzZWjyE2CtYEkKfFGhhRrzjIE4BydQhtcIbQfU1e4RwyMclVfoTj814VumoYLOaRItmawGPGJzw2niq0pkdC8jOtKbdzo1mIOBxAf8LG6vVeojMJUEsFTYg4_w5jNPVVYLsBamIG0Swr2SBAdF8dHoWLSaGrTnZaQO-_Gb0YR-mDwXWKki8WLDnLA2IGh44LiVURILf90oFM213X7b2vYkMklOqFOkQQmf0zOxEBTti97elHTC9zV9W5mjNgUAzrxCnBhTrJqtP833aUYa32Il7bNEZ9nNnalX1dSIUfLjk9YDZBshYO2cBzLScz0pOwoVQjjrUCATTQmv7W9ODR0dEs8r8MbO6s_qFts4_A7EEwAyYRXTLffvCnh0EngKwIK_jy1mNVAYtFairYF07BwPw1Uity5hF17yJXKeZn2j_2QPtZ6SjsStntogW05Wj4E5obKybl6TNzi_7ILDYg1FB4ok8uyOStZvQD-rtrp1WpS7q-hw7dKJoZBOZG6LKY4wrE1al0lVzSXwLTMWJdUa7nonplqK53r6pXkjoPg3l0yyGWJqqpzIhMSvWrJmzEi28k0cz-WiAX5Hn9PUJkJoXNi8xEz19Vm_rCOJeN1esQo8ODxUxZcoltgo9uqf9JBgPQzpV8NS8IKNdTCcRcrTqyQUayxWE7ABI2eVuny79WNXlR_tVLRtgDOV-wurXEDo60N43PLm8VUZFtd20s5MNl7ZBVfT6jJuwiKijhMwevJ6OFgxHyFvIFB6D1a3WOcVZ3j_QcMSu8CoSq_Nv8inGyEHNWAM8YC3Rx2FcjH5RzudAZ9njDYiH07UI3j2l2WcVMvRILVtYnIvVFFZ69BhJp3_RF07i2RW5AgojD--2oZVuWssiKUnRTUvqLG7WErt3Kfjt20ow3UhIu6uUkvQiQiGVi_dGGBB60hukFRFn4SOdbeUsZzCD2ypq1Iz3gXWtcHiwvzOmUMse3dMFsEaLjZhsgMVxOKdkGwBOC8bBCibfK_KbNhDkK_LkYpMhqgjxGPgcBJ2fsOFzcuuoYXnd_f91hq9L9n5qXxF6fTS90QfWYBvKHQABMyGTnjZ7B0EMQThuYVIhTFdhkWo4JXKH4FYcNb6CpueyZimOXR2Lpjkfk0GGIk9XoLdg9Xp1UFgmpJj4b57-8qZh-0x3J27FiDoghaR5w3pCGsY6SaQ3re_OrLtnfq04JwMijh7n3dPJYwc93kE9-r8Tnv8QSCnwR7hoN2oc2ujCqgB91Q1EHELmEOswYguol9DCTPgtM3oCncd61Nn8dV7KSGLjTbh0YyU6ZE94j1aWHqXeChMTzekc4H3NEoN6xyuCo63CS8YsfPwoR23laZFJ8iNkW5N5MhR7iTuJpwmIspedHi5pFhcBg3MD25Rk8hM-ySGLai-SJCcWbdCQBOres6_2hjuII3LHZXwkVnr1NpFjGo5bLfx9f2nYrX1KpOOMa_l725al0khj9dbOX0CtSrwkYWMvotUEv8qx1sfhqCTHdc1l174fuR_i74Ofap-xBAyzGLvgywJN1IdRpEhDv-p2045UQfN0Pn-pyUP444qsfFZd5SVt6uPp_UkF2ztF8AfddaEx7hDIbl941NaIutMhZlWy5EuEvcKEq1h6yUWd8C4_e21Mj5TIYHlMJmhLG-I9Ei6ToWzTSM6lFlrG3GLzZKh53-Q9ihZYtHFXf0Feaqlbqto0x6mq7ysgV0hHV1np4TOPh5nbY7n-cw2aLFv4OHwFUbwE9x5lvRGhHnWi1aotzdQ2hVrjbhkQIse4Wz4hnZgPe2bpR6mJgoXp3izYyboXQX1PpBIqT9dM1WsF2uJ8dieMcD9dFZTHklTndj7oI0JZLrUtb9_wqUmAKrD0bVwVwy-4vk_OHj08GEF9xpdEf16L3OPrihkeRMDWbuPzzCf6npnIPxJeF_8uw2urYTTQf-q3LBdb0iSIEdWNU9N4Lfj5osmEgB7jOJyLLMWJbMkCrR6LbmLKyac_RDIldhw9CydoSxR0CqkRKx226IVs-e5r582jbSxavnTJCfeXaCr0f1jSsi-Un1acuC8K3g2rfEvzwPoY1F3EKVL2EdzcOLVAiI_tKebk2i2Vgpx_PnNybcUXJgE_GmZ7NUv4p3jOT3pOCbC7MI4NZ5_p6xTT4hDJaUo92zxzY0SSoW5nwVei6qkaDpJs4fKhpMaxVCZe4uGDhcq_NsabTXNTFnwV-HDYrZt0wzfRh4oVEwrrVMvfV3hqJs1lA2uJFSLjDextel4NCZ1E_SEJ_ePc5ahN39RiHXsnnXdUt7qxhNj0wVyQ6ycMa0ZWmpy96CIACv3-BYHQxBtOhAIINMBz8IkNUJR_QPBQZphWkHQ9htxhp5iPUaKvtfVPykpwBu2b4OQ8jE3DY7aZ8s4nbblGT370zzjWO9wiNIPhpZVzLpnNEfg22dJOwSCp9_LffXsSzu1QCwALKVJLq_dxf_fs4SAC37OY2FIxY-p-WkoFrGzUkqKhbFqdJyMkDDTLUerJksOL_jrGIPWS0Xc9sovHDCYQ3moAz8W0BEw-dEHJSHl88oR_-ROeKZN-R5TDrTeSxodZK_xuibB6p-hJ9tL6zHIdCydJXL9bIOT5Y3VN_KnoANJ_w5Jxbf43n1M-r9Vpu0mCp7UrDlFP9gro_K-TVOM0EyL1KnCfEQf0KaNzbsFZO6qWaP8b6So9pGHMhyFBR5Ri66ciKWYbrqRMWiRLolT4VUgj1AorG5zxGGrCi9hI4qdR5nwju2cXB9FOq385vZxpjWzyCrDEZVQjmXXIj_jIcdmk5ItfaKARZ39O26P8SSq_HbsSDmAugygH2CDKp-hgxfdU5O_jqeUkNOWn7AiokTLXbeXG-sxSHGUJOxYGtYDUVbwWhqocpzT00-uQHppWQZxj8QTLMRUDnMN266HurMOGzMvFjJAziZj2FJb1rVj2SKNrX5aljf_vYWDzms3USlmMYhIoBviUcuCG--XZp_eWR_EL1W1W5wjqqwdiwsSP3LPnuOLWQeN72ZBkOxYW9ee7Lg08-6f9U9uxFa709x4L_pa0jRGY3SBL78ANMb2Clq1khHBOzDVAMk8aQIMLTxhIuJWzgPUIwOyEO6Mtd3STjPNfgsOZZPtOMaDJUq_yhJxfjXsKOXQullzNHD0KXU4WSyvV95ha44GNk4NPVkEZvj4mMjWWGVVeuowu23y4xoxdqIW2KATtSl-WCg0OPXxbPuON94Rr1-Unojzyc3I8tCtY1PRboNnHbBpGyAt-aWGPK5gTx3LJEXTyW9ykqdQ0v7QPik6MCOxsMSDFiE-_TlaYgHD7ffTUg4OmhrYff9UevO1svFleMPz2CUX2X-m-sKAbFmNQ5a9KHVcTji-cqX1HbXG6vhENcxX2CNDts2rXuUcDLGQlAbd9BcO1tzErb67iEjxXIBquusICXH7OOHEpunKbyEJ4Lpx2SMyGKQX-Up8vVByTMC-BM48ocMwsgdl2oVzc001KaJ4KH-mpWQ5hYrOKYZwhnImGCIs0x7-WKYOlpJCSJJj_InryfL1IfTGE-dHJ3N_2DrQTg-29jO1hVBCRJaJYPMxcdMepz-Q8eYp5BOGrHyLmPqa09i9vgF7n1JZstnwpboib017Qe6naOj-V_XJXLFhZB71Y-E6NRX_LhZ_rgSsO0yuy9r18YVgKDdDiOrxgIwvgKu2v9z6obhwVwmQN7CNpCN5KbQDa3ncG9k17bK3zTUNK_BuOH2YLxVh18bHQ61QdfmvkLySyFG2nMli9_GVgDvuF_-xmC-0dOPyCXJSSea7OlB3gSkt8cTpu6mzQ1Kr8qr3kGb2KAz9PPZc8oNCjgjhofuzQEdXY9WkjPyIsnGS0UNuaRUSnKWmAyk3-OqfNPH6qa-Q6L-K10rS5t-qwjyzeB2HlaEbzl8gDpD7m3HFFh5GGfl_z46U4ern26EvAO1CRiRDqKwtIxhqZc2Uv5gzZXTED53b8Bj3m_iZzHFj8XleMvh2wlAbttKP5tgKTt_Sg5BcvdORWJLBBzRg0KFiiC0rd0Ry92vzAdPejy9WKz_Njxr9xgpt69tnfJMnp1Mvy-LwxBh-K1yICnaoc9upsqabyZlW5LJA0aqpNXQNP9_LvjcuXDIo3ZNOP10uqF77Vvwvix0v4HdowSuKG2BxN6ZVUNfzMe3j8wSyLexDfPK8y2mOA0jJIWTpx_1eNQT5VJgyhp60cn-RA6u7_CTT8IHi8fK0Ma0fxFloL9GhYfYguD6E3UAStn1yjqj0eQRSDkIaEphsDg9dGi_phciFiG5ELKhg-QmMD68PmBXVRH5XHYa39Q47sbmCwRnNMSMxGAm9NjX_x1-5Ei9BVaUGASWDkNBJLcxc8zFEhj5eVUwAjh8uLitgJpyqx9aS2SkaWpzfZAZFATAtLH95ELpBflZp2idPfpAqm2DAU4RdnFPynOxCR5Rq40obgRL_uhb9of2qvlIFl6kwV5EC2lf-qcvPCxdEypQMc2xGB29rh_CyJYCjNjc9fTqxx5qb_GRZNmNsc8DE2PPWH_MdQaW-iSVfhWdIO738WKzLfLol5s1sP4rqMsm4UrYiLbFF_rknrAEmjjXweCgmwUCfiLEu7bVIFsecnTG_JTHipUvtiHfdw_RCYn9z1FNAdEeWym3S9MWDaq28BwQApEN0-a7K5Bz7S2HtA-4kade4ZNT5MKit3uQoSB6REjSPyDOKxN97bSsEOSISBeAYtsyToag_oqA_WIg-2H_LpasBHsHQ0RkuPwHwVsP1qC-W9V2YnKlBEGIBWwlttzpeS9V3BFao2qyKj8JKiFsr5WzTIyIwXTX6j4tDHyh5WkoBLakxewXzTM9Uk2oatzT1GfqMCnSB1jz29Ya6qEhuRTvGGZNFMUaKxcoQzob1YCRvVaxLZN9OjyezKppWzt3i8EK60ljpDybuH67QQgprLv1rWfk47ghTgEJMxYMobfatKgnCFJHkjh60LX3ZS4dl1v6HqlEMvCt1F7VQ68x1dGSQwLQNterskKr_3F9At3ocFDb8pxyqNqRg8UA0qH5BR1_wySkKdMyIUczhI4BuYzHb2rI00Hc5dJQT6QxgAh7yafZYcaBKMDTlShvOsaiRh6UK020WsFWee4M7wIVzCaeco_Qu2Jlhkm89LAg6VE2ffxfOyhYuDISzww_12Mc7akwiHmBq7WUEAJD0BY2SP9T7YtO-nJ6mFUNJpIsAyWb0FHXJ-oki58GbuKiY39GFWW8-IZSqtN3zeyRakfgOPaKyOO39I6nLRdd81wUu6A2hjpnfiouuVQE1DChtZMi8LacU_wIS-YmtPUUnioQq8G9756WCQDx3jivb2hcqDdf_JJyjDUsZPwO_KgC9bpH2htL24DkWSBySnRvj9S2A3_X4P3Don5Q12O6JogTHvLexP_0OAIrIUbaao97Y6UcdjEr6cx6H62IQAfLV0ZSmeM0k4E6SjwwTyDm8h7FkhOYInXwwAOjh4HZngoN7RrCJ_a5lZLbB0k7r0eU84N9OpHKGka1fwDgCDzp5kcpL6UdWWX69WwsUjqYhap7tUIShOc-hmuYg2h3QswTth3f9VwoRpChIqBubfoPDR3Y5d3ml2I-Eu9kTOflH5absM3IAfzO3acUC-H1Rakvy_sL9XrE3do1I9paYtYi5bgs4_Oty19k-4vIC25G20nkcchpsILFUUhB-pgq2_3ZNecFXa6gzd1KVzWYg4fe5M1ZxDkH3gLfCBX5wmUmmI7h2tPiii3juZ6lsuydnCfvAj2AeMpT5dkMhJFGoX0OiIjbevR357nFLpI1tsY03PWV-ziMf8QZ9V_Cfs03JnFVaNiMoFLs60eXJyzpA6IDjcA9GN_rtJPRg71_XX7Zo7V8FdiJ-JaI8hxkclA7bI_HOKdyulPmXHhE6NRaLyIrOQPOrFZf_DhKa1Nmv__3rY-Yk2L149LFeqgaMTBoeuT9WSv3NARLI_hvFHjE9x7Tvj6SX7uqN5NbD6SkHrDYMekiTZtzhxyGsm8NMLdIaVOuRd8J4F_U95W4f6QWtcGIJHmmMDY5dw0spMdwy8gxVq6ZjXQfRN5E-bywLh2L7j9zXz3IggcJwWciGIUfUTwqdQqhFewpSuYrWxcr2DmCEZhg7LjaaXXvkD13Tr3stY-UfykjQ6uf3F9rb_5_MUB59FiRVkV9KMQu92nx64Yczd4tgXvRk2SaG7Y98CLHNPWN2ADXWvluqGBtekFxXHja1sqnKfbir6f3ocCFNBiIwuPNL50_vGScPvuDZgoSJeD8bBD5cUEWvsBEyvTaqk5Mr0VGzLkxWbQiRS9fM0uM7Dxj9pnWSwlFRB5T0arUVEtvhzR2MucU4AbMkczSnTcXKJLSTY5eUNNv_g_sZsit6BKLpx7qiZoVRRwcuHjSwWM6ZmiuH0F0ixUxsECRM4GfaGgy6VzHAJicvLl8VkXtvpnWXoEPrE4bwWg9NIuuw4125bKwCpaou6VeNK3n3bWScMvJXPXwuRAnNCodsvE8wYyFObsCryd4MkmY62swXInEEWe0DUx5jq4riZfF0jlsw6o2WCbiCTsicrSXlsvxjEeWbp8RDPqg6S5F4O68EPM3FCvL81Sa00oZrANPqBpSgEP5UOv0M5iM3rtmr7OcS_Y4wFMPRBQNf38U_yDmejE4m-I4RAWZIkPaUCx9MmZlrFYA81zEzOHWPDs3xqA3xpFjBVC23yr6V_-wBixi_ubqd3MWUnn7rxSJV5tI_U9QNnzkdsQoFfnmR-dMQi8HlBwLW1FM6ElxNim903tDuUya8th6YpCVuCbDoJBiyrrw0-tVxmVd9xHG81eerF-hd9-nKy7EHcGVClizAC9LyEODyNHgn6Un6_3iJ2OUe8p7fByx7Z4Z9rCCXBw7oIeGfQMqR8sLHNONlhIdLnfTnHrM0uuMgEel3gJUHQhMF3U1Ip56Cxe1TJHR8KJVfjTdhYu-q-9enCBvByCk-HEAIlbpTqUzoWnBAmy5_JiPguPNQfbu9DWrOJpd4EKYrlaIlDlyBScD0IfZdZIpSrY-14SlvX-Y3k8MhmSp1_Uhtf6dVPW6YiwuBt6f-ldEgOyKF_WiJoQrVbrrr17orrvFTwgNhuc6Q0NmXwWhG8XcqrTMmyQ130t6oLs4Kkv_9BBSBM6fHXZ0zamfXXfC4cF3katA6RrL50hcIqxz3rRdW0eiOV2baIm2Qp0XA7kYDI4LK3A3g_pDadj-MYZLRY5awI7rLHEcdqf0BZoERYm0XF5GAEKV1_X49s_F0GuQJV8F5-9Wh0Sca_Gyfd1wTTq95B30f4NbsS07kZ-rZVxA7N8-gkDjCrtlEy_vndrmTZg35x8IToBvxMEr3AaMH-Qv15_mECCAhfOZ3ttt3PYjSpt4sTyKw-6EdNEOEXuzTpAMJi_Fi0l78KK1m6Ndhw0xRHsMQ1h5WfV5KAvyuyoJ9T4Wwjpq5PdNL97quM2Df7qtKMMqfrCxEYhdthOSMBLXZxBWnlW4R4xdWhHzWfYe_1ISzgw_ebO6WBRGOiz4qHKtYkhb5spIzLwTkvDPQinm_DXZm88hSCiCSzLPNcudQTaGaDcIxEL_Ow5TxCeiXgMWyuh8lf2_eWQFZxrYwT2hENAXC-pnX5tEwWZTAuqHdDLwxYRufX8Zc-EDjl9kYEBjSeNlJFLFSCleYrsMTTLNyX7N9UI8kNb4pQuYbL7vv57xOwYb2Zdbq_CN0_L3sIeKPARx8dmjRKyiiBcrewuxmn1bwKtjDcqf8_EekXqTRwdC4es8-z5n92zsjZkVIHRdt6-zKKUWzmnZhWSaiRrmgRxTZEWt8RUxobklQeSE8CbCNA3dg5apJRtW4ej2RyvQhm4bPIC7VhdSM9Z-P3KWctQvqZ3HtwV5ZLbUAepeAXp4A8RCYioPNE0AS968qb1hJ8EIFma7-6A6qDMwF495izC05_R9k1SKH-u_1XemDzljKHTgezNbKZ5qZWaiLko3qwJUdUcqwQ4z7PprLDy1hEnmvPHV9rJwSKBHLLt8Fg6dGWvbPJfes4q4bdlQFQcyhDqbkza8QmjfSOBqcSF5JXpp6IE2dtmU-G-r-y6Zht-PXfBRZyXC3yEoY1kcFXCAixL0Pi5ysI8tpcS27WiP6yfFhjrwfg51EEsbx61dAVQcxICFWxuFmzquvVZSF8VD9TcuqcT3CtJbHre1q-2ggVMwjxrGDrHRlZvtKsQI34Jc9lRVJytGaymlBLj3EbVKTFMX70t-AmvhVaVfHjjcXjsLEHiac922HMXSLhsqdKLf4vQO4b8UmzcJmMERop94FBpdMMwe7gfHpoo7gyXUzx9Vio3l_I3O6vqv_Hs3ZaJulkymLO0WPdl8-GUFrCbeFT-KZTZeAkirQjwxE5AX80iYUn_4uzF4iojSygccDCodHPSS-UfPC2nRjqSrjgfOO7lKhZIcsMX5QjQj3xlpXsMqK7iFT8iAgnJtOiFlWMTa4QrUNG4MYavFpprReVeYsCwDLydT1MOeBkTbvO0rbvPA734qON9E6sBrQNDE8Ic8_tgoBaA9vYqQLv7mwi16a5TzUT9tKnkD_CCrC6Np-fqBPLjK2slIn_WdjNFx5OcKgqh-A072Q2WG5unECVHWIf01ZapIoKibeEBBbrTrV2oM4-hCowqOQmJ4px8fQn6-_eJgv3N0Vanh-wcndfuGfoMymz_8YSkj0SypbKbCiE-tgzGVYEse29jkD1Ki6MEbS1yN3hD5dmuUJYgFpeSIBZ7WA-wNnadmXCKgOqm2P4XD_pdzA6EE_z55Ny2gisYG9OE5LQmAYcOBn8m6jkEzIEV9B042YCpjPHfDpMbt9pQJr-wohxs__GVL_PaQAD0T7EFirAG03oxvrarwDd3B4SzwvaQpfSMtlXmsCpTpu7iGKwmbKE3IfDyQWFVSLmRnguyPyYiX6NDjg-qxJhXbofmzcTCS-auBxZ0gxuWPPc96YM-wYtg_AFUwsCsHfGOXSZuXc2WICQ2TsAKO3h3Rh_LRvT_inQkZjRA3giff0lQ-3LbieUOqkvsl_vVdlhUQNkY4Rpt-GQybgrosCgNR4er-xvX3wtOs66x6ypxDrc5jmx0eBspd6rSLUp_WdWWEwpnFqeVQ5qEMVgSASu1bSfQalRAj8l80XB3GXOoI9NBXUybexnzQ8V2Tispt_fYcn-lM7kkl_tq5PsrccPASB7oJui_p6HXoZ00KB-wtdlPfoNbOukZYoUCb18mR4nDp8aHYW3Jin989ZD9scpogMkWWsfCecZBeKEkt5CEshGmYzgflycbOC6g992nCEjlz-HRrC_XK1gbQ3MU_XickPdtmI6eaXqcJc6X8jWoJRboiMxExdwDuDlcjTF5cQy8TZ3-3HxqgGpSCd3elasnFYymvq57J_hF351AKrayflMEzoWntRRyQ5kTl6Mk4mUwlJM_peFisFb1q5SFYFd5Nm7EipVObkSfEHZJVdqZ5wSfherbm8lFTjVW_mPaexNHIyb9jUolk7BdimrPCmXzTzWc4GVX2VNSAaGks9SKi2DTPAIBGcuqs1i5uvzROrlWi6pSxxk_HBlAbKOz17cX4y2w3puLfTFV0B9NkOiC165sia4Mf0sdAo71lzgJhIpt5VgdwF6mHDFC-ex1IelcxV_agQoqxQ0iNgi_51QDBUsNNjyYB7VIX_WEwoNFfrdM6ImuGMimIMtWiL63glDbtOiAxZZ36QZltjp4bguzaXSbEX9crxsqE2PbY-YekI3_6aqbp0bqjh3hYVXW5gc1B7gtQqU_y96IBhDCYc-KfuXN-A8ovzIWHRWQXdENZ8QSJX4vWGFSG3ywIu9q4I4JPgMnVrdnQSgjooc7T0bdZ2_AXHlKX1RnY-FR-3Jtv5OtHQvnxJupIiBkBeq0vsyVyV6U2orczf6-zuy68ySbl1V9t8qi5fYkYhdAI09vsGegivSRSl6fjd6usG3hEdmw7faISkR_GL9TP9yY2tASjerLtnuERIOc4hJJP9M3KXn-H2U4lUtWseXeMuxWwZOOqopjA9QH_CBoLEqY_AjqC3gzskESbTwobOtephYwSSCkfraUc501B9dlCqO2QecWDtI4OlhqH-ZIVmvq5X8nmWh3gZhpbfSJkUDK3GJED1B0XRK_3afL2VEfWXHrgceqNwMq0fELR7YyM98G0M6V36J_KHkh8eRQei2qD2uet4IBz4TVhSxGTllPMm0SlOu2Yd61To507mgEwWyT87FQFUj3-fPrwSD_AqUrd-4qGUGaIaj2DfsC5Jw3dwBxEv0SyaFeRTTIGM5PkBb0PyrxOUijkzobMMXOyXQVmu1gYY6ymwsRGYewBMpqI_a0YlQnh9XD8eMexpQMk8OaCFY995fOykKl1WyIWKWbLQz9qXoktTjGL6a4_NfgXSe4HgQJxfEvRtBJHdjVieuKkN6cXRXvalqUvwu2ExEurEFA1c51VYfKK47eJR3XmeGrunKP0nf8xFmMOhH3fEuNawztNzkz3belG8e77f95vuykQomyk94t5zWfjVF4HCsRO9J3H54fysNlqJ9qPzqOZpB8wlGu218KcjusnbQ89wBR9Y1G_sh_6IoInSFh363XeXIknX2sF_pGifn_Gzhs4V-8JjKiwRUxVPhPkDhgBZxRUDp8rzB7drwhvjpdBWUtqM5S7-XfQ9cG2DQndjjS42CndTeTlyX82vjDsvlpZuQGIe5tcg2zAgXfQKV71tjuAfaQXdQXHbMbZ7l4DdJ9iA5V-UITJKLTLYifHi61GH7yhtieuHO9OQMeyBrCqbMdLZsEZH-riwRYIuMQEEsSiLjCXOXpwrWkReC-HCE5IaxwOyjnRJ5q2FU-1HBtIKxfPHqDmNkGUC6W6SJR44_KJLmRFR3pwBtNhTrLwTgN5yFIulcjFb8VV9zGKS5YDjUWW43zkgzc8_TUr4tCKpoWfCd1JUgwFTfFl9AqOe1EGxuSCx6_TYEy2SiKcrU02mrVHh-VBWIOFhR3bdLIP8dRQX52-_C6TuwKDmD_gbn2BKtL7bVA2Eb_NTw9RoxeeJsKj4hTVIQP1IKDPRZiqD60rp9o3Lg3UTZXQnyAGDjK7SgdDqX66N1GqOfY9xgOZLYFQSDHi9cGke7Y2knA57lMz__UZXDAdHkHm_IQJnzVBOac9UqpN5foH87YmeU-UDrX90Yr9p0fRKG4khnfqpx7XtBHnSuO-P0dz1TIkDRyonL8uChU25LOxNx8FCL1BatExRMNvwtTlXNMwl-OY0PLbOcLhVVKSMmmGjTAjrC_addhpKo9_zNo247zeJ6vwFZbJseQiBHYKsJDl0l2ziM5XK2asB8UNQaFxuZ79bal-rjNq32hh1zrgbHReYTyzYiwuKQYE8Qw0_Tg261lA7m9J8trkd1ly7bIZ8PnFmtMqCnR_k0eT0PjEjrl2aFTitXf-sQE-KpvFAYqGgwpEkIA4SL5NY2h0ELBA5lP9U2Q95nr3hfiIohh93rKyXm00zcdD8k2i-_2bJ7GSHpNBU2UPlAZ6IgfcoBMHzYjlXtEBSYxp9F2H8tmbWM-B-OVn-EU1QZ3B3mguEPOdcVbHgJusrpML9YxEG-r3DuQwsxSjBSlWkcq__iRoL6NI_TN6zkwxZ6qcsI4WdRrlyhy2ItGfsoz9l7voFwNfGPIzAslzDvvY3KwUwickEFlEAZsZHqEJ7HYtIdZReXukytZL5r2aqFzlzNhzQNF4sbdfe6YFt0esh4a7tGvfYz3-YnmibwiaA_SDNMDDh1jybCcYdn5ekUvJX_QTebasFRCVQsFMLJTZ_Oi6iglCr3-bayBv_zlqF-k9oS-NO4op3HyM2XrtnMedwfD3p3wxlGUavnx_Mf_WUGfuz4zTmDJWFBVWgd92t7eQSHo8bqcUOlTcItkGruN9M1XqY93v8XtkWJy6bXjtK-wlsP_WJPg-15hJRh1cdVTJxbcKre0k7qvj9L-i1lbpRNVp5YdXSCHz-9-kVIEugxGyi1Makc8oh6mV3AAwwWNAJACKX0kkLXVRvsxDZdcXuTpZ9Jg4hj5ADzXSpIIMtqgNokZXX4DYcWSkqqt7N0UpnLq2qfN0LzZS_UeTWyuTjHgtcCfZiP_ss5zBkprDpKBy-CJXDXk5THdrHKncIwLxkBZr4liWwwTVhq5B30Yw3WV62c6IDek7dJ9cgLSn4YNBEcLUiVPM5NbuLC62v8-090A5Bzyt1nWLTOUAaTow9upHdDOI0MFmuTqnCZ0lJ1LD47hiIz3o8OT7L8W1gF_DSj6vwh8Sj_IEq1pcRdwcML7OqsA1FpgMFvNSwARvPkdkqBra53PkIheHoiXO4EX8lvD56VvfYF_uAllbbq8HOrqYXrm53F9lWSQG7jDTipCaGNpKbXSPs2Z7ZSf2PlaqhAP91uvyfIxSOSn4aFadXhyMvJoHIVdKbQ6s7Mm-lqbI3ah_-7nNcWZy1S2T333yeyG2gcoueQn-J80CHc8546LmImvFX7HLEwr9DP-3MOC0s7UVrWr3-EOdJfu3gkzd_DgeaI3PHTw54MYC_-mt3uSJXiAfoih1FV2yO3dMfJBwStYphLUmmYLxbyVqixhcmjXqDd4dVZN8afjZTBujJArsVhjrITNxUvkP4pdjTMXrvrFMgrMT9TyT-yZYnjpb54M9lEHlnqS1cRCxX584uKcXJfvOtcQpR908VsyjHBtzw-FvnAl6FDLBfZ2Q3kjzNENmdE65eBuBGuorQnsNFE31I4hkDnAgquQNzD3js_suE79bK_E5g-4YGA8hphZEcKW6yP5TPV-jbTTIsw2a8kQhoqtZVb6DHuQjg55tI9oUJ4NFXq-Wqc0rRr3vgr7r_6XXGx9TGUKl0yRdMEgNHP0SdA-s0X7RwXrWOwP-I0SOiZrqH088gyhggUT1vKX8XkyT2rbtJWWKvfHsU3y7q8RttRzFmP79kq98pYHagXqCEGCc3j_iOiStw62IVZd7DkGXFrlr55b4tJPNeYiO_GSbAaTZA9vulAaYg4nPQEo0DaguNaeNpcPYtJvJ9JwUfa__3wm4LQc0FJ_PZP8DRHYxOThb3fJAuWA1K2epTTGM76-cat8KQWXVZo-TMEc4IR5DdxdICgSOSHJcs9TEStiGLmYrngbYpyvixSqcxkMJoeDjK43gs8Pv30xR5QH82dp0yRIURIEquLmQpkcjonnozCYPLBxPyb2snGwQNVZihhYgzFAikEBOOUGLjfuGaAbhn2g6vZrheHDpYlslGjRAO5wB1pKD9djUwFWG-ZAOldzp4EIuiXMpOPuzODzlAFqs4PTaonmmEa9VTYwi7o4UaKXxY_Ygr5Nf1ot2NFmX8Vu9Om76tvii-YylLX5MbzRQ9jcRNDDutY74WcXEhVv8mgdh65m8socya67LHN4lur9vCruhFuMMkLJ02tTnxtfVE2a2dQ3jGOrAXqu6UuyHnyMs1hmYvjTnQu8zMUqZJ8lUaOqQADUd8UeD5JK_BWDEsRhIPSoCS7BATpFF-ihoaKboDJjsvu7gD0AVt3Tt0CUwQlT6506P2G7hLNSsY2IH6usx5aj0aNRJRaNudK-1_A7eiY7Ihh6DvUpet-Xp9xE8iebWEoHGcMT5H1oSDr-RDS2karElDcfzKRwCmTDpbvQfu9eNHv-lBzxI8Gy1ZEJIYZ7VhRYubttcIwkrw4DhPzqG6-nlfKnxiiIXGc8YW5rChLFl_W_qbg_sS0UZTwAEKytyzLfXseqa2LfbozmzF1qHFG1Ml-XPSICKS26bmH9kn2_JlR95rv7xANXPjtcaltE5jXo-OyP28xwjQFVBnD4Bj0g6L67tniN4AeY2eLlLE-rzNgM3786-1PyczVijP_bXn74vZB7F7SXTtxgX4LOF39vaCOkAhNYreBWun98wk9JuxsUA5AFrMcHSnLBRSlIvkbJfUwuoWjB-vlnzM9o0lkEW5N23AjQIeq9BqzBgp2WaSJbUsmrnB--Y9XeiqAo844NoS9QhdF0f_91GZaWnKpHA-VSSFH1mtDmi5VXIPQ9Ggo1UO1xXPxz4uafme-Je59QdvpuFxB_p11CoHQ6n8Y8L5vgCiFdbbqTj0nsZg1mg2SZv4kq9P26yi7sI3qq3YRxoFBiAYg3-qVs2tiAiryHZDDAkzd5xg_HdgjRgVpRGbFUG4w5P7uAAwA1CZgi_oIesnUsbTQQ9ByqSnjUzDoAyLGlZRyAtDver5YtRGysN1Q8d6wVRxAgA0vnDVkAAlS4KfwkZKm94klk0ULyBOFYOo2aUquZJ4fBm63Yp3aqsp7iaO5b9724N8s7Csg35Wqncdm1gv1_Wp1qHItAZP3rI2fzmhztrneMDDAlZsmhD_fuyzIe1Y5SuxiDG1LKHa21wiYzAHMRnjjx5k7QqfabBG2KBnqpOOOLVz3M82KpTUT2gCZPS6c4WWfTPMopdcZ5NMybow4B9paghB7iqRELcMP74fLeMsvRt9otiIbo5ti-JyN6sFv-S7vY5Pfvb9625WaiNf2-8g8olLRewWpPF4t_QS0wgOll4nZL8sXQgVGVUF4fl0UuBiENBPbxJFzJYqaKRRpvs3899Ib9KbLt2BXaj3mndRLkrLKYGwGPYsbL21dNbIqei7p1IM0KKLE8JNl5w3rmVmbtf964ffHT7QdzPOSapxoUt3JoyR1ThdIkxJUtZQNTs7bMroSi3mA3gB7TmIMImJvnfMITA8ZKOZSxhrSdnQ43d7-wsk75Q6iQfiS-x-e14dkf8CARtg6LmWiVi5iFPfHO41_ru8LRKu9wdFbWL1Bu2NDsuszck2zWOJp_qqeuwBDpYsPHbOUxD0sNCK2uyI44uft_nmnI6qia_u-_154YymY-LBpHstvnWDjOk0Xf6ohb20hzPszwLNfVmLs7JCYabYNUP1kcakM-kGqI54sqozbOsaGkdViPx0v66lhiGsaTjQIZV3fuR_eyifWY6T4YtC37qINjprjP_G0LAkB9hpROQcTfnzC8Jy00dvm2Dv3KjZKweTCnz-L5izqSNCTHbVtQAjvgPpwQq_iIJykGCWnJEMmqGGIjgjHgqH4T4KzWg5nU4NHW0VA0okzWWWAhB7Q1IK1szTpf1b8C7pyGASkBgGEF_TFew-COiIHtt6YK4iW26uz43FNRyp9qOvZzI_imYAu2s49v3XE_NGDRgsvzRLI1ZYutxdRNus7smePfbNQ9nusfZ3odMVjL8ftUybEjUOWKBpHQcEdFik5MB9bZEdscvVvUM76Wc_YtOdG1ZtHavoOhFTorZHAAtmRkrCVkWJWO3vcg0Jfz65uyS8M4iEtKCzgMohW0aeSpS2ARmgdWySZshCkb94xos9HEgvy7vjFodYclLS7kd0Lzj41clXSU-ky02nHzuN32bYswqpLKDM92RXXC-jSgyYzZ1p80C_v7rLB-sWih7QpP6_dILxotgg1zUr25XcM9qS4HwUIM87nfJh3yX0mFMtKB9IZaUyoYjA8LHjeUrz4FJhfIhAQOIhQlA7e1d3APsNXDp7FEacbAAYhsNpJDpFrSHwEwFpOyQT8uTwGcIzBdR4ZHz-4A3kJVTB_1DgVRrLcpzfalHOXYVRitGsjX-Oi6VLXjUrt2aa7h676mfrNMmR2IZuDMApM4DGgv8A4y4lW7_TOKKnkX83W2bafCQ5y39TgSKcOIvT3i01V-oaLJAW7NLnDO2kenQr7gUILYmVxudE474i0bxN2MVjomrRJ8x0OfPU9f_L3uwie24eGi_d51198W6CbcNceZgiuc4-R7aKz9MHIiTyOniWycjvA3joBxBcCIBvrdewjwSDPwO3Ul2A3qc7vVJRrklPgnkC7JgteP3h6HGrhjrUFykmr4cRmu8BfcTGYUwZTt6LT037aHWYY4I8hj5uBiaKLxn6JvxeiIwNrBt-Z6EYtidLe04i4JhmttmZNvgX1nVpcv5o9_CWsXCcRhOLeDuUzzxPpJypPIIWBiTMNCFnZr4PLlfaPSQ_sXO5tqtAFNJM4pSqpMZTY7BZyAZpJGfjY0GP6ZNiG2gRpSIRF2wB-tK7cChWax6XdL1ifGxDUKXAoR_zY1yNKjFGkuZAHe1yfoicw2G6CD5vuug3ocaxIKOT381nBwullIzTvcDc_HY4TeG4ML07jNzw6bb7Az8T_q3PrSFg0SZIIz4f4DqnvIg8a8lxyYaDvmd_IlHdutKgYUXm78xCvPY2uWJDEwX19VCvwYg4CZVCq-kk76ik_YS3Hnmc-ImYuvRB5krW859_9uj8tN8m3V4EuxR2gav9q6dWGVG8cwEFDwYC4OpKzp-XapSuA9KfUrLEWGdZDNRLt1ZdwKrbm1Vb892TwXCUo0ISttXGkfiBQqjzpCK0SYA8k3sSchuhJZjzZB5U1aLGu9orf5DdSqsgp7j_YHPlFF1kPOa1dLQvNgNZAuzK66cKNogLv4bABE5lEuus47tDJFCIcNYeyjDlzyMEJlgxbRJgT6PSx_m7WJm1gtmiq-AfuClBHcPVbNi-irElI-eR-LK-nfewpqsHz6-LPLBsSBEjuN9uFawGqUc3xsx1dBz04uq6Kn6LfL2YWxKXQQKkZuOLfpCbxOIagmIVjEMEIb9A37b4zI4GnuU8FY84ESDxxAOueyLcnZ8Tjh4ihqEYgeUVE_1B8qRigxB7hAoo9wg40w7Ud5zeublskH1x_9aUFe4hXDOeRgOKvf5CBjrNzLUgYLrEeYqChtDwTI23NGqYm71jkV8ALCBO1X0XF8lBjGVqEBnXqDVy7BLjjeCgw0SPT5jozWBUufv_KySxrU-zTNdriLXMLQLTcMRRb1U1BxT9XMadhKtIA5-US5ASco97911pmWgaKy8fbfFnDD7FASbBnE5ktRNXdpPOsDWNh9pGZ3Lcw5EGzNxBcLRXCt-EHwn2qqkoIFR84I7IzgTcNMXTWvXq3rRerCyw5H8zqfwn8hwB_-JDh3IgBmA_oBdqd8MOVjgl0l3tnQkLq0pfUs8OkkupCuBRaclQpeG4KOX6o_fOjxdzGqyQkmEEVqjRSnZadx8zsAjg3hnFmXcPLOIxwTmX1cYZ7ik6oRwlox3epBHqnCofmK6-szW-vnQxdjycyHM7J4qeD67qji_psrZ-0f3kmIDmaojnvZaT-Pfx8bcgo_PnX2qEUJnk8skCpevhAHdxNUNXuZzZ5fds-3r3yspTWIpTF9nbTpPuiJRfZyYi8lY1a05VGyN8x3wX3hvPGSV93QhXpRpjzogoeMoGsRw57Ew8cwjph3e1tb0wJHy2tln8518qveWc94gqmskfKjoSwCyx0a-5zQy0ETXuxrIdeK9Ds_mWR24dwMH8DXMguuqhUTI24G_0dAoRVo_jS421Q6C_kCY4cE6p-guygRbPJHZKi-0dVz6QYkewNWQ-hdtNcDlN6A3ZW8eHmVBmBA6XEX5ByXxGbpA6hbtAeUkX6_6gR1lsrG5Jr89JQHVFvCS2NTbQtMhjPM1vFoelK6T92mgO0uGewNoHk75UQoDo8CRBQGvZlzlBvFK219OnWkKEdSWojLlyEjzrU8RkJdOGQQ-rdPvY8SYiCTGTDgHtsE2ePIlEjwDUvu3cOIfxzHTPLNpDOAIymSp_mkBwB3vQiLcgBgzfQZDceYL8puZguJ20Cx4rHG1mXkfH12QDGUvor3VLl8lcYqWxk7nM-TrCMYw2o2aXxQxBHWp8idtzYlKV0C05B9s2bnwsfd888m5uj_36qCtPMUjrGVKXGUzfUwOynSk-bXpoXf6dGOGy3n4l3Nxef9nWZYCEtUFSgtEZP4giS8xoo-N9RdHpaXIM9Mvi2sMeUyRLIkeRv-YuNxtTwdAWP5IZXZyTFHgga_lmp5DKef_FkRj9zad6A158GeVvK1H_yq3d_hUEKqrlzA1l0RzxdHk2T7LJsfxabgtOmdexKK3zu5ZiY1r8CGUEPvXDAL89CQW4fQ0rlAOrWjN_HPNS-keJ6tyUjOhs4YKEFXEAJYNOvyOM9frGH54HW3CjBLw2bK7-rP-C7zsylOnc8b8ZRDzOEFz-dSNwlONMBbRJ4rmAnJecoKjGU48Lxxpy7T3hMLVu-NO0ZCFJWQby4MsMSOiCYOz199vGwJkIUX8y0Xde0zIBteuLwY3jQiuzjoVc617fGGKyvzXhpmL-rIAq0I6MRLsGU3ooSTILNhRdvzj1d0XPhqFFevTI3Dtb3gNdLD3ZkmJAmMj6CKyRcVigzqkkRTwSAwexlI0wEvysPWklo7Dd9ZpjvS7LbSDdKDwo3AZJUBC8b1DxtYXFREoauFm6jWPJeTVHNeht_2wAtL6ZglEAzAEBXktWopIF_R3pLuRWrVhV9RMFSEEEDVNkFj0xTTdPXqar8EcjKBsHhCnDQEdnxLjHNddlZ0bcrZDDoGt5DXWNaW4Cne4RkEIo0c-11UTv4bYWAiO8n7cxmtkT9GECYjf0CfyBF-Z-aFRcjAdOA1nWMvdQrAaTVpMYs1xcmWD_GbfhHCL6dF5E5CZSZJFcGiVbNbJaoGUALOIONixOOFdDAumPOSS0pb2EjwRCOvoDx1eSP2TZthOj1G9PO1GKVHobSpb7fD2Sbk6ntUYAGOL8JcPAayJC4YAzFsDlEkWieQBTGEjMoskbVujKYGlFxYzLcQvH78kZ6BEtsP7Tp-7j3r-V-Qka077-RqIDs2SQXUMwtFmrrwD8LPAiFZ2UcGcK0LQzwY7Waug7bdR22eR0CXUsEOGi8fL0KMXD6VnEK5ABfQ_1Iu2dMPmoWlIrQn_bB0bk4XR8IN7s9mEYkAzq7TvLHzi7w0J05e9PKoZpT0f6dwOjIHJNfOqlKJyTvjjouAahOphFn5-jjEr4eSA4aOs11lOh1pj2x9AuilMt42Bo5vq3rm-8k42kZgxZEG1IxGZ90FW-tdKnkOwD5ttIfyWrgEpw5ymq6fb_iuR_LlPoUKe7P_zvGAevkoTc7qMqzrQKw91tdY6VlEaWuuSXQBJXbaT80ajskSTb2dACv2oDrEpvA8TgXSRI5pxSMBYrHGVEOFFGfSwcgMR-NcX4EPJ5iVuiLPf7Iq3Nru-Kph4B9qafj-lHlMaqeHeE6Pa6DLOse3CIrad2jEqjnCwBQ5H1HHsT9nop9JLkVKrO472E7mxsNNge2umTVGaLSiPTmnyt6Pa1hm_Giuw65HFMO3X-PFpUD9kR5TtPkd4pRwXkQ5vLc7MnK4xx1uK-E1B_wGa-1-27WnH0Bh3ARIZ7OxC95xVP3ReoooeouKPY1e1iDUQXeO_mU56WPbm8zumjaT5DzI5XUIbyrECTrUkhN7pmmFUiuhvKO4M1hPvR42RVJmK5R1QyLJxw3KBbSQN9EoC8H3-TrJYYPn_lJQ_jRbJpjOH721cWm5AQu9m84h4bf0fkKiB4YE4FHfaP9s4A9GIImARynW4kF0CS9l8CCHmcxhX358Upkd5m_2USVJuw2cIc1DhwxfRQTgtJ94UVvbpCWRZUnPbz4gcQ1j7gzaoNGYJ0KaXRmlhzF6dW8m-PvvDZVcmYR6Or0nVBOUx9EWSjKf9L42MHcwk6L8L4E8xdG2u_9MUM1YVlaT1G1UeDWd2ey2S5dzDWqwHATETB4RVNJokrtJL-Cc2noMZO0Cj4z4UzlOmhiLY4YiyUu7BBhGYfxGUuNAm4W3UR_TtiFvr8Urm-YPHpOMtsiVKKSHvLe_JF6wdFSdRl3EoRpA8M6OFUeAUh3snQB4NxaHtJZ_s6eaK3BwYa392FN4WbtwElf6rY4bSp9xTA3OHkWvOKC8PHuaCrnBvzQpFm-RshUlfYAEV1CRpzuXLgZAzEzERo3a57SPYI0YHeMxwNJoqtVZzdfXkR8SP6ZAcqsWd3hVJfe48dkow266UysuJhw4WKKjUEDHfB89SvNxZIprFO7Ja7UJR4F6OSiK3jC3eABoLfkYfmp8GjVGL2kJzJpHxzN7scNGNtdzGUydfKdXEKUlxhcNgc-3HbGlEQdJkHX1uwGZZcvD7YM_5hlHBfUD0N41W2TYaCQx2mZkwf-pKMZ9jJ5hRuw7Y9FmxmfEsDDFlLG_Z6hO1ZuxJdADrX9gtXkZ0_C4CntPIJLmwUXsua7lDTr9CZfwkE4VLlnkJB8LzDmfurlRg7-K9V-pDoDZkx3-Ljj0JIgAP2LlWEe4lVqFRHQ8jgkY9NTbxFfFP2HJGA0sxAE8cD9Zkwv0Acl-z_5gmp4VYWUc4x8vQ_H_v1OuS_JMu7SEf5bKxFXFy-Z6lXVLHWONMeKfgTu33lw5M_PTWJ2YQPHzhj3wBuiaJY9TBg61HG-PVUtha5IJU-RUjtpufLHhMOQ0haYq_TSVWG0a0L4Om5RGvMC1LSaOio8w5GnamUgxDqBqPvDXHiNo_C5hb1jnaGy6q6JHTrmAJXjSjRbaiEXHOZNhpn2M5ud5npNxBzDFVbYCI-P83WBVrRggorWH4J4Rl7fx5UXMCo69-gyaC70bxeMu0fOfScr6XLTSdQsFYCl668Sep-ejYo5S5E9Tdm-LH0j6XxiBYCFEWwb_ATf-aGKkbbHR-0pVAQhE3sGe6-sVe3Aa5wIXyx-yq6T05rAkhZ8usKqt342TfLfPbHPACcDWmR-f5gdGdxFlJioZxi35bPTOUpClOYfr0Xu-gBCBjLYB6iMuXhCH6ALTBoJS2Lotu5SBQljHX4dcYem4J1ISMOyDmP1Lj45BHeKWRiHs999hHxTl_U7IpTcvNhfuFfMsvhio8brLk4qGHFzk-FzagWiJwqMhDKPaQjV6uSfFCwliRnoGlFC--xjFSJP4Jzurm_nULLVJKdWXZQVEcOz0QTZ8c8H8it722Jr-1e1F0Sz8C8LcZDUt0rzlalcbgUUzq3YKMdlyTXrv2Z0Xly9Mpa4HhW6V7O1mFWq9p5C3YzW-6IFoSX2Igmygg54lQQKwai3S6pGf8RdLYw8-fqbFbaYCWemI9AOJ2FkhpqT-UA8eFdddCytfNf5p4M4CC8Vf9So-AcamP0fJtz16vfHmHNfaAvCtW_7OS3Ln2thgyPejqxl3fBREfR7zA9Dji47r-d7NQm806wVLh8t5Nd3WnKNHVFztn7h_B9NWdjFrc0JSsj00N3E1aAs8NHg-DOv_jXyEr116126eqFId9LCYY0C9KaZAyUwnqU-0u1VrOozlDmNZDGMm388TH07kZxKj9VEoIuiwO_fEiCYhSHOs26AjYkxngLCTCgJ3WWeHwdrocKDcFkr8NWE-Lv21QvCD9oL6yc78pc71GFV4xHuGmqbgy-AgwIMBhqR6ZCtySwJBPEOc8Q-8FAW0k2gDkrsFe6FJIpj3Uirfob7e0CSmQUDUElsgc2Q5TdTqITijRJWuJnWq1_2ChYcQNAw6PjlIn6utL_qfImbGTxpxTG0RcG63I-a7My9wvjLZUf9023l5VrLOXJcImgI8AQHNx47ODRXWwCLVTSrhH55lXVF-t9AtGyVWkaZZm31U0IAVY76_3oiu7FoZHphqvhWarFwCu2eBO1vu8RZBy2iHZVi0JKd6rbCRbnNxDJyBBNDUub3KymU54h3OWJBt84KNjrUTFl6ctTF6E1v5SuX4BubUtSqf2DywtzPTAMZJsa9d_htd4R9rDQuEFTgel7PReOWm_E2hKNsJ3sksIDI1QC6lRrQQoVOV_HnP5HmwdibVk9ONdfJdo1Igehx103dBW2cg-xWNFQDP_YoNWEzR_FF1Toa7c6nRTYyX-kHv1nGQb1J2DVBGQGP2ALrXqhk17U9W3LhG3Do0Hir9m958CA0A8Eaq0lttEIxHOIimxo_z5fMIIekQhY09VxvBh2bYaFgiylFV-YkNPrMZFlK8sTxTBKbtT__47UPa6XUwjxUoenarbrZVlRsbcqYSn0gOSXd1TdR2epkpt04IrNJSDecDaBp-SxDmSPCZRah5CuSZG2kTSnnuXYTYmQB3OgLMl9b5iJnSDw5jMrBoNBou9ocX_COc1Gq5JqwzWn5HHzIunoo1B4iG9OQnqfBtaoOQN06vf0AgiEt0nH0yS5xieTG926tMEoRmdJXewyQDiTftwpzejBRyaIMVlK2bM_EQfj8kV068Yw4RCNYEPZND-vyfK7Z8vGcHY3hVRdmiHqQ7JPItqWE_jg9VausCNWckzKUsoyuQMvWlHndHeFjSo0KxigrjbyLI3mF_T_ELNdFNA4aSY5jvxHcF9PW_rrC_EUE-2G0Ububt51F7kx6lKF5EMWo2zNJPS-K2w7Jrv5-tBoRI9uKzDxe3JpURq2xNhc2uOB9JHVGhqC8aaabLfNFRdWVQBq141ObXPXb1JMnZSBjtVwQ5o1kMR-kxq4v1jGd1gWbVv5X5cw27asFFAnpLT8SxuIB8GPMdP4pdyn628nj9PxtsncVEieWnjpQEZuamiEByoNon8F7FmxZ7lDHYiVCtsCf0X1VolE57v20VfvA3Xxh2Lkjx3fqlgANG5WPHMCYwC6htIkg9wH8asv2QnXDjt9534A99Q9gXTDAMs-r42kPg3EyGriy43KTQyOlnmOXIzNA3ytwt6rihS0yHLRaZkI_Lp5y5BF0iYz2zkk1LO3VnqTN-EQ86ueXtc0bupb_PrWW_MDGf_y5nzZeAc6MbGqVBsxeLei-i7eYFHWSfaAvW6x88g1kNCN5lXC7WDw16ASf8xdN_vsEA-BbyWhXpBKnYyLsBkSBaGfGySaUR71BLlP_RvcutUXAetWnEZxUVd-gRLiIyqL7gcZR0UY2AaNNtY9OuPWEtig__MXrR7LOUSVkf6d_lz9dMbiW91SLrvT0uKjgLqokkbmF9Clo1LYsbQj7kZ4v6wqr70WyqwnZ1-CsKK-TdnKokDWlhIAkc-jNwiuQZzDn0HIjt7jpTnX6c-incwFYBewxJ9nKeUqsL0L9Y5r4GHdJICFJm14XMFY-IfNqjN-UVStduQAtWTftLZmie2f0reU7APUDwaa8MeoP9lqhKKC2bpgusEWr4JkoykrWsgSRz25gkarGWWbCxbp4VI5t0RIfaFF_u8NAye7SUYTAHktNNeaSpVNhFczR4FK7M7S544K6ESpnw6evgAphiAxnzan1F-9v3_HFvi9ZkRui9quT7ZmrotA0_kCRCGCA8tLR4rzQIcDSHLqwrPuqUsvwT56NuJdjPZqhIvyl-5QKFz5IG1ZZsajbXj_rpp7Eyf_1Fx_DOXquxhBl8O-Zzwur__32yuBsz7yuD6005Y_9lC1QCq2qSkPCay52hTE_PIN5K3klZR-3cUyKAgwKW79AU-CMUNbSAjUcwIw7_Hy0V2fqHBZIaJvIVi2sQHlnFq0DynxHIthliYN7mG8TEO0YHO3WLm9ikpux4oXniTWbSeB4PQPwSNC7ui43TzewTudr4sfXgl2MgN3unf8g-kUO8QfKJxBQo1DdN7o3EjRQq9onC4pRURBJCon5WTTLObnZ0pwZsQyW86CLh1xsAtxPWvaG-Tbbt8t5EJD117WZtZcdqutZSTeu2iaxo-_WZdbzPW1eTX6a7_j2eEufYXvPuHYFiIsq9lXSUfBTf2KhA6mIS_RPd9qqJrfIEOxqXnJxpQA9xHS0mMP_OkGgRhXGxzHNiC0PwXFZWEzbczFFJVWhWOt_ybEEp2_atAm-slYurbwmm1AuNSmwrIb9zJ6ixheuKvlgzjWcvofk5GS1-q33Bouxsz3-3kv4L_Dj5Exy6SMidRLBl0vpC5lZYJMJE47b6jgMVwaeMeEu70nNImrwC1sROZKX-R7W2rVSuc4GnAuLwOI7yz_sZsIhaskQFEkbGybpwDWxmkWtql0AZZW9Qz0pnR5yatGRoiXoneN5Wg8jBMgUhRj1wMlPtL8MqywFxo43T2OagfJ5HNJ0YcbojW_crx33YDwZrWgtP4NbZ1QnYXLLGTOysf5FNplwg3ykYqi0_7GscA0qui_Pinj8ZP7D85JPFXAbBUJsG0c0yJVa7SiXkmukjL5tO9B3f8HTsY_fF-Sw7b9F9t9AY4-O7IwmhPWM8Sv4uPQwU1vDp24UkpS83avpFay2E441j19N_coM9bFjOpwIDswxEEwdXheO4-DT_ijjQZBIBRvpOxcqXNYKYsRsCuRWpUx2QF9Gq5CL5mQVcG8E0Gl72VCqB2_isP-LexQga22NvgUp9RiBfftr4wMqCh_uIaNZAq16YQFehzMHPuKWBnYnuLRLZ1A5XAbqRaSSw5GIPdnGGQ-UxksChzYDov74WTOgz9FJT1d46egwqUiAJHuCeVJR_WYSMLcQS_weGvhhD010HxhdP9F4-GkCSRqLWcpGmamgBfwjvFYHQ0d586Wo0ldGR8jK17LlnfKD5CpY6DZ8yIGyQ2t4D2X_PXQMzyUukUXkseyWlCBxQYqT81CgU26hITLsiheNSale9BPIf0S8J8J4ak9xWW2VodEtS_VZ0s8gJOiGqtfMcOfO_1oIasGAlqZOmo12iIikD6GljxX6zNBJfjYrtZ0EJHn6rpiEp3Q1ot2_cp1I1Rot3EI3K3JSU4yGen_PW0gbFRUb0snxskMGUJc77DpJJzH6HdaDI5DvVJPglSjU60ejWNioVVYTbh9VwbX4VL5zV13TuvqNAFXwSXqkizx_tALl3sXlBTFy6TMCX2DaLBM8rh6RV8BxSWqVxC3giYHGkPOCmWc9dbFiZ9vI9JPfb-499J7lGmB30p_8iO7j6IaZd6bWRADkJBDB5CaogXWZHS5oW1lgnsFEkc_PdflE3srYOqtqLGkc6ZIvAX8wm117--nqimqZbRxMd5AsixhWUXEBQq-zxYidps0gV1Y0mJ_UEkzY78B0-WL-ZqLh_vuErAViKt-Upx9ZRRxwzwTvLL0-XPOgD0xE-ZEZP5tNcfcja7YRos4xG5D0NdMhzntyjKa5DOExDkaZh5JFs3OfDBdgjRAO1dzDk_a5FgPmf33BTYHQXBA0wnhZA6jugqavQM9vACLcI1HO3IvQMAT_VO_qdOBAzZ97eNrxO6Vc7Ny5cYUK1XuGvDPZ0QtabvE7mIQ9muFdd2UMV4UJyrj2zanKlcmXTCrznpE_ug7fW3UPELLnHc9_Lvxm_T6t-9ai0FBUpwarLn41UUe3HUGml74MOfiQOcnOkJv93dMJxqROh6-pUILrlv_nU1937maWiMoI4k_wl_xyBvcLoUX6KWqUVyfxd6YkitxzvpTB0m2v-yzYFI1Ok35vOeAlQxL5HH7xIXpUXbF02EuerVMMV8CwacEPw1vcqIIXjbZd5tsBiLrvvGJXthBZD5sBE3uzFfyl635CAGANucrIcwLjj-1GCnFX_wTMWrkhcKAbm2AsccRSEkwqGmZKUYl7T4-tISz0RNTon1fi3ipzxb8nyjLsu1Upx0pGA8l83S7gN8oAsjmdQzm4ycOaRI8FdATpSz0VBOLn7l08O4GRJA6_h003YdeGYvjqZYqCeiCt5ubdcHb7P3HG4z_S03X6MmUeTHP7Ru4UIiiC1hpc3fC8kAvh9F3qVsU-WUHshC8_goXaPQcdFwmUscY1ZV9hkA0lPewkQn1WrMo3id7oR3oZyh18mt6XdsHtZbLTGjwfGTTLLLqhpbcMvzjRneXBqA1zT1b1Edmmc2GZaCsQBOamd26gKDcjhTYMpgRr3VGguUlgvwsTikbfkbRswAhnr9NbcueqaKoqQc25w8hL4Ph3by7GPCRjHwfBvMzWFyHBi0cpLCFAG4aUBEF3KSdSMdDxp7fB4nuxi8orPqz6u92CrsFuAkWGLJ6jU6lwO6rh5tmz4eE8_j66-jnrSzTajUt1L9RZJ4ucZzmt_sTeHHyKGSoDHB25HRsDi5o0C2eHnBprm3saYbekbhjelkRF5FXm_gwIBZgCKemKMrFAAPzWk89YsMJpB7s_rZDUCyTIB8WoozPxg73Jl7T-Co7z4jMch_ZfL_EusICa2rDLOHt7lxy_5QS7x0w9pS1CG9M4E3ttYOuHK9VU7K1ko8wXJjci8dghUoJVO6-CjBBL-YEUf8oKXOb6yh5ZWB6LNrd_pSE-z_0uwzr29KqGxbUAACRfLDpQxyhX9tfoUWnjTV91-t2SqUPyBLbDn1ZTTZFxjAzQpHyQ4CfVnceeXBCirE3kzn3qDONlwgMIAwvEC2UHUIWOrCY_oV0VqTcmiT3YHoNy5dfEBtLBx9X8MMwYC8JvFLuOAeSCFzCVTEi3ytE7oz33-X4Wk13qSSplHte6OyAEdE1o5jPxQpiUGeaLkvW9S4iCP5dNvuppe638CPjmjB7PYxZHUS-SbaGiGyTipvPYKLOZTjVy1mNW1_ToD1Vzd6sp99hzjEWvvUg-vIDfsKehZ8Mf9RjEzO5IDTR0cNavtoLRnKNahXvZxh_s0AeMtkg3-of9uLKVXwMAczBW8Uj_nRF7_lj4u8L6G5BekXbpa5Z4OTbrr35OBB-BeZG2ryruxdJM836oo_GY7xm9PqLbySueuPEOVFUuxFBaHmPwnEZCP6QeRavRF1Tw96G2WXESltpGeygEe_snxNDnIbvQFzRZjBwNFQKvGfCwWKE6fhzRDaW86sYBl1J0nRl8l9qmbWonAYI0j7CBQuBFEdR3qHbAnOXN4_RyyoglXS3O8MvViKHM7mDdsHCOQWzVpRDaJvMoS9B1-3b5YDVX_qsu3f-Aq1EbODZp6Nr3oaSQ_V1GZJwKAFxi39hXdTjZK-gxczLmHe0ypzinxrUap1NZih2qPyacvjWOURvQ5xq-Tuk2C00DO8w0zE5x9Bdjv0YnKXcS4X6GS1qHZrtGtD2WX0elgfwjn3dSbqC72tMhlG3eXztpf5vdR5RipGVi5RhSoq1KS4vCmtuzLE0q_ZjWH4wfMRRszCDaAwhsaUYDQcuK6nIHKXma16Ud-6pdaZ7zw2tWcpq9SYs6A-wBWVV-7sjKNnexKMz51Q1LtCF-63QUvM2eRCNPxp7UUk8n7aW3iTTJxmfqg897ixzjSPYILyHv5ywCv824V2lD_VEYRuZ_bD6Pek6eUv22UL2nFAjNoRAPB2O-KEqqAEFvksKxqpnDIBmMU4h7_frHMAsE0eYtbAXYR-bLqzQfYAKvYPKWnpuiUkKe24WfShlW8sxGSz7q33XEdDDwNgfd04go3cGoH1Ykg_bZSZKD1_I-K98pFVI7Mg8If-gajEQr9dWsy5dcZevSF4E_wbAH-uFjpPCuLSKwWWkG90kvdiJ_RpTNnKnqK5kERDIi6ZAoUf9YvMlfMqHTlmdu1MfjzBGu5zNtm_YJo-GaXyXLWSRxrQJ9xSnQiTnNTyJoJ5Zn3omZbmng1UAbLCuI609OasRAYOWLp6od6LH1-BoD9739SzYEEG9Y_UcA2-KOJp26CRJ5Xy-MkfzbCU6_9rcqi3MIxsiME5ye8PiQ-c1LTmPkielmQLU8VVIBmDPfku1fsS12bw1TkoDd8zrZFpuvkSfS2FxbWQbipuGQBCuL7azYIcrumPsZHW5HSSIvS0NsRnuTWWSMlkWVqx2f05S5bLKIIvhVGp75NoUjsjTbf_HvukrtRX_U6YNYNaeGJf-zY-rHAEdTZgX6wPss7z27ZnfxWzFpREWKNPtrxrdtzCcBibaPR6UCzstEfX-jinooHqUrCXgqH6oroxGDAWxc1Vmru0K5lwqbdNSiJFOGJN4LqabHSXM03ZjkEhBypqrLlqAEz69gHzRDe3CSpxO_szGalSn5rTmbtSelcVyN1WaaFjREjP5qruLSJdqfd1IiCIUpY0rHj_MbU38ITZGOhCEJD9iion5ILYIoclEPO2NunCCJDo7fyt51a8d5zxVLWbkBcqwfu4HerEX85I0gqEmt7QyLHaeohFIleYr86vkTHoP6spnlK8MHLoZC1LAI1zQCfGy26QATyNTAU7kwbTxh8V1NxjjADHXkffxhgrkJg3HXLcjBvOaB2cXg9seHTuwso1Rwba-GAoCtWqlKbZy-fTCHNjduh-Co8a2dV-t-ORqzpP5Kt5aYXb4KyItN39UmKslJF_yoDbOz5kfFs5Y7Qnwg39mEd4ZgsKTJPw_ijnijTpzYpWW5dqwuQ2Z0rCNXcszD9Vk3Fxq5MrIRzOY7lr9J3iuDv0mdB7uZcUvDAHyuGjczjwMnBayMI6mb-SHX1YX25wEti0Lvni53xeLPL5hkZPAZAByZyQJ_O6fAcyl0lzfQ3xTBiyLXx3ePQaHidixScVPv3eMRk7oZYqZYiGBG8sUDgwqijwzLBQ3aWyC75nWFF5MXI79SjMOASE-Ehh08p3WktffVJi3wcd4KCgFIE-fTWcHZuxtwsnrCWYbNrHlB6bZDdQWhbm4S_eeThXKHRPbJzsc92SkKc8iIrhVU1psdRLyh-LuU-6cvl5HB24vP4E6tFks2apDc35yrlnXMDOKS4J-_vwIZwe_zm0O3IKBymfJysD_HGsUT_3A8uho8m86zJcny4fdy7tabgpAywt49FvzMSt4wJq1lHOO3u9dhpXQemWFGvGjR_C6gYXfd0eYqzDHFQQ8u7D3INvAFYL2DJvVoUu4HF25zX_7O1MrlI-f3TjDzsFeMYyE8sg-l7QDui7sIDdf6pr_lF9KluAozZmzjV_LXAv0OpZTTBsCwHfUC5Zg3CfH28pi-U8z0N14Xyj5SrmxTPc_ACbmUMoZx8u0-SvVREwcbGNeqmT-ZudY_PyJj_4M70cmk2yUQX3LxiwyI5EwxXk0pHjuapDb7ReBhdaKkEZ8V_QB-4Bl4LJSc63KRfr8Mf26HQ4UUR-Y9MTgjDB5QpeOLZdS7rCaPQHJCTuq-ooklQNDoHhndZbzayDYJe7nxkeyhLbKqFBPUzLDDpZ7ac4xC3KcBDD6oFkSsUINEA0IFDBuHMnQG2yPIVSPGxdd0qEaDSdO7BElgggQ6UEmmUp6R_yFMhTZoPlnn3nUQtWRdjKYA0toTQucgh3qJToLAY78cDUV9uUFv9ETTqlof7KT_bMo0XnZ1fXkvhjWj5pwIIXMVp8c9UOprolEio9MAXYjr_3J3d_hY2GDNETP5qFgVUgrdgLMu1RLIOi_rmkem5DF-t3ThaLO8jbRM5fCHKWSewXeaTYq6-dCgJME-b_rIJx9PqMtS0CpRL0wep_SGQZYG14SOi5SuJwSc98Ihe5xV-1Hq4DvJwwDRGJxKPdgAlqmtrCzZz3yfZVywPDBFaV5p3lkJEUoSzQe1AnxCPdTHCA3Gh2s3zvsEYFdqDmpVpFN8TdQPMkP5uUrTOzgDoD0bxb6ZljQAUDjAg-nxGgdgWGdCTp1Pa9U9wPVTylh2cn2io4hkQ0OyMaZdDcILPpxMOlEkXlm3GMBqrobGSfhgNhkx6WSqsWybUQxo1d74y9lOEMigJJJwvPnRHjJa0mM5kBrG8qY4o8bYuky6PsvTbSg99OoD1Na3Aw5sB-xJy4KFFKwQkrV27pPaXrXG4K9WaZC95vr3kr3zGOfy68XD2swjarz8kiuoOGQiCehvx5d4hx37S_xpJ2XB18ZY5uDxwEhp7ohhycrvLgjjqRPk3_1v2HoLH_ZBVhENuJj5Bz8Of3Y10I_cX5jt3EKXO-keHTsv4IXsO1Yn-P1gM0KeegwKcJuKT-Sjty6aR77OdlJfJU7RDVsXXHkcTUnz_-Kt3aVsAM0JiiPMpwabi0eMxhR6Nx1yu0ssPBvIx5_AkZU0yQ-2Ro5W8WcXI8vpPIh6WddmDNTwF35Ddl7IyVuVnBLpSwy4IEvMdI7UXp_QxQPlb-iN7jjdtB2KwTUzvZAD2_NH0taObUt9-qZ-orHrXsvQC8Q-TXidhQG-pL8YRtLxFiOUzhNSMRMFKkeW7hTq5MEnWFzd4bCSS76w3GZBX0xaA6E0d8vqErl0A5nxMFYmscnEyX8FTPF04Y5szRm5J53GlOdkjZZ41Yu0Neb1FLXqTzjkiugT2HtkioalnFt2zQfaVajdtoGqIK0nDKqhO1uUu4dMrPfDYP8s0x3vYryW3BQclA-8CZBqxiIfUmJ01poStBTE_un9HfgFYeEQzUZCy3t5JsYIb95gDfEk1SOmoRB_xA8z6TKLNNJpExyTeLjEomweptXRMHzooNLgdGAEpEnJGNrKphKIoZPm6JxxFL2rlbLUyMo8GCTgNzfZP29zyda0hOLH9KF6ll2YKlNCNzd2sTGrV44ATC9PYnuCL5f8V4E-YMP224Mmv0bdWlgIzujE7Xgn9pG06oE7NqyOtJ6NJwLOJzr0Kd-A4q7VPWYSmgh39FwaJzJifj_uW-U7frtuLa_nxsnCrAjmZ-2zmW5FfjkHHUDANjESa_Uq4S4hZ7o2oQyB8SsU_K58mcG6LHz1qj5OZNQlI_WoP7g5pxjERmc2zbW-uDxjCWO3GlbaNhqm85Xsz75ZOa2pybGboArO_sJulPaoJVp8IMuIIYFyqvF6JkPc6rarzdrBeN1bsHa8IKEeBIQ5CkOTdan8OE46N_dCBdM8O2n1eynaKyXe6m4k3QOgsY6DUT1oPH94SHI1Qr9oo3TMGj8ScGFG40CWY78zcKM5pgOqn9iWqNbld1aDVu7mrlYHHOtFfulrv4utlu9MseVSu5Chq08kE0i6MS64BS7ha9a6zH8MmY6YxAih_e-X1C9QBngZoy84LnQWjbqBMfx7GgR-XgdYJEApdoYFGOEvTxPZfzQzW5sIJkwKdgFl_uRCc0ZzEv3iAhNwQhJgas0SNGyornH4yC8TwFpk_yulQyuR0EyPAN9ixCkdrnomhAtLFcZFx-zhz_vZP-KMpd67_qI-Sr9MGNaBWDkF3HDg56emNv2tTd_O4YMwSrYgUdjfsiaKlJCfuJk7DK81o8ZuvCEF8Eke831EYeYy6jVM9JnPwQDYhwKy7RyV0g3aW62QMEdLbp3iifZz8L5Hug62CAF3ODlEVMXBnFtEAjmpdtLBIZQR94JC9SxnjObUJAZWRJmMu0ADOdJEnJ5i1wr9Q1M_DKN8gdCRvj32qTdxyL5utV21cT0od0iSqW8AuflnrkAaZYMtZ6hKoHEZCTNTxONVOjWSPj4dzb5kKzLcJZrcJdby6LS5J-bhDNrOruRax8w4sJkzrsacIk87uYajx8I4AUGAzQS3Z0ktkU8odXHaO4wG5MauYbKaOWjzOcpGd89Vt7BmHEuyjLLMTuBR_JxHtDTonFGK-ZP0VG3hRBHq5tUSQbgSYONKc21iPWTyZHgH7zWr-6OxoT47QmSAKaD1UNrbiznV1jxte-wicgIGD7HCMkcY1eM1sZrjL4dKV_2sajsEIcCQMpj-bD_J5x8xGhynDyTPHdSrffSFanrXtqmHY8m-JQl3pCxqumWvjhFitvHvlnfoboh7XH01r191uTeFPPt97ydAfOOgfqY35-6AjPQAr5KXUetCgIyZuyNPtR-swwZaK_vualIjwDGF6KcSVTvAqQgYeOI4E-PJpOrKV_YmDyyt1Zkquu__92tb0MS6YWUBfYmgaYMZdrQDbGvTZxXUoUnRTATSN2RapJVIyaxDBO0KDxJEipjNiaSLYXrq6NTfZj69o0e0zwHcXAt2R89gwjqZQOe714EVlZFkEYnCFTd58S2VB3WqonHZySFSStlfNFMznODAna2mmTLrGOXMe5uJ4eqpLp-qcPYvxzovRpUbSl0h3A2V7JEwo1bPGArlVYbjpwi5lOFVWFuTMrQzJFKelKSGkS_zFdWMOXFa0VWDLCiuuyNmYRCBF6NABljpAxXZP4kB5WRI5zRVVAEonKh-HfpUXO4qmVbcIg4OvrrglPdOWlCEdNJtoGaZnAoRK88HmDxz0Nb8IHIDkNOFvnvzk64zMsIVwCAZEkTh5CPOzIDL0xNkRNofYAAY-Qk5kqhqWGoz5Tg6habNLhXODceLM_fq2uqZ1tczeOelDxZWzhsL8E1cIWzl4gISatQ-Bjo-rDEqvw3jWxR-W0Bjv_5rspYbiGlYHHzT2OzQ8OfsqxnYc1E8QwTetsJhQi03TN7a7lzmxOUuF46ef8KZj6r8ucfJfR4r8OfGAkABEk-PhCMgKlYsEnqNfMITpfOdxNVUHqyUAIrfG4zKctDMq6o08sgTy93Z1XrnJNh6SJIZUvNS2Oas6nsG2d5S7cP0k7_ffdQk721sI5OJ_b-3di_PioQQTb49IIPOCIFHpY7ATe_NH59Ao6sFMRO3axr_0sax-JoBGdFW5aTuUl2GPNNW8g6T9sxTZ4ZHzOysOqGh0TjcD8pXBFKFhQjxHiNuctlGqdQUncziUjOo_IpIK4QKeU7HEdanr62EOZr31Y8vksbsSP38zzivDkVKLHvtLI6u5H3tVWGsQ_4VbND_zJ1R-LgI_S1P6D6j6wUnId78IW9VVn4iDeaDhasd3xSkaPSspEl0r6SKJKStkpOTywVxOuw5n9qPruEjpJR11zTcdtZG6qLnwhDf5ZQL0gOmGvuMAgBYydpkNS6Xw3g1FfTSI47_Hw1jVke0I_gWDzXyf_zqgE4-BFuqfRTxo0T-WsTGrzujs_cf26guxTium7Tb4Ysbb35pD4r5tazI6jbbw1ZGrg2xve0P-RoffLo9mV9xwVDmzh18107t28tTVfhEkL4ZnzBHocr4-178FT2M0seqUryv9r77xEqfCZOJkGahtUiOrJ3cj6p4Fb7u3P98ryO9uywEmPNxn5LUkHaINABf6DkhEXYG7Kc7iqLIBAnEPEZwbxkm6Khh_QYyDUGI1FjcW6IkorJpjslA_UiqRYj8QYuBladA1nfAahq_YmTYdX9sFVRYTIHHu9J1fnb_DSrs2BK0H71RjbEGnHQqRTGCeG9k0lylYWvFNAEwyh2vDzDGXiKg69Lgg1aZkJ1SshEAh1Nza9zLH0QH-nRblHQlTe_AM2gSRtWT3p-zIX3STzALx25QecMXdLrMBhSOC6pkDBv9wqy4hzTemHohf79dM6RLBIcNZc0dQ_Rrv5zruFeFI-RGub4LkYuFOC0BOzMvWeJyK8cYzNqwSJGCHKYArGnLlsUt-kJW_T1Q4DF1pnCt_--ggY9OSCbWua3mB5iC0yY4fZg2KIM55qIPp2PLARhOLqGSTbN8BOWMx2aYkz3iNun7-2oBtdDZV94uqB6sUWLAX9YMrXQKTjXlm3ickQgF2b-3SDszi_xNWeel-f_9djIlXHm0BRdpMYIAchkJ2J9CtOdvVBdjtM6JdcAhdm2N9yeYYp4iSaKb0TeFqZOkf8V6cZI7O2VUkO47CdfT6HlXUwxq0VKOAh5QczreR4MjminhPBk-wA3Fxu9ULiBG03NuLMIho89Tl8vz5sMDyE36VW_atopgVrcFavkYEyCxMmUMs7LED0x6fw9d1pnGrRKUB-yI4yAMAiqOdKVu_pluXc6lmoahJwMA4ey7ToxiZthrb53wvx7ghyfYenj2Pp66x7SdIjqXbM1fPVL1OYEsVKg4xWuS6UlkuJM1W7B54lkbQJsa5ZJzD8fC-2c4RJLtM0ksF0SFnShAxRmYvdACG6GJXVwfdW3PhDWaMSebKfNdCq-0tHKp63XO2KJ72i09DKOn80kDGBL4mz3dqET4U3sV52H3XC8gD3KWm7toFh8Ysd4cfdXbyjWiOzcJc3OwRWEjlHzFe7bSlu6NBng4a8faikj0HBLFKREhwfv0nPbYNrAf6iOtCS6RiVT8_V7B8GA-5OHgD33Dk5nCfEaj_fNOSA1ythYWRppe1qEybTgCy43RDVHJkdQtvtsfcq7EO4Xabmts3vFtQRukVSqlhfq3280-Qxx09lGpwSAVIgt1ksOhvoIGmAmx4rqQY3Rr0TpNjaGH8yeETo4srtUVK5KDUwesAOUEiyG7x-Gr0WeOKuobPVxu4LQ-N4qDm6yb64BEf0dpqz5Li4EPMTRM6Fv6zrms_GMUzXlLW8YmFHhnZAy0fkIRmNzn2CeNvkhN1sQ9DJKNjmFpIt5qUdc_2cMNGpC03wU0CCHf19QKzCVrJQplSdjES-4r4pbjYLOxqQSDfBjYngoxqF4mA-SxhUotxykfAaxyGyZqtzd_HbJnCEIQzsja7GjRlQTs9-3vvdQmgzVzYinvFjn3wZSS5X8hTqCRBuWbSQMcM5M4PC4iVJlXjFsj9F9FAhfcXTS1t6OodPt05gCg3Qlo_om-0afCRNmgzTfiX-oIt6IhWLAqODV0MXKwQ5uL8RS7fQL-KCk6SaAa1jckiiI54rl_zOG4l3JnXOZMAoKU2tiCR-C6jxOIJAoJ5hFJ5k0bi3aEZJn1GKZIjVH1xu6jBZfxoCjCP-TM-nP3JS7hkA5-dL7EHqBMTemyZ_LkDh8PPoXZJojGuwbovjYlEESWAgyFbvw-yR2h2NcP3S2yi47URckrwhCGJVcLoIetF9HOvU7W7eBzl2LVq29T--CWZPzXZ1zRhmYIjEyfWVKyUjvYH5XNGTVURX4_uYOHWtoeojR3Z9O4kRwY-9PfwOA2FcBh7ezzMyo9xMbns_Q4vCFI5hbM58ZwZtUQDttjQxLTpI1cXJfOnpy0hgNWrfaCArgqqI7h6dvZUCqi_-bFtEoj_eeDLyQvVEMABX4t9sp9U6LRmJwkDzm4qM5etNSHZUOfZbRPY3Uzl_BIC2F2L8dg5IMxAok2J1EKfCfmRmhUkd8G677puyhie8D1UsGImqMa6FBQ4i6AO3UtEg3M69RoAV9tg99gdxzBY5gtntO_SgpZEvc-2_P2O3UfymjEsslE2ZNLjToexFkTBcv0O_WbtIVFEIy0xB3CROMFYQcbYWEQ_OlbmRVMLj13hWZGafKj7PZSUyWcL72swJ_9h1dBFmP05nR-cfeyWTbUVKUEWiykeeeZuoGcibri0ZHkvlldikJ96UB44M9YdEI2u_M8SsWThLp9Wq_x7XlDkIpCXlZReb56Ykrt1Ju1uX2whXvPhgH6tyqU9vjjWxROb9KZD19fjGjltnNHL7k6CM0AWaCuab2qAaHWMTwATb1QDdbL5oymYejv_nZV-UxIpejHIHqZeQabbQ303wD2_NPG6kmR4JM5OJfgH71xUM9d5IbF8TLV06WczMb2hhfoxKYaL4ttXBnNnX9pgV8pB-gRqwB2h-lEDnyzQi17Kqo6-AFvcK0Gg8KPCkvuNlFDLDl50VTdFoUa-UBP3zfxQlZj-_tCmglnFq0oc3nibptm4c1pIY4mExnnfouVh320CGojh7yFtiKcXLYlpET7MWFw04Ue0tL1e-oXGM337yykpIa0AaeNjvGY-HRY4u7G00yDx2r_pV9MtMaFYtkPkaA9pH8PTlWHnCPPEvhb_e17uEGeV8vgmvUKB_ylDxIEK7Ef7dSq-01SKckzSTkimbtEuMNo5WEJZgSxkTCClxZqIAj792GHDhHx2Z1xSfe2o1hk079_Mcq-Oi5cs6N0uIOsXiAC2gxiDOtcnANCjtDjb8rDKvKPgdp6Tvre16cfRStDbbi_X5lXcK-UCixbDhOHNULDrsEcRTkeEQSDgkggPmmtYpWIjwGVC4InwuvoNlu_Ef59aFb-H0Km8QblWtdpK7Q2szCwWh8ZHxlWTofLJZ46OZ3bzJSKowmGEoYQJmnd7aSY8LVdpsfz80UCuE8x5GSbFdiNu3-sKWtJ0H9sCx7oEVk86EUFSB7XFoLOrnaXVai7A9VyRDULO7UX5TSKpgPx2TSuB4WvKSOK9cZLyYwtaR8CARanC1ncNu88BOM7Nal2ge1B3mxYV4oFP3YoVQMywZO_uNDcXyBkxTYB_FA8myqRiKlkW3IHtL-X_DUDJES-eJ2500JF0yxV4b4F8Wsd7xqprYbI-NKvs8VrAQHhDNKcWw4OP2FhiuxdoJne6Obm0UaZcMI7Nwc6PuO3TP_yomH8KN3eVJ2Sg9JOso6RgYl8Dy2UyBuaTUlH8bGd5js2eyyhIdIxE07wvgwxjjj8fG-yVJ-hLNf_y44Sdf7Tpy1DX6e_HnAm5CHqUJIydXFcbXwmNbKXbxcoz_CL9OeIDzHODY1dDq4oZwS0jJZAaqbq4-5U07vx5hKu6yljQcSl5XqhgJ-0bdZk3j9sXc8tFeKyhA626LPmPhHgc2ob_D36ZqRIBRaHrlebuYgoRVh-b-FC8M383cyZVyOxUDmZZ7wyoXZHFIP9Hstddao46sOh8gRFiCLxJjzpKtCp8-Mb8cUJIcGuSVQeZUq6zOoYvAEZUJukmSNJ-dHoz4cQSsaPET1UoQiiah-zMzuIQH1llJaihz0JxW9447wjRW5OOlMgSSZ_rLXFOwhe0A3G7V1Xr1Y233xL1eur9O7JIOhJazIy65Caz8ugT1C_ypL3FYwhec-sH2n3bVrjJtOx6kMeu3NV5W5o6AnwRl-XYQmqGXtaSP9pwk4R5YsWpMIMuKrJHnV6XDezhCbExinnXG2twvB0oDnx7cSb7BtzqJw-KBhge1vv08pJ2t7kF2QsOqFmAEpVcBM4hWIjzBQSZUPilOiJi1YfOInZimg-wT5VU0DhmN1T4dUBY6qfDB9FU7KUmrNvBQrlpF8q47JFFCwwDtDG4ibEPU4EjkwN9_o0I_2Ul3HxdP8pAXNokA6fyWVPvgXVdn_bjkRuyD30IMrk2uJHbNv3QCYSI46i0VZEtV-jdIWrthZQ2m0S6A0ej2l34XWRnuqjwA_j5VlOQO4TYM6ueL1PvqWHUykDvHIjotQpMPHDBbUJ5yk8vMAz8JjvHVz4VvGLxOX2i0h2Krvb6QiLSGorfUo1kdUR_lqGbAPhEKFofpW9y0cdQYBaRcTB7qbg6-V88Rvtg0ucNGrkuHhV-1UMTTyPrKCWP_x4ELqg2wEws1TsGgxW6lqkfj4rW_GZc1H6JLtYJT2H1LqdPbDM--0Olre_3QBnaD2aggjmwJPyCisxMb3UMjZwCYIxRp375s5YJopSPjo7BbzhTCECr8AhlVYgyvxBpScI_dVhDUYU-LOiybkT7tZM_REf6cP0DB2hLAt53GLqfaZyzg4UdEpg4YcesZKApbjWhjeXjSp_AmxVLCX0scevIwAgnwA4R7X-DBLVgdqvqsIO2-Q0K1KOT4UXfJKAnF2_1vMR6VilhR1dAHmY7eSisqF7LxNuQxslS3GorY3YA-Hkx1RCFiMe3occHeXvSROn7VGEKD-opw-wpHg7w8N8l6NfmwedjtQ7X6qLNrXOcGoIKVqmxKK77SbPLO4unk_BBl8ps9duUBbSVyAgFL86JBfs-HIzGA6fTfl1l29W5z-p0taGr5LPBPpSBRR0iWa9Q86_aZFclDh5wX3ueLzPC2lAnr2SL9KQnWKfoDMcmn0KtcvW-n1Cj0rnWasM1pDGUMlqDtjt7P8wEHZkI5eMX5RDoJyIW_s22-uyz3vy4QinFpa_7dwbVNDRyDdZoLbYYG7uhgUBFImnB9hkwM3VkReyrdjSyagYoFqrhC6HfWkdoX5iaQA-N-T5Wkw48DUoL7uVwQWAs8fqEYEtZLe3gAa-SkMWnFQv8BTqy-1QWiCZcPWnExOiAcelyWqXs6BJYdhj7LDXQXGgX_KUU1i8V_3fpWuVSDrHBZ4RMHHVFUBbmwlhG02fLr-q6TR6Ift9WDifsYJYGxHAzI3LIKTaVt_WhfNISkrffBBLibwKifCvl8px3r0JfJUIG33Gs4Ka-qHWgaNI5eWXbbZOmtG-2VmtXMKfUm2gUWcmvCdqyHA_vjKzz4G1H5UsK9vEV8chPZsH618xk6VyEnCYA0C_1mBjRF1dULUdKzGrtH2b8g1z0GGHM4GM8dkjGuRgq42kZQV98_WQEg-9SuEacPNCmXdhuyH2zoyRDef_fx4onEBOGCvOqY43z9OeURB1KrmYJzyPR8xMa9kZDr8qfa1jhlo2xX08AeFb19FSb2Icgl6kcEJDv63C3c0ivSbaYC_Zx8UBiyF5en8NYS5PTruWoR7W4kZYLVsshrk7GtqPH4PGJKceKp58wL3fcV5lcQFqGq40yRkxJmUamDkssELN7oztZ1AoW6A38Yml1DhRvHvi3EmMkWzs4XWeDZLBzKigJNXO-6RYD_84jS-zSOEDNSdIKzWo5BQXDibkGJ8_nTSlit7IvYkvQLuL8pH40Y2er-nIL9xGa1MmoGh6QFcWF_9p7avsXzSD8ADMHEIxNESfQ3PfE0TaWO8kte-TW5WfERZdbmSoED-p6EG4vrIrlU3aYWK5i91Jgd_TawoSW-5TZY-HbI2AljghIUaDuh6bso689-Nv9x6I2-o0fh-APlVKJnwuN0-M3SXSgCfkpHR6uaSRqJlseTCmbihvENKyI9G03tLnkB67xYe_Xbc47X4WzFLrlEBrHtlbt1JO9f5c8JXTLv8Rd6rrDnMTuGfjt5O91UewaQKxcmpxouuLOVxwtS_EoQ92x3p_VDK_m9ZpI23qxj541Edl-QYCUCA_eTKvqX09UcM_qpbL7Whno4Yk_vs2Byvf3MOQq1QMmULzXM10E8ZjVJQT8ypgcyEXAyYUsjYT0s1-azyXtwwB3Ox5VMDOFWTUnKlSNeTdCY26_mfpzH4FMX6jZ0d0Io94AR4sZC5mf0iyUIr_fFPtMC1OrKv4bAwOqP1ux22qtCaF9mj8Jc7XyDwXFg60WXGb6SjIUJTbQ6vblM5wuvss_4blEXarESfd3s7wx8gZOI54DAfPW95ezARv0LtcUj_U-z6x6PUpUUAFAY-SuhyGiplUIumxg2N_PJGiG1EyMlxrpAbs3AZm3w8UmcgMBbGz5oeIaD82O3_OSwj84nlcV5ilDvhObqfS1HO5o7DA171h5Ps8Bki92rJRwztHl5H2j4lAFw-ZMoM9mhTTjKIMacQYWAKjBxFaBTzKyaqVT7jgfibgQ-GcfZZoX-8EJC2pzhDOw7jGhi4b-39ruZClHp8WeCMK5Dphjqt8fvC6ObLIzHUrFrADmCh_xPxnSQ6htFQLgnAyxIRxU9DWmUQbKFCJjuOKZSnpJ3LpOqoo-spSQDx-5mAls8g9amcAt6Gl2G1N2uUoiCJtZFzkycJd9QRsblWqGjKTGrWBWgmijQDqa-1oMyeePqXwGKUBNTAio_KIyLhNkuM23O6Ec_5x5WtolAfHeu_XeaQJXJlJBl7lsOykComfU4pjarlkghnVi13sh2efZq4I5ohRXAXBTlR36tLlWPGWKNK3r9ZrdKWhqhWLSCnda7UlaM81IQzVPfTYQ5keC9gmxUEtz2c3of9CA5MvYWDTBHYNxl1GdgZ2-WmTVyJdBZiA5ERAPt7S5aQyxbmaYnZwTH4xji5Y0je3HboObLtg4kUW47iM_i-7zigrSM1_ciDMOz83K8AWN6I2RJ0y5XDI9mtdl1FCcntOCu0XjMW2OmFhroNH2Irg8uYO47bUOKvVWqKprIhqe3hYhfb47T5MWmjodYWAG5jmSeEXgG03ErjwzsDBhx2HWkvyjQUuFNsdDZ8cJBRsCBarOS1mhpYVF9FuVKAVpjvX0QcEp3Pcx9ZbpCI7cB6bmjj9X3BUs8eUc8cnGXvrQWvj133z41VZL5xMTgR_qYdW8ladpAmAyABUhN0YXQVdw84V8gPzs5nPIDEwUycg4qZw5pulUzHbf9KiEHZoXDvUSfyw0z0EfTBwpfUt0czXtqCvE4d0fUQjF1gG4HuETh9yn0R1ONgkfmCRQyBEkrhno-kxLbAzV6FIgM3C70nBiQNQu_Tx_BO4JfAxLLDc7w19sg3DW_BPw18i1pRaOd9Vmwop4EFnf9CBCYWWJUoZrQ9naWX1AVo-bKT4x288qjgDZQPNr0AvLl6n8d_x8zuACt7g2qg46ZNSDddWDCxzYY2QLN7eCUCe_4EKZ4Khyr_vVn917bShl5tlsvVvUbJ6QflGtJ05W31ramnCh7LD5G1kPiCHqIBme6N11UCGcyE8liwG3EWA6sXk_a_6IyRvjxsNbosJwAmddHJ0diGNLpnd8WZQAXovNs1jeRUMWvdgdmsG6oPrbYnLGPawFQKJP-JGCJGSYbAuLRcqDgZgwzznvfOGIJjsiRl4MfUsshtztcYY76AaXpsI3iDbP30PX2AIkc9arJrZN8DcukMXSS6Y7QMp6_3u8TGOL9XDfbDVVBCg2F7JSgZ0LuisyVNw4Fd2FyGn3Vj0WkVrviTGmAbFJxp847vjxaI6K1ZEYd7-WE9frfT1ifv_yAOzJNvb8ZS0JZTS_bkGS6aaRU4ZKiAqlTDF_DhrC93-3pJVcty8jQCaecQhZPDezU0fh_dbMhSsG8QGnPFl_9_kcKAKlrs3be5Bucz_lgMGSnx2b5pbQY--R-iZkGjb-zqxI67ph80F56uojUCc6tTfjbeohCC0bemkBQZFbt2Lj5u3_PCNZg1MivfT89ea5vGFqIorheP3ayoczi5i6OT-Lor9Ds4m9NF_DzKfyLW7jDPKkQbvVveXKHHrdl-NmFdA2NuUmbUf4uBAkUh9eCdDPGd2EhtXN1eHUEzu0tQ7HznlFRQexoia8xvy1Zidd9Ajk06lw5RWplqkXzSZRjsu0zEwbZKNNW-rAojZcFTZQeukQW8Nzjsh18ZpfP2EqaGaLe9F2UwFTQP5pYwPY6pIJmSeQs8B4jYUfoGeB7twlOh1fqLwK8jMxmtwID5wTvz3vnOzasX7h0lqTxFvT6eodl3EEBAmyl4npjxrq7b6mEX6TTtLG1goABpn7sGMDrMO8RG7BhXAMVTiBtyhD1eP8A_4NME-iszaYwf_2spfBu5rNIx37fLGY038P81O3ZJ376EpsHBvIi3nzXUIknyF0y6p4515IGRhKhmLhFhtUF8T13MSi3S4DrNzN4W7bNp6Y7BsGExNNjwclYaOP4tkBqGM2c1AaoDyZpm6SYiEA4TFDVRG4_J3hraxHAnoChLQ96tNjfwc2kin8QpQqvf7YYJH1u_Tdax_W1JZ0WOTZ9IDL42Gnv6VG4ZsjM4VXHOqt1E45ZEznE1kSffWVK4cXHfWZzHmP-h3pKl0XOZ2OEfqcgBJk43O1ZIqs4Gxumok44HFffQlAEPXhyvBohybSjqT9J6IHc_jepaeXghXSi7qe4-cgRll-spe9-MhwqnPcD5vsouGdDzHA67ExPvjg475st6Dd1CFGFZnJKOXCzPaAbuDny__yoLYOZLfA3ZDWrIyAcwCtTz58fvL-_GFBQsFc4iNeq074u-MwpPqlULFejrt3ItWUUF18nDsAPTuomZG8gh31WmBfAKUjSwfoXjIzFNBI2BeYvNUfV6fI6zi56VLd4v4kqrNBPiz78LPDgMGUqem4NlbiU8batlg2iVr9g41bu5mD_Q9BdfQWEw0Rpb3T8SdQ1SqCrJatVJcLKuYAAbhDTyn47j-JrjU4btYiD7QgslyYz4AjlyVAx4sXOzjKJXAZYNf9LyIJ_dFHpcka0Le8a6OhG2Q0_Y16E2MhtNNH9-tyNIvaC0h4ppDrA049yVMvs1y6hdVzjVGVB1qwkRHf8-EavF3awT_xeJHvmJzGoELW0_VGxUO-f35yynz06mk71_3QP2r8nVCNYyj9KkUANYdjokbtzyFdcoYRwqnaWzVRt1Q8AlFXdLmuQmKy9RPMVoP0IPuLsfaWn4iGk5TT7qukp6VQSHY79kzt1FuPyaNJJoLQDANQpllMzFvYEb85vw_A_xPHuK0nn6VtUBUrIhOFu07K9isTdcC3StoRC-tPck-a5AVyQ9b1C_P7xYMQZ_nHIF2rBZ0BwbXOiNchuuYHVXgGev3tZaTS74HZmNyR9dOyez5kMh-GN0MWS7dxFxyk_TcDD6OEHhEJIfQUzbwGavJM-o4_qqr-mq3OSCDHFXjhyGYKoBdYczCqe0P2Qzgdts1kO9cSgpw3SdgJWOR1pcn6GZBQea5PMMirZLNG9X2EzMz3KsRc3QZMgAoIQd-EMI7EIa4UVWvD4go5fxkasa7e5tbf4zZ0v8rLnhsc-8ED8jz2DW5URO51u-fKtqjp2KvG6htc4jU1lkg04Rxg2o8EBmRE8om0lgpZarQKc1QqTCp5UQAbrr5G-dVkUS_WziQLvIPZ-YBmrPx6nHlmwWW7wnqd6wa_OO3DwaUXWlTVP7AQKQKZCp2uSzZpQmYx0m0KJqM1BMe1bzNQGBp4G0DtJ_rOu2MqE53ZZ9bXRg7KMQK-M3UfYXtDOs6Vursl4iqe3mvj_l7E8_2F729Gi9nBbKhj2vFAmnC-WJbeuz19IiCnw844-XqDfwz5uvtRk6dSJxtaE_pxStwf_AmVmcEMwFlYyjRVTdj89b83V9PF5pU6bzvKo9Kr0ntGXG3ZronWP9Ud-LQxlh3CQZLD92kzNGytjUVbdC94u4HiuvV-nTXG7Up5_SktVC8j0rQ41jJSj1fot1VV8jcNm7zdBylqp6qkUiGAH1r-gz-CUvS01sXKDz0Xl30PGqPDfg_4PG3T5cy0ZKyAdGejfayMR02GIu5ny4-FEQ2E1mbwJijOQ-pt1BfdJzm15mlaAm7P_1lcSqi8rceBa7KPYMn2ONMRd7jzDjm7ZoC8RzKYkfJl1cGm2onLk8wnDzJsGgEAZ1_EpLzY3WadAcRZB_QXoaYczKgRtBOc41SlwvGxRsTm-x6lnUno9gL4ePtc5yBRGzq5k6nA7iVKjlzZcvyec_9HMhMJBgPKblWfbF-7oARzS-Bw7BOsm9V9LrlbtAA_OEJ7uLxoLnQhdViC1r0zFnRyZ3fvZd6IVWyX8y80S16-vsTBix7NMo5F2kfk5a2aujnasl72HL48p9SkXkje64aog0qK0R_tKOc0I6nY26uyYj9Hic7D0ws-XAeM6EiQu5D6byItxsdPXOaKC5spHTQ1nR7u780uxoHIpaPHu2sWOCUxudjgw7iHPEykarM7HjJONPdhfIwWZf2lNncsxn6oH9a-1Zj4YuSIH72PCu4-1Z7ddcZAhlxYhkkg4cAkF-tcZkbR_vnungSyd8Qju5ZOZsz2PwAAHZSC7SIcARcBnE_29aqN1Jh-xb5DGXuWZ8UaeRzF9G5rK8BpYQtcnYV4QARiSpPGLsBa_a5OXEmy5K37xU2Fxasb0r0xNKabECSVfGKqRiEv2aU3W5KG7FTFIZ01KGONnPKQd0TP4G8RWKyHDGRj5HQM-rRmSoWxYzoxSoz94OboBgmFmyMngtKmFRNsJ0Y_gcyhiRTQgljpAJrkBNQ_WyO7Uhnclferv18JS9ztkT8S7yptebO48_nvBPGYFLiPfPkFWf1VgWtViG250zeTRo-lHEJsfNVFNnjfJ9PUPg8zsCxpZahrCbPmiLQQ0phTfOIjrAPmWd_Lik33WmNwxRe-1H090dy6c-A9J9of7SFgFP88pAd_7ct_XAaFSu_G7m9wAfN2lO08LAFR7MokjinXlYOUTWC3Bb48oEOYpdKURihYnLRR6D-3fd3eh2wO1knz7T0pWFnvF5Sp5C_eTqOxzf-z3JSARhK6Ir7vzjQfACrlrL5UG9EacCQcdYnrmF7-LUaV5f7isNcUSA4Q1R9SahKMtMkekgthXuiOj9sidRHVIkU2934PEKsACSrWrZxxxCZhCiMVOgNXbtinb6HKoH3OOKP_8tMTFytSTJ1Yr77fpqiBMNLUuEflj3yCPD8UomXir4AXfQWmw9cAahCFBQUn-6Bwmkgj2tK84dBgn1zy-eZNplbERZJJWVSIRGi1wJBOSKoVCqbxTNeEpZ2AmgO21B0x5rj8ZYzVrHFvXMhEYq-ihpSBhS-mrVLVBJslinLawqhTHArxJsftsuPlF_aRjNU7Khc0KQpRsrAWzc42rgqJn40rHfZ78CVS_5PyCnSNQ9h5wEiqtGaEeL5vM9RmLJ4oJ9g0wUXYbwYYs6Cg6_u_njXFTVk0mxcTlegUoV3UXZmXAJ6HRJN3AfViifmrePxV4XvfN9D4KKI72zDRyVHFK-8OwUZFCKo8DwXjiWnhC9PCwSh66kpvmVABiyQLBqGSzN7TUmMAVpSVxcxLCp3EPu5TI3ps7R-WkOx0FCdxUX8qqtWtgtfds8Dbwjav-56LcQZhmfePwIs7bt3efFrr9vOazPmi3gySMlCCgYOE6Jie7EbT7EjAGbnGm122VVHQ4pGqejAVpIYjHlidYUd1L8uVdNb-chUawyC9U-U8Pdt3GBWAyhRnLnC4BU8okPIhmAUYSvNkBEoCXCtVxZqFOF8-r0EpmMcDdGhsiaBTXkE-TOPNx2BLnI3vrLzKT5_b4UFIH7TdtPc9GIfz-RHXak1rQTzsvxtcXM5hv7eIubWunBZUVj4NN1ApdC_J-lX7M1YctZJ5NMTEPV4H2cUZYrW_Ja6Ttc2W0jL3m94xpIcAOUp6cx8Eg_ZploW6euaDK5JjBiz-yQKZ2EgXLfoIf0XPUr4GsiNyCgak_tO0p44ot56B52Aa0r844d5RiwkPa4XN9XG9jTFLArOeGsH2fT1z6uQK7_Zfqf0-2aAeENIYHtVq8mNUukgcLLSnom3BNjSxkr-DS9Swc3FSQscxmPc-7Trwjp5M92lbxu1MflmcxussNGlwbSUfWiLiso-CI37DVYxx6AbaTAk_mBsQnzJK1w2ktnHpqcOnhsGGcS9n2JGVkY4ZJovZImHkIhYO65no_H3bh_ahw4EpFRwnrgwiuB1My2JXYhB0MRRHuXeiK5RLVnk0arXCuc6plZMVXawZ9WRQS469R-NVbyhj-g-ev-RbDTg1Gvjpzjx_gOZ3GNfEHxRGN1RgWTPSN_a4zDjBE_sLV8W3VNkoUo8QPIdVbVHHV7REmsUp1BpFYsSZbDYCwkddLHmtwr4ptuEJDGboiw9fl6a6556W3Cufb47GAwRWf__eO2WdEVa4HscjzcZuHXKzOeSEOyNk79SLIg8HngAEFpv9gQmrO9FWlPVIActiHo9YLjRipfLq8xEwnDV_KTvDGBpPlIYCVjxcJDphL1pIWv4f6IbOwLbn-353krpsbLwS1bwfzm4w7qN1A0gkc1Pjx5UrgcdpoxnSAdRnXshu7Q7HflBQfVYoV97kkOLbvbnTjTldDbiYsH6AN2GpEQe5xQcIqLe2Zh_vrPc-nQXDvjf3ImPZkw8eu8iNjeBrnT2OsNBqEFE_i-n-E5XlqXS21tdce8hqLZ4eo6_ghqKV5EQCywblt9SfEQfeCMBF_xIKQmvBWDFukmJ9T1TH-ptxmf_oFLZhrwvs4D3UwKIOhetgtw1rnmeMLt-4iIZlzAo5WyZwU3QlStHcq7ifuu-0bw9J_TsoR2uXcnKyzlsD5U6BPGN_VBrlFFjqsRwXsEfBry3vSS-Q3zl_HtdCa3l5At_jddLKNPx2gbMaXLMoAnrMdt5yVmKCGl665RDznuJp3UuPGieV217iLB2Cx0EqV8odkVsbwJvzFNOShbzo_thr6ySt05lCKmosrcvEnm2Buqc8xrAj3KTXR0VPgM2SYNTHMDKA9N5L3btVJIelrIRrjQbSnJpHSznDBrRhM5l5zZl13Clfo3nYJF-QsxkdCqQZYdF1jN9aXx5qGVyz6hgXzAF2o_G7U7qUTiFeQ5YPFWac_29yaOF1xO0a_wrLyJfHg82dvuhlvDu28QZV0UiQyP17sDIWRupnof0x4OUsAhIhL9KamZQ8IqpqoTA5Ap5RpGvQ30LXm26CtFfjQe5kum1LZ-MbtVD8RpbeeikgmqhA5klaqR3BCNmIpmyOXOoB4RVP9UVugX6h5UQOj-oklnmq6PrFHD-UQta5g87ntoukTNcrsIdndX5cUohVn0qWlsfrEL6tKCTkUw5kTA6w9GjfclctNUdEdbkiA-XaUACHQaqhJkHkW-Q0_H1IcIeMe8E3v1iYLVPPMNKD4LCuhuBy9oXyaR1Ph72TwoFNhaPzdGrtDFbaBzYhx_y1dSik4yi5PNVrWrJ1HsYT8EZJ8d32eQVGYUsycL4qS_DWUQNrxLI1m_NyZKOkPbX4FXubei7rt2zXENqkYXK2O7k5oijJBPBJV1QF07RTQ5PGj8zTwyvT3bfNsdsmkcZzS4fHXq71UOHC5DelVcM8I1ytScWiN5CW4C7lt8ZLgf0tdl6_JULmJ94etLerOy0LUPe6khSR8WqgY1TQ7p9bWYo2rTSEgx_Lyc4DeH4LgSLEtVB_JCWneCqtp1mA6hWPp0-bLyL1hjCaNDU3XsyGEyQj3a88w7aKViOjIXwuugdU7r6BSF21ffICBbKvBYLT07s_ifxYIXFWRfGsbKFzwSYf-ZtpG6cEYgZEHTUJFFb3_B-HtSvz6kEnILa6aw51DQHlN6uMUvDthw61APCZzn-btHE_9vZG_6p_3frsL32Vkyz4SbdSRODe7RElVTIa3Kn2-ipyq0QcAF_o6cP6TIo-aMqp6B3h9TMxpf6SnDfjT5dHT7pAkXlFZHZfjW4YAJF3mcHZ24bcCssFhpO0NNdWaws4ELewmYqGzm65ZAP5xgJzucqom5J9RoNGSp_xXxm-_Un0vUJZmBMS5BSAwP4zLuorWMwtU_IXRdRV235vKKihqrVFz4KZqUXnqWx-oq8XErUJv2Dfhg-xOR7go9VQwlN0W-HkHKqOUr4Qv4BOPvJf_BjoI-NlRn7QH902I3I5BGViodqMavPrfd0xm2hWHrarCxWkR_7r-leaRBWPP9bKob4IZDCrQ8e4Chf92OpfU7ieNGaIH9RTngo-iVrnkuVVVd-7N1tkDQuFoDRyc5IVpB_PlLxrwCp7uiC6fc_hQGCsd28q17xDsndjDN4O1e47ppAX2iwg4cdxNcWRf3oNursj4eU1U1KffXtYo6-abwHk9BEAbRIC5DqFijQtrSsWbPJt2cWietN6dsa5YKbcu4nOV-PhlNkow8I8Vtlq4Dnfzgvj5NbODD03RMdU7NpOEhqccQO3Ym8vs8UQhOL1yyzM-w723wd2gAkXLIy_roxqOu1N5lKxi3u36keJrbu_FZlce3yrZ3PQq1grVL1Cn2NDv7GGmUtzf6QnYCJpac1Ynl2b80D3QUBTjkcXyDMBR_C2nKTMYRo7Mq62iNtwVd1Q3kokS38ERojXlwPb7C0-DLyeC0WfEquDNymzhspbB_LlKwQFjinrUlnd9DQkIFR_xfX5XvkyS32I5RddDYuiHiO50zCoDTvow_icUYXhaxPfDqlcXFWNrMymlWrogc3Tk4qoqYdIZxQInUX2RZAIsC5W-ZcP8aOPYAukVTF-EoyH8yv5Ue4GIK1jVJ-IbxZK2mB8io4KwTKFE61g-Cv3z7_l_I6224P8o3N6dm7qnDt6Dj6-v66oDe8MKQPN3dbUcOnfxeL42CgJjVaYQsnUIwjIgrcxzjTVALqcZvA0MhlHBgqqQOj9wkpYL4YYHjOCNIJns8fBCRb46gYpON8IYV1m_YoVpJDTbQsB9SewWvLws1B_92LZQ_9PDxnMSg3cvYVvjx2W3CL2dKVUZmvlz_CdaRXwCHetyU3ALMwRLT5-UylT1cMz18aI-RJzYJO7q25FefRH66KvUOhPW8UuGEPIRK9VfVw__o10ivCTqoII43p48h5DuJU4clj97nSZmjrCsCI-rhy17VI3mtD5o7EggRCCKl56z80z1BXHYQ5TPs4juDYQ_18-rxPydCjbL_rKbl1gIwCEBW8uLBsfkvYDsQGg4vvx2tzCjNTLQqw13BHOnPryN5kF0yZutmTo3uK8lBG-Zh6ufVDmQxl4lzC82zCx6iiSuSJ8ob-8gyuPE7dZv8DN92-gPpFSSZnkn_Ulma_zPpkSvXhPC-UwgYLE2Ds7ZSzRshU11K7Fc3v8cPgTDpgps1kTUMfOWYzUz4udEL5SCf7KQuZbZz5V5OCscMj6OjHFW88M8V_tBdPGzZd54-4YQJSrbu8TvMSWV5sf7_jgTTBQ5MYqvGyEFXrFwj2QTy73DT32mvZa5CiT9TqK83ShQ3JNKKqfkT8h79tz2qwHrkzMSAmxxWE1sTkMl9EgQx70q2c62lMFtFvcN-dheMKWTcQKNxEm8Z8uMFmylX3H8OQDUJpE_8HYNkfoHKs_wbcCo1R3jNX6Osks13TPPeJO_dsFQskM0D2nyGFNAco-d_7FmuululYzwyHo1dVtcUqBCj5nU4StSIvxRSu4mF89zpep35HrVcj5JUddCdjNRk58ocIOA3zOBJRn9AWZwGaD6AsQ_3ATRX9--2Kbty2nz3CBBBsEQgjbBKIQdmXT0Oi3T4M0H7Dw2Lu-j9AzeChcVCePPzWPJ9PAXGZJElQizJ7VNTQGfAp18oDTVGgwrVZV9Jcxn8f0ItwmeBJDbOwyHny7211tW1s0i-GUUIaKxXcqCoe9ggmCuzbwIRdjf0vdC-4RH7L0kHgMx3PfXmjQJIWYR6NysutcxgYJLPA1D-iOthxwdZ2ukwmY7domKE5TeKtzEgk2qPLZhpPet08DYSsIjMNZc9Rt_4ysgmOYD-k7n6MH3L7---GWQtnusB0u-upJm9qz9324yqvpfQjnvq32KvSqqlzb6rIWPuEF-ICVzqpBuRB2nlvUgfQuz7aTreNw2kKaB-q6P-Rckhy82QTtmFjSgoOp0l1qAgSa4zi5Bd4ZXAL8xfv8TT91P391yn8fr_139APVjWoNhbQ0hi71vxiIInbSfS4uUMeDfReqfeTQtwIGtCLa6YfVU-lK_Yw0qEBZp1I5Ikpc_TWWJOjGZJdd3Dz1MPqSIZXMNb86ZZlct335GU6icPSHhRYYmZ5tLXRev7ZM1aV3bzQX4OFUhL0NJEhbGpsGoVrbfvrUKjK11sSHJY7X8BqWdW6uNiZrILODVQYlJHOyzTs1yJ4VLbinSVxA4eSEduFVJGKLbzHWBfGOTtRbk2-l_z7Y1h6asylOl22WUj0bCP0Od4zLPqcZpmEzK8THoDP54ID0S8gRL55zFCPqGz6D98ctPsRU7qSHx9ZMI6rsw-DxKAPEWOJYC2gBldTPON9BS1F1iWzjb4Izr7yLMCtyquOGyAh5ZbPaZGfDycapxKazd1TXno5a5Y3LqpTNuFvIYcc47-w6Ox0";if(!e)return null;if(zr&&zr.sealed===e)return zr;let t=null;try{t=Eo.parse(JSON.parse(_o(e,Vh)))}catch{t=null}return zr={sealed:e,bundle:t},zr}function dT(){let e=Zh();if(!e?.bundle)return null;if(e.runtime===void 0){let t=Date.now();try{e.runtime=To(e.bundle,{signedAt:t,fetchedAt:t})}catch{e.runtime=null}}return e.runtime}function fT(){let e=Zh();return e?.bundle?(e.keys??=new Set(e.bundle.filters.map(t=>Re(t.slug))),e.keys):null}function pT(e,t=!1){if(t||!e||e.length===0){let n=fT();return n?new Set(n):null}return new Set(e.map(n=>uT.test(n)?n:Re(n)))}var Vh,uT,zr,Kh=g(()=>{"use strict";Gc();pn();$o();Vh="tokmizer-default-rules-v1",uT=/^[0-9a-f]{16}$/,zr=null});import ip from"node:readline/promises";import{stdin as Va,stdout as we}from"node:process";import px from"node:os";import{join as mx}from"node:path";var he={welcome:"Link your Tokmizer account.",needToken:"Tokmizer already works on this device. Linking attaches it to your account.",getToken:"Sign in at tokmizer.com, then grab your key from your dashboard.",askToken:"Paste your dashboard key, then press Enter:",activating:"Linking...",activated:e=>"Linked.",failed:e=>`Activation failed: ${e}`,suspended:e=>`Your token is suspended. ${e}`,revoked:"Your token has been revoked. Contact support at tokmizer.com/contact",rotated:"Token rotated. Paste your new token from tokmizer.com/dashboard/token",offline:"Network required. Tokmizer needs an internet connection.",deviceCap:"Device limit reached. Manage devices at tokmizer.com/dashboard/devices"};function Co(e,t,n=null){return e===null?t!==null?` \u26A0 engine offline \u2014 compression continues on ${t} cached rules (details: tkr doctor)
88
+ `:n!==null&&n>0?` \u26A0 engine offline \u2014 compression continues on ${n} built-in rules (details: tkr doctor)
32
89
  `:` \u26A0 optimizer engine offline \u2014 run: tkr doctor
33
- `:t===0?e!==null&&e>0?"":` \u26A0 optimizer engine reconnecting \u2014 savings resume shortly (details: tkr doctor)
34
- `:""}vt();He();fe();Be();I();import{readFile as xl,writeFile as jo,mkdir as Sl}from"node:fs/promises";Be();fe();He();import{createPublicKey as Sc,verify as Ec}from"node:crypto";function Tc(t,e){let r=Tt();if(!r||!r.includes("BEGIN PUBLIC KEY"))throw new Error("Tokmizer plugin: no valid signing public key. Set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM or rebuild plugin against a prod key.");let n=Sc({key:r,format:"pem"});try{let s=Buffer.from(e,"base64url");return Ec(null,Buffer.from(t,"utf8"),n,s)}catch{return!1}}var Ac=/^[a-z0-9][a-z0-9-]*$/;async function Rs(t){let e=await T();if(!e)throw new Error("Plugin not activated.");let r=await X(),n=await j("GET","/api/v1/skills/bundle",void 0,{baseUrl:t,bearer:e.jwt,signingSecret:e.signingSecret,fingerprint:r.fingerprint,installId:r.installId,timeoutMs:8e3});if(!n.ok)throw new Error(`bundle fetch failed ${n.status}`);let s=await Ee(n),o=[];for(let i of s.bundles){if(!Ac.test(i.slug))throw new Error(`invalid bundle slug ${i.slug}`);let a=[...i.fragments].sort((c,u)=>c.position-u.position);for(let c of a)if(!Tc(c.body,c.hash))throw new Error(`fragment signature mismatch on ${i.slug}[${c.position}]`);o.push({slug:i.slug,version:i.version,body:a.map(c=>c.body).join(`
90
+ `:e===0?t!==null&&t>0||n!==null&&n>0?"":` \u26A0 optimizer engine reconnecting \u2014 savings resume shortly (details: tkr doctor)
91
+ `:""}pn();Nt();Ge();Ft();z();import{readFile as D0,writeFile as qd,mkdir as M0}from"node:fs/promises";Ft();Ge();Nt();Ke();import{createPublicKey as Uk,verify as Bk}from"node:crypto";function Jk(e,t){let n=Wn();if(!n||!n.includes("BEGIN PUBLIC KEY"))throw new Error("Tokmizer plugin: no valid signing public key. Set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM or rebuild plugin against a prod key.");let r=Uk({key:n,format:"pem"});try{let s=Buffer.from(t,"base64url");return Bk(null,Buffer.from(e,"utf8"),r,s)}catch{return!1}}var Vk=/^[a-z0-9][a-z0-9-]*$/;async function Il(e){Mt();let t=await N();if(!t)throw new Error("Plugin not activated.");let n=await Se(),r=await le("GET","/api/v1/skills/bundle",void 0,{baseUrl:e,bearer:t.jwt,signingSecret:t.signingSecret,fingerprint:n.fingerprint,installId:n.installId,timeoutMs:8e3});if(!r.ok)throw new Error(`bundle fetch failed ${r.status}`);let s=await ut(r),o=[];for(let i of s.bundles){if(!Vk.test(i.slug))throw new Error(`invalid bundle slug ${i.slug}`);let a=[...i.fragments].sort((c,l)=>c.position-l.position);for(let c of a)if(!Jk(c.body,c.hash))throw new Error(`fragment signature mismatch on ${i.slug}[${c.position}]`);o.push({slug:i.slug,version:i.version,body:a.map(c=>c.body).join(`
35
92
 
36
- `)})}return o}I();import{chmod as qr,mkdir as or,readFile as At,writeFile as ir,stat as Xr,readdir as Rc,rm as $s}from"node:fs/promises";var Ps="managed-by: tokmizer",Wr=["tkr","tkr-gain","tkr-status","tkr-link","tkr-unlink","tkr-compression","tkr-telemetry","tkr-update","tkr-yolo"],Cc=["power","tkr-reducer"];async function Os(){try{let t=JSON.parse(await At(er(),"utf8"));return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}async function Is(t){try{await or(y(),{recursive:!0}),await ir(er(),JSON.stringify(t),{mode:384})}catch{}}var $c=3600*1e3,Cs=10080*60*1e3;function Ds(){let t=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(t)&&t>0?Math.min(t,Cs):Cs}async function Ns(t){try{let e=await Xr(ve(t)),r=Date.now()-e.mtimeMs;return r<$c&&r<=Ds()}catch{return!1}}async function Ms(t,e){await or(xt(),{recursive:!0}),await ir(ve(t),e,{mode:384}),await qr(ve(t),384)}async function Rt(t){let e=new Set(t),r;try{r=await Rc(xt())}catch{return}for(let n of r){if(!n.endsWith(".md"))continue;let s=n.slice(0,-3);if(!e.has(s))try{await $s(ve(s))}catch{}}}async function Ls(t,e){await or(tr(),{recursive:!0});try{if(!(await At(_e(t),"utf8")).includes(Ps))return}catch{}await ir(_e(t),e,{mode:384}),await qr(_e(t),384);let r=await Os();r.includes(t)||await Is([...r,t])}async function Ct(t){let e=new Set([...t,...Wr]),r=await Os(),n=new Set([...r,...Cc]);for(let s of n)if(!e.has(s))try{if(!(await At(_e(s),"utf8")).includes(Ps))continue;await $s(_e(s))}catch{}await Is(r.filter(s=>e.has(s)))}async function Fs(){let t=0;for(let e of Wr)await Qr(e)&&t++;return{installed:t,total:Wr.length}}async function Qr(t){try{return await Xr(_e(t)),!0}catch{return!1}}async function en(t){try{await or(y(),{recursive:!0}),await ir(_t(),JSON.stringify({at:Date.now(),error:t}),{mode:384}),await qr(_t(),384)}catch{}}async function ar(){try{return JSON.parse(await At(_t(),"utf8"))}catch{return null}}async function cr(t){try{let e=await Xr(ve(t));return Date.now()-e.mtimeMs>Ds()?null:await At(ve(t),"utf8")}catch{return null}}import{chmod as qf,mkdir as Xf,readFile as Mc,writeFile as Qf,stat as Zs,readdir as Lc,rm as Us,rename as em}from"node:fs/promises";I();import{join as Fc}from"node:path";I();import{randomUUID as Pc}from"node:crypto";import{readFileSync as Oc}from"node:fs";import{mkdir as Ic,rename as Dc,rm as js,writeFile as Nc}from"node:fs/promises";import{join as zs}from"node:path";function ut(){try{return Oc(zs(y(),"yolo-mode"),"utf8")==="on"}catch{return!1}}async function Ve(t){let e=y(),r=zs(e,"yolo-mode");if(!t){await js(r,{force:!0});return}await Ic(e,{recursive:!0,mode:448});let n=`${r}.tmp-${process.pid}-${Pc()}`;try{await Nc(n,"on",{mode:384,flag:"wx"}),await Dc(n,r)}finally{await js(n,{force:!0})}}var Hs=10080*60*1e3,jc=100*1024*1024,sm=2*1024*1024,zc=/^[0-9a-f]{8,64}$/i;function tn(t,e,r=process.env){let n=Number(r[t]);return Number.isFinite(n)&&n>0?n:e}async function Bs(t){if(!t)return{stderr:`usage: tkr restore <hash>
37
- `,code:1};let e=await Uc(t);return e==null?{stderr:`tkr restore: no cached content for ${t}
38
- `,code:1,restoredTokens:0}:{stdout:e,code:0,restoredTokens:Math.round(Buffer.byteLength(e,"utf8")/4)}}async function Uc(t){if(!zc.test(t))return null;try{let e=await Zs(Qt(t));return Date.now()-e.mtimeMs>tn("TOKMIZER_CCR_MAX_AGE_MS",Hs)?null:await Mc(Qt(t),"utf8")}catch{return null}}async function Vs(){let t;try{t=await Lc(St())}catch{return}let e=tn("TOKMIZER_CCR_MAX_AGE_MS",Hs),r=tn("TOKMIZER_CCR_DIR_CAP_BYTES",jc),n=Date.now(),s=[];for(let i of t){let a=Fc(St(),i);try{let c=await Zs(a);n-c.mtimeMs>e?await Us(a):s.push({path:a,mtimeMs:c.mtimeMs,size:c.size})}catch{}}let o=s.reduce((i,a)=>i+a.size,0);if(!(o<=r)){s.sort((i,a)=>i.mtimeMs-a.mtimeMs);for(let i of s){if(o<=r)break;try{await Us(i.path),o-=i.size}catch{}}}}fe();He();Be();Pt();async function to(t,e){let r=await T();if(!r)throw new Error("Not activated. Run: tkr link");if(r.linked===!1){if(t==="GET")return{plan:r.plan,settings:await z()};let a=await Qs(e);return{plan:r.plan,settings:a}}let n=process.env.TOKMIZER_BASE_URL??"https://tokmizer.com",s=await X(),o=await j(t,"/api/v1/settings",e,{baseUrl:n,bearer:r.jwt,signingSecret:r.signingSecret,fingerprint:s.fingerprint,installId:s.installId,timeoutMs:8e3});if(!o.ok)throw new Error(`Settings ${t} failed: ${o.status}`);let i=await Ee(o);return await nn(i.settings),i}async function Ke(){return to("GET")}async function Te(t){return to("PATCH",t)}var Kc=new Set(["__proto__","constructor","prototype"]);function Gc(t,e,r){let n=e.split(".");if(n.some(o=>Kc.has(o)))throw new Error(`invalid settings key: ${e}`);let s=t;for(let o=0;o<n.length-1;o++){let i=n[o];(typeof s[i]!="object"||s[i]===null)&&(s[i]={}),s=s[i]}s[n[n.length-1]]=r}function Jc(t){if(t==="true")return!0;if(t==="false")return!1;if(/^-?\d+$/.test(t))return Number.parseInt(t,10);if(t.startsWith("[")||t.startsWith("{"))try{return JSON.parse(t)}catch{}return t}function ro(t,e){let r=Jc(e),n={};return Gc(n,t,r),n}ct();var Lo="-command",Fo=3;async function Ln(){try{let{connectDaemon:t}=await Promise.resolve().then(()=>(mt(),ft)),e=await t();try{await e.reload()}finally{e.close()}}catch{}}async function Fn(t,e){if(!(!e&&await Ns("power"))){try{let r=await Rs(t),n=[],s=[];for(let o of r)if(o.slug.endsWith(Lo)){let i=o.slug.slice(0,-Lo.length);await Ls(i,o.body),s.push(i)}else await Ms(o.slug,o.body),n.push(o.slug);await Rt(n),await Ct(s),await en(null)}catch(r){await en(r instanceof Error?r.message:String(r))}try{await Vs()}catch{}}}async function El(t,e){let r;for(let n=0;n<e.attempts;n++)try{return await t()}catch(s){if(r=s,n===e.attempts-1)break;let o=500*Math.pow(3,n)+Math.floor(Math.random()*300);await new Promise(i=>setTimeout(i,o))}throw r}async function Sr(t){let e=await X(),r=Et(),n={token:t.token,...t.email?{email:t.email}:{},pluginVersion:B,timeZone:r,...e},s=await El(()=>j("POST","/api/v1/license/activate",n,{baseUrl:t.baseUrl,bearer:t.token,fingerprint:e.fingerprint,installId:e.installId,timeoutMs:1e4}),{attempts:3});if(!s.ok){if(s.status>=500)throw new Error("Tokmizer servers are temporarily unreachable. Try again in a minute.");let a=await s.text();throw Tl(a)==="device_cap"?new Error(H.deviceCap):new Error(H.failed(`${s.status} ${a}`))}let o=await Ee(s),i={token:t.token,jwt:o.jwt,signingSecret:o.signingSecret,plan:o.plan,status:o.status,trialEndsAt:o.trialEndsAt,subEndsAt:o.subEndsAt,jwtVersion:o.jwtVersion,installId:e.installId,fingerprint:e.fingerprint,pluginVersion:B,...t.email||o.boundEmail?{email:t.email??o.boundEmail??""}:{},timeZone:r,bonusActive:!1,linked:!0,lastHeartbeatOkAt:Date.now(),...Array.isArray(o.allowedFilters)&&o.allowedFilters.length>0?{allowedFilters:o.allowedFilters.map(ke)}:{}};return await nr(i),await Ln(),await Fn(t.baseUrl,!0),i}function Tl(t){try{let e=JSON.parse(t);return typeof e.code=="string"?e.code:null}catch{return null}}function Al(t){try{return new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date)}catch{return new Date().toISOString().slice(0,10)}}async function jt(t,e){let r=await T();return r&&r.token!==t.token?!1:(await nr(e),!0)}async function jn(t){let e=await T();if(!e)return null;let r=await X(),n=e.timeZone??Et(),s={ts:Date.now(),localDate:Al(n),timeZone:n},o;try{o=await j("POST","/api/v1/license/heartbeat",s,{baseUrl:t,bearer:e.jwt,signingSecret:e.signingSecret,fingerprint:r.fingerprint,installId:r.installId,timeoutMs:5e3})}catch{return e}if(o.status===401){let w=(e.heartbeatAuthFails??0)+1,E={...e,heartbeatAuthFails:w},$=e.linked??(!!e.email||e.plan==="smart"||e.plan==="pro");if(w>=Fo&&$&&(E.relinkRequired=!0),!await jt(e,E))return null;if(w>=Fo&&!$){try{await jo(`${y()}/state.replaced.json`,JSON.stringify(e),{mode:384})}catch{}try{return await zo(t)}catch{return null}}return null}if(o.status===451){let w=await T();if(w&&w.token!==e.token)return null;await sr();try{await Rt([]),await Ct([])}catch{}return null}if(o.status===426)return await jt(e,{...e,updateRequired:!0}),null;if(o.status===423)return await jt(e,{...e,relinkRequired:!0}),null;if(!o.ok){if(o.status===400)try{(await o.json())?.code==="stale_ts"&&await jt(e,{...e,clockSkewDetected:!0})}catch{}return e}let i;try{i=await Ee(o)}catch{return e}let a=i.settingsRevision??0,c=e.lastSettingsRevision??0,u=a>c,l=i.plan!==e.plan,g={...e,jwt:i.jwt,plan:i.plan,status:i.status,trialEndsAt:i.trialEndsAt,subEndsAt:i.subEndsAt,jwtVersion:i.jwtVersion,lastSettingsRevision:c,lastHeartbeatOkAt:Date.now(),heartbeatAuthFails:0,relinkRequired:!1,updateRequired:!1,clockSkewDetected:!1,timeZone:n,bonusActive:i.bonusActive??!1,...i.bonusResetAt!==void 0?{bonusResetAt:i.bonusResetAt}:{},...i.latestPluginVersion?{latestPluginVersion:i.latestPluginVersion}:{},...Array.isArray(i.allowedFilters)?{allowedFilters:i.allowedFilters.map(ke)}:{}};if(u)try{await Ke(),g.lastSettingsRevision=a}catch{}if(!await jt(e,g))return T();if(process.env.TOKMIZER_SELF_UPDATE_CHILD!=="1")try{let{maybeSpawnSelfUpdate:w}=await Promise.resolve().then(()=>(hr(),pr));w()}catch{}(u||l)&&await Ln(),await Fn(t,u||l);try{let{flushTelemetry:w}=await Promise.resolve().then(()=>(xr(),Do)),{flush:E}=await Promise.resolve().then(()=>(Mo(),No));await w(t),await E(t)}catch{}return g}var Rl=5*6e4;function Cl(){return process.env.TOKMIZER_BASE_URL??"https://tokmizer.com"}async function zo(t){let e=await X(),r=Et(),n={pluginVersion:B,timeZone:r,...e},s=await j("POST","/api/v1/license/enroll",n,{baseUrl:t,fingerprint:e.fingerprint,installId:e.installId,timeoutMs:4e3});if(!s.ok)throw new Error(`enroll failed ${s.status}`);let o=await Ee(s),i={token:o.token,jwt:o.jwt,signingSecret:o.signingSecret,plan:o.plan,status:o.status,trialEndsAt:o.trialEndsAt,subEndsAt:o.subEndsAt,jwtVersion:o.jwtVersion,installId:e.installId,fingerprint:e.fingerprint,pluginVersion:B,email:"",timeZone:r,bonusActive:!1,linked:!1,lastHeartbeatOkAt:Date.now(),...Array.isArray(o.allowedFilters)&&o.allowedFilters.length>0?{allowedFilters:o.allowedFilters.map(ke)}:{}};return await nr(i),await Ln(),await Fn(t,!0),i}function $l(){let t=process.env.CI;return t&&t!=="false"&&t!=="0"?!0:!!process.env.GITHUB_ACTIONS}async function me(t){let e=await T();if(e)return e;if($l())return null;let r=Vr();try{let n=await xl(r,"utf8"),s=Number(n);if(Number.isFinite(s)&&Date.now()-s<Rl)return null}catch{}try{return await zo(t??Cl())}catch{return await Sl(y(),{recursive:!0}),await jo(r,String(Date.now()),{mode:384}),null}}fe();import Ol from"node:readline/promises";import{stdin as Il,stdout as U}from"node:process";function Er(t,e=!1){return!0}fe();function Pl(){let t=Number(process.env.TOKMIZER_OFFLINE_GRACE_MS);return Number.isFinite(t)&&t>0?t:6048e5}function Uo(t,e=Date.now()){let r=t.lastHeartbeatOkAt;if(typeof r=="number"&&e-r>Pl())return!0;if(t.subEndsAt){let n=Date.parse(t.subEndsAt);if(Number.isFinite(n)&&e>n)return!0}return!1}function Tr(t,e=Date.now()){return t.plan}function Ar(t,e=Date.now()){return t.bonusActive??!1}var Dl={enabled:!0,outputVerbosity:"compact",filters:{enableAll:!0,disabled:[]}},Nl=`
93
+ `)})}return o}z();import{chmod as Zo,mkdir as es,readFile as qn,writeFile as ts,stat as Go,readdir as Zk,rm as Nl}from"node:fs/promises";var Dl="managed-by: tokmizer",Vo=["tkr","tkr-gain","tkr-status","tkr-link","tkr-unlink","tkr-compression","tkr-telemetry","tkr-update","tkr-yolo"],Gk=["power","tkr-reducer"];async function Ml(){try{let e=JSON.parse(await qn(Wr(),"utf8"));return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}catch{return[]}}async function Fl(e){try{await es(w(),{recursive:!0}),await ts(Wr(),JSON.stringify(e),{mode:384})}catch{}}var Kk=3600*1e3,Pl=10080*60*1e3;function jl(){let e=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(e)&&e>0?Math.min(e,Pl):Pl}async function Hl(e){try{let t=await Go(it(e)),n=Date.now()-t.mtimeMs;return n<Kk&&n<=jl()}catch{return!1}}async function Ll(e,t){await es(Vn(),{recursive:!0}),await ts(it(e),t,{mode:384}),await Zo(it(e),384)}async function Yn(e){let t=new Set(e),n;try{n=await Zk(Vn())}catch{return}for(let r of n){if(!r.endsWith(".md"))continue;let s=r.slice(0,-3);if(!t.has(s))try{await Nl(it(s))}catch{}}}async function zl(e,t){await es(qr(),{recursive:!0});try{if(!(await qn(at(e),"utf8")).includes(Dl))return}catch{}await ts(at(e),t,{mode:384}),await Zo(at(e),384);let n=await Ml();n.includes(e)||await Fl([...n,e])}async function Xn(e){let t=new Set([...e,...Vo]),n=await Ml(),r=new Set([...n,...Gk]);for(let s of r)if(!t.has(s))try{if(!(await qn(at(s),"utf8")).includes(Dl))continue;await Nl(at(s))}catch{}await Fl(n.filter(s=>t.has(s)))}async function Ul(){let e=0;for(let t of Vo)await Ko(t)&&e++;return{installed:e,total:Vo.length}}async function Ko(e){try{return await Go(at(e)),!0}catch{return!1}}async function Wo(e){try{await es(w(),{recursive:!0}),await ts(Jn(),JSON.stringify({at:Date.now(),error:e}),{mode:384}),await Zo(Jn(),384)}catch{}}async function ns(){try{return JSON.parse(await qn(Jn(),"utf8"))}catch{return null}}async function rs(e){try{let t=await Go(it(e));return Date.now()-t.mtimeMs>jl()?null:await qn(it(e),"utf8")}catch{return null}}import{chmod as D$,mkdir as M$,readFile as Zl,writeFile as F$,stat as Xo,readdir as Gl,rm as ss,rename as j$}from"node:fs/promises";import{readFileSync as ey}from"node:fs";z();import{join as os}from"node:path";z();import{randomUUID as Wk}from"node:crypto";import{readFileSync as qk}from"node:fs";import{mkdir as Yk,rename as Xk,rm as Bl,writeFile as Qk}from"node:fs/promises";import{join as Jl}from"node:path";function kn(){try{return qk(Jl(w(),"yolo-mode"),"utf8")==="on"}catch{return!1}}async function jt(e){let t=w(),n=Jl(t,"yolo-mode");if(!e){await Bl(n,{force:!0});return}await Yk(t,{recursive:!0,mode:448});let r=`${n}.tmp-${process.pid}-${Wk()}`;try{await Qk(r,"on",{mode:384,flag:"wx"}),await Xk(r,n)}finally{await Bl(r,{force:!0})}}var er=1440*60*1e3,ty=30*er,Kl=200*1024*1024,ny=8*1024*1024,Wl=/^[0-9a-f]{8,64}$/i,ry=/^[0-9a-f]{8,64}$/,Qn=".meta",qo=30,sy=200,Yo=["usage: tkr restore <hash> [--lines a:b] [--grep pattern]"," tkr restore --list"," tkr restore --grep <pattern>",""].join(`
94
+ `);function Qo(){try{let e=JSON.parse(ey(je(),"utf8")),t=e.maxAgeDays;return{...typeof t=="number"&&Number.isFinite(t)&&t>0?{maxAgeDays:Math.min(t,365)}:{},...e.disabled===!0?{disabled:!0}:{}}}catch{return{}}}function ei(){let e=Qo().maxAgeDays;return e?e*er:ty}function yn(e,t,n=process.env){let r=Number(n[e]);return Number.isFinite(r)&&r>0?r:t}function ti(e=process.env){return{maxAgeMs:yn("TOKMIZER_CCR_MAX_AGE_MS",ei(),e),maxBytes:yn("TOKMIZER_CCR_DIR_CAP_BYTES",Kl,e),entryMaxBytes:yn("TOKMIZER_CCR_ENTRY_MAX_BYTES",ny,e)}}function oy(e){return`${hn(e)}${Qn}`}function ql(e){return e===""?[]:(e.endsWith(`
95
+ `)?e.slice(0,-1):e).split(`
96
+ `)}async function Yl(e){try{let t=JSON.parse(await Zl(oy(e),"utf8"));return typeof t.at!="number"||typeof t.bytes!="number"||typeof t.lines!="number"||typeof t.partial!="boolean"?null:{at:t.at,bytes:t.bytes,lines:t.lines,partial:t.partial,...typeof t.label=="string"&&t.label?{label:t.label}:{}}}catch{return null}}async function is(){let e;try{e=await Gl(Ze())}catch{return[]}let t=ti().maxAgeMs,n=Date.now(),r=[];for(let s of e)if(ry.test(s))try{let o=await Xo(hn(s));if(n-o.mtimeMs>t)continue;let i=await Yl(s);r.push({hash:s,at:o.mtimeMs,bytes:o.size,lines:i?.lines??null,partial:i?.partial??null,label:i?.label??null})}catch{}return r.sort((s,o)=>o.at-s.at)}async function as(){let e=await is(),t=ti();return{entries:e.length,bytes:e.reduce((n,r)=>n+r.bytes,0),partialEntries:e.filter(n=>n.partial===!0).length,retentionDays:Math.round(t.maxAgeMs/er*100)/100,entryMaxBytes:t.entryMaxBytes,maxBytes:t.maxBytes}}function Vl(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${(e/1024).toFixed(1)} KB`:`${e} B`}function Xl(e){let t=Math.max(0,Math.floor(e/6e4));return t<60?`${t}m`:t<1440?`${Math.floor(t/60)}h`:`${Math.floor(t/1440)}d`}function tr(e=ti().maxAgeMs){if(e<er)return Xl(e);let t=Math.round(e/er);return`${t} day${t===1?"":"s"}`}function iy(e){let t=tr();if(e.length===0)return` Restore cache is empty. An entry appears when an output is shortened and is kept ${t}.
97
+ `;let n=e.reduce((i,a)=>i+a.bytes,0),r=" "+"\u2500".repeat(60),s=Date.now(),o=[` Restore cache \xB7 ${e.length} entr${e.length===1?"y":"ies"} \xB7 ${Vl(n)} \xB7 kept ${t}`,r,` ${"Hash".padEnd(18)}${"Age".padEnd(6)}${"Size".padStart(9)}${"Lines".padStart(8)} Command`,r];for(let i of e.slice(0,qo)){let a=i.lines==null?"?":String(i.lines).replace(/\B(?=(\d{3})+(?!\d))/g,","),c=i.partial?" (partial)":"";o.push(` ${i.hash.padEnd(18)}${Xl(s-i.at).padEnd(6)}${Vl(i.bytes).padStart(9)}${a.padStart(8)} ${i.label??"\u2014"}${c}`)}return o.push(r),e.length>qo&&o.push(` ${e.length-qo} older entries not shown.`),o.push(" Show one: tkr restore <hash> [--lines a:b] [--grep pattern]",""),o.join(`
98
+ `)}async function ay(e){if(!Wl.test(e))return{error:`tkr restore: no cached content for ${e}
99
+ `};let t=e.toLowerCase(),n=await is();if(n.some(s=>s.hash===t))return{hash:t};let r=n.filter(s=>s.hash.startsWith(t));return r.length===1?{hash:r[0].hash}:r.length>1?{error:`tkr restore: ${e} matches ${r.length} entries, use more characters
100
+ `}:{error:`tkr restore: no cached content for ${e} (entries are kept ${tr()}; see tkr restore --list)
101
+ `}}function cy(e,t){let n=/^(\d*):(\d*)$/.exec(e)??/^(\d+)()$/.exec(e);if(!n)return null;let r=!e.includes(":"),s=n[1]?Number(n[1]):1,o=r?s:n[2]?Number(n[2]):t;return s<1||o<s?null:{from:s,to:Math.min(o,t)}}function ly(e){try{return new RegExp(e)}catch{return null}}async function uy(e,t){let n=[],r=0;for(let o of await is()){let i=await eu(o.hash);i!=null&&ql(i).forEach((a,c)=>{e.test(a)&&(n.length<sy?n.push(`${o.hash}:${c+1}:${a}`):r+=1)})}if(n.length===0)return{stderr:`tkr restore: no cached line matches ${t}
102
+ `,code:1};let s=n.join(`
103
+ `)+`
104
+ `;return{stdout:s,...r?{stderr:`tkr restore: ${r} more matches not shown; narrow with tkr restore <hash> --grep <pattern>
105
+ `}:{},code:0,restoredTokens:Math.round(Buffer.byteLength(s,"utf8")/4)}}async function Ql(e){let t,n=!1,r,s;for(let d=0;d<e.length;d+=1){let f=e[d];if(f==="--list"&&!n)n=!0;else if(f==="--grep"&&r==null&&e[d+1]!=null)r=e[++d];else if(f==="--lines"&&s==null&&e[d+1]!=null)s=e[++d];else if(!f.startsWith("--")&&t==null)t=f;else return{stderr:Yo,code:1}}if(n)return t!=null||r!=null||s!=null?{stderr:Yo,code:1}:{stdout:iy(await is()),code:0};let o=r!=null?ly(r):null;if(r!=null&&!o)return{stderr:`tkr restore: invalid pattern ${r}
106
+ `,code:1};if(t==null)return o&&s==null?uy(o,r):{stderr:Yo,code:1};let i=await ay(t);if("error"in i)return{stderr:i.error,code:1,restoredTokens:0};let a=await eu(i.hash);if(a==null)return{stderr:`tkr restore: no cached content for ${t}
107
+ `,code:1,restoredTokens:0};let l=(await Yl(i.hash))?.partial?`tkr restore: partial entry, it holds only the part left out of the shortened output (the full output was over the per-entry limit)
108
+ `:"",u=a;if(s!=null||o){let d=ql(a),f=s!=null?cy(s,d.length):{from:1,to:d.length};if(!f)return{stderr:`tkr restore: invalid --lines ${s}, use a:b, a:, :b or n (1-based)
109
+ `,code:1};if(f.from>d.length)return{stderr:`${l}tkr restore: entry has ${d.length} lines
110
+ `,code:1};let p=d.slice(f.from-1,f.to),m=o?p.flatMap((v,S)=>o.test(v)?[`${f.from+S}:${v}`]:[]):p;if(m.length===0)return{stderr:`${l}tkr restore: no line matches ${r}
111
+ `,code:1};u=m.join(`
112
+ `)+`
113
+ `}return{stdout:u,...l?{stderr:l}:{},code:0,restoredTokens:Math.round(Buffer.byteLength(u,"utf8")/4)}}async function eu(e){if(!Wl.test(e))return null;try{let t=await Xo(hn(e));return Date.now()-t.mtimeMs>yn("TOKMIZER_CCR_MAX_AGE_MS",ei())?null:await Zl(hn(e),"utf8")}catch{return null}}async function tu(){let e;try{e=await Gl(Ze())}catch{return}let t=yn("TOKMIZER_CCR_MAX_AGE_MS",ei()),n=yn("TOKMIZER_CCR_DIR_CAP_BYTES",Kl),r=Date.now(),s=new Map;for(let a of e){let c=os(Ze(),a);try{let l=await Xo(c);r-l.mtimeMs>t?await ss(c):s.set(a,{mtimeMs:l.mtimeMs,size:l.size})}catch{}}for(let a of[...s.keys()])if(!(!a.endsWith(Qn)||s.has(a.slice(0,-Qn.length)))){try{await ss(os(Ze(),a))}catch{}s.delete(a)}let o=[...s.entries()].filter(([a])=>!a.endsWith(Qn)).sort((a,c)=>a[1].mtimeMs-c[1].mtimeMs),i=o.reduce((a,[,c])=>a+c.size,0);for(let[a,c]of o){if(i<=n)break;try{await ss(os(Ze(),a)),i-=c.size,await ss(os(Ze(),`${a}${Qn}`),{force:!0})}catch{}}}rr();Ke();Dt();var Kd="-command",Wd=3;async function da(){try{let{connectDaemon:e}=await Promise.resolve().then(()=>(Tn(),En)),t=await e();try{await t.reload()}finally{t.close()}}catch{}}async function fa(e,t){if(!(!t&&await Hl("power"))){try{let n=await Il(e),r=[],s=[];for(let o of n)if(o.slug.endsWith(Kd)){let i=o.slug.slice(0,-Kd.length);await zl(i,o.body),s.push(i)}else await Ll(o.slug,o.body),r.push(o.slug);await Yn(r),await Xn(s),await Wo(null)}catch(n){await Wo(n instanceof Error?n.message:String(n))}try{await tu()}catch{}}}async function F0(e,t){let n;for(let r=0;r<t.attempts;r++)try{return await e()}catch(s){if(n=s,r===t.attempts-1)break;let o=500*Math.pow(3,r)+Math.floor(Math.random()*300);await new Promise(i=>setTimeout(i,o))}throw n}async function Ms(e){Mt();let t=await Se(),n=Zn(),r=await N(),s=r&&r.linked!==!0&&r.token&&r.token!==e.token?r.token:null,o={token:e.token,...e.email?{email:e.email}:{},pluginVersion:Q,timeZone:n,...s?{previousToken:s}:{},...t},i=await F0(()=>le("POST","/api/v1/license/activate",o,{baseUrl:e.baseUrl,bearer:e.token,fingerprint:t.fingerprint,installId:t.installId,timeoutMs:1e4}),{attempts:3});if(!i.ok){if(i.status>=500)throw new Error("Tokmizer servers are temporarily unreachable. Try again in a minute.");let l=await i.text();throw j0(l)==="device_cap"?new Error(he.deviceCap):new Error(he.failed(`${i.status} ${l}`))}let a=await ut(i),c={token:e.token,jwt:a.jwt,signingSecret:a.signingSecret,plan:a.plan,status:a.status,trialEndsAt:a.trialEndsAt,subEndsAt:a.subEndsAt,jwtVersion:a.jwtVersion,installId:t.installId,fingerprint:t.fingerprint,pluginVersion:Q,...e.email||a.boundEmail?{email:e.email??a.boundEmail??""}:{},timeZone:n,bonusActive:!1,linked:!0,lastHeartbeatOkAt:Date.now(),...Array.isArray(a.allowedFilters)&&a.allowedFilters.length>0?{allowedFilters:a.allowedFilters.map(Re)}:{}};return await Xr(c),await da(),await fa(e.baseUrl,!0),c}function j0(e){try{let t=JSON.parse(e);return typeof t.code=="string"?t.code:null}catch{return null}}function H0(e){try{return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date)}catch{return new Date().toISOString().slice(0,10)}}async function yr(e,t){let n=await N();return n&&n.token!==e.token?!1:(await Xr(t),!0)}async function pa(e){let t=await N();if(!t)return null;if(!D())return t;let n=await Se(),r=t.timeZone??Zn(),s={ts:Date.now(),localDate:H0(r),timeZone:r},o;try{o=await le("POST","/api/v1/license/heartbeat",s,{baseUrl:e,bearer:t.jwt,signingSecret:t.signingSecret,fingerprint:n.fingerprint,installId:n.installId,timeoutMs:5e3})}catch{return t}if(o.status===401){let f=(t.heartbeatAuthFails??0)+1,p={...t,heartbeatAuthFails:f},m=t.linked??(!!t.email||t.plan==="smart"||t.plan==="pro");if(f>=Wd&&m&&(p.relinkRequired=!0),!await yr(t,p))return null;if(f>=Wd&&!m){try{await qd(`${w()}/state.replaced.json`,JSON.stringify(t),{mode:384})}catch{}try{return await Yd(e)}catch{return null}}return null}if(o.status===451){let f=await N();if(f&&f.token!==t.token)return null;await Qr();try{await Yn([]),await Xn([])}catch{}return null}if(o.status===426)return await yr(t,{...t,updateRequired:!0}),null;if(o.status===423)return await yr(t,{...t,relinkRequired:!0}),null;if(!o.ok){if(o.status===400)try{(await o.json())?.code==="stale_ts"&&await yr(t,{...t,clockSkewDetected:!0})}catch{}return t}let i;try{i=await ut(o)}catch{return t}let a=i.settingsRevision??0,c=t.lastSettingsRevision??0,l=a>c,u=i.plan!==t.plan,d={...t,jwt:i.jwt,plan:i.plan,status:i.status,trialEndsAt:i.trialEndsAt,subEndsAt:i.subEndsAt,jwtVersion:i.jwtVersion,lastSettingsRevision:c,lastHeartbeatOkAt:Date.now(),heartbeatAuthFails:0,relinkRequired:!1,updateRequired:!1,clockSkewDetected:!1,timeZone:r,bonusActive:i.bonusActive??!1,...i.bonusResetAt!==void 0?{bonusResetAt:i.bonusResetAt}:{},...i.latestPluginVersion?{latestPluginVersion:i.latestPluginVersion}:{},...Array.isArray(i.allowedFilters)?{allowedFilters:i.allowedFilters.map(Re)}:{}};if(l)try{await Lt(),d.lastSettingsRevision=a}catch{}if(!await yr(t,d))return N();if(process.env.TOKMIZER_SELF_UPDATE_CHILD!=="1")try{let{maybeSpawnSelfUpdate:f}=await Promise.resolve().then(()=>(gs(),hs));f()}catch{}(l||u)&&await da(),await fa(e,l||u);try{let{flushTelemetry:f}=await Promise.resolve().then(()=>(Es(),Ku)),{flush:p}=await Promise.resolve().then(()=>(Gd(),Zd));await f(e),await p(e)}catch{}return d}var L0=5*6e4;function z0(){return process.env.TOKMIZER_BASE_URL??"https://tokmizer.com"}async function Yd(e){Mt();let t=await Se(),n=Zn(),r={pluginVersion:Q,timeZone:n,...t},s=await le("POST","/api/v1/license/enroll",r,{baseUrl:e,fingerprint:t.fingerprint,installId:t.installId,timeoutMs:4e3});if(!s.ok)throw new Error(`enroll failed ${s.status}`);let o=await ut(s),i={token:o.token,jwt:o.jwt,signingSecret:o.signingSecret,plan:o.plan,status:o.status,trialEndsAt:o.trialEndsAt,subEndsAt:o.subEndsAt,jwtVersion:o.jwtVersion,installId:t.installId,fingerprint:t.fingerprint,pluginVersion:Q,email:"",timeZone:n,bonusActive:!1,linked:!1,lastHeartbeatOkAt:Date.now(),...Array.isArray(o.allowedFilters)&&o.allowedFilters.length>0?{allowedFilters:o.allowedFilters.map(Re)}:{}};return await Xr(i),await da(),await fa(e,!0),i}function U0(){let e=process.env.CI;return e&&e!=="false"&&e!=="0"?!0:!!process.env.GITHUB_ACTIONS}async function Ee(e){let t=await N();if(t)return t;if(U0()||!D())return null;let n=Fo();try{let r=await D0(n,"utf8"),s=Number(r);if(Number.isFinite(s)&&Date.now()-s<L0)return null}catch{}try{return await Yd(e??z0())}catch{return await M0(w(),{recursive:!0}),await qd(n,String(Date.now()),{mode:384}),null}}Ge();rr();import J0 from"node:readline/promises";import{stdin as V0,stdout as de}from"node:process";function Fs(e,t=!1){return!0}Ge();function B0(){let e=Number(process.env.TOKMIZER_OFFLINE_GRACE_MS);return Number.isFinite(e)&&e>0?e:6048e5}function Xd(e,t=Date.now()){let n=e.lastHeartbeatOkAt;if(typeof n=="number"&&t-n>B0())return!0;if(e.subEndsAt){let r=Date.parse(e.subEndsAt);if(Number.isFinite(r)&&t>r)return!0}return!1}function js(e,t=Date.now()){return e.plan}function Hs(e,t=Date.now()){return e.bonusActive??!1}var Z0={enabled:!0,outputVerbosity:"compact",filters:{enableAll:!0,disabled:[]}},G0=`
39
114
  Help improve Tokmizer
40
- We can collect the NAME of the commands you run, like "git" or "docker",
115
+ By default Tokmizer collects the NAME of the commands you run, like "git" or "docker",
41
116
  and whether we managed to compress them. Never their arguments, your output,
42
117
  your file paths, or anything inside them. It just shows us which commands to
43
- optimize next, so you save even more over time. You can change this anytime
44
- in your settings.
118
+ optimize next, so you save even more over time. Turn it off anytime with
119
+ tkr telemetry off; your choice survives updates.
45
120
 
46
- `;async function Ml(t){return U.write(Nl),zn(t,"Share anonymous command names to help improve filters?",!0)}async function Zo(t,e,r){let n=(await t.question(`${e} [${r}]: `)).trim();return n.length===0?r:n}async function zn(t,e,r){let n=r?"Y/n":"y/N",s=(await t.question(`${e} [${n}]: `)).trim().toLowerCase();return s===""?r:s==="y"||s==="yes"}async function Ll(t,e,r,n){let s=(await t.question(`${e} (${r.join(" / ")}) [${n}]: `)).trim().toLowerCase();return s.length===0?n:r.find(i=>i===s)??n}async function Fl(t,e,r){U.write(`
121
+ `;async function K0(e){return de.write(G0),ma(e,"Share command names and token counts to help improve filters?",!0)}async function Qd(e,t,n){let r=(await e.question(`${t} [${n}]: `)).trim();return r.length===0?n:r}async function ma(e,t,n){let r=n?"Y/n":"y/N",s=(await e.question(`${t} [${r}]: `)).trim().toLowerCase();return s===""?n:s==="y"||s==="yes"}async function W0(e,t,n,r){let s=(await e.question(`${t} (${n.join(" / ")}) [${r}]: `)).trim().toLowerCase();return s.length===0?r:n.find(i=>i===s)??r}async function q0(e,t,n){de.write(`
47
122
  Let us walk through each setting. Press Enter to keep the default.
48
123
 
49
- `);let n=await zn(t,"Enable Tokmizer optimizations?",!0),s=await Ll(t,"Output verbosity",["normal","compact","minimal"],"normal"),o=await zn(t,"Enable all built-in filters?",!0),i=[];o||(i=(await Zo(t,"Comma-separated slugs to DISABLE (e.g. git,grep)","")).split(",").map(u=>u.trim()).filter(u=>u.length>0));let a={enabled:n,outputVerbosity:s,filters:{enableAll:o,disabled:i}};return Er(e,r)?U.write(`
124
+ `);let r=await ma(e,"Enable Tokmizer optimizations?",!0),s=await W0(e,"Output verbosity",["normal","compact","minimal"],"normal"),o=await ma(e,"Enable all built-in filters?",!0),i=[];o||(i=(await Qd(e,"Comma-separated slugs to DISABLE (e.g. git,grep)","")).split(",").map(l=>l.trim()).filter(l=>l.length>0));let a={enabled:r,outputVerbosity:s,filters:{enableAll:o,disabled:i}};return Fs(t,n)?de.write(`
50
125
  /power is available right now on this token.
51
- `):e==="smart"&&U.write(`
126
+ `):t==="smart"&&de.write(`
52
127
  /power is included with Pro.
53
128
  It is NOT available on this token today.
54
- `),a}async function Un(t,e=!1){let r=Ol.createInterface({input:Il,output:U});try{let n=e?" (bonus window active)":"";U.write(`
55
- Configure Tokmizer (current plan: ${t}${n})
129
+ `),a}async function ha(e,t=!1){let n=J0.createInterface({input:V0,output:de});try{let r=t?" (bonus window active)":"";de.write(`
130
+ Configure Tokmizer (current plan: ${e}${r})
56
131
 
57
- `),U.write(` 1) Recommended - sane defaults, ready to go
58
- `),U.write(` 2) Custom - walk through each option
132
+ `),de.write(` 1) Recommended - sane defaults, ready to go
133
+ `),de.write(` 2) Custom - walk through each option
59
134
 
60
- `);let o=await Zo(r,"Choose 1 or 2","1")==="2"?await Fl(r,t,e):{...Dl},i=await Ml(r),a={...o,telemetryOptIn:i};U.write(`
135
+ `);let o=await Qd(n,"Choose 1 or 2","1")==="2"?await q0(n,e,t):{...Z0},i=await K0(n),a={...o,telemetryOptIn:i};de.write(`
61
136
  Saving...
62
- `);let c=await Te(a);await Ve(!1),U.write(`Done.
63
- `),U.write(`YOLO: off (this machine only)
64
- `),U.write(`${JSON.stringify(c.settings,null,2)}
65
- `),U.write(`
137
+ `);let c=await Ae(a);await jt(!1),de.write(`Done.
138
+ `),de.write(`YOLO: off (this machine only)
139
+ `),de.write(`${JSON.stringify(c.settings,null,2)}
140
+ `),de.write(`
66
141
  You can re-run this any time with: tkr settings configure
67
- `),U.write((await T())?.linked===!1?`These settings are saved only on this machine.
142
+ `),de.write((await N())?.linked===!1?`These settings are saved only on this machine.
68
143
  `:`Or edit at: https://tokmizer.com/dashboard/settings
69
- `)}finally{r.close()}}async function Ho(){let t=await Ke(),e=await T(),r=e?Tr({...e,plan:t.plan}):t.plan,n=e?Ar(e):!1;await Un(r,n)}Nr();async function ei(t){let e=await T();if(e){K.write(H.activated(e.plan)+`
70
- `);return}let r=Qo.createInterface({input:Yn,output:K}),n=null,s=!1;try{K.write(`${H.welcome}
71
- ${H.needToken}
72
- ${H.getToken}
144
+ `)}finally{n.close()}}async function ef(){let e=await Lt(),t=await N(),n=t?js({...t,plan:e.plan}):e.plan,r=t?Hs(t):!1;await ha(n,r)}Ir();async function ap(e){let t=await N();if(t){we.write(he.activated(t.plan)+`
145
+ `);return}let n=ip.createInterface({input:Va,output:we}),r=null,s=!1;try{we.write(`${he.welcome}
146
+ ${he.needToken}
147
+ ${he.getToken}
73
148
 
74
- `);let o=(await r.question(`${H.askToken} `)).trim();K.write(`${H.activating}
75
- `);let i=await Sr({token:o,baseUrl:t});K.write(H.activated(i.plan)+`
76
- `),n=i.plan,s=i.bonusActive??!1}catch(o){let i=o instanceof Error?o.message:String(o);K.write(`${i}
77
- `),process.exitCode=1}finally{r.close()}n&&(await Un(n,s),await Gl())}async function Gl(){try{if(Yn.isTTY){let t=Qo.createInterface({input:Yn,output:K});try{let e=(await t.question("Also optimize your commands outside the agent (terminal)? [y/N] ")).trim().toLowerCase();if(e==="y"||e==="yes"){let r=await Je(ae());K.write(`Installed ${r.length} shims.
78
- `);let n=Kl(Vl.homedir(),(process.env.SHELL??"").includes("zsh")?".zshrc":".bashrc"),s=await Zt(n);s==="added"?K.write(`Added PATH to ${n}. Open a new terminal.
79
- `):s==="missing"&&K.write(`Add this to your shell rc:
80
- ${pe()}`)}}finally{t.close()}}}catch{}try{let{connectDaemon:t}=await Promise.resolve().then(()=>(mt(),ft)),e=await t();await e.ping(),e.close(),K.write(` Engine: \u2705 active
81
- `)}catch{K.write(` Engine: starts on first use
82
- `)}K.write(`
149
+ `);let o=(await n.question(`${he.askToken} `)).trim();we.write(`${he.activating}
150
+ `);let i=await Ms({token:o,baseUrl:e});we.write(he.activated(i.plan)+`
151
+ `),r=i.plan,s=i.bonusActive??!1}catch(o){let i=o instanceof Error?o.message:String(o);we.write(`${i}
152
+ `),process.exitCode=1}finally{n.close()}r&&(await ha(r,s),await hx())}async function hx(){try{if(Va.isTTY){let e=ip.createInterface({input:Va,output:we});try{let t=(await e.question("Also optimize your commands outside the agent (terminal)? [y/N] ")).trim().toLowerCase();if(t==="y"||t==="yes"){let n=await Xt(ze());we.write(`Installed ${n.length} shims.
153
+ `);let r=mx(px.homedir(),(process.env.SHELL??"").includes("zsh")?".zshrc":".bashrc"),s=await Cr(r);s==="added"?we.write(`Added PATH to ${r}. Open a new terminal.
154
+ `):s==="missing"&&we.write(`Add this to your shell rc:
155
+ ${Ye()}`)}}finally{e.close()}}}catch{}try{let{connectDaemon:e}=await Promise.resolve().then(()=>(Tn(),En)),t=await e();await t.ping(),t.close(),we.write(` Engine: \u2705 active
156
+ `)}catch{we.write(` Engine: starts on first use
157
+ `)}we.write(`
83
158
  \u2705 Ready. tokmizer optimizes your commands automatically.
84
159
  Run "tkr gain" anytime to see your savings.
85
- `)}fe();ct();He();Be();Vn();I();import{readFile as oi,rm as ri}from"node:fs/promises";import{appendFileSync as Yl,chmodSync as Wl,mkdirSync as ql,readFileSync as ii,renameSync as ai,rmSync as ci,statSync as ui,writeFileSync as Xn}from"node:fs";import{dirname as Xl,join as li}from"node:path";var Wn={anthropic:3,openai:2.5,google:2,vertex:3.3,bedrock:3.5,openrouter:3.5},Jl={"claude-code":"anthropic",codex:"openai",copilot:"openai","gemini-cli":"google",cursor:"anthropic",windsurf:"anthropic",cline:"anthropic",aider:"anthropic",shell:"anthropic"};function ti(t){return t?Jl[t]??"anthropic":"anthropic"}function qn(t){let e=0,r=0;for(let n of Object.keys(t)){let s=t[n]??0;s<=0||(e+=s,r+=s/1e6*(Wn[n]??Wn.anthropic))}return e<=0?Wn.anthropic:r/(e/1e6)}var Ql="stats.jsonl",ed="stats-ledger.json",ni=2*1024*1024,td=3e4;function Mr(){return{n:0,nc:0,r:0,f:0,or:0,of:0,x:0,sn:0,sr:0,sf:0,mr:0,mf:0,rn:0,rb:0,tn:0,tr:0,tf:0,t0:null,t1:null,cmds:{},prov:{}}}function di(t){let e=t.trim();if(!e)return null;try{let r=JSON.parse(e);return typeof r.t!="number"||!Number.isFinite(r.t)||r.t<0||r.t>864e10||typeof r.r!="number"||!Number.isSafeInteger(r.r)||r.r<0||typeof r.f!="number"||!Number.isSafeInteger(r.f)||r.f<0||r.r+r.f===0?null:{t:r.t,r:r.r,f:r.f,m:r.m===1,...typeof r.h=="string"?{h:r.h}:{},...typeof r.k=="string"?{k:r.k}:{},...typeof r.c=="string"&&r.c?{c:r.c}:{}}}catch{return null}}function fi(t,e){if(e.m){t.mr+=e.r,t.mf+=e.f;return}if(e.k==="restore"&&(t.rn+=1,t.rb+=e.f),t.n+=1,t.or+=e.r,t.of+=e.f,e.f>e.r&&(t.x+=1),e.h==="shell"&&(t.tn+=1,t.tr+=e.r,t.tf+=e.f),t.t0=t.t0==null?e.t:Math.min(t.t0,e.t),t.t1=t.t1==null?e.t:Math.max(t.t1,e.t),e.c){let r=t.cmds[e.c]??{n:0,nc:0,r:0,f:0,sh:!1};r.n+=1,e.f<e.r&&(r.nc+=1,r.rr=(r.rr??0)+e.r,r.rf=(r.rf??0)+e.f),(e.k==="sh"||e.k==="restore")&&(r.sh=!0),r.r+=e.r,r.f+=e.f,t.cmds[e.c]=r}if(e.f<e.r){t.nc+=1,t.r+=e.r,t.f+=e.f,e.k==="sh"&&(t.sn+=1,t.sr+=e.r,t.sf+=e.f);let r=ti(e.h),n=t.prov[r]??{r:0,f:0};n.r+=e.r,n.f+=e.f,t.prov[r]=n}}function rd(t,e){for(let r of["n","nc","r","f","or","of","x","sn","sr","sf","mr","mf","rn","rb","tn","tr","tf"])t[r]+=e[r];e.t0!=null&&(t.t0=t.t0==null?e.t0:Math.min(t.t0,e.t0)),e.t1!=null&&(t.t1=t.t1==null?e.t1:Math.max(t.t1,e.t1));for(let[r,n]of Object.entries(e.cmds)){let s=t.cmds[r]??{n:0,nc:0,r:0,f:0,sh:!1};s.n+=n.n,s.nc+=n.nc,s.r+=n.r,s.f+=n.f,s.rr=(s.rr??0)+(n.rr??0),s.rf=(s.rf??0)+(n.rf??0),s.sh=s.sh||n.sh,t.cmds[r]=s}for(let[r,n]of Object.entries(e.prov)){let s=t.prov[r]??{r:0,f:0};s.r+=n.r,s.f+=n.f,t.prov[r]=s}}function Qn(t){let e=new Date(t*1e3);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function es(t){return li(Xl(t),ed)}function mi(t){let e=es(t),r;try{r=ii(e,"utf8")}catch{return{}}try{let n=JSON.parse(r);if(!n.days||typeof n.days!="object")throw new Error("invalid ledger");let s={};for(let[o,i]of Object.entries(n.days))!/^\d{4}-\d{2}-\d{2}$/.test(o)||!i||typeof i!="object"||(s[o]={...Mr(),...i});return s}catch{try{ai(e,`${e}.corrupt-${Date.now()}`)}catch{}return{}}}function si(t,e){let r=`${t}.tmp-${process.pid}`;Xn(r,e,{mode:384}),ai(r,t)}function nd(t){try{return Xn(t,String(process.pid),{flag:"wx",mode:384}),!0}catch{}try{return Date.now()-ui(t).mtimeMs<td?!1:(ci(t,{force:!0}),Xn(t,String(process.pid),{flag:"wx",mode:384}),!0)}catch{return!1}}function sd(t,e=ni,r=ni/2){try{if(ui(t).size<=e)return}catch{return}let n=`${t}.lock`;if(nd(n))try{let s=ii(t,"utf8").split(`
86
- `).filter(u=>u.trim()!==""),o=s.length,i=0;for(;o>0;){let u=Buffer.byteLength(s[o-1])+1;if(i+u>r)break;i+=u,o-=1}let a=mi(t);for(let u of s.slice(0,o)){let l=di(u);if(!l)continue;let g=Qn(l.t),w=a[g]??Mr();fi(w,l),a[g]=w}let c=s.slice(o);si(t,c.length?`${c.join(`
160
+ `)}Ge();Dt();Nt();Ft();rr();za();z();import{readFile as pp,rm as lp}from"node:fs/promises";import{appendFileSync as kx,chmodSync as yx,mkdirSync as wx,readFileSync as mp,realpathSync as bx,renameSync as hp,rmSync as gp,statSync as kp,writeFileSync as Ka}from"node:fs";import{basename as Wa,dirname as yp,join as Qs,resolve as vx,sep as xx}from"node:path";var Za={anthropic:3,openai:2.5,google:2,vertex:3.3,bedrock:3.5,openrouter:3.5},gx={"claude-code":"anthropic",codex:"openai",copilot:"openai","gemini-cli":"google",cursor:"anthropic",windsurf:"anthropic",cline:"anthropic",aider:"anthropic",shell:"anthropic"};function cp(e){return e?gx[e]??"anthropic":"anthropic"}function Ga(e){let t=0,n=0;for(let r of Object.keys(e)){let s=e[r]??0;s<=0||(t+=s,n+=s/1e6*(Za[r]??Za.anthropic))}return t<=0?Za.anthropic:n/(t/1e6)}var Sx="stats.jsonl",_x="stats-ledger.json",up=2*1024*1024,Ex=3e4,wp=3e4,Tx=new Set(["n","g","e"]),$x=256;function eo(){return{n:0,nc:0,r:0,f:0,or:0,of:0,x:0,sn:0,sr:0,sf:0,mr:0,mf:0,rn:0,rb:0,tn:0,tr:0,tf:0,ox:0,t0:null,t1:null,cmds:{},prov:{},rl:{},fb:{}}}function bp(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return typeof n.t!="number"||!Number.isFinite(n.t)||n.t<0||n.t>864e10||typeof n.r!="number"||!Number.isSafeInteger(n.r)||n.r<0||typeof n.f!="number"||!Number.isSafeInteger(n.f)||n.f<0||n.r+n.f===0?null:{t:n.t,r:n.r,f:n.f,m:n.m===1,...typeof n.h=="string"?{h:n.h}:{},...typeof n.k=="string"?{k:n.k}:{},...typeof n.c=="string"&&n.c?{c:n.c}:{},...typeof n.p=="string"&&n.p?{p:n.p}:{},...typeof n.s=="string"&&n.s?{s:n.s}:{},...typeof n.o=="string"&&Tx.has(n.o)?{o:n.o}:{}}}catch{return null}}function Rx(e,t){if(!t.c)return;let n=e.cmds[t.c]??{n:0,nc:0,r:0,f:0,sh:!1};n.n+=1,t.f<t.r&&(n.nc+=1,n.rr=(n.rr??0)+t.r,n.rf=(n.rf??0)+t.f),(t.k==="sh"||t.k==="restore")&&(n.sh=!0),n.r+=t.r,n.f+=t.f,e.cmds[t.c]=n}function Ax(e){return e.s==="b"?`b:${(e.c??"").split(" ")[0]||"other"}`:e.s?.startsWith("u:")?e.s:e.o==="n"?"n":"?"}function Cx(e,t){let n=Ax(t),r=e.rl[n]??{n:0,nc:0,r:0,f:0};if(r.n+=1,r.r+=t.r,r.f+=t.f,t.f<t.r&&(r.nc+=1),e.rl[n]=r,t.f>=t.r&&t.o){let s=`${t.o} ${t.c??""}`,o=e.fb[s]??{n:0,r:0};o.n+=1,o.r+=t.r,e.fb[s]=o}}function vp(e,t){if(t.m){e.mr+=t.r,e.mf+=t.f;return}if(e.t0=e.t0==null?t.t:Math.min(e.t0,t.t),e.t1=e.t1==null?t.t:Math.max(e.t1,t.t),t.k==="sh"&&t.r>wp){e.ox+=1;return}if(Rx(e,t),t.k==="restore"?(e.rn+=1,e.rb+=t.f):Cx(e,t),e.n+=1,e.or+=t.r,e.of+=t.f,t.f>t.r&&(e.x+=1),t.h==="shell"&&t.k!=="restore"&&(e.tn+=1,e.tr+=t.r,e.tf+=t.f),t.f<t.r){e.nc+=1,e.r+=t.r,e.f+=t.f,t.k==="sh"&&(e.sn+=1,e.sr+=t.r,e.sf+=t.f);let n=cp(t.h),r=e.prov[n]??{r:0,f:0};r.r+=t.r,r.f+=t.f,e.prov[n]=r}}function Ox(e,t){for(let n of["n","nc","r","f","or","of","x","sn","sr","sf","mr","mf","rn","rb","tn","tr","tf","ox"])e[n]+=t[n];t.t0!=null&&(e.t0=e.t0==null?t.t0:Math.min(e.t0,t.t0)),t.t1!=null&&(e.t1=e.t1==null?t.t1:Math.max(e.t1,t.t1));for(let[n,r]of Object.entries(t.cmds)){let s=e.cmds[n]??{n:0,nc:0,r:0,f:0,sh:!1};s.n+=r.n,s.nc+=r.nc,s.r+=r.r,s.f+=r.f,s.rr=(s.rr??0)+(r.rr??0),s.rf=(s.rf??0)+(r.rf??0),s.sh=s.sh||r.sh,e.cmds[n]=s}for(let[n,r]of Object.entries(t.prov)){let s=e.prov[n]??{r:0,f:0};s.r+=r.r,s.f+=r.f,e.prov[n]=s}for(let[n,r]of Object.entries(t.rl??{})){let s=e.rl[n]??{n:0,nc:0,r:0,f:0};s.n+=r.n,s.nc+=r.nc,s.r+=r.r,s.f+=r.f,e.rl[n]=s}for(let[n,r]of Object.entries(t.fb??{})){let s=e.fb[n]??{n:0,r:0};s.n+=r.n,s.r+=r.r,e.fb[n]=s}}function gt(e){let t=new Date(e*1e3);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function Xa(e){return Qs(yp(e),_x)}function xp(e){let t=Xa(e),n;try{n=mp(t,"utf8")}catch{return{}}try{let r=JSON.parse(n);if(!r.days||typeof r.days!="object")throw new Error("invalid ledger");let s={};for(let[o,i]of Object.entries(r.days))!/^\d{4}-\d{2}-\d{2}$/.test(o)||!i||typeof i!="object"||(s[o]={...eo(),...i});return s}catch{try{hp(t,`${t}.corrupt-${Date.now()}`)}catch{}return{}}}function dp(e,t){let n=`${e}.tmp-${process.pid}`;Ka(n,t,{mode:384}),hp(n,e)}function Ix(e){try{return Ka(e,String(process.pid),{flag:"wx",mode:384}),!0}catch{}try{return Date.now()-kp(e).mtimeMs<Ex?!1:(gp(e,{force:!0}),Ka(e,String(process.pid),{flag:"wx",mode:384}),!0)}catch{return!1}}function Px(e,t=up,n=up/2){try{if(kp(e).size<=t)return}catch{return}let r=`${e}.lock`;if(Ix(r))try{let s=mp(e,"utf8").split(`
161
+ `).filter(l=>l.trim()!==""),o=s.length,i=0;for(;o>0;){let l=Buffer.byteLength(s[o-1])+1;if(i+l>n)break;i+=l,o-=1}let a=xp(e);for(let l of s.slice(0,o)){let u=bp(l);if(!u)continue;let d=gt(u.t),f=a[d]??eo();vp(f,u),a[d]=f}let c=s.slice(o);dp(e,c.length?`${c.join(`
162
+ `)}
163
+ `:""),dp(Xa(e),JSON.stringify({v:1,days:a}))}catch{return}finally{gp(r,{force:!0})}}function Qa(e){let t=vx(e),n=t,r="";for(;;){try{return Qs(bx(n),r)}catch{}let s=yp(n);if(s===n)return t;r=r?Qs(Wa(n),r):Wa(n),n=s}}function Nx(e,t){return e.p!=null&&(e.p===t||e.p.startsWith(t+xx))}async function Sp(e,t,n){let r="";try{r=await pp(e,"utf8")}catch{}let s=[];for(let o of r.split(`
164
+ `)){let i=bp(o);!i||i.t<t||n!=null&&!Nx(i,n)||s.push(i)}return s}async function ec(e,t,n){let r=t>0?gt(t):"",s=new Map;if(n==null)for(let[o,i]of Object.entries(xp(e)))o>=r&&s.set(o,i);for(let o of await Sp(e,t,n)){let i=gt(o.t),a=s.get(i)??eo();vp(a,o),s.set(i,a)}return s}function Cn(){return Qs(w(),Sx)}async function _p(e=Cn()){try{let n=(await pp(e,"utf8")).split(`
165
+ `).filter(r=>r.trim()!=="").length;return await lp(e,{force:!0}),await lp(Xa(e),{force:!0}),n}catch{return 0}}function Ep(e,t,n=Cn(),r=!1,s,o,i,a,c={}){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<0||t<0||e+t===0)return;let l=s?`,"h":${JSON.stringify(s)}`:"",u=o?`,"k":${JSON.stringify(o)}`:"",d=i?`,"c":${JSON.stringify(i.slice(0,24))}`:"",f=a?Qa(a):"",p=f&&f.length<=$x?`,"p":${JSON.stringify(f)}`:"",m=c.s?`,"s":${JSON.stringify(c.s.slice(0,66))}`:"",v=c.o?`,"o":${JSON.stringify(c.o)}`:"",S=`{"t":${Math.floor(Date.now()/1e3)},"r":${e},"f":${t}${r?',"m":1':""}${l}${u}${d}${p}${m}${v}}
166
+ `;try{wx(w(),{recursive:!0,mode:448}),kx(n,S,{mode:384}),yx(n,384),Px(n)}catch{return}}function F(e){return Math.ceil(e/4)}function Tp(e){if(!e.count)return null;let t=Math.round(e.compressedCount/e.count*100),n=(e.byCommand??[]).filter(s=>!s.native&&s.compressedCount===0).sort((s,o)=>o.count-s.count).slice(0,3).map(s=>s.cmd),r=n.length?` \xB7 top unchanged: ${n.join(", ")}`:"";return`${t}% of recorded outputs reduced (${e.compressedCount}/${e.count})${r}`}function Dx(e){let t=Object.values(e.rl).reduce((s,o)=>s+o.n,0),n=e.n-e.rn-t,r=n>0?{...e.rl,"?":{...e.rl["?"]??{n:0,nc:0,r:0,f:0},n:(e.rl["?"]?.n??0)+n}}:e.rl;return Object.entries(r).map(([s,o])=>{let i=F(o.r),a=i-F(o.f),c=s.startsWith("b:")?"built-in":s.startsWith("u:")?"user":s==="n"?"none":"unattributed";return{rule:c==="built-in"||c==="user"?s.slice(2):c,kind:c,count:o.n,compressedCount:o.nc,rawTokens:i,savedTokens:a,avgPct:i?Math.round(a/i*100):0}}).sort((s,o)=>o.savedTokens-s.savedTokens||o.count-s.count)}var Mx={n:"no-rule",g:"no-gain",e:"failed-run"};function Fx(e){return Object.entries(e.fb).map(([t,n])=>{let[r,s]=t.split(" ");return{cmd:s||"other",reason:Mx[r]??"no-rule",count:n.n,tokens:F(n.r)}}).sort((t,n)=>n.tokens-t.tokens||n.count-t.count)}async function kt(e=Cn(),t=0,n){let r=eo();for(let $ of(await ec(e,t,n)).values())Ox(r,$);let s=F(r.r),o=F(r.f),i=Math.max(0,s-o),a=s?Math.round(i/s*100):0,c=Math.floor(Date.now()/1e3),l=r.t0!=null?Math.max(1,Math.ceil((c-r.t0)/86400)):1,u=Math.max(0,F(r.mr)-F(r.mf)),d={};for(let[$,I]of Object.entries(r.prov))d[$]=Math.max(0,F(I.r)-F(I.f));let f=Object.entries(r.cmds).map(([$,I])=>{let H=F(I.r),V=H-F(I.f),q=F(I.rr??0),et=q?Math.round((q-F(I.rf??0))/q*100):0;return{cmd:$,count:I.n,compressedCount:I.nc,savedTokens:V,avgPct:H?Math.round(V/H*100):0,reducedPct:et,native:!I.sh}}).sort(($,I)=>I.savedTokens-$.savedTokens).slice(0,10),p=F(r.sr),m=p?Math.round((p-F(r.sf))/p*100):0,v=F(r.or),S=F(r.of);return{count:r.n,compressedCount:r.nc,rawTokens:s,filteredTokens:o,savedTokens:i,modeledSavedTokens:u,savedPct:a,sinceDays:l,savedByProvider:d,shellCompressedCount:r.sn,shellSavedPct:m,byCommand:f,observed:{count:r.n,rawTokens:v,filteredTokens:S,savedTokens:v-S,savedPct:r.or?Math.round((r.or-r.of)/r.or*1e4)/100:null,expandedCount:r.x},agent:{count:r.n-r.tn,rawTokens:F(r.or-r.tr),filteredTokens:F(r.of-r.tf),savedPct:r.or-r.tr?Math.round((r.or-r.tr-(r.of-r.tf))/(r.or-r.tr)*1e4)/100:null},terminal:{count:r.tn,rawTokens:F(r.tr),savedTokens:F(r.tr)-F(r.tf)},restoration:{count:r.rn,tokens:F(r.rb)},byRule:Dx(r),fallbacks:Fx(r),oversizedExcluded:r.ox,window:{firstAt:r.t0,lastAt:r.t1},measurement:{scope:"tool-output",legacyScope:"reduced-outputs",tokenMethod:"bytes/4",tokenCounts:"estimated",billing:"not-measured"}}}function L(e){return e<0?`-${L(-e)}`:e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function $p(e){return e<0?`-${$p(-e)}`:e>0&&e<.01?"<$0.01":`$${e.toFixed(2)}`}function se(e){return String(e).replace(/\B(?=(\d{3})+(?!\d))/g,",")}var to="\x1B[38;2;245;176;65m",no="\x1B[0m";function Pr(e,t){let n="\u2588".repeat(e);return t?`${to}${n}${no}`:n}function Rp(e,t){if(e.count===0&&!e.oversizedExcluded)return` No data yet. Run a few commands to measure your output savings.
167
+ Watch this session live: tkr session`;let n=e.agent??{count:e.count,rawTokens:e.observed?.rawTokens??e.rawTokens,filteredTokens:e.observed?.filteredTokens??e.filteredTokens,savedPct:e.observed?.savedPct??e.savedPct},r=n.rawTokens-n.filteredTokens,s=n.rawTokens?Math.round(r/n.rawTokens*1e3)/10:0,o=f=>new Date(f*1e3).toISOString().slice(0,10),i=e.window?.firstAt!=null?` (since ${o(e.window.firstAt)})`:"",a=f=>` ${f.padEnd(16)}`,c=Math.max(0,Math.min(24,Math.round(Math.max(0,s)/100*24))),l=Pr(c,t.color)+"\u2591".repeat(24-c),u=$p(r/1e6*t.pricePerMtok),d=e.terminal?.count??0;return[` Tokmizer savings \xB7 ${t.subtitle??"all time"}${i}`," "+"\u2550".repeat(60),"",`${a("Commands")}${se(n.count)} \xB7 ${se(e.compressedCount)} reduced`,`${a("Tokens in")}${L(n.rawTokens)}`,`${a("Tokens out")}${L(n.filteredTokens)}`,`${a(r>=0?"Tokens saved":"Tokens added")}${L(Math.abs(r))} (${Math.abs(s)} %)`,`${a("Efficiency")}${l} ${Math.max(0,s)} %`,...t.periods?.length?["",...t.periods.map(f=>`${a(f.label)}${rc(f.savedTokens)} \xB7 ${se(f.count)} commands`)]:[],`${a("API value")}${u} at $${t.pricePerMtok.toFixed(2)}/M input tokens`,...e.restoration?.count?[`${a("Restored")}${L(e.restoration.tokens)} tokens, deducted \xB7 ${se(e.restoration.count)} restore${e.restoration.count===1?"":"s"}`]:[],...t.restoreCache?.entries?[`${a("Restore cache")}${se(t.restoreCache.entries)} entr${t.restoreCache.entries===1?"y":"ies"} \xB7 ${Hx(t.restoreCache.bytes)} \xB7 kept ${t.restoreCache.kept}`]:[],...e.modeledSavedTokens>0?[`${a("Reducer (est.)")}${L(e.modeledSavedTokens)} tokens, not included`]:[],...jx(e.byCommand,t.color),""," Estimates from output size (bytes \xF7 4), not your bill.",...d?[` ${se(d)} terminal commands with no agent are not counted.`]:[],...e.oversizedExcluded?[` ${se(e.oversizedExcluded)} Bash outputs over ${se(wp)} characters are not counted: Claude Code shows at most that much.`]:[],""].join(`
168
+ `)}async function Ap(e=Cn(),t=0,n){return[...(await ec(e,t,n)).entries()].filter(([,r])=>r.n>0).sort(([r],[s])=>r<s?-1:r>s?1:0).map(([r,s])=>({day:r,count:s.n,savedTokens:F(s.or)-F(s.of)}))}function jx(e,t){let n=(e??[]).filter(i=>i.savedTokens>0).slice(0,10);if(n.length===0)return[];let r=n[0].savedTokens,s=" "+"\u2500".repeat(60),o=[""," By command",s,` ${" #".padEnd(4)}${"Command".padEnd(20)}${"Runs".padStart(7)}${"Saved".padStart(9)}${"Avg%".padStart(7)} Impact`,s];return n.forEach((i,a)=>{let c=Math.max(1,Math.round(i.savedTokens/r*10)),l=Pr(c,t)+"\u2591".repeat(10-c),u=(i.native?`${i.cmd} (tool)`:i.cmd).slice(0,19);o.push(` ${(String(a+1)+".").padStart(3)} ${u.padEnd(20)}${se(i.count).padStart(7)}${L(i.savedTokens).padStart(9)}${(String(i.avgPct)+" %").padStart(7)} ${l}`)}),o.push(s),o}function Hx(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function tc(e,t){return[` ${e} \xB7 ${t??"all time"}`," "+"\u2550".repeat(60),""]}function Cp(e,t){let n=e.byRule??[],r=n.filter(a=>a.kind==="built-in"||a.kind==="user").slice(0,15),s=n.find(a=>a.kind==="none"),o=n.find(a=>a.kind==="unattributed"),i=tc("Tokmizer savings by rule",t.subtitle);if(r.length===0&&!s)i.push(" No run with rule details in this scope yet.");else{let a=" "+"\u2500".repeat(60),c=Math.max(1,...r.map(l=>l.savedTokens));i.push(` ${" #".padEnd(4)}${"Rule".padEnd(26)}${"Runs".padStart(6)}${"Saved".padStart(8)}${"Avg%".padStart(7)} Impact`,a),r.forEach((l,u)=>{let d=l.savedTokens>0?Math.max(1,Math.round(l.savedTokens/c*10)):0,f=`${l.kind==="user"?"your filter":"built-in"} \xB7 ${l.rule}`.slice(0,25);i.push(` ${(String(u+1)+".").padStart(3)} ${f.padEnd(26)}${se(l.count).padStart(6)}${L(l.savedTokens).padStart(8)}${(String(l.avgPct)+" %").padStart(7)} ${Pr(d,t.color)}${"\u2591".repeat(10-d)}`)}),i.push(a),s&&i.push(` No rule matched: ${se(s.count)} run${s.count===1?"":"s"}, ${L(s.rawTokens)} tokens left unchanged (tkr gain --failures).`),i.push(" Built-in rules are grouped by command.")}return o?.count&&i.push(` ${se(o.count)} older run${o.count===1?"":"s"} recorded before rule tracking are not attributed.`),i.push(""),i.join(`
169
+ `)}var fp={"no-rule":{short:"no rule",note:"no rule: neither a built-in nor a custom filter matches this command (see tkr doctor)."},"no-gain":{short:"nothing to cut",note:"nothing to cut: a rule matched, but the output was short or would not shrink."},"failed-run":{short:"failed run, in full",note:"failed run, in full: error output is kept whole so the agent can debug."}};function Op(e,t){let n=(e.fallbacks??[]).slice(0,15),r=(e.byRule??[]).find(o=>o.kind==="unattributed"),s=tc("Commands left unchanged",t.subtitle);if(n.length===0)s.push(" No command was left unchanged in this scope.");else{let o=" "+"\u2500".repeat(60);s.push(` ${" #".padEnd(4)}${"Command".padEnd(22)}${"Runs".padStart(6)}${"Tokens".padStart(9)} Reason`,o),n.forEach((i,a)=>{s.push(` ${(String(a+1)+".").padStart(3)} ${i.cmd.slice(0,21).padEnd(22)}${se(i.count).padStart(6)}${L(i.tokens).padStart(9)} ${fp[i.reason].short}`)}),s.push(o);for(let i of["no-rule","no-gain","failed-run"])n.some(a=>a.reason===i)&&s.push(` ${fp[i].note}`)}return r?.count&&s.push(` ${se(r.count)} older run${r.count===1?"":"s"} recorded before this report existed have no details.`),s.push(""),s.join(`
170
+ `)}var An={pro:{plan:"Claude Pro",multiplier:1},"5x":{plan:"Claude Max 5x",multiplier:5},"20x":{plan:"Claude Max 20x",multiplier:20}},qa=44e3,Ya=144;function nc(e,t){let n=Math.max(0,e.agent?e.agent.rawTokens-e.agent.filteredTokens:e.observed?.savedTokens??e.savedTokens),r=Math.max(1,e.sinceDays),s=Math.round(n/r*30),o=qa*Ya*An[t].multiplier;return{tier:t,plan:An[t].plan,savedTokens:n,days:r,monthlySavedTokens:s,monthlyBudgetTokens:o,pct:Math.round(s/o*1e3)/10,basis:"estimate",formula:`savedTokens / days * 30 / (${qa} tokens per 5-hour window * ${Ya} windows * ${An[t].multiplier})`}}function Ip(e,t){let n=s=>` ${s.padEnd(16)}`,r=Math.max(0,Math.min(24,Math.round(Math.min(100,e.pct)/100*24)));return[...tc("Tokmizer quota estimate",t.subtitle),`${n("Plan (assumed)")}${e.plan}`,`${n("Tokens saved")}${L(e.savedTokens)} over ${e.days} day${e.days===1?"":"s"}`,`${n("Per month")}${L(e.monthlySavedTokens)}${e.days<30?" (projected)":""}`,`${n("Plan budget")}${L(e.monthlyBudgetTokens)} per month (assumed)`,`${n("Quota kept")}${Pr(r,t.color)}${"\u2591".repeat(24-r)} ${e.pct} %`,""," Estimate, not a plan limit or a bill. Formula: tokens saved \xF7 days \xD7 30",` \xF7 (${L(qa)} tokens per 5-hour window \xD7 ${Ya} windows \xD7 ${An[e.tier].multiplier}).`," Anthropic does not publish plan limits in tokens and applies them per"," rolling 5-hour window. Each saved token is counted once.",""].join(`
171
+ `)}function rc(e){return e<0?`${L(-e)} added`:`${L(e)} saved`}function Pp(e,t){if(e.length===0)return"";let n=(l,u,d)=>` ${l.padEnd(11)}${se(u).padStart(4)}${(d<0?`${L(-d)} added`:L(d)).padStart(13)}`,r=" "+"Day".padEnd(11)+"Cmds".padStart(4)+"Saved".padStart(13),s=" "+"\u2500".repeat(31),o=e.map(l=>n(`${l.day.slice(8,10)}/${l.day.slice(5,7)}`,l.count,l.savedTokens)),i=e.reduce((l,u)=>l+u.count,0),a=e.reduce((l,u)=>l+u.savedTokens,0),c=n("Total",i,a);return[r,s,...o,s,t.color?`${to}${c}${no}`:c,""].join(`
172
+ `)}function Lx(e,t){let n=F(t.or-t.tr),r=F(t.of-t.tf),s=n-r;return{day:e,count:t.n-t.tn,rawTokens:n,filteredTokens:r,savedTokens:s,pct:n?Math.round(s/n*1e3)/10:0}}async function sc(e=Cn(),t=0,n){return[...(await ec(e,t,n)).entries()].filter(([,r])=>r.n-r.tn>0).sort(([r],[s])=>r<s?-1:r>s?1:0).map(([r,s])=>Lx(r,s))}function Np(e){let t=["date,commands,tokens_in,tokens_out,tokens_saved,percent"];for(let n of e)t.push(`${n.day},${n.count},${n.rawTokens},${n.filteredTokens},${n.savedTokens},${n.pct}`);return t.join(`
173
+ `)+`
174
+ `}function zx(e){return`${e.slice(8,10)}/${e.slice(5,7)}`}function Dp(e,t){let n=new Map(e.map(p=>[p.day,p])),r=t.sinceTs>0?gt(t.sinceTs):e[0]?.day??gt(t.nowTs),s=[],o=new Date(Number(r.slice(0,4)),Number(r.slice(5,7))-1,Number(r.slice(8,10))),i=gt(t.nowTs);for(;s.length<366;){let p=gt(Math.floor(o.getTime()/1e3));if(p>i)break;s.push(p),o.setDate(o.getDate()+1)}let a=30,c=Math.max(0,...e.map(p=>p.savedTokens)),l=" "+"\u2500".repeat(a+18),u=[` Tokens saved per day \xB7 ${t.subtitle}`,l];for(let p of s){let m=n.get(p)?.savedTokens??0,v=c>0&&m>0?Math.max(1,Math.round(m/c*a)):0,S=m<0?`${L(-m)} added`:L(m);u.push(` ${zx(p)} ${Pr(v,t.color)}${"\u2591".repeat(a-v)} ${S.padStart(11)}`)}let d=e.reduce((p,m)=>p+m.savedTokens,0),f=` ${"Total".padEnd(5)} ${"".padEnd(a)} ${rc(d).padStart(11)}`;return u.push(l,t.color?`${to}${f}${no}`:f,""," Estimates from output size (bytes \xF7 4), not your bill.",""),u.join(`
175
+ `)}async function Mp(e=Cn(),t=0,n,r=20){return(await Sp(e,t,n)).filter(s=>!s.m&&s.h!=="shell").slice(-r).map(s=>{let o=F(s.r),i=F(s.f);return{at:s.t,cmd:s.c??"(unlabeled)",rawTokens:o,filteredTokens:i,savedTokens:o-i}})}function Ux(e){let t=new Date(e*1e3);return`${gt(e)} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function Fp(e,t){if(e.length===0)return` No commands recorded in this scope.
176
+ `;let n=" "+"\u2500".repeat(66),r=[` Last ${e.length} commands \xB7 ${t.subtitle}`,n,` ${"Time".padEnd(18)}${"Command".padEnd(22)}${"In".padStart(8)}${"Out".padStart(8)}${"Saved".padStart(10)}`,n];for(let i of e){let a=i.savedTokens<0?`-${L(-i.savedTokens)}`:L(i.savedTokens);r.push(` ${Ux(i.at).padEnd(18)}${i.cmd.slice(0,21).padEnd(22)}${L(i.rawTokens).padStart(8)}${L(i.filteredTokens).padStart(8)}${a.padStart(10)}`)}let s=e.reduce((i,a)=>i+a.savedTokens,0),o=` ${"Total".padEnd(40)}${"".padStart(16)}${rc(s).padStart(10)}`;return r.push(n,t.color?`${to}${o}${no}`:o,""),r.join(`
177
+ `)}function oc(e){return Wa(e)||e}z();hi();import{appendFileSync as Bx,chmodSync as Jx,mkdirSync as Vx,existsSync as zp,readFileSync as Up,rmSync as Zx}from"node:fs";import{dirname as Gx,join as Kx}from"node:path";var Wx="usage.jsonl",jp=2e4,Hp=2*1024*1024;function ic(){return Kx(w(),Wx)}function ac(e,t,n=ic()){try{let r=Gx(n);zp(r)||Vx(r,{recursive:!0,mode:448});let s=e.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64)||"unknown";Bx(n,`{"t":${Math.floor(Date.now()/1e3)},"s":"${s}","o":${t?1:0}}
178
+ `,{mode:384}),Jx(n,384),ps(n,Hp,Hp/2)}catch{}}function Bp(e=ic()){try{if(!zp(e))return 0;let t=Up(e,"utf8").split(`
179
+ `).filter(n=>n.trim()!=="").length;return Zx(e,{force:!0}),t}catch{return 0}}function Lp(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return typeof n.t!="number"||typeof n.s!="string"||typeof n.o!="number"?null:{s:n.s,o:n.o}}catch{return null}}function Jp(e=ic()){let t;try{t=Up(e,"utf8").split(`
180
+ `).filter(o=>o.trim()!=="")}catch{return{sessionId:null,total:0,routed:0,pct:0}}t.length>jp&&(t=t.slice(t.length-jp));let n=null;for(let o=t.length-1;o>=0;o-=1){let i=Lp(t[o]??"");if(i){n=i.s;break}}if(n===null)return{sessionId:null,total:0,routed:0,pct:0};let r=0,s=0;for(let o of t){let i=Lp(o);!i||i.s!==n||(r+=1,i.o===1&&(s+=1))}return{sessionId:n,total:r,routed:s,pct:r?Math.round(s/r*100):0}}function Vp(e){return e.total===0?" No commands yet this session.":[" This session"," "+"\u2500".repeat(40),` ${e.total} commands \xB7 ${e.routed} handled by tkr (${e.pct} %)`," The rest (cd, echo\u2026) has nothing to optimize.",""].join(`
181
+ `)}Ss();Es();Ht();Ai();Ke();z();Ir();ms();Ls();zs();import{fileURLToPath as tn}from"node:url";import{existsSync as so,readFileSync as lc,readdirSync as uc}from"node:fs";import{homedir as On}from"node:os";import{fileURLToPath as qx}from"node:url";import{dirname as Qp,join as j,resolve as Yx}from"node:path";We();var Xx=new Set(["tkr","tkr-exec","token","claude","cd","export","source","echo","mkdir","rm","mv","cp","chmod","ln","true","false",":","test","[","exit","return","nohup","sudo","doas","env"]),Qx=new Set(["for","while","until","if","then","else","elif","fi","do","done","case","esac","select","function","time","coproc","in","!","[[","]]","{","}",".","declare","typeset","local","readonly","unset","set","shift","trap","wait","read","eval","exec","break","continue","pushd","popd","dirs","alias","unalias","hash","ulimit","umask","getopts","let","shopt","builtin","command","compgen","complete","disown","suspend","jobs","fg","bg","kill","history","fc","bind","enable","caller","type"]),Zp=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),Gp="(?:dev|start|serve|watch|preview)",eS=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${Gp}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${Gp}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|php\\s+-l(?:\\s|$)|php\\s+(?:\\S*/)?(?:phpunit|pest|paratest|phpstan|pint|ecs|php-cs-fixer|psalm|rector|run-tests\\.php)(?:\\s|$)|php\\s+artisan\\s+(?!(?:serve|tinker|queue:work|queue:listen|horizon|octane:start|reverb:start|schedule:work|pail|dev)(?:\\s|$))\\S)`),tS=/(?:^|\s)--watch(?:\s|=|$)/;function nS(e){return eS.test(e)&&!tS.test(e)}var rS=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,sS=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,em=3;function tm(e){let t=rS.exec(e);if(!t)return null;let n=t[2]==="fish";if(n&&t[3]!=="-c")return null;let r=t[4],s=t[1].length+1,o=e.indexOf(r,s);if(o<=s)return null;let i=e.slice(o+1);if(i&&!/^\s/.test(i))return null;let a=e.slice(s,o);return r==='"'&&/[$`\\!]/.test(a)||n&&sS.test(a)?null:{script:a,start:s,end:o,quote:r}}var oS=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function iS(e){return fc(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=rm(n.text);return r!==""&&!oS.has(r)&&!dc.test(r)}).length>1}function aS(e,t,n){if(n>=em)return null;let r=tm(e);if(!r)return null;let{script:s,start:o,end:i,quote:a}=r,c=om(s,t,n+1);if(c===s||a==='"'&&/["$`]/.test(c))return null;let l=a==="'"?c.replace(/'/g,"'\\''"):c,u=`${e.slice(0,o)}${l}${e.slice(i)}`;return iS(s)?`${t} ${u}`:u}var Kp=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*f[a-zA-Z]*)(?:\s|=|$)/,cS=new Set(["docker","podman","kubectl","nerdctl","docker-compose","stern","flyctl"]);function lS(e,t){let n=oo(t);return n==="tail"||n==="journalctl"?Kp.test(e):n==="stern"?!0:cS.has(n)?/\blogs?\b/.test(e)&&Kp.test(e):!1}var dc=/^[A-Za-z_][A-Za-z0-9_]*\+?=/,uS=/^[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/,dS=/(?:^|[;&|\n({])\s*[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/;function oo(e){let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function nm(e){let t=new Array(e.length).fill(!1),n=[],r=0;for(;r<e.length;){let s=e[r],o=e[r+1],i=n[n.length-1];if(i==="'"){s==="'"&&n.pop(),r+=1;continue}if(s==="\\"){if(o===void 0)return null;r+=2;continue}if(i==="$'"){s==="'"&&n.pop(),r+=1;continue}if(s==="$"&&(o==="("||o==="{")){n.push(o==="("?")":"}"),r+=2;continue}if(s==="`"){i==="`"?n.pop():n.push("`"),r+=1;continue}if(i==='"'){s==='"'&&n.pop(),r+=1;continue}if(s==="$"&&o==="'"){n.push("$'"),r+=2;continue}if(s==="'"||s==='"'){n.push(s),r+=1;continue}if(s==="("||s==="{"&&i==="}"){n.push(s==="("?")":"}"),r+=1;continue}if(s===i){n.pop(),r+=1;continue}if(s===")"&&i===void 0)return null;t[r]=i===void 0,r+=1}return n.length===0?t:null}function Wp(e){let t=nm(e);if(!t)return!0;for(let n=0;n<e.length;n++)if(t[n]&&e[n]===">")return!0;return!1}function fc(e){let t=nm(e);if(!t)return[{kind:"cmd",text:e,unsafe:!0}];let n=[],r="",s=0,o=()=>{r.length>0&&(n.push({kind:"cmd",text:r}),r="")},i=(a,c)=>{o(),n.push({kind:"sep",text:a}),s+=c};for(;s<e.length;){let a=e[s],c=e[s+1];if(t[s]){if(a===">"&&c==="|"){r+=">|",s+=2;continue}if(a==="&"&&c==="&"){i("&&",2);continue}if(a==="&"&&c!==">"){let l=r.replace(/\s+$/,""),u=l[l.length-1];if(u!==">"&&u!=="<"&&u!=="&"){i("&",1);continue}}if(a==="|"&&c==="|"){i("||",2);continue}if(a==="|"&&c==="&"){i("|&",2);continue}if(a===";"&&c===";"){let l=e[s+2]==="&";i(l?";;&":";;",l?3:2);continue}if(a===";"||a===`
182
+ `||a==="|"){i(a,1);continue}}r+=a,s+=1}return o(),n}function rm(e){return e.trim().split(/\s+/)[0]??""}function sm(e,t=process.platform){try{let n=Qp(qx(import.meta.url)),r=t==="win32",s=e&&e!=="claude-code"&&e!=="codex"&&!r?`TOKMIZER_HOST=${e} `:"";if(r&&(!e||e==="claude-code")){let a=j(n,"..","bin","tkr-exec.exe");if(so(a))return`'${a.replace(/\\/g,"/").replace(/'/g,"'\\''")}'`}let o=j(n,"..","bin","tkr-exec");if(!r&&so(o))return`${s}'${o.replace(/'/g,"'\\''")}'`;if(Ce()){let a=r?process.execPath.replace(/\\/g,"/"):process.execPath;return`${s}'${a.replace(/'/g,"'\\''")}' exec`}let i=j(n,"..","bin","tkr-exec.js");return so(i)?`${s}node '${i.replace(/'/g,"'\\''")}'`:null}catch{return null}}function fS(e,t="tkr-exec"){return om(e,t,0)}function om(e,t,n){if(e.includes("<<")||dS.test(e))return e;let r=fc(e),s=[];for(let o=0;o<r.length;o++){let i=r[o];if(i.kind==="sep"||i.unsafe){s.push(i.text);continue}let a=i.text.trim();if(!a){s.push(i.text);continue}let c=rm(a),l=r[o+1],u=l?.kind==="sep"&&(l.text==="|"||l.text==="|&"),d=l?.kind==="sep"&&l.text==="&",f=!u&&!d&&!Wp(i.text)&&!i.text.includes("<(")&&!i.text.includes(">(")?aS(a,t,n):null;if(f!==null){s.push(`${i.text.match(/^\s*/)?.[0]??""}${f}${i.text.match(/\s*$/)?.[0]??""}`);continue}if(a===t||a.startsWith(t)&&/^\s/.test(a.slice(t.length))||Xx.has(c)||Qx.has(c)||(Zp.has(c)||Zp.has(oo(c)))&&!nS(a)||dc.test(c)||c.startsWith("(")||c.startsWith("#")||c.startsWith("<")||c.startsWith(">")||uS.test(a)||lS(a,c)||c.endsWith(")")||u||d||Wp(i.text)||i.text.includes("<(")||i.text.includes(">(")||c==="node"&&a.includes("tkr-exec.js")){s.push(i.text);continue}let p=i.text.match(/^\s*/)?.[0]??"",m=i.text.match(/\s*$/)?.[0]??"";s.push(`${p}${t} ${a}${m}`)}return s.join("")}var pS=new Set(["cd","cat","head","tail","ls","tree","find","grep","rg","wc","nl","sort","cut","diff","stat","file","du","df","ps","jq","yq","pwd","which"]),mS=new Set(["log","diff","show","status","blame","ls-files","rev-parse","describe","shortlog"]),hS={find:/^-(?:delete|exec|execdir|ok|okdir|fprint|fls)/,sort:/^(?:-[^-]*o|--output|--compress-program)/,rg:/^(?:--pre|-[^-]*z|--search-zip)/,yq:/^(?:-[^-]*[is]|--inplace|--split-exp)/,file:/^(?:-C|--compile)/,tree:/^(?:-o|--output|-R$|-H$)/,git:/^(?:--output|--ext-diff|--textconv|-c$|--exec-path|--git-dir|--work-tree)/,eslint:/^--fix/},ro=["test","run test","run build","run lint","run typecheck"],gS={npm:new Set(ro),pnpm:new Set([...ro,"build","lint","typecheck"]),yarn:new Set([...ro,"build","lint","typecheck"]),bun:new Set(ro),cargo:new Set(["test","build","check","clippy"]),go:new Set(["test","build","vet"]),mvn:new Set(["test","compile","verify"]),gradle:new Set(["test","build","check"]),dotnet:new Set(["test","build"])},kS=new Set(["pytest","tsc","vitest","jest","eslint","mypy"]);function im(e,t,n=0){if(/\$|`|<\(|>\(|\\\r?\n/.test(e)||/>/.test(e.replace(/2>&1|[12]?>\s*\/dev\/null/g,"")))return!1;for(let r of fc(e)){if(r.kind==="sep")continue;if(r.unsafe)return!1;let s=n<em?tm(r.text.trim()):null;if(s){if(!im(s.script,t,n+1))return!1;continue}let o=r.text.trim().split(/\s+/).filter(Boolean).map(l=>l.replace(/['"\\]/g,""));if(o.length===0)continue;if(o.some(l=>dc.test(l)))return!1;let i=oo(o[0]);if(i!==o[0])return!1;let a=hS[i];if(a&&o.slice(1).some(l=>a.test(l)))return!1;if((i==="git"?mS.has(o[1]??""):pS.has(i))||t&&kS.has(i))continue;let c=t?gS[i]:void 0;if(!(c&&(c.has(o[1]??"")||o[1]==="run"&&c.has(`run ${o[2]??""}`))))return!1}return!0}function yS(e,t){if(!so(e))return"missing";try{let n=lc(e,"utf8");return JSON.parse(t?am(n):n)}catch{return"unreadable"}}function am(e){let t="",n=!1;for(let r=0;r<e.length;r++){let s=e[r];if(n){t+=s,s==="\\"?t+=e[++r]??"":s==='"'&&(n=!1);continue}if(s==='"')n=!0,t+=s;else if(s==="/"&&e[r+1]==="/"){for(;r<e.length&&e[r]!==`
183
+ `;)r++;t+=`
184
+ `}else if(s==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=s}return t.replace(/,(\s*[}\]])/g,"$1")}function io(e){let t=[],n=Yx(e);for(;;){t.push(n);let r=Qp(n);if(r===n)return t;n=r}}function wS(){let e=process.platform==="darwin"?"/Library/Application Support/ClaudeCode":process.platform==="win32"?"C:\\Program Files\\ClaudeCode":"/etc/claude-code",t=[j(e,"managed-settings.json")];try{for(let n of uc(j(e,"managed-settings.d")))n.endsWith(".json")&&t.push(j(e,"managed-settings.d",n))}catch{return t}return t}function Dr(e,t,n,r){let s=[];for(let o of e){let i=yS(o,t);if(i!=="missing"&&(i==="unreadable"||!Pe(i)||!n(i,s)))return"unreadable"}return{matchers:s,complete:r}}function Nr(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function cm(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR}}function bS(e,t){let n=[j(On(),".claude"),t.configDir].filter(o=>!!o),r=[t.projectDir,...io(e)].filter(o=>!!o),s=[...wS(),...n.flatMap(o=>[j(o,"settings.json"),j(o,"settings.local.json")]),...r.flatMap(o=>[j(o,".claude","settings.json"),j(o,".claude","settings.local.json")])];return Dr(s,!1,(o,i)=>{let a=o.permissions;if(a===void 0)return!0;if(!Pe(a))return!1;for(let c of["deny","ask"]){let l=Nr(a[c]);if(!l)return!1;for(let u of l){let d=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(u);d&&i.push(In((d[1]??"*").replace(/:\*$/," *")))}}return!0},!0)}function vS(e){let t=[j(On(),".cursor","cli-config.json"),...io(e).map(n=>j(n,".cursor","cli.json"))];return Dr(t,!0,(n,r)=>{let s=n.permissions;if(s===void 0)return!0;if(!Pe(s))return!1;let o=Nr(s.deny);if(!o)return!1;for(let i of o){let a=/^\s*Shell\s*(?:\(([\s\S]*)\))?\s*$/.exec(i);if(!a)continue;let c=a[1]??"*",l=c.indexOf(":");r.push(In(l===-1?`${c} *`:`${c.slice(0,l)} ${c.slice(l+1)}`))}return!0},!1)}function xS(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var lm=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function SS(e,t){let n=e.tools;if(n!==void 0&&!Pe(n))return!1;let r=[Nr(e.excludeTools),Nr(Pe(n)?n.exclude:void 0)];for(let s of r){if(!s)return!1;for(let o of s){let i=lm.exec(o);i&&t.push(In(i[1]===void 0?"*":`${i[1]}*`))}}return!0}function qp(e){try{return JSON.parse(e)}catch{return null}}function _S(e){let t=e.trim();if(t.startsWith('"""')||t.startsWith("'''"))return null;if(t.startsWith("[")){if(!/\]\s*(?:#.*)?$/.test(t))return null;let n=[];for(let r of t.matchAll(/"((?:\\.|[^"\\])*)"|'([^']*)'/g)){let s=r[2]??qp(`"${r[1]}"`);if(s===null)return null;n.push(s)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?qp(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function ES(e,t){for(let n of e.split(/^\s*\[\[\s*rule\s*\]\]\s*$/m).slice(1)){let r={};for(let c of n.split(/\r?\n/)){if(/^\s*\[/.test(c))break;let l=/^\s*([A-Za-z_]+)\s*=\s*(.*)$/.exec(c);if(!l)continue;let u=_S(l[2]);if(u===null)return!1;r[l[1]]=u}let s=r.decision;if(s!=="deny"&&s!=="ask_user"||!(r.toolName===void 0?["*"]:[r.toolName].flat()).some(c=>c==="*"||lm.test(c)))continue;let i=r.commandPrefix===void 0?[]:[r.commandPrefix].flat(),a=[r.commandRegex,r.argsPattern].flat().filter(c=>typeof c=="string");if(i.length===0&&a.length===0){t.push(()=>!0);continue}for(let c of i)t.push(In(`${c}*`));for(let c of a){let l;try{l=new RegExp(c)}catch{return!1}t.push(u=>l.test(JSON.stringify({command:u}))||pc(l,u))}}return!0}function Yp(e){try{return uc(e).filter(t=>t.endsWith(".toml")).map(t=>j(e,t))}catch{return[]}}function TS(e){let t=xS(),n=[j(t,"system-defaults.json"),j(t,"settings.json"),process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH,process.env.GEMINI_CLI_SYSTEM_DEFAULTS_PATH,j(On(),".gemini","settings.json"),...io(e).map(s=>j(s,".gemini","settings.json"))].filter(s=>!!s),r=Dr(n,!0,SS,!1);if(r==="unreadable")return r;for(let s of[...Yp(j(On(),".gemini","policies")),...Yp(j(t,"policies"))]){let o;try{o=lc(s,"utf8")}catch{return"unreadable"}if(!ES(o,r.matchers))return"unreadable"}return r}function cc(e,t){if(e===void 0)return!0;if(typeof e=="string")return e!=="allow"&&t.push(()=>!0),!0;if(!Pe(e))return!1;for(let n of["bash","shell","*"]){let r=e[n];if(r!==void 0){if(typeof r=="string"){r!=="allow"&&t.push(()=>!0);continue}if(!Pe(r))return!1;for(let[s,o]of Object.entries(r))o!=="allow"&&t.push(In(s.replace(/\?/g,"*")))}}return!0}function Xp(e,t){if(e.permissions!==void 0||!cc(e.permission,t))return!1;for(let n of["agent","agents","mode"]){let r=e[n];if(r!==void 0){if(!Pe(r))return!1;for(let s of Object.values(r))if(Pe(s)&&(s.permissions!==void 0||!cc(s.permission,t)))return!1}}return!0}function $S(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=uc(j(t,n))}catch{continue}for(let s of r)try{if(s.endsWith(".md")&&/permission/i.test(lc(j(t,n,s),"utf8")))return!0}catch{return!0}}return!1}function RS(e){let t=j(process.env.XDG_CONFIG_HOME||j(On(),".config"),"opencode"),n=io(e),r=[t,...n.map(a=>j(a,".opencode"))];if($S(r))return"unreadable";let s=["opencode.json","opencode.jsonc","config.json"],o=[...s.map(a=>j(t,a)),process.env.OPENCODE_CONFIG,...n.flatMap(a=>[...s.slice(0,2).map(c=>j(a,c)),...s.slice(0,2).map(c=>j(a,".opencode",c))])].filter(a=>!!a),i=Dr(o,!0,Xp,!0);if(i==="unreadable")return i;for(let a of[process.env.OPENCODE_CONFIG_CONTENT,process.env.OPENCODE_PERMISSION]){if(!a)continue;let c;try{c=JSON.parse(am(a))}catch{return"unreadable"}if(!(a===process.env.OPENCODE_PERMISSION?cc(c,i.matchers):Pe(c)&&Xp(c,i.matchers)))return"unreadable"}return i}function AS(){return Dr([j(On(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!Pe(n))return!1;for(let r of["deny","ask"]){let s=Nr(n[r]);if(!s)return!1;for(let o of s){let i=/^\s*command\s*\(([\s\S]*)\)\s*$/.exec(o);if(!i)continue;let a=i[1].trim();if(!a.startsWith("regex:")){t.push(In(a==="*"?"*":`${a} *`));continue}let c;try{c=new RegExp(a.slice(6))}catch{return!1}t.push(l=>pc(c,l))}}return!0},!1)}function Pe(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function CS(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function OS(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(CS).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var IS=512;function PS(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(oo)]}function pc(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of PS(t)){if(n.length>IS)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function In(e){let t=OS(e);return n=>pc(t,n)}var NS={"claude-code":bS,cursor:vS,"gemini-cli":TS,opencode:RS,antigravity:AS},DS=new Set(["codex"]);function MS(e,t,n,r=cm()){let s=NS[t],o=s?s(n??process.cwd(),r):{matchers:[],complete:!1};return o==="unreadable"||o.matchers.some(i=>i(e))?!1:o.complete||im(e,!DS.has(t))}function um(e,t,n,r){if(!n)return null;let s=MS(e,t.host,t.cwd,t.claudeDirs??cm())?fS(e,n):e;return r(t.sessionId,s!==e),s===e?null:s}var mc=["opencode","kilo","amp","vibe","antigravity","openclaw","pi","omp","hermes"];function FS(e){return typeof e=="string"&&mc.includes(e)}function dm(e,t,n="unknown",r=sm(t),s=ac){return e?um(e,{host:t,sessionId:n},r,s):null}function fm(e){let t,n;for(let r=0;r<e.length;r++){let s=e[r],o=e[r+1];if((s==="--host"||s==="--session")&&o!==void 0){s==="--host"?t=o:n=o,r+=1;continue}return null}return FS(t)?{host:t,...n?{session:n}:{}}:null}Us();$a();_a();async function pm(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf8")}We();Vs();Pn();Uc();wc();var re=process.env.TOKMIZER_BASE_URL??"https://tokmizer.com";async function Qe(){let e=[Ol(),await zu(),bo(Mr())].filter(t=>t!==null);return e.length?["",...e]:[]}async function mT(e){let t=`Usage: tkr migrate rtk [--dry-run] [--yes] [--shim] | tkr migrate rtk --undo
185
+ `,n=e.slice(1);if(e[0]!=="rtk"||n.some(v=>!["--dry-run","--yes","-y","--shim","--undo"].includes(v))||n.includes("--undo")&&n.length>1){process.stderr.write(t),process.exitCode=1;return}let{buildPlan:r,renderPlan:s,planHasWork:o,applyPlan:i,undoMigration:a,migrationApplied:c}=await Promise.resolve().then(()=>(Uc(),Oh));if(n.includes("--undo")){let v=await a();process.stdout.write(`${v.lines.join(`
186
+ `)}
187
+ `),v.ok||(process.exitCode=1);return}let l=Mr(),u=n.includes("--shim")?{tkr:xa(process.env.PATH??"",tn(import.meta.url))}:void 0,d=await r(l,u?{shim:u}:{});if(!(d.binary||d.dirs.length>0||d.filters.length>0||d.config.file||d.history||d.hooks.length>0)&&!d.shim){process.stdout.write(`rtk was not found on this machine: no rtk command, settings, history or agent hook. Nothing to migrate.
188
+ `);return}if(process.stdout.write(s(d)),!o(d)){process.stdout.write(c()?`Already migrated: nothing to change. Undo with: tkr migrate rtk --undo
189
+ `:`Nothing to change.
190
+ `);return}let p=n.includes("--yes")||n.includes("-y");if(n.includes("--dry-run")){process.stdout.write(`Dry run: nothing changed. Apply with: tkr migrate rtk --yes
191
+ `);return}if(!p&&process.stdin.isTTY&&process.stdout.isTTY){let S=(await import("node:readline/promises")).createInterface({input:process.stdin,output:process.stdout});try{p=["y","yes"].includes((await S.question("Apply these changes? [y/N] ")).trim().toLowerCase())}finally{S.close()}}if(!p){process.stdout.write(`Nothing changed. Apply with: tkr migrate rtk --yes
192
+ `);return}let m=await i(d);process.stdout.write(`
193
+ ${m.join(`
87
194
  `)}
88
- `:""),si(es(t),JSON.stringify({v:1,days:a}))}catch{return}finally{ci(n,{force:!0})}}async function pi(t,e){let r=e>0?Qn(e):"",n=new Map;for(let[o,i]of Object.entries(mi(t)))o>=r&&n.set(o,i);let s="";try{s=await oi(t,"utf8")}catch{}for(let o of s.split(`
89
- `)){let i=di(o);if(!i||i.t<e)continue;let a=Qn(i.t),c=n.get(a)??Mr();fi(c,i),n.set(a,c)}return n}function Lr(){return li(y(),Ql)}async function hi(t=Lr()){try{let r=(await oi(t,"utf8")).split(`
90
- `).filter(n=>n.trim()!=="").length;return await ri(t,{force:!0}),await ri(es(t),{force:!0}),r}catch{return 0}}function gi(t,e,r=Lr(),n=!1,s,o,i){if(!Number.isSafeInteger(t)||!Number.isSafeInteger(e)||t<0||e<0||t+e===0)return;let a=s?`,"h":${JSON.stringify(s)}`:"",c=o?`,"k":${JSON.stringify(o)}`:"",u=i?`,"c":${JSON.stringify(i.slice(0,24))}`:"",l=`{"t":${Math.floor(Date.now()/1e3)},"r":${t},"f":${e}${n?',"m":1':""}${a}${c}${u}}
91
- `;try{ql(y(),{recursive:!0,mode:448}),Yl(r,l,{mode:384}),Wl(r,384),sd(r)}catch{return}}function C(t){return Math.ceil(t/4)}function yi(t){if(!t.count)return null;let e=Math.round(t.compressedCount/t.count*100),r=(t.byCommand??[]).filter(s=>!s.native&&s.compressedCount===0).sort((s,o)=>o.count-s.count).slice(0,3).map(s=>s.cmd),n=r.length?` \xB7 top unchanged: ${r.join(", ")}`:"";return`${e}% of recorded outputs reduced (${t.compressedCount}/${t.count})${n}`}async function Ye(t=Lr(),e=0){let r=Mr();for(let P of(await pi(t,e)).values())rd(r,P);let n=C(r.r),s=C(r.f),o=Math.max(0,n-s),i=n?Math.round(o/n*100):0,a=Math.floor(Date.now()/1e3),c=r.t0!=null?Math.max(1,Math.ceil((a-r.t0)/86400)):1,u=Math.max(0,C(r.mr)-C(r.mf)),l={};for(let[P,R]of Object.entries(r.prov))l[P]=Math.max(0,C(R.r)-C(R.f));let g=Object.entries(r.cmds).map(([P,R])=>{let A=C(R.r),re=A-C(R.f),ne=C(R.rr??0),Vt=ne?Math.round((ne-C(R.rf??0))/ne*100):0;return{cmd:P,count:R.n,compressedCount:R.nc,savedTokens:re,avgPct:A?Math.round(re/A*100):0,reducedPct:Vt,native:!R.sh}}).sort((P,R)=>R.savedTokens-P.savedTokens).slice(0,10),w=C(r.sr),E=w?Math.round((w-C(r.sf))/w*100):0,$=C(r.or),Z=C(r.of);return{count:r.n,compressedCount:r.nc,rawTokens:n,filteredTokens:s,savedTokens:o,modeledSavedTokens:u,savedPct:i,sinceDays:c,savedByProvider:l,shellCompressedCount:r.sn,shellSavedPct:E,byCommand:g,observed:{count:r.n,rawTokens:$,filteredTokens:Z,savedTokens:$-Z,savedPct:r.or?Math.round((r.or-r.of)/r.or*1e4)/100:null,expandedCount:r.x},agent:{count:r.n-r.tn,rawTokens:C(r.or-r.tr),filteredTokens:C(r.of-r.tf),savedPct:r.or-r.tr?Math.round((r.or-r.tr-(r.of-r.tf))/(r.or-r.tr)*1e4)/100:null},terminal:{count:r.tn,rawTokens:C(r.tr),savedTokens:C(r.tr)-C(r.tf)},restoration:{count:r.rn,tokens:C(r.rb)},window:{firstAt:r.t0,lastAt:r.t1},measurement:{scope:"tool-output",legacyScope:"reduced-outputs",tokenMethod:"bytes/4",tokenCounts:"estimated",billing:"not-measured"}}}function he(t){return t<0?`-${he(-t)}`:t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":String(t)}function wi(t){return t<0?`-${wi(-t)}`:t>0&&t<.01?"<$0.01":`$${t.toFixed(2)}`}function gt(t){return String(t).replace(/\B(?=(\d{3})+(?!\d))/g,",")}var bi="\x1B[38;2;245;176;65m",ki="\x1B[0m";function vi(t,e){let r="\u2588".repeat(t);return e?`${bi}${r}${ki}`:r}function _i(t,e){if(t.count===0)return` No data yet. Run a few commands to measure your output savings.
92
- Watch this session live: tkr session`;let r=t.agent??{count:t.count,rawTokens:t.observed?.rawTokens??t.rawTokens,filteredTokens:t.observed?.filteredTokens??t.filteredTokens,savedPct:t.observed?.savedPct??t.savedPct},n=r.rawTokens-r.filteredTokens,s=r.rawTokens?Math.round(n/r.rawTokens*1e3)/10:0,o=w=>new Date(w*1e3).toISOString().slice(0,10),i=t.window?.firstAt!=null?` (since ${o(t.window.firstAt)})`:"",a=w=>` ${w.padEnd(16)}`,c=Math.max(0,Math.min(24,Math.round(Math.max(0,s)/100*24))),u=vi(c,e.color)+"\u2591".repeat(24-c),l=wi(n/1e6*e.pricePerMtok),g=t.terminal?.count??0;return[` Tokmizer savings \xB7 ${e.subtitle??"all time"}${i}`," "+"\u2550".repeat(60),"",`${a("Commands")}${gt(r.count)} \xB7 ${gt(t.compressedCount)} reduced`,`${a("Tokens in")}${he(r.rawTokens)}`,`${a("Tokens out")}${he(r.filteredTokens)}`,`${a(n>=0?"Tokens saved":"Tokens added")}${he(Math.abs(n))} (${Math.abs(s)} %)`,`${a("Efficiency")}${u} ${Math.max(0,s)} %`,...e.periods?.length?["",...e.periods.map(w=>`${a(w.label)}${he(w.savedTokens)} saved \xB7 ${gt(w.count)} commands`)]:[],`${a("API value")}${l} at $${e.pricePerMtok.toFixed(2)}/M input tokens`,...t.restoration?.count?[`${a("Restored")}${he(t.restoration.tokens)} tokens, deducted`]:[],...t.modeledSavedTokens>0?[`${a("Reducer (est.)")}${he(t.modeledSavedTokens)} tokens, not included`]:[],...od(t.byCommand,e.color),""," Estimates from output size (bytes \xF7 4), not your bill.",...g?[` ${gt(g)} terminal commands with no agent are not counted.`]:[],""].join(`
93
- `)}async function xi(t=Lr(),e=0){return[...(await pi(t,e)).entries()].filter(([,r])=>r.n>0).sort(([r],[n])=>r<n?-1:r>n?1:0).map(([r,n])=>({day:r,count:n.n,savedTokens:C(n.or)-C(n.of)}))}function od(t,e){let r=(t??[]).filter(i=>i.savedTokens>0).slice(0,10);if(r.length===0)return[];let n=r[0].savedTokens,s=" "+"\u2500".repeat(60),o=[""," By command",s,` ${" #".padEnd(4)}${"Command".padEnd(20)}${"Runs".padStart(7)}${"Saved".padStart(9)}${"Avg%".padStart(7)} Impact`,s];return r.forEach((i,a)=>{let c=Math.max(1,Math.round(i.savedTokens/n*10)),u=vi(c,e)+"\u2591".repeat(10-c),l=(i.native?`${i.cmd} (tool)`:i.cmd).slice(0,19);o.push(` ${(String(a+1)+".").padStart(3)} ${l.padEnd(20)}${gt(i.count).padStart(7)}${he(i.savedTokens).padStart(9)}${(String(i.avgPct)+" %").padStart(7)} ${u}`)}),o.push(s),o}function Si(t,e){if(t.length===0)return"";let r=(u,l,g)=>` ${u.padEnd(11)}${gt(l).padStart(4)}${he(g).padStart(13)}`,n=" "+"Day".padEnd(11)+"Cmds".padStart(4)+"Saved".padStart(13),s=" "+"\u2500".repeat(31),o=t.map(u=>r(`${u.day.slice(8,10)}/${u.day.slice(5,7)}`,u.count,u.savedTokens)),i=t.reduce((u,l)=>u+l.count,0),a=t.reduce((u,l)=>u+l.savedTokens,0),c=r("Total",i,a);return[n,s,...o,s,e.color?`${bi}${c}${ki}`:c,""].join(`
94
- `)}I();wn();import{appendFileSync as gh,chmodSync as yh,mkdirSync as wh,existsSync as id,readFileSync as Ai,rmSync as ad}from"node:fs";import{dirname as kh,join as cd}from"node:path";var ud="usage.jsonl",Ei=2e4,xh=2*1024*1024;function Ri(){return cd(y(),ud)}function Ci(t=Ri()){try{if(!id(t))return 0;let e=Ai(t,"utf8").split(`
95
- `).filter(r=>r.trim()!=="").length;return ad(t,{force:!0}),e}catch{return 0}}function Ti(t){let e=t.trim();if(!e)return null;try{let r=JSON.parse(e);return typeof r.t!="number"||typeof r.s!="string"||typeof r.o!="number"?null:{s:r.s,o:r.o}}catch{return null}}function $i(t=Ri()){let e;try{e=Ai(t,"utf8").split(`
96
- `).filter(o=>o.trim()!=="")}catch{return{sessionId:null,total:0,routed:0,pct:0}}e.length>Ei&&(e=e.slice(e.length-Ei));let r=null;for(let o=e.length-1;o>=0;o-=1){let i=Ti(e[o]??"");if(i){r=i.s;break}}if(r===null)return{sessionId:null,total:0,routed:0,pct:0};let n=0,s=0;for(let o of e){let i=Ti(o);!i||i.s!==r||(n+=1,i.o===1&&(s+=1))}return{sessionId:r,total:n,routed:s,pct:n?Math.round(s/n*100):0}}function Pi(t){return t.total===0?" No commands yet this session.":[" This session"," "+"\u2500".repeat(40),` ${t.total} commands \xB7 ${t.routed} handled by tkr (${t.pct} %)`," The rest (cd, echo\u2026) has nothing to optimize.",""].join(`
97
- `)}vr();xr();Pt();Nr();_n();import{fileURLToPath as Nd}from"node:url";var G=process.env.TOKMIZER_BASE_URL??"https://tokmizer.com";function Md(){process.stdout.write(["Usage: tkr <command>",""," link link your account (optional; paste your key)"," link <key> link without prompts"," link --shim [--shim-runner P] install shell-shims (universal compat)"," unlink unlink this machine from your account"," status show current plan + status"," gain [--day|--week|--month|--json] estimated tool-output savings (today / 7 days / 30 days / all time)"," session this session's tkr coverage"," restore <hash> re-fetch the full output behind a [tkr restore \u2026] hint"," discover what's covered (agent + terminal)"," setup-codex one-command setup for OpenAI Codex"," auto-update [on|off|status] keep the tkr CLI up to date on its own (on by default)"," doctor print detected host, OS, adapter"," shim install [--runner P] install shell-shims into ~/.tokmizer/shims"," shim uninstall remove shell-shims"," heartbeat refresh JWT + bundle"," settings show print current settings"," settings set <key> <value> update one setting (key uses dot path, e.g. filters.enableAll true)"," settings configure interactive wizard (recommended or custom)"," settings reset reset all settings to defaults"," compression [level] show or set compression level (light, balanced, max)"," yolo [on|off|status] local aggressive output reduction; content can be lost"," reducer [level] show or set response reducer (off, light, balanced, max)"," telemetry status show telemetry on/off + local record count"," telemetry on | off turn anonymous telemetry on or off"," telemetry forget erase telemetry data stored on this machine",""].join(`
98
- `))}async function Ld(t){let e=t[0]??"show";if(e==="show"){try{let r=await Ke();process.stdout.write(`Plan: ${r.plan}
99
- `),process.stdout.write(`${JSON.stringify(r.settings,null,2)}
100
- `)}catch(r){process.stdout.write(`Settings unavailable; showing local cached settings: ${r instanceof Error?r.message:String(r)}
101
- `),process.stdout.write(`${JSON.stringify(await z(),null,2)}
102
- `)}return}if(e==="set"){let r=t[1],n=t[2];if(!r||n===void 0){process.stderr.write(`Usage: tkr settings set <key> <value>
103
- `),process.exitCode=1;return}let s=ro(r,n),o=await Te(s);process.stdout.write(`Updated. ${r} = ${JSON.stringify(n)}
195
+ `),d.shim&&d.binary&&process.stdout.write(`The real rtk is still at ${d.binary.path}. Uninstall it so the rtk command forwards to Tokmizer.
196
+ `),d.hooks.some(v=>v.tkrInstalled&&v.edits.length>0)&&process.stdout.write(`Restart your agents so they reload their hooks.
197
+ `),process.stdout.write(`Undo anytime with: tkr migrate rtk --undo
198
+ `)}function hT(){process.stdout.write(["Usage: tkr <command>",""," link link your account (optional; paste your key)"," link <key> link without prompts"," link --shim [--shim-runner P] install shell-shims (universal compat)"," unlink unlink this machine from your account"," status show account and engine status"," gain [--day|--week|--month] estimated tool-output savings (today / 7 days / 30 days / all time)"," [--project [path]] only commands run inside a project directory (default: current)"," [--json|--csv|--graph|--history] JSON, one CSV row per day, per-day bar chart, last 20 commands"," [--by-rule|--failures] savings per rule, commands left unchanged"," [--quota [pro|5x|20x]] estimated share of a Claude plan budget (default pro, last 30 days)"," session this session's tkr coverage"," restore <hash> re-fetch the full output behind a [tkr restore \u2026] hint"," [--lines a:b] [--grep re] only some lines of it"," restore --list | --grep <re> list cached outputs, or search all of them"," filters trust [file\u2026] allow your ~/.tokmizer/filters/*.toml files (records SHA-256)"," filters untrust [file\u2026] stop using them"," filters test [rule] run the inline tests of your filters"," discover what's covered (agent + terminal)"," setup-claude [--remove] add or remove Claude Code hooks for the standalone tkr"," setup-codex one-command setup for OpenAI Codex"," setup-cursor [--remove] install or remove the Cursor agent hook"," setup-gemini [--remove] install or remove the Gemini CLI hook",...mt.map(e=>` ${`${e.command} [--remove]`.padEnd(34)}install or remove the ${e.label} integration`)," rewrite --host <agent> print the tokmizer form of a command read on stdin (used by agent plugins)",...ht.map(e=>` ${`${e.setup.slice(4)} [--remove]`.padEnd(34)}install or remove the ${e.label} hook`)," auto-update [on|off|status] keep the tkr CLI up to date on its own (on by default)"," network [on|off|status] allow or block every connection to tokmizer.com (on by default)"," doctor print detected host, OS, adapter"," migrate rtk [--dry-run] [--yes] move from rtk: filters, settings, history; turn off its agent hooks"," [--shim] | --undo also forward the rtk command to tkr; undo the last migration"," shim install [--runner P] install shell-shims into ~/.tokmizer/shims"," shim uninstall remove shell-shims"," heartbeat refresh JWT + bundle"," settings show print current settings"," settings set <key> <value> update one setting (key uses dot path, e.g. filters.enableAll true)"," settings configure interactive wizard (recommended or custom)"," settings reset reset all settings to defaults"," compression [level] show or set compression level (light, balanced, max)"," yolo [on|off|status] local aggressive output reduction; content can be lost"," reducer [level] show or set response reducer (off, light, balanced, max)"," telemetry status show telemetry on/off + local record count"," telemetry on | off turn usage stats (command names, token counts; on by default) on or off"," telemetry forget erase telemetry data stored on this machine",""].join(`
199
+ `))}async function gT(e){let t=e[0]??"show";if(t==="show"){try{let n=await Lt();process.stdout.write(`Plan: ${n.plan}
200
+ `),process.stdout.write(`${JSON.stringify(n.settings,null,2)}
201
+ `)}catch(n){process.stdout.write(`Settings unavailable; showing local cached settings: ${n instanceof Error?n.message:String(n)}
202
+ `),process.stdout.write(`${JSON.stringify(await J(),null,2)}
203
+ `)}return}if(t==="set"){let n=e[1],r=e[2];if(!n||r===void 0){process.stderr.write(`Usage: tkr settings set <key> <value>
204
+ `),process.exitCode=1;return}let s=fu(n,r),o=await Ae(s);process.stdout.write(`Updated. ${n} = ${JSON.stringify(r)}
104
205
  `),process.stdout.write(`Current: ${JSON.stringify(o.settings,null,2)}
105
- `);return}if(e==="configure"){await Ho();return}if(e==="reset"){let r=await Te({enabled:!0,telemetryOptIn:!0,outputVerbosity:"compact",reducer:"off",filters:{enableAll:!0,disabled:[]}});await Ve(!1),process.stdout.write(`Settings reset to defaults.
206
+ `);return}if(t==="configure"){await ef();return}if(t==="reset"){let n=await Ae({enabled:!0,telemetryOptIn:!0,outputVerbosity:"compact",reducer:"off",filters:{enableAll:!0,disabled:[]}});await jt(!1),process.stdout.write(`Settings reset to defaults.
106
207
  `),process.stdout.write(`YOLO: off (this machine only)
107
- `),process.stdout.write(`${JSON.stringify(r.settings,null,2)}
108
- `);return}process.stderr.write(`Unknown settings subcommand: ${e}
109
- `),process.exitCode=1}async function Fd(t){let e=t[0]??"status";if(e==="on"||e==="off"){let r=e==="on";try{let n=await Te({telemetryOptIn:r});process.stdout.write(`Telemetry ${n.settings.telemetryOptIn?"on":"off"}.
110
- `)}catch(n){process.stdout.write(`${n instanceof Error?n.message:String(n)}
111
- `),process.exitCode=1}return}if(e==="forget"){Lt("telemetry"),Lt("learn");let r=await hi()+Ci();process.stdout.write(`Cleared ${r} local telemetry record${r===1?"":"s"} from this machine.
112
- `);return}if(e==="status"){let r;try{r=(await Ke()).settings.telemetryOptIn?"on":"off"}catch{r=`${(await z()).telemetryOptIn?"on":"off"} (offline; last known)`}let n=await Ye();process.stdout.write(`Telemetry: ${r}
113
- ${n.count} commands recorded locally.
114
- Manage: tkr telemetry on | off | forget
115
- `);return}process.stderr.write(`Unknown telemetry subcommand: ${e}
116
- `),process.exitCode=1}async function jd(){let t=process.argv[2]??"help",e=process.argv.slice(3);if(t==="yolo"){let r=e[0]??"status";if(e.length>1||!["on","off","status"].includes(r)){process.stderr.write(`Usage: tkr yolo [on|off|status]
117
- `),process.exitCode=1;return}r==="on"?(process.stderr.write(`Warning: YOLO can discard content and diagnostics. Lost output cannot be restored; command exit codes are preserved.
118
- `),await Ve(!0)):r==="off"&&await Ve(!1),process.stdout.write(`YOLO: ${ut()?"on":"off"} (this machine only)
119
- `);return}if(t==="init"||t==="link"){if(t==="init"&&process.stdout.write("`tkr init` is now `tkr link`. Running link...\n"),e.includes("--shim")){let i=e.indexOf("--shim-runner"),a=i>=0?e[i+1]:ae(),c=await Je(a??ae());process.stdout.write(`Installed ${c.length} shims into ${D()}
208
+ `),process.stdout.write(`${JSON.stringify(n.settings,null,2)}
209
+ `);return}process.stderr.write(`Unknown settings subcommand: ${t}
210
+ `),process.exitCode=1}async function kT(e){let t=e[0]??"status";if(t==="on"||t==="off"){let n=t==="on";try{let r=await Ae({telemetryOptIn:n});process.stdout.write(`Telemetry ${r.settings.telemetryOptIn?"on":"off"}.
211
+ `),r.settings.telemetryOptIn&&!D()?process.stdout.write(`Network is off, so nothing is sent. Turn it back on with: tkr network on
212
+ `):r.settings.telemetryOptIn?(await N()||process.stdout.write(`Could not reach tokmizer.com right now. Usage stats stay on this machine and are sent once Tokmizer is online.
213
+ `),process.stdout.write(`${Ei}
214
+ `),Ri()):process.stdout.write(`Your choice is saved on this machine and survives updates. Turn them back on with: tkr telemetry on
215
+ `)}catch(r){process.stdout.write(`${r instanceof Error?r.message:String(r)}
216
+ `),process.exitCode=1}return}if(t==="forget"){ur("telemetry"),ur("learn");let n=await _p()+Bp();process.stdout.write(`Cleared ${n} local telemetry record${n===1?"":"s"} from this machine.
217
+ `);return}if(t==="status"){let n;try{n=(await Lt()).settings.telemetryOptIn?"on":"off"}catch{n=`${(await J()).telemetryOptIn?"on":"off"} (offline; last known)`}let[r,s]=await Promise.all([kt(),N()]),o=n.startsWith("on"),i=o&&D();process.stdout.write(`Telemetry: ${n}
218
+ Network: ${Kn()}
219
+ Account: ${s?.linked===!0||s?.email?"linked":"none (stats are tied to this install's random key)"}
220
+ `+(i?`Sent: command names, token counts, session ID and agent name. Never arguments, output, file contents or paths.
221
+ `:o?`Sent: nothing while network is off.
222
+ `:`Sent: nothing.
223
+ `)+`${r.count} commands recorded locally.
224
+ `+(o?`Default: on. Turn off in one command: tkr telemetry off (your choice survives updates)
225
+ `:`Default: on; you turned them off. Turn on: tkr telemetry on
226
+ `)+`Manage: tkr telemetry on | off | forget. Stop every connection: tkr network off
227
+ `),i&&Ri();return}process.stderr.write(`Unknown telemetry subcommand: ${t}
228
+ `),process.exitCode=1}async function yT(){let e=process.argv[2]??"help",t=process.argv.slice(3);if(e==="rtk-compat"){let{rtkCompatAction:s,runRaw:o}=await Promise.resolve().then(()=>(Mc(),Eh)),i=s(t);if(i.kind==="message"){i.stdout&&process.stdout.write(i.stdout),i.stderr&&process.stderr.write(i.stderr),process.exitCode=i.code;return}if(i.kind==="raw"){process.exitCode=o(i.argv);return}e=i.argv[0],t=i.argv.slice(1)}if(e==="migrate"){await mT(t);return}if(e==="rewrite"){let s=fm(t);if(!s){process.stderr.write(`Usage: tkr rewrite --host <${mc.join("|")}> [--session <id>] < command
229
+ `),process.exitCode=2;return}let o=dm(await pm(),s.host,s.session);o&&process.stdout.write(o);return}if(e==="yolo"){let s=t[0]??"status";if(t.length>1||!["on","off","status"].includes(s)){process.stderr.write(`Usage: tkr yolo [on|off|status]
230
+ `),process.exitCode=1;return}s==="on"?(process.stderr.write(`Warning: YOLO can discard content and diagnostics. Lost output cannot be restored; command exit codes are preserved.
231
+ `),await jt(!0)):s==="off"&&await jt(!1),process.stdout.write(`YOLO: ${kn()?"on":"off"} (this machine only)
232
+ `);return}if(e==="init"||e==="link"){if(e==="init"&&process.stdout.write("`tkr init` is now `tkr link`. Running link...\n"),t.includes("--shim")){let c=t.indexOf("--shim-runner"),l=c>=0?t[c+1]:ze(),u=await Xt(l??ze());process.stdout.write(`Installed ${u.length} shims into ${B()}
120
233
  `),process.stdout.write(`Add this line to your shell rc if not already:
121
- ${pe()}`);return}let r=e.indexOf("--email"),n=e.indexOf("--token"),s=e.find(i=>i.startsWith("tokmizer_")),o=n>=0?e[n+1]??"":s??"";if(e.length>0){if(!o){process.stdout.write(`Usage: tkr link <key> (the key from tokmizer.com/dashboard/token, starts with tokmizer_)
122
- `),process.exitCode=1;return}let i=r>=0?e[r+1]:"";try{let a=await Sr({token:o,baseUrl:G,...i?{email:i}:{}});process.stdout.write(H.activated(a.plan)+`
234
+ ${Ye()}`);return}if(!D()){process.stdout.write(`Linking needs to reach tokmizer.com, and network access is off for Tokmizer.
235
+ `+(Gn()?`Unset TOKMIZER_NETWORK (or set it to 1), then run tkr link again.
236
+ `:`Turn it back on with: tkr network on, then run tkr link again.
237
+ `)),process.exitCode=1;return}let s=t.indexOf("--email"),o=t.indexOf("--token"),i=t.find(c=>c.startsWith("tokmizer_")),a=o>=0?t[o+1]??"":i??"";if(t.length>0){if(!a){process.stdout.write(`Usage: tkr link <key> (the key from tokmizer.com/dashboard/token, starts with tokmizer_)
238
+ `),process.exitCode=1;return}let c=s>=0?t[s+1]:"";try{let l=await Ms({token:a,baseUrl:re,...c?{email:c}:{}});process.stdout.write(he.activated(l.plan)+`
123
239
  `),process.stdout.write(`Review this account's settings: tkr settings show. Adjust them with: tkr settings configure
124
- `);let c=await ar();c?.error&&process.stdout.write(`Note: feature sync failed (${c.error}). Run "tkr heartbeat" to retry.
125
- `)}catch(a){process.stdout.write(`${a instanceof Error?a.message:String(a)}
126
- `),process.exitCode=1}return}await ei(G);return}if(t==="unlink"){let r=await T();if(r?.jwt&&r.signingSecret)try{let s=await X();await j("POST","/api/v1/license/unlink",{ts:Date.now()},{baseUrl:G,bearer:r.jwt,signingSecret:r.signingSecret,fingerprint:s.fingerprint,installId:s.installId,timeoutMs:4e3})}catch{}await sr();try{await Rt([]),await Ct([])}catch{}await eo();try{let{shutdownDaemon:s}=await Promise.resolve().then(()=>(mt(),ft));await s()}catch{}let n=r?.email?` from ${r.email}`:"";process.stdout.write(`Unlinked this machine${n}. The plugin keeps working without an account; a fresh anonymous token starts on the next online run. Link another account with: tkr link
127
- `);return}if(t==="doctor"){let r=Rr(),n=await Fs(),{brewTapStatus:s}=await Promise.resolve().then(()=>(Ni(),Di)),o=s(),i=o?.wedged?o.path.replace(/\/Formula\/tokmizer\.rb$/,""):null,a=[`Host: ${r.host} (source: ${r.source})`,`OS: ${r.os}`,`Arch: ${r.arch}`,`Adapter: ${Bo(r.host)}`,`Shim dir: ${D()}`,`Shim: ${Ht()?"installed":"not installed \u2014 run: tkr setup-codex"}`,`Codex: ${bn()?"hook installed":"hook not installed \u2014 run: tkr setup-codex"}`,`Commands: ${n.installed}/${n.total} unprefixed slash commands${n.installed<n.total?" \u2014 restart Claude Code to reinstall":""}`,`Restore: ${process.env.TOKMIZER_CCR_DISABLED==="1"||process.env.TOKMIZER_CCR_DISABLED==="true"?"disabled (TOKMIZER_CCR_DISABLED)":"active"}`,...i?[`Homebrew: tap clone conflicted \u2014 updates are stuck. Fix: git -C ${i} fetch origin && git -C ${i} reset --hard origin/main && brew upgrade tokmizer`]:[],""];try{let{connectDaemon:c}=await Promise.resolve().then(()=>(mt(),ft)),{socketPath:u}=await Promise.resolve().then(()=>(cn(),co)),{path:l}=u(),g=await c(),w=await g.ping();g.close(),a.push(`Daemon: running (pid ${w.pid})`,` socket: ${l}`,` uptime: ${Math.floor(w.uptimeMs/1e3)}s`,` ruleCount: ${w.ruleCount}`,` bundleVersion: ${w.bundleVersion}`,"")}catch(c){a.push(`Daemon: not running (${c.message})`,"")}try{let{readFileSync:c,existsSync:u,statSync:l}=await import("node:fs"),{join:g}=await import("node:path"),{tokmizerHome:w}=await Promise.resolve().then(()=>(I(),_s)),E=w(),$=g(E,"daemon.spawn.fail");if(u($)){let P=Number(c($,"utf8"));a.push(` last spawn failure: ${Number.isFinite(P)?new Date(P).toISOString():"unknown"} (details: ${g(E,"daemon.log")})`)}let Z=g(E,"drift.jsonl");if(u(Z)&&l(Z).size>0){let P=c(Z,"utf8").trim().split(`
128
- `),R=JSON.parse(P[P.length-1]);a.push(`Drift: ${P.length} unrecognized hook payload shape(s), last on ${R.tool??"?"} (${Z})`,"")}}catch{}try{let c=yi(await Ye());c&&a.push(`Coverage: ${c}`,"")}catch{}process.stdout.write(a.join(`
129
- `));return}if(t==="auto-update"){let{autoUpdateEnabled:r,setAutoUpdate:n}=await Promise.resolve().then(()=>(hr(),pr)),s=e[0]??"status";if(s==="on"||s==="off")n(s==="on");else if(s!=="status"){process.stderr.write(`Usage: tkr auto-update [on|off|status]
130
- `),process.exitCode=1;return}process.stdout.write(`auto-update: ${r()?"on":"off"}
131
- `);return}if(t==="self-update"){let{selfUpdate:r,defaultDeps:n}=await Promise.resolve().then(()=>(hr(),pr)),s=await T(),o=await r(n(s?.latestPluginVersion));process.stdout.write(`${o.length?o.join(`
240
+ `);let u=await ns();u?.error&&process.stdout.write(`Note: feature sync failed (${u.error}). Run "tkr heartbeat" to retry.
241
+ `)}catch(l){process.stdout.write(`${l instanceof Error?l.message:String(l)}
242
+ `),process.exitCode=1}return}await ap(re);return}if(e==="unlink"){let s=await N(),o=D();if(o&&s?.jwt&&s.signingSecret)try{let a=await Se();await le("POST","/api/v1/license/unlink",{ts:Date.now()},{baseUrl:re,bearer:s.jwt,signingSecret:s.signingSecret,fingerprint:a.fingerprint,installId:a.installId,timeoutMs:4e3})}catch{}await Qr();try{await Yn([]),await Xn([])}catch{}await uu();try{let{shutdownDaemon:a}=await Promise.resolve().then(()=>(Tn(),En));await a()}catch{}let i=s?.email?` from ${s.email}`:"";process.stdout.write(`Unlinked this machine${i}. The plugin keeps working without an account; a new install token is created on the next online run. Link another account with: tkr link
243
+ `),!o&&s&&process.stdout.write(`Network is off: the local link was removed, but tokmizer.com was not told. Run tkr unlink again after tkr network on to remove this device from your dashboard.
244
+ `);return}if(e==="doctor"){let s=Zs(),o=await Ul(),{brewTapStatus:i}=await Promise.resolve().then(()=>(Dh(),Nh)),a=i(),c=a?.wedged?a.path.replace(/\/Formula\/tokmizer\.rb$/,""):null,l=Wf(s.host),u=await as().catch(()=>null),d=[`Host: ${s.host} (source: ${s.source})`,`OS: ${s.os}`,`Arch: ${s.arch}`,`Network: ${Kn()}${D()?" \u2014 turn off with: tkr network off":" \u2014 no request leaves this machine; re-enable with: tkr network on"}`,`Adapter: ${qf(s.host)}${l?` \u2014 native hook available, run: ${l}`:""}`,`Shim dir: ${B()}`,`Shim: ${Or()?"installed":"not installed \u2014 run: tkr setup-codex"}`,`Codex: ${ir()?"hook installed":"hook not installed \u2014 run: tkr setup-codex"}`,`Cursor: ${Zt()?"hook installed":"hook not installed \u2014 run: tkr setup-cursor"}`,`Gemini: ${Kt()?"hook installed":"hook not installed \u2014 run: tkr setup-gemini"}`,...mt.map(f=>`${`${f.label}:`.padEnd(Math.max(10,f.label.length+2))}${Wt(f)?"integration installed":`integration not installed \u2014 run: tkr ${f.command}`}`),...ht.map(f=>`${`${f.label}:`.padEnd(9)} ${f.installed()?"hook installed":`hook not installed \u2014 run: ${f.setup}`}`),`Commands: ${o.installed}/${o.total} unprefixed slash commands${o.installed<o.total?" \u2014 restart Claude Code to reinstall":""}`,`Restore: ${process.env.TOKMIZER_CCR_DISABLED==="1"||process.env.TOKMIZER_CCR_DISABLED==="true"?"disabled (TOKMIZER_CCR_DISABLED)":Qo().disabled?`disabled (${je()})`:`active${u?` \xB7 ${u.entries} cached output${u.entries===1?"":"s"} \xB7 kept ${tr()} (tkr restore --list)`:""}`}`,...c?[`Homebrew: tap clone conflicted \u2014 updates are stuck. Fix: git -C ${c} fetch origin && git -C ${c} reset --hard origin/main && brew upgrade tokmizer`]:[],""];try{let{connectDaemon:f}=await Promise.resolve().then(()=>(Tn(),En)),{socketPath:p}=await Promise.resolve().then(()=>(ii(),yu)),{path:m}=p(),v=await f(),S=await v.ping();v.close(),d.push(`Daemon: running (pid ${S.pid})`,` socket: ${m}`,` uptime: ${Math.floor(S.uptimeMs/1e3)}s`,` ruleCount: ${S.ruleCount}`,` bundleVersion: ${S.bundleVersion}`,"")}catch(f){d.push(`Daemon: not running (${f.message})`,"")}try{let{readFileSync:f,existsSync:p,statSync:m}=await import("node:fs"),{join:v}=await import("node:path"),{tokmizerHome:S}=await Promise.resolve().then(()=>(z(),bl)),$=S(),I=v($,"daemon.spawn.fail");if(p(I)){let V=Number(f(I,"utf8"));d.push(` last spawn failure: ${Number.isFinite(V)?new Date(V).toISOString():"unknown"} (details: ${v($,"daemon.log")})`)}let H=v($,"drift.jsonl");if(p(H)&&m(H).size>0){let V=f(H,"utf8").trim().split(`
245
+ `),q=JSON.parse(V[V.length-1]);d.push(`Drift: ${V.length} unrecognized hook payload shape(s), last on ${q.tool??"?"} (${H})`,"")}}catch{}try{let f=Tp(await kt());f&&d.push(`Coverage: ${f}`,"")}catch{}try{let{loadUserFilters:f}=await Promise.resolve().then(()=>(Vt(),ua)),p=await f(),m=p.filters.size;d.push(m===0&&p.issues.length===0?`Filters: no user filters (optional: *.toml files in ${p.dir})`:`Filters: ${m} user filter${m===1?"":"s"} loaded from ${p.dir}`);for(let v of p.issues)d.push(` skipped ${v.file}: ${v.message}`);d.push("")}catch(f){d.push(`Filters: unavailable (${f.message})`,"")}try{let{doubleHooked:f}=await Promise.resolve().then(()=>(_c(),Dm)),p=f(Mr());if(p.length>0)d.push(`rtk: double hook \u2014 rtk and Tokmizer both wrap commands in ${p.join(", ")}. Fix: tkr migrate rtk`,"");else{let m=bo(Mr());m&&d.push(`rtk: ${m}`,"")}}catch{}process.stdout.write(d.join(`
246
+ `));return}if(e==="auto-update"){let{autoUpdateEnabled:s,setAutoUpdate:o}=await Promise.resolve().then(()=>(gs(),hs)),i=t[0]??"status";if(i==="on"||i==="off")o(i==="on");else if(i!=="status"){process.stderr.write(`Usage: tkr auto-update [on|off|status]
247
+ `),process.exitCode=1;return}process.stdout.write(`auto-update: ${s()?"on":"off"}
248
+ `);return}if(e==="network"){let s=t[0]??"status";if(t.length>1||!["on","off","status"].includes(s)){process.stderr.write(`Usage: tkr network [on|off|status]
249
+ `),process.exitCode=1;return}(s==="on"||s==="off")&&Cl(s==="on"),process.stdout.write(`Network: ${Kn()}
250
+ `),D()?process.stdout.write(`Tokmizer may contact tokmizer.com to keep its rules up to date, check for updates and, if you turned them on, send usage stats.
251
+ Turn it off with: tkr network off
252
+ `):process.stdout.write(`Tokmizer sends nothing: no sign-up, no rule download, no update check, no usage stats.
253
+ It keeps compressing locally: with the last downloaded rules for up to 7 days, then with its core built-in rules.
254
+ `+(Gn()&&s==="on"?`TOKMIZER_NETWORK still blocks it for this shell. Unset it (or set it to 1) to turn the network back on.
255
+ `:`Turn it back on with: tkr network on
256
+ `));return}if(e==="self-update"){let{selfUpdate:s,defaultDeps:o}=await Promise.resolve().then(()=>(gs(),hs)),i=await N(),a=await s(o(i?.latestPluginVersion));process.stdout.write(`${a.length?a.join(`
132
257
  `):"up to date"}
133
- `);return}if(t==="shims-refresh"){let{refreshStaleShims:r}=await Promise.resolve().then(()=>(Nr(),Xo)),n=await r(ae());process.stdout.write(`shims refreshed: ${n}
134
- `);return}if(t==="setup-codex"){await me(G);let r=await Je(ae()),n=await Dr(),s=Nd(new URL("./tkr-codex-hook.js",import.meta.url)),o=await kn(vn(process.env.PATH??"",s)),i=o==="error"?`Could not update ${pt()}: it is not valid JSON. Fix it, then run tkr setup-codex again.`:`${o==="present"?"Codex hook already set":"Added the tokmizer hook"} in ${pt()}. In Codex, run /hooks once and approve it.`,a=n.status==="added"?`Added the shim path to ${n.target}.`:n.status==="present"?`Shim path already set in ${n.target}.`:`Could not update ${n.target}. Add this to your shell profile:
135
- ${n.manual}`;process.stdout.write([`Installed ${r.length} command shims into ${D()}.`,i,a,"","Last step: open a new terminal and restart Codex so it picks up the change.","Check coverage anytime with: tkr discover","Tokmizer is free. No account is required.",""].join(`
136
- `)),(o==="error"||n.status==="missing")&&(process.exitCode=1);return}if(t==="shim"){let r=e[0]??"install";if(r==="install"){let n=e.indexOf("--runner"),s=n>=0?e[n+1]:ae(),o=await Je(s??ae());process.stdout.write(`Installed ${o.length} shims into ${D()}
137
- `);let i=await Dr();if(i.status==="added"?process.stdout.write(`Added PATH to ${i.target}. Open a new terminal to activate.
138
- `):i.status==="present"?process.stdout.write(`PATH already set in ${i.target}. Open a new terminal if not active.
258
+ `);return}if(e==="shims-refresh"){let{refreshStaleShims:s}=await Promise.resolve().then(()=>(Ir(),op)),o=await s(ze());process.stdout.write(`shims refreshed: ${o}
259
+ `);return}if(e==="setup-claude"){let{claudeExecutables:s,claudeSettingsFile:o,ensureClaudeHooks:i,removeClaudeHooks:a}=await Promise.resolve().then(()=>(Lh(),Hh)),c=o(),l=`Could not update ${c}: it is not valid JSON. Fix it, then run tkr setup-claude again.`;if(t[0]==="--remove"){let d=await a();process.stdout.write(`${d==="error"?l:d==="removed"?`Removed the tokmizer hooks from ${c}.`:`No tokmizer hooks found in ${c}.`}
260
+ `),d==="error"&&(process.exitCode=1);return}if(t.length){process.stderr.write(`Usage: tkr setup-claude [--remove]
261
+ `),process.exitCode=1;return}if(!Ce()){process.stdout.write(`Claude Code loads Tokmizer from its plugin: /plugin marketplace add norwelltw/Tokmizer, then /plugin install tokmizer@tokmizer
262
+ `);return}let u=await i(s());process.stdout.write(`${u==="error"?l:u==="plugin"?"Claude Code already runs Tokmizer through its plugin; no hooks added.":u==="present"?`Claude Code hooks already set in ${c}.`:`Added the tokmizer hooks to ${c}. Restart Claude Code to load them.`}
263
+ `);for(let d of(await Qe()).slice(1))process.stdout.write(`${d}
264
+ `);u==="error"&&(process.exitCode=1);return}if(e==="setup-codex"){await Ee(re);let s=await Xt(ze()),o=await Xs(),i=tn(new URL("./tkr-codex-hook.js",import.meta.url)),a=await yi(wi(process.env.PATH??"",i)),c=a==="error"?`Could not update ${$n()}: it is not valid JSON. Fix it, then run tkr setup-codex again.`:`${a==="present"?"Codex hook already set":"Added the tokmizer hook"} in ${$n()}. In Codex, run /hooks once and approve it.`,l=o.status==="added"?`Added the shim path to ${o.target}.`:o.status==="present"?`Shim path already set in ${o.target}.`:`Could not update ${o.target}. Add this to your shell profile:
265
+ ${o.manual}`;process.stdout.write([`Installed ${s.length} command shims into ${B()}.`,c,l,"","Last step: open a new terminal and restart Codex so it picks up the change.","Check coverage anytime with: tkr discover","Tokmizer is free. No account is required.",...await Qe(),""].join(`
266
+ `)),(a==="error"||o.status==="missing")&&(process.exitCode=1);return}if(e==="setup-cursor"||e==="setup-gemini"){let s=e==="setup-cursor",o=s?"Cursor":"Gemini CLI",i=s?br():Gt(),a=`Could not update ${i}: it is not valid JSON. Fix it, then run tkr ${e} again.`;if(t[0]==="--remove"){let d=s?await rf():await lf();process.stdout.write(`${d==="error"?a:d==="removed"?`Removed the tokmizer hook from ${i}.`:`No tokmizer hook found in ${i}.`}
267
+ `),d==="error"&&(process.exitCode=1);return}if(t.length){process.stderr.write(`Usage: tkr ${e} [--remove]
268
+ `),process.exitCode=1;return}await Ee(re);let c=tn(new URL(s?"./tkr-cursor-hook.js":"./tkr-gemini-hook.js",import.meta.url)),l=(s?sf:uf)(process.env.PATH??"",c),u=s?await nf(l):await cf(l);process.stdout.write([u==="error"?a:`${u==="present"?`${o} hook already set`:"Added the tokmizer hook"} in ${i}.`,s?"Cursor reloads hooks on its own; restart Cursor if the Hooks tab does not list it.":"Restart Gemini CLI, then check it with /hooks panel.","Shell commands run by the agent now go through tokmizer. Check savings anytime with: tkr gain","Tokmizer is free. No account is required.",...await Qe(),""].join(`
269
+ `)),u==="error"&&(process.exitCode=1);return}let n=Af(e);if(n){let s=Of(n),o=`Could not update ${s}. Check that it is valid and writable, then run tkr ${e} again.`;if(t[0]==="--remove"&&t.length===1){let c=n.kind==="hook"?await n.remove():await Pf(n);process.stdout.write(`${c==="error"?o:c==="removed"?`Removed the tokmizer ${n.label} integration from ${s}.`:`No tokmizer integration found in ${s}.`}
270
+ `),c==="error"&&(process.exitCode=1);return}if(t.length){process.stderr.write(`Usage: tkr ${e} [--remove]
271
+ `),process.exitCode=1;return}await Ee(re);let i=process.env.PATH??"",a=n.kind==="hook"?await n.ensure(vf(n.host,i,tn(new URL("./tkr-agent-hook.js",import.meta.url)))):await If(n,tn(new URL("../../agent-plugins/",import.meta.url)),xa(i,tn(import.meta.url)));process.stdout.write([a==="error"?o:`${a==="present"?`${n.label} integration already set`:`Added the tokmizer ${n.label} integration`} in ${s}.`,n.next,"Shell commands run by the agent now go through tokmizer. Check savings anytime with: tkr gain","Tokmizer is free. No account is required.",...await Qe(),""].join(`
272
+ `)),a==="error"&&(process.exitCode=1);return}let r=Vf(e);if(r){let s=r.files().join(", "),o=`Could not update ${s}: it is not valid JSON or has an unsupported format. Fix it, then run tkr ${e} again.`;if(t[0]==="--remove"){let c=await r.remove();process.stdout.write(`${c==="error"?o:c==="removed"?`Removed the tokmizer hook for ${r.label}.`:`No tokmizer hook found for ${r.label}.`}
273
+ `),c==="error"&&(process.exitCode=1);return}if(t.length){process.stderr.write(`Usage: tkr ${e} [--remove]
274
+ `),process.exitCode=1;return}await Ee(re);let i=tn(new URL(`./${r.bin}.js`,import.meta.url)),a=await r.ensure(Zf(r,process.env.PATH??"",i));process.stdout.write([a==="error"?o:`${a==="present"?`${r.label} hook already set`:"Added the tokmizer hook"} in ${s}.`,r.restart,"Shell commands run by the agent now go through tokmizer. Check savings anytime with: tkr gain","Tokmizer is free. No account is required.",...await Qe(),""].join(`
275
+ `)),a==="error"&&(process.exitCode=1);return}if(e==="shim"){let s=t[0]??"install";if(s==="install"){let o=t.indexOf("--runner"),i=o>=0?t[o+1]:ze(),a=await Xt(i??ze());process.stdout.write(`Installed ${a.length} shims into ${B()}
276
+ `);let c=await Xs();if(c.status==="added"?process.stdout.write(`Added PATH to ${c.target}. Open a new terminal to activate.
277
+ `):c.status==="present"?process.stdout.write(`PATH already set in ${c.target}. Open a new terminal if not active.
139
278
  `):process.stdout.write(`Add this to your shell profile, then open a new terminal:
140
- ${i.manual}`),i.status==="missing"){process.exitCode=1;return}let a=await T()??await me(G);process.stdout.write(a?`Free access is ready. No account is required.
141
- `:`Free activation is pending. When online, run: tkr status
142
- `);return}if(r==="uninstall"){let n=await Jn();process.stdout.write(`Removed ${n} shims from ${D()}
143
- `);return}process.stderr.write(`Unknown shim subcommand: ${r}
144
- `),process.exitCode=1;return}if(t==="status"){process.stdout.write(`YOLO: ${ut()?"on":"off"} (this machine only)
145
- `);let r=await T()??await me(G);if(!r){process.stdout.write(`Free tier starts automatically on the first online run. Could not reach tokmizer.com right now. Retry later, or run: tkr link
146
- `);return}let n=Er(Tr(r),Ar(r));if(process.stdout.write(`Plan ${r.plan} | Status ${r.status}${r.email?` | Email ${r.email}`:r.plan==="free"?" | Anonymous":""}
147
- `),process.stdout.write(`power: ${n?"available":"locked"}
148
- `),n){let s=await Qr("power"),o=await cr("power")!==null;if(!s||!o){let i=await ar(),a=i?.error?` (last sync failed: ${i.error})`:"";process.stdout.write(`/power not synced yet${a} \u2014 run: tkr heartbeat
149
- `)}}Uo(r)&&process.stdout.write(`Offline too long \u2014 reconnect (tkr heartbeat) to refresh your local state.
150
- `),process.stdout.write(`Everything is included on this token.
151
- `);return}if(t==="gain"){let r=e[0]??"";if(e.length>1||!["","--json","--jour","--day","--semaine","--week","--mois","--month"].includes(r)){process.stderr.write(`Usage: tkr gain [--day|--week|--month|--json]
152
- `),process.exitCode=1;return}let n=0,s,o=!1;if(r==="--json"){let[A,re]=await Promise.all([Ye(void 0,0),T()]),ne=qn(A.savedByProvider);process.stdout.write(JSON.stringify({...A,savedUsd:Number((A.savedTokens/1e6*ne).toFixed(2)),savedUsdBasis:"reference-input-price",savedUsdScope:"reduced-outputs",netSavedUsd:Number(((A.observed?.savedTokens??A.savedTokens)/1e6*ne).toFixed(2)),netSavedUsdScope:"all-observed-outputs",referencePricePerMtok:ne,plan:re?.plan??"free"})+`
153
- `);return}let i=new Date,a=A=>Math.floor(new Date(i.getFullYear(),i.getMonth(),i.getDate()-A).getTime()/1e3);r==="--jour"||r==="--day"?(n=a(0),s="today"):r==="--semaine"||r==="--week"?(n=a(6),s="last 7 days",o=!0):(r==="--mois"||r==="--month")&&(n=a(29),s="last 30 days",o=!0);let[c,u,l,g]=await Promise.all([Ye(void 0,n),T(),r===""?Ye(void 0,a(0)):void 0,r===""?Ye(void 0,a(6)):void 0]),w=A=>({savedTokens:A.agent?A.agent.rawTokens-A.agent.filteredTokens:A.observed?.savedTokens??A.savedTokens,count:A.agent?.count??A.count}),E=l&&g?[{label:"Today",...w(l)},{label:"Last 7 days",...w(g)}]:void 0,$=qn(c.savedByProvider),Z=u?.linked??(!!u?.jwt&&u?.plan!=="free"),P=!!process.stdout.isTTY&&!process.env.NO_COLOR,R=_i(c,{color:P,pricePerMtok:$,subtitle:s,periods:E});if(Z||(R+=` Not linked: run tkr link to see these on your dashboard.
154
- `),o){let A=Si(await xi(void 0,n),{color:P});A&&(R+=`
155
- `+A)}c.count>0&&!Ht()&&(R+=` To include commands from every terminal: tkr shim install
156
- `),u?.relinkRequired&&(R+=` \u26A0 dashboard link lost \u2014 run: tkr link <your-token> (from tokmizer.com/dashboard)
157
- `),u?.updateRequired?R+=` \u26A0 plugin update required \u2014 run: /tkr-update
158
- `:xe(B,u?.latestPluginVersion)&&(R+=` \u26A0 you run v${B}, v${u?.latestPluginVersion} is out \u2014 older versions undercount savings. Run /tkr-update, then RESTART Claude Code.
159
- `),u?.clockSkewDetected&&(R+=` \u26A0 system clock looks off \u2014 sync it, then run: tkr heartbeat
160
- `);try{let{connectDaemon:A}=await Promise.resolve().then(()=>(mt(),ft)),re=await A(),ne=await re.ping();re.close();let Vt=null;if(ne.ruleCount===0){let{runtimeFromCache:Vi}=await Promise.resolve().then(()=>(os(),ss));Vt=(await Vi())?.ruleCount??null}R+=Fr(ne.ruleCount,Vt)}catch{let{runtimeFromCache:A}=await Promise.resolve().then(()=>(os(),ss)),re=await A();R+=Fr(null,re?re.ruleCount:null)}process.stdout.write(R+`
161
- `);return}if(t==="session"){process.stdout.write(Pi($i())+`
162
- `);return}if(t==="discover"){let r=Ht(),n=[" tokmizer coverage"," "+"\u2500".repeat(40)," Agent (Claude/Codex) \u2705 optimized automatically",r?" Your terminal \u2705 covered (shims installed)":" Your terminal \u26A0\uFE0F not covered"];r||n.push("",' \u2192 run "tkr shim install" to also cover your commands outside the agent.'),n.push(""),process.stdout.write(n.join(`
279
+ ${c.manual}`),c.status==="missing"){process.exitCode=1;return}let l=await N()??await Ee(re);process.stdout.write(l?`Free access is ready. No account is required.
280
+ `:D()?`Free activation is pending. When online, run: tkr status
281
+ `:`Network is off: Tokmizer runs with its built-in rules. Turn it back on with: tkr network on
282
+ `);for(let u of(await Qe()).slice(1))process.stdout.write(`${u}
283
+ `);return}if(s==="uninstall"){let o=await Ja();process.stdout.write(`Removed ${o} shims from ${B()}
284
+ `);return}process.stderr.write(`Unknown shim subcommand: ${s}
285
+ `),process.exitCode=1;return}if(e==="status"){process.stdout.write(`YOLO: ${kn()?"on":"off"} (this machine only)
286
+ `),process.stdout.write(`Network: ${Kn()}${D()?"":" (built-in and cached rules only; re-enable: tkr network on)"}
287
+ `);let s=await N()??await Ee(re);if(!s){process.stdout.write(D()?`Tokmizer starts automatically on the first online run. Could not reach tokmizer.com right now. Retry later, or run: tkr link
288
+ `:`Tokmizer compresses with its built-in rules. Nothing is sent while network is off.
289
+ `);for(let a of(await Qe()).slice(1))process.stdout.write(`${a}
290
+ `);return}let o=Fs(js(s),Hs(s));if(process.stdout.write(`Status ${s.status} | ${s.email?`Account ${s.email}`:"Not linked (run tkr link to see your savings on the dashboard)"}
291
+ `),process.stdout.write(`power: ${o?"available":"locked"}
292
+ `),o){let a=await Ko("power"),c=await rs("power")!==null;if(!a||!c){let l=await ns(),u=l?.error?` (last sync failed: ${l.error})`:"";process.stdout.write(`/power not synced yet${u} \u2014 run: tkr heartbeat
293
+ `)}}Xd(s)&&process.stdout.write(D()?`Offline too long \u2014 reconnect (tkr heartbeat) to refresh your local state.
294
+ `:`Network is off \u2014 compression uses the built-in and last downloaded rules.
295
+ `);let i=await $i();i&&process.stdout.write(`${i}
296
+ `);for(let a of(await Qe()).slice(1))process.stdout.write(`${a}
297
+ `);return}if(e==="gain"){let s=`Usage: tkr gain [--day|--week|--month] [--project [path]] [--json] [--csv|--graph|--history|--by-rule|--failures|--quota [pro|5x|20x]]
298
+ `,o=new Date,i=R=>Math.floor(new Date(o.getFullYear(),o.getMonth(),o.getDate()-R).getTime()/1e3),a={"--day":{since:i(0),subtitle:"today",daily:!1},"--jour":{since:i(0),subtitle:"today",daily:!1},"--week":{since:i(6),subtitle:"last 7 days",daily:!0},"--semaine":{since:i(6),subtitle:"last 7 days",daily:!0},"--month":{since:i(29),subtitle:"last 30 days",daily:!0},"--mois":{since:i(29),subtitle:"last 30 days",daily:!0}},c=new Set(["--csv","--graph","--history","--by-rule","--failures","--quota"]),l,u,d=!1,f="pro",p,m=!1;for(let R=0;R<t.length;R+=1){let U=t[R];if(a[U]&&!l)l=a[U];else if(U==="--json"&&!d)d=!0;else if(c.has(U)&&!u){u=U;let Y=t[R+1];U==="--quota"&&Y!=null&&!Y.startsWith("--")&&(Object.hasOwn(An,Y)?f=Y:m=!0,R+=1)}else if(U==="--project"&&p==null){let Y=t[R+1],pe=Y!=null&&!Y.startsWith("--");pe&&(R+=1),p=Qa(pe?Y:process.cwd())}else m=!0}if(m||d&&u!=null&&!["--by-rule","--failures","--quota"].includes(u)){process.stderr.write(s),process.exitCode=1;return}let v=u==="--quota"&&!l?{since:i(29),subtitle:"last 30 days"}:void 0,S=l?.since??v?.since??0,$=l?.subtitle??v?.subtitle,I=l?.daily??!1,H=!!process.stdout.isTTY&&!process.env.NO_COLOR,V=`${$??"all time"}${p?` \xB7 ${oc(p)}`:""}`,q=p?` Project ${p}: live journal only, rotated history not included.
299
+ `:"";if(d){let[R,U,Y,pe]=await Promise.all([kt(void 0,S,p),N(),as(),!S&&!p?yc():null]),Hn=Ga(R.savedByProvider);process.stdout.write(JSON.stringify({...R,restoreCache:Y,...u==="--quota"?{quota:nc(R,f)}:{},savedUsd:Number((R.savedTokens/1e6*Hn).toFixed(2)),savedUsdBasis:"reference-input-price",savedUsdScope:"reduced-outputs",netSavedUsd:Number(((R.observed?.savedTokens??R.savedTokens)/1e6*Hn).toFixed(2)),netSavedUsdScope:"all-observed-outputs",referencePricePerMtok:Hn,plan:U?.plan??"free",...pe?{importedFromRtk:{commands:pe.commands,savedTokens:pe.savedTokens,inputTokens:pe.inputTokens,outputTokens:pe.outputTokens,firstAt:pe.firstAt,lastAt:pe.lastAt,scope:"rtk-estimate-not-in-totals"}}:{},...S?{since:S}:{},...p?{project:p,projectScope:"live-journal"}:{}})+`
300
+ `);return}if(u==="--by-rule"||u==="--failures"||u==="--quota"){let R=await kt(void 0,S,p),U=u==="--by-rule"?Cp(R,{color:H,subtitle:V}):u==="--failures"?Op(R,{subtitle:V}):Ip(nc(R,f),{color:H,subtitle:V});process.stdout.write(U+q);return}if(u==="--csv"){process.stdout.write(Np(await sc(void 0,S,p)));return}if(u==="--graph"){let R=l?S:i(29),U=await sc(void 0,R,p),Y=`${$??"last 30 days"}${p?` \xB7 ${oc(p)}`:""}`;process.stdout.write(Dp(U,{color:H,sinceTs:R,nowTs:Math.floor(o.getTime()/1e3),subtitle:Y})+q);return}if(u==="--history"){process.stdout.write(Fp(await Mp(void 0,S,p),{color:H,subtitle:V})+q);return}let[et,Ne,Xc,Qc]=await Promise.all([kt(void 0,S,p),N(),l?void 0:kt(void 0,i(0),p),l?void 0:kt(void 0,i(6),p)]),el=R=>({savedTokens:R.agent?R.agent.rawTokens-R.agent.filteredTokens:R.observed?.savedTokens??R.savedTokens,count:R.agent?.count??R.count}),Wh=Xc&&Qc?[{label:"Today",...el(Xc)},{label:"Last 7 days",...el(Qc)}]:void 0,qh=Ga(et.savedByProvider),Yh=Ne?.linked??(!!Ne?.jwt&&Ne?.plan!=="free"),Ro=await as().catch(()=>null),Xh=Ro?{entries:Ro.entries,bytes:Ro.bytes,kept:tr()}:void 0,ie=Rp(et,{color:H,pricePerMtok:qh,subtitle:V,periods:Wh,restoreCache:Xh}),tl=!l&&!p?await yc():null;if(tl&&(ie+=Cm(tl)),p&&(ie+=(et.count===0?`
301
+ `:"")+q),Yh||(ie+=` Not linked: run tkr link to see these on your dashboard.
302
+ `),I){let R=Pp(await Ap(void 0,S,p),{color:H});R&&(ie+=`
303
+ `+R)}et.count>0&&!Or()&&(ie+=` To include commands from every terminal: tkr shim install
304
+ `),Ne?.relinkRequired&&(ie+=` \u26A0 dashboard link lost \u2014 run: tkr link <your-token> (from tokmizer.com/dashboard)
305
+ `),Ne?.updateRequired?ie+=` \u26A0 plugin update required \u2014 run: /tkr-update
306
+ `:ct(Q,Ne?.latestPluginVersion)&&(ie+=` \u26A0 you run v${Q}, v${Ne?.latestPluginVersion} is out \u2014 older versions undercount savings. Run /tkr-update, then RESTART Claude Code.
307
+ `),Ne?.clockSkewDetected&&(ie+=` \u26A0 system clock looks off \u2014 sync it, then run: tkr heartbeat
308
+ `);let nl=async()=>{let{defaultRulesRuntime:R}=await Promise.resolve().then(()=>(Kh(),Gh));return R()?.ruleCount??null};try{let{connectDaemon:R}=await Promise.resolve().then(()=>(Tn(),En)),U=await R(),Y=await U.ping();U.close();let pe=null;if(Y.ruleCount===0){let{runtimeFromCache:Hn}=await Promise.resolve().then(()=>($o(),Yc));pe=(await Hn())?.ruleCount??null}ie+=Co(Y.ruleCount,pe,Y.ruleCount===0?await nl():null)}catch{let{runtimeFromCache:R}=await Promise.resolve().then(()=>($o(),Yc)),U=await R();ie+=Co(null,U?U.ruleCount:null,await nl())}let rl=await $i();rl&&(ie+=` ${rl}
309
+ `);for(let R of(await Qe()).slice(1))ie+=`${R.split(`
310
+ `).map(U=>` ${U}`).join(`
311
+ `)}
312
+ `;process.stdout.write(ie+`
313
+ `);return}if(e==="session"){process.stdout.write(Vp(Jp())+`
314
+ `);return}if(e==="discover"){let s=Or(),o=(a,c,l)=>` ${a.padEnd(23)}${c?"\u2705 optimized automatically":s?`\u2705 covered by shims (native hook: ${l})`:`\u26A0\uFE0F not covered \u2014 run: ${l}`}`,i=[" tokmizer coverage"," "+"\u2500".repeat(40)," Claude Code / Codex \u2705 optimized automatically",o("Cursor",Zt(),"tkr setup-cursor"),o("Gemini CLI",Kt(),"tkr setup-gemini"),...mt.map(a=>o(a.label,Wt(a),`tkr ${a.command}`)),...ht.map(a=>o(a.label,a.installed(),a.setup)),s?" Your terminal \u2705 covered (shims installed)":" Your terminal \u26A0\uFE0F not covered"];s||i.push("",' \u2192 run "tkr shim install" to also cover your commands outside the agent.'),i.push(""),process.stdout.write(i.join(`
163
315
  `)+`
164
- `);return}if(t==="restore"){let r=await Bs(e[0]);if(r.stdout&&process.stdout.write(r.stdout),r.stderr&&process.stderr.write(r.stderr),r.code===0&&r.stdout&&gi(0,Buffer.byteLength(r.stdout,"utf8"),void 0,!1,Rr().host,"restore","tkr restore"),r.code===0&&r.restoredTokens){let n=await z();await Mn({cmd:"restore",tokensSaved:0,tokensRestored:r.restoredTokens,optimized:!1,telemetryOptIn:n.telemetryOptIn,host:Rr().host})}process.exitCode=r.code;return}if(t==="heartbeat"){await me(G);let r=Date.now(),n=await jn(G);if(!n||(n.lastHeartbeatOkAt??0)<r){process.stderr.write(`Heartbeat failed
165
- `),process.exitCode=1;return}process.stdout.write(`OK plan=${n.plan} status=${n.status}
166
- `);let s=await ar();s?.error&&process.stdout.write(`Note: feature sync failed: ${s.error}
167
- `);return}if(t==="settings"){(e[0]??"show")==="show"&&process.stdout.write(`YOLO: ${ut()?"on":"off"} (this machine only)
168
- `),await me(G),await Ld(e);return}if(t==="telemetry"){await me(G),await Fd(e);return}if(t==="reducer"){let r=["off","light","balanced","max"],n={off:"default: responses untouched",light:"trims padding, keeps natural prose",balanced:"dense and direct, answer first",max:"telegraphic, every token earns its place"},s=e[0]?.toLowerCase();if(!s){let o=await z(),i=o.reducer==="off"?"":o.enabled?await cr(`reducer-${o.reducer}`)?`Ready for the next Claude Code session.
316
+ `);return}if(e==="restore"){let s=await Ql(t);if(s.stdout&&process.stdout.write(s.stdout),s.stderr&&process.stderr.write(s.stderr),s.code===0&&s.stdout&&s.restoredTokens&&Ep(0,Buffer.byteLength(s.stdout,"utf8"),void 0,!1,Zs().host,"restore","tkr restore",process.cwd()),s.code===0&&s.restoredTokens){let o=await J();await Hi({cmd:"restore",tokensSaved:0,tokensRestored:s.restoredTokens,optimized:!1,telemetryOptIn:o.telemetryOptIn,host:Zs().host})}process.exitCode=s.code;return}if(e==="filters"){let{trustUserFilters:s,untrustUserFilters:o,runUserFilterTests:i,userFiltersDir:a}=await Promise.resolve().then(()=>(Vt(),ua)),c=t[0],l=t.slice(1),u=a();if(c==="trust"){let{trusted:d,missing:f}=await s(l);d.length>0?process.stdout.write(`Trusted ${d.length} filter file${d.length===1?"":"s"} in ${u}: ${d.join(", ")}
317
+ Editing a file revokes its trust until you run this again.
318
+ `):f.length===0&&process.stdout.write(`No *.toml file in ${u}.
319
+ `),f.length>0&&(process.stderr.write(`tkr filters: not found in ${u}: ${f.join(", ")}
320
+ `),process.exitCode=1);return}if(c==="untrust"){let d=await o(l);process.stdout.write(d.length>0?`No longer used: ${d.join(", ")}
321
+ `:`Nothing to untrust.
322
+ `);return}if(c==="test"&&l.length<=1){let{results:d,issues:f,untested:p}=await i(l[0]),m=[],v=$=>$.trimEnd().split(`
323
+ `).map(I=>` ${I}`).join(`
324
+ `);for(let $ of f)m.push(` skipped ${$.file}: ${$.message}`);for(let $ of d){let I=`${$.rule} #${$.index}${$.name?` (${$.name})`:""}`;m.push(` ${$.pass?"PASS":"FAIL"} ${I}`),$.pass||m.push(" expected:",v($.expected)," got:",v($.actual))}let S=d.filter($=>!$.pass).length;l[0]&&d.length===0&&!p.includes(l[0])?(m.push(` No rule named ${l[0]} in ${u}.`),process.exitCode=1):d.length===0?m.push(` No inline test found. Add [[filters.<name>.tests]] with input and expected to a file in ${u}.`):m.push(` ${d.length} test${d.length===1?"":"s"}: ${d.length-S} passed, ${S} failed`),p.length>0&&m.push(` Without tests: ${p.join(", ")}`),process.stdout.write(m.join(`
325
+ `)+`
326
+ `),(S>0||f.length>0)&&(process.exitCode=1);return}process.stderr.write(`Usage: tkr filters trust [file\u2026] | untrust [file\u2026] | test [rule]
327
+ `),process.exitCode=1;return}if(e==="heartbeat"){if(!D()){process.stderr.write(`${Jo}
328
+ `),process.exitCode=1;return}await Ee(re);let s=Date.now(),o=await pa(re);if(!o||(o.lastHeartbeatOkAt??0)<s){process.stderr.write(`Heartbeat failed
329
+ `),process.exitCode=1;return}process.stdout.write(`OK status=${o.status}
330
+ `);let i=await ns();i?.error&&process.stdout.write(`Note: feature sync failed: ${i.error}
331
+ `);return}if(e==="settings"){(t[0]??"show")==="show"&&process.stdout.write(`YOLO: ${kn()?"on":"off"} (this machine only)
332
+ `),await Ee(re),await gT(t);return}if(e==="telemetry"){await Ee(re),await kT(t);return}if(e==="reducer"){let s=["off","light","balanced","max"],o={off:"default: responses untouched",light:"trims padding, keeps natural prose",balanced:"dense and direct, answer first",max:"telegraphic, every token earns its place"},i=t[0]?.toLowerCase();if(!i){let a=await J(),c=a.reducer==="off"?"":a.enabled?await rs(`reducer-${a.reducer}`)?`Ready for the next Claude Code session.
169
333
  `:`Reducer ruleset unavailable; reconnect and run: tkr heartbeat
170
334
  `:`Tokmizer is disabled; the reducer is inactive.
171
- `;process.stdout.write(`Reducer: ${o.reducer}
172
- `+r.map(a=>` ${a.padEnd(10)} ${n[a]}`).join(`
335
+ `;process.stdout.write(`Reducer: ${a.reducer}
336
+ `+s.map(l=>` ${l.padEnd(10)} ${o[l]}`).join(`
173
337
  `)+`
174
338
  Reducer guides Claude Code response style; command output compression is separate.
175
- `+i+`Change it: tkr reducer <off|light|balanced|max>
176
- `);return}if(!r.includes(s)){process.stderr.write(`Unknown level: ${e[0]}. Use off, light, balanced or max.
177
- `),process.exitCode=1;return}await me(G);try{let o=await Te({reducer:s});if(o.settings.reducer==="off")process.stdout.write(`Reducer off. Claude Code responses back to normal next session.
178
- `);else if(!o.settings.enabled)process.stdout.write(`Reducer saved as ${o.settings.reducer} for Claude Code. Tokmizer is disabled; enable it with: tkr settings set enabled true
179
- `);else{if(await jn(G),!await cr(`reducer-${o.settings.reducer}`)){process.stderr.write(`Reducer saved as ${o.settings.reducer}, but its ruleset is unavailable. Reconnect and run: tkr heartbeat before starting a new Claude Code session.
180
- `),process.exitCode=1;return}process.stdout.write(`Reducer set to ${o.settings.reducer} for Claude Code. Its response-style instructions load next session.
181
- `)}}catch(o){let i=o instanceof Error?o.message:String(o);i.includes("plan_required")||i.toLowerCase().includes("smart and pro")?process.stdout.write(`Reducer is not available on this token right now.
182
- `):process.stdout.write(`${i}
183
- `),process.exitCode=1}return}if(t==="compression"){if(e.length>1){process.stderr.write(`Usage: tkr compression [light|balanced|max]
184
- `),process.exitCode=1;return}let r={light:"normal",balanced:"compact",max:"minimal",normal:"normal",compact:"compact",minimal:"minimal"},n={normal:"light",compact:"balanced",minimal:"max"},s=e[0];if(!s){let i=await z(),a=ut();process.stdout.write((a?`Compression: YOLO (this machine only)
185
- Standard level: ${n[i.outputVerbosity]}
339
+ `+c+`Change it: tkr reducer <off|light|balanced|max>
340
+ `);return}if(!s.includes(i)){process.stderr.write(`Unknown level: ${t[0]}. Use off, light, balanced or max.
341
+ `),process.exitCode=1;return}await Ee(re);try{let a=await Ae({reducer:i});if(a.settings.reducer==="off")process.stdout.write(`Reducer off. Claude Code responses back to normal next session.
342
+ `);else if(!a.settings.enabled)process.stdout.write(`Reducer saved as ${a.settings.reducer} for Claude Code. Tokmizer is disabled; enable it with: tkr settings set enabled true
343
+ `);else{if(await pa(re),!await rs(`reducer-${a.settings.reducer}`)){process.stderr.write(D()?`Reducer saved as ${a.settings.reducer}, but its ruleset is unavailable. Reconnect and run: tkr heartbeat before starting a new Claude Code session.
344
+ `:`Reducer saved as ${a.settings.reducer}, but its ruleset was never downloaded and network is off. Run tkr network on, then tkr heartbeat.
345
+ `),process.exitCode=1;return}process.stdout.write(`Reducer set to ${a.settings.reducer} for Claude Code. Its response-style instructions load next session.
346
+ `)}}catch(a){let c=a instanceof Error?a.message:String(a);c.includes("plan_required")||c.toLowerCase().includes("smart and pro")?process.stdout.write(`Reducer is not available on this token right now.
347
+ `):process.stdout.write(`${c}
348
+ `),process.exitCode=1}return}if(e==="compression"){if(t.length>1){process.stderr.write(`Usage: tkr compression [light|balanced|max]
349
+ `),process.exitCode=1;return}let s={light:"normal",balanced:"compact",max:"minimal",normal:"normal",compact:"compact",minimal:"minimal"},o={normal:"light",compact:"balanced",minimal:"max"},i=t[0];if(!i){let c=await J(),l=kn();process.stdout.write((l?`Compression: YOLO (this machine only)
350
+ Standard level: ${o[c.outputVerbosity]}
186
351
  Content and diagnostics can be lost; discarded output cannot be restored.
187
- `:`Compression: ${n[i.outputVerbosity]}
188
- `)+`YOLO: ${a?"on":"off"} (this machine only)
352
+ `:`Compression: ${o[c.outputVerbosity]}
353
+ `)+`YOLO: ${l?"on":"off"} (this machine only)
189
354
  light gentle: standard cleanup only
190
355
  balanced default: also collapses repeated output and blank runs
191
356
  max strongest standard level: also drops verbose log noise
192
357
  Change standard level and leave YOLO: tkr compression <light|balanced|max>
193
358
  Local mode: tkr yolo <on|off|status>
194
- `);return}let o=Object.hasOwn(r,s.toLowerCase())?r[s.toLowerCase()]:void 0;if(!o){process.stderr.write(`Unknown level: ${s}. Use light, balanced or max.
195
- `),process.exitCode=1;return}await Ve(!1),process.stdout.write(`YOLO: off (this machine only)
196
- `);try{await me(G);let i=await Te({outputVerbosity:o});process.stdout.write(`Compression set to ${n[i.settings.outputVerbosity]}. Applies to your next commands.
197
- `)}catch(i){process.stderr.write(`Could not update standard compression: ${i instanceof Error?i.message:String(i)}
198
- `),process.exitCode=1}return}Md(),process.exitCode=["help","--help","-h"].includes(t)?0:1}jd().catch(t=>{process.stderr.write(`${t.message??t}
359
+ `);return}let a=Object.hasOwn(s,i.toLowerCase())?s[i.toLowerCase()]:void 0;if(!a){process.stderr.write(`Unknown level: ${i}. Use light, balanced or max.
360
+ `),process.exitCode=1;return}await jt(!1),process.stdout.write(`YOLO: off (this machine only)
361
+ `);try{await Ee(re);let c=await Ae({outputVerbosity:a});process.stdout.write(`Compression set to ${o[c.settings.outputVerbosity]}. Applies to your next commands.
362
+ `)}catch(c){process.stderr.write(`Could not update standard compression: ${c instanceof Error?c.message:String(c)}
363
+ `),process.exitCode=1}return}hT(),process.exitCode=["help","--help","-h"].includes(e)?0:1}yT().catch(e=>{process.stderr.write(`${e.message??e}
199
364
  `),process.exitCode=1});
365
+ /*! Bundled license information:
366
+
367
+ smol-toml/dist/error.js:
368
+ smol-toml/dist/primitive.js:
369
+ smol-toml/dist/date.js:
370
+ smol-toml/dist/extract.js:
371
+ smol-toml/dist/util.js:
372
+ smol-toml/dist/struct.js:
373
+ smol-toml/dist/parse.js:
374
+ smol-toml/dist/stringify.js:
375
+ smol-toml/dist/index.js:
376
+ (*!
377
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
378
+ * SPDX-License-Identifier: BSD-3-Clause
379
+ *
380
+ * Redistribution and use in source and binary forms, with or without
381
+ * modification, are permitted provided that the following conditions are met:
382
+ *
383
+ * 1. Redistributions of source code must retain the above copyright notice, this
384
+ * list of conditions and the following disclaimer.
385
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
386
+ * this list of conditions and the following disclaimer in the
387
+ * documentation and/or other materials provided with the distribution.
388
+ * 3. Neither the name of the copyright holder nor the names of its contributors
389
+ * may be used to endorse or promote products derived from this software without
390
+ * specific prior written permission.
391
+ *
392
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
393
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
394
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
395
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
396
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
397
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
398
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
399
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
400
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
401
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
402
+ *)
403
+ */