SYMBOL INDEX (4993 symbols across 213 files) FILE: benchmark/run_benchmark.py function find_script_paths (line 67) | def find_script_paths( function get_current_tmux_sessions (line 92) | def get_current_tmux_sessions(benchmark_type: str) -> list[str]: function start_tmux_session (line 106) | def start_tmux_session( function aggregate_rliable_results (line 163) | def aggregate_rliable_results(task_results_dir: str | Path) -> None: function main (line 211) | def main( FILE: docs/_static/js/benchmark.js function getDataSource (line 15) | function getDataSource(selectEnv, dirName) { function showMujocoResults (line 64) | function showMujocoResults(elem) { function showAtariResults (line 70) | function showAtariResults(elem) { FILE: docs/_static/js/vega-embed@5.js function i (line 1) | function i(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.s... function o (line 1) | function o(e){return function(){var t=this.ownerDocument,r=this.namespac... function a (line 1) | function a(e){return function(){return this.ownerDocument.createElementN... function s (line 1) | function s(e){var t=i(e);return(t.local?a:o)(t)} function l (line 1) | function l(){} function c (line 1) | function c(e){return null==e?l:function(){return this.querySelector(e)}} function u (line 1) | function u(){return[]} function f (line 1) | function f(e){return new Array(e.length)} function p (line 1) | function p(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.n... function d (line 1) | function d(e,t,n,r,i,o){for(var a,s=0,l=t.length,c=o.length;st?1:e>=t?0:NaN} function v (line 1) | function v(e){return function(){this.removeAttribute(e)}} function E (line 1) | function E(e){return function(){this.removeAttributeNS(e.space,e.local)}} function y (line 1) | function y(e,t){return function(){this.setAttribute(e,t)}} function b (line 1) | function b(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}} function I (line 1) | function I(e,t){return function(){var n=t.apply(this,arguments);null==n?... function O (line 1) | function O(e,t){return function(){var n=t.apply(this,arguments);null==n?... function R (line 1) | function R(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.doc... function w (line 1) | function w(e){return function(){this.style.removeProperty(e)}} function N (line 1) | function N(e,t,n){return function(){this.style.setProperty(e,t,n)}} function A (line 1) | function A(e,t,n){return function(){var r=t.apply(this,arguments);null==... function S (line 1) | function S(e){return function(){delete this[e]}} function L (line 1) | function L(e,t){return function(){this[e]=t}} function T (line 1) | function T(e,t){return function(){var n=t.apply(this,arguments);null==n?... function x (line 1) | function x(e){return e.trim().split(/^|\s+/)} function _ (line 1) | function _(e){return e.classList||new C(e)} function C (line 1) | function C(e){this._node=e,this._names=x(e.getAttribute("class")||"")} function P (line 1) | function P(e,t){for(var n=_(e),r=-1,i=t.length;++r0} function v (line 1) | function v(e,t,n){return g(e,t,n)<0} function E (line 1) | function E(e,t,n){return 0===g(e,t,n)} function y (line 1) | function y(e,t,n){return 0!==g(e,t,n)} function b (line 1) | function b(e,t,n){return g(e,t,n)>=0} function I (line 1) | function I(e,t,n){return g(e,t,n)<=0} function O (line 1) | function O(e,t,n,r){switch(t){case"===":return"object"==typeof e&&(e=e.v... function R (line 1) | function R(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrereleas... function N (line 1) | function N(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrereleas... function A (line 1) | function A(e,t){for(var n=!0,r=e.slice(),i=r.pop();n&&r.length;)n=r.ever... function S (line 1) | function S(e){return!e||"x"===e.toLowerCase()||"*"===e} function L (line 1) | function L(e,t,n,r,i,o,a,s,l,c,u,f,p){return((t=S(n)?"":S(r)?">="+n+".0.... function T (line 1) | function T(e,t,r){for(var i=0;i${t}
s(e...
  function c (line 1) | function c(e){throw new Error(e)}
  function u (line 1) | function u(e,n){const i={};for(const r of n)t.hasOwnProperty(e,r)&&(i[r]...
  function f (line 1) | function f(e,t){const n={...e};for(const e of t)delete n[e];return n}
  function d (line 1) | function d(e){if(t.isNumber(e))return e;const n=t.isString(e)?e:X(e);if(...
  function m (line 1) | function m(e){return!1===e||null===e}
  function p (line 1) | function p(e,t){return e.includes(t)}
  function g (line 1) | function g(e,t){let n=0;for(const[i,r]of e.entries())if(t(r,i,n++))retur...
  function h (line 1) | function h(e,t){let n=0;for(const[i,r]of e.entries())if(!t(r,i,n++))retu...
  function y (line 1) | function y(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;iN(...
  function C (line 1) | function C(e,t){if(0===t.length)return!0;const n=t.shift();return n in e...
  function P (line 1) | function P(e){return e.charAt(0).toUpperCase()+e.substr(1)}
  function A (line 1) | function A(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function j (line 1) | function j(e){return`${arguments.length>1&&void 0!==arguments[1]?argumen...
  function T (line 1) | function T(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}
  function E (line 1) | function E(e){return`${t.splitAccessPath(e).map(T).join("\\.")}`}
  function M (line 1) | function M(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[...
  function L (line 1) | function L(e){return`${t.splitAccessPath(e).join(".")}`}
  function q (line 1) | function q(e){return e?t.splitAccessPath(e).length:0}
  function U (line 1) | function U(){for(var e=arguments.length,t=new Array(e),n=0;n3&&void 0!==arguments[3]?argum...
  function Pn (line 1) | function Pn(e,t,n){let{vgChannel:i}=arguments.length>3&&void 0!==argumen...
  function An (line 1) | function An(e,t,n){return jn(e,Nn(t),n)}
  function jn (line 1) | function jn(e,n,i){let r;n=t.array(n);for(const t of n){const n=i[t];n&&...
  function Tn (line 1) | function Tn(e,n){return t.array(e).reduce(((e,t)=>(e.field.push(oa(t,n))...
  function En (line 1) | function En(e,t){const n=[...e];return t.forEach((e=>{for(const t of n)i...
  function Mn (line 1) | function Mn(e,n){return Y(e,n)||!n?e:e?[...t.array(e),...t.array(n)].joi...
  function Ln (line 1) | function Ln(e,t){const n=e.value,i=t.value;if(null==n||null===i)return{e...
  function qn (line 1) | function qn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!...
  function Un (line 1) | function Un(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{...
  function Rn (line 1) | function Rn(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" ...
  function Wn (line 1) | function Wn(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Canno...
  function Bn (line 1) | function Bn(e){return`Invalid specification ${X(e)}. Make sure the speci...
  function Hn (line 1) | function Hn(e){return`${"width"==e?"Width":"Height"} "container" only wo...
  function Vn (line 1) | function Vn(e){return`${"width"==e?"Width":"Height"} "container" only wo...
  function Gn (line 1) | function Gn(e){return e?`Dropping "fit-${e}" because spec has discrete $...
  function Yn (line 1) | function Yn(e){return`Unknown field for ${e}. Cannot calculate view size.`}
  function Xn (line 1) | function Xn(e){return`Cannot project a selection on encoding channel "${...
  function Qn (line 1) | function Qn(e,t){return`Cannot project a selection on encoding channel "...
  function Jn (line 1) | function Jn(e){return`Selection not supported for ${e} yet.`}
  function Zn (line 1) | function Zn(e){return`The "columns" property cannot be used when "${e}" ...
  function ei (line 1) | function ei(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a ...
  function ti (line 1) | function ti(e){return`Config.customFormatTypes is not true, thus custom ...
  function ni (line 1) | function ni(e){return`${e}Offset dropped because ${e} is continuous`}
  function ii (line 1) | function ii(e){return`Invalid field type "${e}".`}
  function ri (line 1) | function ri(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as ...
  function oi (line 1) | function oi(e,t){return`Dropping ${X(e)} from channel "${t}" since it do...
  function ai (line 1) | function ai(e,t,n){return`${e} dropped as it is incompatible with "${t}"...
  function si (line 1) | function si(e){return`${e} encoding should be discrete (ordinal / nomina...
  function li (line 1) | function li(e){return`${e} encoding should be discrete (ordinal / nomina...
  function ci (line 1) | function ci(e,t){return`Using discrete channel "${e}" to encode "${t}" f...
  function ui (line 1) | function ui(e){return`Using unaggregated domain with raw field has no ef...
  function fi (line 1) | function fi(e){return`Unaggregated domain not applicable for "${e}" sinc...
  function di (line 1) | function di(e){return`Unaggregated domain is currently unsupported for l...
  function mi (line 1) | function mi(e,t,n){return`${n}-scale's "${t}" is dropped as it does not ...
  function pi (line 1) | function pi(e){return`The step for "${e}" is dropped because the ${"widt...
  function hi (line 1) | function hi(e,t){return`Invalid ${e}: ${X(t)}.`}
  function yi (line 1) | function yi(e){return`1D error band does not support ${e}.`}
  function vi (line 1) | function vi(e){return`Channel ${e} is required for "binned" bin.`}
  function $i (line 1) | function $i(){xi.warn(...arguments)}
  function wi (line 1) | function wi(e){if(e&&t.isObject(e))for(const t of Ni)if(t in e)return!0;...
  function zi (line 1) | function zi(e,n){const i=[];if(n&&void 0!==e.day&&D(e).length>1&&($i(fun...
  function Oi (line 1) | function Oi(e){const t=zi(e,!0).join(", ");return e.utc?`utc(${t})`:`dat...
  function Ci (line 1) | function Ci(e){return t.isObject(e)?e.binned:Pi(e)}
  function Pi (line 1) | function Pi(e){return e&&e.startsWith("binned")}
  function Ai (line 1) | function Ai(e){return e.startsWith("utc")}
  function Ti (line 1) | function Ti(e){return Ni.filter((t=>Mi(e,t)))}
  function Ei (line 1) | function Ei(e){const t=Ti(e);return t[t.length-1]}
  function Mi (line 1) | function Mi(e,t){const n=e.indexOf(t);return!(n<0)&&(!(n>0&&"seconds"===...
  function Li (line 1) | function Li(e,t){let{end:n}=arguments.length>2&&void 0!==arguments[2]?ar...
  function qi (line 1) | function qi(e){if(!e)return;return`timeUnitSpecifier(${X(Ti(e))}, ${X(ji...
  function Ui (line 1) | function Ui(e){if(!e)return;let n;return t.isString(e)?n=Pi(e)?{unit:e.s...
  function Ri (line 1) | function Ri(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Bi (line 1) | function Bi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Ii (line 1) | function Ii(e){return!!e?.field&&void 0!==e.equal}
  function Hi (line 1) | function Hi(e){return!!e?.field&&void 0!==e.lt}
  function Vi (line 1) | function Vi(e){return!!e?.field&&void 0!==e.lte}
  function Gi (line 1) | function Gi(e){return!!e?.field&&void 0!==e.gt}
  function Yi (line 1) | function Yi(e){return!!e?.field&&void 0!==e.gte}
  function Xi (line 1) | function Xi(e){if(e?.field){if(t.isArray(e.range)&&2===e.range.length)re...
  function Qi (line 1) | function Qi(e){return!!e?.field&&(t.isArray(e.oneOf)||t.isArray(e.in))}
  function Ji (line 1) | function Ji(e){return Qi(e)||Ii(e)||Xi(e)||Hi(e)||Gi(e)||Vi(e)||Yi(e)}
  function Ki (line 1) | function Ki(e,t){return wa(e,{timeUnit:t,wrapTime:!0})}
  function Zi (line 1) | function Zi(e){let t=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function er (line 1) | function er(e){return!(arguments.length>1&&void 0!==arguments[1])||argum...
  function tr (line 1) | function tr(e){return Ji(e)&&e.timeUnit?{...e,timeUnit:Ui(e.timeUnit)}:e}
  function nr (line 1) | function nr(e){return"quantitative"===e||"temporal"===e}
  function ir (line 1) | function ir(e){return"ordinal"===e||"nominal"===e}
  function fr (line 1) | function fr(e,t){const n=ur[e],i=ur[t];return n===i||"ordinal-position"=...
  function mr (line 1) | function mr(e){return dr[e]}
  function hr (line 1) | function hr(e){return pr.has(e)}
  function xr (line 1) | function xr(e){return br.has(e)}
  function $r (line 1) | function $r(e){return vr.has(e)}
  function wr (line 1) | function wr(e){return gr.has(e)}
  function kr (line 1) | function kr(e){return yr.has(e)}
  function Sr (line 1) | function Sr(e){return e?.param}
  function Ar (line 1) | function Ar(e,t){switch(t){case"type":case"domain":case"reverse":case"ra...
  function jr (line 1) | function jr(e,t){switch(t){case"interpolate":case"scheme":case"domainMid...
  function Qr (line 1) | function Qr(e){return["line","area","trail"].includes(e)}
  function Jr (line 1) | function Jr(e){return["rect","bar","image","arc"].includes(e)}
  function Zr (line 1) | function Zr(e){return e.type}
  function io (line 1) | function io(e){return e&&null!=e.band}
  function so (line 1) | function so(e){const{channel:t,channelDef:n,markDef:i,scale:r,config:o}=...
  function lo (line 1) | function lo(e,t){return{test:co(e,!0),..."y"===tt(t)?{field:{group:"heig...
  function co (line 1) | function co(e){let n=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function uo (line 1) | function uo(e,t,n,i){const r={};if(t&&(r.scale=t),Go(e)){const{datum:t}=...
  function fo (line 1) | function fo(e){let{scaleName:t,fieldOrDatumDef:n,fieldOrDatumDef2:i,offs...
  function mo (line 1) | function mo(e){let{channel:n,channelDef:i,channel2Def:r,markDef:o,config...
  function po (line 1) | function po(e,t){return p(["x","x2"],e)&&"width"===t?{field:{group:"widt...
  function go (line 1) | function go(e){return e&&"number"!==e&&"time"!==e}
  function ho (line 1) | function ho(e,t,n){return`${e}(${t}${n?`, ${X(n)}`:""})`}
  function vo (line 1) | function vo(e){let{fieldOrDatumDef:n,format:i,formatType:r,expr:o,normal...
  function bo (line 1) | function bo(e,t,n){return Ho(e)?n?`${oa(e,{expr:t,suffix:"end"})}-${oa(e...
  function xo (line 1) | function xo(e){let{fieldOrDatumDef:t,format:n,formatType:i,expr:r,normal...
  function $o (line 1) | function $o(e,n,i,r,o,a){if(!t.isString(r)||!go(r)){if(void 0===i&&void ...
  function wo (line 1) | function wo(e,t,n){return e&&(yn(e)||"number"===e||"time"===e)?e:$a(t)&&...
  function ko (line 1) | function ko(e){let{type:n,specifiedFormat:i,config:r,normalizeStack:o}=e...
  function So (line 1) | function So(e,t){return`format(${e}, "${t||""}")`}
  function Do (line 1) | function Do(e,n,i,r){return go(i)?ho(i,e,n):So(e,(t.isString(n)?n:void 0...
  function Fo (line 1) | function Fo(e,t,n,i,r){if(void 0===n&&void 0===i&&r.customFormatTypes&&r...
  function _o (line 1) | function _o(e){return e in Oo}
  function No (line 1) | function No(e){return!!e?.encoding}
  function Co (line 1) | function Co(e){return e&&("count"===e.op||!!e.field)}
  function Po (line 1) | function Po(e){return e&&t.isArray(e)}
  function Ao (line 1) | function Ao(e){return"row"in e||"column"in e}
  function jo (line 1) | function jo(e){return!!e&&"header"in e}
  function To (line 1) | function To(e){return"facet"in e}
  function Eo (line 1) | function Eo(e){const{field:t,timeUnit:n,bin:i,aggregate:r}=e;return{...n...
  function Mo (line 1) | function Mo(e){return"sort"in e}
  function Lo (line 1) | function Lo(e){let{fieldDef:t,fieldDef2:n,markDef:i,config:r}=e;if(Jo(t)...
  function qo (line 1) | function qo(e){let{channel:t,fieldDef:n,fieldDef2:i,markDef:r,config:o,s...
  function Uo (line 1) | function Uo(e,t,n,i){return!!(ln(e.bin)||e.timeUnit&&Ko(e)&&"temporal"==...
  function Ro (line 1) | function Ro(e){return e&&!!e.sort&&!e.field}
  function Wo (line 1) | function Wo(e){return e&&"condition"in e}
  function Bo (line 1) | function Bo(e){const n=e?.condition;return!!n&&!t.isArray(n)&&Ho(n)}
  function Io (line 1) | function Io(e){const n=e?.condition;return!!n&&!t.isArray(n)&&Jo(n)}
  function Ho (line 1) | function Ho(e){return e&&(!!e.field||"count"===e.aggregate)}
  function Vo (line 1) | function Vo(e){return e?.type}
  function Go (line 1) | function Go(e){return e&&"datum"in e}
  function Yo (line 1) | function Yo(e){return Ko(e)&&!aa(e)||Qo(e)}
  function Xo (line 1) | function Xo(e){return Ko(e)&&"quantitative"===e.type&&!e.bin||Qo(e)}
  function Qo (line 1) | function Qo(e){return Go(e)&&t.isNumber(e.datum)}
  function Jo (line 1) | function Jo(e){return Ho(e)||Go(e)}
  function Ko (line 1) | function Ko(e){return e&&("field"in e||"count"===e.aggregate)&&"type"in e}
  function Zo (line 1) | function Zo(e){return e&&"value"in e&&"value"in e}
  function ea (line 1) | function ea(e){return e&&("scale"in e||"sort"in e)}
  function ta (line 1) | function ta(e){return e&&("axis"in e||"stack"in e||"impute"in e)}
  function na (line 1) | function na(e){return e&&"legend"in e}
  function ia (line 1) | function ia(e){return e&&("format"in e||"formatType"in e)}
  function ra (line 1) | function ra(e){return f(e,["legend","axis","header","scale"])}
  function oa (line 1) | function oa(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function aa (line 1) | function aa(e){switch(e.type){case"nominal":case"ordinal":case"geojson":...
  function ca (line 1) | function ca(e){la=e}
  function ua (line 1) | function ua(e,t,n){let{allowDisabling:i,includeDefault:r=!0}=n;const o=f...
  function fa (line 1) | function fa(e){return ta(e)&&e.axis?e.axis:na(e)&&e.legend?e.legend:jo(e...
  function da (line 1) | function da(e,t){return la(e,t)}
  function ma (line 1) | function ma(e){if(ia(e)){const{format:t,formatType:n}=e;return{format:t,...
  function pa (line 1) | function pa(e){return Ho(e)?e:Bo(e)?e.condition:void 0}
  function ga (line 1) | function ga(e){return Jo(e)?e:Io(e)?e.condition:void 0}
  function ha (line 1) | function ha(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function ya (line 1) | function ya(e,n,i,r){if(ia(e)){const{format:t,formatType:o,...a}=e;if(go...
  function va (line 1) | function va(e,n){let{compositeMark:i=!1}=arguments.length>2&&void 0!==ar...
  function ba (line 1) | function ba(e,n){return t.isBoolean(e)?{maxbins:dn(n)}:"binned"===e?{bin...
  function $a (line 1) | function $a(e){const{formatType:t}=ma(e);return"time"===t||!t&&((n=e)&&(...
  function wa (line 1) | function wa(e,n){let{timeUnit:i,type:r,wrapTime:o,undefinedIfExprNotRequ...
  function ka (line 1) | function ka(e,t){const{type:n}=e;return t.map((t=>{const i=wa(t,{timeUni...
  function Sa (line 1) | function Sa(e,t){return ln(e.bin)?Ht(t)&&["ordinal","nominal"].includes(...
  function Fa (line 1) | function Fa(e){return e?.condition}
  function Ca (line 1) | function Ca(e){return!!Na[e]}
  function Aa (line 1) | function Aa(e){return"mark"in e}
  class ja (line 1) | class ja{constructor(e,t){this.name=e,this.run=t}hasMatchingType(e){retu...
    method constructor (line 1) | constructor(e,t){this.name=e,this.run=t}
    method hasMatchingType (line 1) | hasMatchingType(e){return!!Aa(e)&&(Zr(t=e.mark)?t.type:t)===this.name;...
  function Ta (line 1) | function Ta(e,n){const i=e&&e[n];return!!i&&(t.isArray(i)?g(i,(e=>!!e.fi...
  function Ea (line 1) | function Ea(e,n){const i=e&&e[n];return!!i&&(t.isArray(i)?g(i,(e=>!!e.fi...
  function Ma (line 1) | function Ma(e,t){if(zt(t)){const n=e[t];if((Ho(n)||Go(n))&&(ir(n.type)||...
  function La (line 1) | function La(e){return g(Be,(n=>{if(Ta(e,n)){const i=e[n];if(t.isArray(i)...
  function qa (line 1) | function qa(e,t){const n=[],i=[],r=[],o=[],a={};return Wa(e,((s,l)=>{if(...
  function Ua (line 1) | function Ua(e,t,n){const i=Vt(t,n);if(!i)return!1;if("binned"===i){const...
  function Ra (line 1) | function Ra(e,t){const n={};for(const i of D(e)){const r=ha(e[i],i,t,{co...
  function Wa (line 1) | function Wa(e,n,i){if(e)for(const r of D(e)){const o=e[r];if(t.isArray(o...
  function Ba (line 1) | function Ba(e,n){return D(n).reduce(((i,r)=>{switch(r){case Z:case ee:ca...
  function Ia (line 1) | function Ia(e,n,i){let r=!(arguments.length>3&&void 0!==arguments[3])||a...
  function Ha (line 1) | function Ha(e){const{title:t,field:n}=e;return U(t,n)}
  function Va (line 1) | function Va(e,n,i,r,o){const{scale:a,axis:s}=i;return l=>{let{partName:c...
  function Ga (line 1) | function Ga(e,n,i,r){const{clip:o,color:a,opacity:s}=e,l=e.type;return e...
  function Ya (line 1) | function Ya(e,t,n){const{encoding:i}=e,r="vertical"===t?"y":"x",o=i[r],a...
  function Xa (line 1) | function Xa(e,t){if(e?.aggregate){const{aggregate:n,...i}=e;return n!==t...
  function Qa (line 1) | function Qa(e,t){const{mark:n,encoding:i}=e,{x:r,y:o}=i;if(Zr(n)&&n.orie...
  function Za (line 1) | function Za(e){return t.isNumber(e)?"tukey":e}
  function es (line 1) | function es(e,n){let{config:i}=n;e={...e,encoding:Ra(e.encoding,i)};cons...
  function ts (line 1) | function ts(e){return[{op:"q1",field:e,as:`lower_box_${e}`},{op:"q3",fie...
  function rs (line 1) | function rs(e,t){let{config:n}=t;e={...e,encoding:Ra(e.encoding,n)};cons...
  function os (line 1) | function os(e,t){const{encoding:n}=e;if(function(e){return(Jo(e.x)||Jo(e...
  function as (line 1) | function as(e,t,n){const{mark:i,encoding:r,params:o,projection:a,...s}=e...
  function ss (line 1) | function ss(e,t,n){return`${P(e)} ${n} ${t}`}
  function us (line 1) | function us(e,t){let{config:n}=t;e={...e,encoding:Ra(e.encoding,n)};cons...
  function ds (line 1) | function ds(e,t,n){const i=new ja(e,t);fs[e]={normalizer:i,parts:n}}
  function ws (line 1) | function ws(e){return"legend"===e||!!e?.legend}
  function ks (line 1) | function ks(e){return ws(e)&&t.isObject(e)}
  function Ss (line 1) | function Ss(e){return!!e?.select}
  function Ds (line 1) | function Ds(e){const t=[];for(const n of e||[]){if(Ss(n))continue;const{...
  function Fs (line 1) | function Fs(e){return"concat"in e}
  function zs (line 1) | function zs(e){return"vconcat"in e}
  function Os (line 1) | function Os(e){return"hconcat"in e}
  function _s (line 1) | function _s(e){let{step:t,offsetIsDiscrete:n}=e;return n?t.for??"offset"...
  function Ns (line 1) | function Ns(e){return t.isObject(e)&&void 0!==e.step}
  function Cs (line 1) | function Cs(e){return e.view||e.width||e.height}
  function As (line 1) | function As(e,t){return e[t]??e["width"===t?"continuousWidth":"continuou...
  function js (line 1) | function js(e,t){const n=Ts(e,t);return Ns(n)?n.step:Es}
  function Ts (line 1) | function Ts(e,t){return U(e[t]??e["width"===t?"discreteWidth":"discreteH...
  function Rs (line 1) | function Rs(e){const t=D(e||{}),n={};for(const i of t){const t=e[i];n[i]...
  function Bs (line 1) | function Bs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function Gs (line 1) | function Gs(e){e=l(e);for(const t of Hs)delete e[t];if(e.axis)for(const ...
  function Ys (line 1) | function Ys(e,t,n,i){"view"===t&&(n="cell");const r={...i?e[t][i]:e[t],....
  function Xs (line 1) | function Xs(e){return"layer"in e}
  class Qs (line 1) | class Qs{map(e,t){return To(e)?this.mapFacet(e,t):function(e){return"rep...
    method map (line 1) | map(e,t){return To(e)?this.mapFacet(e,t):function(e){return"repeat"in ...
    method mapLayerOrUnit (line 1) | mapLayerOrUnit(e,t){if(Xs(e))return this.mapLayer(e,t);if(Aa(e))return...
    method mapLayer (line 1) | mapLayer(e,t){return{...e,layer:e.layer.map((e=>this.mapLayerOrUnit(e,...
    method mapHConcat (line 1) | mapHConcat(e,t){return{...e,hconcat:e.hconcat.map((e=>this.map(e,t)))}}
    method mapVConcat (line 1) | mapVConcat(e,t){return{...e,vconcat:e.vconcat.map((e=>this.map(e,t)))}}
    method mapConcat (line 1) | mapConcat(e,t){const{concat:n,...i}=e;return{...i,concat:n.map((e=>thi...
    method mapFacet (line 1) | mapFacet(e,t){return{...e,spec:this.map(e.spec,t)}}
    method mapRepeat (line 1) | mapRepeat(e,t){return{...e,spec:this.map(e.spec,t)}}
  function el (line 1) | function el(e){return Ho(e)&&"quantitative"===Vo(e)&&!e.bin}
  function tl (line 1) | function tl(e,t,n){let{orient:i,type:r}=n;const o="x"===t?"y":"radius",a...
  function nl (line 1) | function nl(e,n){const i=Zr(e)?e:{type:e},r=i.type;if(!Ks.has(r))return ...
  function il (line 1) | function il(e,t,n){const i=pn(e),r=Cn("orient",i,n);if(i.orient=function...
  function rl (line 1) | function rl(e){const{point:t,line:n,...i}=e;return D(i).length>1?i:i.type}
  function ol (line 1) | function ol(e){for(const t of["line","area","rule","trail"])e[t]&&(e={.....
  function al (line 1) | function al(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  function sl (line 1) | function sl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  class ll (line 1) | class ll{constructor(){qn(this,"name","path-overlay")}hasMatchingType(e,...
    method constructor (line 1) | constructor(){qn(this,"name","path-overlay")}
    method hasMatchingType (line 1) | hasMatchingType(e,t){if(Aa(e)){const{mark:n,encoding:i}=e,r=Zr(n)?n:{t...
    method run (line 1) | run(e,t,n){const{config:i}=t,{params:r,projection:o,mark:a,name:s,enco...
  function cl (line 1) | function cl(e,t){return t?Ao(e)?gl(e,t):dl(e,t):e}
  function ul (line 1) | function ul(e,t){return t?gl(e,t):e}
  function fl (line 1) | function fl(e,n,i){const r=n[e];return(o=r)&&!t.isString(o)&&"repeat"in ...
  function dl (line 1) | function dl(e,t){if(void 0!==(e=fl("field",e,t))){if(null===e)return nul...
  function ml (line 1) | function ml(e,t){if(Ho(e))return dl(e,t);{const n=fl("datum",e,t);return...
  function pl (line 1) | function pl(e,t){if(!Jo(e)){if(Io(e)){const n=ml(e.condition,t);if(n)ret...
  function gl (line 1) | function gl(e,n){const i={};for(const r in e)if(t.hasOwnProperty(e,r)){c...
  class hl (line 1) | class hl{constructor(){qn(this,"name","RuleForRangedLine")}hasMatchingTy...
    method constructor (line 1) | constructor(){qn(this,"name","RuleForRangedLine")}
    method hasMatchingType (line 1) | hasMatchingType(e){if(Aa(e)){const{encoding:t,mark:n}=e;if("line"===n|...
    method run (line 1) | run(e,n,i){const{encoding:r,mark:o}=e;var a,s;return $i((a=!!r.x2,s=!!...
  function yl (line 1) | function yl(e){let{parentEncoding:n,encoding:i={},layer:r}=e,o={};if(n){...
  function vl (line 1) | function vl(e){const{parentProjection:t,projection:n}=e;return t&&n&&$i(...
  function bl (line 1) | function bl(e){return"filter"in e}
  function xl (line 1) | function xl(e){return"lookup"in e}
  function $l (line 1) | function $l(e){return"pivot"in e}
  function wl (line 1) | function wl(e){return"density"in e}
  function kl (line 1) | function kl(e){return"quantile"in e}
  function Sl (line 1) | function Sl(e){return"regression"in e}
  function Dl (line 1) | function Dl(e){return"loess"in e}
  function Fl (line 1) | function Fl(e){return"sample"in e}
  function zl (line 1) | function zl(e){return"window"in e}
  function Ol (line 1) | function Ol(e){return"joinaggregate"in e}
  function _l (line 1) | function _l(e){return"flatten"in e}
  function Nl (line 1) | function Nl(e){return"calculate"in e}
  function Cl (line 1) | function Cl(e){return"bin"in e}
  function Pl (line 1) | function Pl(e){return"impute"in e}
  function Al (line 1) | function Al(e){return"timeUnit"in e}
  function jl (line 1) | function jl(e){return"aggregate"in e}
  function Tl (line 1) | function Tl(e){return"stack"in e}
  function El (line 1) | function El(e){return"fold"in e}
  function Ml (line 1) | function Ml(e){return"extent"in e&&!("density"in e)}
  function Ll (line 1) | function Ll(e,t){const{transform:n,...i}=e;if(n){return{...i,transform:n...
  function ql (line 1) | function ql(e,n){const i=l(e);if(Ho(i)&&un(i.bin)&&(i.bin=Ul(i.bin)),ea(...
  function Ul (line 1) | function Ul(e){const t=e.extent;if(t?.selection){const{selection:n,...i}...
  function Rl (line 1) | function Rl(e,t){const n=e=>s(e,(e=>{const n={param:e,empty:t.emptySelec...
  class Wl (line 1) | class Wl extends Qs{map(e,t){const n=t.selections??[];if(e.params&&!Aa(e...
    method map (line 1) | map(e,t){const n=t.selections??[];if(e.params&&!Aa(e)){const t=[];for(...
    method mapUnit (line 1) | mapUnit(e,n){const i=n.selections;if(!i||!i.length)return e;const r=(n...
  function Bl (line 1) | function Bl(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}
  function Il (line 1) | function Il(e,t){void 0===t&&(t=Bs(e.config));const n=function(e){let t=...
  method constructor (line 1) | constructor(){super(...arguments),qn(this,"nonFacetUnitNormalizers",[Ka,...
  method map (line 1) | map(e,t){if(Aa(e)){const n=Ta(e.encoding,Q),i=Ta(e.encoding,J),r=Ta(e.en...
  method mapUnit (line 1) | mapUnit(e,t){const{parentEncoding:n,parentProjection:i}=t,r=ul(e.encodin...
  method mapRepeat (line 1) | mapRepeat(e,n){return function(e){return!t.isArray(e.repeat)&&e.repeat.l...
  method mapLayerRepeat (line 1) | mapLayerRepeat(e,t){const{repeat:n,spec:i,...r}=e,{row:o,column:a,layer:...
  method mapNonLayerRepeat (line 1) | mapNonLayerRepeat(e,n){const{repeat:i,spec:r,data:o,...a}=e;!t.isArray(i...
  method mapFacet (line 1) | mapFacet(e,t){const{facet:n}=e;return Ao(n)&&e.columns&&(e=f(e,["columns...
  method mapUnitWithParentEncodingOrProjection (line 1) | mapUnitWithParentEncodingOrProjection(e,t){const{encoding:n,projection:i...
  method mapFacetedUnit (line 1) | mapFacetedUnit(e,t){const{row:n,column:i,facet:r,...o}=e.encoding,{mark:...
  method getFacetMappingAndLayout (line 1) | getFacetMappingAndLayout(e,t){const{row:n,column:i,facet:r}=e;if(n||i){r...
  method mapLayer (line 1) | mapLayer(e,t){let{parentEncoding:n,parentProjection:i,...r}=t;const{enco...
  method map (line 1) | map(e,t){return t.emptySelections??={},t.selectionPredicates??={},e=Ll(e...
  method mapLayerOrUnit (line 1) | mapLayerOrUnit(e,t){if((e=Ll(e,t)).encoding){const n={};for(const[i,r]of...
  method mapUnit (line 1) | mapUnit(e,t){const{selection:n,...i}=e;return n?{...i,params:z(n).map((e...
  function Yl (line 1) | function Yl(e){return t.isString(e)?{type:e}:e??{}}
  function Ql (line 1) | function Ql(e,t){const n={};for(const t of Xl)e&&void 0!==e[t]&&(n[t]=Sn...
  class Jl (line 1) | class Jl{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?a...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){return new Jl(l(this.explicit),l(this.implicit))}
    method combine (line 1) | combine(){return{...this.explicit,...this.implicit}}
    method get (line 1) | get(e){return U(this.explicit[e],this.implicit[e])}
    method getWithExplicit (line 1) | getWithExplicit(e){return void 0!==this.explicit[e]?{explicit:!0,value...
    method setWithExplicit (line 1) | setWithExplicit(e,t){let{value:n,explicit:i}=t;void 0!==n&&this.set(e,...
    method set (line 1) | set(e,t,n){return delete this[n?"implicit":"explicit"][e],this[n?"expl...
    method copyKeyFromSplit (line 1) | copyKeyFromSplit(e,t){let{explicit:n,implicit:i}=t;void 0!==n[e]?this....
    method copyKeyFromObject (line 1) | copyKeyFromObject(e,t){void 0!==t[e]&&this.set(e,t[e],!0)}
    method copyAll (line 1) | copyAll(e){for(const t of D(e.combine())){const n=e.getWithExplicit(t)...
  function Kl (line 1) | function Kl(e){return{explicit:!0,value:e}}
  function Zl (line 1) | function Zl(e){return{explicit:!1,value:e}}
  function ec (line 1) | function ec(e){return(t,n,i,r)=>{const o=e(t.value,n.value);return o>0?t...
  function tc (line 1) | function tc(e,t,n,i){return e.explicit&&t.explicit&&$i(function(e,t,n,i)...
  function nc (line 1) | function nc(e,t,n,i){let r=arguments.length>4&&void 0!==arguments[4]?arg...
  class ic (line 1) | class ic extends Jl{constructor(){let e=arguments.length>0&&void 0!==arg...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){const e=super.clone();return e.parseNothing=this.parseNothing,e}
  function rc (line 1) | function rc(e){return"url"in e}
  function oc (line 1) | function oc(e){return"values"in e}
  function ac (line 1) | function ac(e){return"name"in e&&!rc(e)&&!oc(e)&&!sc(e)}
  function sc (line 1) | function sc(e){return e&&(lc(e)||cc(e)||uc(e))}
  function lc (line 1) | function lc(e){return"sequence"in e}
  function cc (line 1) | function cc(e){return"sphere"in e}
  function uc (line 1) | function uc(e){return"graticule"in e}
  function dc (line 1) | function dc(e){const{signals:t,hasLegend:n,index:i,...r}=e;return r.fiel...
  function mc (line 1) | function mc(e){let n=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function pc (line 1) | function pc(e,n){for(const i of F(e.component.selection??{})){const r=i....
  function gc (line 1) | function gc(e,n){if(e.component.selection&&D(e.component.selection).leng...
  function hc (line 1) | function hc(e,t){for(const n of F(e.component.selection??{}))for(const i...
  function yc (line 1) | function yc(e){return e.map((e=>(e.on&&!e.on.length&&delete e.on,e)))}
  class vc (line 1) | class vc{constructor(e,t){this.debugName=t,qn(this,"_children",[]),qn(th...
    method constructor (line 1) | constructor(e,t){this.debugName=t,qn(this,"_children",[]),qn(this,"_pa...
    method clone (line 1) | clone(){throw new Error("Cannot clone node")}
    method parent (line 1) | get parent(){return this._parent}
    method parent (line 1) | set parent(e){this._parent=e,e&&e.addChild(this)}
    method children (line 1) | get children(){return this._children}
    method numChildren (line 1) | numChildren(){return this._children.length}
    method addChild (line 1) | addChild(e,t){this._children.includes(e)?$i("Attempt to add the same c...
    method removeChild (line 1) | removeChild(e){const t=this._children.indexOf(e);return this._children...
    method remove (line 1) | remove(){let e=this._parent.removeChild(this);for(const t of this._chi...
    method insertAsParentOf (line 1) | insertAsParentOf(e){const t=e.parent;t.removeChild(this),this.parent=t...
    method swapWithParent (line 1) | swapWithParent(){const e=this._parent,t=e.parent;for(const t of this._...
  class bc (line 1) | class bc extends vc{clone(){const e=new this.constructor;return e.debugN...
    method clone (line 1) | clone(){const e=new this.constructor;return e.debugName=`clone_${this....
    method constructor (line 1) | constructor(e,t,n,i){super(e,t),this.type=n,this.refCounts=i,qn(this,"...
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return void 0===this._hash&&(this._hash=`Output ${W()}`),this._...
    method getSource (line 1) | getSource(){return this.refCounts[this._name]++,this._source}
    method isRequired (line 1) | isRequired(){return!!this.refCounts[this._name]}
    method setSource (line 1) | setSource(e){this._source=e}
  function xc (line 1) | function xc(e){return void 0!==e.as}
  function $c (line 1) | function $c(e){return`${e}_end`}
  class wc (line 1) | class wc extends vc{clone(){return new wc(null,l(this.timeUnits))}constr...
    method clone (line 1) | clone(){return new wc(null,l(this.timeUnits))}
    method constructor (line 1) | constructor(e,t){super(e),this.timeUnits=t}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.reduceFieldDef(((e,n,i)=>{const...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){const{timeUnit:n,...i}={...t},r={...i,ti...
    method merge (line 1) | merge(e){this.timeUnits={...this.timeUnits};for(const t in e.timeUnits...
    method removeFormulas (line 1) | removeFormulas(e){const t={};for(const[n,i]of z(this.timeUnits)){const...
    method producedFields (line 1) | producedFields(){return new Set(F(this.timeUnits).map((e=>xc(e)?e.as:$...
    method dependentFields (line 1) | dependentFields(){return new Set(F(this.timeUnits).map((e=>e.field)))}
    method hash (line 1) | hash(){return`TimeUnit ${d(this.timeUnits)}`}
    method assemble (line 1) | assemble(){const e=[];for(const t of F(this.timeUnits)){const{rectBand...
  function Dc (line 1) | function Dc(e){let{timeUnit:t,field:n,reverse:i}=e;const{unit:r,utc:o}=t...
  function Fc (line 1) | function Fc(e,t,n){let[i,r]=e;if(void 0!==t&&.5!==t){const e=`datum['${i...
  function zc (line 1) | function zc(e,t){let[n,i]=e;return`${1-t} * ${n} + ${t} * ${i}`}
  class _c (line 1) | class _c{constructor(){qn(this,"hasChannel",void 0),qn(this,"hasField",v...
    method constructor (line 1) | constructor(){qn(this,"hasChannel",void 0),qn(this,"hasField",void 0),...
  function Pc (line 1) | function Pc(e,n){return`domain(${t.stringValue(e.scaleName(n))})`}
  function Ac (line 1) | function Ac(e){return e.parent&&km(e.parent)&&(!e.parent.parent??Ac(e.pa...
  function Uc (line 1) | function Uc(e,n,i,r){const o=Wo(n)&&n.condition,a=r(n);if(o){return{[i]:...
  function Rc (line 1) | function Rc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Wc (line 1) | function Wc(e,t){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Bc (line 1) | function Bc(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Ic (line 1) | function Ic(e,n,i){let{reactiveGeom:r}=arguments.length>3&&void 0!==argu...
  function Hc (line 1) | function Hc(e,t,n){let{reactiveGeom:i}=arguments.length>3&&void 0!==argu...
  function Vc (line 1) | function Vc(e){const{markDef:t,config:n}=e,i=Cn("aria",t,n);return!1===i...
  function Gc (line 1) | function Gc(e){const{mark:t,markDef:n,config:i}=e;if(!1===i.aria)return{...
  function Yc (line 1) | function Yc(e){const{encoding:t,markDef:n,config:i,stack:r}=e,o=t.descri...
  function Xc (line 1) | function Xc(e,t){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Qc (line 1) | function Qc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Jc (line 1) | function Jc(e){const{encoding:t,mark:n}=e,i=t.order;return!Qr(n)&&Zo(i)?...
  function Kc (line 1) | function Kc(e){let{channel:t,markDef:n,encoding:i={},model:r,bandPositio...
  function Zc (line 1) | function Zc(e,t,n){let{defaultPos:i,vgChannel:r}=n;const{encoding:o,mark...
  function eu (line 1) | function eu(e){let{model:t,defaultPos:n,channel:i,scaleName:r,scale:o}=e...
  function iu (line 1) | function iu(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?argum...
  function ru (line 1) | function ru(e,t,n){let{defaultPos:i,defaultPos2:r,range:o}=n;return o?ou...
  function ou (line 1) | function ou(e,t,n){let{defaultPos:i,defaultPos2:r}=n;const{markDef:o,con...
  function au (line 1) | function au(e,t){const n=rt(e),i=nt(e);if(void 0!==t[i])return{[i]:po(e,...
  function su (line 1) | function su(e,n){const{config:i,encoding:r,markDef:o}=e,a=o.type,s=it(n)...
  function lu (line 1) | function lu(e,n,i,r,o,a,s){if(io(o)){if(!i)return{mult:o.band,field:{gro...
  function cu (line 1) | function cu(e,t,n,i,r,o,a){if(Ae(e))return 0;const s="x"===e||"y2"===e,l...
  function uu (line 1) | function uu(e){let{fieldDef:t,scaleName:n,bandPosition:i,offset:r,useRec...
  function du (line 1) | function du(e,t){const{fill:n,stroke:i}="include"===t.color?Qc(e):{};ret...
  function mu (line 1) | function mu(e,n,i){const{config:r,mark:o,markDef:a}=e;if("hide"===Cn("in...
  function pu (line 1) | function pu(e,t){return xn.reduce(((n,i)=>(fu.has(i)||void 0===e[i]||"ig...
  function gu (line 1) | function gu(e){const{config:t,markDef:n}=e;if(Cn("invalid",n,t)){const t...
  function hu (line 1) | function hu(e,t){if(void 0!==t)return{[e]:Fn(t)}}
  function i (line 1) | function i(e,i){-1!==e&&n[e].on&&n[e].on.push({events:t.clear,update:i})}
  function zu (line 1) | function zu(e,t,n,i,r){const o=t.name,a=o+Su,s=o+Du,l=n.channel,c=Cc.def...
  function Cu (line 1) | function Cu(e,t,n,i,r){const o=t.name,a=n.channel,s=Cc.defined(t),l=r.fi...
  function Mu (line 1) | function Mu(e){let{escape:n}=arguments.length>1&&void 0!==arguments[1]?a...
  function Lu (line 1) | function Lu(e){return F(e.component.selection??{}).reduce(((e,t)=>e||t.p...
  function qu (line 1) | function qu(e,n){!t.isString(n.select)&&n.select.on||delete e.events,!t....
  function Uu (line 1) | function Uu(e){const t=[];return"Identifier"===e.type?[e.name]:"Literal"...
  function Ru (line 1) | function Ru(e){return"MemberExpression"===e.object.type?Ru(e.object):"da...
  function Wu (line 1) | function Wu(e){const n=t.parseExpression(e),i=new Set;return n.visit((e=...
  class Bu (line 1) | class Bu extends vc{clone(){return new Bu(null,this.model,l(this.filter)...
    method clone (line 1) | clone(){return new Bu(null,this.model,l(this.filter))}
    method constructor (line 1) | constructor(e,t,n){super(e),this.model=t,this.filter=n,qn(this,"expr",...
    method dependentFields (line 1) | dependentFields(){return this._dependentFields}
    method producedFields (line 1) | producedFields(){return new Set}
    method assemble (line 1) | assemble(){return{type:"filter",expr:this.expr}}
    method hash (line 1) | hash(){return`Filter ${this.expr}`}
  function Iu (line 1) | function Iu(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function Hu (line 1) | function Hu(e,n,i){const r=_(n),o=i.encoding;let a,s=i.field;try{a=e.get...
  function Vu (line 1) | function Vu(e,n,i){return N(n,(n=>t.isString(n)?n:function(e){return e?....
  function Gu (line 1) | function Gu(e,t,n,i){e.encode??={},e.encode[t]??={},e.encode[t].update??...
  function Yu (line 1) | function Yu(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function Xu (line 1) | function Xu(e){const{axes:t}=e.component,n=[];for(const i of Ft)if(t[i])...
  function Qu (line 1) | function Qu(e,t,n,i){return Object.assign.apply(null,[{},...e.map((e=>{i...
  function Ju (line 1) | function Ju(e,n){const i=[{}];for(const r of e){let e=n[r]?.style;if(e){...
  function Ku (line 1) | function Ku(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?argum...
  function ef (line 1) | function ef(e){return`(((${e.signal} % 360) + 360) % 360)`}
  function tf (line 1) | function tf(e,t,n,i){if(void 0!==e){if("x"===n){if(yn(e)){const n=ef(e);...
  function nf (line 1) | function nf(e,t,n){if(void 0===e)return;const i="x"===n,r=i?0:90,o=i?"bo...
  function rf (line 1) | function rf(e,t){const n="x"===t?"x2":"y2",i=e.fieldDef(t),r=e.fieldDef(...
  class of (line 1) | class of extends vc{clone(){return new of(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new of(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,qn(this,"_dependentFields",...
    method parseAllForSortIndex (line 1) | static parseAllForSortIndex(e,t){return t.forEachFieldDef(((t,n)=>{if(...
    method producedFields (line 1) | producedFields(){return new Set([this.transform.as])}
    method dependentFields (line 1) | dependentFields(){return this._dependentFields}
    method assemble (line 1) | assemble(){return{type:"formula",expr:this.transform.calculate,as:this...
    method hash (line 1) | hash(){return`Calculate ${d(this.transform)}`}
  function af (line 1) | function af(e,t,n){return oa(e,{prefix:t,suffix:"sort_index",...n??{}})}
  function sf (line 1) | function sf(e,t){return p(["top","bottom"],t)?"column":p(["left","right"...
  function lf (line 1) | function lf(e,t,n,i){const r="row"===i?n.headerRow:"column"===i?n.header...
  function cf (line 1) | function cf(e,t,n,i){const r={};for(const o of e){const e=lf(o,t||{},n,i...
  function df (line 1) | function df(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e...
  function mf (line 1) | function mf(e,t){switch(arguments.length>2&&void 0!==arguments[2]?argume...
  function pf (line 1) | function pf(e,t){const n=tf(e,"row"===t?"left":"top","row"===t?"y":"x",!...
  function gf (line 1) | function gf(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r o...
  function hf (line 1) | function hf(e,n){const{sort:i}=e;return Co(i)?{field:oa(i,{expr:"datum"}...
  function yf (line 1) | function yf(e,t,n){const{format:i,formatType:r,labelAngle:o,labelAnchor:...
  function vf (line 1) | function vf(e,t,n,i,r){if(r){let o=null;const{facetFieldDef:a}=i,s=e.con...
  function xf (line 1) | function xf(e,t){return bf[t][e]}
  function $f (line 1) | function $f(e,t,n,i,r){const o={};for(const a of i){if(!r[a])continue;co...
  function wf (line 1) | function wf(e){return[...kf(e,"width"),...kf(e,"height"),...kf(e,"childW...
  function kf (line 1) | function kf(e,t){const n="width"===t?"x":"y",i=e.component.layoutSize.ge...
  function Sf (line 1) | function Sf(e,t){const n=`${e}_step`;return yn(t.step)?{name:n,update:t....
  function Df (line 1) | function Df(e,t,n){const i=t.get("type"),r=t.get("padding"),o=U(t.get("p...
  function Ff (line 1) | function Ff(e){return"childWidth"===e?"width":"childHeight"===e?"height":e}
  function zf (line 1) | function zf(e,t){return D(e).reduce(((n,i)=>{const r=e[i];return{...n,.....
  function Of (line 1) | function Of(e,t){if($m(t))return"theta"===e?"independent":"shared";if(km...
  function _f (line 1) | function _f(e,t){const n=e.scale[t],i=zt(t)?"axis":"legend";return"indep...
  class Cf (line 1) | class Cf extends Jl{}
  function Af (line 1) | function Af(e){return Tf(e,((e,t)=>Math.max(e,t.value)))}
  function jf (line 1) | function jf(e){return Tf(e,((e,t)=>U(e,t.value)))}
  function Tf (line 1) | function Tf(e,n){return function(e){const n=e?.condition;return!!n&&(t.i...
  function Ef (line 1) | function Ef(e,n,i){const r=n.get("selections");if(!r?.length)return;cons...
  function Lf (line 1) | function Lf(e){const{legend:t}=e;return U(t.type,function(e){let{channel...
  function qf (line 1) | function qf(e){let{legendConfig:t,legendType:n,orient:i,legend:r}=e;retu...
  function Uf (line 1) | function Uf(e,t,n,i){return{signal:`clamp(${e.getSizeSignalRef(t).signal...
  function Rf (line 1) | function Rf(e){const t=xm(e)?function(e){const{encoding:t}=e,n={};for(co...
  function Wf (line 1) | function Wf(e,t,n,i){switch(t){case"disable":return void 0!==n;case"valu...
  function Bf (line 1) | function Bf(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:o}=...
  function If (line 1) | function If(e,t){if(!e)return t.clone();const n=e.getWithExplicit("orien...
  function Hf (line 1) | function Hf(e,t){return"circle"===t.value?t:e}
  function Vf (line 1) | function Vf(e){const t=e.component.legends,n={};for(const i of D(t)){con...
  function Gf (line 1) | function Gf(e){return km(e)||wm(e)?function(e){return e.children.reduce(...
  function Yf (line 1) | function Yf(e){const t=e.component.projection;if(!t||t.merged)return[];c...
  class Qf (line 1) | class Qf extends Jl{constructor(e,t,n,i){super({...t},{name:e}),this.spe...
    method constructor (line 1) | constructor(e,t,n,i){super({...t},{name:e}),this.specifiedProjection=t...
    method isFit (line 1) | get isFit(){return!!this.data}
  function Jf (line 1) | function Jf(e){e.component.projection=xm(e)?function(e){if(e.hasProjecti...
  function Kf (line 1) | function Kf(e,t,n,i){if(Sa(t,n)){const r=xm(e)?e.axis(n)??e.legend(n)??{...
  function Zf (line 1) | function Zf(e,t){return`${sn(e)}_${t}`}
  function ed (line 1) | function ed(e,t,n){const i=Zf(ba(n,void 0)??{},t);return e.getName(`${i}...
  function td (line 1) | function td(e,n,i){let r,o;r=function(e){return"as"in e}(e)?t.isString(e...
  class nd (line 1) | class nd extends vc{clone(){return new nd(null,l(this.bins))}constructor...
    method clone (line 1) | clone(){return new nd(null,l(this.bins))}
    method constructor (line 1) | constructor(e,t){super(e),this.bins=t}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.reduceFieldDef(((e,n,i)=>{if(Ko...
    method makeFromTransform (line 1) | static makeFromTransform(e,t,n){const{key:i,binComponent:r}=td(t,t.bin...
    method merge (line 1) | merge(e,t){for(const n of D(e.bins))n in this.bins?(t(e.bins[n].signal...
    method producedFields (line 1) | producedFields(){return new Set(F(this.bins).map((e=>e.as)).flat(2))}
    method dependentFields (line 1) | dependentFields(){return new Set(F(this.bins).map((e=>e.field)))}
    method hash (line 1) | hash(){return`Bin ${d(this.bins)}`}
    method assemble (line 1) | assemble(){return F(this.bins).flatMap((e=>{const t=[],[n,...i]=e.as,{...
  function id (line 1) | function id(e,n,i,r){const o=xm(r)?r.encoding[it(n)]:void 0;if(Ko(i)&&xm...
  class rd (line 1) | class rd extends vc{clone(){return new rd(null,new Set(this.dimensions),...
    method clone (line 1) | clone(){return new rd(null,new Set(this.dimensions),l(this.measures))}
    method constructor (line 1) | constructor(e,t,n){super(e),this.dimensions=t,this.measures=n}
    method groupBy (line 1) | get groupBy(){return this.dimensions}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){let n=!1;t.forEachFieldDef((e=>{e.aggrega...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){const n=new Set,i={};for(const e of t.ag...
    method merge (line 1) | merge(e){return x(this.dimensions,e.dimensions)?(function(e,t){for(con...
    method addDimensions (line 1) | addDimensions(e){e.forEach(this.dimensions.add,this.dimensions)}
    method dependentFields (line 1) | dependentFields(){return new Set([...this.dimensions,...D(this.measure...
    method producedFields (line 1) | producedFields(){const e=new Set;for(const t of D(this.measures))for(c...
    method hash (line 1) | hash(){return`Aggregate ${d({dimensions:this.dimensions,measures:this....
    method assemble (line 1) | assemble(){const e=[],t=[],n=[];for(const i of D(this.measures))for(co...
  class od (line 1) | class od extends vc{constructor(e,n,i,r){super(e),this.model=n,this.name...
    method constructor (line 1) | constructor(e,n,i,r){super(e),this.model=n,this.name=i,this.data=r,qn(...
    method hash (line 1) | hash(){let e="Facet";for(const t of Re)this[t]&&(e+=` ${t.charAt(0)}:$...
    method fields (line 1) | get fields(){const e=[];for(const t of Re)this[t]?.fields&&e.push(...t...
    method dependentFields (line 1) | dependentFields(){const e=new Set(this.fields);for(const t of Re)this[...
    method producedFields (line 1) | producedFields(){return new Set}
    method getSource (line 1) | getSource(){return this.name}
    method getChildIndependentFieldsWithStep (line 1) | getChildIndependentFieldsWithStep(){const e={};for(const t of Ft){cons...
    method assembleRowColumnHeaderData (line 1) | assembleRowColumnHeaderData(e,t,n){const i={row:"y",column:"x",facet:v...
    method assembleFacetHeaderData (line 1) | assembleFacetHeaderData(e){const{columns:t}=this.model.layout,{layoutH...
    method assemble (line 1) | assemble(){const e=[];let t=null;const n=this.getChildIndependentField...
  function ad (line 1) | function ad(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('...
  function sd (line 1) | function sd(e){const n={};return a(e.filter,(e=>{if(Ji(e)){let i=null;Ii...
  function ld (line 1) | function ld(e){const n={};function i(e){var i;$a(e)?n[e.field]="date":"q...
  class cd (line 1) | class cd extends vc{clone(){return new cd(null,l(this._parse))}construct...
    method clone (line 1) | clone(){return new cd(null,l(this._parse))}
    method constructor (line 1) | constructor(e,t){super(e),qn(this,"_parse",void 0),this._parse=t}
    method hash (line 1) | hash(){return`Parse ${d(this._parse)}`}
    method makeExplicit (line 1) | static makeExplicit(e,t,n){let i={};const r=t.data;return!sc(r)&&r?.fo...
    method makeWithAncestors (line 1) | static makeWithAncestors(e,t,n,i){for(const e of D(n)){const t=i.getWi...
    method parse (line 1) | get parse(){return this._parse}
    method merge (line 1) | merge(e){this._parse={...this._parse,...e.parse},e.remove()}
    method assembleFormatParse (line 1) | assembleFormatParse(){const e={};for(const t of D(this._parse)){const ...
    method producedFields (line 1) | producedFields(){return new Set(D(this._parse))}
    method dependentFields (line 1) | dependentFields(){return new Set(D(this._parse))}
    method assembleTransforms (line 1) | assembleTransforms(){let e=arguments.length>0&&void 0!==arguments[0]&&...
  class ud (line 1) | class ud extends vc{clone(){return new ud(null)}constructor(e){super(e)}...
    method clone (line 1) | clone(){return new ud(null)}
    method constructor (line 1) | constructor(e){super(e)}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set([xs])}
    method hash (line 1) | hash(){return"Identifier"}
    method assemble (line 1) | assemble(){return{type:"identifier",as:xs}}
  class fd (line 1) | class fd extends vc{clone(){return new fd(null,this.params)}constructor(...
    method clone (line 1) | clone(){return new fd(null,this.params)}
    method constructor (line 1) | constructor(e,t){super(e),this.params=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){}
    method hash (line 1) | hash(){return`Graticule ${d(this.params)}`}
    method assemble (line 1) | assemble(){return{type:"graticule",...!0===this.params?{}:this.params}}
  class dd (line 1) | class dd extends vc{clone(){return new dd(null,this.params)}constructor(...
    method clone (line 1) | clone(){return new dd(null,this.params)}
    method constructor (line 1) | constructor(e,t){super(e),this.params=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set([this.params.as??"data"])}
    method hash (line 1) | hash(){return`Hash ${d(this.params)}`}
    method assemble (line 1) | assemble(){return{type:"sequence",...this.params}}
  class md (line 1) | class md extends vc{constructor(e){let t;if(super(null),qn(this,"_data",...
    method constructor (line 1) | constructor(e){let t;if(super(null),qn(this,"_data",void 0),qn(this,"_...
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){}
    method data (line 1) | get data(){return this._data}
    method hasName (line 1) | hasName(){return!!this._name}
    method isGenerator (line 1) | get isGenerator(){return this._generator}
    method dataName (line 1) | get dataName(){return this._name}
    method dataName (line 1) | set dataName(e){this._name=e}
    method parent (line 1) | set parent(e){throw new Error("Source nodes have to be roots.")}
    method remove (line 1) | remove(){throw new Error("Source nodes are roots and cannot be removed...
    method hash (line 1) | hash(){throw new Error("Cannot hash sources")}
    method assemble (line 1) | assemble(){return{name:this._name,...this._data,transform:[]}}
  function pd (line 1) | function pd(e){return e instanceof md||e instanceof fd||e instanceof dd}
  class hd (line 1) | class hd{constructor(){Wn(this,gd,{writable:!0,value:void 0}),Un(this,gd...
    method constructor (line 1) | constructor(){Wn(this,gd,{writable:!0,value:void 0}),Un(this,gd,!1)}
    method setModified (line 1) | setModified(){Un(this,gd,!0)}
    method modifiedFlag (line 1) | get modifiedFlag(){return function(e,t){return t.get?t.get.call(e):t.v...
  class yd (line 1) | class yd extends hd{getNodeDepths(e,t,n){n.set(e,t);for(const i of e.chi...
    method getNodeDepths (line 1) | getNodeDepths(e,t,n){n.set(e,t);for(const i of e.children)this.getNode...
    method optimize (line 1) | optimize(e){const t=[...this.getNodeDepths(e,0,new Map).entries()].sor...
  class vd (line 1) | class vd extends hd{optimize(e){this.run(e);for(const t of e.children)th...
    method optimize (line 1) | optimize(e){this.run(e);for(const t of e.children)this.optimize(t);ret...
  class bd (line 1) | class bd extends vd{mergeNodes(e,t){const n=t.shift();for(const i of t)e...
    method mergeNodes (line 1) | mergeNodes(e,t){const n=t.shift();for(const i of t)e.removeChild(i),i....
    method run (line 1) | run(e){const t=e.children.map((e=>e.hash())),n={};for(let i=0;i1))for(const t of...
    method run (line 1) | run(e){if(!(pd(e)||e.numChildren()>1))for(const t of e.children)if(t i...
  class Sd (line 1) | class Sd extends yd{run(e){const t=[...e.children],n=e.children.filter((...
    method run (line 1) | run(e){const t=[...e.children],n=e.children.filter((e=>e instanceof cd...
  class Dd (line 1) | class Dd extends yd{run(e){e instanceof bc||e.numChildren()>0||e instanc...
    method run (line 1) | run(e){e instanceof bc||e.numChildren()>0||e instanceof od||e instance...
  class Fd (line 1) | class Fd extends yd{run(e){const t=e.children.filter((e=>e instanceof wc...
    method run (line 1) | run(e){const t=e.children.filter((e=>e instanceof wc)),n=t.pop();for(c...
  class zd (line 1) | class zd extends yd{run(e){const t=e.children.filter((e=>e instanceof rd...
    method run (line 1) | run(e){const t=e.children.filter((e=>e instanceof rd)),n={};for(const ...
  class Od (line 1) | class Od extends yd{constructor(e){super(),this.model=e}run(e){const t=!...
    method constructor (line 1) | constructor(e){super(),this.model=e}
    method run (line 1) | run(e){const t=!(pd(e)||e instanceof Bu||e instanceof cd||e instanceof...
  class _d (line 1) | class _d extends yd{run(e){const t=[...e.children];if(!g(t,(e=>e instanc...
    method run (line 1) | run(e){const t=[...e.children];if(!g(t,(e=>e instanceof bc))||e.numChi...
  class Nd (line 1) | class Nd extends vc{clone(){return new Nd(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Nd(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b(this.transform.groupby.conca...
    method dependentFields (line 1) | dependentFields(){const e=new Set;return this.transform.groupby&&this....
    method producedFields (line 1) | producedFields(){return new Set(this.transform.joinaggregate.map(this....
    method getDefaultName (line 1) | getDefaultName(e){return e.as??oa(e)}
    method hash (line 1) | hash(){return`JoinAggregateTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const e=[],t=[],n=[];for(const i of this.transform.joinaggr...
  class Cd (line 1) | class Cd extends vc{clone(){return new Cd(null,l(this._stack))}construct...
    method clone (line 1) | clone(){return new Cd(null,l(this._stack))}
    method constructor (line 1) | constructor(e,t){super(e),qn(this,"_stack",void 0),this._stack=t}
    method makeFromTransform (line 1) | static makeFromTransform(e,n){const{stack:i,groupby:r,as:o,offset:a="z...
    method makeFromEncoding (line 1) | static makeFromEncoding(e,n){const i=n.stack,{encoding:r}=n;if(!i)retu...
    method stack (line 1) | get stack(){return this._stack}
    method addDimensions (line 1) | addDimensions(e){this._stack.facetby.push(...e)}
    method dependentFields (line 1) | dependentFields(){const e=new Set;return e.add(this._stack.stackField)...
    method producedFields (line 1) | producedFields(){return new Set(this._stack.as)}
    method hash (line 1) | hash(){return`Stack ${d(this._stack)}`}
    method getGroupbyFields (line 1) | getGroupbyFields(){const{dimensionFieldDefs:e,impute:t,groupby:n}=this...
    method assemble (line 1) | assemble(){const e=[],{facetby:t,dimensionFieldDefs:n,stackField:i,sta...
  class Pd (line 1) | class Pd extends vc{clone(){return new Pd(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Pd(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b(this.transform.groupby.conca...
    method dependentFields (line 1) | dependentFields(){const e=new Set;return(this.transform.groupby??[]).f...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.window.map(this.getDefa...
    method getDefaultName (line 1) | getDefaultName(e){return e.as??oa(e)}
    method hash (line 1) | hash(){return`WindowTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const e=[],t=[],n=[],i=[];for(const r of this.transform.win...
  function Ad (line 1) | function Ad(e){if(e instanceof od)if(1!==e.numChildren()||e.children[0]i...
  function jd (line 1) | function jd(e){if(e instanceof bc&&e.type===fc.Main&&1===e.numChildren()...
  function Md (line 1) | function Md(e){for(const t of e){for(const e of t.children)if(e.parent!=...
  function Ld (line 1) | function Ld(e,t){let n=!1;for(const i of t)n=e.optimize(i)||n;return n}
  function qd (line 1) | function qd(e,t,n){let i=e.sources,r=!1;return r=Ld(new wd,i)||r,r=Ld(ne...
  class Ud (line 1) | class Ud{constructor(e){qn(this,"signal",void 0),Object.defineProperty(t...
    method constructor (line 1) | constructor(e){qn(this,"signal",void 0),Object.defineProperty(this,"si...
    method fromName (line 1) | static fromName(e,t){return new Ud((()=>e(t)))}
  function Rd (line 1) | function Rd(e){xm(e)?function(e){const t=e.component.scales;for(const n ...
  function Wd (line 1) | function Wd(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}...
  function Bd (line 1) | function Bd(e,t,n){const i=Ui(n)?.unit;return"temporal"===t||i?function(...
  function Id (line 1) | function Id(e,n,i,r){const{encoding:o,markDef:a,mark:s,config:l,stack:c}...
  function Hd (line 1) | function Hd(e,t){const{op:n,field:i,order:r}=e;return{op:n??(t?"sum":zo)...
  function Vd (line 1) | function Vd(e,t){const n=e.component.scales[t],i=e.specifiedScales[t].do...
  function Gd (line 1) | function Gd(e,n){const{aggregate:i,type:r}=e;return i?t.isString(i)&&!an...
  function Yd (line 1) | function Yd(e,t,n,i){return e.explicit&&t.explicit&&$i(function(e,t,n,i)...
  function Xd (line 1) | function Xd(e){const n=b(e.map((e=>{if(bn(e)){const{sort:t,...n}=e;retur...
  function Qd (line 1) | function Qd(e){if(bn(e)&&t.isString(e.field))return e.field;if(function(...
  function Jd (line 1) | function Jd(e,t){const n=e.component.scales[t].get("domains").map((t=>(b...
  function Kd (line 1) | function Kd(e){return km(e)||wm(e)?e.children.reduce(((e,t)=>e.concat(Kd...
  function Zd (line 1) | function Zd(e){return D(e.component.scales).reduce(((n,i)=>{const r=e.co...
  class em (line 1) | class em extends Jl{constructor(e,t){super({},{name:e}),qn(this,"merged"...
    method constructor (line 1) | constructor(e,t){super({},{name:e}),qn(this,"merged",!1),this.setWithE...
    method domainDefinitelyIncludesZero (line 1) | domainDefinitelyIncludesZero(){return!1!==this.get("zero")||g(this.get...
  function nm (line 1) | function nm(e,n){const i=e.fieldDef(n);if(i?.bin){const{bin:r,field:o}=i...
  function im (line 1) | function im(e,n){const i=n.specifiedScales[e],{size:r}=n,o=n.getScaleCom...
  function rm (line 1) | function rm(e){return function(e){return!t.isString(e)&&!!e.name}(e)?{sc...
  function om (line 1) | function om(e,t,n){let{center:i}=arguments.length>3&&void 0!==arguments[...
  function am (line 1) | function am(e,n,i){const{encoding:r}=n,o=n.getScaleComponent(i),a=at(i),...
  function sm (line 1) | function sm(e,t){if("offset"===_s({step:e,offsetIsDiscrete:xr(t)}))retur...
  function lm (line 1) | function lm(e,t,n){const i=e===Z?"width":"height",r=t[i];return r||Ts(n,i)}
  function cm (line 1) | function cm(e,t,n){if(t)return yn(t)?{signal:`${t.signal} ? 0 : ${cm(e,!...
  function fm (line 1) | function fm(e,t,n){const i=Ns(e.width)?e.width.step:js(n,"width"),r=Ns(e...
  function dm (line 1) | function dm(e,t){xm(e)?function(e,t){const n=e.component.scales,{config:...
  function pm (line 1) | function pm(e){xm(e)?function(e){const t=e.component.scales;for(const n ...
  function gm (line 1) | function gm(e,t){const n=e.component.scales;for(const n of e.children)"r...
  function hm (line 1) | function hm(e,t,n,i){const r=function(e,t,n,i){switch(t.type){case"nomin...
  function ym (line 1) | function ym(e){xm(e)?e.component.scales=function(e){const{encoding:t,mar...
  class bm (line 1) | class bm{constructor(){qn(this,"nameMap",void 0),this.nameMap={}}rename(...
    method constructor (line 1) | constructor(){qn(this,"nameMap",void 0),this.nameMap={}}
    method rename (line 1) | rename(e,t){this.nameMap[e]=t}
    method has (line 1) | has(e){return void 0!==this.nameMap[e]}
    method get (line 1) | get(e){for(;this.nameMap[e]&&e!==this.nameMap[e];)e=this.nameMap[e];re...
  function xm (line 1) | function xm(e){return"unit"===e?.type}
  function $m (line 1) | function $m(e){return"facet"===e?.type}
  function wm (line 1) | function wm(e){return"concat"===e?.type}
  function km (line 1) | function km(e){return"layer"===e?.type}
  class Sm (line 1) | class Sm{constructor(e,n,i,r,o,a,c){this.type=n,this.parent=i,this.confi...
    method constructor (line 1) | constructor(e,n,i,r,o,a,c){this.type=n,this.parent=i,this.config=o,qn(...
    method width (line 1) | get width(){return this.getSizeSignalRef("width")}
    method height (line 1) | get height(){return this.getSizeSignalRef("height")}
    method parse (line 1) | parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLa...
    method parseScale (line 1) | parseScale(){!function(e){let{ignoreRange:t}=arguments.length>1&&void ...
    method parseProjection (line 1) | parseProjection(){Jf(this)}
    method renameTopLevelLayoutSizeSignal (line 1) | renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this...
    method parseLegends (line 1) | parseLegends(){Rf(this)}
    method assembleEncodeFromView (line 1) | assembleEncodeFromView(e){const{style:t,...n}=e,i={};for(const e of D(...
    method assembleGroupEncodeEntry (line 1) | assembleGroupEncodeEntry(e){let t={};return this.view&&(t=this.assembl...
    method assembleLayout (line 1) | assembleLayout(){if(!this.layout)return;const{spacing:e,...t}=this.lay...
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){return{}}
    method assembleHeaderMarks (line 1) | assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];f...
    method assembleAxes (line 1) | assembleAxes(){return function(e,t){const{x:n=[],y:i=[]}=e;return[...n...
    method assembleLegends (line 1) | assembleLegends(){return Vf(this)}
    method assembleProjections (line 1) | assembleProjections(){return Gf(this)}
    method assembleTitle (line 1) | assembleTitle(){const{encoding:e,...t}=this.title??{},n={...gn(this.co...
    method assembleGroup (line 1) | assembleGroup(){let e=arguments.length>0&&void 0!==arguments[0]?argume...
    method getName (line 1) | getName(e){return _((this.name?`${this.name}_`:"")+e)}
    method getDataName (line 1) | getDataName(e){return this.getName(fc[e].toLowerCase())}
    method requestDataName (line 1) | requestDataName(e){const t=this.getDataName(e),n=this.component.data.o...
    method getSizeSignalRef (line 1) | getSizeSignalRef(e){if($m(this.parent)){const t=Nt(Ff(e)),n=this.compo...
    method lookupDataSource (line 1) | lookupDataSource(e){const t=this.component.data.outputNodes[e];return ...
    method getSignalName (line 1) | getSignalName(e){return this.signalNameMap.get(e)}
    method renameSignal (line 1) | renameSignal(e,t){this.signalNameMap.rename(e,t)}
    method renameScale (line 1) | renameScale(e,t){this.scaleNameMap.rename(e,t)}
    method renameProjection (line 1) | renameProjection(e,t){this.projectionNameMap.rename(e,t)}
    method scaleName (line 1) | scaleName(e,t){return t?this.getName(e):Ke(e)&&Ht(e)&&this.component.s...
    method projectionName (line 1) | projectionName(e){return e?this.getName("projection"):this.component.p...
    method getScaleComponent (line 1) | getScaleComponent(e){if(!this.component.scales)throw new Error("getSca...
    method getSelectionComponent (line 1) | getSelectionComponent(e,t){let n=this.component.selection[e];if(!n&&th...
    method hasAxisOrientSignalRef (line 1) | hasAxisOrientSignalRef(){return this.component.axes.x?.some((e=>e.hasO...
  class Dm (line 1) | class Dm extends Sm{vgField(e){let t=arguments.length>1&&void 0!==argume...
    method vgField (line 1) | vgField(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1...
    method reduceFieldDef (line 1) | reduceFieldDef(e,n){return function(e,n,i,r){return e?D(e).reduce(((i,...
    method forEachFieldDef (line 1) | forEachFieldDef(e,t){Wa(this.getMapping(),((t,n)=>{const i=pa(t);i&&e(...
  class Fm (line 1) | class Fm extends vc{clone(){return new Fm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Fm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.density,...this.trans...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`DensityTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{density:e,...t}=this.transform,n={type:"kde",field:e,...
  class zm (line 1) | class zm extends vc{clone(){return new zm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new zm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t)}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.extent])}
    method producedFields (line 1) | producedFields(){return new Set([])}
    method hash (line 1) | hash(){return`ExtentTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{extent:e,param:t}=this.transform;return{type:"extent"...
  class Om (line 1) | class Om extends vc{clone(){return new Om(null,{...this.filter})}constru...
    method clone (line 1) | clone(){return new Om(null,{...this.filter})}
    method constructor (line 1) | constructor(e,t){super(e),this.filter=t}
    method make (line 1) | static make(e,t){const{config:n,mark:i,markDef:r}=t;if("filter"!==Cn("...
    method dependentFields (line 1) | dependentFields(){return new Set(D(this.filter))}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`FilterInvalid ${d(this.filter)}`}
    method assemble (line 1) | assemble(){const e=D(this.filter).reduce(((e,t)=>{const n=this.filter[...
  class _m (line 1) | class _m extends vc{clone(){return new _m(this.parent,l(this.transform))...
    method clone (line 1) | clone(){return new _m(this.parent,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const{f...
    method dependentFields (line 1) | dependentFields(){return new Set(this.transform.flatten)}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`FlattenTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{flatten:e,as:t}=this.transform;return{type:"flatten",...
  class Nm (line 1) | class Nm extends vc{clone(){return new Nm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Nm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set(this.transform.fold)}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`FoldTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{fold:e,as:t}=this.transform;return{type:"fold",fields...
  class Cm (line 1) | class Cm extends vc{clone(){return new Cm(null,l(this.fields),this.geojs...
    method clone (line 1) | clone(){return new Cm(null,l(this.fields),this.geojson,this.signal)}
    method parseAll (line 1) | static parseAll(e,t){if(t.component.projection&&!t.component.projectio...
    method constructor (line 1) | constructor(e,t,n,i){super(e),this.fields=t,this.geojson=n,this.signal=i}
    method dependentFields (line 1) | dependentFields(){const e=(this.fields??[]).filter(t.isString);return ...
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`GeoJSON ${this.geojson} ${this.signal} ${d(this.fields)}`}
    method assemble (line 1) | assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum[...
  class Pm (line 1) | class Pm extends vc{clone(){return new Pm(null,this.projection,l(this.fi...
    method clone (line 1) | clone(){return new Pm(null,this.projection,l(this.fields),l(this.as))}
    method constructor (line 1) | constructor(e,t,n,i){super(e),this.projection=t,this.fields=n,this.as=i}
    method parseAll (line 1) | static parseAll(e,t){if(!t.projectionName())return e;for(const n of[[u...
    method dependentFields (line 1) | dependentFields(){return new Set(this.fields.filter(t.isString))}
    method producedFields (line 1) | producedFields(){return new Set(this.as)}
    method hash (line 1) | hash(){return`Geopoint ${this.projection} ${d(this.fields)} ${d(this.a...
    method assemble (line 1) | assemble(){return{type:"geopoint",projection:this.projection,fields:th...
  class Am (line 1) | class Am extends vc{clone(){return new Am(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Am(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.impute,this.transform...
    method producedFields (line 1) | producedFields(){return new Set([this.transform.impute])}
    method processSequence (line 1) | processSequence(e){const{start:t=0,stop:n,step:i}=e;return{signal:`seq...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){return new Am(e,t)}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.encoding,i=n.x,r=n.y;if(Ho(i)&&...
    method hash (line 1) | hash(){return`Impute ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{impute:e,key:t,keyvals:n,method:i,groupby:r,value:o,f...
  class jm (line 1) | class jm extends vc{clone(){return new jm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new jm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.loess,this.transform....
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`LoessTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{loess:e,on:t,...n}=this.transform;return{type:"loess"...
  class Tm (line 1) | class Tm extends vc{clone(){return new Tm(null,l(this.transform),this.se...
    method clone (line 1) | clone(){return new Tm(null,l(this.transform),this.secondary)}
    method constructor (line 1) | constructor(e,t,n){super(e),this.transform=t,this.secondary=n}
    method make (line 1) | static make(e,t,n,i){const r=t.component.data.sources,{from:o}=n;let a...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.lookup])}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as?t.array(this.transfo...
    method hash (line 1) | hash(){return`Lookup ${d({transform:this.transform,secondary:this.seco...
    method assemble (line 1) | assemble(){let e;if(this.transform.from.fields)e={values:this.transfor...
  class Em (line 1) | class Em extends vc{clone(){return new Em(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Em(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.quantile,...this.tran...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`QuantileTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{quantile:e,...t}=this.transform;return{type:"quantile...
  class Mm (line 1) | class Mm extends vc{clone(){return new Mm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Mm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.regression,this.trans...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`RegressionTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{regression:e,on:t,...n}=this.transform;return{type:"r...
  class Lm (line 1) | class Lm extends vc{clone(){return new Lm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Lm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b((this.transform.groupby??[])...
    method producedFields (line 1) | producedFields(){}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.pivot,this.transform....
    method hash (line 1) | hash(){return`PivotTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{pivot:e,value:t,groupby:n,limit:i,op:r}=this.transfor...
  class qm (line 1) | class qm extends vc{clone(){return new qm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new qm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`SampleTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){return{type:"sample",size:this.transform.sample}}
  function Um (line 1) | function Um(e){let t=0;return function n(i,r){if(i instanceof md&&!i.isG...
  function Rm (line 1) | function Rm(e){return"top"===e||"left"===e||yn(e)?"header":"footer"}
  function Wm (line 1) | function Wm(e,n){const{facet:i,config:r,child:o,component:a}=e;if(e.chan...
  function Bm (line 1) | function Bm(e,t,n){const i="row"===t?"height":"width";return{labels:n,si...
  function Im (line 1) | function Im(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHe...
  function Hm (line 1) | function Hm(e){for(const t of e.children)t.parseLayoutSize()}
  function Vm (line 1) | function Vm(e,t){const n=Ff(t),i=Nt(n),r=e.component.resolve,o=e.compone...
  function Gm (line 1) | function Gm(e,t){const n="width"===t?"x":"y",i=e.config,r=e.getScaleComp...
  function Ym (line 1) | function Ym(e,t,n){return oa(t,{suffix:`by_${oa(e)}`,...n??{}})}
  class Xm (line 1) | class Xm extends Dm{constructor(e,t,n,i){super(e,"facet",t,n,i,e.resolve...
    method constructor (line 1) | constructor(e,t,n,i){super(e,"facet",t,n,i,e.resolve),qn(this,"facet",...
    method initFacet (line 1) | initFacet(e){if(!Ao(e))return{facet:this.initFacetFieldDef(e,"facet")}...
    method initFacetFieldDef (line 1) | initFacetFieldDef(e,t){const n=va(e,t);return n.header?n.header=pn(n.h...
    method channelHasField (line 1) | channelHasField(e){return!!this.facet[e]}
    method fieldDef (line 1) | fieldDef(e){return this.facet[e]}
    method parseData (line 1) | parseData(){this.component.data=Jm(this),this.child.parseData()}
    method parseLayoutSize (line 1) | parseLayoutSize(){Hm(this)}
    method parseSelections (line 1) | parseSelections(){this.child.parseSelections(),this.component.selectio...
    method parseMarkGroup (line 1) | parseMarkGroup(){this.child.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(e){for...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.child.assembleSelectio...
    method assembleSignals (line 1) | assembleSignals(){return this.child.assembleSignals(),[]}
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.child.assembleSelectionData(e)}
    method getHeaderLayoutMixins (line 1) | getHeaderLayoutMixins(){const e={};for(const t of Re)for(const n of ff...
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){const{column:e,row:t}=this.facet,n=e?this.colu...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return this.child.assembleLayoutSignals()}
    method columnDistinctSignal (line 1) | columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Xm)){r...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){}
    method assembleGroup (line 1) | assembleGroup(e){return this.parent&&this.parent instanceof Xm?{...thi...
    method getCardinalityAggregateForChild (line 1) | getCardinalityAggregateForChild(){const e=[],t=[],n=[];if(this.child i...
    method assembleFacet (line 1) | assembleFacet(){const{name:e,data:n}=this.component.data.facetRoot,{ro...
    method facetSortFields (line 1) | facetSortFields(e){const{facet:n}=this,i=n[e];return i?Co(i.sort)?[Ym(...
    method facetSortOrder (line 1) | facetSortOrder(e){const{facet:n}=this,i=n[e];if(i){const{sort:e}=i;ret...
    method assembleLabelTitle (line 1) | assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return yf...
    method assembleMarks (line 1) | assembleMarks(){const{child:e}=this,t=function(e){const t=[],n=Um(t);f...
    method getMapping (line 1) | getMapping(){return this.facet}
  function Qm (line 1) | function Qm(e,t){for(const n of t){const t=n.data;if(e.name&&n.hasName()...
  function Jm (line 1) | function Jm(e){let t=function(e,t){if(e.data||!e.parent){if(null===e.dat...
  class Km (line 1) | class Km extends Sm{constructor(e,t,n,i){super(e,"concat",t,n,i,e.resolv...
    method constructor (line 1) | constructor(e,t,n,i){super(e,"concat",t,n,i,e.resolve),qn(this,"childr...
    method parseData (line 1) | parseData(){this.component.data=Jm(this);for(const e of this.children)...
    method parseSelections (line 1) | parseSelections(){this.component.selection={};for(const e of this.chil...
    method parseMarkGroup (line 1) | parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){for(const e of this.children)e.parseAxesAndHeade...
    method getChildren (line 1) | getChildren(e){return zs(e)?e.vconcat:Os(e)?e.hconcat:e.concat}
    method parseLayoutSize (line 1) | parseLayoutSize(){!function(e){Hm(e);const t=1===e.layout.columns?"wid...
    method parseAxisGroup (line 1) | parseAxisGroup(){return null}
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.children.reduce(((e,t)...
    method assembleSignals (line 1) | assembleSignals(){return this.children.forEach((e=>e.assembleSignals()...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){const e=wf(this);for(const t of this.children)...
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.children.reduce(((e,t)=>t.assembl...
    method assembleMarks (line 1) | assembleMarks(){return this.children.map((e=>{const t=e.assembleTitle(...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){}
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){const e=this.layout.columns;return{...null!=e?...
  class tp (line 1) | class tp extends Jl{constructor(){let e=arguments.length>0&&void 0!==arg...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){return new tp(l(this.explicit),l(this.implicit),this.mainExtra...
    method hasAxisPart (line 1) | hasAxisPart(e){return"axis"===e||("grid"===e||"title"===e?!!this.get(e...
    method hasOrientSignalRef (line 1) | hasOrientSignalRef(){return yn(this.explicit.orient)}
  function ip (line 1) | function ip(e,t){if(!e)return t.map((e=>e.clone()));{if(e.length!==t.len...
  function rp (line 1) | function rp(e,t){for(const n of ep){const i=nc(e.getWithExplicit(n),t.ge...
  function op (line 1) | function op(e,t,n,i,r){if("disable"===t)return void 0!==n;switch(n=n||{}...
  function sp (line 1) | function sp(e,t){let n=t.axis(e);const i=new tp,r=ga(t.encoding[e]),{mar...
  function lp (line 1) | function lp(e,t){const{config:n}=e;return{...du(e,{align:"ignore",baseli...
  function cp (line 1) | function cp(e,t,n){return n?{shape:{value:n}}:Xc("shape",e)}
  function fp (line 1) | function fp(e,t,n){if(void 0===Cn("align",e,n))return"center"}
  function dp (line 1) | function dp(e,t,n){if(void 0===Cn("baseline",e,n))return"middle"}
  function pp (line 1) | function pp(e){const{config:n,markDef:i}=e,{orient:r}=i,o="horizontal"==...
  function hp (line 1) | function hp(e){if(p([Ur,Mr,Vr],e.mark)){const t=Ba(e.mark,e.encoding);if...
  function bp (line 1) | function bp(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  class xp (line 1) | class xp extends Dm{constructor(e,n,i){let r=arguments.length>3&&void 0!...
    method constructor (line 1) | constructor(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?arg...
    method hasProjection (line 1) | get hasProjection(){const{encoding:e}=this,t=this.mark===Xr,n=e&&Me.so...
    method scaleDomain (line 1) | scaleDomain(e){const t=this.specifiedScales[e];return t?t.domain:void 0}
    method axis (line 1) | axis(e){return this.specifiedAxes[e]}
    method legend (line 1) | legend(e){return this.specifiedLegends[e]}
    method initScales (line 1) | initScales(e,t){return It.reduce(((e,n)=>{const i=ga(t[n]);return i&&(...
    method initScale (line 1) | initScale(e){const{domain:n,range:i}=e,r=pn(e);return t.isArray(n)&&(r...
    method initAxes (line 1) | initAxes(e){return Ft.reduce(((t,n)=>{const i=e[n];if(Jo(i)||n===Z&&Jo...
    method initAxis (line 1) | initAxis(e){const t=D(e),n={};for(const i of t){const t=e[i];n[i]=Fa(t...
    method initLegends (line 1) | initLegends(e){return Wt.reduce(((t,n)=>{const i=ga(e[n]);if(i&&functi...
    method parseData (line 1) | parseData(){this.component.data=Jm(this)}
    method parseLayoutSize (line 1) | parseLayoutSize(){!function(e){const{size:t,component:n}=e;for(const i...
    method parseSelections (line 1) | parseSelections(){this.component.selection=function(e,n){const i={},r=...
    method parseMarkGroup (line 1) | parseMarkGroup(){this.component.mark=hp(this)}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){var e;this.component.axes=(e=this,Ft.reduce(((t,...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return function(e,n){let i=!1;for(...
    method assembleSignals (line 1) | assembleSignals(){return[...Xu(this),...pc(this,[])]}
    method assembleSelectionData (line 1) | assembleSelectionData(e){return function(e,t){const n=[...t],i=Mu(e,{e...
    method assembleLayout (line 1) | assembleLayout(){return null}
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return wf(this)}
    method assembleMarks (line 1) | assembleMarks(){let e=this.component.mark??[];return this.parent&&km(t...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){const{style:e}=this.view||{};return void 0!==e?e:...
    method getMapping (line 1) | getMapping(){return this.encoding}
    method mark (line 1) | get mark(){return this.markDef.type}
    method channelHasField (line 1) | channelHasField(e){return Ta(this.encoding,e)}
    method fieldDef (line 1) | fieldDef(e){return pa(this.encoding[e])}
    method typedFieldDef (line 1) | typedFieldDef(e){const t=this.fieldDef(e);return Ko(t)?t:null}
  class $p (line 1) | class $p extends Sm{constructor(e,t,n,i,r){super(e,"layer",t,n,r,e.resol...
    method constructor (line 1) | constructor(e,t,n,i,r){super(e,"layer",t,n,r,e.resolve,e.view),qn(this...
    method parseData (line 1) | parseData(){this.component.data=Jm(this);for(const e of this.children)...
    method parseLayoutSize (line 1) | parseLayoutSize(){var e;Hm(e=this),Vm(e,"width"),Vm(e,"height")}
    method parseSelections (line 1) | parseSelections(){this.component.selection={};for(const e of this.chil...
    method parseMarkGroup (line 1) | parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){!function(e){const{axes:t,resolve:n}=e.component...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.children.reduce(((e,t)...
    method assembleSignals (line 1) | assembleSignals(){return this.children.reduce(((e,t)=>e.concat(t.assem...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return this.children.reduce(((e,t)=>e.concat(t...
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.children.reduce(((e,t)=>t.assembl...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){const e=new Set;for(const n of this.children)for(...
    method assembleTitle (line 1) | assembleTitle(){let e=super.assembleTitle();if(e)return e;for(const t ...
    method assembleLayout (line 1) | assembleLayout(){return null}
    method assembleMarks (line 1) | assembleMarks(){return function(e,t){for(const n of e.children)xm(n)&&...
    method assembleLegends (line 1) | assembleLegends(){return this.children.reduce(((e,t)=>e.concat(t.assem...
  function wp (line 1) | function wp(e,t,n,i,r){if(To(e))return new Xm(e,t,n,r);if(Xs(e))return n...

FILE: docs/_static/js/vega@5.js
  function e (line 1) | function e(t,e,n){return t.fields=e||[],t.fname=n,t}
  function n (line 1) | function n(t){return null==t?null:t.fname}
  function r (line 1) | function r(t){return null==t?null:t.fields}
  function i (line 1) | function i(t){return 1===t.length?o(t[0]):a(t)}
  function s (line 1) | function s(t){throw Error(t)}
  function u (line 1) | function u(t){const e=[],n=t.length;let r,i,o,a=null,u=0,l="";function c...
  function l (line 1) | function l(t,n,r){const o=u(t);return t=1===o.length?o[0]:t,e((r&&r.get|...
  function m (line 1) | function m(t,e,n){const r=[e].concat([].slice.call(n));console[t].apply(...
  function w (line 1) | function w(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argument...
  function A (line 1) | function A(t){return t===Object(t)}
  function E (line 1) | function E(){for(var t=arguments.length,e=new Array(t),n=0;n...
  function J (line 1) | function J(t){return"function"==typeof t}
  function Q (line 1) | function Q(t,n,i){i=i||{},n=V(n)||[];const o=[],a=[],s={},u=i.comparator...
  function rt (line 1) | function rt(t){return J(t)?t:()=>t}
  function it (line 1) | function it(t,e){let n;return r=>{n&&clearTimeout(n),n=setTimeout((()=>(...
  function ot (line 1) | function ot(t){for(let e,n,r=1,i=arguments.length;ra&&(i=o,o=a,a...
  function gt (line 1) | function gt(t){return"boolean"==typeof t}
  function mt (line 1) | function mt(t){return"[object Date]"===Object.prototype.toString.call(t)}
  function yt (line 1) | function yt(t){return t&&J(t[Symbol.iterator])}
  function vt (line 1) | function vt(t){return"number"==typeof t}
  function _t (line 1) | function _t(t){return"[object RegExp]"===Object.prototype.toString.call(t)}
  function xt (line 1) | function xt(t){return"string"==typeof t}
  function bt (line 1) | function bt(t,n,r){t&&(t=n?V(t).map((t=>t.replace(/\\(.)/g,"$1"))):V(t))...
  function wt (line 1) | function wt(t,e){const n=t[0],r=F(t),i=+e;return i?1===i?r:n+i*(r-n):n}
  function kt (line 1) | function kt(t){let e,n,r;t=+t||1e4;const i=()=>{e={},n={},r=0},o=(i,o)=>...
  function At (line 1) | function At(t,e,n,r){const i=e.length,o=n.length;if(!o)return e;if(!i)re...
  function Mt (line 1) | function Mt(t,e){let n="";for(;--e>=0;)n+=t;return n}
  function Et (line 1) | function Et(t,e,n,r){const i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"l...
  function Dt (line 1) | function Dt(t){return t&&F(t)-t[0]||0}
  function Ct (line 1) | function Ct(t){return k(t)?"["+t.map(Ct)+"]":A(t)||xt(t)?JSON.stringify(...
  function Ft (line 1) | function Ft(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&...
  function $t (line 1) | function $t(t,e){return e=e||St,null==t||""===t?null:e(t)}
  function Tt (line 1) | function Tt(t){return null==t||""===t?null:t+""}
  function Bt (line 1) | function Bt(t){const e={},n=t.length;for(let r=0;r1)r=function(t,e,n){var...
  function Kt (line 1) | function Kt(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}
  function te (line 1) | function te(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}
  function ee (line 1) | function ee(t){let e,n,r;function i(t,r){let i=arguments.length>2&&void ...
  function ne (line 1) | function ne(){return 0}
  function re (line 1) | function re(t){return null===t?NaN:+t}
  class se (line 1) | class se{constructor(){this._partials=new Float64Array(32),this._n=0}add...
    method constructor (line 1) | constructor(){this._partials=new Float64Array(32),this._n=0}
    method add (line 1) | add(t){const e=this._partials;let n=0;for(let r=0;r0){for(o...
  class ue (line 1) | class ue extends Map{constructor(t){let e=arguments.length>1&&void 0!==a...
    method constructor (line 1) | constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method get (line 1) | get(t){return super.get(ce(this,t))}
    method has (line 1) | has(t){return super.has(ce(this,t))}
    method set (line 1) | set(t,e){return super.set(fe(this,t),e)}
    method delete (line 1) | delete(t){return super.delete(he(this,t))}
  class le (line 1) | class le extends Set{constructor(t){let e=arguments.length>1&&void 0!==a...
    method constructor (line 1) | constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method has (line 1) | has(t){return super.has(ce(this,t))}
    method add (line 1) | add(t){return super.add(fe(this,t))}
    method delete (line 1) | delete(t){return super.delete(he(this,t))}
  function ce (line 1) | function ce(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)?n....
  function fe (line 1) | function fe(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)?n....
  function he (line 1) | function he(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)&&(...
  function de (line 1) | function de(t){return null!==t&&"object"==typeof t?t.valueOf():t}
  function pe (line 1) | function pe(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(t...
  function ve (line 1) | function ve(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r...
  function _e (line 1) | function _e(t,e,n){if(!((n=+n)>0))return[];if((t=+t)===(e=+e))return[t];...
  function xe (line 1) | function xe(t,e,n){return ve(t=+t,e=+e,n=+n)[2]}
  function be (line 1) | function be(t,e,n){n=+n;const r=(e=+e)<(t=+t),i=r?xe(e,t,n):xe(t,e,n);re...
  function we (line 1) | function we(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(ne||voi...
  function Ae (line 1) | function Ae(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Me (line 1) | function Me(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}
  function Ee (line 1) | function Ee(t,e,n){if(t=Float64Array.from(function*(t,e){if(void 0===e)f...
  function De (line 1) | function De(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Ce (line 1) | function Ce(t,e){return Ee(t,.5,e)}
  function Fe (line 1) | function Fe(t){return Array.from(function*(t){for(const e of t)yield*e}(...
  function Se (line 1) | function Se(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:...
  function $e (line 1) | function $e(t,e){let n=0;if(void 0===e)for(let e of t)(e=+e)&&(n+=e);els...
  function Te (line 1) | function Te(t){return t instanceof le?t:new le(t)}
  function Be (line 1) | function Be(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).inde...
  function ze (line 1) | function ze(t){return(t=Be(Math.abs(t)))?t[1]:NaN}
  function Re (line 1) | function Re(t){if(!(e=Oe.exec(t)))throw new Error("invalid format: "+t);...
  function Ue (line 1) | function Ue(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0...
  function Le (line 1) | function Le(t,e){var n=Be(t,e);if(!n)return t+"";var r=n[0],i=n[1];retur...
  function Pe (line 1) | function Pe(t){return t}
  function Ge (line 1) | function Ge(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Pe:(e...
  function Ve (line 1) | function Ve(t){return Math.max(0,-ze(Math.abs(t)))}
  function Xe (line 1) | function Xe(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(z...
  function Je (line 1) | function Je(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ze(e)-z...
  function Ke (line 1) | function Ke(t,e,n,r){function i(e){return t(e=0===arguments.length?new D...
  function yn (line 1) | function yn(t){return Ke((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),...
  function Mn (line 1) | function Mn(t){return Ke((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()...
  function Rn (line 1) | function Rn(t,e,n,r,i,o){const a=[[ln,1,en],[ln,5,5e3],[ln,15,15e3],[ln,...
  function er (line 1) | function er(t){const e=V(t).slice(),n={};e.length||s("Missing time unit....
  function rr (line 1) | function rr(t,e){const n=ot({},nr,e),r=er(t),i=r.length;let o,a,s="",u=0...
  function or (line 1) | function or(t){return ir.setFullYear(t),ir.setMonth(0),ir.setDate(1),ir....
  function ar (line 1) | function ar(t){return ur(new Date(t))}
  function sr (line 1) | function sr(t){return lr(new Date(t))}
  function ur (line 1) | function ur(t){return pn.count(or(t.getFullYear())-1,t)}
  function lr (line 1) | function lr(t){return vn.count(or(t.getFullYear())-1,t)}
  function cr (line 1) | function cr(t){return or(t).getDay()}
  function fr (line 1) | function fr(t,e,n,r,i,o,a){if(0<=t&&t<100){const s=new Date(-1,e,n,r,i,o...
  function hr (line 1) | function hr(t){return pr(new Date(t))}
  function dr (line 1) | function dr(t){return gr(new Date(t))}
  function pr (line 1) | function pr(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return gn.count(...
  function gr (line 1) | function gr(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return En.count(...
  function mr (line 1) | function mr(t){return ir.setTime(Date.UTC(t,0,1)),ir.getUTCDay()}
  function yr (line 1) | function yr(t,e,n,r,i,o,a){if(0<=t&&t<100){const t=new Date(Date.UTC(-1,...
  function vr (line 1) | function vr(t,e,n,r,i){const o=e||1,a=F(t),s=(t,e,i)=>function(t,e,n,r){...
  function _r (line 1) | function _r(t,e,n){return e+7*t-(n+6)%7}
  function wr (line 1) | function wr(t,e){return vr(t,e||1,xr,br,fr)}
  function Mr (line 1) | function Mr(t,e){return vr(t,e||1,kr,Ar,yr)}
  function Cr (line 1) | function Cr(t){return Er[t]}
  function Fr (line 1) | function Fr(t){return Dr[t]}
  function Sr (line 1) | function Sr(t,e,n){return t?t.offset(e,n):void 0}
  function $r (line 1) | function $r(t,e,n){return Sr(Cr(t),e,n)}
  function Tr (line 1) | function Tr(t,e,n){return Sr(Fr(t),e,n)}
  function Br (line 1) | function Br(t,e,n,r){return t?t.range(e,n,r):void 0}
  function zr (line 1) | function zr(t,e,n,r){return Br(Cr(t),e,n,r)}
  function Nr (line 1) | function Nr(t,e,n,r){return Br(Fr(t),e,n,r)}
  function Jr (line 1) | function Jr(t){const e=t.extent,n=t.maxbins||40,r=Math.abs(Dt(e))/n;let ...
  function Zr (line 1) | function Zr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S...
  function Qr (line 1) | function Qr(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t....
  function Kr (line 1) | function Kr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}
  function ti (line 1) | function ti(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a...
  function ci (line 1) | function ci(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o...
  function fi (line 1) | function fi(t){return t.replace(li,"\\$&")}
  function hi (line 1) | function hi(t){return new RegExp("^(?:"+t.map(fi).join("|")+")","i")}
  function di (line 1) | function di(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}
  function pi (line 1) | function pi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r...
  function gi (line 1) | function gi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r...
  function mi (line 1) | function mi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r...
  function yi (line 1) | function yi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r...
  function vi (line 1) | function vi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r...
  function _i (line 1) | function _i(t,e,n){var r=si.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r...
  function xi (line 1) | function xi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r...
  function bi (line 1) | function bi(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n...
  function wi (line 1) | function wi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,...
  function ki (line 1) | function ki(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+...
  function Ai (line 1) | function Ai(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r...
  function Mi (line 1) | function Mi(t,e,n){var r=si.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[...
  function Ei (line 1) | function Ei(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r...
  function Di (line 1) | function Di(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r...
  function Ci (line 1) | function Ci(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r...
  function Fi (line 1) | function Fi(t,e,n){var r=si.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r...
  function Si (line 1) | function Si(t,e,n){var r=si.exec(e.slice(n,n+6));return r?(t.L=Math.floo...
  function $i (line 1) | function $i(t,e,n){var r=ui.exec(e.slice(n,n+1));return r?n+r[0].length:-1}
  function Ti (line 1) | function Ti(t,e,n){var r=si.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0]....
  function Bi (line 1) | function Bi(t,e,n){var r=si.exec(e.slice(n));return r?(t.s=+r[0],n+r[0]....
  function zi (line 1) | function zi(t,e){return ci(t.getDate(),e,2)}
  function Ni (line 1) | function Ni(t,e){return ci(t.getHours(),e,2)}
  function Oi (line 1) | function Oi(t,e){return ci(t.getHours()%12||12,e,2)}
  function Ri (line 1) | function Ri(t,e){return ci(1+pn.count(Nn(t),t),e,3)}
  function Ui (line 1) | function Ui(t,e){return ci(t.getMilliseconds(),e,3)}
  function Li (line 1) | function Li(t,e){return Ui(t,e)+"000"}
  function qi (line 1) | function qi(t,e){return ci(t.getMonth()+1,e,2)}
  function Pi (line 1) | function Pi(t,e){return ci(t.getMinutes(),e,2)}
  function ji (line 1) | function ji(t,e){return ci(t.getSeconds(),e,2)}
  function Ii (line 1) | function Ii(t){var e=t.getDay();return 0===e?7:e}
  function Wi (line 1) | function Wi(t,e){return ci(vn.count(Nn(t)-1,t),e,2)}
  function Hi (line 1) | function Hi(t){var e=t.getDay();return e>=4||0===e?wn(t):wn.ceil(t)}
  function Yi (line 1) | function Yi(t,e){return t=Hi(t),ci(wn.count(Nn(t),t)+(4===Nn(t).getDay()...
  function Gi (line 1) | function Gi(t){return t.getDay()}
  function Vi (line 1) | function Vi(t,e){return ci(_n.count(Nn(t)-1,t),e,2)}
  function Xi (line 1) | function Xi(t,e){return ci(t.getFullYear()%100,e,2)}
  function Ji (line 1) | function Ji(t,e){return ci((t=Hi(t)).getFullYear()%100,e,2)}
  function Zi (line 1) | function Zi(t,e){return ci(t.getFullYear()%1e4,e,4)}
  function Qi (line 1) | function Qi(t,e){var n=t.getDay();return ci((t=n>=4||0===n?wn(t):wn.ceil...
  function Ki (line 1) | function Ki(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+c...
  function to (line 1) | function to(t,e){return ci(t.getUTCDate(),e,2)}
  function eo (line 1) | function eo(t,e){return ci(t.getUTCHours(),e,2)}
  function no (line 1) | function no(t,e){return ci(t.getUTCHours()%12||12,e,2)}
  function ro (line 1) | function ro(t,e){return ci(1+gn.count(On(t),t),e,3)}
  function io (line 1) | function io(t,e){return ci(t.getUTCMilliseconds(),e,3)}
  function oo (line 1) | function oo(t,e){return io(t,e)+"000"}
  function ao (line 1) | function ao(t,e){return ci(t.getUTCMonth()+1,e,2)}
  function so (line 1) | function so(t,e){return ci(t.getUTCMinutes(),e,2)}
  function uo (line 1) | function uo(t,e){return ci(t.getUTCSeconds(),e,2)}
  function lo (line 1) | function lo(t){var e=t.getUTCDay();return 0===e?7:e}
  function co (line 1) | function co(t,e){return ci(En.count(On(t)-1,t),e,2)}
  function fo (line 1) | function fo(t){var e=t.getUTCDay();return e>=4||0===e?Sn(t):Sn.ceil(t)}
  function ho (line 1) | function ho(t,e){return t=fo(t),ci(Sn.count(On(t),t)+(4===On(t).getUTCDa...
  function po (line 1) | function po(t){return t.getUTCDay()}
  function go (line 1) | function go(t,e){return ci(Dn.count(On(t)-1,t),e,2)}
  function mo (line 1) | function mo(t,e){return ci(t.getUTCFullYear()%100,e,2)}
  function yo (line 1) | function yo(t,e){return ci((t=fo(t)).getUTCFullYear()%100,e,2)}
  function vo (line 1) | function vo(t,e){return ci(t.getUTCFullYear()%1e4,e,4)}
  function _o (line 1) | function _o(t,e){var n=t.getUTCDay();return ci((t=n>=4||0===n?Sn(t):Sn.c...
  function xo (line 1) | function xo(){return"+0000"}
  function bo (line 1) | function bo(){return"%"}
  function wo (line 1) | function wo(t){return+t}
  function ko (line 1) | function ko(t){return Math.floor(+t/1e3)}
  function Ao (line 1) | function Ao(t){const e={};return n=>e[n]||(e[n]=t(n))}
  function Mo (line 1) | function Mo(t){const e=Ao(t.format),n=t.formatPrefix;return{format:e,for...
  function Co (line 1) | function Co(){return Eo=Mo({format:Ie,formatPrefix:We})}
  function Fo (line 1) | function Fo(t){return Mo(Ge(t))}
  function So (line 1) | function So(t){return arguments.length?Eo=Fo(t):Eo}
  function $o (line 1) | function $o(t,e,n){A(n=n||{})||s(`Invalid time multi-format specifier: $...
  function To (line 1) | function To(t){const e=Ao(t.format),n=Ao(t.utcFormat);return{timeFormat:...
  function Bo (line 1) | function Bo(){return Do=To({format:ni,parse:ri,utcFormat:ii,utcParse:oi})}
  function zo (line 1) | function zo(t){return To(ti(t))}
  function No (line 1) | function No(t){return arguments.length?Do=zo(t):Do}
  function Ro (line 1) | function Ro(t,e){const n=t?Fo(t):So(),r=e?zo(e):No();return Oo(n,r)}
  function Uo (line 1) | function Uo(t,e){const n=arguments.length;return n&&2!==n&&s("defaultLoc...
  function Io (line 1) | async function Io(t,e){const n=await this.sanitize(t,e),r=n.href;return ...
  function Wo (line 1) | async function Wo(t,e){e=ot({},this.options,e);const n=this.fileAccess,r...
  function Ho (line 1) | function Ho(t){return t?e=>new Promise(((n,r)=>{t.readFile(e,((t,e)=>{t?...
  function Yo (line 1) | async function Yo(){s("No file system access.")}
  function Go (line 1) | function Go(t){return t?async function(e,n){const r=ot({},this.options.h...
  function Vo (line 1) | async function Vo(){s("No HTTP fetch method available.")}
  function ta (line 1) | function ta(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Qo....
  function ea (line 1) | function ea(t,e){return e.reduce(((e,n)=>(e[n]=ta(t,n),e)),{})}
  function na (line 1) | function na(t){const e=function(e,n){const r={delimiter:t};return ra(e,n...
  function ra (line 1) | function ra(t,e){return e.header&&(t=e.header.map(Ct).join(e.delimiter)+...
  function ia (line 1) | function ia(t,e){const n=e&&e.property?l(e.property):f;return!A(t)||(r=t...
  function aa (line 1) | function aa(t,e){let n,r,i,o;return t=ia(t,e),e&&e.feature?(n=Gt,i=e.fea...
  function ua (line 1) | function ua(t,e){return arguments.length>1?(sa[t]=e,this):lt(sa,t)?sa[t]...
  function la (line 1) | function la(t){const e=ua(t);return e&&e.responseType||"text"}
  function ca (line 1) | function ca(t,e,n,r){const i=ua((e=e||{}).type||"json");return i||s("Unk...
  function ha (line 1) | function ha(t){const e=t||f,n=[],r={};return n.add=t=>{const i=e(t);retu...
  function da (line 1) | async function da(t,e){try{await e(t)}catch(e){t.error(e)}}
  function ma (line 1) | function ma(t){return!(!t||!ya(t))}
  function ya (line 1) | function ya(t){return t[pa]}
  function va (line 1) | function va(t,e){return t[pa]=e,t}
  function _a (line 1) | function _a(t){const e=t===Object(t)?t:{data:t};return ya(e)?e:va(e,ga++)}
  function xa (line 1) | function xa(t){return ba(t,_a({}))}
  function ba (line 1) | function ba(t,e){for(const n in t)e[n]=t[n];return e}
  function wa (line 1) | function wa(t,e){return va(e,ya(t))}
  function ka (line 1) | function ka(t,e){return t?e?(n,r)=>t(n,r)||ya(e(n))-ya(e(r)):(e,n)=>t(e,...
  function Aa (line 1) | function Aa(t){return t&&t.constructor===Ma}
  function Ma (line 1) | function Ma(){const t=[],e=[],n=[],r=[],i=[];let o=null,a=!1;return{cons...
  function Da (line 1) | function Da(){Object.defineProperty(this,Ea,{writable:!0,value:{}})}
  method set (line 1) | set(t,e,n,r){const i=this,o=i[t],a=i[Ea];return null!=e&&e>=0?(o[e]!==n|...
  method modified (line 1) | modified(t,e){const n=this[Ea];if(!arguments.length){for(const t in n)if...
  method clear (line 1) | clear(){return this[Ea]={},this}
  function Sa (line 1) | function Sa(t,e,n,r){this.id=++Ca,this.value=t,this.stamp=-1,this.rank=-...
  function $a (line 1) | function $a(t){return function(e){const n=this.flags;return 0===argument...
  method targets (line 1) | targets(){return this._targets||(this._targets=ha(c))}
  method set (line 1) | set(t){return this.value!==t?(this.value=t,1):0}
  method parameters (line 1) | parameters(t,e,n){e=!1!==e;const r=this._argval=this._argval||new Da,i=t...
  method marshall (line 1) | marshall(t){const e=this._argval||Fa,n=this._argops;let r,i,o,a;if(n){co...
  method detach (line 1) | detach(){const t=this._argops;let e,n,r,i;if(t)for(e=0,n=t.length;e{const n=Date.now();return ...
  method debounce (line 1) | debounce(t){const e=za();return this.targets().add(za(null,null,it(t,(t=...
  method between (line 1) | between(t,e){let n=!1;return t.targets().add(za(null,null,(()=>n=!0))),e...
  method detach (line 1) | detach(){this._filter=p,this._targets=null}
  function Oa (line 1) | function Oa(t,e,n,r,i,o){const a=ot({},o,Na);let s,u;J(n)||(n=rt(n)),voi...
  function Ra (line 1) | function Ra(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{const a=o...
  function La (line 1) | function La(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],t...
  function qa (line 1) | function qa(t,e){const n=[];return Nt(t,e,(t=>n.push(t))),n}
  function Pa (line 1) | function Pa(t,e){const n={};return t.visit(e,(t=>{n[ya(t)]=1})),t=>n[ya(...
  function ja (line 1) | function ja(t,e){return t?(n,r)=>t(n,r)&&e(n,r):e}
  function Ia (line 1) | function Ia(t,e,n,r){const i=this;let o=0;this.dataflow=t,this.stamp=e,t...
  function Wa (line 1) | function Wa(t){return t.error("Dataflow already running. Use runAsync() ...
  method fork (line 1) | fork(t){return new La(this.dataflow).init(this,t)}
  method clone (line 1) | clone(){const t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slic...
  method addAll (line 1) | addAll(){let t=this;return!t.source||t.add===t.rem||!t.rem.length&&t.sou...
  method init (line 1) | init(t,e){const n=this;return n.stamp=t.stamp,n.encode=t.encode,!t.field...
  method runAfter (line 1) | runAfter(t){this.dataflow.runAfter(t)}
  method changed (line 1) | changed(t){const e=t||7;return 1&e&&this.add.length||2&e&&this.rem.lengt...
  method reflow (line 1) | reflow(t){if(t)return this.fork(7).reflow();const e=this.add.length,n=th...
  method clean (line 1) | clean(t){return arguments.length?(this.cleans=!!t,this):this.cleans}
  method modifies (line 1) | modifies(t){const e=this.fields||(this.fields={});return k(t)?t.forEach(...
  method modified (line 1) | modified(t,e){const n=this.fields;return!(!e&&!this.mod.length||!n)&&(ar...
  method filter (line 1) | filter(t,e){const n=this;return 1&t&&(n.addF=ja(n.addF,e)),2&t&&(n.remF=...
  method materialize (line 1) | materialize(t){const e=this;return 1&(t=t||7)&&e.addF&&(e.add=qa(e.add,e...
  method visit (line 1) | visit(t,e){const n=this,r=e;if(16&t)return Nt(n.source,n.srcF,r),n;1&t&&...
  method fork (line 1) | fork(t){const e=new La(this.dataflow).init(this,t&this.NO_FIELDS);return...
  method changed (line 1) | changed(t){return this.changes&t}
  method modified (line 1) | modified(t){const e=this,n=e.fields;return n&&e.changes&e.MOD?k(t)?t.som...
  method filter (line 1) | filter(){s("MultiPulse does not support filtering.")}
  method materialize (line 1) | materialize(){s("MultiPulse does not support materialization.")}
  method visit (line 1) | visit(t,e){const n=this,r=n.pulses,i=r.length;let o=0;if(t&n.SOURCE)for(...
  function Ya (line 1) | function Ya(t){let e=[];return{clear:()=>e=[],size:()=>e.length,peek:()=...
  function Ga (line 1) | function Ga(t,e,n,r){let i,o;const a=t[n];for(;n>e&&(o=n-1>>1,i=t[o],r(a...
  function Va (line 1) | function Va(){this.logger(w()),this.logLevel(v),this._clock=0,this._rank...
  function Xa (line 1) | function Xa(t){return function(){return this._log[t].apply(this,argument...
  function Ja (line 1) | function Ja(t,e){Sa.call(this,t,null,e)}
  method stamp (line 1) | stamp(){return this._clock}
  method loader (line 1) | loader(t){return arguments.length?(this._loader=t,this):this._loader}
  method locale (line 1) | locale(t){return arguments.length?(this._locale=t,this):this._locale}
  method logger (line 1) | logger(t){return arguments.length?(this._log=t,this):this._log}
  method run (line 1) | run(t){if(t.stampt);const i=t.length,o=new Float64Array(i);...
  function cs (line 1) | function cs(e,n){e=e||0,n=null==n?1:n;let r,i,o=0,a=0;if(ls==ls)o=ls,ls=...
  function fs (line 1) | function fs(t,e,n){const r=(t-(e||0))/(n=null==n?1:n);return Math.exp(-....
  function hs (line 1) | function hs(t,e,n){const r=(t-(e=e||0))/(n=null==n?1:n),i=Math.abs(r);le...
  function ds (line 1) | function ds(t,e,n){return t<0||t>1?NaN:(e||0)+(null==n?1:n)*us*function(...
  function ps (line 1) | function ps(t,e){let n,r;const i={mean(t){return arguments.length?(n=t||...
  function gs (line 1) | function gs(e,n){const r=ps();let i=0;const o={data(t){return arguments....
  function ms (line 1) | function ms(t,e){return t=t||0,e=null==e?1:e,Math.exp(t+cs()*e)}
  function ys (line 1) | function ys(t,e,n){if(t<=0)return 0;e=e||0,n=null==n?1:n;const r=(Math.l...
  function vs (line 1) | function vs(t,e,n){return hs(Math.log(t),e,n)}
  function _s (line 1) | function _s(t,e,n){return Math.exp(ds(t,e,n))}
  function xs (line 1) | function xs(t,e){let n,r;const i={mean(t){return arguments.length?(n=t||...
  function bs (line 1) | function bs(e,n){let r,i=0;const o={weights(t){return arguments.length?(...
  function ws (line 1) | function ws(e,n){return null==n&&(n=null==e?1:e,e=0),e+(n-e)*t.random()}
  function ks (line 1) | function ks(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=e&&t<=n?1/(n-e...
  function As (line 1) | function As(t,e,n){return null==n&&(n=null==e?1:e,e=0),tn?1:(t-e)...
  function Ms (line 1) | function Ms(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=0&&t<=1?e+t*(n...
  function Es (line 1) | function Es(t,e){let n,r;const i={min(t){return arguments.length?(n=t||0...
  function Ds (line 1) | function Ds(t,e,n){let r=0,i=0;for(const o of t){const t=n(o);null==e(o)...
  function Cs (line 1) | function Cs(t,e,n,r){const i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;retur...
  function Fs (line 1) | function Fs(t,e,n,r){t=t.filter((t=>{let r=e(t),i=n(t);return null!=r&&(...
  function Ss (line 1) | function Ss(t,e,n,r){let i,o,a=-1;for(const s of t)i=e(s),o=n(s),null!=i...
  function $s (line 1) | function $s(t,e,n,r,i){let o=0,a=0;return Ss(t,e,n,((t,e)=>{const n=e-i(...
  function Ts (line 1) | function Ts(t,e,n){let r=0,i=0,o=0,a=0,s=0;Ss(t,e,n,((t,e)=>{++s,r+=(t-r...
  function Bs (line 1) | function Bs(t,e,n){let r=0,i=0,o=0,a=0,s=0;Ss(t,e,n,((t,e)=>{++s,t=Math....
  function zs (line 1) | function zs(t,e,n){const[r,i,o,a]=Fs(t,e,n);let s,u,l,c=0,f=0,h=0,d=0,p=...
  function Ns (line 1) | function Ns(t,e,n){let r=0,i=0,o=0,a=0,s=0,u=0;Ss(t,e,n,((t,e)=>{const n...
  function Os (line 1) | function Os(t,e,n){const[r,i,o,a]=Fs(t,e,n),s=r.length;let u,l,c,f,h=0,d...
  function Rs (line 1) | function Rs(t,e,n,r){if(0===r)return Ds(t,e,n);if(1===r)return Ts(t,e,n)...
  function Us (line 1) | function Us(t,e,n,r){const i=Array(t);let o,a,s,u;for(o=0;o=t.length))fo...
  function Is (line 1) | function Is(t,e,n,r){n=n||25,r=Math.max(n,r||200);const i=e=>[e,t(e)],o=...
  function Ws (line 1) | function Ws(t,e,n,r,i){const o=Math.atan2(i*(n[1]-t[1]),r*(n[0]-t[0])),a...
  function Hs (line 1) | function Hs(t){return t&&t.length?1===t.length?t[0]:(e=t,t=>{const n=e.l...
  function Ys (line 1) | function Ys(t,e,n){return n||t+(e?"_"+e:"")}
  function Zs (line 1) | function Zs(t,e,n){return Xs[t](n,e)}
  function Qs (line 1) | function Qs(t,e){return t.idx-e.idx}
  function Ks (line 1) | function Ks(){this.valid=0,this.missing=0,this._ops.forEach((t=>null==t....
  function tu (line 1) | function tu(t,e){null!=t&&""!==t?t==t&&(++this.valid,this._ops.forEach((...
  function eu (line 1) | function eu(t,e){null!=t&&""!==t?t==t&&(--this.valid,this._ops.forEach((...
  function nu (line 1) | function nu(t){return this._out.forEach((e=>t[e.out]=e.value(this))),t}
  function ru (line 1) | function ru(t,e){const n=e||f,r=function(t){const e={};t.forEach((t=>e[t...
  function iu (line 1) | function iu(t){this._key=t?l(t):ya,this.reset()}
  function au (line 1) | function au(t){Ja.call(this,null,t),this._adds=[],this._mods=[],this._al...
  method transform (line 1) | transform(t,e){const n=this,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.modifi...
  method cross (line 1) | cross(){const t=this,e=t.value,n=t._dnames,r=n.map((()=>({}))),i=n.lengt...
  method init (line 1) | init(t){const e=this._inputs=[],i=this._outputs=[],o={};function a(t){co...
  method cell (line 1) | cell(t,e){let n=this.value[t];return n?0===n.num&&this._drop&&n.stamp...
  function lu (line 1) | function lu(t){Ja.call(this,[],t)}
  function cu (line 1) | function cu(t){Sa.call(this,null,fu,t)}
  function fu (line 1) | function fu(t){return this.value&&!t.modified()?this.value:Q(t.fields,t....
  function hu (line 1) | function hu(t){Ja.call(this,null,t)}
  function du (line 1) | function du(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=!1!==t.interval,i=this._bins(t),o=i.start,a=i.ste...
  method _bins (line 1) | _bins(t){if(this.value&&!t.modified())return this.value;const i=t.field,...
  method transform (line 1) | transform(t,e){const n=e.fork(e.ALL),r=uu(ya,this.value,n.materialize(n....
  method transform (line 1) | transform(t,e){const n=e=>n=>{for(var r,i=function(t,e,n){switch(e){case...
  method _parameterCheck (line 1) | _parameterCheck(t,e){let n=!1;return!t.modified("stopwords")&&this._stop...
  method _finish (line 1) | _finish(t,e){const n=this._counts,r=this._tuples||(this._tuples={}),i=e[...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.as||["a","b"],i=r[0],o=r[...
  function mu (line 1) | function mu(t,e){const n=t[gu];lt(pu,n)||s("Unknown distribution functio...
  function yu (line 1) | function yu(t){Ja.call(this,null,t)}
  function xu (line 1) | function xu(t,e){return t?t.map(((t,r)=>e[r]||n(t))):null}
  function bu (line 1) | function bu(t,e,n){const r=[],i=t=>t(u);let o,a,s,u,l,c;if(null==e)r.pus...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function wu (line 1) | function wu(t){Ja.call(this,null,t)}
  function ku (line 1) | function ku(t){Sa.call(this,null,Au,t),this.modified(!0)}
  function Au (line 1) | function Au(t){const i=t.expr;return this.value&&!t.modified("expr")?thi...
  function Mu (line 1) | function Mu(t){Ja.call(this,[void 0,void 0],t)}
  function Eu (line 1) | function Eu(t,e){Sa.call(this,t),this.parent=e,this.count=0}
  function Du (line 1) | function Du(t){Ja.call(this,{},t),this._keys=ft();const e=this._targets=...
  function Cu (line 1) | function Cu(t){Sa.call(this,null,Fu,t)}
  function Fu (line 1) | function Fu(t){return this.value&&!t.modified()?this.value:k(t.name)?V(t...
  function Su (line 1) | function Su(t){Ja.call(this,ft(),t)}
  function $u (line 1) | function $u(t){Ja.call(this,[],t)}
  function Tu (line 1) | function Tu(t){Ja.call(this,[],t)}
  function Bu (line 1) | function Bu(t){Ja.call(this,null,t)}
  function zu (line 1) | function zu(t){Ja.call(this,[],t)}
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified()&&!e.changed())return e;const...
  method transform (line 1) | transform(t,e){const r=this.value,i=t.field,o=e.changed()||e.modified(i....
  method connect (line 1) | connect(t){return this.detachSubflow=t.detachSubflow,this.targets().add(...
  method add (line 1) | add(t){this.count+=1,this.value.add.push(t)}
  method rem (line 1) | rem(t){this.count-=1,this.value.rem.push(t)}
  method mod (line 1) | mod(t){this.value.mod.push(t)}
  method init (line 1) | init(t){this.value.init(t,t.NO_SOURCE)}
  method evaluate (line 1) | evaluate(){return this.value}
  method activate (line 1) | activate(t){this._targets[this._targets.active++]=t}
  method subflow (line 1) | subflow(t,e,n,r){const i=this.value;let o,a,s=lt(i,t)&&i[t];return s?s.v...
  method clean (line 1) | clean(){const t=this.value;let e=0;for(const n in t)if(0===t[n].count){c...
  method initTargets (line 1) | initTargets(t){const e=this._targets,n=e.length,r=t?t.length:0;let i=0;f...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.key,i=t.subflow,o=this._keys,a=t.m...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.re...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.fields,i=xu(r,t.as||[]),o...
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE),i=t.fields,o=i.map(n),a=t.as|...
  method transform (line 1) | transform(t,e){const n=t.expr,r=t.as,i=t.modified(),o=t.initonly?e.ADD:i...
  method transform (line 1) | transform(t,e){const n=e.fork(e.ALL),r=t.generator;let i,o,a,s=this.valu...
  function Ru (line 1) | function Ru(t){Ja.call(this,[],t)}
  function Uu (line 1) | function Uu(t){au.call(this,t)}
  function Lu (line 1) | function Lu(t){Ja.call(this,null,t)}
  function qu (line 1) | function qu(t){Sa.call(this,null,Pu,t)}
  function Pu (line 1) | function Pu(t){return this.value&&!t.modified()?this.value:bt(t.fields,t...
  function ju (line 1) | function ju(t){Ja.call(this,[],t),this._pending=null}
  function Iu (line 1) | function Iu(t,e,n){n.forEach(_a);const r=e.fork(e.NO_FIELDS&e.NO_SOURCE)...
  function Wu (line 1) | function Wu(t){Ja.call(this,{},t)}
  function Hu (line 1) | function Hu(t){Sa.call(this,null,Yu,t)}
  function Yu (line 1) | function Yu(t){if(this.value&&!t.modified())return this.value;const e=t....
  function Gu (line 1) | function Gu(t){Sa.call(this,null,Vu,t)}
  function Vu (line 1) | function Vu(t){return this.value&&!t.modified()?this.value:t.values.redu...
  function Xu (line 1) | function Xu(t){Ja.call(this,null,t)}
  function Ju (line 1) | function Ju(t){au.call(this,t)}
  function Zu (line 1) | function Zu(t){Du.call(this,t)}
  function Qu (line 1) | function Qu(t){Ja.call(this,null,t)}
  function Ku (line 1) | function Ku(t){Ja.call(this,null,t)}
  function tl (line 1) | function tl(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var r,i,o,a,u,l,c,f,h,d,p=e.fork(e.ALL),g=function(t){var...
  method transform (line 1) | transform(t,e){const n=this,r=t.modified();let i;return n.value&&(r||e.m...
  method changes (line 1) | changes(){const t=this._adds,e=this._mods;let n,r;for(n=0,r=this._alen;n...
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  method transform (line 1) | transform(t,e){const n=e.dataflow;if(this._pending)return Iu(this,e,this...
  method transform (line 1) | transform(t,e){const r=t.fields,i=t.index,o=t.values,a=null==t.default?n...
  method transform (line 1) | transform(t,e){return this.modified(t.modified()),this.value=t,e.fork(e....
  method transform (line 1) | transform(t,n){return this._transform(function(t,n){const i=t.field,o=t....
  method transform (line 1) | transform(t,e){const n=t.subflow,i=t.field,o=t=>this.subflow(ya(t),n,e,t...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.fields,i=xu(t.fields,t.as...
  method transform (line 1) | transform(t,e){return this.value=t.value,t.modified("value")?e.fork(e.NO...
  function el (line 1) | function el(t){Ja.call(this,null,t)}
  function nl (line 1) | function nl(t){Ja.call(this,[],t),this.count=0}
  function rl (line 1) | function rl(t){Ja.call(this,null,t)}
  function il (line 1) | function il(t){Ja.call(this,null,t),this.modified(!0)}
  function ol (line 1) | function ol(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.as||["prob","...
  method transform (line 1) | transform(t,e){let n,r;return this.value?r=this.value:(n=e=e.addAll(),r=...
  method transform (line 1) | transform(e,n){const r=n.fork(n.NO_SOURCE),i=e.modified("size"),o=e.size...
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified())return;const n=e.materialize...
  method transform (line 1) | transform(t,e){return this.value=e.source,e.changed()?e.fork(e.NO_SOURCE...
  function sl (line 1) | function sl(t){Ja.call(this,ft(),t)}
  function ul (line 1) | function ul(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=t.field,i=!1!==t.interval,o="utc"===t.timezone,a=...
  method _floor (line 1) | _floor(t,e){const n="utc"===t.timezone,{units:r,step:i}=t.units?{units:t...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.field,i=this.value,o=t=>i.set(r(t)...
  method transform (line 1) | transform(t,e){(!this.value||t.modified("field")||t.modified("sort")||e....
  function fl (line 1) | function fl(t){const e=V(t.ops),i=V(t.fields),o=V(t.params),a=V(t.aggreg...
  function dl (line 1) | function dl(t){Ja.call(this,{},t),this._mlen=0,this._mods=[]}
  function pl (line 1) | function pl(t,e,n,r){const i=r.sort,o=i&&!r.ignorePeers,a=r.frame||[null...
  function gl (line 1) | function gl(t,e,n,r){t.p0=t.i0,t.p1=t.i1,t.i0=null==e[0]?0:Math.max(0,n-...
  function ml (line 1) | function ml(t,e){const n=t.i0,r=t.i1-1,i=t.compare,o=t.data,a=o.length-1...
  method transform (line 1) | transform(t,e){this.stamp=e.stamp;const n=t.modified(),r=ka(t.sort),i=Hs...
  method group (line 1) | group(t){let e=this.value[t];return e||(e=this.value[t]=uu(ya),e.stamp=-...
  function vl (line 1) | function vl(t){return function(){return t}}
  function Sl (line 1) | function Sl(t){return t>=1?Cl:t<=-1?-Cl:Math.asin(t)}
  function Nl (line 1) | function Nl(t){this._+=t[0];for(let e=1,n=t.length;eEl){v...
  function pc (line 1) | function pc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new pc(t,e):new sc(t,0)}
  function mc (line 1) | function mc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new mc(t,e):new lc(t,0)}
  function vc (line 1) | function vc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new vc(t,e):new fc(t,0)}
  function xc (line 1) | function xc(t){this._context=t}
  function bc (line 1) | function bc(t){return t<0?-1:1}
  function wc (line 1) | function wc(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&...
  function kc (line 1) | function kc(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}
  function Ac (line 1) | function Ac(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._cont...
  function Mc (line 1) | function Mc(t){this._context=t}
  function Ec (line 1) | function Ec(t){this._context=new Dc(t)}
  function Dc (line 1) | function Dc(t){this._context=t}
  function Cc (line 1) | function Cc(t){this._context=t}
  function Fc (line 1) | function Fc(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new ...
  function Sc (line 1) | function Sc(t,e){this._context=t,this._t=e}
  function $c (line 1) | function $c(t,e){if("undefined"!=typeof document&&document.createElement...
  function Bc (line 1) | function Bc(t,e){switch(arguments.length){case 0:break;case 1:this.range...
  function zc (line 1) | function zc(t,e){switch(arguments.length){case 0:break;case 1:"function"...
  function Oc (line 1) | function Oc(){var t=new ue,e=[],n=[],r=Nc;function i(i){let o=t.get(i);i...
  function Rc (line 1) | function Rc(t,e,n){t.prototype=e.prototype=n,n.constructor=t}
  function Uc (line 1) | function Uc(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[...
  function Lc (line 1) | function Lc(){}
  function Kc (line 1) | function Kc(){return this.rgb().formatHex()}
  function tf (line 1) | function tf(){return this.rgb().formatRgb()}
  function ef (line 1) | function ef(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Hc.exec(t...
  function nf (line 1) | function nf(t){return new sf(t>>16&255,t>>8&255,255&t,1)}
  function rf (line 1) | function rf(t,e,n,r){return r<=0&&(t=e=n=NaN),new sf(t,e,n,r)}
  function of (line 1) | function of(t){return t instanceof Lc||(t=ef(t)),t?new sf((t=t.rgb()).r,...
  function af (line 1) | function af(t,e,n,r){return 1===arguments.length?of(t):new sf(t,e,n,null...
  function sf (line 1) | function sf(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}
  function uf (line 1) | function uf(){return`#${hf(this.r)}${hf(this.g)}${hf(this.b)}`}
  function lf (line 1) | function lf(){const t=cf(this.opacity);return`${1===t?"rgb(":"rgba("}${f...
  function cf (line 1) | function cf(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}
  function ff (line 1) | function ff(t){return Math.max(0,Math.min(255,Math.round(t)||0))}
  function hf (line 1) | function hf(t){return((t=ff(t))<16?"0":"")+t.toString(16)}
  function df (line 1) | function df(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=N...
  function pf (line 1) | function pf(t){if(t instanceof mf)return new mf(t.h,t.s,t.l,t.opacity);i...
  function gf (line 1) | function gf(t,e,n,r){return 1===arguments.length?pf(t):new mf(t,e,n,null...
  function mf (line 1) | function mf(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}
  function yf (line 1) | function yf(t){return(t=(t||0)%360)<0?t+360:t}
  function vf (line 1) | function vf(t){return Math.max(0,Math.min(1,t||0))}
  function _f (line 1) | function _f(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(...
  method copy (line 1) | copy(t){return Object.assign(new this.constructor,this,t)}
  method displayable (line 1) | displayable(){return this.rgb().displayable()}
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new sf(this.r*t,this.g*t,...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new sf(this.r*t,this.g*t,th...
  method rgb (line 1) | rgb(){return this}
  method clamp (line 1) | clamp(){return new sf(ff(this.r),ff(this.g),ff(this.b),cf(this.opacity))}
  method displayable (line 1) | displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5...
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new mf(this.h,this.s,this...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new mf(this.h,this.s,this.l...
  method rgb (line 1) | rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s...
  method clamp (line 1) | clamp(){return new mf(yf(this.h),vf(this.s),vf(this.l),cf(this.opacity))}
  method displayable (line 1) | displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&th...
  method formatHsl (line 1) | formatHsl(){const t=cf(this.opacity);return`${1===t?"hsl(":"hsla("}${yf(...
  function Ff (line 1) | function Ff(t){if(t instanceof $f)return new $f(t.l,t.a,t.b,t.opacity);i...
  function Sf (line 1) | function Sf(t,e,n,r){return 1===arguments.length?Ff(t):new $f(t,e,n,null...
  function $f (line 1) | function $f(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}
  function Tf (line 1) | function Tf(t){return t>Cf?Math.pow(t,1/3):t/Df+Mf}
  function Bf (line 1) | function Bf(t){return t>Ef?t*t*t:Df*(t-Mf)}
  function zf (line 1) | function zf(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-....
  function Nf (line 1) | function Nf(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}
  function Of (line 1) | function Of(t,e,n,r){return 1===arguments.length?function(t){if(t instan...
  function Rf (line 1) | function Rf(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}
  function Uf (line 1) | function Uf(t){if(isNaN(t.h))return new $f(t.l,0,0,t.opacity);var e=t.h*...
  method brighter (line 1) | brighter(t){return new $f(this.l+18*(null==t?1:t),this.a,this.b,this.opa...
  method darker (line 1) | darker(t){return new $f(this.l-18*(null==t?1:t),this.a,this.b,this.opaci...
  method rgb (line 1) | rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this....
  method brighter (line 1) | brighter(t){return new Rf(this.h,this.c,this.l+18*(null==t?1:t),this.opa...
  method darker (line 1) | darker(t){return new Rf(this.h,this.c,this.l-18*(null==t?1:t),this.opaci...
  method rgb (line 1) | rgb(){return Uf(this).rgb()}
  function Gf (line 1) | function Gf(t,e,n,r){return 1===arguments.length?function(t){if(t instan...
  function Vf (line 1) | function Vf(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}
  function Xf (line 1) | function Xf(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a...
  function Jf (line 1) | function Jf(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(...
  function Zf (line 1) | function Zf(t){var e=t.length;return function(n){var r=Math.floor(((n%=1...
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new Vf(this.h,this.s,this...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new Vf(this.h,this.s,this.l...
  method rgb (line 1) | rgb(){var t=isNaN(this.h)?0:(this.h+120)*xf,e=+this.l,n=isNaN(this.s)?0:...
  function Kf (line 1) | function Kf(t,e){return function(n){return t+n*e}}
  function th (line 1) | function th(t,e){var n=e-t;return n?Kf(t,n>180||n<-180?n-360*Math.round(...
  function eh (line 1) | function eh(t){return 1==(t=+t)?nh:function(e,n){return n-e?function(t,e...
  function nh (line 1) | function nh(t,e){var n=e-t;return n?Kf(t,n):Qf(isNaN(t)?e:t)}
  function r (line 1) | function r(t,e){var r=n((t=af(t)).r,(e=af(e)).r),i=n(t.g,e.g),o=n(t.b,e....
  function ih (line 1) | function ih(t){return function(e){var n,r,i=e.length,o=new Array(i),a=ne...
  function sh (line 1) | function sh(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.s...
  function uh (line 1) | function uh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}
  function lh (line 1) | function lh(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,o=new A...
  function ch (line 1) | function ch(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.se...
  function fh (line 1) | function fh(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}
  function hh (line 1) | function hh(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||...
  function gh (line 1) | function gh(t,e){var n,r,i,o=dh.lastIndex=ph.lastIndex=0,a=-1,s=[],u=[];...
  function mh (line 1) | function mh(t,e){var n,r=typeof e;return null==e||"boolean"===r?Qf(e):("...
  function yh (line 1) | function yh(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+...
  function bh (line 1) | function bh(t,e,n,r,i,o){var a,s,u;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e...
  function wh (line 1) | function wh(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return...
  function Mh (line 1) | function Mh(t){return((t=Math.exp(t))+1/t)/2}
  function i (line 1) | function i(t,i){var o,a,s=t[0],u=t[1],l=t[2],c=i[0],f=i[1],h=i[2],d=c-s,...
  function Dh (line 1) | function Dh(t){return function(e,n){var r=t((e=gf(e)).h,(n=gf(n)).h),i=n...
  function Sh (line 1) | function Sh(t){return function(e,n){var r=t((e=Of(e)).h,(n=Of(n)).h),i=n...
  function Bh (line 1) | function Bh(t){return function e(n){function r(e,r){var i=t((e=Gf(e)).h,...
  function Oh (line 1) | function Oh(t,e){void 0===e&&(e=t,t=mh);for(var n=0,r=e.length-1,i=e[0],...
  function Uh (line 1) | function Uh(t){return+t}
  function qh (line 1) | function qh(t){return t}
  function Ph (line 1) | function Ph(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:function(t){...
  function jh (line 1) | function jh(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i-t(-e,n)}
  function nd (line 1) | function nd(t){const e=t(Jh,Zh),n=e.domain;let r,i,o=10;function a(){ret...
  function rd (line 1) | function rd(t){return function(e){return Math.sign(e)*Math.log1p(Math.ab...
  function id (line 1) | function id(t){return function(e){return Math.sign(e)*Math.expm1(Math.ab...
  function od (line 1) | function od(t){var e=1,n=t(rd(e),id(e));return n.constant=function(n){re...
  function ad (line 1) | function ad(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,...
  function sd (line 1) | function sd(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}
  function ud (line 1) | function ud(t){return t<0?-t*t:t*t}
  function ld (line 1) | function ld(t){var e=t(qh,qh),n=1;return e.exponent=function(e){return a...
  function cd (line 1) | function cd(){var t=ld(Hh());return t.copy=function(){return Wh(t,cd())....
  function fd (line 1) | function fd(t){return new Date(t)}
  function hd (line 1) | function hd(t){return t instanceof Date?+t:+new Date(+t)}
  function dd (line 1) | function dd(t,e,n,r,i,o,a,s,u,l){var c=Yh(),f=c.invert,h=c.domain,d=l("....
  function pd (line 1) | function pd(){var t,e,n,r,i,o=0,a=1,s=qh,u=!1;function l(e){return null=...
  function gd (line 1) | function gd(t,e){return e.domain(t.domain()).interpolator(t.interpolator...
  function md (line 1) | function md(){var t=Vh(pd()(qh));return t.copy=function(){return gd(t,md...
  function yd (line 1) | function yd(){var t=ld(pd());return t.copy=function(){return gd(t,yd())....
  function vd (line 1) | function vd(){var t,e,n,r,i,o,a,s=0,u=.5,l=1,c=1,f=qh,h=!1;function d(t)...
  function _d (line 1) | function _d(){var t=ld(vd());return t.copy=function(){return gd(t,_d())....
  function xd (line 1) | function xd(t,e,n){const r=t-e+2*n;return t?r>0?r:1:0}
  function jd (line 1) | function jd(){const t=Oc().unknown(void 0),e=t.domain,n=t.range;let r,i,...
  function Id (line 1) | function Id(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.p...
  function Vd (line 1) | function Vd(t){return t[Gd]=!0,t}
  function Xd (line 1) | function Xd(t,e,n){return arguments.length>1?(Yd.set(t,function(t,e,n){c...
  function Jd (line 1) | function Jd(t){return Yd.has(t)}
  function Zd (line 1) | function Zd(t,e){const n=Yd.get(t);return n&&n.metadata[e]}
  function Qd (line 1) | function Qd(t){return Zd(t,Rd)}
  function Kd (line 1) | function Kd(t){return Zd(t,Ud)}
  function tp (line 1) | function tp(t){return Zd(t,Ld)}
  function ep (line 1) | function ep(t){return Zd(t,wd)}
  function np (line 1) | function np(t){return Zd(t,qd)}
  function rp (line 1) | function rp(t){return Zd(t,Sd)}
  function r (line 1) | function r(t){return null==t||isNaN(t=+t)?n:t}
  function o (line 1) | function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t1?(hp[t]=e...
  function _p (line 1) | function _p(t,e,n){let r;return vt(e)&&(t.bins&&(e=Math.max(e,t.bins.len...
  function xp (line 1) | function xp(t,e,n){let r=t.range(),i=r[0],o=F(r),a=yp;if(i>o&&(r=o,o=i,i...
  function bp (line 1) | function bp(t,e){return t.bins?xp(t,t.bins):t.ticks?t.ticks(e):t.domain()}
  function wp (line 1) | function wp(t,e,n,r,i,o){const a=e.type;let s=mp;if(a===Ed||i===Ed)s=t.t...
  function kp (line 1) | function kp(t,e,n){const r=bp(t,e),i=t.base(),o=Math.log(i),a=Math.max(1...
  function Ep (line 1) | function Ep(t,e){return t.bins?function(t){const e=t.slice(0,-1);return ...
  function Cp (line 1) | function Cp(t,e,n,r,i,o,a){const s=Mp[e.type]&&o!==Ed&&o!==Dd?function(t...
  function zp (line 1) | function zp(t,e,n,r){const i=r||e.type;return xt(n)&&function(t){return ...
  function Np (line 1) | function Np(t,e,n){n=n||{};const r=Math.max(3,n.maxlen||7),i=zp(t,e,n.fo...
  function Up (line 1) | function Up(t){return t&&t.gradient}
  function Lp (line 1) | function Lp(t,e,n){const r=t.gradient;let i=t.id,o="radial"===r?Rp:"";re...
  function qp (line 1) | function qp(t,e){return null!=t?t:e}
  function Pp (line 1) | function Pp(t,e){var n,r=[];return n={gradient:"linear",x1:t?t[0]:0,y1:t...
  function Ip (line 1) | function Ip(t,e,n){var r=lt(jp,t)&&jp[t],i=null;return r&&(i=r.curve||r[...
  function Xp (line 1) | function Xp(t){const e=[];return(t.match(Hp)||[]).forEach((t=>{let n=t[0...
  function rg (line 1) | function rg(t){const e=ng.call(t);if(eg[e])return eg[e];var n=t[0],r=t[1...
  function og (line 1) | function og(t,e,n){const r=ig[0]=t[0];if("a"===r||"A"===r)ig[1]=e*t[1],i...
  function ag (line 1) | function ag(t,e,n,r,i,o){var a,s,u,l,c,f=null,h=0,d=0,p=0,g=0,m=0,y=0;nu...
  function sg (line 1) | function sg(t,e,n,r){const i=function(t,e,n,r,i,o,a,s,u){const l=ng.call...
  function cg (line 1) | function cg(t){return lt(lg,t)?lg[t]:function(t){if(!lt(fg,t)){const e=X...
  function dg (line 1) | function dg(t){return t.x}
  function pg (line 1) | function pg(t){return t.y}
  function gg (line 1) | function gg(t){return t.width}
  function mg (line 1) | function mg(t){return t.height}
  function yg (line 1) | function yg(t){return"function"==typeof t?t:()=>+t}
  function vg (line 1) | function vg(t,e,n){return Math.max(e,Math.min(t,n))}
  function _g (line 1) | function _g(){var t=dg,e=pg,n=gg,r=mg,i=yg(0),o=i,a=i,s=i,u=null;functio...
  function xg (line 1) | function xg(){var t,e,n,r,i,o,a,s,u=null;function l(t,e,n){const r=n/2;i...
  function bg (line 1) | function bg(t,e){return null!=t?t:e}
  function l (line 1) | function l(){var l,c,f=+t.apply(this,arguments),h=+e.apply(this,argument...
  function i (line 1) | function i(){let i;if(n||(n=i=r()),t.apply(this,arguments).draw(n,+e.app...
  function Tg (line 1) | function Tg(t){return t.cornerRadius||t.cornerRadiusTopLeft||t.cornerRad...
  function Bg (line 1) | function Bg(t,e,n,r){return Fg.context(t)(e,n,r)}
  function Ng (line 1) | function Ng(){zg=1}
  function Og (line 1) | function Og(t,e,n){var r=e.clip,i=t._defs,o=e.clip_id||(e.clip_id="clip"...
  function Rg (line 1) | function Rg(t){this.clear(),t&&this.union(t)}
  function Ug (line 1) | function Ug(t){this.mark=t,this.bounds=this.bounds||new Rg}
  function Lg (line 1) | function Lg(t){Ug.call(this,t),this.items=this.items||[]}
  function qg (line 1) | function qg(t){this._pending=0,this._loader=t||fa()}
  function Pg (line 1) | function Pg(t){t._pending+=1}
  function jg (line 1) | function jg(t){t._pending-=1}
  function Ig (line 1) | function Ig(t,e,n){if(e.stroke&&0!==e.opacity&&0!==e.strokeOpacity){cons...
  method clone (line 1) | clone(){return new Rg(this)}
  method clear (line 1) | clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this....
  method empty (line 1) | empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&...
  method equals (line 1) | equals(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2...
  method set (line 1) | set(t,e,n,r){return nthis.x2&...
  method expand (line 1) | expand(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this}
  method round (line 1) | round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),t...
  method scale (line 1) | scale(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this}
  method translate (line 1) | translate(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this}
  method rotate (line 1) | rotate(t,e,n){const r=this.rotatedPoints(t,e,n);return this.clear().add(...
  method rotatedPoints (line 1) | rotatedPoints(t,e,n){var{x1:r,y1:i,x2:o,y2:a}=this,s=Math.cos(t),u=Math....
  method union (line 1) | union(t){return t.x1this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=...
  method encloses (line 1) | encloses(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this....
  method alignsWith (line 1) | alignsWith(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||th...
  method intersects (line 1) | intersects(t){return t&&!(this.x2t.x2||this.y2this.x2||ethis.y2)}
  method width (line 1) | width(){return this.x2-this.x1}
  method height (line 1) | height(){return this.y2-this.y1}
  method pending (line 1) | pending(){return this._pending}
  method sanitizeURL (line 1) | sanitizeURL(t){const e=this;return Pg(e),e._loader.sanitize(t,{context:"...
  method loadImage (line 1) | loadImage(t){const e=this,n=Tc();return Pg(e),e._loader.sanitize(t,{cont...
  method ready (line 1) | ready(){const t=this;return new Promise((e=>{!function n(r){t.pending()?...
  function sm (line 1) | function sm(t,e){return Hg=t,e?(Vg=e*Jp,Xg=Qg=Math.cos(Vg),Jg=Math.sin(V...
  method beginPath (line 1) | beginPath(){}
  method closePath (line 1) | closePath(){}
  method rect (line 1) | rect(t,e,n,r){Vg?(om(t+n,e),om(t+n,e+r),om(t,e+r),am(t,e)):(Kg(t+n,e+r),...
  method quadraticCurveTo (line 1) | quadraticCurveTo(t,e,n,r){const i=rm(t,e),o=im(t,e),a=rm(n,r),s=im(n,r);...
  method bezierCurveTo (line 1) | bezierCurveTo(t,e,n,r,i,o){const a=rm(t,e),s=im(t,e),u=rm(n,r),l=im(n,r)...
  method arc (line 1) | arc(t,e,n,r,i,o){if(r+=Vg,i+=Vg,Yg=n*Math.cos(i)+t,Gg=n*Math.sin(i)+e,Ma...
  function lm (line 1) | function lm(t,e,n,r){const i=(t-e)/(t+n-2*e);00&&(t....
  function Mm (line 1) | function Mm(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*...
  function Em (line 1) | function Em(t,e){return t.zindex-e.zindex||t.index-e.index}
  function Dm (line 1) | function Dm(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for...
  function Cm (line 1) | function Cm(t,e){var n,r,i=t.items;if(!i||!i.length)return;const o=Dm(t)...
  function Fm (line 1) | function Fm(t,e){var n,r,i=t.items;if(!i||!i.length)return null;const o=...
  function Sm (line 1) | function Sm(t){return function(e,n,r){Cm(n,(n=>{r&&!r.intersects(n.bound...
  function $m (line 1) | function $m(t){return function(e,n,r){!n.items.length||r&&!r.intersects(...
  function Tm (line 1) | function Tm(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(...
  function Bm (line 1) | function Bm(t){return t=t||p,function(e,n,r,i,o,a){return r*=e.pixelRati...
  function zm (line 1) | function zm(t,e){return function(n,r,i,o){var a,s,u=Array.isArray(r)?r[0...
  function Nm (line 1) | function Nm(t){return Bm(zm(t))}
  function Om (line 1) | function Om(t,e){return"translate("+t+","+e+")"}
  function Rm (line 1) | function Rm(t){return"rotate("+t+")"}
  function Um (line 1) | function Um(t){return Om(t.x||0,t.y||0)}
  function Lm (line 1) | function Lm(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t....
  function Pm (line 1) | function Pm(t,e,n){function r(t,n){t.beginPath(),e(t,n)}const i=zm(r);re...
  function Im (line 1) | function Im(t,e){t.beginPath(),Tg(e)?Bg(t,e,0,0):t.rect(0,0,e.width||0,e...
  function Wm (line 1) | function Wm(t){const e=xm(t.strokeWidth,1);return null!=t.strokeOffset?t...
  function Hm (line 1) | function Hm(t,e){const n=Wm(e);t("d",Bg(null,e,n,n))}
  function Ym (line 1) | function Ym(t,e,n,r){const i=Wm(e);t.beginPath(),Bg(t,e,(n||0)+i,(r||0)+i)}
  function Qm (line 1) | function Qm(t,e){var n=t.image;return(!n||t.url&&t.url!==n.url)&&(n={com...
  function Km (line 1) | function Km(t,e){return null!=t.width?t.width:e&&e.width?!1!==t.aspect&&...
  function ty (line 1) | function ty(t,e){return null!=t.height?t.height:e&&e.height?!1!==t.aspec...
  function ey (line 1) | function ey(t,e){return"center"===t?e/2:"right"===t?e:0}
  function ny (line 1) | function ny(t,e){return"middle"===t?e/2:"bottom"===t?e:0}
  function oy (line 1) | function oy(t,e){var n=e.path;if(null==n)return!0;var r=e.x||0,i=e.y||0,...
  function sy (line 1) | function sy(t,e){t.beginPath(),Bg(t,e)}
  function ly (line 1) | function ly(t,e,n){var r,i,o,a;return!(!e.stroke||!Mm(t,e,n))&&(r=e.x||0...
  function gy (line 1) | function gy(t){py.width=t&&hm?vy:my}
  function my (line 1) | function my(t,e){return yy(Ay(t,e),xy(t))}
  function yy (line 1) | function yy(t,e){return~~(.8*t.length*e)}
  function vy (line 1) | function vy(t,e){return xy(t)<=0||!(e=Ay(t,e))?0:_y(e,Ey(t))}
  function _y (line 1) | function _y(t,e){const n=`(${e}) ${t}`;let r=dy.get(n);return void 0===r...
  function xy (line 1) | function xy(t){return null!=t.fontSize?+t.fontSize||0:11}
  function by (line 1) | function by(t){return null!=t.lineHeight?t.lineHeight:xy(t)+2}
  function wy (line 1) | function wy(t){return e=t.lineBreak&&t.text&&!k(t.text)?t.text.split(t.l...
  function ky (line 1) | function ky(t){const e=wy(t);return(k(e)?e.length-1:0)*by(t)}
  function Ay (line 1) | function Ay(t,e){const n=null==e?"":(e+"").trim();return t.limit>0&&n.le...
  function My (line 1) | function My(t,e){var n=t.font;return(e&&n?String(n).replace(/"/g,"'"):n)...
  function Ey (line 1) | function Ey(t,e){return(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t...
  function Dy (line 1) | function Dy(t){var e=t.baseline,n=xy(t);return Math.round("top"===e?.79*...
  function Sy (line 1) | function Sy(t){var e,n=t.x||0,r=t.y||0,i=t.radius||0;return i&&(e=(t.the...
  function $y (line 1) | function $y(t,e,n){var r,i=py.height(e),o=e.align,a=Sy(e),s=a.x1,u=a.y1,...
  function Ny (line 1) | function Ny(t,e,n){var r=zy[t.mark.marktype],i=e||r.bound;return r.neste...
  function Ry (line 1) | function Ry(t,e,n){var r,i,o,a,s=zy[t.marktype],u=s.bound,l=t.items,c=l&...
  function Ly (line 1) | function Ly(t,e){return JSON.stringify(t,Uy,e)}
  function qy (line 1) | function qy(t){return Py("string"==typeof t?JSON.parse(t):t)}
  function Py (line 1) | function Py(t){var e,n,r,i=t.marktype,o=t.items;if(o)for(n=0,r=o.length;...
  function jy (line 1) | function jy(t){arguments.length?this.root=qy(t):(this.root=Iy({marktype:...
  function Iy (line 1) | function Iy(t,e){const n={bounds:new Rg,clip:!!t.clip,group:e,interactiv...
  function Wy (line 1) | function Wy(t,e,n){return!t&&"undefined"!=typeof document&&document.crea...
  function Hy (line 1) | function Hy(t,e){e=e.toLowerCase();for(var n=t.childNodes,r=0,i=n.length...
  function Yy (line 1) | function Yy(t,e,n,r){var i,o=t.childNodes[e];return o&&o.tagName.toLower...
  function Gy (line 1) | function Gy(t,e){for(var n=t.childNodes,r=n.length;r>e;)t.removeChild(n[...
  function Vy (line 1) | function Vy(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.n...
  function Xy (line 1) | function Xy(t,e){const n=e.getBoundingClientRect();return[t.clientX-n.le...
  function Jy (line 1) | function Jy(t,e){this._active=null,this._handlers={},this._loader=t||fa(...
  function Zy (line 1) | function Zy(t,e,n,r){t.element().setAttribute("title",r||"")}
  function Qy (line 1) | function Qy(t){this._el=null,this._bgcolor=null,this._loader=new qg(t)}
  method toJSON (line 1) | toJSON(t){return Ly(this.root,t||0)}
  method mark (line 1) | mark(t,e,n){const r=Iy(t,e=e||this.root.items[0]);return e.items[n]=r,r....
  method initialize (line 1) | initialize(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)}
  method element (line 1) | element(){return this._el}
  method canvas (line 1) | canvas(){return this._el&&this._el.firstChild}
  method origin (line 1) | origin(t){return arguments.length?(this._origin=t||[0,0],this):this._ori...
  method scene (line 1) | scene(t){return arguments.length?(this._scene=t,this):this._scene}
  method on (line 1) | on(){}
  method off (line 1) | off(){}
  method _handlerIndex (line 1) | _handlerIndex(t,e,n){for(let r=t?t.length:0;--r>=0;)if(t[r].type===e&&(!...
  method handlers (line 1) | handlers(t){const e=this._handlers,n=[];if(t)n.push(...e[this.eventName(...
  method eventName (line 1) | eventName(t){const e=t.indexOf(".");return e<0?t:t.slice(0,e)}
  method handleHref (line 1) | handleHref(t,e,n){this._loader.sanitize(n,{context:"href"}).then((e=>{co...
  method handleTooltip (line 1) | handleTooltip(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,o,...
  method getItemBoundingClientRect (line 1) | getItemBoundingClientRect(t){const e=this.canvas();if(!e)return;const n=...
  method initialize (line 1) | initialize(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)}
  method element (line 1) | element(){return this._el}
  method canvas (line 1) | canvas(){return this._el&&this._el.firstChild}
  method background (line 1) | background(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t...
  method resize (line 1) | resize(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0,0...
  method dirty (line 1) | dirty(){}
  method render (line 1) | render(t,e){const n=this;return n._call=function(){n._render(t,e)},n._ca...
  method _render (line 1) | _render(){}
  method renderAsync (line 1) | renderAsync(t,e){const n=this.render(t,e);return this._ready?this._ready...
  method _load (line 1) | _load(t,e){var n=this,r=n._loader[t](e);if(!n._ready){const t=n._call;n....
  method sanitizeURL (line 1) | sanitizeURL(t){return this._load("sanitizeURL",t)}
  method loadImage (line 1) | loadImage(t){return this._load("loadImage",t)}
  function vv (line 1) | function vv(t,e){Jy.call(this,t,e),this._down=null,this._touch=null,this...
  function _v (line 1) | function _v(t,e){(t=>t===hv||t===dv||t===pv?[hv,dv,pv]:[t])(e).forEach((...
  function xv (line 1) | function xv(t,e,n){e.forEach((e=>t.fire(e,n)))}
  function bv (line 1) | function bv(t,e,n){return function(r){const i=this._active,o=this.pickEv...
  function wv (line 1) | function wv(t){return function(e){xv(this,t,e),this._active=null}}
  function kv (line 1) | function kv(t,e,n,r,i,o){const a="undefined"!=typeof HTMLElement&&t inst...
  function Av (line 1) | function Av(t){Qy.call(this,t),this._options={},this._redraw=!1,this._di...
  method initialize (line 1) | initialize(t,e,n){return this._canvas=t&&Hy(t,"canvas"),[cv,av,nv,rv,iv,...
  method canvas (line 1) | canvas(){return this._canvas}
  method context (line 1) | context(){return this._canvas.getContext("2d")}
  method DOMMouseScroll (line 1) | DOMMouseScroll(t){this.fire(fv,t)}
  method pointerdown (line 1) | pointerdown(t){this._down=this._active,this.fire(nv,t)}
  method mousedown (line 1) | mousedown(t){this._down=this._active,this.fire(av,t)}
  method click (line 1) | click(t){this._down===this._active&&(this.fire(cv,t),this._down=null)}
  method touchstart (line 1) | touchstart(t){this._touch=this.pickEvent(t.changedTouches[0]),this._firs...
  method touchmove (line 1) | touchmove(t){this.fire(dv,t,!0)}
  method touchend (line 1) | touchend(t){this.fire(pv,t,!0),this._touch=null}
  method fire (line 1) | fire(t,e,n){const r=n?this._touch:this._active,i=this._handlers[t];if(e....
  method on (line 1) | on(t,e){const n=this.eventName(t),r=this._handlers;return this._handlerI...
  method off (line 1) | off(t,e){const n=this.eventName(t),r=this._handlers[n],i=this._handlerIn...
  method pickEvent (line 1) | pickEvent(t){const e=Xy(t,this._canvas),n=this._origin;return this.pick(...
  method pick (line 1) | pick(t,e,n,r,i){const o=this.context();return zy[t.marktype].pick.call(t...
  function Ev (line 1) | function Ev(t,e){Jy.call(this,t,e);const n=this;n._hrefHandler=Dv(n,((t,...
  method initialize (line 1) | initialize(t,e,n,r,i,o){return this._options=o||{},this._canvas=this._op...
  method resize (line 1) | resize(t,e,n,r){if(Mv.resize.call(this,t,e,n,r),this._canvas)kv(this._ca...
  method canvas (line 1) | canvas(){return this._canvas}
  method context (line 1) | context(){return this._options.externalContext||(this._canvas?this._canv...
  method dirty (line 1) | dirty(t){const e=this._tempb.clear().union(t.bounds);let n=t.mark.group;...
  method _render (line 1) | _render(t,e){const n=this.context(),r=this._origin,i=this._width,o=this....
  method draw (line 1) | draw(t,e,n,r){if("group"!==e.marktype&&null!=r&&!r.includes(e.marktype))...
  method clear (line 1) | clear(t,e,n,r){const i=this._options,o=this.context();"pdf"===i.type||i....
  method initialize (line 1) | initialize(t,e,n){let r=this._svg;return r&&(r.removeEventListener(yv,th...
  method canvas (line 1) | canvas(){return this._svg}
  method on (line 1) | on(t,e){const n=this.eventName(t),r=this._handlers;if(this._handlerIndex...
  method off (line 1) | off(t,e){const n=this.eventName(t),r=this._handlers[n],i=this._handlerIn...
  function Uv (line 1) | function Uv(t,e){const n=!1===e.aria;if(t(Cv,n||void 0),n||null==e.descr...
  function Lv (line 1) | function Lv(t){return!1===t.aria?{[Cv]:!0}:Nv[t.role]?null:Ov[t.role]?fu...
  function qv (line 1) | function qv(t){return V(t.text).join(" ")}
  function Pv (line 1) | function Pv(t){try{return V(F(t.items).items[0].text).join(" ")}catch(t)...
  function Iv (line 1) | function Iv(){let t="",e="",n="";const r=[],i=()=>e=n="",o=(t,n)=>{var r...
  function Hv (line 1) | function Hv(t,e){if(t.open(e.tagName),e.hasAttributes()){const n=e.attri...
  function Zv (line 1) | function Zv(t){Qy.call(this,t),this._dirtyID=0,this._dirty=[],this._svg=...
  function Kv (line 1) | function Kv(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mar...
  function t_ (line 1) | function t_(t,e,n){let r,i,o;if("radial"===e.gradient){let r=Yy(t,n++,"p...
  function e_ (line 1) | function e_(t,e,n){let r;return(t=Yy(t,n,"clipPath",Jv)).setAttribute("i...
  function n_ (line 1) | function n_(t,e,n,r,i){let o,a=t._svg;if(!a&&(o=e.ownerDocument,a=Wy(o,r...
  method initialize (line 1) | initialize(t,e,n,r,i){return this._defs={},this._clearDefs(),t&&(this._s...
  method background (line 1) | background(t){return arguments.length&&this._svg&&this._svg.style.setPro...
  method resize (line 1) | resize(t,e,n,r){return Qv.resize.call(this,t,e,n,r),this._svg&&(u_(this....
  method canvas (line 1) | canvas(){return this._svg}
  method svg (line 1) | svg(){const t=this._svg,e=this._bgcolor;if(!t)return null;let n;e&&(t.re...
  method _render (line 1) | _render(t,e){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs...
  method dirty (line 1) | dirty(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.pus...
  method isDirty (line 1) | isDirty(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t.di...
  method _dirtyCheck (line 1) | _dirtyCheck(){this._dirtyAll=!0;const t=this._dirty;if(!t.length||!this....
  method mark (line 1) | mark(t,e,n,r){if(!this.isDirty(e))return e._svg;const i=this._svg,o=e.ma...
  method _update (line 1) | _update(t,e,n){r_=e,i_=e.__values__,Uv(a_,n),t.attr(a_,n,this);const r=o...
  method style (line 1) | style(t,e){if(null!=e){for(const n in Yv){let r="font"===n?My(e):e[n];if...
  method defs (line 1) | defs(){const t=this._svg,e=this._defs;let n=e.el,r=0;for(const i in e.gr...
  method _clearDefs (line 1) | _clearDefs(){const t=this._defs;t.gradient={},t.clipping={}}
  method group (line 1) | group(t,e,n){const r=r_=e.childNodes[2];i_=r.__values__,t.foreground(a_,...
  method image (line 1) | image(t,e,n){!1===n.smooth?(s_(e,"image-rendering","optimizeSpeed"),s_(e...
  method text (line 1) | text(t,e,n){const r=wy(n);let i,o,a,s;k(r)?(o=r.map((t=>Ay(n,t))),i=o.jo...
  function a_ (line 1) | function a_(t,e,n){e!==i_[t]&&(n?function(t,e,n,r){null!=n?t.setAttribut...
  function s_ (line 1) | function s_(t,e,n){n!==i_[e]&&(null==n?t.style.removeProperty(e):t.style...
  function u_ (line 1) | function u_(t,e){for(const n in e)l_(t,n,e[n])}
  function l_ (line 1) | function l_(t,e,n){null!=n?t.setAttribute(e,n):t.removeAttribute(e)}
  function c_ (line 1) | function c_(){let t;return"undefined"==typeof window?"":(t=window.locati...
  function f_ (line 1) | function f_(t){Qy.call(this,t),this._text=null,this._defs={gradient:{},c...
  method svg (line 1) | svg(){return this._text}
  method _render (line 1) | _render(t){const e=Iv();e.open("svg",ot({},Zm,{class:"marks",width:this....
  method mark (line 1) | mark(t,e){const n=zy[e.marktype],r=n.tag,i=[Uv,n.attr];t.open("g",{class...
  method href (line 1) | href(t){const e=t.href;let n;if(e){if(n=this._hrefs&&this._hrefs[e])retu...
  method attr (line 1) | attr(t,e,n,r){const i={},o=(t,e,n,r)=>{i[r||t]=e};return Array.isArray(n...
  method defs (line 1) | defs(t){const e=this._defs.gradient,n=this._defs.clipping;if(0!==Object....
  function d_ (line 1) | function d_(t){Qy.call(this,t),this._svgRenderer=new Zv(t),this._canvasR...
  function g_ (line 1) | function g_(t,e){vv.call(this,t,e)}
  method initialize (line 1) | initialize(t,e,n,r,i){this._root_el=Yy(t,0,"div");const o=Yy(this._root_...
  method dirty (line 1) | dirty(t){return h_.svgMarkTypes.includes(t.mark.marktype)?this._svgRende...
  method _render (line 1) | _render(t,e){const n=(e??["arc","area","image","line","path","rect","rul...
  method resize (line 1) | resize(t,e,n,r){return p_.resize.call(this,t,e,n,r),this._svgRenderer.re...
  method background (line 1) | background(t){return h_.svgOnTop?this._canvasRenderer.background(t):this...
  method initialize (line 1) | initialize(t,e,n){const r=Yy(Yy(t,0,"div"),h_.svgOnTop?0:1,"div");return...
  function b_ (line 1) | function b_(t,e){return t=String(t||"").toLowerCase(),arguments.length>1...
  function w_ (line 1) | function w_(t,e,n){const r=[],i=(new Rg).union(e),o=t.marktype;return o?...
  function k_ (line 1) | function k_(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t....
  function A_ (line 1) | function A_(t,e,n,r){n&&n(t.mark)&&M_(t,e,zy.group.isect)&&r.push(t);con...
  function M_ (line 1) | function M_(t,e,n){const r=t.bounds;return e.encloses(r)||e.intersects(r...
  function D_ (line 1) | function D_(t){const e=t.clip;if(J(e))e(sm(E_.clear()));else{if(!e)retur...
  function F_ (line 1) | function F_(t,e,n){return t===e||("path"===n?S_(t,e):t instanceof Date&&...
  function S_ (line 1) | function S_(t,e){return F_(Xp(t),Xp(e))}
  function px (line 1) | function px(t){Ja.call(this,null,t)}
  function gx (line 1) | function gx(t,e,n){return e(t.bounds.clear(),t,n)}
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.mark,i=r.marktype,o=zy[i],a=o.boun...
  function yx (line 1) | function yx(t){Ja.call(this,0,t)}
  function vx (line 1) | function vx(t){Ja.call(this,null,t)}
  function _x (line 1) | function _x(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=(i=e.dataflow)._signals[mx]||(i._signals[mx]=i.ad...
  method transform (line 1) | transform(t,e){let n=this.value;n||(n=e.dataflow.scenegraph().mark(t.mar...
  function Ex (line 1) | function Ex(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=xx[t.method]||xx.parity,r=t.separation||0;let i,o...
  method transform (line 1) | transform(t,e){const n=e.dataflow;if(e.visit(e.ALL,(t=>n.dirty(t))),e.fi...
  function Cx (line 1) | function Cx(t,e,n){return t[e]===n?0:(t[e]=n,1)}
  function Fx (line 1) | function Fx(t){var e=t.items[0].orient;return e===T_||e===B_}
  function Sx (line 1) | function Sx(t,e,n,r){var i,o,a=e.items[0],s=a.datum,u=null!=a.translate?...
  function $x (line 1) | function $x(t,e,n,r,i,o,a,s){const u=e.bounds;if(e.auto){const s=a*(n+i+...
  function zx (line 1) | function zx(t){return(new Rg).set(0,0,t.width||0,t.height||0)}
  function Nx (line 1) | function Nx(t){const e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):...
  function Ox (line 1) | function Ox(t,e,n){const r=A(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}
  function Rx (line 1) | function Rx(t){return t<0?Math.ceil(-t):0}
  function Ux (line 1) | function Ux(t,e,n){var r,i,o,a,s,u,l,c,f,h,d,p=!n.nodirty,g=n.bounds===f...
  function Lx (line 1) | function Lx(t,e,n){var r,i,o,a,s,u,l,c=function(t){var e,n,r=t.items,i=r...
  function qx (line 1) | function qx(t,e){return"x1"===e?t.x||0:"y1"===e?t.y||0:"x2"===e?(t.x||0)...
  function Px (line 1) | function Px(t,e){return t.bounds[e]}
  function jx (line 1) | function jx(t,e,n,r,i,o,a,s,u,l,c,f,h,d){var p,g,m,y,v,_,x,b,w,k=n.lengt...
  function Ix (line 1) | function Ix(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,s=n;r?a=Math.round(i.x...
  function Wx (line 1) | function Wx(t,e,n,r,i,o,a){const s=function(t,e){const n=t[e]||{};return...
  function Hx (line 1) | function Hx(t,e){var n,r,i=e.items[0],o=i.datum,a=i.orient,s=i.bounds,u=...
  function Yx (line 1) | function Yx(t,e,n,r,i,o,a){const s="symbol"!==t.datum.type,u=n.datum.vgr...
  function Gx (line 1) | function Gx(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds...
  function Vx (line 1) | function Vx(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=e.dataflow;return t.mark.items.forEach((e=>{t.lay...
  function Jx (line 1) | function Jx(t){Ja.call(this,null,t)}
  function Zx (line 1) | function Zx(t){Ja.call(this,null,t)}
  function Qx (line 1) | function Qx(){return _a({})}
  function Kx (line 1) | function Kx(t){Ja.call(this,null,t)}
  function tb (line 1) | function tb(t){Ja.call(this,[],t)}
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified())return e.StopPropagation;var...
  method transform (line 1) | transform(t,e){var n=e.dataflow,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.it...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.enco...
  method transform (line 1) | transform(t,e){if(null!=this.value&&!t.modified())return e.StopPropagati...
  function ob (line 1) | function ob(t){Ja.call(this,{},t)}
  method transform (line 1) | transform(t,e){var n=t.sourceX||eb,r=t.sourceY||nb,i=t.targetX||rb,o=t.t...
  function cb (line 1) | function cb(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],s=o[1]...
  function hb (line 1) | function hb(t){return Qd(t)&&t!==Cd}
  function pb (line 1) | function pb(t){Ja.call(this,null,t),this.modified(!0)}
  function gb (line 1) | function gb(t,e,n){ep(t)&&(Math.abs(e.reduce(((t,e)=>t+(e<0?-1:e>0?1:0))...
  function mb (line 1) | function mb(t,e,n){return J(t)&&(e||n)?op(t,yb(e||[0,1],n)):t}
  function yb (line 1) | function yb(t,e){return e?t.slice().reverse():t}
  function vb (line 1) | function vb(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.typ...
  method transform (line 1) | transform(t,e){const n=t.modified("sort")||e.changed(e.ADD)||e.modified(...
  function kb (line 1) | function kb(t){Ja.call(this,null,t)}
  function Ab (line 1) | function Ab(t,e,n,r,i){for(var o,a=(e-t.sum)/2,s=t.length,u=0;u1?0:t<-1?Sb:Math.acos(t)}
  function Jb (line 1) | function Jb(t){return t>1?$b:t<-1?-$b:Math.asin(t)}
  function Zb (line 1) | function Zb(){}
  function Qb (line 1) | function Qb(t,e){t&&tw.hasOwnProperty(t.type)&&tw[t.type](t,e)}
  function ew (line 1) | function ew(t,e,n){var r,i=-1,o=t.length-n;for(e.lineStart();++i=0?1:-1,i=r*n,o=Lb(e=(e*=Nb)/2+Tb)...
  function Dw (line 1) | function Dw(t){return[Ub(t[1],t[0]),Jb(t[2])]}
  function Cw (line 1) | function Cw(t){var e=t[0],n=t[1],r=Lb(n);return[r*Lb(e),r*Hb(e),Hb(n)]}
  function Fw (line 1) | function Fw(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}
  function Sw (line 1) | function Sw(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1...
  function $w (line 1) | function $w(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}
  function Tw (line 1) | function Tw(t,e){return[t[0]*e,t[1]*e,t[2]*e]}
  function Bw (line 1) | function Bw(t){var e=Gb(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t...
  function Zw (line 1) | function Zw(t,e){vw.push(_w=[lw=t,fw=t]),ehw&&(hw=e)}
  function Qw (line 1) | function Qw(t,e){var n=Cw([t*Nb,e*Nb]);if(mw){var r=Sw(mw,n),i=Sw([r[1],...
  function Kw (line 1) | function Kw(){Jw.point=Qw}
  function tk (line 1) | function tk(){_w[0]=lw,_w[1]=fw,Jw.point=Zw,mw=null}
  function ek (line 1) | function ek(t,e){if(mw){var n=t-dw;yw.add(Ob(n)>180?n+(n>0?360:-360):n)}...
  function nk (line 1) | function nk(){ww.lineStart()}
  function rk (line 1) | function rk(){ek(pw,gw),ww.lineEnd(),Ob(yw)>Cb&&(lw=-(fw=180)),_w[0]=lw,...
  function ik (line 1) | function ik(t,e){return(e-=t)<0?e+360:e}
  function ok (line 1) | function ok(t,e){return t[0]-e[0]}
  function ak (line 1) | function ak(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eSb&&(t-=Math.round(t/Bb)*Bb),[t,e]}
  function xk (line 1) | function xk(t,e,n){return(t%=Bb)?e||n?vk(wk(t),kk(e,n)):wk(t):e||n?kk(e,...
  function bk (line 1) | function bk(t){return function(e,n){return Ob(e+=t)>Sb&&(e-=Math.round(e...
  function wk (line 1) | function wk(t){var e=bk(t);return e.invert=bk(-t),e}
  function kk (line 1) | function kk(t,e){var n=Lb(t),r=Hb(t),i=Lb(e),o=Hb(e);function a(t,e){var...
  function Ak (line 1) | function Ak(t,e){(e=Cw(e))[0]-=t,Bw(e);var n=Xb(-e[1]);return((-e[2]<0?-...
  function Mk (line 1) | function Mk(){var t,e=[];return{point:function(e,n,r){t.push([e,n,r])},l...
  function Ek (line 1) | function Ek(t,e){return Ob(t[0]-e[0])1}
  function Bk (line 1) | function Bk(t,e){return((t=t.x)[0]<0?t[1]-$b-Cb:$b-t[1])-((e=e.x)[0]<0?e...
  function Nk (line 1) | function Nk(t){var e=Lb(t),n=6*Nb,r=e>0,i=Ob(e)>Cb;function o(t,n){retur...
  function Uk (line 1) | function Uk(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}funct...
  function Lk (line 1) | function Lk(t,e,n){var r=Se(t,e-Cb,n).concat(e);return function(t){retur...
  function qk (line 1) | function qk(t,e,n){var r=Se(t,e-Cb,n).concat(e);return function(t){retur...
  function Xk (line 1) | function Xk(){Vk.point=Jk}
  function Jk (line 1) | function Jk(t,e){Vk.point=Zk,Pk=Ik=t,jk=Wk=e}
  function Zk (line 1) | function Zk(t,e){Gk.add(Wk*t-Ik*e),Ik=t,Wk=e}
  function Qk (line 1) | function Qk(){Zk(Pk,jk)}
  function vA (line 1) | function vA(t,e){uA+=t,lA+=e,++cA}
  function _A (line 1) | function _A(){yA.point=xA}
  function xA (line 1) | function xA(t,e){yA.point=bA,vA(aA=t,sA=e)}
  function bA (line 1) | function bA(t,e){var n=t-aA,r=e-sA,i=Gb(n*n+r*r);fA+=i*(aA+t)/2,hA+=i*(s...
  function wA (line 1) | function wA(){yA.point=vA}
  function kA (line 1) | function kA(){yA.point=MA}
  function AA (line 1) | function AA(){EA(iA,oA)}
  function MA (line 1) | function MA(t,e){yA.point=EA,vA(iA=aA=t,oA=sA=e)}
  function EA (line 1) | function EA(t,e){var n=t-aA,r=e-sA,i=Gb(n*n+r*r);fA+=i*(aA+t)/2,hA+=i*(s...
  function DA (line 1) | function DA(t){this._context=t}
  function NA (line 1) | function NA(t,e){zA.point=OA,FA=$A=t,SA=TA=e}
  function OA (line 1) | function OA(t,e){$A-=t,TA-=e,BA.add(Gb($A*$A+TA*TA)),$A=t,TA=e}
  class PA (line 1) | class PA{constructor(t){this._append=null==t?jA:function(t){const e=Math...
    method constructor (line 1) | constructor(t){this._append=null==t?jA:function(t){const e=Math.floor(...
    method pointRadius (line 1) | pointRadius(t){return this._radius=+t,this}
    method polygonStart (line 1) | polygonStart(){this._line=0}
    method polygonEnd (line 1) | polygonEnd(){this._line=NaN}
    method lineStart (line 1) | lineStart(){this._point=0}
    method lineEnd (line 1) | lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}
    method point (line 1) | point(t,e){switch(this._point){case 0:this._append`M${t},${e}`,this._p...
    method result (line 1) | result(){const t=this._;return this._="",t.length?t:null}
  function jA (line 1) | function jA(t){let e=1;this._+=t[0];for(const n=t.length;e1?zM:t<-1?-zM:Math.asin(t)}
  function RM (line 1) | function RM(t,e){var n,r=t*$M(e),i=30;do{e-=n=(e+$M(e)-r)/(1+SM(e))}whil...
  function r (line 1) | function r(r,i){return[t*r*SM(i=RM(n,i)),e*$M(i)]}
  function PM (line 1) | function PM(t,e){if(!t||"string"!=typeof t)throw new Error("Projection t...
  function jM (line 1) | function jM(t){return t&&t.path||LM}
  function c (line 1) | function c(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e...
  function f (line 1) | function f(){return t=e=null,c}
  function v (line 1) | function v(){return p=s*c,g=s*f,o=a=null,_}
  function _ (line 1) | function _(n){var r=n[0]*p,i=n[1]*g;if(h){var o=i*t-r*e;r=r*t+i*e,i=o}re...
  function WM (line 1) | function WM(){}
  function YM (line 1) | function YM(){var t=1,e=1,n=a;function r(t,e){return e.map((e=>i(t,e)))}...
  function GM (line 1) | function GM(t,e){for(var n,r=-1,i=e.length;++r=0?t:rs(e,n);return Math.round((Math.sqrt(4...
  function tE (line 1) | function tE(t){return J(t)?t:rt(+t)}
  function eE (line 1) | function eE(){var t=t=>t[0],e=t=>t[1],n=d,r=[-1,-1],i=960,o=500,a=2;func...
  function nE (line 1) | function nE(t,e,n,r,i){const o=1+(i<<1);for(let a=0;anull!=e[n]?t[n](e[n]):0)),t}
  function sE (line 1) | function sE(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopP...
  method transform (line 1) | transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopP...
  function cE (line 1) | function cE(t){Ja.call(this,null,t)}
  function fE (line 1) | function fE(t){Ja.call(this,null,t)}
  function hE (line 1) | function hE(t){Ja.call(this,null,t)}
  function dE (line 1) | function dE(t){Ja.call(this,null,t)}
  function pE (line 1) | function pE(t){Ja.call(this,[],t),this.generator=function(){var t,e,n,r,...
  function gE (line 1) | function gE(t){Ja.call(this,null,t)}
  function mE (line 1) | function mE(t){if(!J(t))return!1;const e=Bt(r(t));return e.$x||e.$y||e.$...
  function yE (line 1) | function yE(t){Ja.call(this,null,t),this.modified(!0)}
  function vE (line 1) | function vE(t,e,n){J(t[e])&&t[e](n)}
  method transform (line 1) | transform(t,e){var n,i=this._features,o=this._points,a=t.fields,s=a&&a[0...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||f,o=t.as||"pa...
  method transform (line 1) | transform(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;...
  method transform (line 1) | transform(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modif...
  method transform (line 1) | transform(t,e){if(!e.changed()&&!t.modified())return e.StopPropagation;v...
  method transform (line 1) | transform(t,e){let n=this.value;return!n||t.modified("type")?(this.value...
  function xE (line 1) | function xE(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,s,u,l,c,f,...
  function bE (line 1) | function bE(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}
  function wE (line 1) | function wE(t){return t[0]}
  function kE (line 1) | function kE(t){return t[1]}
  function AE (line 1) | function AE(t,e,n){var r=new ME(null==e?wE:e,null==n?kE:n,NaN,NaN,NaN,Na...
  function ME (line 1) | function ME(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this....
  function EE (line 1) | function EE(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.da...
  function CE (line 1) | function CE(t){return function(){return t}}
  function FE (line 1) | function FE(t){return 1e-6*(t()-.5)}
  function SE (line 1) | function SE(t){return t.x+t.vx}
  function $E (line 1) | function $E(t){return t.y+t.vy}
  function TE (line 1) | function TE(t){return t.index}
  function BE (line 1) | function BE(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "...
  function NE (line 1) | function NE(){for(var t,e=0,n=arguments.length,r={};eWE&&(GE-=e,HE=t)}
  function nD (line 1) | function nD(t){PE||(jE&&(jE=clearTimeout(jE)),t-YE>24?(t<1/0&&(jE=setTim...
  function aD (line 1) | function aD(t){return t.x}
  function sD (line 1) | function sD(t){return t.y}
  function cD (line 1) | function cD(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,s=new Map...
  function i (line 1) | function i(){var i,o,a=n.length,s=0,u=0;for(i=0;ie(t,n):e)}
  method transform (line 1) | transform(t,e){var n,r,i=this.value,o=e.changed(e.ADD_REM),a=t.modified(...
  method finish (line 1) | finish(t,e){const n=e.dataflow;for(let t,e=this._argops,s=0,u=e.length;s...
  function wD (line 1) | function wD(t,e){return t.parent===e.parent?1:2}
  function kD (line 1) | function kD(t,e){return t+e.x}
  function AD (line 1) | function AD(t,e){return Math.max(t,e.y)}
  function MD (line 1) | function MD(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n...
  function ED (line 1) | function ED(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=CD)):void...
  function DD (line 1) | function DD(t){return t.children}
  function CD (line 1) | function CD(t){return Array.isArray(t)?t[1]:null}
  function FD (line 1) | function FD(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.da...
  function SD (line 1) | function SD(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}
  function $D (line 1) | function $D(t){this.data=t,this.depth=this.height=0,this.parent=null}
  function TD (line 1) | function TD(t){return null==t?null:BD(t)}
  function BD (line 1) | function BD(t){if("function"!=typeof t)throw new Error;return t}
  function zD (line 1) | function zD(){return 0}
  function ND (line 1) | function ND(t){return function(){return t}}
  function LD (line 1) | function LD(t,e){var n,r;if(jD(e,t))return[e];for(n=0;n0&&n*n>...
  function VD (line 1) | function VD(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e...
  function XD (line 1) | function XD(t){this._=t,this.next=null,this.previous=null}
  function JD (line 1) | function JD(t,e){if(!(o=(t=function(t){return"object"==typeof t&&"length...
  function ZD (line 1) | function ZD(t){return Math.sqrt(t.value)}
  function QD (line 1) | function QD(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}
  function KD (line 1) | function KD(t,e,n){return function(r){if(i=r.children){var i,o,a,s=i.len...
  function tC (line 1) | function tC(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e....
  function eC (line 1) | function eC(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.rou...
  function nC (line 1) | function nC(t,e,n,r,i){for(var o,a=t.children,s=-1,u=a.length,l=t.value&...
  function aC (line 1) | function aC(t){return t.id}
  function sC (line 1) | function sC(t){return t.parentId}
  function uC (line 1) | function uC(){var t,e=aC,n=sC;function r(r){var i,o,a,s,u,l,c,f,h=Array....
  function lC (line 1) | function lC(t){let e=t.length;if(e<2)return"";for(;--e>1&&!cC(t,e););ret...
  function cC (line 1) | function cC(t,e){if("/"===t[e]){let n=0;for(;e>0&&"\\"===t[--e];)++n;if(...
  function fC (line 1) | function fC(t,e){return t.parent===e.parent?1:2}
  function hC (line 1) | function hC(t){var e=t.children;return e?e[0]:t.t}
  function dC (line 1) | function dC(t){var e=t.children;return e?e[e.length-1]:t.t}
  function pC (line 1) | function pC(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}
  function gC (line 1) | function gC(t,e,n){return t.a.parent===e.parent?t.a:n}
  function mC (line 1) | function mC(t,e){this._=t,this.parent=null,this.children=null,this.A=nul...
  function yC (line 1) | function yC(t,e,n,r,i){for(var o,a=t.children,s=-1,u=a.length,l=t.value&...
  function _C (line 1) | function _C(t,e,n,r,i,o){for(var a,s,u,l,c,f,h,d,p,g,m,y=[],v=e.children...
  function n (line 1) | function n(t,n,r,i,o){_C(e,t,n,r,i,o)}
  function n (line 1) | function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,s,u,l,c,...
  function wC (line 1) | function wC(t,e,n){const r={};return t.each((t=>{const i=t.data;n(i)&&(r...
  function kC (line 1) | function kC(t){Ja.call(this,null,t)}
  function MC (line 1) | function MC(){const t=[],e={entries:t=>r(n(t,0),0),key:n=>(t.push(n),e)}...
  function EC (line 1) | function EC(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){e.source||s("Nest transform requires an upstream data sou...
  method transform (line 1) | transform(t,e){e.source&&e.source.root||s(this.constructor.name+" transf...
  function FC (line 1) | function FC(t){EC.call(this,t)}
  function i (line 1) | function i(i){const o=function(){let t=1;return()=>(t=(OD*t+RD)%UD)/UD}(...
  function $C (line 1) | function $C(t){EC.call(this,t)}
  function TC (line 1) | function TC(t){Ja.call(this,null,t)}
  function i (line 1) | function i(i){var o=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/o,i.each...
  method transform (line 1) | transform(t,e){e.source||s("Stratify transform requires an upstream data...
  function i (line 1) | function i(i){var u=function(t){for(var e,n,r,i,o,a=new mC(t,0),s=[a];e=...
  function o (line 1) | function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;i...
  function a (line 1) | function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}
  function s (line 1) | function s(t){t.x*=e,t.y=t.depth*n}
  function i (line 1) | function i(i){var o,a=0;i.eachAfter((function(e){var n=e.children;n?(e.x...
  function NC (line 1) | function NC(t){EC.call(this,t)}
  function OC (line 1) | function OC(t){Ja.call(this,[],t)}
  method layout (line 1) | layout(t){const e=t||"tidy";if(lt(BC,e))return BC[e]();s("Unrecognized T...
  method transform (line 1) | transform(t,e){const n=this.value,r=e.source&&e.source.root,i=e.fork(e.N...
  function LC (line 1) | function LC(t){EC.call(this,t)}
  method layout (line 1) | layout(){const t=function(){var t=xC,e=!1,n=1,r=1,i=[0],o=zD,a=zD,s=zD,u...
  function jC (line 1) | function jC(t,e,n){return new Uint32Array(t.getImageData(0,0,e,n).data.b...
  function IC (line 1) | function IC(t,e,n){if(!e.length)return;const r=e[0].mark.marktype;"group...
  function WC (line 1) | function WC(t){const e=ba(t,{});return e.stroke&&0!==e.strokeOpacity||e....
  function JC (line 1) | function JC(t,e,n){const r=Math.max(1,Math.sqrt(t*e/1e6)),i=~~((t+2*n+r)...
  function ZC (line 1) | function ZC(t,e,n,r,i,o){let a=n/2;return t-a<0||t+a>i||e-(a=r/2)<0||e+a>o}
  function QC (line 1) | function QC(t,e,n,r,i,o,a,s){const u=i*o/(2*r),l=t(e-u),c=t(e+u),f=t(n-(...
  function rF (line 1) | function rF(t,e,n,r,i,o,a,s,u,l,c,f){return!(i.outOfBounds(t,n,e,r)||(f&...
  function u (line 1) | function u(e,n,r,u,l){const c=t.invert(e),f=t.invert(n);let h,d=r,p=o;if...
  function aF (line 1) | function aF(t,e,n,r,i,o,a,s,u,l,c){if(!t.length)return t;const f=Math.ma...
  function lF (line 1) | function lF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=t.modified();if(!(n||e.changed(e.ADD_REM)||functi...
  function fF (line 1) | function fF(t,e){var n,r,i,o,a,s,u=[],l=function(t){return t(o)};if(null...
  function hF (line 1) | function hF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function pF (line 1) | function pF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function vF (line 1) | function vF(t,e,n,r,i){let o,a,s,u,l=e[0],c=r[0],f=0,h=0;c>l==c>-l?(o=l,...
  function _F (line 1) | function _F(t){return new Float64Array(t)}
  function DF (line 1) | function DF(t,e,n,r,i,o){const a=(e-o)*(n-i),s=(t-i)*(r-o),u=a-s;if(0===...
  class SF (line 1) | class SF{static from(t){let e=arguments.length>1&&void 0!==arguments[1]?...
    method from (line 1) | static from(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method constructor (line 1) | constructor(t){const e=t.length>>1;if(e>0&&"number"!=typeof t[0])throw...
    method update (line 1) | update(){const{coords:t,_hullPrev:e,_hullNext:n,_hullTri:r,_hullHash:i...
    method _hashKey (line 1) | _hashKey(t,e){return Math.floor(function(t,e){const n=t/(Math.abs(t)+M...
    method _legalize (line 1) | _legalize(t){const{_triangles:e,_halfedges:n,coords:r}=this;let i=0,o=...
    method _link (line 1) | _link(t,e){this._halfedges[t]=e,-1!==e&&(this._halfedges[e]=t)}
    method _addTriangle (line 1) | _addTriangle(t,e,n,r,i,o){const a=this.trianglesLen;return this._trian...
  function $F (line 1) | function $F(t,e,n,r){const i=t-n,o=e-r;return i*i+o*o}
  function TF (line 1) | function TF(t,e,n,r,i,o,a,s){const u=t-a,l=e-s,c=n-a,f=r-s,h=i-a,d=o-s,p...
  function BF (line 1) | function BF(t,e,n,r,i,o){const a=n-t,s=r-e,u=i-t,l=o-e,c=a*a+s*s,f=u*u+l...
  function zF (line 1) | function zF(t,e,n,r){if(r-n<=20)for(let i=n+1;i<=r;i++){const r=t[i],o=e...
  function NF (line 1) | function NF(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}
  function OF (line 1) | function OF(t){return t[0]}
  function RF (line 1) | function RF(t){return t[1]}
  class LF (line 1) | class LF{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._="...
    method constructor (line 1) | constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}
    method moveTo (line 1) | moveTo(t,e){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}
    method closePath (line 1) | closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this...
    method lineTo (line 1) | lineTo(t,e){this._+=`L${this._x1=+t},${this._y1=+e}`}
    method arc (line 1) | arc(t,e,n){const r=(t=+t)+(n=+n),i=e=+e;if(n<0)throw new Error("negati...
    method rect (line 1) | rect(t,e,n,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+e...
    method value (line 1) | value(){return this._||null}
  class qF (line 1) | class qF{constructor(){this._=[]}moveTo(t,e){this._.push([t,e])}closePat...
    method constructor (line 1) | constructor(){this._=[]}
    method moveTo (line 1) | moveTo(t,e){this._.push([t,e])}
    method closePath (line 1) | closePath(){this._.push(this._[0].slice())}
    method lineTo (line 1) | lineTo(t,e){this._.push([t,e])}
    method value (line 1) | value(){return this._.length?this._:null}
  method constructor (line 1) | constructor(t){let[e,n,r,i]=arguments.length>1&&void 0!==arguments[1]?ar...
  method update (line 1) | update(){return this.delaunay.update(),this._init(),this}
  method _init (line 1) | _init(){const{delaunay:{points:t,hull:e,triangles:n},vectors:r}=this;let...
  method render (line 1) | render(t){const e=null==t?t=new LF:void 0,{delaunay:{halfedges:n,inedges...
  method renderBounds (line 1) | renderBounds(t){const e=null==t?t=new LF:void 0;return t.rect(this.xmin,...
  method renderCell (line 1) | renderCell(t,e){const n=null==e?e=new LF:void 0,r=this._clip(t);if(null=...
  method cellPolygons (line 1) | *cellPolygons(){const{delaunay:{points:t}}=this;for(let e=0,n=t.length/2...
  method cellPolygon (line 1) | cellPolygon(t){const e=new qF;return this.renderCell(t,e),e.value()}
  method _renderSegment (line 1) | _renderSegment(t,e,n,r,i){let o;const a=this._regioncode(t,e),s=this._re...
  method contains (line 1) | contains(t,e,n){return(e=+e)==e&&(n=+n)==n&&this.delaunay._step(t,e,n)===t}
  method neighbors (line 1) | *neighbors(t){const e=this._clip(t);if(e)for(const n of this.delaunay.ne...
  method _cell (line 1) | _cell(t){const{circumcenters:e,delaunay:{inedges:n,halfedges:r,triangles...
  method _clip (line 1) | _clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.y...
  method _clipFinite (line 1) | _clipFinite(t,e){const n=e.length;let r,i,o,a,s=null,u=e[n-2],l=e[n-1],c...
  method _clipSegment (line 1) | _clipSegment(t,e,n,r,i,o){const a=ithis.xmax?2:0)|(e...
  method _simplify (line 1) | _simplify(t){if(t&&t.length>4){for(let e=0;e1&&void 0!==arguments[1]?...
    method from (line 1) | static from(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method constructor (line 1) | constructor(t){this._delaunator=new SF(t),this.inedges=new Int32Array(...
    method update (line 1) | update(){return this._delaunator.update(),this._init(),this}
    method _init (line 1) | _init(){const t=this._delaunator,e=this.points;if(t.hull&&t.hull.lengt...
    method voronoi (line 1) | voronoi(t){return new PF(this,t)}
    method neighbors (line 1) | *neighbors(t){const{inedges:e,hull:n,_hullIndex:r,halfedges:i,triangle...
    method find (line 1) | find(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]...
    method _step (line 1) | _step(t,e,n){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles...
    method render (line 1) | render(t){const e=null==t?t=new LF:void 0,{points:n,halfedges:r,triang...
    method renderPoints (line 1) | renderPoints(t,e){void 0!==e||t&&"function"==typeof t.moveTo||(e=t,t=n...
    method renderHull (line 1) | renderHull(t){const e=null==t?t=new LF:void 0,{hull:n,points:r}=this,i...
    method hullPolygon (line 1) | hullPolygon(){const t=new qF;return this.renderHull(t),t.value()}
    method renderTriangle (line 1) | renderTriangle(t,e){const n=null==e?e=new LF:void 0,{points:r,triangle...
    method trianglePolygons (line 1) | *trianglePolygons(){const{triangles:t}=this;for(let e=0,n=t.length/3;e...
    method trianglePolygon (line 1) | trianglePolygon(t){const e=new qF;return this.renderTriangle(t,e),e.va...
  function VF (line 1) | function VF(t){Ja.call(this,null,t)}
  function JF (line 1) | function JF(t){const e=t[0][0],n=t[0][1];let r=t.length-1;for(;t[r][0]==...
  method transform (line 1) | transform(t,e){const n=t.as||"path",r=e.source;if(!r||!r.length)return e...
  function eS (line 1) | function eS(){var t,e,n,r,i,o,a,s=[256,256],u=aS,l=[],c=Math.random,f={}...
  function nS (line 1) | function nS(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect...
  function rS (line 1) | function rS(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),...
  function iS (line 1) | function iS(t,e){var n=t[0],r=t[1];e.x+e.x0e[0].x&&t.x+t.x0e[0]....
  function aS (line 1) | function aS(t){var e=t[0]/t[1];return function(t){return[e*(t*=.1)*Math....
  function sS (line 1) | function sS(t){return"function"==typeof t?t:function(){return t}}
  function fS (line 1) | function fS(t){Ja.call(this,eS(),t)}
  method transform (line 1) | transform(e,n){!e.size||e.size[0]&&e.size[1]||s("Wordcloud size dimensio...
  function mS (line 1) | function mS(t,e,n){const r=(e<257?dS:e<65537?pS:gS)(t);return n&&r.set(n...
  function yS (line 1) | function yS(t,e,n){const r=1<{const...
  method update (line 1) | update(t,e,n){const r=this._dims,i=t.query,o=e.stamp,a=r.length;let s,u,...
  method incrementAll (line 1) | incrementAll(t,e,n,r){const i=this.value,o=i.seen(),a=i.curr(),s=i.prev(...
  method incrementOne (line 1) | incrementOne(t,e,n,r){const i=this.value.curr(),o=t.index(),a=t.bisect(t...
  method transform (line 1) | transform(t,e){const n=~(t.ignore||0),r=t.filter,i=r.mask;if(0==(i&n))re...
  function TS (line 1) | function TS(t){this.type=t}
  function y$ (line 1) | function y$(t,e){if(!t)throw new Error("ASSERT: "+e)}
  function v$ (line 1) | function v$(t){return t>=48&&t<=57}
  function _$ (line 1) | function _$(t){return"0123456789abcdefABCDEF".includes(t)}
  function x$ (line 1) | function x$(t){return"01234567".includes(t)}
  function b$ (line 1) | function b$(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[...
  function w$ (line 1) | function w$(t){return 10===t||13===t||8232===t||8233===t}
  function k$ (line 1) | function k$(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===...
  function A$ (line 1) | function A$(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48...
  function E$ (line 1) | function E$(){for(;NS=OS)return{type:LS,start:NS,end:NS};const t=zS....
  function N$ (line 1) | function N$(){const t=RS;return NS=t.end,RS=z$(),NS=t.end,t}
  function O$ (line 1) | function O$(){const t=NS;RS=z$(),NS=t}
  function R$ (line 1) | function R$(t,e,n){const r=new TS("||"===t||"&&"===t?QS:GS);return r.ope...
  function U$ (line 1) | function U$(t,e){const n=new TS(VS);return n.callee=t,n.arguments=e,n}
  function L$ (line 1) | function L$(t){const e=new TS(JS);return e.name=t,e}
  function q$ (line 1) | function q$(t){const e=new TS(ZS);return e.value=t.value,e.raw=zS.slice(...
  function P$ (line 1) | function P$(t,e,n){const r=new TS(KS);return r.computed="["===t,r.object...
  function j$ (line 1) | function j$(t,e,n){const r=new TS(e$);return r.key=e,r.value=n,r.kind=t,r}
  function I$ (line 1) | function I$(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.rep...
  function W$ (line 1) | function W$(t){t.type===LS&&I$(t,u$),t.type===IS&&I$(t,i$),t.type===HS&&...
  function H$ (line 1) | function H$(t){const e=N$();e.type===WS&&e.value===t||W$(e)}
  function Y$ (line 1) | function Y$(t){return RS.type===WS&&RS.value===t}
  function G$ (line 1) | function G$(t){return RS.type===PS&&RS.value===t}
  function V$ (line 1) | function V$(){const t=[];for(NS=RS.start,H$("[");!Y$("]");)Y$(",")?(N$()...
  function X$ (line 1) | function X$(){NS=RS.start;const t=N$();return t.type===HS||t.type===IS?(...
  function J$ (line 1) | function J$(){var t,e,n;return NS=RS.start,(t=RS).type===qS?(n=X$(),H$("...
  function Z$ (line 1) | function Z$(){var t,e,n=[],r={},i=String;for(NS=RS.start,H$("{");!Y$("}"...
  function K$ (line 1) | function K$(){var t,e,n;if(Y$("("))return function(){H$("(");const t=sT(...
  function tT (line 1) | function tT(){const t=[];if(H$("("),!Y$(")"))for(;NSfunction(e,n,r,i){let o=t(n[0...
  function fT (line 1) | function fT(t){const e=(t=t||{}).allowed?Bt(t.allowed):{},n=t.forbidden?...
  function dT (line 1) | function dT(t){return t.getter&&t.getter[hT]||(t.getter=l(t.field),t.get...
  function AT (line 1) | function AT(t,e){for(var n,r,i=e.fields,o=e.values,a=i.length,s=0;st&&t.bandwidth?t.bandwidth():0,n._ba...
  function YT (line 1) | function YT(t,e){return function(n,r,i){if(n){const e=WT(n,(i||this).con...
  function JT (line 1) | function JT(t,e,n){try{t[e].apply(t,["EXPRESSION"].concat([].slice.call(...
  function ZT (line 1) | function ZT(t){const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/...
  function QT (line 1) | function QT(t){const e=af(t);return.2126*ZT(e.r)+.7152*ZT(e.g)+.0722*ZT(...
  function KT (line 1) | function KT(t,e){return t===e||t!=t&&e!=e||(k(t)?!(!k(e)||t.length!==e.l...
  function tB (line 1) | function tB(t,e){for(const n in t)if(!KT(t[n],e[n]))return!1;return!0}
  function eB (line 1) | function eB(t){return e=>tB(t,e)}
  function rB (line 1) | function rB(t){return k(t)||ArrayBuffer.isView(t)?t:null}
  function iB (line 1) | function iB(t){return rB(t)||(xt(t)?t:null)}
  function aB (line 1) | function aB(t,e){const n=ST.call(e,t);return n.root&&n.root.lookup||{}}
  function uB (line 1) | function uB(t,e,n){if(!t)return[];const[r,i]=t,o=(new Rg).set(r[0],r[1],...
  function gB (line 1) | function gB(t,e,n){return 1===arguments.length?lB[t]:(lB[t]=e,n&&(hB[t]=...
  function mB (line 1) | function mB(t,e){const n={};let r;try{r=uT(t=xt(t)?t:Ct(t)+"")}catch(e){...
  function _B (line 1) | function _B(t){return(t+"").toLowerCase()}
  function xB (line 1) | function xB(t,e,n){n.endsWith(";")||(n="return("+n+");");const r=Functio...
  method get (line 1) | get(t){const e=`[${t.map(Ct).join("][")}]`,n=Function("_",`return _${e};...
  method comparator (line 1) | comparator(t,e){let n;const r=Function("a","b","var u, v; return "+t.map...
  function wB (line 1) | function wB(t,e,n){if(!t||!A(t))return t;for(let r,i=0,o=kB.length;ie!==t));const e=Obj...
  method get (line 1) | get(t){return this.nodes[t]}
  method set (line 1) | set(t,e){return this.nodes[t]=e}
  method add (line 1) | add(t,e){const n=this,r=n.dataflow,i=t.value;if(n.set(t.id,e),function(t...
  method resolve (line 1) | resolve(){return(this.unresolved||[]).forEach((t=>t())),delete this.unre...
  method operator (line 1) | operator(t,e){this.add(t,this.dataflow.add(t.value,e))}
  method transform (line 1) | transform(t,e){this.add(t,this.dataflow.add(this.transforms[_B(e)]))}
  method stream (line 1) | stream(t,e){this.set(t.id,e)}
  method update (line 1) | update(t,e,n,r,i){this.dataflow.on(e,n,r,i,t.options)}
  method operatorExpression (line 1) | operatorExpression(t){return this.expr.operator(this,t)}
  method parameterExpression (line 1) | parameterExpression(t){return this.expr.parameter(this,t)}
  method eventExpression (line 1) | eventExpression(t){return this.expr.event(this,t)}
  method handlerExpression (line 1) | handlerExpression(t){return this.expr.handler(this,t)}
  method encodeExpression (line 1) | encodeExpression(t){return this.expr.encode(this,t)}
  function SB (line 1) | function SB(t,e){const n=t.globalCursor()?"undefined"!=typeof document&&...
  function $B (line 1) | function $B(t,e){var n=t._runtime.data;return lt(n,e)||s("Unrecognized d...
  function TB (line 1) | function TB(t,e){Aa(e)||s("Second argument to changes must be a changese...
  function BB (line 1) | function BB(t){var e=t.padding();return Math.max(0,t._viewWidth+e.left+e...
  function zB (line 1) | function zB(t){var e=t.padding();return Math.max(0,t._viewHeight+e.top+e...
  function NB (line 1) | function NB(t){var e=t.padding(),n=t._origin;return[e.left+n[0],e.top+n[...
  function OB (line 1) | function OB(t,e,n){var r,i,o=t._renderer,a=o&&o.canvas();return a&&(i=NB...
  function LB (line 1) | function LB(t,e,n,r){t._eventListeners.push({type:n,sources:V(e),handler...
  function qB (line 1) | function qB(t,e,n){const r=t._eventConfig&&t._eventConfig[e];return!(!1=...
  function PB (line 1) | function PB(t){return t.item}
  function jB (line 1) | function jB(t){return t.item.mark.source}
  function IB (line 1) | function IB(t){return function(e,n){return n.vega.view().changeset().enc...
  function WB (line 1) | function WB(t,e,n){const r=document.createElement(t);for(const t in e)r....
  function VB (line 1) | function VB(t,e,n,r){const i=n.event||"input",o=()=>t.update(e.value);r....
  function XB (line 1) | function XB(t,e,n,r){const i=r.signal(n.signal),o=WB("div",{class:HB}),a...
  function JB (line 1) | function JB(t,e,n,r){const i=WB("input");for(const t in n)"signal"!==t&&...
  function ZB (line 1) | function ZB(t,e,n,r){const i={type:"checkbox",name:n.signal};r&&(i.check...
  function QB (line 1) | function QB(t,e,n,r){const i=WB("select",{name:n.signal}),o=n.labels||[]...
  function KB (line 1) | function KB(t,e,n,r){const i=WB("span",{class:GB}),o=n.labels||[];e.appe...
  function tz (line 1) | function tz(t,e,n,r){r=void 0!==r?r:(+n.max+ +n.min)/2;const i=null!=n.m...
  function ez (line 1) | function ez(t,e){return t===e||t+""==e+""}
  function nz (line 1) | function nz(t,e,n,r,i,o){return(e=e||new r(t.loader())).initialize(n,BB(...
  function rz (line 1) | function rz(t,e){return e?function(){try{e.apply(this,arguments)}catch(e...
  function iz (line 1) | function iz(t,e,n){if("string"==typeof e){if("undefined"==typeof documen...
  function az (line 1) | function az(t){return A(t)?{top:oz(t.top),bottom:oz(t.bottom),left:oz(t....
  function sz (line 1) | async function sz(t,e,n,r){const i=b_(e),o=i&&i.headless;return o||s("Un...
  function hz (line 1) | function hz(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contain...
  function dz (line 1) | function dz(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contain...
  function pz (line 1) | function pz(t,e){return e.modified&&k(e.input.value)&&!t.startsWith("_:v...
  function gz (line 1) | function gz(t,e){return!("parent"===t||e instanceof Za.proxy)}
  function mz (line 1) | function mz(t,e,n,r){const i=t.element();i&&i.setAttribute("title",funct...
  function yz (line 1) | function yz(t){return"["+t.map(vz).join(", ")+"]"}
  function vz (line 1) | function vz(t){return k(t)?"[…]":A(t)&&!mt(t)?"{…}":t}
  function _z (line 1) | function _z(t,e){const n=this;if(e=e||{},Va.call(n),e.loader&&n.loader(e...
  function xz (line 1) | function xz(t,e){return lt(t._signals,e)?t._signals[e]:s("Unrecognized s...
  function bz (line 1) | function bz(t,e){const n=(t._targets||[]).filter((t=>t._update&&t._updat...
  function wz (line 1) | function wz(t,e,n,r){let i=bz(n,r);return i||(i=rz(t,(()=>r(e,n.value)))...
  function kz (line 1) | function kz(t,e,n){const r=bz(e,n);return r&&e._targets.remove(r),t}
  method evaluate (line 1) | async evaluate(t,e,n){if(await Va.prototype.evaluate.call(this,t,e),this...
  method dirty (line 1) | dirty(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)}
  method description (line 1) | description(t){if(arguments.length){const e=null!=t?t+"":null;return e!=...
  method container (line 1) | container(){return this._el}
  method scenegraph (line 1) | scenegraph(){return this._scenegraph}
  method origin (line 1) | origin(){return this._origin.slice()}
  method signal (line 1) | signal(t,e,n){const r=xz(this,t);return 1===arguments.length?r.value:thi...
  method width (line 1) | width(t){return arguments.length?this.signal("width",t):this.signal("wid...
  method height (line 1) | height(t){return arguments.length?this.signal("height",t):this.signal("h...
  method padding (line 1) | padding(t){return arguments.length?this.signal("padding",az(t)):az(this....
  method autosize (line 1) | autosize(t){return arguments.length?this.signal("autosize",t):this.signa...
  method background (line 1) | background(t){return arguments.length?this.signal("background",t):this.s...
  method renderer (line 1) | renderer(t){return arguments.length?(b_(t)||s("Unrecognized renderer typ...
  method tooltip (line 1) | tooltip(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,...
  method loader (line 1) | loader(t){return arguments.length?(t!==this._loader&&(Va.prototype.loade...
  method resize (line 1) | resize(){return this._autosize=1,this.touch(xz(this,"autosize"))}
  method _resetRenderer (line 1) | _resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(th...
  method addEventListener (line 1) | addEventListener(t,e,n){let r=e;return n&&!1===n.trap||(r=rz(this,e),r.r...
  method removeEventListener (line 1) | removeEventListener(t,e){for(var n,r,i=this._handler.handlers(t),o=i.len...
  method addResizeListener (line 1) | addResizeListener(t){const e=this._resizeListeners;return e.includes(t)|...
  method removeResizeListener (line 1) | removeResizeListener(t){var e=this._resizeListeners,n=e.indexOf(t);retur...
  method addSignalListener (line 1) | addSignalListener(t,e){return wz(this,t,xz(this,t),e)}
  method removeSignalListener (line 1) | removeSignalListener(t,e){return kz(this,xz(this,t),e)}
  method addDataListener (line 1) | addDataListener(t,e){return wz(this,t,$B(this,t).values,e)}
  method removeDataListener (line 1) | removeDataListener(t,e){return kz(this,$B(this,t).values,e)}
  method globalCursor (line 1) | globalCursor(t){if(arguments.length){if(this._globalCursor!==!!t){const ...
  method preventDefault (line 1) | preventDefault(t){return arguments.length?(this._preventDefault=t,this):...
  function Rz (line 1) | function Rz(t,e,n){return Nz=e||Az,Oz=n||zz,Lz(t.trim()).map(qz)}
  function Uz (line 1) | function Uz(t,e,n,r,i){const o=t.length;let a,s=0;for(;er[t]=1...
  function DN (line 1) | function DN(t,e){s(t+' for "outer" push: '+Ct(e))}
  function CN (line 1) | function CN(t,e){const n=t.name;if(t.push===MN)e.signals[n]||DN("No prio...
  function FN (line 1) | function FN(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r...
  function SN (line 1) | function SN(t,e,n,r){return new FN(t,e,n,r)}
  function $N (line 1) | function $N(t,e){return SN("operator",t,e)}
  function TN (line 1) | function TN(t){const e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).pu...
  function BN (line 1) | function BN(t,e){return e?{$field:t,$name:e}:{$field:t}}
  function NN (line 1) | function NN(t,e){return{$compare:t,$order:e}}
  function RN (line 1) | function RN(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e...
  function qN (line 1) | function qN(t){return t&&t.signal}
  function PN (line 1) | function PN(t){if(qN(t))return!0;if(A(t))for(const e in t)if(PN(t[e]))re...
  function jN (line 1) | function jN(t,e){return null!=t?t:e}
  function IN (line 1) | function IN(t){return t&&t.signal||t}
  function HN (line 1) | function HN(t,e){return(t.merge?YN:t.stream?GN:t.type?VN:s("Invalid stre...
  function YN (line 1) | function YN(t,e){const n=XN({merge:t.merge.map((t=>HN(t,e)))},t,e);retur...
  function GN (line 1) | function GN(t,e){const n=XN({stream:HN(t.stream,e)},t,e);return e.addStr...
  function VN (line 1) | function VN(t,e){let n;t.type===WN?(n=e.event(WN,t.throttle),t={between:...
  function XN (line 1) | function XN(t,e,n){let r=e.between;return r&&(2!==r.length&&s('Stream "b...
  function ZN (line 1) | function ZN(t,e,n){const r=t.encode,i={target:n};let o=t.events,a=t.upda...
  function QN (line 1) | function QN(t){return{signal:"["+t.map((t=>t.scale?'scale("'+t.scale+'")...
  function SO (line 1) | function SO(t,e){const n=e.getScale(t.name).params;let r;for(r in n.doma...
  function $O (line 1) | function $O(t,e){return A(t)?t.signal?e.signalRef(t.signal):s("Unsupport...
  function TO (line 1) | function TO(t,e){return t.signal?e.signalRef(t.signal):t.map((t=>$O(t,e)))}
  function BO (line 1) | function BO(t){s("Can not find data set: "+Ct(t))}
  function zO (line 1) | function zO(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(k(t)?NO:t...
  function NO (line 1) | function NO(t,e,n){return t.map((t=>$O(t,n)))}
  function OO (line 1) | function OO(t,e,n){const r=n.getData(t.data);return r||BO(t.data),Kd(e.t...
  function RO (line 1) | function RO(t,e,n){const r=t.data,i=t.fields.reduce(((t,e)=>(e=xt(e)?{da...
  function UO (line 1) | function UO(t,e,n){const r=LO(t.sort,!0);let i,o;const a=n.map((t=>{cons...
  function LO (line 1) | function LO(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.f...
  function qO (line 1) | function qO(t,e,n){const r=n.map((t=>{const n=e.getData(t.data);return n...
  function PO (line 1) | function PO(t,e,n){const r=n.map((t=>{const n=e.getData(t.data);return n...
  function jO (line 1) | function jO(t,e,n){const r=e.config.range;let i=t.range;if(i.signal)retu...
  function IO (line 1) | function IO(t,e,n){return k(t)?t.map((t=>IO(t,e,n))):A(t)?t.signal?n.sig...
  function bR (line 1) | function bR(t){return t.type=mR,t.interactive=t.interactive||!1,t}
  function wR (line 1) | function wR(t,e){const n=(n,r)=>jN(t[n],jN(e[n],r));return n.isVertical=...
  function kR (line 1) | function kR(t,e){const n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t])...
  function AR (line 1) | function AR(t,e,n){return`item.anchor === '${JO}' ? ${t} : item.anchor =...
  function ER (line 1) | function ER(t,e){return e?t?A(t)?Object.assign({},t,{offset:ER(t.offset,...
  function DR (line 1) | function DR(t,e){return e?(t.name=e.name,t.style=e.style||t.style,t.inte...
  function CR (line 1) | function CR(t,e,n,r){const i=wR(t,n),o=i.isVertical(),a=i.gradientThickn...
  function FR (line 1) | function FR(t,e,n,r,i){const o=wR(t,n),a=o.isVertical(),s=o.gradientThic...
  function TR (line 1) | function TR(t,e,n,r){const i=wR(t,e),o=i.isVertical(),a=Hz(i.gradientThi...
  function BR (line 1) | function BR(t,e,n,r,i){const o=wR(t,e),a=n.entries,s=!(!a||!a.interactiv...
  function IR (line 1) | function IR(t,e){let n;return A(t)&&(t.signal?n=t.signal:t.path?n="pathS...
  function WR (line 1) | function WR(t){return A(t)&&t.signal?t.signal:Ct(t)}
  function HR (line 1) | function HR(t){const e=t.role||"";return e.startsWith("axis")||e.startsW...
  function YR (line 1) | function YR(t){return{marktype:t.type,name:t.name||void 0,role:t.role||H...
  function GR (line 1) | function GR(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t}
  function VR (line 1) | function VR(t,e){const n=Qa(t.type);n||s("Unrecognized transform type: "...
  function XR (line 1) | function XR(t,e,n){const r={},i=t.params.length;for(let o=0;o{n.push...
  function _U (line 1) | function _U(t){const e=rO({},t);return e.metadata={source:!0},e}
  function xU (line 1) | function xU(t,e){return hO({url:e.url?t.property(e.url):void 0,async:e.a...
  function LU (line 1) | function LU(t,e,n,r){let i;if(e&<(e,t))return e[t];if(lt(n,t))return n...
  function qU (line 1) | function qU(t){const e={};for(const n of t)if(n)for(const t in n)e[t]=1;...
  function PU (line 1) | function PU(t,e){return{scale:t.scale,range:e}}
  function jU (line 1) | function jU(t,e,n,r,i){const o=wR(t,e),a=t.orient,s=t.gridScale,u=wU(a,1...
  function IU (line 1) | function IU(t,e,n,r,i){return{signal:'flush(range("'+t+'"), scale("'+t+'...
  function WU (line 1) | function WU(t,e,n,r){const i=wR(t,e),o=t.orient,a=wU(o,-1,1);let s,u;con...
  function HU (line 1) | function HU(t,e){const n=function(t,e){var n,r,i,o=e.config,a=o.style,s=...
  function YU (line 1) | function YU(t,e){const n={enter:{},update:{}};return Gz(n,{orient:t("ori...
  function GU (line 1) | function GU(t,e,n){const r=V(t.signals),i=V(t.scales);return n||r.forEac...
  function XU (line 1) | function XU(t,e){const n=e.config,r=TN(e.root=e.add($N())),i=function(t,...
  function JU (line 1) | function JU(t,e){return e&&e.signal?{name:t,update:e.signal}:{name:t,val...
  function ZU (line 1) | function ZU(t,e){this.config=t||{},this.options=e||{},this.bindings=[],t...
  function QU (line 1) | function QU(t){this.config=t.config,this.options=t.options,this.legends=...
  function KU (line 1) | function KU(t){return(k(t)?tL:eL)(t)}
  function tL (line 1) | function tL(t){const e=t.length;let n="[";for(let r=0;r1?",":"")+Ct(...
  method parse (line 1) | parse(t){return GU(t,this)}
  method fork (line 1) | fork(){return new QU(this)}
  method isSubscope (line 1) | isSubscope(){return this._subid>0}
  method toRuntime (line 1) | toRuntime(){return this.finish(),{description:this.description,operators...
  method id (line 1) | id(){return(this._subid?this._subid+":":0)+this._id++}
  method add (line 1) | add(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forE...
  method proxy (line 1) | proxy(t){const e=t instanceof FN?TN(t):t;return this.add(xO({value:e}))}
  method addStream (line 1) | addStream(t){return this.streams.push(t),t.id=this.id(),t}
  method addUpdate (line 1) | addUpdate(t){return this.updates.push(t),t}
  method finish (line 1) | finish(){let t,e;for(t in this.root&&(this.root.root=!0),this.signals)th...
  method pushState (line 1) | pushState(t,e,n){this._encode.push(TN(this.add(AO({pulse:t})))),this._pa...
  method popState (line 1) | popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this...
  method parent (line 1) | parent(){return F(this._parent)}
  method encode (line 1) | encode(){return F(this._encode)}
  method lookup (line 1) | lookup(){return F(this._lookup)}
  method markpath (line 1) | markpath(){const t=this._markpath;return++t[t.length-1]}
  method fieldRef (line 1) | fieldRef(t,e){if(xt(t))return BN(t,e);t.signal||s("Unsupported field ref...
  method compareRef (line 1) | compareRef(t){let e=!1;const n=t=>qN(t)?(e=!0,this.signalRef(t.signal)):...
  method keyRef (line 1) | keyRef(t,e){let n=!1;const r=this.signals;return t=V(t).map((t=>qN(t)?(n...
  method sortRef (line 1) | sortRef(t){if(!t)return t;const e=RN(t.op,t.field),n=t.order||"ascending...
  method event (line 1) | event(t,e){const n=t+":"+e;if(!this.events[n]){const r=this.id();this.st...
  method hasOwnSignal (line 1) | hasOwnSignal(t){return lt(this.signals,t)}
  method addSignal (line 1) | addSignal(t,e){this.hasOwnSignal(t)&&s("Duplicate signal name: "+Ct(t));...
  method getSignal (line 1) | getSignal(t){return this.signals[t]||s("Unrecognized signal name: "+Ct(t...
  method signalRef (line 1) | signalRef(t){return this.signals[t]?TN(this.signals[t]):(lt(this.lambdas...
  method parseLambdas (line 1) | parseLambdas(){const t=Object.keys(this.lambdas);for(let e=0,n=t.length;...
  method property (line 1) | property(t){return t&&t.signal?this.signalRef(t.signal):t}
  method objectProperty (line 1) | objectProperty(t){return t&&A(t)?this.signalRef(t.signal||KU(t)):t}
  method exprRef (line 1) | exprRef(t,e){const n={expr:mB(t,this)};return e&&(n.expr.$name=e),TN(thi...
  method addBinding (line 1) | addBinding(t,e){this.bindings||s("Nested signals do not support binding:...
  method addScaleProj (line 1) | addScaleProj(t,e){lt(this.scales,t)&&s("Duplicate scale or projection na...
  method addScale (line 1) | addScale(t,e){this.addScaleProj(t,kO(e))}
  method addProjection (line 1) | addProjection(t,e){this.addScaleProj(t,_O(e))}
  method getScale (line 1) | getScale(t){return this.scales[t]||s("Unrecognized scale name: "+Ct(t)),...
  method scaleRef (line 1) | scaleRef(t){return TN(this.getScale(t))}
  method scaleType (line 1) | scaleType(t){return this.getScale(t).params.type}
  method projectionRef (line 1) | projectionRef(t){return this.scaleRef(t)}
  method projectionType (line 1) | projectionType(t){return this.scaleType(t)}
  method addData (line 1) | addData(t,e){return lt(this.data,t)&&s("Duplicate data set name: "+Ct(t)...
  method getData (line 1) | getData(t){return this.data[t]||s("Undefined data set name: "+Ct(t)),thi...
  method addDataPipeline (line 1) | addDataPipeline(t,e){return lt(this.data,t)&&s("Duplicate data set name:...
  method min (line 1) | min(t){return arguments.length?(r=t||0,o=i-r,a):r}
  method max (line 1) | max(t){return arguments.length?(i=t||0,o=i-r,a):i}
  method cdf (line 1) | cdf(t){const e=Math.floor(t);return e=i?1:(e-r+1)/o}

FILE: docs/autogen_rst.py
  function module_template (line 9) | def module_template(module_qualname: str):
  function index_template (line 21) | def index_template(package_name: str, doc_references: list[str] | None =...
  function write_to_file (line 33) | def write_to_file(content: str, path: str):
  function make_rst (line 48) | def make_rst(src_root, rst_root, clean=False, overwrite=False, package_p...

FILE: examples/atari/atari_c51.py
  function main (line 25) | def main(

FILE: examples/atari/atari_dqn.py
  function main (line 27) | def main(

FILE: examples/atari/atari_dqn_hl.py
  function main (line 24) | def main(

FILE: examples/atari/atari_fqf.py
  function main (line 26) | def main(

FILE: examples/atari/atari_iqn.py
  function main (line 26) | def main(

FILE: examples/atari/atari_iqn_hl.py
  function main (line 23) | def main(

FILE: examples/atari/atari_ppo.py
  function main (line 37) | def main(

FILE: examples/atari/atari_ppo_hl.py
  function main (line 21) | def main(

FILE: examples/atari/atari_qrdqn.py
  function main (line 25) | def main(

FILE: examples/atari/atari_rainbow.py
  function main (line 30) | def main(

FILE: examples/atari/atari_sac.py
  function main (line 31) | def main(

FILE: examples/atari/atari_sac_hl.py
  function main (line 20) | def main(

FILE: examples/box2d/acrobot_dualdqn.py
  function get_args (line 22) | def get_args() -> argparse.Namespace:
  function test_dqn (line 53) | def test_dqn(args: argparse.Namespace = get_args()) -> None:

FILE: examples/box2d/bipedal_bdq.py
  function get_args (line 22) | def get_args() -> argparse.Namespace:
  function run_bdq (line 58) | def run_bdq(args: argparse.Namespace = get_args()) -> None:

FILE: examples/box2d/bipedal_hardcore_sac.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  class Wrapper (line 57) | class Wrapper(gym.Wrapper):
    method __init__ (line 60) | def __init__(
    method step (line 72) | def step(
  function test_sac_bipedal (line 89) | def test_sac_bipedal(args: argparse.Namespace = get_args()) -> None:

FILE: examples/box2d/lunarlander_dqn.py
  function get_args (line 22) | def get_args() -> argparse.Namespace:
  function test_dqn (line 54) | def test_dqn(args: argparse.Namespace = get_args()) -> None:

FILE: examples/box2d/mcc_sac.py
  function get_args (line 24) | def get_args() -> argparse.Namespace:
  function test_sac (line 55) | def test_sac(args: argparse.Namespace = get_args()) -> None:

FILE: examples/discrete/discrete_dqn.py
  function main (line 13) | def main() -> None:

FILE: examples/discrete/discrete_dqn_hl.py
  function main (line 17) | def main(

FILE: examples/inverse/irl_gail.py
  class NoRewardEnv (line 37) | class NoRewardEnv(gym.RewardWrapper):
    method __init__ (line 43) | def __init__(self, env: gym.Env) -> None:
    method reward (line 46) | def reward(self, reward: SupportsFloat) -> np.ndarray:
  function get_args (line 51) | def get_args() -> argparse.Namespace:
  function test_gail (line 100) | def test_gail(args: argparse.Namespace = get_args()) -> None:

FILE: examples/mujoco/analysis.py
  function numerical_analysis (line 13) | def numerical_analysis(root_dir: str | PathLike, xlim: float, norm: bool...

FILE: examples/mujoco/fetch_her_ddpg.py
  function get_args (line 35) | def get_args() -> argparse.Namespace:
  function make_fetch_env (line 83) | def make_fetch_env(
  function test_ddpg (line 98) | def test_ddpg(args: argparse.Namespace = get_args()) -> None:

FILE: examples/mujoco/mujoco_a2c.py
  function main (line 28) | def main(

FILE: examples/mujoco/mujoco_a2c_hl.py
  function main (line 20) | def main(

FILE: examples/mujoco/mujoco_ddpg.py
  function main (line 26) | def main(

FILE: examples/mujoco/mujoco_ddpg_hl.py
  function main (line 18) | def main(

FILE: examples/mujoco/mujoco_env.py
  function make_mujoco_env (line 27) | def make_mujoco_env(
  class MujocoEnvObsRmsPersistence (line 48) | class MujocoEnvObsRmsPersistence(Persistence):
    method persist (line 51) | def persist(self, event: PersistEvent, world: World) -> None:
    method restore (line 60) | def restore(self, event: RestoreEvent, world: World) -> None:
  class MujocoEnvFactory (line 73) | class MujocoEnvFactory(EnvFactoryRegistered):
    method __init__ (line 74) | def __init__(
    method create_venv (line 87) | def create_venv(self, num_envs: int, mode: EnvMode, seed: int | None =...
    method create_envs (line 94) | def create_envs(

FILE: examples/mujoco/mujoco_npg.py
  function main (line 28) | def main(

FILE: examples/mujoco/mujoco_npg_hl.py
  function main (line 19) | def main(

FILE: examples/mujoco/mujoco_ppo.py
  function main (line 28) | def main(

FILE: examples/mujoco/mujoco_ppo_hl.py
  function main (line 19) | def main(

FILE: examples/mujoco/mujoco_redq.py
  function main (line 27) | def main(

FILE: examples/mujoco/mujoco_redq_hl.py
  function main (line 17) | def main(

FILE: examples/mujoco/mujoco_reinforce.py
  function main (line 28) | def main(

FILE: examples/mujoco/mujoco_reinforce_hl.py
  function main (line 19) | def main(

FILE: examples/mujoco/mujoco_sac.py
  function main (line 25) | def main(

FILE: examples/mujoco/mujoco_sac_hl.py
  function main (line 17) | def main(

FILE: examples/mujoco/mujoco_td3.py
  function main (line 26) | def main(

FILE: examples/mujoco/mujoco_td3_hl.py
  function main (line 22) | def main(

FILE: examples/mujoco/mujoco_trpo.py
  function main (line 28) | def main(

FILE: examples/mujoco/mujoco_trpo_hl.py
  function main (line 19) | def main(

FILE: examples/mujoco/plotter.py
  function smooth (line 14) | def smooth(
  function plot_ax (line 95) | def plot_ax(
  function plot_figure (line 148) | def plot_figure(

FILE: examples/mujoco/tools.py
  function find_all_files (line 17) | def find_all_files(root_dir: str | PathLike[str], pattern: str | Pattern...
  function group_files (line 28) | def group_files(file_list: list[str], pattern: str | Pattern[str]) -> di...
  function csv2numpy (line 37) | def csv2numpy(csv_file: str) -> dict[Any, np.ndarray]:
  function convert_tfevents_to_csv (line 46) | def convert_tfevents_to_csv(
  function merge_csv (line 90) | def merge_csv(

FILE: examples/offline/atari_bcq.py
  function get_args (line 27) | def get_args() -> argparse.Namespace:
  function main (line 77) | def main(args: argparse.Namespace = get_args()) -> None:

FILE: examples/offline/atari_cql.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function main (line 77) | def main(args: argparse.Namespace = get_args()) -> None:

FILE: examples/offline/atari_crr.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function main (line 78) | def main(args: argparse.Namespace = get_args()) -> None:

FILE: examples/offline/atari_il.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_il (line 71) | def test_il(args: argparse.Namespace = get_args()) -> None:

FILE: examples/offline/convert_rl_unplugged_atari.py
  function _filename (line 104) | def _filename(run_id: int, shard_id: int, total_num_shards: int = 100) -...
  function _decode_frames (line 108) | def _decode_frames(pngs: tf.Tensor) -> tf.Tensor:
  function _make_tianshou_batch (line 123) | def _make_tianshou_batch(
  function _tf_example_to_tianshou_batch (line 151) | def _tf_example_to_tianshou_batch(tf_example: tf.train.Example) -> Batch:
  function download (line 177) | def download(url: str, fname: str, chunk_size: int | None = 1024) -> None:
  function process_shard (line 198) | def process_shard(url: str, fname: str, ofname: str, maxsize: int = 5000...
  function process_dataset (line 231) | def process_dataset(
  function main (line 246) | def main(args: Namespace) -> None:

FILE: examples/offline/d4rl_bcq.py
  function get_args (line 27) | def get_args() -> argparse.Namespace:
  function test_bcq (line 77) | def test_bcq() -> None:

FILE: examples/offline/d4rl_cql.py
  function get_args (line 27) | def get_args() -> argparse.Namespace:
  function test_cql (line 221) | def test_cql() -> None:

FILE: examples/offline/d4rl_il.py
  function get_args (line 29) | def get_args() -> argparse.Namespace:
  function test_il (line 66) | def test_il() -> None:

FILE: examples/offline/d4rl_td3_bc.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_td3_bc (line 78) | def test_td3_bc() -> None:

FILE: examples/offline/utils.py
  function load_buffer_d4rl (line 10) | def load_buffer_d4rl(expert_data_task: str) -> ReplayBuffer:
  function load_buffer (line 23) | def load_buffer(buffer_path: str) -> ReplayBuffer:
  function normalize_all_obs_in_replay_buffer (line 36) | def normalize_all_obs_in_replay_buffer(

FILE: examples/vizdoom/env.py
  function normal_button_comb (line 19) | def normal_button_comb() -> list:
  function battle_button_comb (line 29) | def battle_button_comb() -> list:
  class Env (line 46) | class Env(gym.Env):
    method __init__ (line 47) | def __init__(
    method get_obs (line 74) | def get_obs(self) -> None:
    method reset (line 82) | def reset(
    method step (line 99) | def step(self, action: int) -> tuple[NDArray[np.uint8], float, bool, b...
    method render (line 129) | def render(self) -> None:
    method close (line 132) | def close(self) -> None:
  function make_vizdoom_env (line 136) | def make_vizdoom_env(

FILE: examples/vizdoom/replay.py
  function main (line 10) | def main(

FILE: examples/vizdoom/vizdoom_c51.py
  function get_args (line 21) | def get_args() -> argparse.Namespace:
  function test_c51 (line 77) | def test_c51(args: argparse.Namespace = get_args()) -> None:

FILE: examples/vizdoom/vizdoom_ppo.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_ppo (line 106) | def test_ppo(args: argparse.Namespace = get_args()) -> None:

FILE: test/base/env.py
  class MoveToRightEnv (line 12) | class MoveToRightEnv(gym.Env):
    method __init__ (line 26) | def __init__(
    method reset (line 85) | def reset(
    method _get_reward (line 103) | def _get_reward(self) -> list[int] | int:
    method _get_state (line 110) | def _get_state(self) -> dict[str, Any] | np.ndarray:
    method do_sleep (line 134) | def do_sleep(self) -> None:
    method step (line 140) | def step(self, action: np.ndarray | int):  # type: ignore[no-untyped-d...
  class NXEnv (line 174) | class NXEnv(gym.Env):
    method __init__ (line 175) | def __init__(self, size: int, obs_type: str, feat_dim: int = 32) -> None:
    method _encode_obs (line 183) | def _encode_obs(self) -> np.ndarray | nx.Graph:
    method reset (line 188) | def reset(
    method step (line 199) | def step(
  class MyGoalEnv (line 209) | class MyGoalEnv(MoveToRightEnv):
    method __init__ (line 210) | def __init__(self, *args: Any, **kwargs: Any) -> None:
    method reset (line 230) | def reset(self, *args: Any, **kwargs: Any) -> tuple[dict[str, Any], di...
    method step (line 235) | def step(self, *args: Any, **kwargs: Any) -> tuple[dict[str, Any], flo...
    method compute_reward_fn (line 244) | def compute_reward_fn(

FILE: test/base/test_action_space_sampling.py
  function test_gym_env_action_space (line 6) | def test_gym_env_action_space() -> None:
  function test_dummy_vec_env_action_space (line 17) | def test_dummy_vec_env_action_space() -> None:
  function test_subproc_vec_env_action_space (line 29) | def test_subproc_vec_env_action_space() -> None:
  function test_shmem_vec_env_action_space (line 41) | def test_shmem_vec_env_action_space() -> None:

FILE: test/base/test_batch.py
  function test_batch (line 18) | def test_batch() -> None:
  function test_batch_over_batch (line 187) | def test_batch_over_batch() -> None:
  function test_batch_cat_and_stack (line 232) | def test_batch_cat_and_stack() -> None:
  function test_utils_to_torch_numpy (line 349) | def test_utils_to_torch_numpy() -> None:
  function test_batch_pickle (line 413) | def test_batch_pickle() -> None:
  function test_batch_copy (line 421) | def test_batch_copy() -> None:
  function test_batch_empty (line 453) | def test_batch_empty() -> None:
  function test_batch_standard_compatibility (line 489) | def test_batch_standard_compatibility() -> None:
  class TestBatchEquality (line 502) | class TestBatchEquality:
    method test_keys_different (line 504) | def test_keys_different() -> None:
    method test_keys_missing (line 510) | def test_keys_missing() -> None:
    method test_types_keys_different (line 517) | def test_types_keys_different() -> None:
    method test_array_types_different (line 523) | def test_array_types_different() -> None:
    method test_nested_values_different (line 529) | def test_nested_values_different() -> None:
    method test_nested_shapes_different (line 535) | def test_nested_shapes_different() -> None:
    method test_array_scalars (line 541) | def test_array_scalars() -> None:
    method test_slice_equal (line 563) | def test_slice_equal() -> None:
    method test_slice_ellipsis_equal (line 568) | def test_slice_ellipsis_equal() -> None:
    method test_empty_batches (line 573) | def test_empty_batches() -> None:
    method test_different_order_keys (line 577) | def test_different_order_keys() -> None:
    method test_tuple_and_list_types (line 581) | def test_tuple_and_list_types() -> None:
    method test_subbatch_dict_and_batch_types (line 585) | def test_subbatch_dict_and_batch_types() -> None:
  class TestBatchToDict (line 589) | class TestBatchToDict:
    method test_to_dict_empty_batch_no_recurse (line 591) | def test_to_dict_empty_batch_no_recurse() -> None:
    method test_to_dict_with_simple_values_recurse (line 597) | def test_to_dict_with_simple_values_recurse() -> None:
    method test_to_dict_simple (line 603) | def test_to_dict_simple() -> None:
    method test_to_dict_nested_batch_no_recurse (line 609) | def test_to_dict_nested_batch_no_recurse() -> None:
    method test_to_dict_nested_batch_recurse (line 616) | def test_to_dict_nested_batch_recurse() -> None:
    method test_to_dict_multiple_nested_batch_recurse (line 623) | def test_to_dict_multiple_nested_batch_recurse() -> None:
    method test_to_dict_array (line 633) | def test_to_dict_array() -> None:
    method test_to_dict_nested_batch_with_array (line 639) | def test_to_dict_nested_batch_with_array() -> None:
    method test_to_dict_torch_tensor (line 646) | def test_to_dict_torch_tensor() -> None:
    method test_to_dict_nested_batch_with_torch_tensor (line 654) | def test_to_dict_nested_batch_with_torch_tensor() -> None:
  class TestBatchConversions (line 664) | class TestBatchConversions:
    method test_to_numpy (line 666) | def test_to_numpy() -> None:
    method test_to_numpy_ (line 677) | def test_to_numpy_() -> None:
    method test_to_torch (line 686) | def test_to_torch() -> None:
    method test_to_torch_ (line 697) | def test_to_torch_() -> None:
    method test_apply_array_func (line 706) | def test_apply_array_func() -> None:
    method test_batch_to_numpy_without_copy (line 718) | def test_batch_to_numpy_without_copy() -> None:
    method test_batch_from_to_numpy_without_copy (line 729) | def test_batch_from_to_numpy_without_copy() -> None:
    method test_batch_over_batch_to_torch (line 741) | def test_batch_over_batch_to_torch() -> None:
    method test_dist_to_atleast_2d (line 789) | def test_dist_to_atleast_2d(dist: Distribution, expected_batch_shape: ...
    method test_dist_to_atleast_2d_idempotent (line 814) | def test_dist_to_atleast_2d_idempotent(dist: Distribution) -> None:
    method test_batch_to_atleast_2d (line 820) | def test_batch_to_atleast_2d() -> None:
  class TestAssignment (line 829) | class TestAssignment:
    method test_assign_full_length_array (line 831) | def test_assign_full_length_array() -> None:
    method test_assign_subarray_existing_key (line 847) | def test_assign_subarray_existing_key() -> None:
    method test_assign_subarray_new_key (line 869) | def test_assign_subarray_new_key() -> None:
    method test_isnull (line 878) | def test_isnull() -> None:
    method test_hasnull (line 887) | def test_hasnull() -> None:
    method test_dropnull (line 896) | def test_dropnull() -> None:
  class TestSlicing (line 911) | class TestSlicing:
    method test_slice_distribution (line 914) | def test_slice_distribution() -> None:
    method test_getitem_with_int_gives_scalars (line 930) | def test_getitem_with_int_gives_scalars() -> None:
    method test_getitem_with_slice_gives_subslice (line 938) | def test_getitem_with_slice_gives_subslice(index: IndexType) -> None:
    method test_len_batch_with_dist (line 945) | def test_len_batch_with_dist() -> None:

FILE: test/base/test_buffer.py
  function test_replaybuffer (line 28) | def test_replaybuffer(size: int = 10, bufsize: int = 20) -> None:
  function test_ignore_obs_next (line 144) | def test_ignore_obs_next(size: int = 10) -> None:
  function test_stack (line 224) | def test_stack(size: int = 5, bufsize: int = 9, stack_num: int = 4, cach...
  function test_prioritized_replaybuffer (line 304) | def test_prioritized_replaybuffer(size: int = 32, bufsize: int = 15) -> ...
  function test_herreplaybuffer (line 360) | def test_herreplaybuffer(size: int = 10, bufsize: int = 100, sample_sz: ...
  function test_update (line 526) | def test_update() -> None:
  function test_segtree (line 553) | def test_segtree() -> None:
  function test_pickle (line 636) | def test_pickle() -> None:
  function test_hdf5 (line 680) | def test_hdf5() -> None:
  function test_replaybuffermanager (line 740) | def test_replaybuffermanager() -> None:
  function test_cachedbuffer (line 973) | def test_cachedbuffer() -> None:
  function test_multibuf_stack (line 1137) | def test_multibuf_stack() -> None:
  function test_multibuf_hdf5 (line 1334) | def test_multibuf_hdf5() -> None:
  function test_from_data (line 1410) | def test_from_data() -> None:
  function test_custom_key (line 1441) | def test_custom_key() -> None:
  function test_buffer_dropnull (line 1515) | def test_buffer_dropnull() -> None:
  function dummy_rollout_batch (line 1548) | def dummy_rollout_batch() -> RolloutBatchProtocol:
  function test_get_replay_buffer_indices (line 1564) | def test_get_replay_buffer_indices(dummy_rollout_batch: RolloutBatchProt...
  function test_get_vector_replay_buffer_indices (line 1573) | def test_get_vector_replay_buffer_indices(

FILE: test/base/test_collector.py
  class MaxActionPolicy (line 36) | class MaxActionPolicy(Policy):
    method __init__ (line 37) | def __init__(
    method forward (line 58) | def forward(
  function collector_with_single_env (line 84) | def collector_with_single_env() -> Collector[CollectStats]:
  function test_collector (line 93) | def test_collector() -> None:
  function async_collector_and_env_lens (line 258) | def async_collector_and_env_lens() -> tuple[AsyncCollector, list[int]]:
  class TestAsyncCollector (line 274) | class TestAsyncCollector:
    method test_collect_without_argument_gives_error (line 275) | def test_collect_without_argument_gives_error(
    method test_collect_one_episode_async (line 283) | def test_collect_one_episode_async(
    method test_enough_episodes_two_collection_cycles_n_episode_without_reset (line 291) | def test_enough_episodes_two_collection_cycles_n_episode_without_reset(
    method test_enough_episodes_two_collection_cycles_n_episode_with_reset (line 302) | def test_enough_episodes_two_collection_cycles_n_episode_with_reset(
    method test_enough_episodes_and_correct_obs_indices_and_obs_next_iterative_collection_cycles_n_episode (line 313) | def test_enough_episodes_and_correct_obs_indices_and_obs_next_iterativ...
    method test_enough_episodes_and_correct_obs_indices_and_obs_next_iterative_collection_cycles_n_step (line 335) | def test_enough_episodes_and_correct_obs_indices_and_obs_next_iterativ...
    method test_enough_episodes_and_correct_obs_indices_and_obs_next_iterative_collection_cycles_first_n_episode_then_n_step (line 356) | def test_enough_episodes_and_correct_obs_indices_and_obs_next_iterativ...
  function test_collector_with_dict_state (line 390) | def test_collector_with_dict_state() -> None:
  function test_collector_with_multi_agent (line 528) | def test_collector_with_multi_agent() -> None:
  function test_collector_with_atari_setting (line 670) | def test_collector_with_atari_setting() -> None:
  function test_collector_envpool_gym_reset_return_info (line 926) | def test_collector_envpool_gym_reset_return_info() -> None:
  function test_collector_with_vector_env (line 943) | def test_collector_with_vector_env() -> None:
  function test_async_collector_with_vector_env (line 967) | def test_async_collector_with_vector_env() -> None:
  class StepHookAddFieldToBatch (line 984) | class StepHookAddFieldToBatch(StepHook):
    method __call__ (line 985) | def __call__(
  class TestCollectStatsAndHooks (line 993) | class TestCollectStatsAndHooks:
    method test_on_step_hook (line 995) | def test_on_step_hook(collector_with_single_env: Collector) -> None:
    method test_episode_mc_hook (line 1006) | def test_episode_mc_hook(collector_with_single_env: Collector) -> None:

FILE: test/base/test_env.py
  function has_ray (line 32) | def has_ray() -> bool:
  function recurse_comp (line 41) | def recurse_comp(a: np.ndarray | list | tuple | dict, b: Any) -> np.bool...
  function test_async_env (line 55) | def test_async_env(size: int = 10000, num: int = 8, sleep: float = 0.1) ...
  function test_async_check_id (line 108) | def test_async_check_id(
  function test_vecenv (line 161) | def test_vecenv(size: int = 10, num: int = 8, sleep: float = 0.001) -> N...
  function test_attr_unwrapped (line 212) | def test_attr_unwrapped() -> None:
  function test_env_obs_dtype (line 219) | def test_env_obs_dtype() -> None:
  function test_env_reset_optional_kwargs (line 231) | def test_env_reset_optional_kwargs(size: int = 10000, num: int = 8) -> N...
  function test_venv_wrapper_gym (line 243) | def test_venv_wrapper_gym(num_envs: int = 4) -> None:
  function run_align_norm_obs (line 257) | def run_align_norm_obs(
  function test_venv_norm_obs (line 331) | def test_venv_norm_obs() -> None:
  function test_gym_wrappers (line 345) | def test_gym_wrappers() -> None:
  function test_venv_wrapper_envpool (line 396) | def test_venv_wrapper_envpool() -> None:
  function test_venv_wrapper_envpool_gym_reset_return_info (line 406) | def test_venv_wrapper_envpool_gym_reset_return_info() -> None:

FILE: test/base/test_env_finite.py
  class DummyDataset (line 25) | class DummyDataset(Dataset):
    method __init__ (line 26) | def __init__(self, length: int) -> None:
    method __getitem__ (line 30) | def __getitem__(self, index: int) -> tuple[int, int]:
    method __len__ (line 34) | def __len__(self) -> int:
  class FiniteEnv (line 38) | class FiniteEnv(gym.Env):
    method __init__ (line 39) | def __init__(self, dataset: Dataset, num_replicas: int | None, rank: i...
    method reset (line 50) | def reset(
    method step (line 66) | def step(self, action: int) -> tuple[int, float, bool, bool, dict[str,...
  class FiniteVectorEnv (line 78) | class FiniteVectorEnv(BaseVectorEnv):
    method __init__ (line 79) | def __init__(self, env_fns: Sequence[Callable[[], ENV_TYPE]], **kwargs...
    method _reset_alive_envs (line 87) | def _reset_alive_envs(self) -> None:
    method _set_default_obs (line 93) | def _set_default_obs(self, obs: np.ndarray) -> None:
    method _set_default_info (line 97) | def _set_default_info(self, info: dict) -> None:
    method _get_default_obs (line 101) | def _get_default_obs(self) -> np.ndarray | None:
    method _get_default_info (line 104) | def _get_default_info(self) -> dict | None:
    method reset (line 109) | def reset(
    method step (line 149) | def step(
  class FiniteDummyVectorEnv (line 198) | class FiniteDummyVectorEnv(FiniteVectorEnv, DummyVectorEnv):
  class FiniteSubprocVectorEnv (line 202) | class FiniteSubprocVectorEnv(FiniteVectorEnv, SubprocVectorEnv):
  class DummyPolicy (line 206) | class DummyPolicy(Policy):
    method __init__ (line 207) | def __init__(self) -> None:
    method forward (line 210) | def forward(
  function _finite_env_factory (line 219) | def _finite_env_factory(dataset: Dataset, num_replicas: int, rank: int) ...
  class MetricTracker (line 223) | class MetricTracker:
    method __init__ (line 224) | def __init__(self) -> None:
    method log (line 228) | def log(self, obs: Any, rew: float, terminated: bool, truncated: bool,...
    method validate (line 237) | def validate(self) -> None:
  function test_finite_dummy_vector_env (line 243) | def test_finite_dummy_vector_env() -> None:
  function test_finite_subproc_vector_env (line 259) | def test_finite_subproc_vector_env() -> None:

FILE: test/base/test_logger.py
  class TestTensorBoardLogger (line 10) | class TestTensorBoardLogger:
    method test_flatten_dict_basic (line 19) | def test_flatten_dict_basic(
    method test_flatten_dict_custom_delimiter (line 36) | def test_flatten_dict_custom_delimiter(
    method test_flatten_dict_exclude_arrays (line 57) | def test_flatten_dict_exclude_arrays(
    method test_flatten_dict_invalid_values_filtered_out (line 75) | def test_flatten_dict_invalid_values_filtered_out(

FILE: test/base/test_policy.py
  function _to_hashable (line 22) | def _to_hashable(x: np.ndarray | int) -> int | tuple[list]:
  function test_calculate_discounted_returns (line 26) | def test_calculate_discounted_returns() -> None:
  function algorithm (line 34) | def algorithm(request: pytest.FixtureRequest) -> PPO:
  class TestPolicyBasics (line 89) | class TestPolicyBasics:
    method test_get_action (line 90) | def test_get_action(self, algorithm: PPO) -> None:
    method test_random_policy_discrete_actions (line 107) | def test_random_policy_discrete_actions() -> None:
    method test_random_policy_continuous_actions (line 130) | def test_random_policy_continuous_actions() -> None:

FILE: test/base/test_returns.py
  function compute_episodic_return_base (line 11) | def compute_episodic_return_base(batch: Batch, gamma: float) -> Batch:
  function test_episodic_returns (line 23) | def test_episodic_returns(size: int = 2560) -> None:
  function target_q_fn (line 161) | def target_q_fn(buffer: ReplayBuffer, indices: np.ndarray) -> torch.Tensor:
  function target_q_fn_multidim (line 167) | def target_q_fn_multidim(buffer: ReplayBuffer, indices: np.ndarray) -> t...
  function compute_nstep_return_base (line 171) | def compute_nstep_return_base(
  function test_nstep_returns (line 197) | def test_nstep_returns(size: int = 10000) -> None:
  function test_nstep_returns_with_timelimit (line 278) | def test_nstep_returns_with_timelimit(size: int = 10000) -> None:

FILE: test/base/test_stats.py
  class DummyTrainingStatsWrapper (line 13) | class DummyTrainingStatsWrapper(TrainingStatsWrapper):
    method __init__ (line 14) | def __init__(self, wrapped_stats: TrainingStats, *, dummy_field: int) ...
  class TestStats (line 19) | class TestStats:
    method test_training_stats_wrapper (line 21) | def test_training_stats_wrapper() -> None:
    method test_collect_stats_update_at_step (line 69) | def test_collect_stats_update_at_step(

FILE: test/base/test_utils.py
  function test_noise (line 17) | def test_noise() -> None:
  function test_moving_average (line 26) | def test_moving_average() -> None:
  function test_rms (line 40) | def test_rms() -> None:
  function test_net (line 50) | def test_net() -> None:
  function test_in_eval_mode (line 114) | def test_in_eval_mode() -> None:
  function test_in_train_mode (line 122) | def test_in_train_mode() -> None:
  class TestCreateActionDistribution (line 130) | class TestCreateActionDistribution:
    method setup_class (line 132) | def setup_class(cls) -> None:
    method test_distribution_properties (line 146) | def test_distribution_properties(
    method test_distribution_uniformity (line 179) | def test_distribution_uniformity(
    method test_unsupported_space (line 199) | def test_unsupported_space(self) -> None:
    method test_batch_sizes (line 215) | def test_batch_sizes(

FILE: test/continuous/test_ddpg.py
  function get_args (line 24) | def get_args() -> argparse.Namespace:
  function test_ddpg (line 55) | def test_ddpg(args: argparse.Namespace = get_args(), enable_assertions: ...
  function test_ddpg_determinism (line 150) | def test_ddpg_determinism() -> None:

FILE: test/continuous/test_npg.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_npg (line 59) | def test_npg(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_npg_determinism (line 170) | def test_npg_determinism() -> None:

FILE: test/continuous/test_ppo.py
  function get_args (line 24) | def get_args() -> argparse.Namespace:
  function test_ppo (line 63) | def test_ppo(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_ppo_resume (line 196) | def test_ppo_resume(args: argparse.Namespace = get_args()) -> None:
  function test_ppo_determinism (line 201) | def test_ppo_determinism() -> None:

FILE: test/continuous/test_redq.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_redq (line 61) | def test_redq(args: argparse.Namespace = get_args(), enable_assertions: ...
  function test_redq_determinism (line 178) | def test_redq_determinism() -> None:

FILE: test/continuous/test_sac_with_il.py
  function get_args (line 33) | def get_args() -> argparse.Namespace:
  function test_sac_with_il (line 68) | def test_sac_with_il(
  function test_sac_determinism (line 237) | def test_sac_determinism() -> None:

FILE: test/continuous/test_td3.py
  function get_args (line 24) | def get_args() -> argparse.Namespace:
  function test_td3 (line 57) | def test_td3(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_td3_determinism (line 166) | def test_td3_determinism() -> None:

FILE: test/continuous/test_trpo.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_trpo (line 62) | def test_trpo(args: argparse.Namespace = get_args(), enable_assertions: ...
  function test_trpo_determinism (line 172) | def test_trpo_determinism() -> None:

FILE: test/determinism_test.py
  class TorchDeterministicModeContext (line 12) | class TorchDeterministicModeContext:
    method __init__ (line 13) | def __init__(self, mode: str | int = "default") -> None:
    method __enter__ (line 17) | def __enter__(self) -> None:
    method __exit__ (line 21) | def __exit__(self, exc_type, exc_value, traceback):  # type: ignore
  class AlgorithmDeterminismTest (line 26) | class AlgorithmDeterminismTest:
    method __init__ (line 60) | def __init__(
    method run (line 101) | def run(self, update_snapshot: bool = False) -> None:

FILE: test/discrete/test_a2c_with_il.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_a2c_with_il (line 65) | def test_a2c_with_il(
  function test_ppo_determinism (line 220) | def test_ppo_determinism() -> None:

FILE: test/discrete/test_bdqn.py
  function get_args (line 18) | def get_args() -> argparse.Namespace:
  function test_bdq (line 54) | def test_bdq(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_bdq_determinism (line 158) | def test_bdq_determinism() -> None:

FILE: test/discrete/test_c51.py
  function get_args (line 30) | def get_args() -> argparse.Namespace:
  function test_c51 (line 68) | def test_c51(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_c51_resume (line 219) | def test_c51_resume(args: argparse.Namespace = get_args()) -> None:
  function test_pc51 (line 224) | def test_pc51(args: argparse.Namespace = get_args()) -> None:
  function test_c51_determinism (line 231) | def test_c51_determinism() -> None:

FILE: test/discrete/test_discrete_sac.py
  function get_args (line 26) | def get_args() -> argparse.Namespace:
  function test_discrete_sac (line 58) | def test_discrete_sac(
  function test_discrete_sac_determinism (line 164) | def test_discrete_sac_determinism() -> None:

FILE: test/discrete/test_dqn.py
  function get_args (line 29) | def get_args() -> argparse.Namespace:
  function test_dqn (line 62) | def test_dqn(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_dqn_determinism (line 176) | def test_dqn_determinism() -> None:
  function test_pdqn (line 181) | def test_pdqn(args: argparse.Namespace = get_args()) -> None:

FILE: test/discrete/test_drqn.py
  function get_args (line 23) | def get_args() -> argparse.Namespace:
  function test_drqn (line 54) | def test_drqn(args: argparse.Namespace = get_args(), enable_assertions: ...
  function test_drqn_determinism (line 152) | def test_drqn_determinism() -> None:

FILE: test/discrete/test_fqf.py
  function get_args (line 30) | def get_args() -> argparse.Namespace:
  function test_fqf (line 67) | def test_fqf(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_pfqf (line 191) | def test_pfqf(args: argparse.Namespace = get_args()) -> None:
  function test_fqf_determinism (line 197) | def test_fqf_determinism() -> None:

FILE: test/discrete/test_iqn.py
  function get_args (line 30) | def get_args() -> argparse.Namespace:
  function test_iqn (line 67) | def test_iqn(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_piqn (line 187) | def test_piqn(args: argparse.Namespace = get_args()) -> None:
  function test_iqn_determinism (line 193) | def test_iqn_determinism() -> None:

FILE: test/discrete/test_ppo_discrete.py
  function get_args (line 29) | def get_args() -> argparse.Namespace:
  function test_ppo (line 66) | def test_ppo(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_ppo_determinism (line 171) | def test_ppo_determinism() -> None:

FILE: test/discrete/test_qrdqn.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_qrdqn (line 62) | def test_qrdqn(args: argparse.Namespace = get_args(), enable_assertions:...
  function test_pqrdqn (line 182) | def test_pqrdqn(args: argparse.Namespace = get_args()) -> None:
  function test_qrdqn_determinism (line 188) | def test_qrdqn_determinism() -> None:

FILE: test/discrete/test_rainbow.py
  function get_args (line 30) | def get_args() -> argparse.Namespace:
  function test_rainbow (line 70) | def test_rainbow(args: argparse.Namespace = get_args(), enable_assertion...
  function test_rainbow_resume (line 238) | def test_rainbow_resume(args: argparse.Namespace = get_args()) -> None:
  function test_prainbow (line 243) | def test_prainbow(args: argparse.Namespace = get_args()) -> None:
  function test_rainbow_determinism (line 250) | def test_rainbow_determinism() -> None:

FILE: test/discrete/test_reinforce.py
  function get_args (line 23) | def get_args() -> argparse.Namespace:
  function test_reinforce (line 50) | def test_reinforce(args: argparse.Namespace = get_args(), enable_asserti...
  function test_reinforce_determinism (line 140) | def test_reinforce_determinism() -> None:

FILE: test/highlevel/env_factory.py
  class DiscreteTestEnvFactory (line 7) | class DiscreteTestEnvFactory(EnvFactoryRegistered):
    method __init__ (line 8) | def __init__(self) -> None:
  class ContinuousTestEnvFactory (line 15) | class ContinuousTestEnvFactory(EnvFactoryRegistered):
    method __init__ (line 16) | def __init__(self) -> None:

FILE: test/highlevel/test_experiment_builder.py
  function create_training_config (line 27) | def create_training_config(
  function test_experiment_builder_continuous_default_params (line 66) | def test_experiment_builder_continuous_default_params(
  function test_experiment_builder_discrete_default_params (line 99) | def test_experiment_builder_discrete_default_params(

FILE: test/modelbased/test_dqn_icm.py
  function get_args (line 26) | def get_args() -> argparse.Namespace:
  function test_dqn_icm (line 77) | def test_dqn_icm(args: argparse.Namespace = get_args()) -> None:

FILE: test/modelbased/test_ppo_icm.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_ppo (line 83) | def test_ppo(args: argparse.Namespace = get_args()) -> None:

FILE: test/modelbased/test_psrl.py
  function get_args (line 21) | def get_args() -> argparse.Namespace:
  function test_psrl (line 52) | def test_psrl(args: argparse.Namespace = get_args()) -> None:

FILE: test/offline/gather_cartpole_data.py
  function expert_file_name (line 27) | def expert_file_name() -> str:
  function get_args (line 31) | def get_args() -> argparse.Namespace:
  function gather_data (line 66) | def gather_data() -> VectorReplayBuffer | PrioritizedVectorReplayBuffer:

FILE: test/offline/gather_pendulum_data.py
  function expert_file_name (line 23) | def expert_file_name() -> str:
  function get_args (line 27) | def get_args() -> argparse.Namespace:
  function gather_data (line 68) | def gather_data() -> VectorReplayBuffer:

FILE: test/offline/test_bcq.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_bcq (line 66) | def test_bcq(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_bcq_determinism (line 212) | def test_bcq_determinism() -> None:

FILE: test/offline/test_cql.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_cql (line 70) | def test_cql(args: argparse.Namespace = get_args(), enable_assertions: b...
  function test_cql_determinism (line 203) | def test_cql_determinism() -> None:

FILE: test/offline/test_discrete_bcq.py
  function get_args (line 29) | def get_args() -> argparse.Namespace:
  function test_discrete_bcq (line 59) | def test_discrete_bcq(
  function test_discrete_bcq_resume (line 179) | def test_discrete_bcq_resume(args: argparse.Namespace = get_args()) -> N...
  function test_discrete_bcq_determinism (line 185) | def test_discrete_bcq_determinism() -> None:

FILE: test/offline/test_discrete_cql.py
  function get_args (line 28) | def get_args() -> argparse.Namespace:
  function test_discrete_cql (line 56) | def test_discrete_cql(
  function test_discrete_cql_determinism (line 146) | def test_discrete_cql_determinism() -> None:

FILE: test/offline/test_discrete_crr.py
  function get_args (line 29) | def get_args() -> argparse.Namespace:
  function test_discrete_crr (line 54) | def test_discrete_crr(
  function test_discrete_crr_determinism (line 147) | def test_discrete_crr_determinism() -> None:

FILE: test/offline/test_gail.py
  function get_args (line 25) | def get_args() -> argparse.Namespace:
  function test_gail (line 67) | def test_gail(args: argparse.Namespace = get_args(), enable_assertions: ...
  function test_gail_determinism (line 228) | def test_gail_determinism() -> None:

FILE: test/offline/test_td3_bc.py
  function get_args (line 27) | def get_args() -> argparse.Namespace:
  function test_td3_bc (line 67) | def test_td3_bc(args: argparse.Namespace = get_args(), enable_assertions...
  function test_td3_bc_determinism (line 193) | def test_td3_bc_determinism() -> None:

FILE: test/pettingzoo/pistonball.py
  function get_parser (line 23) | def get_parser() -> argparse.ArgumentParser:
  function get_args (line 69) | def get_args() -> argparse.Namespace:
  function get_env (line 74) | def get_env(args: argparse.Namespace = get_args()) -> PettingZooEnv:
  function get_agents (line 78) | def get_agents(
  function train_agent (line 125) | def train_agent(
  function watch (line 186) | def watch(args: argparse.Namespace = get_args(), policy: Algorithm | Non...

FILE: test/pettingzoo/pistonball_continuous.py
  class DQNet (line 29) | class DQNet(ModuleWithVectorOutput):
    method __init__ (line 32) | def __init__(
    method forward (line 57) | def forward(
  function get_parser (line 70) | def get_parser() -> argparse.ArgumentParser:
  function get_args (line 132) | def get_args() -> argparse.Namespace:
  function get_env (line 137) | def get_env(args: argparse.Namespace = get_args()) -> PettingZooEnv:
  function get_agents (line 141) | def get_agents(
  function train_agent (line 227) | def train_agent(
  function watch (line 289) | def watch(args: argparse.Namespace = get_args(), policy: Algorithm | Non...

FILE: test/pettingzoo/test_pistonball.py
  function test_piston_ball (line 8) | def test_piston_ball(args: argparse.Namespace = get_args()) -> None:

FILE: test/pettingzoo/test_pistonball_continuous.py
  function test_piston_ball_continuous (line 8) | def test_piston_ball_continuous(args: argparse.Namespace = get_args()) -...

FILE: test/pettingzoo/test_tic_tac_toe.py
  function test_tic_tac_toe (line 6) | def test_tic_tac_toe(args: argparse.Namespace = get_args()) -> None:

FILE: test/pettingzoo/tic_tac_toe.py
  function get_env (line 30) | def get_env(render_mode: str | None = None) -> PettingZooEnv:
  function get_parser (line 34) | def get_parser() -> argparse.ArgumentParser:
  function get_args (line 97) | def get_args() -> argparse.Namespace:
  function get_agents (line 102) | def get_agents(
  function train_agent (line 158) | def train_agent(
  function watch (line 232) | def watch(

FILE: tianshou/__init__.py
  function _register_log_config_callback (line 8) | def _register_log_config_callback() -> None:

FILE: tianshou/algorithm/algorithm_base.py
  class TrainingStats (line 64) | class TrainingStats(DataclassPPrintMixin):
    method _get_self_dict (line 75) | def _get_self_dict(self) -> dict[str, Any]:
    method get_loss_stats_dict (line 78) | def get_loss_stats_dict(self) -> dict[str, float]:
  class TrainingStatsWrapper (line 99) | class TrainingStatsWrapper(TrainingStats):
    method __init__ (line 103) | def __init__(self, wrapped_stats: TrainingStats) -> None:
    method _get_self_dict (line 117) | def _get_self_dict(self) -> dict[str, Any]:
    method wrapped_stats (line 121) | def wrapped_stats(self) -> TrainingStats:
    method __getattr__ (line 124) | def __getattr__(self, name: str) -> Any:
    method __setattr__ (line 127) | def __setattr__(self, name: str, value: Any) -> None:
  class Policy (line 159) | class Policy(nn.Module, ABC):
    method __init__ (line 162) | def __init__(
    method action_type (line 242) | def action_type(self) -> Literal["discrete", "continuous"]:
    method _action_to_numpy (line 246) | def _action_to_numpy(act: TArr) -> np.ndarray:
    method map_action (line 254) | def map_action(
    method map_action_inverse (line 289) | def map_action_inverse(
    method compute_action (line 317) | def compute_action(
    method _compile (line 343) | def _compile() -> None:
    method add_exploration_noise (line 354) | def add_exploration_noise(
  class LaggedNetworkAlgorithmMixin (line 375) | class LaggedNetworkAlgorithmMixin(ABC):
    method __init__ (line 381) | def __init__(self) -> None:
    method _add_lagged_network (line 384) | def _add_lagged_network(self, src: torch.nn.Module) -> EvalModeModuleW...
    method _update_lagged_network_weights (line 397) | def _update_lagged_network_weights(self) -> None:
  class LaggedNetworkFullUpdateAlgorithmMixin (line 401) | class LaggedNetworkFullUpdateAlgorithmMixin(LaggedNetworkAlgorithmMixin):
    method _update_lagged_network_weights (line 407) | def _update_lagged_network_weights(self) -> None:
  class LaggedNetworkPolyakUpdateAlgorithmMixin (line 411) | class LaggedNetworkPolyakUpdateAlgorithmMixin(LaggedNetworkAlgorithmMixin):
    method __init__ (line 418) | def __init__(self, tau: float) -> None:
    method _update_lagged_network_weights (line 426) | def _update_lagged_network_weights(self) -> None:
  class Algorithm (line 434) | class Algorithm(torch.nn.Module, Generic[TPolicy, TTrainerParams], ABC):
    method __init__ (line 445) | def __init__(
    class Optimizer (line 461) | class Optimizer:
      method __init__ (line 464) | def __init__(
      method step (line 484) | def step(
      method state_dict (line 502) | def state_dict(self) -> dict:
      method load_state_dict (line 506) | def load_state_dict(self, state_dict: dict) -> None:
    method _create_optimizer (line 510) | def _create_optimizer(
    method state_dict (line 523) | def state_dict(self, *args, destination=None, prefix="", keep_vars=Fal...
    method load_state_dict (line 533) | def load_state_dict(
    method _preprocess_batch (line 545) | def _preprocess_batch(
    method _postprocess_batch (line 562) | def _postprocess_batch(
    method _update (line 586) | def _update(
    method value_mask (line 634) | def value_mask(buffer: ReplayBuffer, indices: np.ndarray) -> np.ndarray:
    method compute_episodic_return (line 654) | def compute_episodic_return(
    method compute_nstep_return (line 722) | def compute_nstep_return(
    method create_trainer (line 820) | def create_trainer(self, params: TTrainerParams) -> "Trainer":
    method run_training (line 823) | def run_training(self, params: TTrainerParams) -> "InfoStats":
  class OnPolicyAlgorithm (line 828) | class OnPolicyAlgorithm(
    method create_trainer (line 835) | def create_trainer(self, params: "OnPolicyTrainerParams") -> "OnPolicy...
    method _update_with_batch (line 841) | def _update_with_batch(
    method update (line 854) | def update(
  class OffPolicyAlgorithm (line 868) | class OffPolicyAlgorithm(
    method create_trainer (line 875) | def create_trainer(self, params: "OffPolicyTrainerParams") -> "OffPoli...
    method _update_with_batch (line 881) | def _update_with_batch(
    method update (line 893) | def update(
  class OfflineAlgorithm (line 906) | class OfflineAlgorithm(
    method process_buffer (line 913) | def process_buffer(self, buffer: TBuffer) -> TBuffer:
    method run_training (line 917) | def run_training(self, params: "OfflineTrainerParams") -> "InfoStats":
    method create_trainer (line 923) | def create_trainer(self, params: "OfflineTrainerParams") -> "OfflineTr...
    method _update_with_batch (line 929) | def _update_with_batch(
    method update (line 941) | def update(
  class OnPolicyWrapperAlgorithm (line 954) | class OnPolicyWrapperAlgorithm(
    method __init__ (line 966) | def __init__(
    method _preprocess_batch (line 973) | def _preprocess_batch(
    method _postprocess_batch (line 982) | def _postprocess_batch(
    method _update_with_batch (line 991) | def _update_with_batch(
    method _wrapper_update_with_batch (line 1001) | def _wrapper_update_with_batch(
  class OffPolicyWrapperAlgorithm (line 1011) | class OffPolicyWrapperAlgorithm(
    method __init__ (line 1023) | def __init__(
    method _preprocess_batch (line 1030) | def _preprocess_batch(
    method _postprocess_batch (line 1039) | def _postprocess_batch(
    method _update_with_batch (line 1048) | def _update_with_batch(
    method _wrapper_update_with_batch (line 1057) | def _wrapper_update_with_batch(
  class RandomActionPolicy (line 1063) | class RandomActionPolicy(Policy):
    method __init__ (line 1064) | def __init__(
    method forward (line 1075) | def forward(
  function _gae (line 1086) | def _gae(
  function episode_mc_return_to_go (line 1144) | def episode_mc_return_to_go(rewards: np.ndarray, gamma: float = 0.99) ->...
  function _nstep_return (line 1161) | def _nstep_return(

FILE: tianshou/algorithm/imitation/bcq.py
  class BCQTrainingStats (line 24) | class BCQTrainingStats(TrainingStats):
  class BCQPolicy (line 34) | class BCQPolicy(Policy):
    method __init__ (line 35) | def __init__(
    method forward (line 91) | def forward(
  class BCQ (line 119) | class BCQ(
    method __init__ (line 125) | def __init__(
    method _update_with_batch (line 188) | def _update_with_batch(

FILE: tianshou/algorithm/imitation/cql.py
  class CQLTrainingStats (line 24) | class CQLTrainingStats(SACTrainingStats):
  class CQL (line 32) | class CQL(OfflineAlgorithm[SACPolicy], LaggedNetworkPolyakUpdateAlgorith...
    method __init__ (line 35) | def __init__(
    method _policy_pred (line 203) | def _policy_pred(self, obs: torch.Tensor) -> tuple[torch.Tensor, torch...
    method _calc_policy_loss (line 208) | def _calc_policy_loss(self, obs: torch.Tensor) -> tuple[torch.Tensor, ...
    method _calc_pi_values (line 218) | def _calc_pi_values(
    method _calc_random_values (line 230) | def _calc_random_values(
    method process_buffer (line 244) | def process_buffer(self, buffer: TBuffer) -> TBuffer:
    method _update_with_batch (line 268) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> CQLTraini...

FILE: tianshou/algorithm/imitation/discrete_bcq.py
  class DiscreteBCQTrainingStats (line 31) | class DiscreteBCQTrainingStats(SimpleLossTrainingStats):
  class DiscreteBCQPolicy (line 37) | class DiscreteBCQPolicy(DiscreteQLearningPolicy):
    method __init__ (line 38) | def __init__(
    method forward (line 104) | def forward(
  class DiscreteBCQ (line 130) | class DiscreteBCQ(
    method __init__ (line 136) | def __init__(
    method _preprocess_batch (line 213) | def _preprocess_batch(
    method _target_q (line 228) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _update_with_batch (line 236) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/imitation/discrete_cql.py
  class DiscreteCQLTrainingStats (line 17) | class DiscreteCQLTrainingStats(SimpleLossTrainingStats):
  class DiscreteCQL (line 23) | class DiscreteCQL(OfflineAlgorithm[QRDQNPolicy], QRDQN[QRDQNPolicy]):  #...
    method __init__ (line 26) | def __init__(
    method _update_with_batch (line 80) | def _update_with_batch(

FILE: tianshou/algorithm/imitation/discrete_crr.py
  class DiscreteCRRTrainingStats (line 27) | class DiscreteCRRTrainingStats(SimpleLossTrainingStats):
  class DiscreteCRR (line 33) | class DiscreteCRR(
    method __init__ (line 39) | def __init__(
    method _preprocess_batch (line 113) | def _preprocess_batch(
    method _update_with_batch (line 125) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/imitation/gail.py
  class GailTrainingStats (line 25) | class GailTrainingStats(A2CTrainingStats):
  class GAIL (line 31) | class GAIL(PPO):
    method __init__ (line 34) | def __init__(
    method _preprocess_batch (line 193) | def _preprocess_batch(
    method disc (line 208) | def disc(self, batch: RolloutBatchProtocol) -> torch.Tensor:
    method _update_with_batch (line 214) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/imitation/imitation_base.py
  class ImitationTrainingStats (line 33) | class ImitationTrainingStats(TrainingStats):
  class ImitationPolicy (line 37) | class ImitationPolicy(Policy):
    method __init__ (line 38) | def __init__(
    method forward (line 85) | def forward(
  class ImitationLearningAlgorithmMixin (line 108) | class ImitationLearningAlgorithmMixin:
    method _imitation_update (line 109) | def _imitation_update(
  class OffPolicyImitationLearning (line 130) | class OffPolicyImitationLearning(
    method __init__ (line 136) | def __init__(
    method _update_with_batch (line 151) | def _update_with_batch(
  class OfflineImitationLearning (line 158) | class OfflineImitationLearning(
    method __init__ (line 164) | def __init__(
    method _update_with_batch (line 179) | def _update_with_batch(

FILE: tianshou/algorithm/imitation/td3_bc.py
  class TD3BC (line 14) | class TD3BC(OfflineAlgorithm[ContinuousDeterministicPolicy], TD3):  # ty...
    method __init__ (line 17) | def __init__(
    method _update_with_batch (line 102) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> TD3Traini...

FILE: tianshou/algorithm/modelbased/icm.py
  class ICMTrainingStats (line 22) | class ICMTrainingStats(TrainingStatsWrapper):
    method __init__ (line 23) | def __init__(
  class _ICMMixin (line 37) | class _ICMMixin:
    method __init__ (line 40) | def __init__(
    method _icm_preprocess_batch (line 77) | def _icm_preprocess_batch(
    method _icm_postprocess_batch (line 86) | def _icm_postprocess_batch(batch: BatchProtocol) -> None:
    method _icm_update (line 90) | def _icm_update(
  class ICMOffPolicyWrapper (line 112) | class ICMOffPolicyWrapper(OffPolicyWrapperAlgorithm[TPolicy], _ICMMixin):
    method __init__ (line 115) | def __init__(
    method _preprocess_batch (line 161) | def _preprocess_batch(
    method _postprocess_batch (line 170) | def _postprocess_batch(
    method _wrapper_update_with_batch (line 179) | def _wrapper_update_with_batch(
  class ICMOnPolicyWrapper (line 187) | class ICMOnPolicyWrapper(OnPolicyWrapperAlgorithm[TPolicy], _ICMMixin):
    method __init__ (line 190) | def __init__(
    method _preprocess_batch (line 236) | def _preprocess_batch(
    method _postprocess_batch (line 245) | def _postprocess_batch(
    method _wrapper_update_with_batch (line 254) | def _wrapper_update_with_batch(

FILE: tianshou/algorithm/modelbased/psrl.py
  class PSRLTrainingStats (line 19) | class PSRLTrainingStats(TrainingStats):
  class PSRLModel (line 24) | class PSRLModel:
    method __init__ (line 27) | def __init__(
    method observe (line 65) | def observe(
    method sample_trans_prob (line 100) | def sample_trans_prob(self) -> np.ndarray:
    method sample_reward (line 103) | def sample_reward(self) -> np.ndarray:
    method solve_policy (line 106) | def solve_policy(self) -> None:
    method value_iteration (line 117) | def value_iteration(
    method __call__ (line 152) | def __call__(
  class PSRLPolicy (line 163) | class PSRLPolicy(Policy):
    method __init__ (line 164) | def __init__(
    method forward (line 200) | def forward(
  class PSRL (line 217) | class PSRL(OnPolicyAlgorithm[PSRLPolicy]):
    method __init__ (line 223) | def __init__(
    method _update_with_batch (line 245) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/a2c.py
  class A2CTrainingStats (line 24) | class A2CTrainingStats(TrainingStats):
  class ActorCriticOnPolicyAlgorithm (line 32) | class ActorCriticOnPolicyAlgorithm(OnPolicyAlgorithm[ProbabilisticActorP...
    method __init__ (line 35) | def __init__(
    method _add_returns_and_advantages (line 115) | def _add_returns_and_advantages(
  class A2C (line 156) | class A2C(ActorCriticOnPolicyAlgorithm):
    method __init__ (line 159) | def __init__(
    method _preprocess_batch (line 239) | def _preprocess_batch(
    method _update_with_batch (line 249) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/modelfree/bdqn.py
  class BDQNPolicy (line 29) | class BDQNPolicy(DiscreteQLearningPolicy[BranchingNet]):
    method __init__ (line 30) | def __init__(
    method forward (line 63) | def forward(
    method add_exploration_noise (line 80) | def add_exploration_noise(
  class BDQN (line 106) | class BDQN(QLearningOffPolicyAlgorithm[BDQNPolicy]):
    method __init__ (line 109) | def __init__(
    method _target_q (line 155) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _compute_return (line 173) | def _compute_return(
    method _preprocess_batch (line 197) | def _preprocess_batch(
    method _update_with_batch (line 206) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/modelfree/c51.py
  class C51Policy (line 16) | class C51Policy(DiscreteQLearningPolicy):
    method __init__ (line 17) | def __init__(
    method compute_q_value (line 66) | def compute_q_value(self, logits: torch.Tensor, mask: np.ndarray | Non...
  class C51 (line 70) | class C51(QLearningOffPolicyAlgorithm[C51Policy]):
    method __init__ (line 73) | def __init__(
    method _target_q (line 120) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _target_dist (line 123) | def _target_dist(self, batch: RolloutBatchProtocol) -> torch.Tensor:
    method _update_with_batch (line 143) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/ddpg.py
  class DDPGTrainingStats (line 40) | class DDPGTrainingStats(TrainingStats):
  class ContinuousPolicyWithExplorationNoise (line 45) | class ContinuousPolicyWithExplorationNoise(Policy, ABC):
    method __init__ (line 46) | def __init__(
    method set_exploration_noise (line 97) | def set_exploration_noise(self, noise: BaseNoise | None) -> None:
    method add_exploration_noise (line 101) | def add_exploration_noise(
  class ContinuousDeterministicPolicy (line 114) | class ContinuousDeterministicPolicy(ContinuousPolicyWithExplorationNoise):
    method __init__ (line 117) | def __init__(
    method forward (line 173) | def forward(
  class ActorCriticOffPolicyAlgorithm (line 196) | class ActorCriticOffPolicyAlgorithm(
    method __init__ (line 217) | def __init__(
    method _minimize_critic_squared_loss (line 267) | def _minimize_critic_squared_loss(
    method _preprocess_batch (line 287) | def _preprocess_batch(
    method _target_q_compute_action (line 304) | def _target_q_compute_action(self, obs_batch: Batch) -> TActBatchProto...
    method _target_q_compute_value (line 314) | def _target_q_compute_value(
    method _target_q (line 327) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
  class DDPG (line 342) | class DDPG(
    method __init__ (line 347) | def __init__(
    method _target_q_compute_action (line 397) | def _target_q_compute_action(self, obs_batch: Batch) -> ActBatchProtocol:
    method _update_with_batch (line 401) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> DDPGTrain...

FILE: tianshou/algorithm/modelfree/discrete_sac.py
  class DiscreteSACTrainingStats (line 24) | class DiscreteSACTrainingStats(SACTrainingStats):
  class DiscreteSACPolicy (line 31) | class DiscreteSACPolicy(Policy):
    method __init__ (line 32) | def __init__(
    method forward (line 67) | def forward(
  class DiscreteSAC (line 83) | class DiscreteSAC(ActorDualCriticsOffPolicyAlgorithm[DiscreteSACPolicy, ...
    method __init__ (line 86) | def __init__(
    method _target_q_compute_value (line 147) | def _target_q_compute_value(
    method _update_with_batch (line 157) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> TDiscrete...

FILE: tianshou/algorithm/modelfree/dqn.py
  class DiscreteQLearningPolicy (line 39) | class DiscreteQLearningPolicy(Policy, Generic[TModel]):
    method __init__ (line 40) | def __init__(
    method set_eps_training (line 76) | def set_eps_training(self, eps: float) -> None:
    method set_eps_inference (line 88) | def set_eps_inference(self, eps: float) -> None:
    method forward (line 101) | def forward(
    method compute_q_value (line 145) | def compute_q_value(self, logits: torch.Tensor, mask: np.ndarray | Non...
    method add_exploration_noise (line 153) | def add_exploration_noise(
  class QLearningOffPolicyAlgorithm (line 180) | class QLearningOffPolicyAlgorithm(
    method __init__ (line 190) | def __init__(
    method _create_policy_optimizer (line 246) | def _create_policy_optimizer(self, optim: OptimizerFactory) -> Algorit...
    method use_target_network (line 250) | def use_target_network(self) -> bool:
    method _target_q (line 254) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _preprocess_batch (line 257) | def _preprocess_batch(
    method _periodically_update_lagged_network_weights (line 277) | def _periodically_update_lagged_network_weights(self) -> None:
  class DQN (line 288) | class DQN(
    method __init__ (line 300) | def __init__(
    method _target_q (line 365) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _update_with_batch (line 381) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/fqf.py
  class FQFTrainingStats (line 21) | class FQFTrainingStats(SimpleLossTrainingStats):
  class FQFPolicy (line 27) | class FQFPolicy(QRDQNPolicy):
    method __init__ (line 28) | def __init__(
    method forward (line 66) | def forward(  # type: ignore
  class FQF (line 109) | class FQF(QRDQN[FQFPolicy]):
    method __init__ (line 112) | def __init__(
    method _create_policy_optimizer (line 173) | def _create_policy_optimizer(self, optim: OptimizerFactory) -> Algorit...
    method _target_q (line 178) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _update_with_batch (line 195) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/iqn.py
  class IQNPolicy (line 21) | class IQNPolicy(QRDQNPolicy):
    method __init__ (line 22) | def __init__(
    method forward (line 72) | def forward(
  class IQN (line 103) | class IQN(QRDQN[IQNPolicy]):
    method __init__ (line 106) | def __init__(
    method _update_with_batch (line 156) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/npg.py
  class NPGTrainingStats (line 21) | class NPGTrainingStats(TrainingStats):
  class NPG (line 27) | class NPG(ActorCriticOnPolicyAlgorithm):
    method __init__ (line 33) | def __init__(
    method _preprocess_batch (line 123) | def _preprocess_batch(
    method _update_with_batch (line 140) | def _update_with_batch(  # type: ignore[override]
    method _MVP (line 195) | def _MVP(self, v: torch.Tensor, flat_kl_grad: torch.Tensor) -> torch.T...
    method _conjugate_gradients (line 202) | def _conjugate_gradients(
    method _get_flat_grad (line 226) | def _get_flat_grad(self, y: torch.Tensor, model: nn.Module, **kwargs: ...
    method _set_from_flat_params (line 230) | def _set_from_flat_params(self, model: nn.Module, flat_params: torch.T...

FILE: tianshou/algorithm/modelfree/ppo.py
  class PPO (line 16) | class PPO(A2C):
    method __init__ (line 19) | def __init__(
    method _preprocess_batch (line 146) | def _preprocess_batch(
    method _update_with_batch (line 164) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/modelfree/qrdqn.py
  class QRDQNPolicy (line 18) | class QRDQNPolicy(DiscreteQLearningPolicy):
    method compute_q_value (line 19) | def compute_q_value(self, logits: torch.Tensor, mask: np.ndarray | Non...
  class QRDQN (line 26) | class QRDQN(
    method __init__ (line 32) | def __init__(
    method _target_q (line 94) | def _target_q(self, buffer: ReplayBuffer, indices: np.ndarray) -> torc...
    method _update_with_batch (line 108) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/rainbow.py
  class RainbowTrainingStats (line 14) | class RainbowTrainingStats:
  class RainbowDQN (line 18) | class RainbowDQN(C51):
    method __init__ (line 21) | def __init__(
    method _sample_noise (line 77) | def _sample_noise(model: nn.Module) -> bool:
    method _update_with_batch (line 93) | def _update_with_batch(

FILE: tianshou/algorithm/modelfree/redq.py
  class REDQTrainingStats (line 27) | class REDQTrainingStats(DDPGTrainingStats):
  class REDQPolicy (line 37) | class REDQPolicy(ContinuousPolicyWithExplorationNoise):
    method __init__ (line 38) | def __init__(
    method forward (line 103) | def forward(  # type: ignore
  class REDQ (line 134) | class REDQ(ActorCriticOffPolicyAlgorithm[REDQPolicy, DistLogProbBatchPro...
    method __init__ (line 137) | def __init__(
    method _target_q_compute_value (line 254) | def _target_q_compute_value(
    method _update_with_batch (line 271) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> REDQTrain...

FILE: tianshou/algorithm/modelfree/reinforce.py
  class LossSequenceTrainingStats (line 59) | class LossSequenceTrainingStats(TrainingStats):
  class SimpleLossTrainingStats (line 64) | class SimpleLossTrainingStats(TrainingStats):
  class ProbabilisticActorPolicy (line 68) | class ProbabilisticActorPolicy(Policy):
    method __init__ (line 74) | def __init__(
    method forward (line 167) | def forward(
  class DiscreteActorPolicy (line 195) | class DiscreteActorPolicy(ProbabilisticActorPolicy):
    method __init__ (line 196) | def __init__(
  class DiscountedReturnComputation (line 249) | class DiscountedReturnComputation:
    method __init__ (line 250) | def __init__(
    method add_discounted_returns (line 273) | def add_discounted_returns(
  class Reinforce (line 315) | class Reinforce(OnPolicyAlgorithm[ProbabilisticActorPolicy]):
    method __init__ (line 318) | def __init__(
    method _preprocess_batch (line 349) | def _preprocess_batch(
    method _update_with_batch (line 363) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/modelfree/sac.py
  function correct_log_prob_gaussian_tanh (line 25) | def correct_log_prob_gaussian_tanh(
  class SACTrainingStats (line 43) | class SACTrainingStats(TrainingStats):
  class SACPolicy (line 54) | class SACPolicy(ContinuousPolicyWithExplorationNoise):
    method __init__ (line 55) | def __init__(
    method forward (line 108) | def forward(  # type: ignore
  class Alpha (line 134) | class Alpha(ABC):
    method from_float_or_instance (line 138) | def from_float_or_instance(alpha: Union[float, "Alpha"]) -> "Alpha":
    method value (line 148) | def value(self) -> float:
    method update (line 152) | def update(self, entropy: torch.Tensor) -> float | None:
  class FixedAlpha (line 162) | class FixedAlpha(Alpha):
    method __init__ (line 165) | def __init__(self, alpha: float):
    method value (line 169) | def value(self) -> float:
    method update (line 172) | def update(self, entropy: torch.Tensor) -> float | None:
  class AutoAlpha (line 176) | class AutoAlpha(torch.nn.Module, Alpha):
    method __init__ (line 179) | def __init__(self, target_entropy: float, log_alpha: float, optim: Opt...
    method value (line 200) | def value(self) -> float:
    method update (line 203) | def update(self, entropy: torch.Tensor) -> float:
  class SAC (line 212) | class SAC(
    method __init__ (line 218) | def __init__(
    method _check_field_validity (line 291) | def _check_field_validity(self) -> None:
    method _target_q_compute_value (line 298) | def _target_q_compute_value(
    method _update_with_batch (line 304) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> TSACTrain...

FILE: tianshou/algorithm/modelfree/td3.py
  class TD3TrainingStats (line 26) | class TD3TrainingStats(TrainingStats):
  class ActorDualCriticsOffPolicyAlgorithm (line 32) | class ActorDualCriticsOffPolicyAlgorithm(
    method __init__ (line 40) | def __init__(
    method _target_q_compute_value (line 94) | def _target_q_compute_value(
  class TD3 (line 105) | class TD3(
    method __init__ (line 110) | def __init__(
    method _target_q_compute_action (line 190) | def _target_q_compute_action(self, obs_batch: Batch) -> ActStateBatchP...
    method _update_with_batch (line 204) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> TD3Traini...

FILE: tianshou/algorithm/modelfree/trpo.py
  class TRPOTrainingStats (line 19) | class TRPOTrainingStats(NPGTrainingStats):
  class TRPO (line 23) | class TRPO(NPG):
    method __init__ (line 26) | def __init__(
    method _update_with_batch (line 123) | def _update_with_batch(  # type: ignore[override]

FILE: tianshou/algorithm/multiagent/marl.py
  class MapTrainingStats (line 29) | class MapTrainingStats(TrainingStats):
    method __init__ (line 30) | def __init__(
    method get_loss_stats_dict (line 52) | def get_loss_stats_dict(self) -> dict[str, float]:
  class MAPRolloutBatchProtocol (line 62) | class MAPRolloutBatchProtocol(RolloutBatchProtocol, Protocol):
    method __getitem__ (line 66) | def __getitem__(self, index: str) -> RolloutBatchProtocol: ...
    method __getitem__ (line 69) | def __getitem__(self, index: IndexType) -> Self: ...
    method __getitem__ (line 71) | def __getitem__(self, index: str | IndexType) -> Any: ...
  class MultiAgentPolicy (line 74) | class MultiAgentPolicy(Policy):
    method __init__ (line 75) | def __init__(self, policies: dict[str | int, Policy]):
    method add_exploration_noise (line 88) | def add_exploration_noise(
    method forward (line 105) | def forward(  # type: ignore
  class MARLDispatcher (line 188) | class MARLDispatcher(Generic[TAlgorithm]):
    method __init__ (line 194) | def __init__(self, algorithms: list[TAlgorithm], env: PettingZooEnv):
    method create_policy (line 202) | def create_policy(self) -> MultiAgentPolicy:
    method dispatch_process_fn (line 205) | def dispatch_process_fn(
    method dispatch_update_with_batch (line 248) | def dispatch_update_with_batch(
  class MultiAgentOffPolicyAlgorithm (line 268) | class MultiAgentOffPolicyAlgorithm(OffPolicyAlgorithm[MultiAgentPolicy]):
    method __init__ (line 271) | def __init__(
    method get_algorithm (line 287) | def get_algorithm(self, agent_id: str | int) -> OffPolicyAlgorithm:
    method _preprocess_batch (line 290) | def _preprocess_batch(
    method _update_with_batch (line 299) | def _update_with_batch(
  class MultiAgentOnPolicyAlgorithm (line 311) | class MultiAgentOnPolicyAlgorithm(OnPolicyAlgorithm[MultiAgentPolicy]):
    method __init__ (line 314) | def __init__(
    method get_algorithm (line 330) | def get_algorithm(self, agent_id: str | int) -> OnPolicyAlgorithm:
    method _preprocess_batch (line 333) | def _preprocess_batch(
    method _update_with_batch (line 342) | def _update_with_batch(

FILE: tianshou/algorithm/optim.py
  class LRSchedulerFactory (line 14) | class LRSchedulerFactory(ToStringMixin, ABC):
    method create_scheduler (line 18) | def create_scheduler(self, optim: torch.optim.Optimizer) -> LRScheduler:
  class LRSchedulerFactoryLinear (line 22) | class LRSchedulerFactoryLinear(LRSchedulerFactory):
    method __init__ (line 28) | def __init__(self, max_epochs: int, epoch_num_steps: int, collection_s...
    method create_scheduler (line 33) | def create_scheduler(self, optim: torch.optim.Optimizer) -> LRScheduler:
    class _LRLambda (line 36) | class _LRLambda:
      method __init__ (line 37) | def __init__(self, parent: "LRSchedulerFactoryLinear"):
      method compute (line 43) | def compute(self, epoch: int) -> float:
  class OptimizerFactory (line 47) | class OptimizerFactory(ABC, ToStringMixin):
    method __init__ (line 48) | def __init__(self) -> None:
    method with_lr_scheduler_factory (line 51) | def with_lr_scheduler_factory(self, lr_scheduler_factory: LRSchedulerF...
    method create_instances (line 55) | def create_instances(
    method _create_optimizer_for_params (line 66) | def _create_optimizer_for_params(self, params: ParamsType) -> torch.op...
  class TorchOptimizerFactory (line 70) | class TorchOptimizerFactory(OptimizerFactory):
    method __init__ (line 73) | def __init__(self, optim_class: Callable[..., torch.optim.Optimizer], ...
    method _create_optimizer_for_params (line 85) | def _create_optimizer_for_params(self, params: ParamsType) -> torch.op...
  class AdamOptimizerFactory (line 89) | class AdamOptimizerFactory(OptimizerFactory):
    method __init__ (line 90) | def __init__(
    method _create_optimizer_for_params (line 103) | def _create_optimizer_for_params(self, params: ParamsType) -> torch.op...
  class RMSpropOptimizerFactory (line 113) | class RMSpropOptimizerFactory(OptimizerFactory):
    method __init__ (line 114) | def __init__(
    method _create_optimizer_for_params (line 131) | def _create_optimizer_for_params(self, params: ParamsType) -> torch.op...

FILE: tianshou/algorithm/random.py
  class MARLRandomTrainingStats (line 13) | class MARLRandomTrainingStats(TrainingStats):
  class MARLRandomDiscreteMaskedOffPolicyAlgorithm (line 17) | class MARLRandomDiscreteMaskedOffPolicyAlgorithm(OffPolicyAlgorithm):
    class Policy (line 23) | class Policy(BasePolicy):
      method __init__ (line 29) | def __init__(self, action_space: gym.spaces.Space) -> None:
      method forward (line 32) | def forward(
    method __init__ (line 54) | def __init__(self, action_space: gym.spaces.Space) -> None:
    method _update_with_batch (line 58) | def _update_with_batch(self, batch: RolloutBatchProtocol) -> MARLRando...

FILE: tianshou/data/batch.py
  function _is_batch_set (line 81) | def _is_batch_set(obj: Any) -> bool:
  function _is_scalar (line 99) | def _is_scalar(value: Any) -> bool:
  function _is_number (line 112) | def _is_number(value: Any) -> bool:
  function _to_array_with_correct_type (line 120) | def _to_array_with_correct_type(obj: Any) -> np.ndarray:
  function create_value (line 147) | def create_value(
  function _assert_type_keys (line 185) | def _assert_type_keys(keys: Iterable[str]) -> None:
  function _parse_value (line 189) | def _parse_value(obj: Any) -> Union["Batch", np.ndarray, torch.Tensor] |...
  function alloc_by_keys_diff (line 230) | def alloc_by_keys_diff(
  class ProtocolCalledException (line 250) | class ProtocolCalledException(Exception):
  function get_sliced_dist (line 265) | def get_sliced_dist(dist: TDistribution, index: IndexType) -> TDistribut...
  function get_len_of_dist (line 280) | def get_len_of_dist(dist: Distribution) -> int:
  function dist_to_atleast_2d (line 287) | def dist_to_atleast_2d(dist: TDistribution) -> TDistribution:
  class BatchProtocol (line 309) | class BatchProtocol(Protocol):
    method shape (line 319) | def shape(self) -> list[int]:
    method __setattr__ (line 334) | def __setattr__(self, key: str, value: Any) -> None:
    method __getattr__ (line 337) | def __getattr__(self, key: str) -> Any:
    method __iter__ (line 340) | def __iter__(self) -> Iterator[Self]:
    method __getitem__ (line 344) | def __getitem__(self, index: str) -> Any:
    method __getitem__ (line 348) | def __getitem__(self, index: IndexType) -> Self:
    method __getitem__ (line 351) | def __getitem__(self, index: str | IndexType) -> Any:
    method __setitem__ (line 354) | def __setitem__(self, index: str | IndexType, value: Any) -> None:
    method __iadd__ (line 357) | def __iadd__(self, other: Self | Number | np.number) -> Self:
    method __add__ (line 360) | def __add__(self, other: Self | Number | np.number) -> Self:
    method __imul__ (line 363) | def __imul__(self, value: Number | np.number) -> Self:
    method __mul__ (line 366) | def __mul__(self, value: Number | np.number) -> Self:
    method __itruediv__ (line 369) | def __itruediv__(self, value: Number | np.number) -> Self:
    method __truediv__ (line 372) | def __truediv__(self, value: Number | np.number) -> Self:
    method __repr__ (line 375) | def __repr__(self) -> str:
    method __eq__ (line 378) | def __eq__(self, other: Any) -> bool:
    method to_numpy (line 381) | def to_numpy(self: Self) -> Self:
    method to_numpy_ (line 385) | def to_numpy_(self) -> None:
    method to_torch (line 389) | def to_torch(
    method to_torch_ (line 397) | def to_torch_(
    method cat_ (line 405) | def cat_(self, batches: Self | Sequence[dict | Self]) -> None:
    method cat (line 410) | def cat(batches: Sequence[dict | TBatch]) -> TBatch:
    method stack_ (line 429) | def stack_(self, batches: Sequence[dict | Self], axis: int = 0) -> None:
    method stack (line 434) | def stack(batches: Sequence[dict | TBatch], axis: int = 0) -> TBatch:
    method empty_ (line 458) | def empty_(self, index: slice | IndexType | None = None) -> Self:
    method empty (line 486) | def empty(batch: TBatch, index: IndexType | None = None) -> TBatch:
    method update (line 493) | def update(self, batch: dict | Self | None = None, **kwargs: Any) -> N...
    method __len__ (line 497) | def __len__(self) -> int:
    method split (line 500) | def split(
    method to_dict (line 518) | def to_dict(self, recurse: bool = True) -> dict[str, Any]:
    method to_list_of_dicts (line 521) | def to_list_of_dicts(self) -> list[dict[str, Any]]:
    method get_keys (line 524) | def get_keys(self) -> KeysView:
    method set_array_at_key (line 527) | def set_array_at_key(
    method isnull (line 550) | def isnull(self) -> Self:
    method hasnull (line 554) | def hasnull(self) -> bool:
    method dropnull (line 558) | def dropnull(self) -> Self:
    method apply_values_transform (line 578) | def apply_values_transform(
    method apply_values_transform (line 584) | def apply_values_transform(
    method apply_values_transform (line 591) | def apply_values_transform(
    method apply_values_transform (line 597) | def apply_values_transform(
    method get (line 610) | def get(self, key: str, default: Any | None = None) -> Any:
    method pop (line 613) | def pop(self, key: str, default: Any | None = None) -> Any:
    method to_at_least_2d (line 616) | def to_at_least_2d(self) -> Self:
  class Batch (line 625) | class Batch(BatchProtocol):
    method __init__ (line 630) | def __init__(
    method to_dict (line 655) | def to_dict(self, recursive: bool = True) -> dict[str, Any]:
    method get_keys (line 663) | def get_keys(self) -> KeysView:
    method get (line 666) | def get(self, key: str, default: Any | None = None) -> Any:
    method pop (line 669) | def pop(self, key: str, default: Any | None = None) -> Any:
    method to_list_of_dicts (line 672) | def to_list_of_dicts(self) -> list[dict[str, Any]]:
    method __setattr__ (line 675) | def __setattr__(self, key: str, value: Any) -> None:
    method __getattr__ (line 679) | def __getattr__(self, key: str) -> Any:
    method __contains__ (line 683) | def __contains__(self, key: str) -> bool:
    method __getstate__ (line 687) | def __getstate__(self) -> dict[str, Any]:
    method __setstate__ (line 700) | def __setstate__(self, state: dict[str, Any]) -> None:
    method __getitem__ (line 709) | def __getitem__(self, index: str) -> Any: ...
    method __getitem__ (line 712) | def __getitem__(self, index: IndexType) -> Self: ...
    method __getitem__ (line 714) | def __getitem__(self, index: str | IndexType) -> Any:
    method __eq__ (line 740) | def __eq__(self, other: Any) -> bool:
    method __iter__ (line 761) | def __iter__(self) -> Iterator[Self]:
    method __setitem__ (line 769) | def __setitem__(self, index: str | IndexType, value: Any) -> None:
    method __iadd__ (line 795) | def __iadd__(self, other: Self | Number | np.number) -> Self:
    method __add__ (line 815) | def __add__(self, other: Self | Number | np.number) -> Self:
    method __imul__ (line 819) | def __imul__(self, value: Number | np.number) -> Self:
    method __mul__ (line 828) | def __mul__(self, value: Number | np.number) -> Self:
    method __itruediv__ (line 832) | def __itruediv__(self, value: Number | np.number) -> Self:
    method __truediv__ (line 841) | def __truediv__(self, value: Number | np.number) -> Self:
    method __repr__ (line 845) | def __repr__(self) -> str:
    method to_numpy (line 860) | def to_numpy(self: Self) -> Self:
    method to_numpy_ (line 865) | def to_numpy_(self) -> None:
    method to_torch (line 873) | def to_torch(
    method to_torch_ (line 882) | def to_torch_(
    method __cat (line 907) | def __cat(self, batches: Sequence[dict | Self], lens: list[int]) -> None:
    method cat_ (line 976) | def cat_(self, batches: BatchProtocol | Sequence[dict | BatchProtocol]...
    method cat (line 1036) | def cat(batches: Sequence[dict | TBatch]) -> TBatch:
    method stack_ (line 1041) | def stack_(self, batches: Sequence[dict | BatchProtocol], axis: int = ...
    method stack (line 1119) | def stack(batches: Sequence[dict | TBatch], axis: int = 0) -> TBatch:
    method empty_ (line 1125) | def empty_(self, index: slice | IndexType | None = None) -> Self:
    method empty (line 1150) | def empty(batch: TBatch, index: IndexType | None = None) -> TBatch:
    method update (line 1153) | def update(self, batch: dict | Self | None = None, **kwargs: Any) -> N...
    method __len__ (line 1162) | def __len__(self) -> int:
    method shape (line 1185) | def shape(self) -> list[int]:
    method split (line 1199) | def split(
    method apply_values_transform (line 1218) | def apply_values_transform(
    method apply_values_transform (line 1224) | def apply_values_transform(
    method apply_values_transform (line 1231) | def apply_values_transform(
    method apply_values_transform (line 1237) | def apply_values_transform(
    method set_array_at_key (line 1256) | def set_array_at_key(
    method isnull (line 1294) | def isnull(self) -> Self:
    method hasnull (line 1297) | def hasnull(self) -> bool:
    method dropnull (line 1315) | def dropnull(self) -> Self:
    method replace_empty_batches_by_none (line 1327) | def replace_empty_batches_by_none(self) -> None:
    method to_at_least_2d (line 1342) | def to_at_least_2d(self) -> Self:
  function _apply_batch_values_func_recursively (line 1355) | def _apply_batch_values_func_recursively(

FILE: tianshou/data/buffer/__init__.py
  function _backward_compatibility (line 1) | def _backward_compatibility() -> None:

FILE: tianshou/data/buffer/buffer_base.py
  class MalformedBufferError (line 21) | class MalformedBufferError(RuntimeError):
  class ReplayBuffer (line 25) | class ReplayBuffer:
    method __init__ (line 71) | def __init__(
    method __setstate__ (line 105) | def __setstate__(self, state: dict[str, Any]) -> None:
    method subbuffer_edges (line 114) | def subbuffer_edges(self) -> np.ndarray:
    method _get_start_stop_tuples_for_edge_crossing_interval (line 123) | def _get_start_stop_tuples_for_edge_crossing_interval(
    method get_buffer_indices (line 171) | def get_buffer_indices(self, start: int, stop: int) -> np.ndarray:
    method __len__ (line 235) | def __len__(self) -> int:
    method __repr__ (line 238) | def __repr__(self) -> str:
    method __getattr__ (line 242) | def __getattr__(self, key: str) -> Any:
    method __setattr__ (line 248) | def __setattr__(self, key: str, value: Any) -> None:
    method save_hdf5 (line 252) | def save_hdf5(self, path: str, compression: str | None = None) -> None:
    method load_hdf5 (line 258) | def load_hdf5(cls, path: str, device: str | None = None) -> Self:
    method from_data (line 266) | def from_data(
    method reset (line 297) | def reset(self, keep_statistics: bool = False) -> None:
    method set_batch (line 307) | def set_batch(self, batch: RolloutBatchProtocol) -> None:
    method unfinished_index (line 314) | def unfinished_index(self) -> np.ndarray:
    method prev (line 319) | def prev(self, index: int | np.ndarray) -> np.ndarray:
    method next (line 328) | def next(self, index: int | np.ndarray) -> np.ndarray:
    method update (line 336) | def update(self, buffer: "ReplayBuffer") -> np.ndarray:
    method _update_state_pre_add (line 360) | def _update_state_pre_add(
    method add (line 420) | def add(
    method sample_indices (line 503) | def sample_indices(self, batch_size: int | None) -> np.ndarray:
    method sample (line 547) | def sample(self, batch_size: int | None) -> tuple[RolloutBatchProtocol...
    method get (line 557) | def get(
    method __getitem__ (line 605) | def __getitem__(self, index: IndexType) -> RolloutBatchProtocol:
    method set_array_at_key (line 651) | def set_array_at_key(
    method hasnull (line 660) | def hasnull(self) -> bool:
    method isnull (line 663) | def isnull(self) -> RolloutBatchProtocol:
    method dropnull (line 666) | def dropnull(self) -> None:

FILE: tianshou/data/buffer/cached.py
  class CachedReplayBuffer (line 7) | class CachedReplayBuffer(ReplayBufferManager):
    method __init__ (line 28) | def __init__(
    method add (line 46) | def add(

FILE: tianshou/data/buffer/her.py
  class HERReplayBuffer (line 11) | class HERReplayBuffer(ReplayBuffer):
    method __init__ (line 33) | def __init__(
    method _restore_cache (line 48) | def _restore_cache(self) -> None:
    method reset (line 63) | def reset(self, keep_statistics: bool = False) -> None:
    method save_hdf5 (line 67) | def save_hdf5(self, path: str, compression: str | None = None) -> None:
    method set_batch (line 71) | def set_batch(self, batch: RolloutBatchProtocol) -> None:
    method update (line 75) | def update(self, buffer: Union["HERReplayBuffer", "ReplayBuffer"]) -> ...
    method add (line 79) | def add(
    method sample_indices (line 87) | def sample_indices(self, batch_size: int | None) -> np.ndarray:
    method rewrite_transitions (line 100) | def rewrite_transitions(self, indices: np.ndarray) -> None:
    method _compute_reward (line 190) | def _compute_reward(self, obs: BatchProtocol, lead_dims: int = 2) -> n...

FILE: tianshou/data/buffer/manager.py
  class ReplayBufferManager (line 13) | class ReplayBufferManager(ReplayBuffer):
    method __init__ (line 26) | def __init__(self, buffer_list: list[ReplayBuffer] | list[HERReplayBuf...
    method subbuffer_edges (line 57) | def subbuffer_edges(self) -> np.ndarray:
    method _compile (line 60) | def _compile(self) -> None:
    method __len__ (line 67) | def __len__(self) -> int:
    method reset (line 70) | def reset(self, keep_statistics: bool = False) -> None:
    method _set_batch_for_children (line 77) | def _set_batch_for_children(self) -> None:
    method set_batch (line 81) | def set_batch(self, batch: RolloutBatchProtocol) -> None:
    method unfinished_index (line 85) | def unfinished_index(self) -> np.ndarray:
    method prev (line 93) | def prev(self, index: int | np.ndarray) -> np.ndarray:
    method next (line 110) | def next(self, index: int | np.ndarray) -> np.ndarray:
    method update (line 127) | def update(self, buffer: ReplayBuffer) -> np.ndarray:
    method add (line 131) | def add(
    method sample_indices (line 200) | def sample_indices(self, batch_size: int | None) -> np.ndarray:
  class PrioritizedReplayBufferManager (line 239) | class PrioritizedReplayBufferManager(PrioritizedReplayBuffer, ReplayBuff...
    method __init__ (line 252) | def __init__(self, buffer_list: Sequence[PrioritizedReplayBuffer]) -> ...
  class HERReplayBufferManager (line 270) | class HERReplayBufferManager(ReplayBufferManager):
    method __init__ (line 283) | def __init__(self, buffer_list: list[HERReplayBuffer]) -> None:
    method _restore_cache (line 286) | def _restore_cache(self) -> None:
    method save_hdf5 (line 290) | def save_hdf5(self, path: str, compression: str | None = None) -> None:
    method set_batch (line 294) | def set_batch(self, batch: RolloutBatchProtocol) -> None:
    method update (line 298) | def update(self, buffer: Union["HERReplayBuffer", "ReplayBuffer"]) -> ...
    method add (line 302) | def add(
  function _prev_index (line 312) | def _prev_index(
  function _next_index (line 340) | def _next_index(

FILE: tianshou/data/buffer/prio.py
  class PrioritizedReplayBuffer (line 12) | class PrioritizedReplayBuffer(ReplayBuffer):
    method __init__ (line 25) | def __init__(
    method init_weight (line 46) | def init_weight(self, index: int | np.ndarray) -> None:
    method update (line 49) | def update(self, buffer: ReplayBuffer) -> np.ndarray:
    method add (line 54) | def add(
    method sample_indices (line 63) | def sample_indices(self, batch_size: int | None) -> np.ndarray:
    method get_weight (line 69) | def get_weight(self, index: int | np.ndarray) -> float | np.ndarray:
    method update_weight (line 81) | def update_weight(self, index: np.ndarray, new_weight: np.ndarray | to...
    method __getitem__ (line 92) | def __getitem__(self, index: IndexType) -> PrioBatchProtocol:
    method sample (line 109) | def sample(self, batch_size: int | None) -> tuple[PrioBatchProtocol, n...
    method set_beta (line 112) | def set_beta(self, beta: float) -> None:

FILE: tianshou/data/buffer/vecbuf.py
  class VectorReplayBuffer (line 15) | class VectorReplayBuffer(ReplayBufferManager):
    method __init__ (line 33) | def __init__(self, total_size: int, buffer_num: int, **kwargs: Any) ->...
  class PrioritizedVectorReplayBuffer (line 40) | class PrioritizedVectorReplayBuffer(PrioritizedReplayBufferManager):
    method __init__ (line 58) | def __init__(self, total_size: int, buffer_num: int, **kwargs: Any) ->...
    method set_beta (line 64) | def set_beta(self, beta: float) -> None:
  class HERVectorReplayBuffer (line 69) | class HERVectorReplayBuffer(HERReplayBufferManager):
    method __init__ (line 85) | def __init__(self, total_size: int, buffer_num: int, **kwargs: Any) ->...

FILE: tianshou/data/collector.py
  class CollectActionBatchProtocol (line 49) | class CollectActionBatchProtocol(Protocol):
  class CollectStepBatchProtocol (line 63) | class CollectStepBatchProtocol(RolloutBatchProtocol):
  class EpisodeBatchProtocol (line 74) | class EpisodeBatchProtocol(RolloutBatchProtocol):
  function get_stddev_from_dist (line 82) | def get_stddev_from_dist(dist: Distribution) -> torch.Tensor:
  class CollectStatsBase (line 107) | class CollectStatsBase(DataclassPPrintMixin):
  class CollectStats (line 117) | class CollectStats(CollectStatsBase):
    method with_autogenerated_stats (line 152) | def with_autogenerated_stats(
    method update_at_step_batch (line 175) | def update_at_step_batch(
    method update_at_episode_done (line 196) | def update_at_episode_done(
    method set_collect_time (line 218) | def set_collect_time(self, collect_time: float, update_collect_speed: ...
    method refresh_return_stats (line 232) | def refresh_return_stats(self) -> None:
    method refresh_len_stats (line 238) | def refresh_len_stats(self) -> None:
    method refresh_std_array_stats (line 244) | def refresh_std_array_stats(self) -> None:
    method refresh_all_sequence_stats (line 251) | def refresh_all_sequence_stats(self) -> None:
  function _nullable_slice (line 260) | def _nullable_slice(obj: _TArrLike, indices: np.ndarray) -> _TArrLike:
  function _dict_of_arr_to_arr_of_dicts (line 267) | def _dict_of_arr_to_arr_of_dicts(
  function _HACKY_create_info_batch (line 273) | def _HACKY_create_info_batch(info_array: np.ndarray) -> Batch:
  class BaseCollector (line 302) | class BaseCollector(Generic[TCollectStats], ABC):
    method __init__ (line 316) | def __init__(
    method _validate_buffer (line 371) | def _validate_buffer(self) -> None:
    method env_num (line 394) | def env_num(self) -> int:
    method action_space (line 398) | def action_space(self) -> gym.spaces.Space:
    method close (line 401) | def close(self) -> None:
    method reset (line 406) | def reset(
    method reset_stat (line 429) | def reset_stat(self) -> None:
    method reset_buffer (line 433) | def reset_buffer(self, keep_statistics: bool = False) -> None:
    method reset_env (line 437) | def reset_env(
    method _collect (line 453) | def _collect(
    method collect (line 463) | def collect(
    method _validate_n_step_n_episode (line 528) | def _validate_n_step_n_episode(self, n_episode: int | None, n_step: in...
  class Collector (line 550) | class Collector(BaseCollector[TCollectStats], Generic[TCollectStats]):
    method __init__ (line 579) | def __init__(
    method set_on_episode_done_hook (line 648) | def set_on_episode_done_hook(self, hook: Optional["EpisodeRolloutHookP...
    method set_on_step_hook (line 651) | def set_on_step_hook(self, hook: Optional["StepHookProtocol"]) -> None:
    method get_on_episode_done_hook (line 654) | def get_on_episode_done_hook(self) -> Optional["EpisodeRolloutHookProt...
    method get_on_step_hook (line 657) | def get_on_step_hook(self) -> Optional["StepHookProtocol"]:
    method close (line 660) | def close(self) -> None:
    method run_on_episode_done (line 665) | def run_on_episode_done(
    method run_on_step_hook (line 679) | def run_on_step_hook(
    method reset_env (line 693) | def reset_env(
    method _compute_action_policy_hidden (line 706) | def _compute_action_policy_hidden(
    method _collect (line 772) | def _collect(  # noqa: C901
    method _reset_hidden_state_based_on_type (line 1103) | def _reset_hidden_state_based_on_type(
  class AsyncCollector (line 1118) | class AsyncCollector(Collector[CollectStats]):
    method __init__ (line 1124) | def __init__(
    method reset (line 1160) | def reset(
    method reset_env (line 1192) | def reset_env(
    method _collect (line 1202) | def _collect(
  class StepHookProtocol (line 1399) | class StepHookProtocol(Protocol):
    method __call__ (line 1402) | def __call__(
  class StepHook (line 1411) | class StepHook(StepHookProtocol, ABC):
    method __call__ (line 1421) | def __call__(
  class StepHookAddActionDistribution (line 1428) | class StepHookAddActionDistribution(StepHook):
    method __call__ (line 1438) | def __call__(
  class EpisodeRolloutHookProtocol (line 1446) | class EpisodeRolloutHookProtocol(Protocol):
    method __call__ (line 1453) | def __call__(self, episode_batch: EpisodeBatchProtocol) -> dict[str, n...
  class EpisodeRolloutHook (line 1467) | class EpisodeRolloutHook(EpisodeRolloutHookProtocol, ABC):
    method __call__ (line 1477) | def __call__(self, episode_batch: EpisodeBatchProtocol) -> dict[str, n...
  class EpisodeRolloutHookMCReturn (line 1480) | class EpisodeRolloutHookMCReturn(EpisodeRolloutHook):
    class OutputDict (line 1490) | class OutputDict(TypedDict):
    method __init__ (line 1494) | def __init__(self, gamma: float = 0.99):
    method __call__ (line 1499) | def __call__(  # type: ignore[override]
  class EpisodeRolloutHookMerged (line 1512) | class EpisodeRolloutHookMerged(EpisodeRolloutHook):
    method __init__ (line 1518) | def __init__(
    method __call__ (line 1532) | def __call__(self, episode_batch: EpisodeBatchProtocol) -> dict[str, n...

FILE: tianshou/data/stats.py
  class SequenceSummaryStats (line 18) | class SequenceSummaryStats(DataclassPPrintMixin):
    method from_sequence (line 27) | def from_sequence(cls, sequence: Sequence[float | int] | np.ndarray) -...
    method from_single_value (line 46) | def from_single_value(cls, value: float | int) -> "SequenceSummaryStats":
  function compute_dim_to_summary_stats (line 50) | def compute_dim_to_summary_stats(
  class TimingStats (line 65) | class TimingStats(DataclassPPrintMixin):
  class InfoStats (line 83) | class InfoStats(DataclassPPrintMixin):
  class EpochStats (line 108) | class EpochStats(DataclassPPrintMixin):

FILE: tianshou/data/types.py
  class ObsBatchProtocol (line 14) | class ObsBatchProtocol(BatchProtocol, Protocol):
  class RolloutBatchProtocol (line 27) | class RolloutBatchProtocol(ObsBatchProtocol, Protocol):
  class BatchWithReturnsProtocol (line 39) | class BatchWithReturnsProtocol(RolloutBatchProtocol, Protocol):
  class PrioBatchProtocol (line 45) | class PrioBatchProtocol(RolloutBatchProtocol, Protocol):
  class RecurrentStateBatch (line 52) | class RecurrentStateBatch(BatchProtocol, Protocol):
  class ActBatchProtocol (line 59) | class ActBatchProtocol(BatchProtocol, Protocol):
  class ActStateBatchProtocol (line 65) | class ActStateBatchProtocol(ActBatchProtocol, Protocol):
  class ModelOutputBatchProtocol (line 73) | class ModelOutputBatchProtocol(ActStateBatchProtocol, Protocol):
  class FQFBatchProtocol (line 79) | class FQFBatchProtocol(ModelOutputBatchProtocol, Protocol):
  class BatchWithAdvantagesProtocol (line 86) | class BatchWithAdvantagesProtocol(BatchWithReturnsProtocol, Protocol):
  class DistBatchProtocol (line 96) | class DistBatchProtocol(ModelOutputBatchProtocol, Protocol):
  class DistLogProbBatchProtocol (line 105) | class DistLogProbBatchProtocol(DistBatchProtocol, Protocol):
  class LogpOldProtocol (line 111) | class LogpOldProtocol(BatchWithAdvantagesProtocol, Protocol):
  class QuantileRegressionBatchProtocol (line 120) | class QuantileRegressionBatchProtocol(ModelOutputBatchProtocol, Protocol):
  class ImitationBatchProtocol (line 129) | class ImitationBatchProtocol(ModelOutputBatchProtocol, Protocol):

FILE: tianshou/data/utils/converter.py
  function to_numpy (line 17) | def to_numpy(x: Any) -> Batch | np.ndarray:
  function to_torch (line 38) | def to_torch(
  function to_torch_as (line 69) | def to_torch_as(x: Any, y: torch.Tensor) -> Batch | torch.Tensor:
  function to_hdf5 (line 93) | def to_hdf5(x: Hdf5ConvertibleType, y: h5py.Group, compression: str | No...
  function from_hdf5 (line 151) | def from_hdf5(x: h5py.Group, device: str | None = None) -> Hdf5Convertib...

FILE: tianshou/data/utils/segtree.py
  class SegmentTree (line 5) | class SegmentTree:
    method __init__ (line 19) | def __init__(self, size: int) -> None:
    method __len__ (line 28) | def __len__(self) -> int:
    method __getitem__ (line 31) | def __getitem__(self, index: int | np.ndarray) -> float | np.ndarray:
    method __setitem__ (line 35) | def __setitem__(self, index: int | np.ndarray, value: float | np.ndarr...
    method reduce (line 53) | def reduce(self, start: int = 0, end: int | None = None) -> float:
    method get_prefix_sum_idx (line 63) | def get_prefix_sum_idx(self, value: float | np.ndarray) -> int | np.nd...
    method _compile (line 84) | def _compile(self) -> None:
  function _setitem (line 96) | def _setitem(tree: np.ndarray, index: np.ndarray, value: np.ndarray) -> ...
  function _reduce (line 105) | def _reduce(tree: np.ndarray, start: int, end: int) -> float:
  function _get_prefix_sum_idx (line 120) | def _get_prefix_sum_idx(value: np.ndarray, bound: int, sums: np.ndarray)...

FILE: tianshou/env/atari/atari_network.py
  function layer_init (line 28) | def layer_init(layer: nn.Module, std: float = np.sqrt(2), bias_const: fl...
  class ScaledObsInputActionReprNet (line 38) | class ScaledObsInputActionReprNet(ActionReprNetWithVectorOutput):
    method __init__ (line 39) | def __init__(self, module: ActionReprNetWithVectorOutput, denom: float...
    method forward (line 44) | def forward(
  class DQNet (line 60) | class DQNet(ActionReprNetWithVectorOutput[Any]):
    method __init__ (line 63) | def __init__(
    method forward (line 110) | def forward(
  class C51Net (line 125) | class C51Net(DQNet):
    method __init__ (line 128) | def __init__(
    method forward (line 141) | def forward(
  class RainbowNet (line 154) | class RainbowNet(DQNet):
    method __init__ (line 157) | def __init__(
    method forward (line 192) | def forward(
  class QRDQNet (line 211) | class QRDQNet(DQNet):
    method __init__ (line 214) | def __init__(
    method forward (line 227) | def forward(
  class ActorFactoryAtariDQN (line 238) | class ActorFactoryAtariDQN(ActorFactory):
    method __init__ (line 241) | def __init__(
    method create_module (line 251) | def create_module(self, envs: Environments, device: TDevice) -> Discre...
    method create_dist_fn (line 274) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class IntermediateModuleFactoryAtariDQN (line 280) | class IntermediateModuleFactoryAtariDQN(IntermediateModuleFactory):
    method __init__ (line 281) | def __init__(self, features_only: bool = False, net_only: bool = False...
    method create_intermediate_module (line 285) | def create_intermediate_module(self, envs: Environments, device: TDevi...
  class IntermediateModuleFactoryAtariDQNFeatures (line 305) | class IntermediateModuleFactoryAtariDQNFeatures(IntermediateModuleFactor...
    method __init__ (line 306) | def __init__(self) -> None:

FILE: tianshou/env/atari/atari_wrapper.py
  function _parse_reset_result (line 31) | def _parse_reset_result(reset_result: tuple) -> tuple[tuple, dict, bool]:
  function get_space_dtype (line 42) | def get_space_dtype(obs_space: gym.spaces.Box) -> type[np.floating] | ty...
  class NoopResetEnv (line 57) | class NoopResetEnv(gym.Wrapper):
    method __init__ (line 66) | def __init__(self, env: gym.Env, noop_max: int = 30) -> None:
    method reset (line 73) | def reset(self, **kwargs: Any) -> tuple[Any, dict[str, Any]]:
  class MaxAndSkipEnv (line 90) | class MaxAndSkipEnv(gym.Wrapper):
    method __init__ (line 97) | def __init__(self, env: gym.Env, skip: int = 4) -> None:
    method step (line 101) | def step(self, action: Any) -> tuple[Any, float, bool, bool, dict[str,...
  class EpisodicLifeEnv (line 134) | class EpisodicLifeEnv(gym.Wrapper):
    method __init__ (line 142) | def __init__(self, env: gym.Env) -> None:
    method step (line 148) | def step(self, action: Any) -> tuple[Any, float, bool, bool, dict[str,...
    method reset (line 174) | def reset(self, **kwargs: Any) -> tuple[Any, dict[str, Any]]:
  class FireResetEnv (line 193) | class FireResetEnv(gym.Wrapper):
    method __init__ (line 201) | def __init__(self, env: gym.Env) -> None:
    method reset (line 207) | def reset(self, **kwargs: Any) -> tuple[Any, dict]:
  class WarpFrame (line 213) | class WarpFrame(gym.ObservationWrapper):
    method __init__ (line 219) | def __init__(self, env: gym.Env) -> None:
    method observation (line 232) | def observation(self, frame: np.ndarray) -> np.ndarray:
  class ScaledFloatFrame (line 238) | class ScaledFloatFrame(gym.ObservationWrapper):
    method __init__ (line 244) | def __init__(self, env: gym.Env) -> None:
    method observation (line 259) | def observation(self, observation: np.ndarray) -> np.ndarray:
  class ClipRewardEnv (line 263) | class ClipRewardEnv(gym.RewardWrapper):
    method __init__ (line 269) | def __init__(self, env: gym.Env) -> None:
    method reward (line 273) | def reward(self, reward: SupportsFloat) -> int:
  class FrameStack (line 278) | class FrameStack(gym.Wrapper):
    method __init__ (line 285) | def __init__(self, env: gym.Env, n_frames: int) -> None:
    method reset (line 302) | def reset(self, **kwargs: Any) -> tuple[np.ndarray, dict]:
    method step (line 308) | def step(self, action: Any) -> tuple[np.ndarray, float, bool, bool, di...
    method _get_ob (line 329) | def _get_ob(self) -> np.ndarray:
  function wrap_deepmind (line 335) | def wrap_deepmind(
  function make_atari_env (line 391) | def make_atari_env(
  class AtariEnvFactory (line 410) | class AtariEnvFactory(EnvFactoryRegistered):
    method __init__ (line 411) | def __init__(
    method _create_env (line 435) | def _create_env(self, mode: EnvMode) -> gym.Env:
    class EnvPoolFactoryAtari (line 446) | class EnvPoolFactoryAtari(EnvPoolFactory):
      method __init__ (line 452) | def __init__(self, parent: "AtariEnvFactory") -> None:
      method _transform_task (line 460) | def _transform_task(self, task: str) -> str:
      method _transform_kwargs (line 465) | def _transform_kwargs(self, kwargs: dict, mode: EnvMode) -> dict:
  class AtariEpochStopCallback (line 474) | class AtariEpochStopCallback(EpochStopCallback):
    method __init__ (line 475) | def __init__(self, task: str) -> None:
    method should_stop (line 478) | def should_stop(self, mean_rewards: float, context: TrainingContext) -...

FILE: tianshou/env/gym_wrappers.py
  class ContinuousToDiscrete (line 8) | class ContinuousToDiscrete(gym.ActionWrapper):
    method __init__ (line 16) | def __init__(self, env: gym.Env, action_per_dim: int | list[int]) -> N...
    method action (line 29) | def action(self, act: np.ndarray) -> np.ndarray:
  class MultiDiscreteToDiscrete (line 37) | class MultiDiscreteToDiscrete(gym.ActionWrapper):
    method __init__ (line 43) | def __init__(self, env: gym.Env) -> None:
    method action (line 53) | def action(self, act: np.ndarray) -> np.ndarray:
  class TruncatedAsTerminated (line 61) | class TruncatedAsTerminated(gym.Wrapper):
    method __init__ (line 69) | def __init__(self, env: gym.Env):
    method step (line 77) | def step(self, act: np.ndarray) -> tuple[Any, SupportsFloat, bool, boo...

FILE: tianshou/env/pettingzoo_env.py
  class PettingZooEnv (line 20) | class PettingZooEnv(AECEnv, ABC):
    method __init__ (line 37) | def __init__(self, env: BaseWrapper):
    method reset (line 70) | def reset(self, *args: Any, **kwargs: Any) -> tuple[dict, dict]:
    method step (line 96) | def step(self, action: Any) -> tuple[dict, list[int], bool, bool, dict]:
    method close (line 121) | def close(self) -> None:
    method seed (line 124) | def seed(self, seed: Any = None) -> None:
    method render (line 130) | def render(self) -> Any:

FILE: tianshou/env/utils.py
  class CloudpickleWrapper (line 14) | class CloudpickleWrapper:
    method __init__ (line 17) | def __init__(self, data: Any) -> None:
    method __getstate__ (line 20) | def __getstate__(self) -> str:
    method __setstate__ (line 23) | def __setstate__(self, data: str) -> None:

FILE: tianshou/env/venv_wrappers.py
  class VectorEnvWrapper (line 11) | class VectorEnvWrapper(BaseVectorEnv):
    method __init__ (line 18) | def __init__(self, venv: BaseVectorEnv) -> None:
    method __len__ (line 22) | def __len__(self) -> int:
    method __getattribute__ (line 25) | def __getattribute__(self, key: str) -> Any:
    method get_env_attr (line 30) | def get_env_attr(
    method set_env_attr (line 37) | def set_env_attr(
    method reset (line 45) | def reset(
    method step (line 52) | def step(
    method seed (line 59) | def seed(self, seed: int | list[int] | None = None) -> list[list[int] ...
    method render (line 62) | def render(self, **kwargs: Any) -> list[Any]:
    method close (line 65) | def close(self) -> None:
  class VectorEnvNormObs (line 69) | class VectorEnvNormObs(VectorEnvWrapper):
    method __init__ (line 75) | def __init__(self, venv: BaseVectorEnv, update_obs_rms: bool = True) -...
    method reset (line 81) | def reset(
    method step (line 99) | def step(
    method _norm_obs (line 109) | def _norm_obs(self, obs: np.ndarray) -> np.ndarray:
    method set_obs_rms (line 114) | def set_obs_rms(self, obs_rms: RunningMeanStd) -> None:
    method get_obs_rms (line 118) | def get_obs_rms(self) -> RunningMeanStd:

FILE: tianshou/env/venvs.py
  class BaseVectorEnv (line 25) | class BaseVectorEnv:
    method __init__ (line 76) | def __init__(
    method _assert_is_not_closed (line 111) | def _assert_is_not_closed(self) -> None:
    method __len__ (line 116) | def __len__(self) -> int:
    method __getattribute__ (line 120) | def __getattribute__(self, key: str) -> Any:
    method get_env_attr (line 131) | def get_env_attr(
    method set_env_attr (line 155) | def set_env_attr(
    method _wrap_id (line 178) | def _wrap_id(
    method _assert_id (line 186) | def _assert_id(self, id: list[int] | np.ndarray) -> None:
    method reset (line 195) | def reset(
    method step (line 237) | def step(
    method seed (line 324) | def seed(self, seed: int | list[int] | None = None) -> list[list[int] ...
    method render (line 344) | def render(self, **kwargs: Any) -> list[Any]:
    method close (line 353) | def close(self) -> None:
  class DummyVectorEnv (line 365) | class DummyVectorEnv(BaseVectorEnv):
    method __init__ (line 380) | def __init__(
  class SubprocVectorEnv (line 389) | class SubprocVectorEnv(BaseVectorEnv):
    method __init__ (line 408) | def __init__(
  class ShmemVectorEnv (line 427) | class ShmemVectorEnv(BaseVectorEnv):
    method __init__ (line 437) | def __init__(
  class RayVectorEnv (line 449) | class RayVectorEnv(BaseVectorEnv):
    method __init__ (line 459) | def __init__(

FILE: tianshou/env/worker/dummy.py
  class DummyEnvWorker (line 10) | class DummyEnvWorker(EnvWorker):
    method __init__ (line 13) | def __init__(self, env_fn: Callable[[], gym.Env]) -> None:
    method get_env_attr (line 17) | def get_env_attr(self, key: str) -> Any:
    method set_env_attr (line 20) | def set_env_attr(self, key: str, value: Any) -> None:
    method reset (line 23) | def reset(self, **kwargs: Any) -> tuple[np.ndarray, dict]:
    method wait (line 29) | def wait(  # type: ignore
    method send (line 37) | def send(self, action: np.ndarray | None, **kwargs: Any) -> None:
    method seed (line 43) | def seed(self, seed: int | None = None) -> list[int] | None:
    method render (line 51) | def render(self, **kwargs: Any) -> Any:
    method close_env (line 54) | def close_env(self) -> None:

FILE: tianshou/env/worker/ray.py
  class _SetAttrWrapper (line 16) | class _SetAttrWrapper(gym.Wrapper):
    method set_env_attr (line 17) | def set_env_attr(self, key: str, value: Any) -> None:
    method get_env_attr (line 20) | def get_env_attr(self, key: str) -> Any:
  class RayEnvWorker (line 24) | class RayEnvWorker(EnvWorker):
    method __init__ (line 27) | def __init__(
    method get_env_attr (line 34) | def get_env_attr(self, key: str) -> Any:
    method set_env_attr (line 37) | def set_env_attr(self, key: str, value: Any) -> None:
    method reset (line 40) | def reset(self, **kwargs: Any) -> Any:
    method wait (line 46) | def wait(  # type: ignore
    method send (line 55) | def send(self, action: np.ndarray | None, **kwargs: Any) -> None:
    method recv (line 62) | def recv(self) -> gym_new_venv_step_type:
    method seed (line 65) | def seed(self, seed: int | None = None) -> list[int] | None:
    method render (line 73) | def render(self, **kwargs: Any) -> Any:
    method close_env (line 76) | def close_env(self) -> None:

FILE: tianshou/env/worker/subproc.py
  class ShArray (line 33) | class ShArray:
    method __init__ (line 50) | def __init__(self, dtype: np.generic, shape: tuple[int], ctx: BaseCont...
    method save (line 57) | def save(self, ndarray: np.ndarray) -> None:
    method get (line 63) | def get(self) -> np.ndarray:
  function _setup_buf (line 68) | def _setup_buf(space: gym.Space, ctx: BaseContext) -> dict | tuple | ShA...
  function _worker (line 77) | def _worker(
  class SubprocEnvWorker (line 143) | class SubprocEnvWorker(EnvWorker):
    method __init__ (line 146) | def __init__(
    method get_env_attr (line 175) | def get_env_attr(self, key: str) -> Any:
    method set_env_attr (line 179) | def set_env_attr(self, key: str, value: Any) -> None:
    method _decode_obs (line 182) | def _decode_obs(self) -> dict | tuple | np.ndarray:
    method wait (line 197) | def wait(  # type: ignore
    method send (line 216) | def send(self, action: np.ndarray | None, **kwargs: Any) -> None:
    method recv (line 224) | def recv(self) -> gym_new_venv_step_type | tuple[np.ndarray, dict]:
    method reset (line 242) | def reset(self, **kwargs: Any) -> tuple[np.ndarray, dict]:
    method seed (line 258) | def seed(self, seed: int | None = None) -> list[int] | None:
    method render (line 263) | def render(self, **kwargs: Any) -> Any:
    method close_env (line 267) | def close_env(self) -> None:

FILE: tianshou/env/worker/worker_base.py
  class EnvWorker (line 11) | class EnvWorker(ABC):
    method __init__ (line 14) | def __init__(self, env_fn: Callable[[], gym.Env]) -> None:
    method get_env_attr (line 22) | def get_env_attr(self, key: str) -> Any:
    method set_env_attr (line 26) | def set_env_attr(self, key: str, value: Any) -> None:
    method send (line 30) | def send(self, action: np.ndarray | None) -> None:
    method recv (line 38) | def recv(self) -> gym_new_venv_step_type | tuple[np.ndarray, dict]:
    method reset (line 49) | def reset(self, **kwargs: Any) -> tuple[np.ndarray, dict]:
    method step (line 52) | def step(self, action: np.ndarray) -> gym_new_venv_step_type:
    method wait (line 63) | def wait(
    method seed (line 71) | def seed(self, seed: int | None = None) -> list[int] | None:
    method render (line 82) | def render(self, **kwargs: Any) -> Any:
    method close_env (line 86) | def close_env(self) -> None:
    method close (line 89) | def close(self) -> None:

FILE: tianshou/evaluation/launcher.py
  class JoblibConfig (line 22) | class JoblibConfig:
  function default_experiment_execution (line 31) | def default_experiment_execution(exp: "Experiment") -> InfoStats | None:
  class ExpLauncher (line 36) | class ExpLauncher(ABC):
    method __init__ (line 39) | def __init__(
    method get_name (line 56) | def get_name(self) -> str:
    method _launch (line 61) | def _launch(self, experiments: Sequence["Experiment"]) -> list[InfoSta...
    method _safe_execute (line 64) | def _safe_execute(self, exp: "Experiment") -> InfoStats | None | Liter...
    method _return_from_successful_and_failed_exps (line 72) | def _return_from_successful_and_failed_exps(
    method launch (line 87) | def launch(self, experiments: Sequence["Experiment"]) -> list[InfoStat...
  class SequentialExpLauncher (line 101) | class SequentialExpLauncher(ExpLauncher):
    method _launch (line 104) | def _launch(self, experiments: Sequence["Experiment"]) -> list[InfoSta...
  class JoblibExpLauncher (line 117) | class JoblibExpLauncher(ExpLauncher):
    method __init__ (line 118) | def __init__(
    method _launch (line 136) | def _launch(self, experiments: Sequence["Experiment"]) -> list[InfoSta...
  class RegisteredExpLauncher (line 150) | class RegisteredExpLauncher(Enum):
    method create_launcher (line 154) | def create_launcher(self) -> ExpLauncher:

FILE: tianshou/evaluation/rliable_evaluation.py
  class EvaluationSequenceEntry (line 25) | class EvaluationSequenceEntry:
  class LoggedSummaryData (line 45) | class LoggedSummaryData:
  class LoggedCollectStats (line 53) | class LoggedCollectStats:
    method from_data_dict (line 63) | def from_data_dict(cls, data: dict) -> "LoggedCollectStats":
  class MultiRunExperimentResult (line 83) | class MultiRunExperimentResult:
    method load_from_disk (line 112) | def load_from_disk(
    method _get_env_steps_and_returns (line 236) | def _get_env_steps_and_returns(
    method _get_data_in_rliable_format (line 247) | def _get_data_in_rliable_format(
    method _compute_iqm_scores (line 277) | def _compute_iqm_scores(
    method eval_results (line 301) | def eval_results(
    method to_evaluation_sequence (line 417) | def to_evaluation_sequence(
  function load_and_eval_experiment (line 442) | def load_and_eval_experiment(

FILE: tianshou/exploration/random.py
  class BaseNoise (line 7) | class BaseNoise(ABC):
    method reset (line 11) | def reset(self) -> None:
    method __call__ (line 15) | def __call__(self, size: Sequence[int]) -> np.ndarray:
  class GaussianNoise (line 20) | class GaussianNoise(BaseNoise):
    method __init__ (line 23) | def __init__(self, mu: float = 0.0, sigma: float = 1.0) -> None:
    method __call__ (line 28) | def __call__(self, size: Sequence[int]) -> np.ndarray:
    method reset (line 31) | def reset(self) -> None:
  class OUNoise (line 35) | class OUNoise(BaseNoise):
    method __init__ (line 52) | def __init__(
    method reset (line 67) | def reset(self) -> None:
    method __call__ (line 71) | def __call__(self, size: Sequence[int], mu: float | None = None) -> np...

FILE: tianshou/highlevel/algorithm.py
  class AlgorithmFactory (line 110) | class AlgorithmFactory(ABC, ToStringMixin, Generic[TTrainingConfig]):
    method __init__ (line 113) | def __init__(self, training_config: TTrainingConfig, optim_factory: Op...
    method set_collector_factory (line 120) | def set_collector_factory(self, collector_factory: CollectorFactory) -...
    method create_train_test_collectors (line 123) | def create_train_test_collectors(
    method set_policy_wrapper_factory (line 168) | def set_policy_wrapper_factory(
    method set_trainer_callbacks (line 174) | def set_trainer_callbacks(self, callbacks: TrainerCallbacks) -> None:
    method _create_policy_from_args (line 178) | def _create_policy_from_args(
    method _create_algorithm (line 188) | def _create_algorithm(self, envs: Environments, device: TDevice) -> Al...
    method create_algorithm (line 191) | def create_algorithm(self, envs: Environments, device: TDevice) -> Alg...
    method create_trainer (line 203) | def create_trainer(self, world: World, policy_persistence: PolicyPersi...
  class OnPolicyAlgorithmFactory (line 207) | class OnPolicyAlgorithmFactory(AlgorithmFactory[OnPolicyTrainingConfig],...
    method create_trainer (line 208) | def create_trainer(
  class OffPolicyAlgorithmFactory (line 255) | class OffPolicyAlgorithmFactory(AlgorithmFactory[OffPolicyTrainingConfig...
    method create_trainer (line 256) | def create_trainer(
  class ReinforceAlgorithmFactory (line 302) | class ReinforceAlgorithmFactory(OnPolicyAlgorithmFactory):
    method __init__ (line 303) | def __init__(
    method _create_algorithm (line 315) | def _create_algorithm(self, envs: Environments, device: TDevice) -> Re...
  class ActorCriticOnPolicyAlgorithmFactory (line 341) | class ActorCriticOnPolicyAlgorithmFactory(
    method __init__ (line 345) | def __init__(
    method _get_algorithm_class (line 361) | def _get_algorithm_class(self) -> type[TAlgorithm]:
    method _create_kwargs (line 365) | def _create_kwargs(self, envs: Environments, device: TDevice) -> dict[...
    method _create_algorithm (line 382) | def _create_algorithm(self, envs: Environments, device: TDevice) -> TA...
  class A2CAlgorithmFactory (line 401) | class A2CAlgorithmFactory(ActorCriticOnPolicyAlgorithmFactory[A2CParams,...
    method _get_algorithm_class (line 402) | def _get_algorithm_class(self) -> type[A2C]:
  class PPOAlgorithmFactory (line 406) | class PPOAlgorithmFactory(ActorCriticOnPolicyAlgorithmFactory[PPOParams,...
    method _get_algorithm_class (line 407) | def _get_algorithm_class(self) -> type[PPO]:
  class NPGAlgorithmFactory (line 411) | class NPGAlgorithmFactory(ActorCriticOnPolicyAlgorithmFactory[NPGParams,...
    method _get_algorithm_class (line 412) | def _get_algorithm_class(self) -> type[NPG]:
  class TRPOAlgorithmFactory (line 416) | class TRPOAlgorithmFactory(ActorCriticOnPolicyAlgorithmFactory[TRPOParam...
    method _get_algorithm_class (line 417) | def _get_algorithm_class(self) -> type[TRPO]:
  class DiscreteCriticOnlyOffPolicyAlgorithmFactory (line 421) | class DiscreteCriticOnlyOffPolicyAlgorithmFactory(
    method __init__ (line 425) | def __init__(
    method _get_algorithm_class (line 438) | def _get_algorithm_class(self) -> type[TAlgorithm]:
    method _create_policy (line 442) | def _create_policy(
    method _create_algorithm (line 452) | def _create_algorithm(self, envs: Environments, device: TDevice) -> TA...
  class DQNAlgorithmFactory (line 471) | class DQNAlgorithmFactory(DiscreteCriticOnlyOffPolicyAlgorithmFactory[DQ...
    method _create_policy (line 472) | def _create_policy(
    method _get_algorithm_class (line 488) | def _get_algorithm_class(self) -> type[DQN]:
  class IQNAlgorithmFactory (line 492) | class IQNAlgorithmFactory(DiscreteCriticOnlyOffPolicyAlgorithmFactory[IQ...
    method _create_policy (line 493) | def _create_policy(
    method _get_algorithm_class (line 515) | def _get_algorithm_class(self) -> type[IQN]:
  class DDPGAlgorithmFactory (line 519) | class DDPGAlgorithmFactory(OffPolicyAlgorithmFactory):
    method __init__ (line 520) | def __init__(
    method _create_algorithm (line 534) | def _create_algorithm(self, envs: Environments, device: TDevice) -> Al...
  class REDQAlgorithmFactory (line 563) | class REDQAlgorithmFactory(OffPolicyAlgorithmFactory):
    method __init__ (line 564) | def __init__(
    method _create_algorithm (line 578) | def _create_algorithm(self, envs: Environments, device: TDevice) -> Al...
  class ActorDualCriticsOffPolicyAlgorithmFactory (line 618) | class ActorDualCriticsOffPolicyAlgorithmFactory(
    method __init__ (line 622) | def __init__(
    method _get_algorithm_class (line 639) | def _get_algorithm_class(self) -> type[TAlgorithm]:
    method _get_discrete_last_size_use_action_shape (line 642) | def _get_discrete_last_size_use_action_shape(self) -> bool:
    method _get_critic_use_action (line 646) | def _get_critic_use_action(envs: Environments) -> bool:
    method _create_policy (line 650) | def _create_policy(
    method _create_algorithm (line 656) | def _create_algorithm(self, envs: Environments, device: TDevice) -> TA...
  class SACAlgorithmFactory (line 689) | class SACAlgorithmFactory(ActorDualCriticsOffPolicyAlgorithmFactory[SACP...
    method _create_policy (line 690) | def _create_policy(
    method _get_algorithm_class (line 702) | def _get_algorithm_class(self) -> type[SAC]:
  class DiscreteSACAlgorithmFactory (line 706) | class DiscreteSACAlgorithmFactory(
    method _create_policy (line 709) | def _create_policy(
    method _get_algorithm_class (line 721) | def _get_algorithm_class(self) -> type[DiscreteSAC]:
  class TD3AlgorithmFactory (line 725) | class TD3AlgorithmFactory(
    method _create_policy (line 728) | def _create_policy(
    method _get_algorithm_class (line 740) | def _get_algorithm_class(self) -> type[TD3]:

FILE: tianshou/highlevel/config.py
  class TrainingConfig (line 12) | class TrainingConfig(ToStringMixin):
    method __setstate__ (line 138) | def __setstate__(self, state: dict) -> None:
    method __post_init__ (line 143) | def __post_init__(self) -> None:
  class OnlineTrainingConfig (line 182) | class OnlineTrainingConfig(TrainingConfig):
    method __setstate__ (line 221) | def __setstate__(self, state: dict) -> None:
  class OnPolicyTrainingConfig (line 231) | class OnPolicyTrainingConfig(OnlineTrainingConfig):
  class OffPolicyTrainingConfig (line 250) | class OffPolicyTrainingConfig(OnlineTrainingConfig):

FILE: tianshou/highlevel/env.py
  class EnvType (line 29) | class EnvType(Enum):
    method is_discrete (line 35) | def is_discrete(self) -> bool:
    method is_continuous (line 38) | def is_continuous(self) -> bool:
    method assert_continuous (line 41) | def assert_continuous(self, requiring_entity: Any) -> None:
    method assert_discrete (line 45) | def assert_discrete(self, requiring_entity: Any) -> None:
    method from_env (line 50) | def from_env(env: Env) -> "EnvType":
  class EnvMode (line 59) | class EnvMode(Enum):
  class VectorEnvType (line 67) | class VectorEnvType(Enum):
    method create_venv (line 82) | def create_venv(
  class Environments (line 107) | class Environments(ToStringMixin, ABC):
    method __init__ (line 110) | def __init__(
    method from_factory_and_type (line 124) | def from_factory_and_type(
    method _tostring_includes (line 161) | def _tostring_includes(self) -> list[str]:
    method _tostring_additional_entries (line 164) | def _tostring_additional_entries(self) -> dict[str, Any]:
    method info (line 167) | def info(self) -> dict[str, Any]:
    method set_persistence (line 173) | def set_persistence(self, *p: Persistence) -> None:
    method get_action_shape (line 181) | def get_action_shape(self) -> TActionShape:
    method get_observation_shape (line 185) | def get_observation_shape(self) -> TObservationShape:
    method get_action_space (line 188) | def get_action_space(self) -> gym.Space:
    method get_observation_space (line 191) | def get_observation_space(self) -> gym.Space:
    method get_type (line 195) | def get_type(self) -> EnvType:
  class ContinuousEnvironments (line 199) | class ContinuousEnvironments(Environments):
    method __init__ (line 202) | def __init__(
    method from_factory (line 213) | def from_factory(
    method info (line 241) | def info(self) -> dict[str, Any]:
    method _get_continuous_env_info (line 247) | def _get_continuous_env_info(
    method get_action_shape (line 262) | def get_action_shape(self) -> TActionShape:
    method get_observation_shape (line 265) | def get_observation_shape(self) -> TObservationShape:
    method get_type (line 268) | def get_type(self) -> EnvType:
  class DiscreteEnvironments (line 272) | class DiscreteEnvironments(Environments):
    method __init__ (line 275) | def __init__(
    method from_factory (line 287) | def from_factory(
    method get_action_shape (line 315) | def get_action_shape(self) -> TActionShape:
    method get_observation_shape (line 318) | def get_observation_shape(self) -> TObservationShape:
    method get_type (line 321) | def get_type(self) -> EnvType:
  class EnvPoolFactory (line 325) | class EnvPoolFactory:
    method _transform_task (line 330) | def _transform_task(self, task: str) -> str:
    method _transform_kwargs (line 333) | def _transform_kwargs(self, kwargs: dict, mode: EnvMode) -> dict:
    method create_venv (line 345) | def create_venv(
  class EnvFactory (line 365) | class EnvFactory(ToStringMixin, ABC):
    method __init__ (line 366) | def __init__(self, venv_type: VectorEnvType):
    method _create_rng (line 375) | def _create_rng(seed: int | None) -> np.random.Generator:
    method _next_seed (line 385) | def _next_seed(rng: np.random.Generator) -> int:
    method _create_env (line 396) | def _create_env(self, mode: EnvMode) -> Env:
    method create_env (line 403) | def create_env(self, mode: EnvMode, seed: int | None = None) -> Env:
    method create_venv (line 425) | def create_venv(self, num_envs: int, mode: EnvMode, seed: int | None =...
    method create_envs (line 451) | def create_envs(
  class EnvFactoryRegistered (line 486) | class EnvFactoryRegistered(EnvFactory):
    method __init__ (line 491) | def __init__(
    method __setstate__ (line 521) | def __setstate__(self, state: dict) -> None:
    method _create_kwargs (line 537) | def _create_kwargs(self, mode: EnvMode) -> dict:
    method _create_env (line 547) | def _create_env(self, mode: EnvMode) -> Env:
    method create_venv (line 556) | def create_venv(self, num_envs: int, mode: EnvMode, seed: int | None =...

FILE: tianshou/highlevel/experiment.py
  class ExperimentConfig (line 126) | class ExperimentConfig:
  class ExperimentResult (line 156) | class ExperimentResult:
  class Experiment (line 170) | class Experiment(ToStringMixin):
    method __init__ (line 189) | def __init__(
    method from_directory (line 208) | def from_directory(cls, directory: str, restore_policy: bool = True) -...
    method seeding_info_str_static (line 222) | def seeding_info_str_static(seed: int) -> str:
    method get_seeding_info_as_str (line 226) | def get_seeding_info_as_str(self) -> str:
    method _set_seed (line 234) | def _set_seed(self) -> None:
    method _build_config_dict (line 240) | def _build_config_dict(self) -> dict:
    method save (line 243) | def save(self, directory: str) -> None:
    method persistence_dir_static (line 252) | def persistence_dir_static(
    method create_experiment_world (line 270) | def create_experiment_world(
    method run (line 402) | def run(
    method _watch_agent (line 474) | def _watch_agent(
  class ExperimentCollection (line 490) | class ExperimentCollection:
    method __init__ (line 493) | def __init__(self, experiments: list[Experiment]):
    method run (line 496) | def run(
  class ExperimentBuilder (line 510) | class ExperimentBuilder(ABC, Generic[TTrainingConfig]):
    method __init__ (line 519) | def __init__(
    method _create_training_config (line 546) | def _create_training_config(self) -> TTrainingConfig:
    method copy (line 549) | def copy(self) -> Self:
    method experiment_config (line 553) | def experiment_config(self) -> ExperimentConfig:
    method experiment_config (line 557) | def experiment_config(self, experiment_config: ExperimentConfig) -> None:
    method training_config (line 561) | def training_config(self) -> TrainingConfig:
    method training_config (line 565) | def training_config(self, config: TrainingConfig) -> None:
    method with_logger_factory (line 568) | def with_logger_factory(self, logger_factory: LoggerFactory) -> Self:
    method with_algorithm_wrapper_factory (line 579) | def with_algorithm_wrapper_factory(
    method with_optim_default (line 590) | def with_optim_default(self, optim_factory: OptimizerFactoryFactory) -...
    method with_epoch_train_callback (line 604) | def with_epoch_train_callback(self, callback: EpochTrainCallback) -> S...
    method with_epoch_test_callback (line 613) | def with_epoch_test_callback(self, callback: EpochTestCallback) -> Self:
    method with_epoch_stop_callback (line 622) | def with_epoch_stop_callback(self, callback: EpochStopCallback) -> Self:
    method with_name (line 633) | def with_name(
    method with_collector_factory (line 646) | def with_collector_factory(self, collector_factory: CollectorFactory) ...
    method _create_algorithm_factory (line 656) | def _create_algorithm_factory(self) -> AlgorithmFactory:
    method _get_optim_factory (line 659) | def _get_optim_factory(self) -> OptimizerFactoryFactory:
    method build (line 665) | def build(self) -> Experiment:
    method build_seeded_collection (line 686) | def build_seeded_collection(self, num_experiments: int) -> ExperimentC...
    method build_and_run (line 705) | def build_and_run(
  class OnPolicyExperimentBuilder (line 741) | class OnPolicyExperimentBuilder(ExperimentBuilder[OnPolicyTrainingConfig...
    method __init__ (line 742) | def __init__(
    method _create_training_config (line 756) | def _create_training_config(self) -> OnPolicyTrainingConfig:
  class OffPolicyExperimentBuilder (line 760) | class OffPolicyExperimentBuilder(ExperimentBuilder[OffPolicyTrainingConf...
    method __init__ (line 761) | def __init__(
    method _create_training_config (line 775) | def _create_training_config(self) -> OffPolicyTrainingConfig:
  class _BuilderMixinActorFactory (line 779) | class _BuilderMixinActorFactory(ActorFutureProviderProtocol):
    method __init__ (line 780) | def __init__(self, continuous_actor_type: ContinuousActorType):
    method with_actor_factory (line 785) | def with_actor_factory(self, actor_factory: ActorFactory) -> Self:
    method _with_actor_factory_default (line 796) | def _with_actor_factory_default(
    method get_actor_future (line 820) | def get_actor_future(self) -> ActorFuture:
    method _get_actor_factory (line 824) | def _get_actor_factory(self) -> ActorFactory:
  class _BuilderMixinActorFactory_ContinuousGaussian (line 833) | class _BuilderMixinActorFactory_ContinuousGaussian(_BuilderMixinActorFac...
    method __init__ (line 836) | def __init__(self) -> None:
    method with_actor_factory_default (line 839) | def with_actor_factory_default(
  class _BuilderMixinActorFactory_ContinuousDeterministic (line 865) | class _BuilderMixinActorFactory_ContinuousDeterministic(_BuilderMixinAct...
    method __init__ (line 868) | def __init__(self) -> None:
    method with_actor_factory_default (line 871) | def with_actor_factory_default(
  class _BuilderMixinActorFactory_DiscreteOnly (line 887) | class _BuilderMixinActorFactory_DiscreteOnly(_BuilderMixinActorFactory):
    method __init__ (line 890) | def __init__(self) -> None:
    method with_actor_factory_default (line 893) | def with_actor_factory_default(
  class _BuilderMixinCriticsFactory (line 909) | class _BuilderMixinCriticsFactory:
    method __init__ (line 910) | def __init__(self, num_critics: int, actor_future_provider: ActorFutur...
    method _with_critic_factory (line 914) | def _with_critic_factory(self, idx: int, critic_factory: CriticFactory...
    method _with_critic_factory_default (line 918) | def _with_critic_factory_default(
    method _with_critic_factory_use_actor (line 930) | def _with_critic_factory_use_actor(self, idx: int) -> Self:
    method _get_critic_factory (line 936) | def _get_critic_factory(self, idx: int) -> CriticFactory:
  class _BuilderMixinSingleCriticFactory (line 944) | class _BuilderMixinSingleCriticFactory(_BuilderMixinCriticsFactory):
    method __init__ (line 945) | def __init__(self, actor_future_provider: ActorFutureProviderProtocol)...
    method with_critic_factory (line 948) | def with_critic_factory(self, critic_factory: CriticFactory) -> Self:
    method with_critic_factory_default (line 957) | def with_critic_factory_default(
  class _BuilderMixinSingleCriticCanUseActorFactory (line 972) | class _BuilderMixinSingleCriticCanUseActorFactory(_BuilderMixinSingleCri...
    method __init__ (line 973) | def __init__(self, actor_future_provider: ActorFutureProviderProtocol)...
    method with_critic_factory_use_actor (line 976) | def with_critic_factory_use_actor(self) -> Self:
  class _BuilderMixinDualCriticFactory (line 981) | class _BuilderMixinDualCriticFactory(_BuilderMixinCriticsFactory):
    method __init__ (line 982) | def __init__(self, actor_future_provider: ActorFutureProviderProtocol)...
    method with_common_critic_factory (line 985) | def with_common_critic_factory(self, critic_factory: CriticFactory) ->...
    method with_common_critic_factory_default (line 995) | def with_common_critic_factory_default(
    method with_common_critic_factory_use_actor (line 1010) | def with_common_critic_factory_use_actor(self) -> Self:
    method with_critic1_factory (line 1016) | def with_critic1_factory(self, critic_factory: CriticFactory) -> Self:
    method with_critic1_factory_default (line 1025) | def with_critic1_factory_default(
    method with_critic1_factory_use_actor (line 1039) | def with_critic1_factory_use_actor(self) -> Self:
    method with_critic2_factory (line 1043) | def with_critic2_factory(self, critic_factory: CriticFactory) -> Self:
    method with_critic2_factory_default (line 1052) | def with_critic2_factory_default(
    method with_critic2_factory_use_actor (line 1066) | def with_critic2_factory_use_actor(self) -> Self:
  class _BuilderMixinCriticEnsembleFactory (line 1071) | class _BuilderMixinCriticEnsembleFactory:
    method __init__ (line 1072) | def __init__(self) -> None:
    method with_critic_ensemble_factory (line 1075) | def with_critic_ensemble_factory(self, factory: CriticEnsembleFactory)...
    method with_critic_ensemble_factory_default (line 1086) | def with_critic_ensemble_factory_default(
    method _get_critic_ensemble_factory (line 1098) | def _get_critic_ensemble_factory(self) -> CriticEnsembleFactory:
  class ReinforceExperimentBuilder (line 1105) | class ReinforceExperimentBuilder(
    method __init__ (line 1109) | def __init__(
    method with_reinforce_params (line 1120) | def with_reinforce_params(self, params: ReinforceParams) -> Self:
    method _create_algorithm_factory (line 1124) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class A2CExperimentBuilder (line 1133) | class A2CExperimentBuilder(
    method __init__ (line 1138) | def __init__(
    method with_a2c_params (line 1150) | def with_a2c_params(self, params: A2CParams) -> Self:
    method _create_algorithm_factory (line 1154) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class PPOExperimentBuilder (line 1164) | class PPOExperimentBuilder(
    method __init__ (line 1169) | def __init__(
    method with_ppo_params (line 1180) | def with_ppo_params(self, params: PPOParams) -> Self:
    method _create_algorithm_factory (line 1184) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class NPGExperimentBuilder (line 1194) | class NPGExperimentBuilder(
    method __init__ (line 1199) | def __init__(
    method with_npg_params (line 1210) | def with_npg_params(self, params: NPGParams) -> Self:
    method _create_algorithm_factory (line 1214) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class TRPOExperimentBuilder (line 1224) | class TRPOExperimentBuilder(
    method __init__ (line 1229) | def __init__(
    method with_trpo_params (line 1240) | def with_trpo_params(self, params: TRPOParams) -> Self:
    method _create_algorithm_factory (line 1244) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class DQNExperimentBuilder (line 1254) | class DQNExperimentBuilder(
    method __init__ (line 1257) | def __init__(
    method with_dqn_params (line 1269) | def with_dqn_params(self, params: DQNParams) -> Self:
    method with_model_factory (line 1273) | def with_model_factory(self, module_factory: IntermediateModuleFactory...
    method with_model_factory_default (line 1280) | def with_model_factory_default(
    method _create_algorithm_factory (line 1302) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class IQNExperimentBuilder (line 1311) | class IQNExperimentBuilder(OffPolicyExperimentBuilder):
    method __init__ (line 1312) | def __init__(
    method with_iqn_params (line 1326) | def with_iqn_params(self, params: IQNParams) -> Self:
    method with_preprocess_network_factory (line 1330) | def with_preprocess_network_factory(self, module_factory: Intermediate...
    method _create_algorithm_factory (line 1334) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class DDPGExperimentBuilder (line 1348) | class DDPGExperimentBuilder(
    method __init__ (line 1353) | def __init__(
    method with_ddpg_params (line 1364) | def with_ddpg_params(self, params: DDPGParams) -> Self:
    method _create_algorithm_factory (line 1368) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class REDQExperimentBuilder (line 1378) | class REDQExperimentBuilder(
    method __init__ (line 1383) | def __init__(
    method with_redq_params (line 1394) | def with_redq_params(self, params: REDQParams) -> Self:
    method _create_algorithm_factory (line 1398) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class SACExperimentBuilder (line 1408) | class SACExperimentBuilder(
    method __init__ (line 1413) | def __init__(
    method with_sac_params (line 1424) | def with_sac_params(self, params: SACParams) -> Self:
    method _create_algorithm_factory (line 1428) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class DiscreteSACExperimentBuilder (line 1439) | class DiscreteSACExperimentBuilder(
    method __init__ (line 1444) | def __init__(
    method with_sac_params (line 1455) | def with_sac_params(self, params: DiscreteSACParams) -> Self:
    method _create_algorithm_factory (line 1459) | def _create_algorithm_factory(self) -> AlgorithmFactory:
  class TD3ExperimentBuilder (line 1470) | class TD3ExperimentBuilder(
    method __init__ (line 1475) | def __init__(
    method with_td3_params (line 1486) | def with_td3_params(self, params: TD3Params) -> Self:
    method _create_algorithm_factory (line 1490) | def _create_algorithm_factory(self) -> AlgorithmFactory:

FILE: tianshou/highlevel/logger.py
  class LoggerFactory (line 13) | class LoggerFactory(ToStringMixin, ABC):
    method create_logger (line 15) | def create_logger(
    method get_logger_class (line 32) | def get_logger_class(self) -> type[TLogger]:
  class LoggerFactoryDefault (line 36) | class LoggerFactoryDefault(LoggerFactory):
    method __init__ (line 42) | def __init__(
    method create_logger (line 60) | def create_logger(
    method _create_writer (line 89) | def _create_writer(self, log_dir: str) -> SummaryWriter:
    method get_logger_class (line 104) | def get_logger_class(self) -> type[TLogger]:

FILE: tianshou/highlevel/module/actor.py
  class ContinuousActorType (line 35) | class ContinuousActorType(Enum):
  class ActorFuture (line 42) | class ActorFuture:
  class ActorFutureProviderProtocol (line 48) | class ActorFutureProviderProtocol(Protocol):
    method get_actor_future (line 49) | def get_actor_future(self) -> ActorFuture:
  class ActorFactory (line 53) | class ActorFactory(ModuleFactory, ToStringMixin, ABC):
    method create_module (line 55) | def create_module(self, envs: Environments, device: TDevice) -> Actor ...
    method create_dist_fn (line 59) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
    method _init_linear (line 67) | def _init_linear(actor: torch.nn.Module) -> None:
  class ActorFactoryDefault (line 83) | class ActorFactoryDefault(ActorFactory):
    method __init__ (line 88) | def __init__(
    method _create_factory (line 104) | def _create_factory(self, envs: Environments) -> ActorFactory:
    method create_module (line 139) | def create_module(self, envs: Environments, device: TDevice) -> Actor ...
    method create_dist_fn (line 143) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class ActorFactoryContinuous (line 148) | class ActorFactoryContinuous(ActorFactory, ABC):
  class ActorFactoryContinuousDeterministicNet (line 152) | class ActorFactoryContinuousDeterministicNet(ActorFactoryContinuous):
    method __init__ (line 153) | def __init__(self, hidden_sizes: Sequence[int], activation: ModuleType...
    method create_module (line 157) | def create_module(self, envs: Environments, device: TDevice) -> Actor:
    method create_dist_fn (line 169) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class ActorFactoryContinuousGaussianNet (line 173) | class ActorFactoryContinuousGaussianNet(ActorFactoryContinuous):
    method __init__ (line 174) | def __init__(
    method create_module (line 193) | def create_module(self, envs: Environments, device: TDevice) -> Actor:
    method create_dist_fn (line 213) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class ActorFactoryDiscreteNet (line 217) | class ActorFactoryDiscreteNet(ActorFactory):
    method __init__ (line 218) | def __init__(
    method create_module (line 228) | def create_module(self, envs: Environments, device: TDevice) -> Actor:
    method create_dist_fn (line 241) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class ActorFactoryTransientStorageDecorator (line 247) | class ActorFactoryTransientStorageDecorator(ActorFactory):
    method __init__ (line 250) | def __init__(self, actor_factory: ActorFactory, actor_future: ActorFut...
    method __getstate__ (line 254) | def __getstate__(self) -> dict:
    method __setstate__ (line 259) | def __setstate__(self, state: dict) -> None:
    method _tostring_excludes (line 263) | def _tostring_excludes(self) -> list[str]:
    method create_module (line 266) | def create_module(self, envs: Environments, device: TDevice) -> Actor ...
    method create_dist_fn (line 271) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont | N...
  class IntermediateModuleFactoryFromActorFactory (line 275) | class IntermediateModuleFactoryFromActorFactory(IntermediateModuleFactory):
    method __init__ (line 276) | def __init__(self, actor_factory: ActorFactory):
    method create_intermediate_module (line 279) | def create_intermediate_module(self, envs: Environments, device: TDevi...

FILE: tianshou/highlevel/module/core.py
  function init_linear_orthogonal (line 12) | def init_linear_orthogonal(module: torch.nn.Module) -> None:
  class ModuleFactory (line 23) | class ModuleFactory(ABC):
    method create_module (line 27) | def create_module(self, envs: Environments, device: TDevice) -> torch....

FILE: tianshou/highlevel/module/critic.py
  class CriticFactory (line 17) | class CriticFactory(ToStringMixin, ABC):
    method create_module (line 21) | def create_module(
  class CriticFactoryDefault (line 38) | class CriticFactoryDefault(CriticFactory):
    method __init__ (line 43) | def __init__(
    method create_module (line 51) | def create_module(
  class CriticFactoryContinuousNet (line 81) | class CriticFactoryContinuousNet(CriticFactory):
    method __init__ (line 82) | def __init__(self, hidden_sizes: Sequence[int], activation: ModuleType...
    method create_module (line 86) | def create_module(
  class CriticFactoryDiscreteNet (line 106) | class CriticFactoryDiscreteNet(CriticFactory):
    method __init__ (line 107) | def __init__(self, hidden_sizes: Sequence[int], activation: ModuleType...
    method create_module (line 111) | def create_module(
  class CriticFactoryReuseActor (line 134) | class CriticFactoryReuseActor(CriticFactory):
    method __init__ (line 146) | def __init__(self, actor_future: ActorFuture):
    method _tostring_excludes (line 150) | def _tostring_excludes(self) -> list[str]:
    method create_module (line 153) | def create_module(
  class CriticEnsembleFactory (line 183) | class CriticEnsembleFactory:
    method create_module (line 185) | def create_module(
  class CriticEnsembleFactoryDefault (line 195) | class CriticEnsembleFactoryDefault(CriticEnsembleFactory):
    method __init__ (line 200) | def __init__(self, hidden_sizes: Sequence[int] = DEFAULT_HIDDEN_SIZES):
    method create_module (line 203) | def create_module(
  class CriticEnsembleFactoryContinuousNet (line 227) | class CriticEnsembleFactoryContinuousNet(CriticEnsembleFactory):
    method __init__ (line 228) | def __init__(self, hidden_sizes: Sequence[int]):
    method create_module (line 231) | def create_module(

FILE: tianshou/highlevel/module/intermediate.py
  class IntermediateModule (line 13) | class IntermediateModule:
    method get_module_with_vector_output (line 19) | def get_module_with_vector_output(self) -> ModuleWithVectorOutput:
  class IntermediateModuleFactory (line 26) | class IntermediateModuleFactory(ToStringMixin, ModuleFactory, ABC):
    method create_intermediate_module (line 30) | def create_intermediate_module(self, envs: Environments, device: TDevi...
    method create_module (line 33) | def create_module(self, envs: Environments, device: TDevice) -> torch....

FILE: tianshou/highlevel/module/special.py
  class ImplicitQuantileNetworkFactory (line 11) | class ImplicitQuantileNetworkFactory(ModuleFactory, ToStringMixin):
    method __init__ (line 12) | def __init__(
    method create_module (line 22) | def create_module(self, envs: Environments, device: TDevice) -> Implic...

FILE: tianshou/highlevel/params/algorithm_params.py
  class ParamTransformerData (line 19) | class ParamTransformerData:
  class ParamTransformer (line 31) | class ParamTransformer(ABC):
    method transform (line 41) | def transform(self, params: dict[str, Any], data: ParamTransformerData...
    method get (line 45) | def get(
  class ParamTransformerDrop (line 62) | class ParamTransformerDrop(ParamTransformer):
    method __init__ (line 63) | def __init__(self, *keys: str):
    method transform (line 66) | def transform(self, kwargs: dict[str, Any], data: ParamTransformerData...
  class ParamTransformerRename (line 71) | class ParamTransformerRename(ParamTransformer):
    method __init__ (line 72) | def __init__(self, renamed_params: dict[str, str]):
    method transform (line 75) | def transform(self, kwargs: dict[str, Any], data: ParamTransformerData...
  class ParamTransformerChangeValue (line 82) | class ParamTransformerChangeValue(ParamTransformer):
    method __init__ (line 83) | def __init__(self, key: str):
    method transform (line 86) | def transform(self, params: dict[str, Any], data: ParamTransformerData...
    method change_value (line 90) | def change_value(self, value: Any, data: ParamTransformerData) -> Any:
  class ParamTransformerOptimFactory (line 94) | class ParamTransformerOptimFactory(ParamTransformer):
    method __init__ (line 101) | def __init__(
    method transform (line 113) | def transform(self, params: dict[str, Any], data: ParamTransformerData...
  class ParamTransformerAutoAlpha (line 132) | class ParamTransformerAutoAlpha(ParamTransformer):
    method __init__ (line 133) | def __init__(self, key: str):
    method transform (line 136) | def transform(self, kwargs: dict[str, Any], data: ParamTransformerData...
  class ParamTransformerNoiseFactory (line 142) | class ParamTransformerNoiseFactory(ParamTransformerChangeValue):
    method change_value (line 143) | def change_value(self, value: Any, data: ParamTransformerData) -> Any:
  class ParamTransformerFloatEnvParamFactory (line 149) | class ParamTransformerFloatEnvParamFactory(ParamTransformerChangeValue):
    method change_value (line 150) | def change_value(self, value: Any, data: ParamTransformerData) -> Any:
  class ParamTransformerActionScaling (line 156) | class ParamTransformerActionScaling(ParamTransformerChangeValue):
    method change_value (line 157) | def change_value(self, value: Any, data: ParamTransformerData) -> Any:
  class GetParamTransformersProtocol (line 164) | class GetParamTransformersProtocol(Protocol):
    method _get_param_transformers (line 165) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class Params (line 170) | class Params(GetParamTransformersProtocol, ToStringMixin):
    method create_kwargs (line 171) | def create_kwargs(self, data: ParamTransformerData) -> dict[str, Any]:
    method _get_param_transformers (line 177) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinSingleModel (line 182) | class ParamsMixinSingleModel(GetParamTransformersProtocol):
    method _get_param_transformers (line 190) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinActorAndCritic (line 197) | class ParamsMixinActorAndCritic(GetParamTransformersProtocol):
    method _get_param_transformers (line 211) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinActionScaling (line 223) | class ParamsMixinActionScaling(GetParamTransformersProtocol):
    method _get_param_transformers (line 239) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinActionScalingAndBounding (line 244) | class ParamsMixinActionScalingAndBounding(ParamsMixinActionScaling):
  class ParamsMixinExplorationNoise (line 265) | class ParamsMixinExplorationNoise(GetParamTransformersProtocol):
    method _get_param_transformers (line 274) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinNStepReturnHorizon (line 279) | class ParamsMixinNStepReturnHorizon:
  class ParamsMixinGamma (line 293) | class ParamsMixinGamma:
  class ParamsMixinTau (line 307) | class ParamsMixinTau:
  class ParamsMixinDeterministicEval (line 322) | class ParamsMixinDeterministicEval:
  class OnPolicyAlgorithmParams (line 341) | class OnPolicyAlgorithmParams(
    method _get_param_transformers (line 348) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ReinforceParams (line 356) | class ReinforceParams(OnPolicyAlgorithmParams):
  class ParamsMixinGeneralAdvantageEstimation (line 366) | class ParamsMixinGeneralAdvantageEstimation(GetParamTransformersProtocol):
    method _get_param_transformers (line 389) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ActorCriticOnPolicyParams (line 394) | class ActorCriticOnPolicyParams(OnPolicyAlgorithmParams):
  class A2CParams (line 413) | class A2CParams(ActorCriticOnPolicyParams, ParamsMixinGeneralAdvantageEs...
    method _get_param_transformers (line 439) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class PPOParams (line 446) | class PPOParams(A2CParams):
  class NPGParams (line 506) | class NPGParams(ActorCriticOnPolicyParams, ParamsMixinGeneralAdvantageEs...
    method _get_param_transformers (line 532) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class TRPOParams (line 539) | class TRPOParams(NPGParams):
  class ParamsMixinActorAndDualCritics (line 553) | class ParamsMixinActorAndDualCritics(GetParamTransformersProtocol):
    method _get_param_transformers (line 573) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class ParamsMixinAlpha (line 588) | class ParamsMixinAlpha(GetParamTransformersProtocol):
    method _get_param_transformers (line 604) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class _SACParams (line 609) | class _SACParams(
    method _get_param_transformers (line 618) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class SACParams (line 626) | class SACParams(_SACParams, ParamsMixinExplorationNoise, ParamsMixinActi...
    method _get_param_transformers (line 627) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class DiscreteSACParams (line 635) | class DiscreteSACParams(_SACParams):
  class QLearningOffPolicyParams (line 640) | class QLearningOffPolicyParams(
    method _get_param_transformers (line 674) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class DQNParams (line 681) | class DQNParams(QLearningOffPolicyParams):
    method _get_param_transformers (line 704) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class IQNParams (line 709) | class IQNParams(QLearningOffPolicyParams):
    method _get_param_transformers (line 723) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class DDPGParams (line 730) | class DDPGParams(
    method _get_param_transformers (line 739) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class REDQParams (line 748) | class REDQParams(DDPGParams, ParamsMixinDeterministicEval, ParamsMixinAl...
    method _get_param_transformers (line 791) | def _get_param_transformers(self) -> list[ParamTransformer]:
  class TD3Params (line 798) | class TD3Params(
    method _get_param_transformers (line 838) | def _get_param_transformers(self) -> list[ParamTransformer]:

FILE: tianshou/highlevel/params/algorithm_wrapper.py
  class AlgorithmWrapperFactory (line 19) | class AlgorithmWrapperFactory(Generic[TAlgorithmOut], ToStringMixin, ABC):
    method create_wrapped_algorithm (line 21) | def create_wrapped_algorithm(
  class AlgorithmWrapperFactoryIntrinsicCuriosity (line 31) | class AlgorithmWrapperFactoryIntrinsicCuriosity(
    method __init__ (line 34) | def __init__(
    method create_wrapped_algorithm (line 53) | def create_wrapped_algorithm(

FILE: tianshou/highlevel/params/alpha.py
  class AutoAlphaFactory (line 12) | class AutoAlphaFactory(ToStringMixin, ABC):
    method create_auto_alpha (line 14) | def create_auto_alpha(
  class AutoAlphaFactoryDefault (line 22) | class AutoAlphaFactoryDefault(AutoAlphaFactory):
    method __init__ (line 23) | def __init__(
    method create_auto_alpha (line 46) | def create_auto_alpha(

FILE: tianshou/highlevel/params/collector.py
  class CollectorFactory (line 8) | class CollectorFactory(ABC):
    method create_collector (line 10) | def create_collector(
  class CollectorFactoryDefault (line 29) | class CollectorFactoryDefault(CollectorFactory):
    method create_collector (line 30) | def create_collector(

FILE: tianshou/highlevel/params/dist_fn.py
  class DistributionFunctionFactory (line 12) | class DistributionFunctionFactory(ToStringMixin, ABC):
    method create_dist_fn (line 15) | def create_dist_fn(
  class DistributionFunctionFactoryCategorical (line 22) | class DistributionFunctionFactoryCategorical(DistributionFunctionFactory):
    method __init__ (line 23) | def __init__(self, is_probs_input: bool = True):
    method create_dist_fn (line 30) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrete:
    method _dist_fn (line 39) | def _dist_fn(logits: torch.Tensor) -> torch.distributions.Categorical:
    method _dist_fn_probs (line 44) | def _dist_fn_probs(probs: torch.Tensor) -> torch.distributions.Categor...
  class DistributionFunctionFactoryIndependentGaussians (line 48) | class DistributionFunctionFactoryIndependentGaussians(DistributionFuncti...
    method create_dist_fn (line 49) | def create_dist_fn(self, envs: Environments) -> TDistFnDiscrOrCont:
    method _dist_fn (line 55) | def _dist_fn(

FILE: tianshou/highlevel/params/env_param.py
  class EnvValueFactory (line 14) | class EnvValueFactory(Generic[TValue, TEnvs], ToStringMixin, ABC):
    method create_value (line 16) | def create_value(self, envs: TEnvs) -> TValue:
  class FloatEnvValueFactory (line 20) | class FloatEnvValueFactory(EnvValueFactory[float, TEnvs], Generic[TEnvs]...
  class FloatEnvValueFactoryMaxActionScaled (line 24) | class FloatEnvValueFactoryMaxActionScaled(FloatEnvValueFactory[Continuou...
    method __init__ (line 25) | def __init__(self, value: float):
    method create_value (line 29) | def create_value(self, envs: ContinuousEnvironments) -> float:
  class MaxActionScaled (line 34) | class MaxActionScaled(FloatEnvValueFactoryMaxActionScaled):

FILE: tianshou/highlevel/params/lr_scheduler.py
  class LRSchedulerFactoryFactory (line 9) | class LRSchedulerFactoryFactory(ToStringMixin, ABC):
    method create_lr_scheduler_factory (line 13) | def create_lr_scheduler_factory(self) -> LRSchedulerFactory:
  class LRSchedulerFactoryFactoryLinear (line 17) | class LRSchedulerFactoryFactoryLinear(LRSchedulerFactoryFactory):
    method __init__ (line 18) | def __init__(self, training_config: TrainingConfig):
    method create_lr_scheduler_factory (line 21) | def create_lr_scheduler_factory(self) -> LRSchedulerFactory:

FILE: tianshou/highlevel/params/noise.py
  class NoiseFactory (line 9) | class NoiseFactory(ToStringMixin, ABC):
    method create_noise (line 11) | def create_noise(self, envs: Environments) -> BaseNoise:
  class NoiseFactoryMaxActionScaledGaussian (line 15) | class NoiseFactoryMaxActionScaledGaussian(NoiseFactory):
    method __init__ (line 16) | def __init__(self, std_fraction: float):
    method create_noise (line 26) | def create_noise(self, envs: Environments) -> GaussianNoise:
  class MaxActionScaledGaussian (line 32) | class MaxActionScaledGaussian(NoiseFactoryMaxActionScaledGaussian):

FILE: tianshou/highlevel/params/optim.py
  class OptimizerWithLearningRateProtocol (line 18) | class OptimizerWithLearningRateProtocol(Protocol):
    method __call__ (line 19) | def __call__(self, parameters: Any, lr: float, **kwargs: Any) -> torch...
  class OptimizerFactoryFactory (line 23) | class OptimizerFactoryFactory(ABC, ToStringMixin):
    method default (line 25) | def default() -> "OptimizerFactoryFactory":
    method create_optimizer_factory (line 29) | def create_optimizer_factory(self, lr: float) -> OptimizerFactory:
  class OptimizerFactoryFactoryTorch (line 33) | class OptimizerFactoryFactoryTorch(OptimizerFactoryFactory):
    method __init__ (line 34) | def __init__(self, optim_class: OptimizerWithLearningRateProtocol, **k...
    method create_optimizer_factory (line 45) | def create_optimizer_factory(self, lr: float) -> OptimizerFactory:
  class OptimizerFactoryFactoryAdam (line 49) | class OptimizerFactoryFactoryAdam(OptimizerFactoryFactory):
    method __init__ (line 50) | def __init__(
    method create_optimizer_factory (line 60) | def create_optimizer_factory(self, lr: float) -> AdamOptimizerFactory:
  class OptimizerFactoryFactoryRMSprop (line 69) | class OptimizerFactoryFactoryRMSprop(OptimizerFactoryFactory):
    method __init__ (line 70) | def __init__(
    method create_optimizer_factory (line 84) | def create_optimizer_factory(self, lr: float) -> RMSpropOptimizerFactory:

FILE: tianshou/highlevel/persistence.py
  class PersistEvent (line 18) | class PersistEvent(Enum):
  class RestoreEvent (line 25) | class RestoreEvent(Enum):
  class Persistence (line 32) | class Persistence(ABC):
    method persist (line 34) | def persist(self, event: PersistEvent, world: World) -> None:
    method restore (line 38) | def restore(self, event: RestoreEvent, world: World) -> None:
  class PersistenceGroup (line 42) | class PersistenceGroup(Persistence):
    method __init__ (line 45) | def __init__(self, *p: Persistence, enabled: bool = True):
    method persist (line 49) | def persist(self, event: PersistEvent, world: World) -> None:
    method restore (line 55) | def restore(self, event: RestoreEvent, world: World) -> None:
  class PolicyPersistence (line 60) | class PolicyPersistence:
    class Mode (line 61) | class Mode(Enum):
      method get_filename (line 76) | def get_filename(self) -> str:
    method __init__ (line 79) | def __init__(
    method persist (line 96) | def persist(self, policy: torch.nn.Module, world: World) -> None:
    method restore (line 112) | def restore(self, policy: torch.nn.Module, world: World, device: "TDev...
    method get_save_best_fn (line 127) | def get_save_best_fn(self, world: World) -> Callable[[torch.nn.Module]...
    method get_save_checkpoint_fn (line 133) | def get_save_checkpoint_fn(self, world: World) -> Callable[[int, int, ...

FILE: tianshou/highlevel/trainer.py
  class TrainingContext (line 18) | class TrainingContext:
    method __init__ (line 19) | def __init__(self, algorithm: TAlgorithm, envs: Environments, logger: ...
  class EpochTrainCallback (line 25) | class EpochTrainCallback(ToStringMixin, ABC):
    method callback (line 31) | def callback(self, epoch: int, env_step: int, context: TrainingContext...
    method get_trainer_fn (line 34) | def get_trainer_fn(self, context: TrainingContext) -> Callable[[int, i...
  class EpochTestCallback (line 41) | class EpochTestCallback(ToStringMixin, ABC):
    method callback (line 45) | def callback(self, epoch: int, env_step: int | None, context: Training...
    method get_trainer_fn (line 48) | def get_trainer_fn(self, context: TrainingContext) -> Callable[[int, i...
  class EpochStopCallback (line 55) | class EpochStopCallback(ToStringMixin, ABC):
    method should_stop (line 61) | def should_stop(self, mean_rewards: float, context: TrainingContext) -...
    method get_trainer_fn (line 69) | def get_trainer_fn(self, context: TrainingContext) -> Callable[[float]...
  class TrainerCallbacks (line 77) | class TrainerCallbacks:
  class EpochTrainCallbackDQNSetEps (line 85) | class EpochTrainCallbackDQNSetEps(EpochTrainCallback):
    method __init__ (line 90) | def __init__(self, eps: float):
    method callback (line 93) | def callback(self, epoch: int, env_step: int, context: TrainingContext...
  class EpochTrainCallbackDQNEpsLinearDecay (line 99) | class EpochTrainCallbackDQNEpsLinearDecay(EpochTrainCallback):
    method __init__ (line 104) | def __init__(self, eps_train: float, eps_train_final: float, decay_ste...
    method callback (line 109) | def callback(self, epoch: int, env_step: int, context: TrainingContext...
  class EpochTestCallbackDQNSetEps (line 123) | class EpochTestCallbackDQNSetEps(EpochTestCallback):
    method __init__ (line 128) | def __init__(self, eps: float):
    method callback (line 131) | def callback(self, epoch: int, env_step: int | None, context: Training...
  class EpochStopCallbackRewardThreshold (line 137) | class EpochStopCallbackRewardThreshold(EpochStopCallback):
    method __init__ (line 142) | def __init__(self, threshold: float | None = None):
    method should_stop (line 149) | def should_stop(self, mean_rewards: float, context: TrainingContext) -...

FILE: tianshou/highlevel/world.py
  class World (line 14) | class World:
    method persist_path (line 26) | def persist_path(self, filename: str) -> str:
    method restore_path (line 29) | def restore_path(self, filename: str) -> str:

FILE: tianshou/trainer.py
  class TrainerParams (line 81) | class TrainerParams(ToStringMixin):
    method __setstate__ (line 208) | def __setstate__(self, state: dict) -> None:
    method __post_init__ (line 211) | def __post_init__(self) -> None:
  class OnlineTrainerParams (line 236) | class OnlineTrainerParams(TrainerParams):
    method __setstate__ (line 279) | def __setstate__(self, state: dict) -> None:
    method __post_init__ (line 290) | def __post_init__(self) -> None:
  class OnPolicyTrainerParams (line 301) | class OnPolicyTrainerParams(OnlineTrainerParams):
  class OffPolicyTrainerParams (line 320) | class OffPolicyTrainerParams(OnlineTrainerParams):
  class OfflineTrainerParams (line 335) | class OfflineTrainerParams(TrainerParams):
  class Trainer (line 354) | class Trainer(Generic[TAlgorithm, TTrainerParams], ABC):
    method __init__ (line 363) | def __init__(
    method _compute_score_fn_default (line 409) | def _compute_score_fn_default(stat: CollectStats) -> float:
    method _pbar (line 420) | def _pbar(self) -> Callable[..., tqdm.tqdm]:
    method _reset_collectors (line 429) | def _reset_collectors(self, reset_buffer: bool = False) -> None:
    method reset (line 433) | def reset(self, reset_collectors: bool = True, reset_collector_buffers...
    method _log_params (line 472) | def _log_params(self, module: torch.nn.Module) -> None:
    class _TrainingStepResult (line 498) | class _TrainingStepResult(ABC):
      method get_steps_in_epoch_advancement (line 500) | def get_steps_in_epoch_advancement(self) -> int:
      method get_collect_stats (line 507) | def get_collect_stats(self) -> CollectStats | None:
      method get_training_stats (line 511) | def get_training_stats(self) -> TrainingStats | None:
      method is_training_done (line 515) | def is_training_done(self) -> bool:
      method get_env_step_advancement (line 519) | def get_env_step_advancement(self) -> int:
    method _create_epoch_pbar_data_dict (line 526) | def _create_epoch_pbar_data_dict(
    method _create_info_stats (line 531) | def _create_info_stats(
    method execute_epoch (line 574) | def execute_epoch(self) -> EpochStats:
    method _should_stop_training_early (line 634) | def _should_stop_training_early(
    method _collect_test_episodes (line 657) | def _collect_test_episodes(
    method _test_step (line 675) | def _test_step(
    method _training_step (line 728) | def _training_step(self) -> _TrainingStepResult:
    method _update_moving_avg_stats_and_log_update_data (line 731) | def _update_moving_avg_stats_and_log_update_data(self, update_stat: Tr...
    method _update_moving_avg_stats_and_get_averaged_data (line 740) | def _update_moving_avg_stats_and_get_averaged_data(
    method run (line 756) | def run(
  class OfflineTrainer (line 780) | class OfflineTrainer(Trainer[OfflineAlgorithm, OfflineTrainerParams]):
    method __init__ (line 785) | def __init__(
    class _TrainingStepResult (line 793) | class _TrainingStepResult(Trainer._TrainingStepResult):
      method __init__ (line 794) | def __init__(self, training_stats: TrainingStats, env_step_advanceme...
      method get_steps_in_epoch_advancement (line 798) | def get_steps_in_epoch_advancement(self) -> int:
      method get_collect_stats (line 801) | def get_collect_stats(self) -> None:
      method get_training_stats (line 804) | def get_training_stats(self) -> TrainingStats:
      method is_training_done (line 807) | def is_training_done(self) -> bool:
      method get_env_step_advancement (line 810) | def get_env_step_advancement(self) -> int:
    method _training_step (line 813) | def _training_step(self) -> _TrainingStepResult:
    method _create_epoch_pbar_data_dict (line 828) | def _create_epoch_pbar_data_dict(
  class OnlineTrainer (line 834) | class OnlineTrainer(
    method __init__ (line 845) | def __init__(
    method _reset_collectors (line 856) | def _reset_collectors(self, reset_buffer: bool = False) -> None:
    method reset (line 860) | def reset(self, reset_collectors: bool = True, reset_collector_buffers...
    class _TrainingStepResult (line 877) | class _TrainingStepResult(Trainer._TrainingStepResult):
      method __init__ (line 878) | def __init__(
      method get_steps_in_epoch_advancement (line 888) | def get_steps_in_epoch_advancement(self) -> int:
      method get_collect_stats (line 891) | def get_collect_stats(self) -> CollectStats:
      method get_training_stats (line 894) | def get_training_stats(self) -> TrainingStats | None:
      method is_training_done (line 897) | def is_training_done(self) -> bool:
      method get_env_step_advancement (line 900) | def get_env_step_advancement(self) -> int:
    method _training_step (line 903) | def _training_step(self) -> _TrainingStepResult:
    method _collect_training_data (line 933) | def _collect_training_data(self) -> CollectStats:
    method _test_in_train (line 978) | def _test_in_train(
    method _update_step (line 1010) | def _update_step(
    method _create_epoch_pbar_data_dict (line 1019) | def _create_epoch_pbar_data_dict(
  class OffPolicyTrainer (line 1043) | class OffPolicyTrainer(OnlineTrainer[OffPolicyAlgorithm, OffPolicyTraine...
    method _update_step (line 1051) | def _update_step(
    method _sample_and_update (line 1088) | def _sample_and_update(self, buffer: ReplayBuffer) -> TrainingStats:
  class OnPolicyTrainer (line 1098) | class OnPolicyTrainer(OnlineTrainer[OnPolicyAlgorithm, OnPolicyTrainerPa...
    method _update_step (line 1106) | def _update_step(

FILE: tianshou/utils/conversion.py
  function to_optional_float (line 7) | def to_optional_float(x: torch.Tensor) -> float: ...
  function to_optional_float (line 11) | def to_optional_float(x: float) -> float: ...
  function to_optional_float (line 15) | def to_optional_float(x: None) -> None: ...
  function to_optional_float (line 18) | def to_optional_float(x: torch.Tensor | float | None) -> float | None:

FILE: tianshou/utils/determinism.py
  function format_log_message (line 18) | def format_log_message(
  class TraceLogger (line 57) | class TraceLogger:
    method log (line 79) | def log(cls, logger: logging.Logger, message_generator: Callable[[], s...
  class TraceLog (line 112) | class TraceLog:
    method save_log (line 115) | def save_log(self, path: str) -> None:
    method print_log (line 120) | def print_log(self) -> None:
    method get_full_log (line 124) | def get_full_log(self) -> str:
    method reduce_log_to_messages (line 127) | def reduce_log_to_messages(self) -> "TraceLog":
    method filter_messages (line 140) | def filter_messages(
  class TraceLoggerContext (line 188) | class TraceLoggerContext:
    method __init__ (line 195) | def __init__(
    method __enter__ (line 209) | def __enter__(self) -> Self:
    method __exit__ (line 219) | def __exit__(self, exc_type, exc_val, exc_tb):  # type: ignore
    method get_log (line 224) | def get_log(self) -> TraceLog:
  function torch_param_hash (line 233) | def torch_param_hash(module: torch.nn.Module) -> str:
  class TraceDeterminismTest (line 250) | class TraceDeterminismTest:
    method __init__ (line 251) | def __init__(
    class Result (line 272) | class Result:
    method check (line 276) | def check(

FILE: tianshou/utils/lagged_network.py
  function polyak_parameter_update (line 8) | def polyak_parameter_update(tgt: torch.nn.Module, src: torch.nn.Module, ...
  class EvalModeModuleWrapper (line 21) | class EvalModeModuleWrapper(torch.nn.Module):
    method __init__ (line 32) | def __init__(self, m: torch.nn.Module):
    method forward (line 37) | def forward(self, *args, **kwargs):  # type: ignore
    method train (line 41) | def train(self, mode: bool = True) -> Self:
  class LaggedNetworkPair (line 48) | class LaggedNetworkPair:
  class LaggedNetworkCollection (line 53) | class LaggedNetworkCollection:
    method __init__ (line 54) | def __init__(self) -> None:
    method add_lagged_network (line 57) | def add_lagged_network(self, source: torch.nn.Module) -> EvalModeModul...
    method polyak_parameter_update (line 71) | def polyak_parameter_update(self, tau: float) -> None:
    method full_parameter_update (line 81) | def full_parameter_update(self) -> None:

FILE: tianshou/utils/logger/logger_base.py
  class DataScope (line 16) | class DataScope(StrEnum):
  class BaseLogger (line 23) | class BaseLogger(ABC):
    method __init__ (line 34) | def __init__(
    method write (line 56) | def write(self, step_type: str, step: int, data: dict[str, VALID_LOG_V...
    method prepare_dict_for_logging (line 65) | def prepare_dict_for_logging(self, log_data: dict) -> dict[str, VALID_...
    method finalize (line 75) | def finalize(self) -> None:
    method log_training_data (line 78) | def log_training_data(self, log_data: dict, step: int) -> None:
    method log_test_data (line 90) | def log_test_data(self, log_data: dict, step: int) -> None:
    method log_update_data (line 102) | def log_update_data(self, log_data: dict, step: int) -> None:
    method log_info_data (line 114) | def log_info_data(self, log_data: dict, step: int) -> None:
    method save_data (line 128) | def save_data(
    method restore_data (line 145) | def restore_data(self) -> tuple[int, int, int]:
    method restore_logged_data (line 156) | def restore_logged_data(
  class LazyLogger (line 165) | class LazyLogger(BaseLogger):
    method __init__ (line 168) | def __init__(self) -> None:
    method prepare_dict_for_logging (line 171) | def prepare_dict_for_logging(
    method write (line 177) | def write(self, step_type: str, step: int, data: dict[str, VALID_LOG_V...
    method finalize (line 180) | def finalize(self) -> None:
    method save_data (line 183) | def save_data(
    method restore_data (line 192) | def restore_data(self) -> tuple[int, int, int]:
    method restore_logged_data (line 196) | def restore_logged_data(log_path: str) -> dict:

FILE: tianshou/utils/logger/tensorboard.py
  class TensorboardLogger (line 17) | class TensorboardLogger(BaseLogger):
    method __init__ (line 30) | def __init__(
    method prepare_dict_for_logging (line 47) | def prepare_dict_for_logging(
    method write (line 88) | def write(self, step_type: str, step: int, data: dict[str, Any]) -> None:
    method finalize (line 102) | def finalize(self) -> None:
    method save_data (line 105) | def save_data(
    method restore_data (line 127) | def restore_data(self) -> tuple[int, int, int]:
    method restore_logged_data (line 147) | def restore_logged_data(

FILE: tianshou/utils/logger/wandb.py
  class WandbLogger (line 14) | class WandbLogger(BaseLogger):
    method __init__ (line 41) | def __init__(
    method prepare_dict_for_logging (line 95) | def prepare_dict_for_logging(self, log_data: dict) -> dict[str, VALID_...
    method load (line 103) | def load(self, writer: SummaryWriter) -> None:
    method write (line 115) | def write(self, step_type: str, step: int, data: dict[str, VALID_LOG_V...
    method finalize (line 123) | def finalize(self) -> None:
    method save_data (line 129) | def save_data(
    method restore_data (line 167) | def restore_data(self) -> tuple[int, int, int]:
    method restore_logged_data (line 192) | def restore_logged_data(log_path: str) -> TRestoredData:

FILE: tianshou/utils/logging.py
  function set_numerical_fields_to_precision (line 4) | def set_numerical_fields_to_precision(data: dict[str, Any], precision: i...

FILE: tianshou/utils/net/common.py
  function miniblock (line 22) | def miniblock(
  class ModuleWithVectorOutput (line 50) | class ModuleWithVectorOutput(nn.Module):
    method __init__ (line 57) | def __init__(self, output_dim: int) -> None:
    method from_module (line 63) | def from_module(module: nn.Module, output_dim: int) -> "ModuleWithVect...
    method get_output_dim (line 70) | def get_output_dim(self) -> int:
  class ModuleWithVectorOutputAdapter (line 75) | class ModuleWithVectorOutputAdapter(ModuleWithVectorOutput):
    method __init__ (line 78) | def __init__(self, module: nn.Module, output_dim: int) -> None:
    method forward (line 86) | def forward(self, *args: Any, **kwargs: Any) -> Any:
  class MLP (line 90) | class MLP(ModuleWithVectorOutput):
    method __init__ (line 93) | def __init__(
    method forward (line 173) | def forward(self, obs: np.ndarray | torch.Tensor) -> torch.Tensor:
  class ActionReprNet (line 184) | class ActionReprNet(Generic[TRecurrentState], nn.Module, ABC):
    method forward (line 198) | def forward(
  class ActionReprNetWithVectorOutput (line 220) | class ActionReprNetWithVectorOutput(Generic[T], ActionReprNet[T], Module...
    method __init__ (line 225) | def __init__(self, output_dim: int) -> None:
  class Actor (line 229) | class Actor(Generic[T], ActionReprNetWithVectorOutput[T], ABC):
    method get_preprocess_net (line 231) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
  class Net (line 246) | class Net(ActionReprNetWithVectorOutput[Any]):
    method __init__ (line 286) | def __init__(
    method forward (line 343) | def forward(
  class Recurrent (line 372) | class Recurrent(ActionReprNetWithVectorOutput[RecurrentStateBatch]):
    method __init__ (line 375) | def __init__(
    method get_preprocess_net (line 394) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
    method forward (line 397) | def forward(
  class ActorCritic (line 457) | class ActorCritic(nn.Module):
    method __init__ (line 467) | def __init__(self, actor: nn.Module, critic: nn.Module) -> None:
  class DataParallelNet (line 473) | class DataParallelNet(nn.Module):
    method __init__ (line 483) | def __init__(self, net: nn.Module) -> None:
    method forward (line 487) | def forward(
  class ActionReprNetDataParallelWrapper (line 501) | class ActionReprNetDataParallelWrapper(ActionReprNet):
    method __init__ (line 502) | def __init__(self, net: ActionReprNet) -> None:
    method forward (line 506) | def forward(
  class EnsembleLinear (line 518) | class EnsembleLinear(nn.Module):
    method __init__ (line 527) | def __init__(
    method forward (line 546) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class BranchingNet (line 553) | class BranchingNet(ActionReprNet):
    method __init__ (line 574) | def __init__(
    method forward (line 658) | def forward(
  function get_dict_state_decorator (line 677) | def get_dict_state_decorator(
  class AbstractContinuousActorProbabilistic (line 724) | class AbstractContinuousActorProbabilistic(Actor, ABC):
  class AbstractDiscreteActor (line 728) | class AbstractDiscreteActor(Actor, ABC):
  class RandomActor (line 746) | class RandomActor(AbstractContinuousActorProbabilistic, AbstractDiscrete...
    method __init__ (line 754) | def __init__(self, action_space: spaces.Box | spaces.Discrete) -> None:
    method action_space (line 764) | def action_space(self) -> spaces.Box | spaces.Discrete:
    method space_info (line 768) | def space_info(self) -> ActionSpaceInfo:
    method get_preprocess_net (line 771) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
    method get_output_dim (line 774) | def get_output_dim(self) -> int:
    method is_discrete (line 778) | def is_discrete(self) -> bool:
    method forward (line 781) | def forward(
    method compute_action_batch (line 795) | def compute_action_batch(self, obs: TObs) -> torch.Tensor:

FILE: tianshou/utils/net/continuous.py
  class AbstractContinuousActorDeterministic (line 28) | class AbstractContinuousActorDeterministic(Actor, ABC):
  class ContinuousActorDeterministic (line 32) | class ContinuousActorDeterministic(AbstractContinuousActorDeterministic):
    method __init__ (line 45) | def __init__(
    method get_preprocess_net (line 64) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
    method get_output_dim (line 67) | def get_output_dim(self) -> int:
    method forward (line 70) | def forward(
  class AbstractContinuousCritic (line 88) | class AbstractContinuousCritic(ModuleWithVectorOutput, ABC):
    method forward (line 90) | def forward(
  class ContinuousCritic (line 99) | class ContinuousCritic(AbstractContinuousCritic):
    method __init__ (line 115) | def __init__(
    method __setstate__ (line 136) | def __setstate__(self, state: dict) -> None:
    method forward (line 144) | def forward(
  class ContinuousActorProbabilistic (line 172) | class ContinuousActorProbabilistic(AbstractContinuousActorProbabilistic):
    method __init__ (line 187) | def __init__(
    method get_preprocess_net (line 217) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
    method forward (line 220) | def forward(
  class RecurrentActorProb (line 241) | class RecurrentActorProb(nn.Module):
    method __init__ (line 244) | def __init__(
    method forward (line 275) | def forward(
  class RecurrentCritic (line 325) | class RecurrentCritic(nn.Module):
    method __init__ (line 328) | def __init__(
    method forward (line 346) | def forward(
  class Perturbation (line 378) | class Perturbation(nn.Module):
    method __init__ (line 394) | def __init__(
    method forward (line 407) | def forward(self, state: torch.Tensor, action: torch.Tensor) -> torch....
  class VAE (line 415) | class VAE(nn.Module):
    method __init__ (line 435) | def __init__(
    method forward (line 455) | def forward(
    method decode (line 475) | def decode(

FILE: tianshou/utils/net/discrete.py
  function dist_fn_categorical_from_logits (line 22) | def dist_fn_categorical_from_logits(
  class DiscreteActor (line 29) | class DiscreteActor(AbstractDiscreteActor):
    method __init__ (line 37) | def __init__(
    method get_preprocess_net (line 66) | def get_preprocess_net(self) -> ModuleWithVectorOutput:
    method forward (line 69) | def forward(
  class DiscreteCritic (line 94) | class DiscreteCritic(ModuleWithVectorOutput):
    method __init__ (line 105) | def __init__(
    method forward (line 117) | def forward(
  class CosineEmbeddingNetwork (line 126) | class CosineEmbeddingNetwork(nn.Module):
    method __init__ (line 138) | def __init__(self, num_cosines: int, embedding_dim: int) -> None:
    method forward (line 144) | def forward(self, taus: torch.Tensor) -> torch.Tensor:
  class ImplicitQuantileNetwork (line 163) | class ImplicitQuantileNetwork(DiscreteCritic):
    method __init__ (line 183) | def __init__(
    method forward (line 200) | def forward(  # type: ignore
  class FractionProposalNetwork (line 219) | class FractionProposalNetwork(nn.Module):
    method __init__ (line 231) | def __init__(self, num_fractions: int, embedding_dim: int) -> None:
    method forward (line 239) | def forward(
  class FullQuantileFunction (line 255) | class FullQuantileFunction(ImplicitQuantileNetwork):
    method __init__ (line 273) | def __init__(
    method _compute_quantiles (line 288) | def _compute_quantiles(self, obs: torch.Tensor, taus: torch.Tensor) ->...
    method forward (line 293) | def forward(  # type: ignore
  class NoisyLinear (line 317) | class NoisyLinear(nn.Module):
    method __init__ (line 330) | def __init__(self, in_features: int, out_features: int, noisy_std: flo...
    method reset (line 350) | def reset(self) -> None:
    method f (line 357) | def f(self, x: torch.Tensor) -> torch.Tensor:
    method sample (line 362) | def sample(self) -> None:
    method forward (line 366) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class IntrinsicCuriosityModule (line 377) | class IntrinsicCuriosityModule(nn.Module):
    method __init__ (line 387) | def __init__(
    method forward (line 410) | def forward(

FILE: tianshou/utils/print.py
  class DataclassPPrintMixin (line 7) | class DataclassPPrintMixin:
    method pprint_asdict (line 8) | def pprint_asdict(self, exclude_fields: Sequence[str] | None = None, i...
    method pprints_asdict (line 17) | def pprints_asdict(self, exclude_fields: Sequence[str] | None = None, ...

FILE: tianshou/utils/progress_bar.py
  class DummyTqdm (line 9) | class DummyTqdm:
    method __init__ (line 21) | def __init__(self, total: int, **kwargs: Any):
    method set_postfix (line 25) | def set_postfix(self, **kwargs: Any) -> None:
    method update (line 28) | def update(self, n: int = 1) -> None:
    method __enter__ (line 31) | def __enter__(self) -> "DummyTqdm":
    method __exit__ (line 34) | def __exit__(self, *args: Any, **kwargs: Any) -> None:

FILE: tianshou/utils/space_info.py
  class ActionSpaceInfo (line 12) | class ActionSpaceInfo(ToStringMixin):
    method action_dim (line 23) | def action_dim(self) -> int:
    method from_space (line 31) | def from_space(cls, space: spaces.Space) -> Self:
    method _tostring_additional_entries (line 50) | def _tostring_additional_entries(self) -> dict[str, Any]:
  class ObservationSpaceInfo (line 55) | class ObservationSpaceInfo(ToStringMixin):
    method obs_dim (line 62) | def obs_dim(self) -> int:
    method from_space (line 70) | def from_space(cls, space: spaces.Space) -> Self:
    method _tostring_additional_entries (line 85) | def _tostring_additional_entries(self) -> dict[str, Any]:
  class SpaceInfo (line 90) | class SpaceInfo(ToStringMixin):
    method from_env (line 99) | def from_env(cls, env: gym.Env) -> Self:
    method from_spaces (line 104) | def from_spaces(cls, action_space: spaces.Space, observation_space: sp...

FILE: tianshou/utils/statistics.py
  class MovAvg (line 7) | class MovAvg:
    method __init__ (line 26) | def __init__(self, size: int = 100) -> None:
    method add (line 32) | def add(
    method get (line 52) | def get(self) -> float:
    method mean (line 58) | def mean(self) -> float:
    method std (line 62) | def std(self) -> float:
  class RunningMeanStd (line 69) | class RunningMeanStd:
    method __init__ (line 81) | def __init__(
    method norm (line 93) | def norm(self, data_array: float | np.ndarray) -> float | np.ndarray:
    method update (line 99) | def update(self, data_array: np.ndarray) -> None:

FILE: tianshou/utils/torch_utils.py
  function torch_train_mode (line 15) | def torch_train_mode(module: nn.Module, enabled: bool = True) -> Iterato...
  function policy_within_training_step (line 26) | def policy_within_training_step(
  function create_uniform_action_dist (line 48) | def create_uniform_action_dist(action_space: spaces.Box, batch_size: int...
  function create_uniform_action_dist (line 52) | def create_uniform_action_dist(
  function create_uniform_action_dist (line 58) | def create_uniform_action_dist(
  function torch_device (line 80) | def torch_device(module: torch.nn.Module) -> torch.device:

FILE: tianshou/utils/warning.py
  function deprecation (line 6) | def deprecation(msg: str) -> None: